79 lines
2.1 KiB
Bash
Executable file
79 lines
2.1 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# linux-deployment-scripts
|
|
# Copyright (C) 2024 VM-Experiments
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
trap '' SIGINT SIGTERM
|
|
|
|
parted -s /dev/sda mklabel msdos
|
|
parted -s /dev/sda mkpart primary linux-swap 0% 2GiB
|
|
parted -s /dev/sda mkpart primary ext4 2GiB 100%
|
|
|
|
mkswap /dev/sda1
|
|
mkfs.ext4 /dev/sda2
|
|
|
|
mount /dev/sda2 /mnt
|
|
swapon /dev/sda1
|
|
|
|
tar -xzvf /rootfs.tar.gz -C /mnt
|
|
|
|
genfstab -U /mnt >>/mnt/etc/fstab
|
|
|
|
mount --bind /dev /mnt/dev
|
|
mount --bind /proc /mnt/proc
|
|
mount --bind /sys /mnt/sys
|
|
|
|
if command -v grub2-mkconfig &>/dev/null; then
|
|
chroot /mnt /bin/bash -c "grub2-mkconfig -o /boot/grub/grub.cfg"
|
|
elif command -v grub-mkconfig &>/dev/null; then
|
|
chroot /mnt /bin/bash -c "grub-mkconfig -o /boot/grub/grub.cfg"
|
|
fi
|
|
|
|
if command -v grub2-install &>/dev/null; then
|
|
chroot /mnt /bin/bash -c "grub2-install /dev/sda"
|
|
elif command -v grub-install &>/dev/null; then
|
|
chroot /mnt /bin/bash -c "grub-install /dev/sda"
|
|
fi
|
|
|
|
while true; do
|
|
read -p "Enter a username (lowercase letters, digits, underscores and hyphens): " username
|
|
chroot /mnt /bin/bash -c "useradd -m '$username'"
|
|
|
|
if [ $? -eq 0 ]; then
|
|
break
|
|
fi
|
|
done
|
|
|
|
while true; do
|
|
chroot /mnt /bin/bash -c "passwd '$username'"
|
|
|
|
if [ $? -eq 0 ]; then
|
|
break
|
|
fi
|
|
done
|
|
|
|
while true; do
|
|
read -p "Enter the hostname: " hostname
|
|
chroot /mnt /bin/bash -c "echo $hostname > /etc/hostname"
|
|
|
|
if [ $? -eq 0 ]; then
|
|
break
|
|
fi
|
|
done
|
|
|
|
umount -R /mnt
|
|
|
|
reboot
|