From 4230cb2880ee35f5c519487f12c093731ea22dfd Mon Sep 17 00:00:00 2001 From: maride Date: Tue, 9 Jul 2024 16:10:04 +0200 Subject: [PATCH] Init --- .gitignore | 1 + arch.pkr.hcl | 33 +++++++++++++++++++++++++++++++++ deliver/00-wired.network | 6 ++++++ scripts/00-packeys.sh | 5 +++++ scripts/10-disk.sh | 20 ++++++++++++++++++++ scripts/20-install.sh | 4 ++++ scripts/30-configure.sh | 27 +++++++++++++++++++++++++++ scripts/40-bootloader.sh | 5 +++++ 8 files changed, 101 insertions(+) create mode 100644 .gitignore create mode 100644 arch.pkr.hcl create mode 100644 deliver/00-wired.network create mode 100644 scripts/00-packeys.sh create mode 100644 scripts/10-disk.sh create mode 100644 scripts/20-install.sh create mode 100644 scripts/30-configure.sh create mode 100644 scripts/40-bootloader.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..29e0566 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +builds/ diff --git a/arch.pkr.hcl b/arch.pkr.hcl new file mode 100644 index 0000000..5960072 --- /dev/null +++ b/arch.pkr.hcl @@ -0,0 +1,33 @@ +source "virtualbox-iso" "arch-vbox-efi" { + guest_os_type = "Linux_64" + iso_urls = ["https://packages.oth-regensburg.de/archlinux/iso/2024.07.01/archlinux-2024.07.01-x86_64.iso"] + iso_checksum = "sha256:398dceea2d04767fbb8b61a9e824f2c8f5eacf62b2cb5006fd63321d978d48bc" + firmware = "efi" + memory = "1024" + cpus = "2" + disk_size = "5000" + boot_wait = "5s" + boot_command = [ + "", + "passwdpackerpacker", + "top" + ] + ssh_username = "root" + ssh_password = "packer" + shutdown_command = "echo 'packer' | sudo -S shutdown -P now" + output_directory = "builds/${source.name}-${source.type}" +} + +build { + sources = ["sources.virtualbox-iso.arch-vbox-efi"] + + provisioner "file" { + source = "deliver" + destination = "/tmp/" + } + + provisioner "shell" { + scripts = [ "scripts/00-packeys.sh", "scripts/10-disk.sh", "scripts/20-install.sh", "scripts/30-configure.sh", "scripts/40-bootloader.sh" ] + expect_disconnect = "true" + } +} diff --git a/deliver/00-wired.network b/deliver/00-wired.network new file mode 100644 index 0000000..00df07f --- /dev/null +++ b/deliver/00-wired.network @@ -0,0 +1,6 @@ +[Match] +Name=enp* ens* + +[Network] +DHCP=yes +DNS=1.1.1.1 diff --git a/scripts/00-packeys.sh b/scripts/00-packeys.sh new file mode 100644 index 0000000..ec57d87 --- /dev/null +++ b/scripts/00-packeys.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +dirmngr & +pacman-key --init +pacman-key --populate diff --git a/scripts/10-disk.sh b/scripts/10-disk.sh new file mode 100644 index 0000000..ac0007e --- /dev/null +++ b/scripts/10-disk.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Partition +echo -e 'g\nn\n1\n2048\n+300M\nn\n2\n\n\np\nw' | fdisk /dev/sda +sync + +# Format +mkfs.fat -F32 /dev/sda1 +mkfs.ext4 /dev/sda2 +sync + +# Mount +mount /dev/sda2 /mnt +mkdir /mnt/boot +mount /dev/sda1 /mnt/boot +sync + +# Display +df -h +mount diff --git a/scripts/20-install.sh b/scripts/20-install.sh new file mode 100644 index 0000000..15cce56 --- /dev/null +++ b/scripts/20-install.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +pacstrap -K /mnt base linux-hardened linux-firmware grub efibootmgr sudo vim + diff --git a/scripts/30-configure.sh b/scripts/30-configure.sh new file mode 100644 index 0000000..fc21e81 --- /dev/null +++ b/scripts/30-configure.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# generate fstab +genfstab -U /mnt >> /mnt/etc/fstab + +# Set time +arch-chroot /mnt ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime +arch-chroot /mnt hwclock --systohc + +# Localize +echo -e 'en_US.UTF-8 UTF-8\nde_DE.UTF-8 UTF-8' > /mnt/etc/locale.gen +arch-chroot /mnt locale-gen +echo 'LANG=de_DE.UTF-8' > /mnt/etc/locale.conf +echo 'KEYMAP=de-latin1' > /mnt/etc/vconsole.conf + +# pacman easter egg :) +sed -i 's/\[options\]/\[options\]\nILoveCandy/g' /mnt/etc/pacman.conf + +# set user and password, setup sudo +arch-chroot /mnt groupadd sudo +sed -i 's/# \%sudo/\%sudo/g' /mnt/etc/sudoers +arch-chroot /mnt useradd --create-home --password '$1$yChoD0uK$A606S7MGjw5OBvH4ZpIXO/' -G sudo user # user:user + +# network +cp /tmp/deliver/00-wired.network /mnt/etc/systemd/network/00-wired.network +chmod 644 /mnt/etc/systemd/network/00-wired.network +arch-chroot /mnt systemctl enable systemd-networkd diff --git a/scripts/40-bootloader.sh b/scripts/40-bootloader.sh new file mode 100644 index 0000000..b95ca98 --- /dev/null +++ b/scripts/40-bootloader.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +arch-chroot /mnt grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=BOOT +cp /mnt/boot/EFI/BOOT/{grubx64.efi,BOOTX64.EFI} 2>&1 || true +arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg