From f3883f13d3df36389112f3f33d438f36a2c347e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Fri, 5 Nov 2021 16:25:36 +0100 Subject: Setup syslinux. --- modules/syslinux/manifests/init.pp | 114 +++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 modules/syslinux/manifests/init.pp (limited to 'modules/syslinux/manifests/init.pp') diff --git a/modules/syslinux/manifests/init.pp b/modules/syslinux/manifests/init.pp new file mode 100644 index 0000000..570b31c --- /dev/null +++ b/modules/syslinux/manifests/init.pp @@ -0,0 +1,114 @@ +class syslinux ( + String $kernel = 'linux', + String $efi_root = '/boot/efi', + String $bootentry = 'syslinux', +) { + + $efi_dev = $facts['mountpoints'][$efi_root] + if ! $efi_dev { + fail("A device needs to be mounted on efi_root [${efi_root}]") + } + # $efi_dev['device'] + + ensure_packages ([ + $kernel, + mkinitcpio, + syslinux, + efibootmgr, + ], { + ensure => installed, + }) + + file { "/etc/mkinitcpio.d/${kernel}.preset": + ensure => file, + source => "puppet:///modules/${module_name}/mkinitcpio.${kernel}", + } + + # cp -r /usr/lib/syslinux/efi64 ${efi_root}/EFI/syslinux + + $device = $facts['mountpoints']['/']['device'] + $partuuid = $facts['blkid'][$device]['PARTUUID'] + + file { "${efi_root}/EFI/syslinux/syslinux.cfg": + content => epp("${module_name}/syslinux.cfg.epp", { + 'default' => 'arch', + 'linux' => { + 'arch' => { + 'label' => 'Arch Linux', + 'initrd' => 'initramfs-linux.img', + 'args' => "root=PARTUUID=${partuuid} rw", + }, + 'arch-runlevel-1' => { + 'label' => 'Arch Linux (Runlevel 1)', + 'initrd' => 'initramfs-linux.img', + 'args' => "root=PARTUUID=${partuuid} rw 1", + }, + 'archfallback' => { + 'label' => 'Arch Linux fallback', + 'initrd' => 'initramfs-linux-fallback.img', + 'args' => "root=PARTUUID=${partuuid} rw", + } + }, + 'com32' => { + 'hdt' => { + 'label' => 'HDT (Hardware Detection Tool)', + 'com' => 'hdt', + }, + 'reboot' => { + 'label' => 'Reboot', + 'com' => 'reboot', + }, + 'poweroff' => { + 'label' => 'Poweroff', + 'com' => 'poweroff', + } + + } + }) + } + + file { "${efi_root}/EFI/arch": + ensure => directory, + } + + $has_syslinux = $facts['efi']['boots'].any |$_, $value| { + $value == $bootentry + } + + $partition = $facts['partinfo'][basename($efi_dev['device'])] + + if ! $has_syslinux { + $efi_device = $partition['device'] + $partid = $partition['partid'] + exec { "efibootmgr --disk '/dev/${efi_device}' --part ${partid} --create --label '${bootentry}' --loader /EFI/syslinux/syslinux.efi": + path => [ '/usr/bin', '/bin', ], + } + } + + file { '/usr/libexec': + ensure => directory, + } + + file { '/usr/libexec/move-kernel': + ensure => file, + mode => '0555', + content => @("EOF"/$) + #!/bin/sh + IFS='\n' read data + cp "/\$data" "${efi_root}/EFI/arch/vmlinuz-${kernel}" + | EOF + } + + pacman::hook { 'install-kernel': + priority => 60, # something less than /usr/share/libalpm/hooks/90-mkinitcpio-install.hook + trigger => { + type => 'Path', + operation => [ 'Install', 'Upgrade' ], + target => [ 'usr/lib/modules/*/vmlinuz', ], + }, + description => 'Moving kernel to EFI', + when => 'PostTransaction', + exec => '/usr/libexec/move-kernel', + needsTargets => true , + } +} -- cgit v1.2.3