Ben's notes

Linux, Unix, network, radio...

User Tools

Site Tools


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:
    pvcreate /dev/md0p1
  • Create volume group:
    vgcreate vg_raid /dev/md0p1
  • 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
  • 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:
  • 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


  • Exit chroot, unmount filesystem:
    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"
  • 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.
archlinux_gpt_lvm_raid1.txt · Last modified: 2021/10/09 15:14 by