Added a basic setup script for sandboxes
This commit is contained in:
parent
c814955afc
commit
070a5dfe15
132
scripts/sandbox-install
Normal file
132
scripts/sandbox-install
Normal file
@ -0,0 +1,132 @@
|
||||
#!/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 <<EOF
|
||||
# Disable history in the shell
|
||||
set +o history
|
||||
|
||||
# Set the timezone
|
||||
ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime
|
||||
|
||||
# Set the hardware clock time standard
|
||||
hwclock --systohc
|
||||
|
||||
# Generate the locales
|
||||
sed -i "s/#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/" /etc/locale.gen
|
||||
sed -i "s/#fr_FR.UTF-8 UTF-8/fr_FR.UTF-8 UTF-8/" /etc/locale.gen
|
||||
locale-gen
|
||||
|
||||
# Set the default locale
|
||||
echo "LANG=en_US.UTF-8" > /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=/usr/bin/fstrim -va
|
||||
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
|
Loading…
Reference in New Issue
Block a user