351 lines
No EOL
12 KiB
Markdown
351 lines
No EOL
12 KiB
Markdown
Installation
|
|
|
|
https://wiki.archlinux.org/title/installation_guide
|
|
offline installation : https://medium.com/@elohash/how-to-install-arch-linux-without-internet-no-pacman-9314836949de
|
|
|
|
https://docs345.surge.sh/arch_installation/
|
|
|
|
|
|
This video is used for the following steps: https://www.youtube.com/watch?v=DPLnBPM4DhI
|
|
https://files.catbox.moe/u3tkye.mp4
|
|
|
|
- `iwctl`
|
|
- https://m.youtube.com/watch?v=3czrHtFHteY
|
|
`device list`
|
|
`station wlan0 scan` then `station wlan0 get-networks`
|
|
then connect to internet using
|
|
`station <device_name> connect <ssid>`
|
|
Eg: `station wlan0 connect Comcast-50`
|
|
and `quit`. then ping it by to check if internet is working
|
|
`ping x.org`.
|
|
- Update time with `timedatectl`
|
|
- Partitioning disk
|
|
- Check partition using `fdisk -l` or `lsblk` or `cfdisk`
|
|
- Then `fdisk <partition>`
|
|
eg: `fdisk /dev/sda`
|
|
- Type these commands in sequence:
|
|
`p` to print information
|
|
`o` to create new label
|
|
`n` to add new partition. So many prompts will come just press enter to select default.
|
|
|
|
- Press `t` and Choose lvm by typing `8E` then type `a` to make partition active.
|
|
- Finalize change type `w` then enter
|
|
- Then create physical volume using
|
|
`pvcreate --dataalignment 1m /dev/sda1`
|
|
- Now create volume group
|
|
`vgcreate volgroup0 /dev/sda1` . Here `volgroup0` is a group name.
|
|
- Now create 2 logical volumes ie lv_root and lv_home
|
|
`lvcreate -L 30GB volgroup0 -n lv_root`
|
|
and
|
|
`lvcreate -l 100%FREE volgroup0 -n lv_home`
|
|
- Load new volume group into memory
|
|
`modprobe dm_mod`
|
|
- Scan system for volume groups
|
|
`vgscan` and activate it
|
|
`vgchange -ay`
|
|
- Formatting volumes
|
|
- Now format these parttions. For root one , format it with ext4 and for swap one format with swap
|
|
Ext4 formatting
|
|
`mkfs.ext4 /dev/volgroup0/lv_root`
|
|
Mounting
|
|
`mount /dev/volgroup0/lv_root /mnt`
|
|
|
|
Now format 2nd logical volume and mount it
|
|
`mkfs.ext4 /dev/volgroup0/lv_home`
|
|
Mounting
|
|
`mkdir /mnt/home`
|
|
`mount /dev/volgroup0/lv_home /mnt/home`
|
|
|
|
If there r swap partitions then
|
|
Format the Swap Partition (if created): If you created a swap partition, format it as swap:
|
|
`mkswap /dev/sdX2` # Replace /dev/sdX2 with your swap partition
|
|
`swapon /dev/sdX2` # Activate the swap partition
|
|
|
|
`mkdir /mnt/etc`
|
|
Saving partition layout by:
|
|
`genfstab -U -p /mnt >> /mnt/etc/fstab`
|
|
|
|
|
|
- For UEFI
|
|
Difference here is that we need to create efi partition
|
|
After typing `fdisk /dev/sda` type these commands:
|
|
`p` and `g`(for new GPT) , `n` then
|
|
- Partition number and First sector is default but for last sector we need to change it So type `+500M` as 500mb is enough for efi
|
|
|
|
Now type `t` and and partition type is `1` which means efi
|
|
- Now one more partition for rest
|
|
So type `n` and just select defaults and set the type with `t` and set to lvm
|
|
- Partition number would be 2 which is default
|
|
- Type `30` for lvm
|
|
- Finally verify it by `p` and type `w` to make changes
|
|
|
|
For parttion 1 ie efi , it have to be formatted with fat32
|
|
`mkfs.fat -F32 /dev/sda1`
|
|
Here `-F32` represents fat32
|
|
Now instead of creating and volume and setting other steps for lvm use sda2 instead of sda1 .
|
|
|
|
- For UEFI with encryption
|
|
|
|
|
|

|
|
this should be. 1st to efi,2nd to linux filesystem and 3rd to linux lvm
|
|
|
|
Do same for efi and set ext4 for partition 2 but before formatting 4rd we need to encrypt it
|
|
- Setting encryption
|
|
`cryptsetup luksFormat /dev/sda3`
|
|
Now u need to type passphrase. This passphrase should be available else all data will remain encrypted and inaccessible. After typing passphrase it will get locked so type
|
|
`cryptsetup open --type luks /dev/sda3 lvm`
|
|
|
|
Now just create volume , format and mount
|
|
`pvcreate --dataalignment 1m /dev/mapper/lvm`
|
|
|
|
- Installing components
|
|
- Using pacstrap command
|
|
`pacstrap -i /mnt base`
|
|
There mey be a error related to keyring hell so to fix it use
|
|
https://wiki.archlinux.org/title/Pacman/Package_signing#Resetting_all_the_keys
|
|
In `/etc/pacman.conf`
|
|
```text
|
|
SigLevel = Never
|
|
#LocalFileSigLevel = Optional
|
|
#RemoteFileSigLevel = Required
|
|
```
|
|
|
|
- Configure our installation
|
|
`arch-chroot /mnt` Using in chroot environment. arch-chroot is like a fake-root which change to new directory so that u can make changes af if they r live but all those changes will take place in future.
|
|
- Inside chroot, install 4 packages ie linux, linux-headers and linux-lts, linux-lts-headers. 2 versions bcz if one dont work then other may work. lts means here 'long term support' hence stable. Use
|
|
`pacman -S linux linux-headers linux-lts linux-lts-headers linux-firmware`
|
|
Then few more packages like nano, base-devel(basic development tools), openssh(remote access)
|
|
To use openssh make sure to enable sshd
|
|
`systemctl enable sshd`
|
|
|
|
Install packages for network working
|
|
`pacman -S networkmanager wpa_supplicant wireless_tools netctl`
|
|
|
|
installing dialog if gui network interface not working
|
|
`pacman -S dialog`
|
|
Then finally enable NetworkManager so it will be started when booted
|
|
`systemctl enable NetworkManager`
|
|
|
|
Installing lvm support
|
|
`pacman -S lvm2`
|
|
|
|
To ensure boot process support our configuration, we have to modify a config file
|
|
`nano /etc/mkinitcpio.conf`
|
|
now using Ctrl+W find the `HOOKS` which is not commented. Between block and filesystems word,
|
|
add `lvm2` . if used encryption then add `encrypt lvm2`.
|
|
|
|
|
|
- Resizing partition
|
|
`lvdisplay` and `vgdisplay`
|
|
|
|
Shrink LV
|
|
If something goes wrong with length of partition then u need to resize it
|
|
`umount /dev/VG_NAME/lv_home` # Unmount the LV (replace VG_NAME with your volume group)
|
|
`e2fsck -f /dev/volgroup0/lv_home` # to check file system consistency and check for errors,bad block.
|
|
`resize2fs /dev/VG_NAME/lv_home NEW_SIZE` # Shrink the filesystem
|
|
`lvreduce -L NEW_SIZE /dev/VG_NAME/lv_home` # Shrink the logical volume
|
|
|
|
Extend LV
|
|
`lvextend -L +NEW_SIZE /dev/VG_NAME/lv_root` # Extend the logical volume
|
|
or
|
|
`lvextend -l +100%FREE /dev/VG_NAME/lv_root`
|
|
`e2fsck -f /dev/volgroup0/lv_root`
|
|
`resize2fs /dev/VG_NAME/lv_root` # Resize the filesystem to use the new space
|
|
|
|
- Initramfs
|
|
To take all these setups and option take effect use this
|
|
`mkinitcpio -p linux`
|
|
`mkinitcpio -p linux-lts`(As this was also installed)
|
|
Then set the locale by
|
|
`nano /etc/locale.gen`
|
|
Then choose en us and uncomment it
|
|
`locale-gen`
|
|
|
|
Updating password
|
|
`passwd` then type password to set it
|
|
|
|
Creating standard user
|
|
`useradd -m -g users -G wheel hvm`
|
|
`-m` means creating home directory for the user, `-g` represents initial login group, `-G` are other supplementary groups. `hvm` is user name.
|
|
Then set password for this user
|
|
`passwd hvm` and set password.
|
|
After this we dont have to use root account always, instead we can use sudo
|
|
|
|
Now we need to associate wheel group with sudo
|
|
`EDITOR=nano visudo`
|
|
`visudo` is a dedicated command to modify sudo priviledges
|
|
Scroll down and search for `%wheel ALL=(ALL:ALL) ALL` and uncomment it and save the file.
|
|
Now user can use sudo to run administrative task.
|
|
|
|
- Installing GRUB
|
|
Its purpose is to boot the OS without bootable media like USB or CD.
|
|
- For non-UEFI(BIOS)
|
|
Install this:
|
|
`pacman -S grub dosfstools os-prober mtools`
|
|
and finally
|
|
`grub-install --target=i386-pc --recheck /dev/sda`
|
|
|
|
- For UEFI install these
|
|
`pacman -S grub efibootmgr dosfstools os-prober mtools`
|
|
|
|
`mkdir /boot/EFI`
|
|
`mount /dev/sda1 /boot/EFI`
|
|
and finally
|
|
`grub-install --target=x86_64-efi --bootloader-id=grub_uefi --recheck`
|
|
|
|
Check if grub exists by this:
|
|
`ls -l /boot/grub`
|
|
|
|
- Others
|
|
`cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo`
|
|
- With encryption
|
|
`nano /etc.default/grub` then uncomment `GRUB_ENABLE_CRYPTODISK=y`
|
|
and edit the line
|
|
#add this GRUB_CMDLINE_LINUX_DEFAULT="cryptodevice=/dev/sda3:volgroup0:allow-discards loglevel=3 quiet"
|
|
|
|
- Generate grub config file
|
|
`grub-mkconfig -o /boot/grub/grub.cfg`
|
|
Finally
|
|
`exit` and `umount -a` (to unmount everything)
|
|
Finally `reboot`
|
|
|
|
### Post install tweeks
|
|
- Creating swap file(not partition)
|
|
`su`
|
|
`cd /root`
|
|
The dd command in Linux is a versatile utility used for copying and converting files, including data from files, devices, partitions, or even raw disk images. The command's name, "dd," stands for "data duplicator."
|
|
`dd if=/dev/zero of=/swapfile bs=1M count=1024 status=progress`
|
|
Changing permissions of swapfile
|
|
`chmod 600 /swapfile`
|
|
Formatting it to swap
|
|
`mkswap /swapfile`
|
|
Backing up copy of fstab file as we going to edit it
|
|
`cp /etc/fstab /etc/fstab.bak`
|
|
Editing it
|
|
`echo '/swapfile none swap sw 0 0' | tee -a /etc/fstab`
|
|
It will add the line
|
|
|
|
`free -m` to check is swap is there
|
|
`mount -a`(if it runs means no error)
|
|
|
|
To activate swap
|
|
`swapon -a` and check it with `free -m`
|
|
|
|
- Setting time zone
|
|
Listing it
|
|
`timedatectl list-timezones`
|
|
Setting it
|
|
`timedatectl set-timezone <from_list>`
|
|
Enabling it
|
|
`systemctl enable systemd-timesyncd`
|
|
|
|
Setting host name
|
|
`hostnamectl set-hostname archhost` here 'archhost' is host name
|
|
Editing hosts file
|
|
`nano /etc/hosts`
|
|
and add
|
|
```
|
|
127.0.0.1 localhost
|
|
127.0.1.1 archhost
|
|
```
|
|
and save it
|
|
To check it
|
|
`hostnamectl`
|
|
This image will be the output
|
|
|
|
|
|

|
|
|
|
**Installing micro code for CPU**(optional)
|
|
AMD CPU
|
|
`pacman -S amd-ucode`
|
|
or
|
|
Intel CPU
|
|
`pacman -S intel-ucode`
|
|
|
|
- **GUI**
|
|
- Installing xorg
|
|
`pacman -S xorg-server`
|
|
- Installing video driver
|
|
For Intel or AMD GPU
|
|
`pacman -S mesa`
|
|
For NVIDIA GPU
|
|
`pacman -S nvidia-lts nvidia`
|
|
For VBox
|
|
`pacman -S virtualbox-guest-utils xf86-video-vmware`
|
|
and enable vbox extension
|
|
`systemctl enable vboxservice`
|
|
For QEMU, this might improve performance
|
|
`sudo pacman -S xf86-video-qxl
|
|
`
|
|
And configure it too
|
|
`sudo mkdir -p /etc/X11/xorg.conf.d`
|
|
`sudo nano /etc/X11/xorg.conf.d/20-qxl.conf
|
|
`
|
|
Type this
|
|
```
|
|
Section "Device"
|
|
Identifier "qxl"
|
|
Driver "qxl"
|
|
Option "AccelMethod" "glamor"
|
|
EndSection
|
|
|
|
```
|
|
and save it
|
|
|
|
|
|
- Installing Desktop Environment
|
|
- GNOME
|
|
`pacman -S GNOME`
|
|
it will store many dependencies as its a package group
|
|
Some other optional
|
|
`pacman -S gnome-tweaks` this will give more control over the environment
|
|
|
|
Enable display manager
|
|
`systemctl enable gdm`
|
|
This will enable login screen
|
|
Specify the language in Region and Language section else terminal wont open
|
|
- Plasma
|
|
`pacman -S plasma-meta kde-applications`
|
|
Enable display manager
|
|
`systemctl enable sddm`
|
|
- Xfce
|
|
`pacman -S xfce4 xfce4-goodies`
|
|
Install display manager
|
|
`pacman -S lightdm lightdm-gtk-greeter`
|
|
Enabling it
|
|
`systemctl enable lightdm`
|
|
- Packages in xfce
|
|
: There are 15 members in group xfce4:
|
|
:: Repository extra
|
|
```
|
|
1) exo 2) garcon 3) thunar 4) thunar-volman 5) tumbler
|
|
6) xfce4-appfinder 7) xfce4-panel 8) xfce4-power-manager 9) xfce4-session
|
|
10) xfce4-settings 11) xfce4-terminal 12) xfconf 13) xfdesktop 14) xfwm4
|
|
15) xfwm4-themes
|
|
Enter a selection (default=all):
|
|
:: There are 36 members in group xfce4-goodies:
|
|
:: Repository extra
|
|
|
|
1) mousepad 2) parole 3) ristretto 4) thunar-archive-plugin
|
|
5) thunar-media-tags-plugin 6) xfburn 7) xfce4-artwork
|
|
8) xfce4-battery-plugin 9) xfce4-clipman-plugin 10) xfce4-cpufreq-plugin
|
|
11) xfce4-cpugraph-plugin 12) xfce4-dict 13) xfce4-diskperf-plugin
|
|
14) xfce4-eyes-plugin 15) xfce4-fsguard-plugin 16) xfce4-genmon-plugin
|
|
17) xfce4-mailwatch-plugin 18) xfce4-mount-plugin 19) xfce4-mpc-plugin
|
|
20) xfce4-netload-plugin 21) xfce4-notes-plugin 22) xfce4-notifyd
|
|
23) xfce4-pulseaudio-plugin 24) xfce4-screensaver 25) xfce4-screenshooter
|
|
26) xfce4-sensors-plugin 27) xfce4-smartbookmark-plugin
|
|
28) xfce4-systemload-plugin 29) xfce4-taskmanager
|
|
30) xfce4-time-out-plugin 31) xfce4-timer-plugin 32) xfce4-verve-plugin
|
|
33) xfce4-wavelan-plugin 34) xfce4-weather-plugin
|
|
35) xfce4-whiskermenu-plugin 36) xfce4-xkb-plugin
|
|
```
|
|
|
|
as
|
|
|
|
|
|
|
|
|
|
|