Install Arch Linux ================== This is my personal setup almost every time I install Arch Linux. This is meant for me as being something I can quickly reference. Change localkeys to my keyboard layout -------------------------------------- In my case I have a Danish keyboard layout. ```bash loadkeys dk ``` You can find your keymap file by using localectl: ```bash localectl list-keymaps ``` Or by simply looking inside the /usr/share/kbd/keymaps/ directory. ```bash find /usr/share/kbd/keymaps/ -type f ``` Create Partitions ----------------- ```bash cfdisk ``` Set up the partions, mount and use swap --------------------------------------- Let us say you have a simple setup: - /boot partition (ext2) - / partition (ext4) - /home partition (ext4) - /var partition (ext4) - /tmp partition (ext4) - swap partition [swap] NOTE: `lsblk` is a very nice tool to doublecheck your partition(s) structure. First we format to the file systems we want: ```bash mkfs.ext2 /dev/sdaxY (/boot) mkfs.ext4 /dev/sdaxY (/, /home, /var, /tmp) ``` Why do I use ext2 for the boot partition? No need to have a journal. Create /mnt structure, one-liner: ```bash mkdir -p /mnt/{boot,home,var,tmp} ``` And then mount the file systems to /mnt: ```bash # Mount / (root) mount /dev/sdaxY /mnt # Mount /boot, /home, /var, /tmp mount /dev/sdaxY /mnt/ ``` Let us not forget to make ("format") our swap and mount it as well: ```bash mkswap /dev/sdaxY swapon /dev/sdaxY ``` Installing the actual base system and sudo ------------------------------------------ Install the base system, with sudo as well. ```bash pacstrap /mnt base base-devel sudo ``` Generate the fstab (so it knows how things are mounted) ------------------------------------------------------- This is why we had to mount everything as first, so genfstab would know what to do when generating the fstab. ```bash genfstab -U -p /mnt >> /mnt/etc/fstab ``` chroot into the installed system with /bin/bash ----------------------------------------------- ```bash arch-chroot /mnt /bin/bash ``` Locale (system language) ------------------------ Depending on what you want, you change the /etc/locale.gen file: ```bash nano /etc/locale.gen ``` NOTE: Use UTF-8 whenever possible. DOUBLE NOTE: If you are from America, you don't need to change the file. When done, you simply generate the locales you want and tell the system what you want to use. Generate: ```bash locale-gen ``` Tell the system what we use: ```bash echo LANG=en_GB.UTF-8 > /etc/locale.conf export LANG=en_GB.UTF-8 ``` Timezone -------- Symlink/Set your timezone: ```bash ln -s /usr/share/zoneinfo/Europe/Copenhagen /etc/localtime ``` Set system to the Hardware Clock -------------------------------- ```bash hwclock --systohc --utc ``` Hostname -------- Choose an awesome hostname: ```bash echo myhostname > /etc/hostname ``` Setting up DHCP for my Internet Card ------------------------------------ systemd setup of your dhcp interface: ```bash ip link systemctl enable dhcpcd@my-device.service ``` Just simply using `systemctl enable dhcpcdeth0.service` won't work anymore. So I'm getting the correct device with ip link. (Usually the entry under the loop.) Ramdisk ------- Initial ramdisk environment. ```bash mkinitcpio -p linux ``` This actually ran under the pacstrap process, I just like to be safe. Root Password ------------- Be stronk: ```bash passwd ``` Grub (Bootloader) ----------------- Well, we need a bootloader: ```bash pacman -S grub ``` If I'm having **Windows** as well on another Partition, I'll also install ***os-prober***. ```bash grub-install --target=i386-pc --recheck /dev/sda grub-mkconfig -o /boot/grub/grub.cfg ``` Exit arch-chroot ---------------- ```bash exit ``` Umount /mnt and reboot ---------------------- Unmount EVERYTHING and reboot the system. ```bash umount /dev/sdaxY reboot ``` NOTE: You can use `umount -R /mnt` to recursively unmount everything in /mnt Login as Root to Arch Linux and permantly set the keymap (keyboard) ------------------------------------------------------------------- Now we want to make our keyboard layout permanent: ```bash localectl set-keymap --no-convert dk ``` I obviously have "dk" for Danish layout. Substitute with your own layout. NOTE: If you are a bloody American, you don't need to do this. US is default. Check for updates, there's probably none ---------------------------------------- ```bash pacman -Syy pacman -Syu ``` Add User and set Password ------------------------- ```bash useradd -m -g users -G lp,scanner,audio,video,optical,network,games,wheel -s /bin/bash username passwd username ``` Change sudoers file using nano ------------------------------ ```bash EDITOR=nano visudo ``` Uncomment wheel group. `# %wheel ALL=(ALL:ALL) ALL` Logout of Root -------------- ```bash exit ``` Login as your username and test sudo with pacman ------------------------------------------------ ```bash sudo pacman -Syy sudo pacman -Syu ```