I just installed Linux, now what?

Okay, just installed Elementary OS, installing Firefox, what do I do now?

How do I install software that isn't bundled up in a nice little .deb file? What's up with all these .conf files? What is the significance of directories like /etc or /var or /dev?

Basically, how do I LInux?

Never install software with .deb files. SO for instance, if you have installed firefox from the mozilla site using a .deb file downloaded from Mozilla, start all over again, because that was the wrong way to do it, that was the unsafe Windows way.

In order to install software in linux, you use an application called a "package manager", aka a "software center". This connects to the official repositories of the distribution you're using, and has all the software you'd want, including firefox, firefox ESR, chromium, etc...

I don't know what it's called in elementary (not a big fan of elementary, I think is bloated chaos and not representative of the linux experience at all), but it might be synapse, the debian package manager, or a port of the Ubuntu software center, since elementary is based on Ubuntu.

In a package manager, you can search for software by categories, or by name. There are two kinds of packages, normal packages and meta-packages. Normal packages install only the software in the package, and prompt the user for potential dependencies (programs you also need to make that program work). Meta-packages contain a complete suite of packages, for instance, a complete different desktop environment with the typical applications written for that, etc...

You don't really need to worry about .conf files, or command line stuff. Everything can easily be done through a GUI.

If you want more ease-of-use and functionality and performance and stability and features, try out another distro, like OpenSuSE KDE for instance, or Manjaro XFCE. Those have much better documentation online to get your started with the fun stuff in linux.

Now this is not really needed to get started with linux, but you've asked for it, so:

/etc/..., /dev, /home, and other directories, are what's called the directory tree. This is almost the same for every linux distro. In linux, everything is a file. The processor is a file, the graphics card is a file, a storage device is a file, etc... that means that you can always access everything on your system easily, and can regulate the permissions for access to that device easily. If also means that you can easily verify your system. For instance, since every USB device is a file, you can list the USB devices easily by executing the command "lsusb", the same for all PCI devices with "lspci", the same for the CPU with "lscpu". "ls" is just the bash command that means "list". If you enter just "ls" when you're in a particular directory, it will list the files and subdirectories in that directory.

For a list of CLI commands, ddg.gg "!g bash", and you'll find lists of commands. "Bash" is the command line language used by most linux distros as default, except by Arch Linux. You can change to any command line language of your choice, there are several out there, available through the package manager, but bash is the most common, and all the documentation on the internet assumes that you're using bash, except for Arch linux, but that uses an extended version of bash where all bash commands just work as expected, so in practice there is no difference.

Between distros, there are different package managers to install software, and different tools to do system setup. For all debian-based distros (which includes Ubuntu-based distros), the package manager backend is called aptitude. You can control the package manager directly on the CLI with the "apt-get" command. There are several GUI front ends for the debian package manager, the best of which is Synaptic. Even if Elementary provides a different GUI frontend package manager by default, it's always possible to install Synaptic and use that, to get the full experience of the iconic Debian package manager. To install Synaptic if it's not installed already, just look for "synaptic" in the software center, or execute "su -c 'apt-get install synaptic'" in the command line.

The command line is different in linux than in commercial software consoles. Whereas the command line in commercial software consoles is the only way to get at the "advanced" functions, in linux, most advanced functions are integrated is some kind of GUI frontend application, making the command line superfluous for 90+% of linux users.... BUT, 90+% of linux users prefer using the command line because of it's speed. Most linux users move away from clickfest-type desktop environments and chaotic GUIs like commercial software consoles, and prefer the precision and speed of the command line. Even linux users that use a graphical desktop environment (which most linux users do, but it's still optional, some linux users don't, or use a very basic window manager instead, which is a viable alternative to be honest, and it greatly increases speed), mostly use a quick-access terminal window to control their systems, like guake or yakuake. It takes some time to get used to that way of working, but by just using linux and experiencing the speed and enhanced capabilities, you'll grow into it, and you'll probably be using the command line yourself to save time.

Just use it, do the things you did before on your commercial software console, and learn as you go. Before you know it, you'll be trying out different distros and you'll find the one you like best, and then customize the crap out of it. No two linux users have the same install. It's completely different than commercial software consoles, because in linux, the choice and control is with the user, not with the vendor.

There is a lot of info on linux on the forum, there are plenty of threads in the linux subforum that could provide you with a lot of info to get started. Search through that for a while, and most of your questions for the first couple of weeks of linux use will probably be answered already.

Thank you, that's really helpful. I'm curious about some of the directories towards the root of the directory tree (I think that's the right vocabulary, but probably not).

I imagine /dev is for these "hardware files". /bin is likely binaries. /sys I assume is system, /home is all of my junk. /cdrom is probably where my optical drive is mounted by default. That's all I can figure out, if it isn't too much trouble would you mind clarifying the rest? I mean, a quick Google search could probably provide the info, but I prefer just asking someone in case I have further questions.

I agree with Zoltan, never use packages from the net, always repo them, they stay updated via repos and avoids security threats, avoid Adobe also, its awful.

I normally setup a minimal system (I use different distro) I mean bare system, just a terminal and file manager with GUI of course, then add repos for stuff like Google Chrome (I use this because of Flash for youtube) also try avoid java.

I normally get virt-manager installed afterwards so I can do virtualisation (or least attempt lol).

Thats it really, I use FOSS drivers for my GPU and CPU, and it runs beautifully :)

I am new to Linux. In elementary OS the software manager is called "software center". It's the blue icon with the arrow pointing downwards if you have missed it. Use that to install Firefox if Midori isn't your cup of tea. I'd recommend installing LibreOffice as well. It's an office suite (documents, spreadsheets & presentations).

You can use the Update Manger to keep your programmes current. You have probably already run it during installation.

There are a lot of helpful Linux people on here. Check out some of the posts/threads on the Linux section.

Learning some of the basic terminal commands and what they do will help you understand how Linux differs from Windows and will keep things familiar to you as you try different Linux distributions in the future.

Java and Flash are a pain regardless of OS, it seems.

I'm interested about the part about drivers. Can you explain this a little more to me? My brain is still stuck in Windows-land where you download your drivers from the vendor's website and that's all you can really do.

 

The best thing you can do with Elementary OS is remove it and install Manjaro

Already worked with the Software Center and update manager, software center to me is only useful for the search function. Software installation is one thing I've found terminal to be better for so far. Already got Firefox, used Midori while I was waiting for that and it really sucks.

I use Google Drive for office functionality, I lose files too easily otherwise. I used LibreOffice on Windows for a while, it was pretty neat.

thx bro

Like Zoltan said get synaptic for your package manager and browse for your drivers there. Synaptic will have a larger list of packages.

On other software, I don't know what you plan on using Linux for. There are some cheat sheets for the command line. Also get familiar where everything is located like your configuration files. 

yup, /dev is "devices", which is everything hardware

/sys is the core linux system

/home is "userspace"

/ is "root"

/bin is binaries, mostly applications that run native, you'll notice that there are also /bin subdirectories in other places, particularly in some hidden subdirectories of /home (hidden subdirectories start with "."). The applications that are not entirely safe to use, like web browsers or games or the steam client or programs that use closed source code, are installed in userspace, in a hidden subdirectory in /home, so that they can't "elevate perks" to access the system and jeopardise security. This is very unlike commercial software consoles, and is the primary security system used by *nix systems. It's an access system based on file access. There are other security systems, but in elementary, those are not installed by default. There is plenty of info on those security systems in previous threads on the forum. There is also the /usr directory that contains added applications that can be granted elevated perks for instance.

Now the way the directory tree is built, varies a bit across distros. This may lead to some confusion. An example: in one distro, an external storage device like a USB stick, would be found in /dev of course, and when mounted in /mnt and under /media, whereas in another distro, this would be found in /dev of course, but then not in /media, but rather in /run/media.

When you develop things on a linux machine, you'll find that a lot of the things that the system uses, are in the /var directory. For instance, if you set up a linux box as a httpd server, you'll put the served content in the appropriate subdirectory of /var. Your content is always kept together for easy of use, not only to get at it easily or find it easily, but also to backup it rapidly without much storage overhead, to make it portable, etc...

And that brings us to a very important benefit of the linux tree, the "portability". There is no registry in linux, there is no DRM. That means that any application that you install, works like it used to work in MS-DOS and pre-NT MS-Windows, as an executable file in it's own directory. You can install a Steam game or the Steam client, they will install in the .Steam subdirectory in /home, in userspace, without system access, and you can copy those files or make a backup, or for instance "rsync" that folder to an external backup solution like a NAS or external USB storage. Restoring it, even in a different linux distro, is literally as easy as copying it back in place, and it will work. You don't have to reregister or hack config files or whatever, by nature, every userspace application in linux is "portable". You can still use the backup function in the Steam Client to backup games, but it's much faster and easier to snapshot the .Steam subdirectory in /home.

Because everything that is user-specific is stored in /home, there is another advantage to the directory tree. Usually, /home would be a separate partition from / and /swap. If that is the case, you can switch linux distros by installing a new distro in /, without reformatting /home (that is an option in every linux install). Then a new distro will install, without destroying the user specific data and applications in /home, and everything will just work (providing of course the necessary dependencies for those applications are present on the system, for instance, since the Steam client is only 32-bit, you need the 32-bit graphics libraries on your system or it won't work... I know, it's retarded, but it's the way it is, most games are still 32-bit only, hence Steam doesn't do 64-bit, so on the standard 64-bit linux installs, you need to install the 32-bit libraries extra, so that 32-bit applications like Steam may still work.

If you want to know more about how the directory tree works and what the difference is between the executable extension-less files you'll find in for instance the /bin directory, and the .so ("source") files you'll find in the /lib directory, grab a basic linux manual and read into it. There are plenty of good online documentations on this, and probably a good way to start is the free to download level 1 documentation of the LPI. The exact links to that documentation can also be found in old threads on this forum. This is very easy to read and understand, no heavy technical stuff at all, and doesn't take much time, but it will give you a clear understanding of the basics of a linux system.

Something that is important for safe and convenient use of any linux system, is to understand the permissions system, not only the individual file perks, but also the groups. This is easy to understand, it's much easier to manage the all-encompassing linux permission system than to manage for instance the very limited and nowhere-near-all-encompassing MS-Windows Server permission system. Here on the forum for instance, we'll talk about things like "set the permissions of the file to 555 or 667", which refers to the chmod command, but can also be found in the GUI file manager under properties of files. It would be beneficial to know those permission levels and what they do. It's very clear and consequent, and can be set individually for each "group", whereby any user can be assigned to a collection of those "groups", to easily regulate the permissions of every user.

Some files are important to understand. The main one being /etc/fstab, which contains the filesystem overview when the system boots up. This file determines which partitions are mounted at boot and with what parameters they are mounted. This is one file that might require manual editing in linux, if you use ssd's in your system, or want extra hdd's mounted at boot. Some distros also have GUI options for all of this (OpenSuSE, Manjaro), but most distros don't, in which case you have to edit this file manually to make sure the ssd is working correctly. This has also been explained on the forum before in an old thread. The system will work anyway, even without editing the file, but it's better to enable parameters like "discard" (=socalled "trim") and "noatime" (=no access time) on ssd's for optimum performance and longevity.

Linux is much more powerful and modern than commercial software consoles, if you haven't used anything but software consoles, and you don't remember MS-DOS, then you have a bit of catching up to do. It's like learning to drive a car again after having only used taxis. It's not hard to learn though, and you don't have to be a linux sysadmin to use linux, just like you don't have to be a professional licensed race car driver to drive a car. It's like driving a car, start slowly, and before you know it, you'll enjoy all the freedom that comes with the newly acquired skills.

There are two kinds of drivers: 1. "open source" or KMS-drivers (stands for "kernel mode setting", whereby "mode setting" refers to the capability to configure the displays), and 2. "proprietary" drivers, which require proprietary kernel modules, commonly called "binary blobs".

For all graphics hardware, there are KMS-drivers, that are installed by default in most linux distros and are available in all distro repositories.

Intel only has open source drivers, they don't do proprietary drivers on linux. There are open source drivers for AMD and nVidia, the ones for AMD are developed by a specialized developer paid by AMD to develop those open source drivers, the ones by nVidia are developed by volunteers that have done a campaign on Kickstarter to fund the reverse engineering of nVidia graphics cards to make open source drivers from scratch, and to pay lawyers to fend off the nVidia legal trolls while doing that. The open source AMD drivers usually provide about 80% of the performance and functionality of the proprietary Catalyst drivers, and are getting better almost on a weekly basis, and AMD has confirmed that they will develop open source kernel modules that actually work with the Catalyst driver, so that binary blobs can be avoided, but at the same time, the performance benefit of the proprietary drivers can be had (some functions cannot be integrated in the open source drivers because patents are held by third parties, like for instance technologies that accelerate video encoding and decoding for certain formats, etc...). nVidia on the contrary is opposed to any form of open source or linux development, and therefore, the open source nVidia drivers only perform at about 10-15 % of the proprietary drivers, and offer very poor performance in linux, but are still preferred by many nVidia users because the open source drivers work and won't crash the kernel, unlike the proprietary nVidia drivers, which will crash X with every kernel update.

The AMD and nVidia proprietary drivers are none other than the MS-Windows drivers, hastily ported to linux. These proprietary drivers contain proprietary code that enables the high performance functions of those graphics cards, for which the code is not shared with the open source community.

A linux kernel is basically made by compiling a "queue" of modules. You can select the "features" the kernel should have, and then compile it. Most distros install a precompiled kernel that contains all the modules required for that distro. Most distros only provide open source software by default. That means, that the kernel they provide is not prepared to work with proprietary drivers by nVidia or AMD.

When you install a proprietary driver from the "non-free" repos of your distro, you compile the corresponding proprietary kernel modules in your kernel (the so-called "binary blobs"), and you prevent the kernel from "modesetting". If you're using a MAC or RBAC, the use of binary blobs also forces you to make a general exception that pretty much nullifies the entire benefit of the MAC or RBAC. So for secure systems, using proprietary drivers is just not an option, which means that nVidia GPU's are not an option, because they don't perform well with the "nouveau" driver, which is the open source nVidia driver.

If you're going to game on linux with the Steam Client, you generally have to use either AMD cards up to the RHD7k generation with the open source drivers, or you have to use proprietary drivers with AMD or nVidia cards. If you're not using a dedicated gaming system, the best solution is therefore to virtualise the gaming system entirely, using a PCI passthrough and a dedicated GPU for that container, so that you don't get any of the security and privacy threats of the non-open source software on your main system. SteamOS is a good solution for linux gamers, because it is entirely self-sufficient, has it's own repos with always-working proprietary drivers, and barely ever has software updates because it's based upon Debian Stable, which is really old, and based on the same ages old kernel Debian Stable uses (3.2 I believe, whereas normal linux distros are now at 3.16, a full two years of development further down the line, with many more features and performance, especially on modern hardware). Therefore it's easy to keep a kvm container with SteamOS on a more modern linux machine, keep everything nice and secure and high performance, and be able to easily snapshot the Steam container for easy backup and portability. A snapshot of a virtual container is called an "appliance", and is portable, that means that it can be transposed from system to system, can be backed up, and saves a lot of storage space in the process.

Because of the need for suitable binary blobs specific to the kernel provided by any particular distro, it's usually beneficial to install proprietary drivers (if you chose to install those) from the non-free repositories of your distro, because they will adapt the kernel modules to the specific kernel of that distro. Generally, you can use the AMD installer (as in from the AMD website), and it will usually work without problems, but it's always better to only install from your distro's repositories. Using the nVidia installer (as in, from the nvidia website) for linux will lead to pain and misery, you have to use the nVidia packages from your distro and just hope that it works (usually it takes two days to make the nVidia drivers not crash X after a kernel upgrade, which happens every 7-14 days, so if you use nVidia proprietary drivers, be ready for 10-20% downtime on a modern system, again, it's better to use something like SteamOS in a kvm container with PCI passthrough, because it's based on Debian Stable thus so old that it almost never updates and just works, although not with the best performance).

As to java and flash. Java is not as much of a pain on linux as it is on commercial software consoles, and a lot depends on the IDE that is used to develop java with. Netbeans or Eclipse work just fine, and there are a lot of alternative, which work just fine also. That doesn't lessen the fact that Java is pretty chaotic in se. Adobe flash is not required in linux at all. It's a security risk, it's not being updated by Adobe (it only gets security updates, but then again, security by Adobe is like security by Microsoft, sometimes they mean exactly the opposite, because they're not concerned with the security of the user, only of their wallets), and it just doesn't work like it should. There is a special version of flash for the chromium browser, which needs to be installed separately, and the package is called "chromium-pepper" in most distros. That is a way to ensure pretty decent flash functionality where absolutely needed, but it's still not convincing. For video content that requires flash for playback, there are applications like youtube-dl, which downloads most flash video offerings from most flash-only websites, and from youtube. It automatically sets the best quality, discards the ads, downloads at the best download rate, discards age or identity verification, and also offers audio/video ripping and transcoding options, for instance to rip mp3's off of youtube videos. Whilst YouTube offers non-monetised videos through html5, so you can just watch them through your browser, monetised videos cannot be watched without flash, so have to be watched through youtube-dl. There used to be an application called minitube, which would offer the perfect youtube watching experience, but Google made sure that that applications wouldn't work. Youtube-dl is very well maintained though, has almost weekly updates, and anything Google throws at it to block it, is immediately solved.

Linux by default knows no DRM, so don't go and install flash, because it will reintroduce DRM on your system. Same goes for DRM software like the Steam client, which is also not the be trusted, and should not be permitted to run on your host system.

If you want to remove Midori, you will need to open a terminal and enter "sudo apt-get purge midori*". 

Here are a few other commands to help you customize your system. 

sudo apt-add-repository ppa:versable/elementary-update
sudo apt-get update
sudo apt-get install elementary-tweaks
sudo apt-add-repository ppa:numix/ppa
sudo apt-get update
sudo apt-get install  numix-icon-theme-circle

Paste those in the terminal in that order. 

If you want a newer kernel enter these commands. 

sudo apt-get install linux-generic-lts-trusty linux-image-generic-lts-trusty

 

Hmm, so I could, for example, mount a network drive as /home and use it on multiple Linux systems? Or would the permissions system complicate that too much?

And back when I had a jailbroken iPhone, I remember any time I installed something from a repo it would automatically install all of the dependencies. I imagine Linux is the same, since it's probably a Unix thing. Now that I think about it, the directory tree was essentially the same. I might adapt to Linux a bit more quickly than I first thought.

Planning on getting an SSD soon, so the fstab thing I will have to remember, thanks!

Care to link any basic documentation that you would recommend? You seem to know your stuff, I'd trust whatever you recommend more than anything I would find myself.

Again thanks for all the info, this is making my expectations of Linux much more comfortable.

I'll probably keep Midori on the system, just in case something happens and I can't install other web browsers. Highly unlikely, but Midori isn't hurting anything just sitting there.

Tried Elementary Tweaks, but apparently the newest beta version of Elementary (Freya) doesn't play completely nice with it. Google told me it can be fixed, but I'd rather avoid that for now.

I've got a Radeon HD 7770, so the open-source drivers should be fine then.

Hmm, a virtualised Windows system with PCI passthrough seems like something that would be worth my time to set up. I'm still pretty reliant on Windows-only software like Adobe Creative Suite and FL Studio. How do you recommend going about this? I'm still new to Linux software. Only problem that I see is I will need a second GPU to keep for Linux, but I have a Radeon HD 6450 laying around somewhere, which will more than meet my needs if I do my gaming on the virtual machine.

I don't have a specific "use" for operating systems, I tend to do a bit of everything from design stuff to video editing to messing around with servers. Although I may be setting up a virtualised Windows machine with PCI passthrough for gaming and creative stuff, leaving Linux for normal stuff like web browsing and screwing around with server stuff.

Are you running Freya or Luna?

maybe this will help =D 

https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&es_th=1&ie=UTF-8#q=elementary%20os%20first%20steps

 

Freya