]> git.zerfleddert.de Git - m1-debian/commitdiff
first version of the poor mans debian installer
authorThomas Glanzmann <thomas@glanzmann.de>
Sun, 6 Feb 2022 10:02:34 +0000 (11:02 +0100)
committerThomas Glanzmann <thomas@glanzmann.de>
Sun, 6 Feb 2022 10:02:34 +0000 (11:02 +0100)
pmds.pl [new file with mode: 0644]

diff --git a/pmds.pl b/pmds.pl
new file mode 100644 (file)
index 0000000..af5aef9
--- /dev/null
+++ b/pmds.pl
@@ -0,0 +1,69 @@
+#!/usr/bin/perl
+
+use strict;
+
+my ($identifier, $size);
+
+sub
+find_identifier_before_free_space
+{
+       my $identifier = undef;
+       my $size = undef;
+
+       for my $line (`diskutil list /dev/disk0`) {
+
+               if ($line =~ /^\s+\(free space\)\s+(\d+.\d GB)/) {
+                       $size = $1;
+                       $size =~ s/\s+//g;
+                       last;
+               }
+
+               if ($line =~ /(disk0s\d)$/) {
+                       $identifier = $1;
+               }
+       }
+
+       die if not defined $identifier;
+       die if not defined $size;
+
+       return ($identifier, $size);
+}
+
+($identifier, $size) = find_identifier_before_free_space();
+system("diskutil addPartition $identifier %EFI% LB 512MB");
+
+$identifier = undef;
+
+for my $line (`diskutil list /dev/disk0`) {
+       if ($line =~ /EFI.*(disk0s\d)/) {
+               $identifier = $1;
+       }
+}
+
+die if not defined $identifier;
+
+system("newfs_msdos /dev/$identifier");
+system("mkdir -p /Volumes/efi");
+system("mount -t msdos /dev/$identifier /Volumes/efi");
+chdir('/Volumes/efi');
+system('mkdir -p /Volumes/efi/efi/boot');
+system('curl -Lo /Volumes/efi/efi/boot/bootaa64.efi https://tg.st/u/grubaa64.efi');
+system('curl -sL tg.st/u/fwx.sh | bash');
+system('cp /tmp/linux-firmware.tar /Volumes/efi/');
+chdir('/var/root');
+system('umount /Volumes/efi');
+
+($identifier, $size) = find_identifier_before_free_space();
+system("diskutil addPartition $identifier %Linux% %noformat% $size");
+
+$identifier = undef;
+
+for my $line (`diskutil list /dev/disk0`) {
+       if ($line =~ /Linux Filesystem.*(disk0s\d)/) {
+               $identifier = $1;
+       }
+}
+
+die if not defined $identifier;
+
+system("curl -L https://tg.st/u/m1.tgz | tar -xOz | dd of=/dev/$identifier bs=8m");
Impressum, Datenschutz