[Linux] Arch 安裝 script

OS:Arch Linux
官方文件

功能:安裝 Arch Linux
#!/bin/bash
# Program:
#       This program is for installing arch
# History:
# 2016/11/1 zWind First release

# use sh -n fileName to only check grammar
# use sh -x fileName to debug
# disk divide partition must be done and mount

function genSetting() 
{    
    cat <<EOF > /mnt/setting.sh
    pacman -S vim --noconfirm
    
    # set timezone
    ln -s /usr/share/zoneinfo/Asia/Taipei /etc/localtime 
    hwclock --systohc
    hwclock

    # set Locale
    vim /etc/locale.gen
    locale-gen 
    echo LANG=en_US.UTF-8 > /etc/locale.conf
    cat /etc/locale.conf

    # set hostName
    echo ${hostName} > /etc/hostname
    cat /etc/hostname
    echo "127.0.1.1 ${hostName}.localdomain ${hostName}" >> /etc/hosts
    vim /etc/hosts

    # Initramfs
    mkinitcpio -p linux 

    # set grub
    pacman -S grub --noconfirm
    grub-install --recheck ${disk}
    grub-mkconfig -o /boot/grub/grub.cfg 
    
    # change root password
    passwd

    # add user
    read -p "Please input your userName: " -t 30 userName
    userName=${userName:-${hostName}}
    useradd -m -g users ${userName}
    passwd ${userName}
    
    # exit
    exit
EOF
}

disk="/dev/sda"
bootDisk="${disk}1"
swapDisk="${disk}2"

echo "create sda1 for root and sda2 for swap"
fdisk ${disk}
test ! -e ${bootDisk} && echo "'${bootDisk}' DO NOT exist" && exit 0
test ! -e ${swapDisk} && echo "'${swapDisk}' DO NOT exist" && exit 0

mkfs.ext4 ${bootDisk}
mount ${bootDisk} /mnt
mkswap ${swapDisk}
swapon ${swapDisk}

read -p "Please input your hostName name: " -t 30 hostName
hostName=${hostName:-archTest}
export hostName

# install base
pacstrap /mnt base base-devel

# gen fstab
genfstab -p -U /mnt >> /mnt/etc/fstab
vim /mnt/etc/fstab

genSetting

# change root and run script
arch-chroot /mnt /bin/bash ./setting.sh

umount -R /mnt 
reboot 

留言