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.

Revisions

  1. twheel created this gist Sep 28, 2015.
    119 changes: 119 additions & 0 deletions install-arch.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,119 @@
    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...