+sub
+generate_fstab
+{
+ my $root_fs_uuid = shift || die;
+ my $efi_fs_uuid = shift || die;
+
+ open(FSTAB, '>', '/etc/fstab') || die ("Can not open fstab");
+ print FSTAB <<EOF;
+UUID="$root_fs_uuid" / ext4 defaults 0 0
+UUID="$efi_fs_uuid" /boot/efi vfat defaults 0 0
+EOF
+ close(FSTAB);
+}
+
+sub
+install_grub
+{
+ system('rm -rf /boot/efi/EFI');
+ system('apt-get install -y grub-efi-arm64-signed-');
+ system("echo 'grub-efi-arm64 grub2/update_nvram boolean false' | debconf-set-selections");
+ system("echo 'grub-efi-arm64 grub2/force_efi_extra_removable boolean true' | debconf-set-selections");
+ system('dpkg-reconfigure -fnoninteractive grub-efi-arm64');
+ system('update-grub');
+ system('grub-install --removable /boot/efi');
+}
+
+sub
+update_wifi_firmware_if_necessary
+{
+ return unless -f $firmware_tarball;
+
+ if (-f $firmware_manifest) {
+ system("sha256sum -c $firmware_manifest --quiet");
+ return if $? == 0;
+ }
+
+ system("sha256sum $firmware_tarball > $firmware_manifest");
+ system("tar -C /lib/firmware/ -xf $firmware_tarball");