Skip to content

Instantly share code, notes, and snippets.

@twheel
Created September 28, 2015 13:36
Show Gist options
  • Save twheel/c7402f8246f96b4fc4a3 to your computer and use it in GitHub Desktop.
Save twheel/c7402f8246f96b4fc4a3 to your computer and use it in GitHub Desktop.
Install Arch Linux on remote server
Protocol that worked to install Arch on a remote server
Situation: host provides CentOS image but not one for Arch.
Default CentOS install includes two hard drives in a RAID 1 setup, mapped as /dev/mapper/vg-root and /dev/mapper/vg-swap
Guides:
https://wiki.archlinux.org/index.php/Remote_installation
https://wiki.archlinux.org/index.php/Install_from_existing_Linux
https://wiki.archlinux.org/index.php/Install_from_SSH
http://ordinatechnic.com/os-specific-guides/arch/archlinux-installing-from-an-existing-linux-installation
(Replace MY_HOSTNAME, MY_IP_ADDRESS, MY_DOMAIN, MY_NAMESERVER1, MY_NAMESERVER2, MY_NETWORK_NAME below with correct values.)
CentOS:
swapoff /dev/mapper/vg-swap
fdisk /dev/mapper/vg-swap
mke2fs -j /dev/mapper/vg-swap
yum -y install rng-tools
rngd -r /dev/urandom
cd /tmp
curl -O https://mirrors.kernel.org/archlinux/iso/latest/archlinux-bootstrap-2015.09.01-x86_64.tar.gz
tar xzf archlinux-bootstrap-2015.09.01-x86_64.tar.gz
cd root.x86_64
vi etc/pacman.d/mirrorlist
/bin/cp -f /etc/resolv.conf etc
mount -t proc /proc proc
mount --rbind /sys sys
mount --rbind /dev dev
chroot /tmp/root.x86_64 /bin/bash
First chroot:
pacman-key --init
pacman-key --populate archlinux
pacman -Syyu
pacman -S base
mkdir /mnt/arch
mount /dev/mapper/vg-swap /mnt/arch
pacstrap /mnt/arch base
genfstab -p /mnt/arch/ >> /mnt/arch/etc/fstab
arch-chroot /mnt/arch/
Second chroot:
passwd
pacman -S grub
echo MY_HOSTNAME > /etc/hostname
ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime
sed -i 's/#en_US/en_US/' /etc/locale.gen
locale-gen
echo LANG=en_US > /etc/locale.conf
vi /etc/mkinitcpio.conf
Add the dm_mod and raid1 modules to the MODULES list
Add the mdadm_udev and lvm2 hooks to the HOOKS list after udev
(or mdadm instead of mdadm_udev)
mkinitcpio -p linux
sed -i 's/use_lvmetad = 1/use_lvmetad = 0/' /etc/lvm/lvm.conf
grub-install --target=i386-pc --recheck /dev/sda
grub-install --target=i386-pc --recheck /dev/sdb
grub-mkconfig -o /boot/grub/grub.cfg
pacman -S openssh
systemctl enable sshd
vi /etc/ssh/sshd_config
PermitRootLogin yes # (For now)
vi /etc/systemd/network/MY_HOSTNAME.network
[Match]
Name=MY_NETWORK_NAME
[Network]
Address=MY_IP_ADDRESS
DHCP=ipv4
vi /etc/resolv.conf
search MY_DOMAIN
nameserver MY_NAMESERVER1
nameserver MY_NAMESERVER2
systemctl enable systemd-networkd
mdadm --detail --scan >> /etc/mdadm.conf
cat /etc/mdadm.conf # make sure it looks OK
exit
First chroot:
exit
CentOS:
reboot
Booted into Arch with /dev/mapper/vg-swap as /
mkfs.ext4 /dev/mapper/vg-root
mkdir /mnt/newsys
mount -t ext4 /dev/mapper/vg-root /mnt/newsys
cp -a /boot /etc /home /opt /root /srv /usr /var /mnt/newsys
cd /mnt/newsys
ln -s usr/bin bin
ln -s usr/bin sbin
ln -s usr/lib lib
ln -s usr/lib lib64
mkdir proc sys dev run
mkdir -m 1777 -p tmp
mount -t proc /proc proc
mount --rbind /sys sys
mount --rbind /dev dev
mount --rbind /run run
pacman -S arch-install-scripts
genfstab -p /mnt/newsys/ > /mnt/newsys/etc/fstab
# arch-chroot /mnt/newsys/
chroot /mnt/newsys /bin/bash
From chroot:
grub-install --target=i386-pc --recheck /dev/sda
grub-install --target=i386-pc --recheck /dev/sdb
grub-mkconfig -o /boot/grub/grub.cfg
exit
From Arch:
reboot
After reboot:
mkswap /dev/mapper/vg-swap
swapon /dev/mapper/vg-swap
Add /dev/mapper/vg-swap to /etc/fstab
Configure server...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment