Table of Contents
Archlinux - Install using GPT, LVM and RAID1
Boot and remove old partitions, LVM and RAID config
- Boot from ISO
- Remove previous LVM and RAID config.
- Unmount used filesystems (and swap).
- Deactivate volume group:
vgchange -a n rootvg
- Remove volume group:
vgremove rootvg
- Remove previous RAID array:
mdadm --zero-superblock /dev/sda mdadm --zero-superblock /dev/sdb
Configure network
- Configure static networking. Edit /etc/netctl/ethernet-wired,
- Start network:
netctl start ethernet-static
- Edit mirrorlist /etc/pacman.d/mirrorlist.
- Update package manager database:
pacman -Syy
Create partitions
When replacing a failed disk of a RAID, the new disk has to be exactly the same size as the failed disk or bigger — otherwise the array recreation process will not work. Even hard drives of the same manufacturer and model can have small size differences. By leaving a little space at the end of the disk unallocated one can compensate for the size differences between drives, which makes choosing a replacement drive model easier. Therefore, it is good practice to leave about 100 MB of unallocated space at the end of the disk.
On a BIOS/GPT configuration a BIOS boot partition is required. GRUB embeds its core.img into this partition.
- Install gptfdisk:
pacman -S gptfdisk
- Create a mebibyte {+1MiB with gdisk) BIOS boot partition on both disks with no file system and type ef02.
gdisk /dev/sda o #create empty new GUID partition table. n #add new partition. 1 #partition number 1. 2048 #default first sector. +1MiB #BIOS boot partition size. ef02 #partition type. w #write changes and exit.
- Create a partition for software RAID on both disks, leave approx 100MB at end of disk:
gdisk /dev/sda n #add new partition. 2 #partition number 2. 4096 #default next sector. +59GB #Partition size. fd00 #partition type. w #write changes and exit.
Create RAID1 array
- Build two device array:
mdadm --create --verbose --level=1 --metadata=1.2 --raid-devices=2 /dev/md0 /dev/sda2 /dev/sdb21
- Monitor status:
cat /proc/mdstat
- Copy array config to config file:
mdadm --detail --scan >> /etc/mdadm.conf
- Assemble the array:
mdadm --assemble --scan
Partition, create VG, LVs and format the filesystem device
- Create LVM partition on RAID1 device
gdisk /dev/md0 o #create empty new GUID partition table. n #add new partition. 1 #partition number 1. 2048 #default first sector. <last> #LVM partition size. 8e00 #LVM partition type. w #write changes and exit.
- Install lvm2:
pacman -S lvm2
- Create LVM physical volume:
lvmdiskscan pvcreate /dev/md0p1 pvdisplay
- Create volume group:
vgcreate vg_raid /dev/md0p1 vgdisplay
- Create logical volumes:
lvcreate -L 8G vg_raid -n lv_root lvcreate -L 1G vg_raid -n lv_home lvcreate -L 4G vg_raid -n lv_var lvcreate -L 500M vg_raid -n lv_boot lvcreate -L 2G vg_raid -n lv_swap
- Enable swap:
mkswap /dev/mapper/vg_raid-lv_swap swapon /dev/mapper/vg_raid-lv_swap free
- Format filesystems:
mkfs.ext4 /dev/mapper/vg_raid-lv_root mkfs.ext4 /dev/mapper/vg_raid-lv_home mkfs.ext4 /dev/mapper/vg_raid-lv_var mkfs.ext4 /dev/mapper/vg_raid-lv_boot
Mount partitions
- Mount partitions:
mount /dev/mapper/vg_raid-lv_root /mnt mkdir -p /mnt/{home,var,boot} mount /dev/mapper/vg_raid-lv_home /mnt/home mount /dev/mapper/vg_raid-lv_var /mnt/var mount /dev/mapper/vg_raid-lv_boot /mnt/boot
Start installation
- Install Archlinux!
pacstrap /mnt base
Configure the system
- Create fstab:
genfstab -p /mnt >> /mnt/etc/fstab
- Copy RAID config:
mdadm --detail --scan >> /mnt/etc/mdadm.conf
- Copy network config:
cp /etc/netctl/ethernet-static /mnt/etc/netctl
- Chroot:
arch-chroot /mnt
- Configure network:
netctl enable ethernet-static
- Set hostname:
echo computer_name > /etc/hostname
- Link correct time zone:
ln -sf /usr/share/zoneinfo/zone/subzone /etc/localtime
- Uncomment locales in /etc/locale.gen, then run:
locale-gen
- Configure locale:
echo LANG=your_locale > /etc/locale.conf
- Edit /etc/mkinitcpio.conf:
HOOKS="base udev autodetect block mdadm_udev lvm2 filesystems usbinput fsck"
- Create a new initial RAM disk:
mkinitcpio -p linux
- Set root password:
passwd root
- Install additional tools:
pacman -S gdisk
Install boot loader
Make sure you have chrooted into the installed system before installing grub.
- Install grub:
pacman -S grub grub-install --target=i386-pc --recheck --debug /dev/sda grub-install --target=i386-pc --recheck --debug /dev/sdb grub-mkconfig -o /boot/grub/grub.cfg
Reboot
- Exit chroot, unmount filesystem:
exit umount -R /mnt
- Reboot.
Post install
- Install OpenSSH:
pacman -S openssh systemctl enable sshd.service systemctl start sshd.service useradd -m -G wheel -s /bin/bash benst passwd <localuser>
- Disable SSH root login, edit /etc/ssh/sshd_config and restart sshd.
- Install additional packages:
pacman -S dnsutils hdparm smartmontools htop
- Enable TRIM for SSDs
- LVM: set issue_discards option from 0 to 1 in /etc/lvm/lvm.conf.
- Filesystem: Add 'discard' option in /etc/fstab.
- Check SSD firmware voor Crucial M4:
smartctl --all /dev/sda
- Install and configure mail forwarder:
pacman -S ssmtp # vi /etc/ssmtp/ssmtp.conf # chmod 640 /etc/ssmtp/ssmtp.conf # chown root:mail /etc/ssmtp/ssmtp.conf # gpasswd -a <mainuser> mail # # Test # echo test | mail -v -s "testing ssmtp setup" tousername@somedomain.com
- RAID monitoring:
# vi /etc/mdadm.conf #add email address mdadm --monitor --scan -1 --test # test email systemctl start mdmonitor.service
- Install and configure NTP:
pacman -S ntp vi /etc/ntp.conf systemctl enable ntpd.service systemctl start ntpd.service ntpq -p
- Configure firewall.
- Disable IPv6 if not needed.