#!/bin/bash # This script is used to install and setup a sandbox. PACKAGES=( "base" "base-devel" "linux" "linux-firmware" "syslinux" "vi" "vim" "nano" "micro" "neovim" "emacs" "bash-completion" "btop" "gdu" "tmux" "neofetch" "git" "openssh" "curl" "wget" "rsync" "unzip" "zip" ) SWAP_SIZE=16G # Enable time synchronization timedatectl set-ntp true # Wait for the clock to be synchronized while :; do timedatectl status | grep "synchronized: yes" && break sleep 1 done # Wait a few seconds for everything to be ready sleep 20 # Switch the disk to MBR without confirmation parted /dev/sda mklabel msdos --script # Create the swap and root partitions parted /dev/sda mkpart primary linux-swap 1MiB $SWAP_SIZE --script parted /dev/sda mkpart primary ext4 $SWAP_SIZE 100% --script # Format the partitions mkswap /dev/sda1 mkfs.ext4 /dev/sda2 -F # Mount the partitions swapon /dev/sda1 mount /dev/sda2 /mnt # Enable parallel downloads in pacman sed -i "s/#ParallelDownloads = 5/ParallelDownloads = 16/" /etc/pacman.conf # Update the keyring pacman -Sy --noconfirm archlinux-keyring # Install the base system pacstrap -K /mnt "${PACKAGES[@]}" # Generate the fstab file genfstab -U /mnt >>/mnt/etc/fstab # Chroot into the new system arch-chroot /mnt /bin/bash < /etc/locale.conf # Set the keyboard layout echo "KEYMAP=fr-latin1" > /etc/vconsole.conf # Set the hostname echo "sandbox" > /etc/hostname # Set the root password echo "root:root" | chpasswd # Install syslinux syslinux-install_update -iam # Configure the network for DHCP echo "[Match] Name=en* [Network] DHCP=yes " > /etc/systemd/network/20-wired.network # Enable automatic root login in the console mkdir -p /etc/systemd/system/getty@tty1.service.d/ echo "[Service] ExecStart= ExecStart=-/usr/bin/agetty --autologin root --noclear %I \$TERM " > /etc/systemd/system/getty@tty1.service.d/autologin.conf # Create a service that runs fstrim -va on startup and shutdown echo "[Unit] Description=Discard unused blocks on the root filesystem After=multi-user.target [Service] Type=oneshot ExecStart= ExecStop=/usr/bin/fstrim -va RemainAfterExit=yes [Install] WantedBy=multi-user.target " > /etc/systemd/system/fstrim.service # Create the syslinux configuration file, to instantly boot into the system echo "DEFAULT arch LABEL arch LINUX ../vmlinuz-linux INITRD ../initramfs-linux.img APPEND root=/dev/sda2 rw resume=/dev/sda1 " > /boot/syslinux/syslinux.cfg # Enable the services systemctl enable systemd-networkd.service systemctl enable systemd-resolved.service systemctl enable systemd-timesyncd.service systemctl enable fstrim.service EOF # Unmount the partitions swapoff /dev/sda1 umount -R /mnt