]> git.zerfleddert.de Git - m1-debian/blame - pmdi.pl
add license
[m1-debian] / pmdi.pl
CommitLineData
605f3b2d
TG
1#!/usr/bin/perl
2
3# SPDX-License-Identifier: MIT
4
5use strict;
6
7my ($identifier, $size);
8
9sub
10find_identifier_before_free_space
11{
12 my $identifier = undef;
13 my $size = undef;
14
15 for my $line (`diskutil list /dev/disk0`) {
16
17 if ($line =~ /^\s+\(free space\)\s+(\d+.\d GB)/) {
18 $size = $1;
19 $size =~ s/\s+//g;
20 last;
21 }
22
23 if ($line =~ /(disk0s\d)$/) {
24 $identifier = $1;
25 }
26 }
27
28 die if not defined $identifier;
29 die if not defined $size;
30
31 return ($identifier, $size);
32}
33
34($identifier, $size) = find_identifier_before_free_space();
35system("diskutil addPartition $identifier %EFI% LB 512MB");
36
37$identifier = undef;
38
39for my $line (`diskutil list /dev/disk0`) {
40 if ($line =~ /EFI.*(disk0s\d)/) {
41 $identifier = $1;
42 }
43}
44
45die if not defined $identifier;
46
47system("newfs_msdos /dev/$identifier");
48system("mkdir -p /Volumes/efi");
49system("mount -t msdos /dev/$identifier /Volumes/efi");
50chdir('/Volumes/efi');
51system('mkdir -p /Volumes/efi/efi/boot');
52system('curl -Lo /Volumes/efi/efi/boot/bootaa64.efi https://tg.st/u/grubaa64.efi');
53system('curl -sL tg.st/u/fwx.sh | bash');
54system('cp /tmp/linux-firmware.tar /Volumes/efi/');
55chdir('/var/root');
56system('umount /Volumes/efi');
57
58($identifier, $size) = find_identifier_before_free_space();
59system("diskutil addPartition $identifier %Linux% %noformat% $size");
60
61$identifier = undef;
62
63for my $line (`diskutil list /dev/disk0`) {
64 if ($line =~ /Linux Filesystem.*(disk0s\d)/) {
65 $identifier = $1;
66 }
67}
68
69die if not defined $identifier;
70
71system("curl -L https://tg.st/u/m1.tgz | tar -xOz | dd of=/dev/$identifier bs=8m");
Impressum, Datenschutz