|
@@ -39,28 +39,44 @@ VAI_get_address() {
|
|
|
|
|
|
VAI_partition_disk() {
|
|
|
# Paritition Disk
|
|
|
- sfdisk "${disk}" <<EOF
|
|
|
-,$bootpartitionsize
|
|
|
-,${swapsize}K
|
|
|
-;
|
|
|
+
|
|
|
+ if [ -d /sys/firmware/efi ] ; then
|
|
|
+ VAI_info_msg "Partitioning Disk for UEFI Boot"
|
|
|
+ sfdisk "${disk}" <<EOF
|
|
|
+label: gpt
|
|
|
+,100M,U,
|
|
|
+,,L,
|
|
|
+EOF
|
|
|
+ else
|
|
|
+ VAI_info_msg "Partitioning Disk for BIOS Boot"
|
|
|
+ sfdisk "${disk}" <<EOF
|
|
|
+label: dos
|
|
|
+,,L,*
|
|
|
EOF
|
|
|
+ fi
|
|
|
}
|
|
|
|
|
|
VAI_format_disk() {
|
|
|
# Make Filesystems
|
|
|
- mkfs.ext4 -F "${disk}1"
|
|
|
- mkfs.ext4 -F "${disk}3"
|
|
|
- if [ "${swapsize}" -ne 0 ] ; then
|
|
|
- mkswap -f "${disk}2"
|
|
|
+ if [ -d /sys/firmware/efi ] ; then
|
|
|
+ mkfs.vfat -F32 "${disk}1"
|
|
|
+ mkfs.ext4 -F "${disk}2"
|
|
|
+ else
|
|
|
+ mkfs.ext4 -F "${disk}1"
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
VAI_mount_target() {
|
|
|
# Mount targetfs
|
|
|
mkdir -p "${target}"
|
|
|
- mount "${disk}3" "${target}"
|
|
|
- mkdir "${target}/boot"
|
|
|
- mount "${disk}1" "${target}/boot"
|
|
|
+
|
|
|
+ if [ -d /sys/firmware/efi ] ; then
|
|
|
+ mount "${disk}2" "${target}"
|
|
|
+ mkdir -p "${target}/boot/efi"
|
|
|
+ mount "${disk}1" "${target}/boot/efi"
|
|
|
+ else
|
|
|
+ mount "${disk}1" "${target}"
|
|
|
+ fi
|
|
|
}
|
|
|
|
|
|
VAI_install_xbps_keys() {
|
|
@@ -70,7 +86,12 @@ VAI_install_xbps_keys() {
|
|
|
|
|
|
VAI_install_base_system() {
|
|
|
# Install a base system
|
|
|
- XBPS_ARCH="${XBPS_ARCH}" xbps-install -Sy -R "${xbpsrepository}" -r /mnt base-system grub
|
|
|
+ _grub="grub"
|
|
|
+ if [ -d /sys/firmware/efi ] ; then
|
|
|
+ _grub="${_grub} grub-x86_64-efi"
|
|
|
+ fi
|
|
|
+
|
|
|
+ XBPS_ARCH="${XBPS_ARCH}" xbps-install -Sy -R "${xbpsrepository}" -r /mnt base-system ${_grub}
|
|
|
|
|
|
# Install additional packages
|
|
|
if [ -n "${pkgs}" ] ; then
|
|
@@ -80,6 +101,11 @@ VAI_install_base_system() {
|
|
|
}
|
|
|
|
|
|
VAI_prepare_chroot() {
|
|
|
+ # Mount efivars if this is an EFI system
|
|
|
+ if [ -d /sys/firmware/efi ] ; then
|
|
|
+ mount -t efivarfs none /sys/firmware/efi/efivars
|
|
|
+ fi
|
|
|
+
|
|
|
# Mount dev, bind, proc, etc into chroot
|
|
|
mount -t proc proc "${target}/proc"
|
|
|
mount --rbind /sys "${target}/sys"
|
|
@@ -103,14 +129,12 @@ VAI_configure_hostname() {
|
|
|
}
|
|
|
|
|
|
VAI_configure_rc_conf() {
|
|
|
- # Set the value of various tokens
|
|
|
- sed -i "s:Europe/Madrid:${timezone}:" "${target}/etc/rc.conf"
|
|
|
- sed -i "s:\"es\":\"${keymap}\":" "${target}/etc/rc.conf"
|
|
|
-
|
|
|
- # Activate various tokens
|
|
|
- sed -i "s:#HARDWARECLOCK:HARDWARECLOCK:" "${target}/etc/rc.conf"
|
|
|
- sed -i "s:#TIMEZONE:TIMEZONE:" "${target}/etc/rc.conf"
|
|
|
- sed -i "s:#KEYMAP:KEYMAP:" "${target}/etc/rc.conf"
|
|
|
+ if [ "${keymap}" != "us" ] ; then
|
|
|
+ sed -i "s:\"es\":\"${keymap}\":" "${target}/etc/rc.conf"
|
|
|
+ sed -i "s:#KEYMAP:KEYMAP:" "${target}/etc/rc.conf"
|
|
|
+ fi
|
|
|
+
|
|
|
+ ln -s "/usr/share/zoneinfo/${timezone}" "${target}/etc/localtime"
|
|
|
}
|
|
|
|
|
|
VAI_add_user() {
|
|
@@ -128,7 +152,7 @@ VAI_configure_grub() {
|
|
|
echo "hostonly=yes" > "${target}/etc/dracut.conf.d/hostonly.conf"
|
|
|
|
|
|
# Choose the newest kernel
|
|
|
- kernel_version="$(chroot "${target}" xbps-query linux | awk -F "[-_]" '/pkgver/ {print $2}')"
|
|
|
+ kernel_version="$(xbps-uhelper -r ${target} version linux | sed 's/_.*//')"
|
|
|
|
|
|
# Install grub
|
|
|
chroot "${target}" grub-install "${disk}"
|
|
@@ -141,14 +165,13 @@ VAI_configure_grub() {
|
|
|
VAI_configure_fstab() {
|
|
|
# Grab UUIDs
|
|
|
uuid1="$(blkid -s UUID -o value "${disk}1")"
|
|
|
- uuid2="$(blkid -s UUID -o value "${disk}2")"
|
|
|
- uuid3="$(blkid -s UUID -o value "${disk}3")"
|
|
|
-
|
|
|
- # Installl UUIDs into /etc/fstab
|
|
|
- echo "UUID=$uuid3 / ext4 defaults,errors=remount-ro 0 1" >> "${target}/etc/fstab"
|
|
|
- echo "UUID=$uuid1 /boot ext4 defaults 0 2" >> "${target}/etc/fstab"
|
|
|
- if [ "${swapsize}" -ne 0 ] ; then
|
|
|
- echo "UUID=$uuid2 swap swap defaults 0 0" >> "${target}/etc/fstab"
|
|
|
+ if [ -d /sys/firmware/efi ] ; then
|
|
|
+ uuid2="$(blkid -s UUID -o value "${disk}2")"
|
|
|
+ echo "UUID=$uuid1 /boot/efi vfat defaults 0 0" >> "${target}/etc/fstab"
|
|
|
+ echo "UUID=$uuid2 / ext4 defaults,errors=remount-ro 0 1" >> "${target}/etc/fstab"
|
|
|
+
|
|
|
+ else
|
|
|
+ echo "UUID=$uuid1 / ext4 defaults,errors=remount-ro 0 1" >> "${target}/etc/fstab"
|
|
|
fi
|
|
|
}
|
|
|
|
|
@@ -195,11 +218,10 @@ VAI_end_action() {
|
|
|
|
|
|
VAI_configure_autoinstall() {
|
|
|
# -------------------------- Setup defaults ---------------------------
|
|
|
- bootpartitionsize="500M"
|
|
|
- disk="$(lsblk -ipo NAME,TYPE,MOUNTPOINT | awk '{if ($2=="disk") {disks[$1]=0; last=$1} if ($3=="/") {disks[last]++}} END {for (a in disks) {if(disks[a] == 0){print a; break}}}')"
|
|
|
- hostname="$(ip -4 -o -r a | awk -F'[ ./]' '{x=$7} END {print x}')"
|
|
|
- # XXX: Set a manual swapsize here if the default doesn't fit your use case
|
|
|
- swapsize="$(awk -F"\n" '/MemTotal/ {split($0, b, " "); print b[2] }' /proc/meminfo)";
|
|
|
+ disk_expr=".blockdevices[0].name"
|
|
|
+ disk="/dev/$(lsblk --json | jq -r "$disk_expr")"
|
|
|
+ hostname_expr='[.[]|select(.operstate=="UP").addr_info.[]|select(.scope=="global").local].[0]'
|
|
|
+ hostname="$(ip --json -r a | jq -r "$hostname_expr")"
|
|
|
target="/mnt"
|
|
|
timezone="America/Chicago"
|
|
|
keymap="us"
|
|
@@ -256,7 +278,7 @@ VAI_main() {
|
|
|
VAI_print_step "Configuring installer"
|
|
|
VAI_configure_autoinstall
|
|
|
|
|
|
- VAI_print_step "Configuring disk using scheme 'Atomic'"
|
|
|
+ VAI_print_step "Configuring disk"
|
|
|
VAI_partition_disk
|
|
|
VAI_format_disk
|
|
|
|
|
@@ -307,4 +329,3 @@ if getargbool 0 auto ; then
|
|
|
# Very important to release this before returning to dracut code
|
|
|
set +e
|
|
|
fi
|
|
|
-
|