+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");
+
+ system('rmmod brcmfmac');
+ system('rmmod brcmutil');
+ sleep(1);
+ system('modprobe brcmfmac');
+ sleep(1);
+ system('rmmod brcmfmac');
+ sleep(1);
+ system('modprobe brcmfmac');
+}
+
+my $root_block_device = undef;
+my $initial_root_fs_uuid = undef;
+my $final_root_fs_uuid = undef;
+my $efi_block_device = undef;
+my $efi_fs_uuid = undef;
+
+unless (-f '/boot/grub/grub.cfg') {
+ $root_block_device = find_root_device();
+ system("resize2fs $root_block_device");
+ $initial_root_fs_uuid = find_fs_uuid_of_device($root_block_device);
+ $efi_block_device = find_efi_parition($initial_root_fs_uuid);
+ system("mlabel -s -n :: -i $efi_block_device");
+ system("tune2fs -U random ${root_block_device}");
+ $efi_fs_uuid = find_fs_uuid_of_device($efi_block_device);
+ $final_root_fs_uuid = find_fs_uuid_of_device($root_block_device);
+ generate_fstab($final_root_fs_uuid, $efi_fs_uuid);
+ system('mount /boot/efi');
+ install_grub();
+}