archlinux: Add back install scripts

Although I removed install scripts in a previous commit, with the
current structure of this repository, it makes sense to include
them once again.
This commit is contained in:
Donovan Glover 2018-10-31 11:31:40 -04:00
parent 573257c518
commit 8056132e7b
No known key found for this signature in database
GPG Key ID: EA7408A77AE1BE65
4 changed files with 142 additions and 0 deletions

33
.archlinux/001-preinstall Normal file
View File

@ -0,0 +1,33 @@
#!/bin/sh
#
# This script assumes you already have an active internet connection
# (preferably through Ethernet).
#
# https://wiki.archlinux.org/index.php/Installation_guide
set -xe
# Sync the time with one online before doing anything
timedatectl set-ntp true
# Make a DOS partition table with one primary ext4 partition and
# enable boot for it. Then, create a primary swap partition with
# the remaining disk space.
parted /dev/sda mklabel msdos
parted /dev/sda mkpart primary ext4 1MiB 60GiB
parted /dev/sda set 1 boot on
parted /dev/sda mkpart primary linux-swap 60GiB 100%
# Format sda1 with ext4 and sda2 with swap
mkfs -t ext4 /dev/sda1
mkswap /dev/sda2
# Enable the swap partition
swapon /dev/sda2
# Mount the newly created file system (/dev/sda1) to /mnt.
mount /dev/sda1 /mnt

13
.archlinux/002-install Normal file
View File

@ -0,0 +1,13 @@
#!/bin/sh
#
# Install the base packages to the mounted partition (the newly
# created filesystem).
#
# We also install grub and fish since grub is the boot loader
# and fish is the preferred shell.
#
# https://wiki.archlinux.org/index.php/Installation_guide
set -xe
pacstrap /mnt base base-devel grub fish

61
.archlinux/003-configure Normal file
View File

@ -0,0 +1,61 @@
#!/bin/sh
#
# Once this script finishes, change the root password with passwd,
# then unmount /mnt (with umount) and restart the system.
#
# https://wiki.archlinux.org/index.php/Installation_guide
set -xe
echo -n "Enter a hostname for this machine: "
read HOSTNAME
# Generate the fstab file (so the filesystem is mounted on boot)
genfstab -U /mnt > /mnt/etc/fstab
# Set the timezone
arch-chroot /mnt ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime
# Generate /etc/adjtime
arch-chroot /mnt hwclock --systohc
# Set the hostname
echo "$HOSTNAME" > /mnt/etc/hostname
# Configure the hosts file (if your system has a permanent IP address, use that instead of 127.0.1.1)
echo "127.0.0.1 localhost" >> /mnt/etc/hosts
echo "::1 localhost" >> /mnt/etc/hosts
echo "127.0.1.1 $HOSTNAME.localdomain $HOSTNAME" >> /mnt/etc/hosts
# Set the language to English and use the en_US.UTF-8 locale.
echo "LANG=en_US.UTF-8" > /mnt/etc/locale.conf
echo "en_US.UTF-8 UTF-8" > /mnt/etc/locale.gen
# Generate the locale.
arch-chroot /mnt locale-gen
# Explicitly set the keymap to US.
echo "KEYMAP=us" > /mnt/etc/vconsole.conf
# Change the terminal font to a larger one (`latarcyrheb-sun32` is also an option)
echo "FONT=ter-132n" >> /mnt/etc/vconsole.conf
# Install grub to the primary partition.
arch-chroot /mnt grub-install /dev/sda
# Prevent the GRUB window from showing at boot, ideal for single OS machines (undo with chroot and mkconfig)
sed -i '/GRUB_TIMEOUT/c\GRUB_TIMEOUT=0' /mnt/etc/default/grub
# This should make the startup process not output anything (not tested)
sed -i '/GRUB_CMDLINE_LINUX_DEFAULT/c\GRUB_CMDLINE_LINUX_DEFAULT="quiet show_status=0 rd.udev.log-priority=3 loglevel=3"' /mnt/etc/default/grub
# Make the configuration file for grub.
arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
# Change the shell of the root account to fish.
arch-chroot /mnt chsh -s /usr/bin/fish
# Save our hardware information with mkinitcpio. This creates
# an initial ramdisk environment that allows us to boot the
# Linux kernel.
arch-chroot /mnt mkinitcpio -p linux

View File

@ -0,0 +1,35 @@
#!/bin/sh
#
# Common post-install system configuration that doesn't involve any
# external packages (besides fish)
#
# https://wiki.archlinux.org/index.php/General_recommendations
set -xe
echo -n "Enter a username for the local account with administrative rights: "
read USERNAME
# Start and enable the DHCP client daemon service
systemctl start dhcpcd.service
systemctl enable dhcpcd.service
# Set the timezone with systemd, and sync it periodically with a remote server
timedatectl set-timezone America/New_York
timedatectl set-ntp true
# Change the systemd wait time from 90s to 30s, mitigating a potential hang at shutdown
echo "DefaultTimeoutStartSec=30s" >> /etc/systemd/system.conf
echo "DefaultTimeoutStopSec=30s" >> /etc/systemd/system.conf
# Enable colors in pacman by uncommenting the Color line.
sed -i '/Color/s/^#//g' /etc/pacman.conf
# Give users in the wheel group permission to use sudo
echo "%wheel ALL=(ALL) ALL" >> /etc/sudoers
# Create a new user account with sudo privileges and the fish shell.
arch-chroot /mnt useradd -m -g users -G wheel -s /usr/bin/fish "$USERNAME"
# Then, set the password equal to the username (change this later).
echo "$USERNAME:$USERNAME" | chpasswd