Arch linux: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Fislam (talk | contribs)
No edit summary
Fislam (talk | contribs)
Author name added,typo fixes and some edits
Line 1: Line 1:
'''Arch Linux''' is a Unix like linux distribution. Arch started it’s journey in 2002, and is usually used by advanced users. Arch Linux is not super user friendly to begin, and therefore not recommended for rookies. However, the deal with Arch Linux is that it’s free of bloat-wares and uses a very minimalistic approach, moreover it pushes to user to put great effort into understanding how the system works.
 
== '''Arch Linux''' ==
 
'''Written by: Farhan Islam-C11 Group'''
 
Arch is a Unix like linux distribution. Arch started it’s journey in 2002, and is usually used by advanced users. Arch Linux is not super user friendly to begin, and therefore not recommended for rookies. However, the deal with Arch Linux is that it’s free of bloat-wares and uses a very minimalistic approach, moreover it pushes to user to put great effort into understanding how the system works.


The main reasons to install Arch Linux are as follows:
The main reasons to install Arch Linux are as follows:
1. Arch Linux is community based, and not market based. It doesn’t need to bother about the markets and customers, in fact it’s all about the development process. Furthermore, Arch doesn’t need to be patched, it is kind of like a stock Android, where the user uses what the upstream developed. Arch Linux probably has the best community support of all the linux distros, and the Arch WIKI contains pretty much everything a user might require.
1. Arch Linux is community based, and not market based. It doesn’t need to bother about the markets and customers, in fact it’s all about the development process. Furthermore, Arch doesn’t need to be patched, it is kind of like a stock Android, where the user uses what the upstream developed. Arch Linux probably has the best community support of all the linux distros, and the Arch WIKI contains pretty much everything a user might require.


Line 13: Line 19:


                                                                                                                                                  
                                                                                                                                                  
'''How to install Arch Linux on VirtualBox for a EFI System'''
'''How to install Arch Linux on Virtual Box for a EFI System'''


This is a long process, but first of all you need to get the official Arch Linux ISO from [https://www.archlinux.org/download/]
This is a long process, but first of all you need to get the official Arch Linux ISO from [https://www.archlinux.org/download/]
On Virtual Box you will need to create a EFI enabled virtual machine. In my case, I used 20GB dynamically allocated hard drive, 1.5GB RAM and 85% Processor power.
 
Once that's all done,mount the ISO and fire up the virtual machine.
On Virtual Box you will need to create a EFI enabled virtual machine. In my case, I used 20GB dynamically allocated hard drive, 1.5GB RAM and 85% Processor power. Once that's all done,mount the ISO and fire up the virtual machine.


Once inside the virtual machine, you will see a promt like <code>root@archoiso ~ #</code> first thing you want to do is check whether the internet is working by simply doing <code>ping -c 3 www.google.com</code>
Once inside the virtual machine, you will see a promt like <code>root@archoiso ~ #</code> first thing you want to do is check whether the internet is working by simply doing <code>ping -c 3 www.google.com</code>


'''Creating file systems, formatting and mounting'''
'''Creating file systems, formatting and mounting'''
I recommend cgdisk or gdisk for EFI systems, it is very user friendly and straightforward. FIrst of all you need to check your block devices and partitions.
I recommend cgdisk or gdisk for EFI systems, it is very user friendly and straightforward. First of all you need to check your block devices and partitions.


<code>lsblk</code> to view block devices
<code>lsblk</code> to view block devices
Line 53: Line 59:


Partition name : root  
Partition name : root  
EDIT: It is is a nice practice to separate the home and root partitions. I did not do it because I do not really intend on using this VM a lot. If you however, want Arch as your primary VM then do create a home partition separate from root and mount in the mount point.


<code> lsblk </code> To verify the partitions exist
<code> lsblk </code> To verify the partitions exist
Line 60: Line 68:
Format boot partition <code> mkfs.fat -F32 /dev/sda1 </code> FAT32 is used for EFI boot.
Format boot partition <code> mkfs.fat -F32 /dev/sda1 </code> FAT32 is used for EFI boot.


Format swap partion <code> mkswap /dev/sda2 </code> Intialize swap <code>swapon /dev/sda2</code>
Format swap partition <code> mkswap /dev/sda2 </code> Initialize swap <code>swapon /dev/sda2</code>


Format root partition <code> mkfs.ext4 /dev/sda3 </code> Ext4 journaling system is used for root.
Format root partition <code> mkfs.ext4 /dev/sda3 </code> Ext4 journalling file system is used for root.


Mounting:
Mounting:
Line 74: Line 82:


'''Mirrorlist (Optional)'''
'''Mirrorlist (Optional)'''
Now you have the option to rank the mirrorlist, even though you do not really have to do this. To do so you need to edit <code>/etc/pacman.d/mirrorlist</code> and uncomment the mirrors you want to rank. I sugguest uncommenting at least 20 countries.  Use <code> rankmirrors -n 5 /etc/pacman.d/mirrorlist </code> to rank the top five mirrors , could take a few minutes.
Now you have the option to rank the mirrorlist, even though you do not really have to do this. To do so you need to edit <code>/etc/pacman.d/mirrorlist</code> and un-comment the mirrors you want to rank. I suggest un-commenting at least 20 countries.  Use <code> rankmirrors -n 5 /etc/pacman.d/mirrorlist </code> to rank the top five mirrors , could take a few minutes.


'''Install base packages, Generate fstab'''
'''Install base packages, Generate fstab'''
Line 91: Line 99:
Use the command <code> nano /etc/locale.gen </code>
Use the command <code> nano /etc/locale.gen </code>


Uncomment <code> en_US.UTF-8 </code> There should be two of these
Un-comment <code> en_US.UTF-8 </code> There should be two of these


Generate the locale <code> locale-gen </code>
Generate the locale <code> locale-gen </code>
Line 104: Line 112:
Set up the hostname:
Set up the hostname:


setup the hostname <code> echo bossman-arch > /etc/hostname </code>
Setup the hostname by simply echoing the hostname and then outputting in etc <code> echo bossman-arch > /etc/hostname </code>
Double check to see if hostname exists
Double check /etc folder to see if hostname exists


Enable multilib and create custom repository: (Optional Step)
Enable multilib and create custom repository: (Optional Step)
Line 121: Line 129:
Run pacman to get yaourt <code>pacman -Sy yaourt </code>  Yaourt is basically the Arch Linux Users version of pacman. It is slighltly different, more on that later.
Run pacman to get yaourt <code>pacman -Sy yaourt </code>  Yaourt is basically the Arch Linux Users version of pacman. It is slighltly different, more on that later.


Setup root password <code> passwd </code>
Setup root password <code> passwd root </code>
 
Simply type in the password and confirm it.
Simply type in “passwd” and confirm password


Add a regular user
Add a regular user
It is recommend to add a regular user for security reasons. You should never the use the computer as root user unless you have to, because the root user has
absolute control over the system.


<code> useradd -m -g users -G wheel,storage -s /bin/bash axon </code> -m flag is to create -g is the group flag -G on the other hand is the secondary group. Wheel is the Arch equivalent of nano, storage gives access to removable devices, and bash is the shell environment. Now set up a password for the user, <code>passwd axon </code>
<code> useradd -m -g users -G wheel,storage -s /bin/bash axon </code> -m flag is to create -g is the group flag -G on the other hand is the secondary group. Wheel is the Arch equivalent of nano, storage gives access to removable devices, and bash is the shell environment. Now set up a password for the user, <code>passwd axon </code>
Line 132: Line 141:
We need to make sure to edit one file so that the sudo password is asked everytime when doing a sudoers task.
We need to make sure to edit one file so that the sudo password is asked everytime when doing a sudoers task.


<code> EDITOR=nano.visudo </code> find %wheel and add on the line below  <code> Defaults root pw </code> Now the sudo password will be prompted when doing sudeoers task.
<code> EDITOR=nano.visudo </code> find %wheel and add on the line below  <code> Defaults rootpw </code> Now the sudo password will be prompted when doing sudeoers task.
At this point you might have to restart the system, you may encounter some error messages in the next step just reboot, remount and get chroot back in if it happens.
At this point you might have to restart the system, you may encounter some error messages in the next step just reboot, remount and get chroot back in if it happens.


Line 157: Line 166:
options root=PARTUUID=*YOURUUID* rw
options root=PARTUUID=*YOURUUID* rw


</code>Save and exit. Vmlinuz is the name of a linux kernel executable. You should know that kernel is like the heart of an OS. Vmlinuz is compressed and bootale. Initrd is a scheme for temporary root file system into memory, which may be used as part of the Linux startup process. initrd and initramfs refer to two different methods of achieving this.
</code>Save and exit. Vmlinuz is the name of a linux kernel executable. You should know that kernel is like the heart of an OS. Vmlinuz is compressed and bootable. Initrd is a scheme for temporary root file system into memory, which may be used as part of the Linux startup process. initrd and initramfs refer to two different methods of achieving this.


For intel processors only <code>pacman -S intel-ucode </code> Is basically a microcode update file for Intel CPUs. I recommend doing this for compatability issues.
For Intel processors only <code>pacman -S intel-ucode </code> Is basically a microcode update file for Intel CPUs. I recommend doing this for compatibility issues.


Now  you have add ucode to config file <code> /boot/loader/entries/arch.conf </code> and add another initrd above the former initrd like <code> initrd /intel-ucode.img </code>
Now  you have add ucode to config file <code> /boot/loader/entries/arch.conf </code> and add another initrd above the former initrd like <code> initrd /intel-ucode.img </code>

Revision as of 18:28, 6 May 2017

Arch Linux

Written by: Farhan Islam-C11 Group

Arch is a Unix like linux distribution. Arch started it’s journey in 2002, and is usually used by advanced users. Arch Linux is not super user friendly to begin, and therefore not recommended for rookies. However, the deal with Arch Linux is that it’s free of bloat-wares and uses a very minimalistic approach, moreover it pushes to user to put great effort into understanding how the system works.

The main reasons to install Arch Linux are as follows:

1. Arch Linux is community based, and not market based. It doesn’t need to bother about the markets and customers, in fact it’s all about the development process. Furthermore, Arch doesn’t need to be patched, it is kind of like a stock Android, where the user uses what the upstream developed. Arch Linux probably has the best community support of all the linux distros, and the Arch WIKI contains pretty much everything a user might require.

2. Arch has massive software repositories. Arch has pretty much every application that is available through the packaging system on other distros, if not more. Arch calls it the Arch User Repository. It is a repository maintained by users, whereby users can compile and install packages from the source. Of course, users can also use Yaort command, if they prefer.

3. Support for majority of desktop environments. Mainstream linux distro like Ubuntu uses Unity uptill 16.10, and Unity by far the slowest desktop environment I’ve used. Although, users have the option to install Plasma, XFCE, MATE. Other environments like Gnome doesn’t work well on ubuntu. However, as of Ubuntu 17.04, Ubuntu has switched back to Gnome. Arch Linux supports LXDE,XFCE,Gnome,Mate and Cinnamon, and nothing seems to make it laggy, or break it.

4. Total User Control. Arch puts you in the pilot’s chair. The user has the ability to build everything from scratch, hence they can choose whatever they want instead of having to deal with unnecessary packages.

5. Rolling Releases. Unlike other distros, you do not come across a major update every 6 months. Arch uses rolling updates. That means, you are always running the latest packages, both desktop and kernel, as you don’t have to wait for a new distro, and you automatically get the latest packages.


How to install Arch Linux on Virtual Box for a EFI System

This is a long process, but first of all you need to get the official Arch Linux ISO from [1]

On Virtual Box you will need to create a EFI enabled virtual machine. In my case, I used 20GB dynamically allocated hard drive, 1.5GB RAM and 85% Processor power. Once that's all done,mount the ISO and fire up the virtual machine.

Once inside the virtual machine, you will see a promt like root@archoiso ~ # first thing you want to do is check whether the internet is working by simply doing ping -c 3 www.google.com

Creating file systems, formatting and mounting I recommend cgdisk or gdisk for EFI systems, it is very user friendly and straightforward. First of all you need to check your block devices and partitions.

lsblk to view block devices

cgdisk /dev/sda In my case it was /dev/sda

Now you need to start creating the partitions. You basically need just 3 partitions, boot, swap and root. For all of the partitions leave the first sector empty. Now create a partition.

Remember first sector empty

KGMTP 512MB 512MB is enough for a EFI boot.

Hexcode: L to view all. Go with ef00

Partition name : boot

Create another partition /dev/sda2

Size in sectors(KMGTP): 2GB The rule is to allocate around 1.5 times the RAM for your Swap partition, so in my case it was 2GB approx.

Hexcode: 8200

Partition name : swap

Create the final partition /dev/sda3

Size in sectors(KMGTP): leave blank By leaving blank it will allocate the remaining space to this partition.

Hexcode: 8300 This is the main linux file system and is suitable for our root partition.

Partition name : root

EDIT: It is is a nice practice to separate the home and root partitions. I did not do it because I do not really intend on using this VM a lot. If you however, want Arch as your primary VM then do create a home partition separate from root and mount in the mount point.

lsblk To verify the partitions exist

Formatting:

Format boot partition mkfs.fat -F32 /dev/sda1 FAT32 is used for EFI boot.

Format swap partition mkswap /dev/sda2 Initialize swap swapon /dev/sda2

Format root partition mkfs.ext4 /dev/sda3 Ext4 journalling file system is used for root.

Mounting:

Mount root mount /dev/sda3 /mnt

Now make directory mkdir /mnt/boot

Mount boot mount /dev/sda1 /mnt/boot


Mirrorlist (Optional) Now you have the option to rank the mirrorlist, even though you do not really have to do this. To do so you need to edit /etc/pacman.d/mirrorlist and un-comment the mirrors you want to rank. I suggest un-commenting at least 20 countries. Use rankmirrors -n 5 /etc/pacman.d/mirrorlist to rank the top five mirrors , could take a few minutes.

Install base packages, Generate fstab

To install base packages pacstrap -i /mnt base base-devel These are the core packages of an Arch Linux Installation. FSTAB basically lists all the partitions and data sources and show how they are being used.

To generate fstab genfstab -U /mnt >> /mnt/etc/fstab Check if fstab generated in /mnt/etc

Basic configurations

First of all you need to get inside the newly installed system arch-chroot /mnt You should see a slightly different prompt now.

Change language to EN_US:

Use the command nano /etc/locale.gen

Un-comment en_US.UTF-8 There should be two of these

Generate the locale locale-gen

Now the output needs to be saved echo LANG=en_US.UTF-8 > /etc/locale.conf and exported export LANG=en_US.UTF-8

Set up the time :

Now change to Tallinn by creating a soft link ln -s /usr/share/zoneinfo/Europe/Tallinn > /etc/localtime This might already exists Now set hardware clock to utc hwclock –systohc –utc

Set up the hostname:

Setup the hostname by simply echoing the hostname and then outputting in etc echo bossman-arch > /etc/hostname Double check /etc folder to see if hostname exists

Enable multilib and create custom repository: (Optional Step)

Type in nano /etc/pacman.conf Find and uncomment multlib, not the testing, just the multilib and line beneath of course. Multilib makes sure you have access to 32bit programs

In the same file, all the way in the bottom add a custom repository : [archlinuxfr]

SigLevel= Never

Server= http://repo.archlinux.fr/$arch Save changes and exit,and of course if you are editing a file you are expected to save it, so I might not always write save changes.

Run pacman to get yaourt pacman -Sy yaourt Yaourt is basically the Arch Linux Users version of pacman. It is slighltly different, more on that later.

Setup root password passwd root Simply type in the password and confirm it.

Add a regular user It is recommend to add a regular user for security reasons. You should never the use the computer as root user unless you have to, because the root user has absolute control over the system.

useradd -m -g users -G wheel,storage -s /bin/bash axon -m flag is to create -g is the group flag -G on the other hand is the secondary group. Wheel is the Arch equivalent of nano, storage gives access to removable devices, and bash is the shell environment. Now set up a password for the user, passwd axon

Sudo Permissions: We need to make sure to edit one file so that the sudo password is asked everytime when doing a sudoers task.

EDITOR=nano.visudo find %wheel and add on the line below Defaults rootpw Now the sudo password will be prompted when doing sudeoers task. At this point you might have to restart the system, you may encounter some error messages in the next step just reboot, remount and get chroot back in if it happens.

Bootloader installation and configuration

mount -t efivarfs efivarfs /sys/firmware/efi/efivars This should return that it's busy or already in use,it's a good thing if that happens, otherwise you need to recheck all the steps.

Now install the bootloader bootctl install

blkid Make a note of the UUID of /dev/sda3. The following steps must be done exactly this way except you will have a very different UUID.

blkid -s PARTUUID -o value /dev/sda3 > /boot/loader/entries/arch.conf You just outputted the PARTUUID in arch.conf.

nano /boot/loader/entries/arch.conf You need to edit this configuration file. You will see the PARTUUID generated and nothing else on it. It should look like the following.

title Arch Linux

linux /vmlinuz-linux

initrd /initramfs-linux.img

options root=PARTUUID=*YOURUUID* rw

Save and exit. Vmlinuz is the name of a linux kernel executable. You should know that kernel is like the heart of an OS. Vmlinuz is compressed and bootable. Initrd is a scheme for temporary root file system into memory, which may be used as part of the Linux startup process. initrd and initramfs refer to two different methods of achieving this.

For Intel processors only pacman -S intel-ucode Is basically a microcode update file for Intel CPUs. I recommend doing this for compatibility issues.

Now you have add ucode to config file /boot/loader/entries/arch.conf and add another initrd above the former initrd like initrd /intel-ucode.img

Exit chroot exit

Unmount everything umount -R /mnt Mnt was a placeholder for root, now that we have the actual system waiting we do not need it.

Shutdown the system Shutdown now

Power off virtual machine

Eject ISO

Arch Linux Installation should be complete,however it is time to power up the VM without ISO, double check to see if the ISO is ejected and and the boot is set to hard drive.

If you have done everything correctly a login prompt should appear. You can login using the your credentials.

Enable Internet

sudo su For the sake of convenience become sudo as soon as you can.

Now that you are logged in if you try to ping something or get a package with pacman, it will fail, you must re-enable the internet connection. First check ip link The correct interface is not the first one or the loopback, it is the one with broadcast and in my case it was enp0s3, and the interface was down.

To re-enable systemctl enable dhcpcd@enp0s3.service

reboot Reboot and ping google or some other site it should work fine.

GUI : XSever, VBox Guest Additions and LXDE

This is the final step of the installation process. I chose LXDE because it's pretty light and fast. You can install Gnome, it looks outstanding but it might lag.

Xserver installation:

pacman -S xorg-server xorg-server-utils xorg-xinit xterm mesa xorg-clock xorg-twm alsa-utils tmux The following ar the reccomended packages,and they should all be installed.

Install Linux headers:

pacman -S linux-headers header files used to compile the kernel -and other applications which depend on the structures defined in theseheader files, like kernel modules. An example can be graphic card drivers.

VBox Guest Additions Installations:

Virtual Box guest additions allows the changing of resolution and using USB devices within the VM. Hence it must be done for GUI. To do so, simply insert the Virtual Box Guest Addition CD from the upper menu. It should be inserted. If you get an error it's probably because you have to IDE cdrom, just go back to virtualbox and create a blank IDE drive without mounting anything, then boot back into Arch VM and insert the guest additions cd, this will work.

Now you have to mount the cdrom mount /dev/cdrom /mnt

Navigate to /mnt examine and run the script ./VBoxLinuxAdditions.run This should install virtual box guest additions.

pacman -Syu Check for updates.

At this point you need to reboot again.Once back in the system startx you should see some colored windows, this means xserver is ready for GUI.

Installing LXDE:

Unlinke gnome lxde doesn't need so much space and this should be a straightforward installation. pacman -S lxde

Once the installation is done, all you need to do is a reboot and you should see a Graphical login prompt. If you login and everything works, congratulations, the worst is over.

Installing Gnome:

If you prefer Gnome instead of LXDE then pacman -S gnome gnome-extra gdm Do not select nvidia even if you have an nvidia GPU. Also I found Gnome not working with VBox 3d Acceleration, and hence it lags when streaming videos.


Installing with Pacman and Yaourt this is only an example of how to use pacman and yaourt, you can set up whatever you want.

Open up the terminal and sudo pacman -S firefox Firefox will be installed just like that

Install Geekbench. Firstly get snapshot from this link [2] Navigate to downloaded location on terminal and do tar xf geekbench.tar.gz and then navigate to this new folder makepkg -sci This will get all the dependendencies and clean everything up afterwards and even install after it's being built. You can't be sudo and run this command, you will need to exit out of sudo. It will take some time to build packages and then a prompt will ask you if you want to install, of course press y. Installation will be done, and geekbench should be ready. Make sure you have the base devel package also, without it you will not be able to make package.

Finally an example of yaourt: Yaourt basically works the same way, and you need to be non sudo user to use it. yaourt -Sb google-chrome This is to get google chrome with Yaourt, S flag to sync with AUR and B to backup. You will get a few warning just press y and continue, you will even get to edit the config file, but you dont really have to do anything you can have a look and exit anc continue and then there will be a password prompt for installation. Sit back and relax, the installation will be done in a few minutes.


Removing packages

To remove a single package without dependency pacman -R package

To remove a package with dependencies that which are not required by other applications pacman -Rs package

To recursively remove a package and dependencies, meaning the other applications using it will be potentially worthless pacman -Rsc package

Removing yaourt packages, basically the same except you replace pacman with yaourt yaourt -R package

If you installed with makepkg pacman should take care of the uninstalling.

Conclusion

If you have managed to come this far and you have some prior Linux experience, you are going to be all right using Arch Linux. However, if you want a OS that is basically a replacement for Windows, then you should stick to Ubuntu or Mint. Arch Linux is very powerful, capable and customizable. All in all a very nice Operating System, and by using it you can learn a lot.


Arch Linux Screenshots:

Gnome Installed

LXDE Installed

Xserver is working

Arch Linux Login Prompt

Arch Linux chroot mount prompt

list of files in /etc


References

Arch Linux WIki[3]

Five reasons to Use Arch[4]

Arch User Repository[5]