Building a New-to-me computer & want to move to Linux + virtual machine, any experiances?

Yep, that is the price with a lot of Linux apps, if they look good they generally do not work good. If they work good they generally don’t look good lol.

My number one biggest complaint with Linux is the iron grip it has with the terminal. I grew up using dos and could enter terminal commands with the best of them but boy when you are entering a new system and do not speak the language it is a royal pain since everything has to be just right. I wish they would make it so that you can do everything with the GUI and only use the terminal if you want to like Windows. It would make the learning curve way easier.

I am seriously considering that PC above, I figure worst case I could give it to my grandmother or find another use for it if it didn’t work for media streaming.

Your personal files go in /home/texasace, and can be organized however you want. Compared to what Windows uses, Linux’s file systems have fewer restrictions and more capabilities, though you don’t have to use any of the extra stuff.

Outside of /home/texasace, you probably won’t have to care what goes where, but if you want to understand things better there is a well-documented filesystem hierarchy standard explaining what everything is. Here are some of the basics:

  • /home: Everything which belongs to users. Probably the only area you have to care about.
  • /tmp: Handy scratch area for temporary files. Gets erased each time the system reboots, or periodically, depending on how things are configured.
  • Stuff necessary for booting and basic system function:
    • /etc: Config files. Similar to the Windows registry, I suppose, but doesn’t need any special tools to access.
    • /boot: Generally just the bootloader config, kernel, and a compressed image of drivers needed to boot the rest of the system.
    • /bin: The most important utilities (binaries, executables) needed for basic system functions. Anything named “bin” contains binaries or executables, and form the command line’s primary vocabulary.
    • /sbin: Core system binaries, necessary for system tasks but not normally used by users.
    • /lib, /lib64: Core libraries. Non-core ones go in /usr/lib.
  • Applications and non-core stuff:
    • /usr: Where applications go, mostly. Programs which aren’t necessary for basic system operations, but are still useful for other purposes.
    • /var: Writable area for program data which doesn’t belong to any specific user. Like, system logs, database contents, package metadata, and so on.
    • /opt: A place for third-party stuff which doesn’t follow the usual filesystem conventions.
  • Hardware and kernel access:
    • /media or /mnt: Holds default mount points for removable media and other extra drives. USB drives and DVDs and stuff generally go here.
    • /dev: Raw access to hardware devices. Everything in Linux is a file, including your drives, peripherals, sound card, and so on. If you need to partition a disk, this is where to find the disk.
    • /proc: Realtime info about kernel internals, system status, and running processes. Take a peek at meminfo and cpuinfo, for example.
    • /sys: Realtime info about kernel internals and system status, V2.

If you have multiple hard drives, instead of giving them letters, they have mount points. They can be mounted wherever you like. For example, if you have a lot of games from third parties, you could mount a hard drive on /opt so you have an entire drive dedicated to that sort of thing. Or if you have a lot of videos, you could mount a drive at /home/texasace/videos. Or you could copy the Windows drive-letter method and simply mount extra drives at /d, /e, /f, and so on. Or under your home directory, at /home/texasace/d, /home/texasace/e, /home/texasace/f.

One handy tool for keeping things organized is symlinks. These are what shortcuts in Windows were trying to be. Basically, it lets things appear at two or more different parts of your file hierarchy. So you could have drives named /d, /e, and /f, and organize your personal files into games/, videos/, flashlights/, or whatever, and shuffle around the physical location independent of the logical organization. So maybe videos/ is stored on /e/videos, but you access it from /home/texasace/videos. And then /e runs out of space so you move it to /f, but the entry in your home directory can remain. Just point it at the new location.

Another way to use symlinks is to add multiple views of your data. For example, I have music/by_artist/ and music/by_genre/. Both contain the same songs, but they are organized differently. And there is physically only one copy of the song data. I use by_artist as the primary organization method, and by_genre contains symlinks to specific artists, albums, and songs which fit various genres. This doesn’t need to be a one-to-one mapping.

Kind of a tangent, but if you like to keep things organized, symlinks will probably be useful.

That’s a big cultural difference which isn’t likely to go away. In Windows, pretty much everything can be done with a GUI but only some of that is available at a command line. In Linux OSes, pretty much everything can be done from a command line but only some of that is available through a GUI.

For the most part though, everything regular people use computers for can be done without ever typing into a terminal.

I use terminals for almost everything, but I’m weird. GUIs are usually easier to learn but less powerful, and I prefer the latter. GUIs also tend to require periodic relearning, since they change every few years as interface fads come and go, but command line stuff tends to last for decades. For things I only do once, or things which are visual in nature, I prefer a GUI. But for repeated tasks, in the long run, a CLI tends to be less work. I usually follow a rule of three… the third time I have to do a task, I write a script to automate it. Then I never have to do it again. And that’s something which isn’t usually possible in a GUI.

Not what you asked, but I built my 64 bit Linux Mint pc years ago when I got a new motherboard from gigabyte for $19.00. This is my main machine I am using now for just about everything. Total cost with SSD, 8GB ram and a G3258 was $170 usd. Because of that, I built another cheap windows machine. I like keeping them simple and separate instead of using a VM and they are both lightning fast.

Thanks for that, I never saw a nice breakdown of the file system like that before. It makes a lot more sense like that. /Dev is what I have been looking for it sounds like, I am just much more used to seeing the whole drive in it’s raw state. Plus most of the time I have been trying to work with windows drives and it has confused the heck out of me to not just see the drives like I did in windows.

Symlinks are also useful, I use them in windows a fair amount although only when trying to make something happen that normally should not. I am old school, I like to know exactly where my files are, what drive ect. I don’t even use RAID much for this reason.

Yes, the command line has it’s place and I understand it better then most having grown up with it. Although I think growing up with it is part of why I like GUI so much now, it gets really old always having to type in commands, getting 1 letter wrong and then having to start over.

Plus like you said, for things you do not do very often the GUI is much simpler since you can just click the button and don’t have to memorize the command.

For me it is more a question when will someone add the missing GUI commands to the GUI. Sooner or later it will happen if lunix is to ever move into the home computer market in any big way. I am a massive fan of Linux ecosystem, privacy, stability and security.

Yeah, I have done multiple systems for many years. There were times I have 5 separate computers running at my desk.

Now days I only need to use the other system when doing a few specific tasks and it makes more sense to use the extra horsepower of a single system on all of these. Worst case I will stick with windows and run linux in a VM like I am now.

Yeah, I think dual booting in some form (either two OS on the same computer or two computers) will be the best choice for TA for now.

I found dual booting to be even more of a hassle then multiple systems personally. Worst case I will simply use a windows host with Linux virtual machine like I am now, I just prefer the stability and security of Linux for the host.

I should probably clarify what “raw” means. It gives access to the contents of the disk as a stream of bytes. Not files or directories or anything like that, just bytes. To view the actual filesystem contents, this stream needs to be mounted somewhere.

So, /dev/sda (SCSI Disk A) is the first hard drive, totally raw. /dev/sda1 is the first partition on that drive, also raw. To access its contents, it’s typically mounted on “/”, the root of the filesystem namespace. This is basically the equivalent to drive C:\ in Windows.

Then the drive letters go up from there… /dev/sdb, /dev/sdc, /dev/sdd, etc. If any partitions exist, they’ll be indicated by a number after the letters.

To see what is currently mounted, run “mount”. Or click on whatever GUI option is equivalent to the “My Computer” icon. Many GUIs put mounted disks on the desktop by default. (As a caveat, “mount” shows all sorts of stuff including internal bookkeeping filesystems, so to see only actual disks, one can do “mount | grep /sd” or “mount | grep ^/dev”.)

Two things:

  • Up arrow. Previous commands can be recalled and edited by pressing Up.
  • Tab completion. Most things can be auto-completed by pressing tab. It also will often display a list of complete-able items by pressing tab by itself. Or after displaying a list, keep pressing tab to make the shell auto-complete the items one at a time in order, if you don’t feel like typing any more letters.

Let’s say I wanted to play some music. Here’s what I could type:

  1. Fn-Home
  2. cd mu<tab><tab>a<tab>
  3. <tab>
  4. In<tab><enter>
  5. mp -shuffle /*

Here’s what each step does, and what I see onscreen:

  1. A terminal opens.
  2. Expands to:
    • cd mu
    • cd music/
    • cd music/by_
    • cd music/by_artist/
  3. Press tab one more time to display a list of artists.
  4. Expands and then changes directory:
    • cd music/by_artist/Infected_Mushroom/
  5. Tells my favorite music player to play all files below the current directory in random order. The actual program changes over time, but I can always access it, whatever it is, by running “mp”. It’s a shell alias.

Then let’s say I stop that and decide I want to play an album called “The Voyage”, but I don’t recall the name of the artist who made it.

  1. q
  2. …/*/*Voy*<enter>
  3. <up><up><enter>

What this does is:

  1. [Q]uit the music player.
  2. Search for the album and go to its directory. I could optionally press tab before enter, to make the shell expand it to its full name, “…/Haywyre/2012.The_Voyage”. Also, normally there would be a “cd ” at the beginning of this line, but since changing directory is such a common operation, some shells allow the user to omit the “cd ” part entirely.
  3. Recall the “mp -shuffle /*” command and run it again.

However, since this particular album is meant to be played in sequential order, I’d probably just run “mp *” to play everything in order. But if I wanted to recall the shuffle command later, I could do it without having to scroll through all previous commands, by hitting Ctrl-r then “shuf” to search command history for “shuf”.

I hope this gives a relatable example of how a modern CLI works for a common task, and how little actual typing is required.

I am well aquatinted with the up arrow, I used that like some people use backspace lol.

Although tabbing is new to me, I think I heard about it once but totally forgot about it. I have kind of blocked my command line days out, in the early days the up arrow did not even work that I remember, or I did not know about it. Spelling has never been my strong suite so I got (and get) really annoyed with the syntax and spelling /typing out of commands.

Mostly though it is a matter of if you don’t use it you will loose it. I used to fly through commands but have forgotten most of the more advanced ones by now.

I will never argue that the terminal doesn’t have a place, just that it should not be a requirement for anything past the very basic uses of a computer. Learning the commands has a large learning curve that many would not make it though.

I don’t see me moving past windows 7 myself and the support for windows 7 is coming to a close rather quickly. So I have to make linux work at some point.