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