Skip to content

Commit df8a44e

Browse files
the-maldridgeclassabbyamp
authored andcommitted
dracut/autoinstaller: Handle UEFI systems
1 parent 4e61e60 commit df8a44e

2 files changed

Lines changed: 46 additions & 33 deletions

File tree

dracut/autoinstaller/autoinstall.cfg

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,6 @@
88
# default: the first disk that isn't the installer
99
#disk=/dev/hda
1010

11-
# bootpartitionsize: controls how large the boot partition will be
12-
# default: 500M
13-
#bootpartitionsize=500M
14-
15-
# swapsize: how large should the swap partition be
16-
# default: equal to the installed physical memory
17-
#swapsize=
18-
1911
# ===
2012
# XBPS Configuration
2113
# ===

dracut/autoinstaller/install.sh

Lines changed: 46 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -39,28 +39,44 @@ VAI_get_address() {
3939

4040
VAI_partition_disk() {
4141
# Paritition Disk
42-
sfdisk "${disk}" <<EOF
43-
,$bootpartitionsize
44-
,${swapsize}K
45-
;
42+
43+
if [ -d /sys/firmware/efi ] ; then
44+
VAI_info_msg "Partitioning Disk for UEFI Boot"
45+
sfdisk "${disk}" <<EOF
46+
label: gpt
47+
,100M,U,
48+
,,L,
49+
EOF
50+
else
51+
VAI_info_msg "Partitioning Disk for BIOS Boot"
52+
sfdisk "${disk}" <<EOF
53+
label: dos
54+
,,L,*
4655
EOF
56+
fi
4757
}
4858

4959
VAI_format_disk() {
5060
# Make Filesystems
51-
mkfs.ext4 -F "${disk}1"
52-
mkfs.ext4 -F "${disk}3"
53-
if [ "${swapsize}" -ne 0 ] ; then
54-
mkswap -f "${disk}2"
61+
if [ -d /sys/firmware/efi ] ; then
62+
mkfs.vfat -F32 "${disk}1"
63+
mkfs.ext4 -F "${disk}2"
64+
else
65+
mkfs.ext4 -F "${disk}1"
5566
fi
5667
}
5768

5869
VAI_mount_target() {
5970
# Mount targetfs
6071
mkdir -p "${target}"
61-
mount "${disk}3" "${target}"
62-
mkdir "${target}/boot"
63-
mount "${disk}1" "${target}/boot"
72+
73+
if [ -d /sys/firmware/efi ] ; then
74+
mount "${disk}2" "${target}"
75+
mkdir -p "${target}/boot/efi"
76+
mount "${disk}1" "${target}/boot/efi"
77+
else
78+
mount "${disk}1" "${target}"
79+
fi
6480
}
6581

6682
VAI_install_xbps_keys() {
@@ -70,7 +86,12 @@ VAI_install_xbps_keys() {
7086

7187
VAI_install_base_system() {
7288
# Install a base system
73-
XBPS_ARCH="${XBPS_ARCH}" xbps-install -Sy -R "${xbpsrepository}" -r /mnt base-system grub
89+
_grub="grub"
90+
if [ -d /sys/firmware/efi ] ; then
91+
_grub="${_grub} grub-x86_64-efi"
92+
fi
93+
94+
XBPS_ARCH="${XBPS_ARCH}" xbps-install -Sy -R "${xbpsrepository}" -r /mnt base-system ${_grub}
7495

7596
# Install additional packages
7697
if [ -n "${pkgs}" ] ; then
@@ -80,6 +101,11 @@ VAI_install_base_system() {
80101
}
81102

82103
VAI_prepare_chroot() {
104+
# Mount efivars if this is an EFI system
105+
if [ -d /sys/firmware/efi ] ; then
106+
mount -t efivarfs none /sys/firmware/efi/efivars
107+
fi
108+
83109
# Mount dev, bind, proc, etc into chroot
84110
mount -t proc proc "${target}/proc"
85111
mount --rbind /sys "${target}/sys"
@@ -141,14 +167,13 @@ VAI_configure_grub() {
141167
VAI_configure_fstab() {
142168
# Grab UUIDs
143169
uuid1="$(blkid -s UUID -o value "${disk}1")"
144-
uuid2="$(blkid -s UUID -o value "${disk}2")"
145-
uuid3="$(blkid -s UUID -o value "${disk}3")"
146-
147-
# Installl UUIDs into /etc/fstab
148-
echo "UUID=$uuid3 / ext4 defaults,errors=remount-ro 0 1" >> "${target}/etc/fstab"
149-
echo "UUID=$uuid1 /boot ext4 defaults 0 2" >> "${target}/etc/fstab"
150-
if [ "${swapsize}" -ne 0 ] ; then
151-
echo "UUID=$uuid2 swap swap defaults 0 0" >> "${target}/etc/fstab"
170+
if [ -d /sys/firmware/efi ] ; then
171+
uuid2="$(blkid -s UUID -o value "${disk}2")"
172+
echo "UUID=$uuid1 /boot/efi vfat defaults 0 0" >> "${target}/etc/fstab"
173+
echo "UUID=$uuid2 / ext4 defaults,errors=remount-ro 0 1" >> "${target}/etc/fstab"
174+
175+
else
176+
echo "UUID=$uuid1 / ext4 defaults,errors=remount-ro 0 1" >> "${target}/etc/fstab"
152177
fi
153178
}
154179

@@ -195,11 +220,8 @@ VAI_end_action() {
195220

196221
VAI_configure_autoinstall() {
197222
# -------------------------- Setup defaults ---------------------------
198-
bootpartitionsize="500M"
199223
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}}}')"
200224
hostname="$(ip -4 -o -r a | awk -F'[ ./]' '{x=$7} END {print x}')"
201-
# XXX: Set a manual swapsize here if the default doesn't fit your use case
202-
swapsize="$(awk -F"\n" '/MemTotal/ {split($0, b, " "); print b[2] }' /proc/meminfo)";
203225
target="/mnt"
204226
timezone="America/Chicago"
205227
keymap="us"
@@ -256,7 +278,7 @@ VAI_main() {
256278
VAI_print_step "Configuring installer"
257279
VAI_configure_autoinstall
258280

259-
VAI_print_step "Configuring disk using scheme 'Atomic'"
281+
VAI_print_step "Configuring disk"
260282
VAI_partition_disk
261283
VAI_format_disk
262284

@@ -307,4 +329,3 @@ if getargbool 0 auto ; then
307329
# Very important to release this before returning to dracut code
308330
set +e
309331
fi
310-

0 commit comments

Comments
 (0)