[ Date Index ] [ Thread Index ] [ <= Previous by date / thread ] [ Next by date / thread => ]
Ladies and Gentlemen: Let me present my hacked together guide on how to get Arch Linux running with relative quickness, ease and most importantly, laziness. Extra typing is stupid when we can just copy/paste stuff instead, directly into our SSH terminals. God knows this isn't an official guide, and you'd be insane to treat it as such: however, for those who are relatively inexperienced, find Arch daunting and it's many wikis somewhat... labyrinthine, I do promise that this will be far more to the point. If you can follow instructions properly, and are planning a test install to specifically a VirtualBox VM, you *will* have a functional Arch install complete with VBox integration, a graphical logon, GUI and Desktop Environment ready to explore and configure properly at your leisure in short order. However, there is no proper substitute for actually RTFM: all that follows is described far more comprehensively, accurately and with much better formatting at these (official) links: they have been my sole source for this howto. https://wiki.archlinux.org/index.php/Installation_Guide https://wiki.archlinux.org/index.php/Beginners%27_Guide https://wiki.archlinux.org/index.php/VirtualBox https://wiki.archlinux.org/index.php/yaourt You are *highly* encouraged to make use of them if you run into problems, want to modify the instructions here slightly and need parameters or for further reading of any kind. Arch's documentation is absolutely first class, luckily, and a great resource for Linux generally, let alone Arch-specific stuff. You can also ask on the list generally or ask me directly of course. For this operation we will be using the Arch 2013.12.01 iso for installation - get the full 522Mb version from here before you do anything: https://www.archlinux.org/download/ Or run: wget http://www.mirrorservice.org/sites/ftp.archlinux.org/iso/2013.12.01/archlinux-2013.12.01-dual.iso Firstly, a word about my setup: this isn't as important as the configuration (below) of the VM you'll be practising on but probably has some bearing, so for completeness: Intel i5 2500k CPU w/16Gb RAM, Ubuntu 13.04 64bit, kernel 3.12.1-pf-meowski (custom). I use the 'proper' VirtualBox package direct from Oracle complete with the Extensions package, and so should you. My target for this install is a fresh instance, which I have called "archivist", of a VirtualBox 4.3.4 VM with the following configuration: 2 CPU cores, 2048Mb RAM, 25Gb dynamically allocated VHD hard drive (VHD because it's compatible with VMWare, Hyper-V, etc in case I want to move it later) and 64Mb video memory with 3D acceleration enabled. All other options I have left at the defaults with the following important exceptions: I have configured my VM as a 64bit Arch Linux system (32bit would be fine though), disabled the floppy (useless) and have set it's single network interface to *bridged*, not NAT - I want my VM to get assigned a DHCP address on the same subnet as my workstation without fiddling with virtual network devices. Change any of these settings only if you know what you are doing, or obviously if you're installing on to real hardware you'll have to use whatever you've physically got. Just to make things more interesting, I have made one other critical change: in VirtualBox's settings tabs for this VM I have enabled EFI. That's right, I have purposefully made things more difficult for myself but we're here to learn right? You might want to change this individual setting, but be warned that it will effect things like the partitioning layout and boot loader, so you will by necessity have to deviate from my instructions as I can't cover every possible alternative. I'd recommend enabling EFI - before long, it's going to be ubiquitous and for most of you this will be the first time you've ever installed Linux to an EFI/secureboot system without first disabling it and falling back to BIOS mode anyway, which is silly. The multiboot Arch installer we'll be using supports 32/64bit and EFI loading so either way we're good. So, let's get on with this! ==================================================================== 0: HAVE BACKUPS. Not really relevant here, but make sure you're not about to scribble over real data, overwrite a VM or something else stupid. As we're going straight onto a blank VM or perhaps a spare blank PC, this step for once should be fine, but double check. 1: Get your target booted, VM or otherwise, from the Arch iso, which I'm going to assume goes ahead without any problems. Don't change the default options and let it boot even if the screen stays black for a while. If it really doesn't work, check the official instructions for disabling modesetting, ACPI and so on (this won't happen in a VM). In a short time you should be looking at the booted Arch system, logged in automatically as root in a zsh session. You'll see this: Arch Linux 3.12.1-3-ARCH (tty1) archiso login: root (automatic login) root@archiso ~ # Now the fun starts. Arch doesn't have an installer per se, it's more like using a Linux boot disk to chroot into a system and modify it. We are immediately going to start ignoring the official guide and won't bother setting locales or fonts - we want to spend as little time as possible actually interacting with this clumsy root console, using it only to get SSHD running so we can connect from our main machine and start copy/pasting commands with ease. Here are the very few steps we actually do at the VM console: 2: loadkeys uk #just to avoid messing up step 3 by accident 3: passwd #set the installer root password, otherwise SSH login will fail 4: ping -c 3 www.linux.org #check and see if Arch has picked up a valid DHCP and is networked 5: ip link show #no ifconfig on Arch: this lists available network interfaces #ignore the "lo" interface, and look for the one starting "enp..." 6: ip addr show enp0s3 #gets actual IP address details for your network card #mine is called "enp0s3", yours probably will be too: get this from 5. #in my case, DHCP has given my enp0s3 device 192.168.0.2/24 7: systemctl start sshd 8: systemctl status sshd #enable SSHD server and check its status Ok, a lot of the work has already been done now, and we can now stop all interaction with the actual installer console at this point: from your host PC or wherever else you like, connect via SSH to the Arch VM. In my case, Arch VM has the address 192.168.0.2 assigned via DHCP so on my host PC, I start a new terminal and issue: ghost@failbot:~$ ssh -l root 192.168.0.2 The authenticity of host '192.168.0.2 (192.168.0.2)' can't be established. ECDSA key fingerprint is d5:c4:4b:28:f8:c7:a8:44:30:eb:34:c3:b6:5b:30:2b. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.0.2' (ECDSA) to the list of known hosts. root@xxxxxxxxxxx's password: Last login: Thu Dec 12 21:05:42 2013 root@archiso ~ # Excellent: I can continue all of the installation comfortably from my terminal now, with all the advantages of copy/paste, etc. This saves a lot of typing, and potentially very frustrating typos. This is also the *ONLY TIME IT IS ALLOWABLE TO SSH AS ROOT*. Now the serious installation begins. The very first issue is to partition the disk: if you want to create a custom disk layout, *not* use EFI or vary in any way from my instructions, you'll have to adapt what follows. Arch themselves recommend that for absolute beginners, you'd be best off using something like a Gparted live CD to boot the VM with and arrange your disks there: if this sounds good to you, then reboot the VM, sort out your partitions and then repeat the above, to get back to this step. Otherwise, read on. A "normal" Linux single disk layout would typically be something like: 25Gb virtual disk - MBR disklabel - /dev/sda sda1 500Mb ext2 (/boot) sda2 10Gb ext4 (/ - the root filesystem) sda3 12Gb ext4 (/home) sda4 2.5Gb swap That's fussy and annoying, so we're not going to do anything like that: 25Gb virtual disk - GPT disklabel - /dev/sda sda1 1Gb FAT32 (EFI and /boot) sda2 24Gb BTRFS (/ root and everything else) Much better. Now it's time to start copy/pasting into your SSH session. 9: cgdisk /dev/sda #this starts the partitioner: don't do this in the wrong terminal! cgdisk will warn about your empty disk (if it isn't empty, nuke everything so it is and create a new GPT disk label) and present you with a simple interface. 10: Hit "New", accept 2048 as first sector, type "+1G" for last sector 11: Change default hex code from "8300" to "ef00" and finish #you've now created a 1Gb EFI system partition 12: Hit "New" again, accept defaults for first and last sectors 13: Accept "8300" as code, accept blank name, finish. #you've filled the rest of the disk with a standard linux partition 14: Select "Write", type "yes" to confirm and then "q" to quit. 15: fdisk -l /dev/sda The fdisk command spits out your new disk structure in friendly format: mine now looks like this (note the disklabel=GPT and the correctly aligned offset of 2048 for the start of sda1): root@archiso ~ # fdisk -l /dev/sda Disk /dev/sda: 25 GiB, 26843545600 bytes, 52428800 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 86CC77AC-8834-45FA-9CAB-AA91AE03BE77 Device Start End Size Type /dev/sda1 2048 2099199 1G EFI System /dev/sda2 2099200 52428766 24G Linux filesystem We have now partitioned the raw disk, so it's time to make filesystems and mount them - again, if you have deviated from my setup you're going to have to use common sense and the official guide to extrapolate from the following instructions. 16: mkfs.fat -F32 /dev/sda1 17: mkfs.btrfs /dev/sda2 18: mount /dev/sda2 /mnt 19: mkdir -p /mnt/boot 20: mount /dev/sda1 /mnt/boot #the order of mounting is important, always mount / first 21: date #check and correct the date+time if necessary 22: pacstrap /mnt base 23: genfstab -U -p /mnt >> /mnt/etc/fstab 24: cat /mnt/etc/fstab #check the generated fstab is correct 25: arch-chroot /mnt /bin/bash This is a major milestone: we have now chrooted into the actual base system we have just created, and can start configuration properly. From now on, everything you do is carried over into your finished system - we're not going to do very much here, just get some basics organised and then reboot natively without having to bother with the live CD installer any more. If you doing this in a VM, you could do worse than snapshot your progress at this point. I will be using vi as my editor for the following steps, but feel free to substitute it for nano if you prefer (and you probably should). 26: vi /etc/locale.gen #uncomment the "en_GB.UTF-8 UTF-8" line and save the file 27: locale-gen 28: echo LANG=en_GB.UTF-8 > /etc/locale.conf 29: export LANG=en_GB.UTF-8 30: echo KEYMAP=uk /etc/vconsole.conf 31: ln -s /usr/share/zoneinfo/GB /etc/localtime 32: hwclock --systohc --utc 33: echo myhostname > /etc/hostname #change myhostname to whatever you want to call your new VM 34: systemctl enable dhcpcd.service 35: passwd #set the root password for the current root, inside our chroot We have done quite a lot of basic but essential stuff here, all of which applies to our finished system. If you want to edit or change stuff feel free, but if you're happy editing locales, want a static IP address or to enable wifi you should be reading the official guide and using that, not following this hackjob! Now we are nearly done with the major installation stage, we just setup the bootloader properly and take care of a couple of last things: 36: pacman -S gptfdisk 37: mount -t efivarfs efivarfs /sys/firmware/efi/efivars #this should throw an error about already being mounted, which is fine 38: pacman -S gummiboot 39: gummiboot install 40: vi /boot/loader/entries/arch.conf Whether you are using vi or nano, copy all of the following into the file and save it: title Arch Linux linux /vmlinuz-linux initrd /initramfs-linux.img options root=/dev/sda2 rw Note that in the last line, I have set "root=/dev/sda2 rw" because sda2 is where my root partition lives: if you're not following along exactly, you'll have to edit this line (and a whole lot of other stuff as well). 41: cat /boot/loader/entries/arch.conf #check the file you've just created looks correct, as above Now we do some final bits of setup, to make our life easier for when we reboot in a moment into our new Arch system: 42: pacman -S openssh 43: systemctl enable sshd.service 44: useradd -D #check defaults, they can and do differ on various *nix systems 45: useradd -m ghost #change your username from "ghost" to your preferred login name 46: passwd ghost #set the password for your new user, who probably isn't called ghost 47: pacman -S sudo 48: visudo #in visudo, uncomment the line "%wheel ALL=(ALL) ALL" and save 49: usermod -a -G wheel ghost #obviously change "ghost" to your chosen username instead 50: id ghost #inspect your new users permissions: should now have "wheel" for sudo We could do more at this point, but have the basics of a functional system now so we're going to reboot straight away to check our progress. We should have our new Arch system boot itself, start the DHCP service and get an address, enable SSHD and let us login as a user this time, but one with sudo access immediately. Let's do it: 51: exit 52: umount -R /mnt 53: shutdown -hP now Once the VM/test PC is down, you can remove the Arch boot iso to prevent it immediately restarting straight into the installer again. Now for the true test: if you've been following exactly, and doing this in VirtualBox it will definitely work. I make no promises if you've been customising or otherwise tampering with things. Restart your VM, and the first thing you will notice is the ridiculous, crazy speed at which Arch boots in this state - that's EFI and systemd doing their work. My modest test VM, archivist, boots from cold to the login screen in 4 seconds. Congratulations, you've installed Arch! Now you could login at the console and start playing around, but I promised you a more usable system so we're going to do some more work, mostly installing things we're going to need - we don't even have Xorg yet. Reconnect from your terminal on the host machine over SSH, so we can get back to copy/pasting instructions but be prepared for the following warning: ssh -l ghost 192.168.0.2 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ This is completely expected: remember, we connected to the SSHD instance in the Arch installer system last time, and now we're connecting to the same IP (I'm going to presume your VM comes back up on the same DHCP-assigned address as before) but this time it's not the installer, it's our new Arch system and it has regenerated it's SSHD keys on startup. Hence the large scary warning. Follow the instructions your system just gave you about removing the offending key, I did this: ssh-keygen -f "/home/ghost/.ssh/known_hosts" -R 192.168.0.2 But you can just manually edit the file and remove the line yourself if you prefer. As soon as you're done, reconnect again but remember you're not connecting as root anymore, but the user you created during the setup process. Running "ssh -l ghost 192.168.0.2" again drops me happily here: Last login: Thu Dec 12 23:41:34 2013 [ghost@archivist ~]$ uname -a Linux archivist 3.12.4-1-ARCH #1 SMP PREEMPT Sun Dec 8 21:18:00 CET 2013 x86_64 GNU/Linux [ghost@archivist ~]$ Excellent. From now on in we are just finishing things up. Because we're now running as a normal, albeit priviledged, user, we now start prefixing commands with "sudo". 54: sudo pacman -S pacman -S xorg-server xorg-server-utils xorg-xinit 55: sudo pacman -S xterm mesa virtualbox-guest-utils virtualbox-guest-dkms 56: sudo pacman -S fakeroot linux-headers 57: sudo vi /etc/modules-load.d/virtualbox.conf #copy in the following, one per line like so: vboxguest vboxsf vboxvideo #save the file and exit 58: sudo vi /etc/mkinitcpio.conf #edit the HOOKS line near the end and add "vboxguest", so it looks like: HOOKS="base udev autodetect modconf block filesystems keyboard fsck vboxguest" #save the file and exit 59: sudo systemctl enable dkms.service 60: sudo systemctl enable vboxservice We have now pretty much done all the VBox integration stuff to make the new VM behave properly, but first we need a couple of extra tools, from the dreaded AUR repository: this means building stuff from source. Arch do *NOT* handle this particularly elegantly, so we're going to do the usual hacky job of getting around it, because life is too short. 61: sudo vi /etc/pacman.conf #add the following lines at the very bottom of the file: [archlinuxfr] SigLevel = Never Server = http://repo.archlinux.fr/$arch #save the file and exit 62: sudo pacman -Sy yaourt 63: yaourt -Sy yaourt-gui #respond to the questions: you don't want to edit the PKGBUILD, do want to proceed with the build, and do want to install it #also, this is not a typo: do NOT run yaourt with sudo or as root 64: yaourt -Sy vboxguest-hook #again, respond to the prompts and let it do it's thing Now, we don't have to use horrid pacman anymore, can automate downloading, compiling and installing from AUR source archives and can crack on with the final steps. Our system is nearly done, now we're just going to install a LOT of stuff, intentionally dragging in dependencies left right and centre. 65: yaourt -Sy gdm firefox thunderbird #choose the default of 1 when it asks about providers 66: yaourt -Sy cinnamon #this finally installs an actual DE - feel free to change this, or to add more DEs as you like... Mate, KDE, Gnome and just about all others are available And that's it :] It may not seem like it, but if you reboot at this point, *and you should*, you now have a basic, incredibly un-optimised but fully functional current Arch Linux VM running in VirtualBox, complete with VBox extensions and a GUI to explore. Don't blindly login at the login screen though: input your name first, and then choose whichever DE you like best from the little settings gear icon, otherwise it will by default log you into a barely functional gnome-shell session. If you've been following along, chose "Cinnamon" (you can have the full-on 3D accelerated version as well, not just the fallback mode) and then login: as soon as you have logged in, the VBox extensions will kick in and you can then manually resize the VBox window, etc. Success. At this point a wise person would snapshot their VM, and begin to play: you'll have a lot of missing packages and an unfamiliar Linux distro to explore so have fun, and at this point as you've been cheating so far, should actually start reading the excellent documentation. Last tips and tricks: ignore "pacman", the apt-get/yum equivalent on Arch, it sucks. Do package management via yaourt instead, which can also handle your installed AUR source packages as well. yaourt -Syua Is sufficient to synchronise, download and update all of your stuff in one go. For an even better experience, especially for potential newbies who feel out of their depth, try the truly excellent yaourt-gui which we installed earlier as a one-stop package management, search, updating and organisation tool. It's an excellent bash script, do: yaourt-gui And just follow the menus. Do *NOT* run yaourt or yaourt-gui as root or under sudo: they are smart enough to escalate as required and will ask for your password when they need it. Also, I chose GDM for a reason over other greeters: GDM is "smarter" than other greeters on Arch, and automatically picks up nearly all DEs for inclusion in it's "log into..." section. If you chose to install MDM, KDM, SLiM or are running startx out of a custom .xconfig and it doesn't work, that is your problem and you'll have to fix it yourself. Due to installing and configuring virtualbox-* properly, you DO NOT want to and indeed should NOT install the virtualbox guest additions manually through the VirtualBox interface: it's unnecessary. The modified /etc/mkinitcpio hooks and packages we've installed will call dkms properly on kernel upgrades and additions upgrades automatically. This is cleaner and easier than manually doing it. That pretty much covers it: this guide has been tested, and if you follow the instructions properly, particularly by doing the install in VBox, you pretty much can't go wrong. I tested it during writing this "guide", and earlier today it went to two reluctant testers (thanks guys!) for idiot proofing: whilst both are experienced IT pros, both are utter Linux n00bs, and one is actually a die-hard Linux hater. Tester1 used VirtualBox hosted on Windows 7 with putty for a SSH client, and completed the entire operation perfectly in ~40 mins. Tester2 is a pain in the ass and a senior programmer/engineer, and only agreed to do it because he owes me a favour and I'm a bully. I had to modify some bits and manually intervene once, but only because he wanted to do it on his existing Server 2012r2 Hyper-V infrastructure, which required different virtio drivers and some other mods. It still only took him about an hour, even with some hiccups. Both were still unimpressed, except by the boot speed, which is insane to be fair. Any comments, corrections, questions or suggestions gratefully received, and I hope somebody may find this useful - I certainly hope so, because it took a lot bloody longer than expected to type this up and do the testing... no more tutorials for me for a while. Regards, and good luck. -- The Mailing List for the Devon & Cornwall LUG http://mailman.dclug.org.uk/listinfo/list FAQ: http://www.dcglug.org.uk/listfaq