diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-06-06 02:00:51 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-06-06 02:00:51 +0200 |
commit | 628611fb5c701365c3b2fcbf705448a1af635cc7 (patch) | |
tree | 36a97c5550f15776c8ba07c20a0d0250ee1534b4 | |
parent | 1613fd9f526dc5a5703bbeb1d84e59980db0845e (diff) | |
download | plan9front-628611fb5c701365c3b2fcbf705448a1af635cc7.tar.xz |
inst: provide gpt/mbr choice when disk is blank, format esp
-rwxr-xr-x | rc/bin/inst/bootplan9 | 27 | ||||
-rwxr-xr-x | rc/bin/inst/bootsetup | 4 | ||||
-rwxr-xr-x | rc/bin/inst/partdisk | 22 |
3 files changed, 33 insertions, 20 deletions
diff --git a/rc/bin/inst/bootplan9 b/rc/bin/inst/bootplan9 index c7eb185b4..702d5d5a6 100755 --- a/rc/bin/inst/bootplan9 +++ b/rc/bin/inst/bootplan9 @@ -1,5 +1,20 @@ #!/bin/rc +# look for esp and format it when not already done +esp=`{ls /dev/$disk/esp >[2]/dev/null} +if(~ $#esp 1 && ! ~ fstype $esp dos){ + echo + echo 'Here appears to be a unformated EFI system partition:' + echo ' ' $esp + echo + prompt 'Initialize FAT on EFI system partition' yes no + switch($rd) { + case yes + # 4k clusters to force FAT32 + disk/format -d -c 8 -l ESP $esp + } +} + # look for plan9 partition in the DOS partition table (if any) p9part=`{disk/fdisk /dev/$disk/data >[2]/dev/null </dev/null | grep PLAN9 | sed 1q | sed 's/ *(p.) .*/\1/'} if(~ $#p9part 0){ @@ -13,19 +28,15 @@ echo 'or a master boot record from a Unix clone (e.g., LILO or' echo 'FreeBSD bootmgr), it is probably safe to continue using' echo 'that boot record rather than install the Plan 9 boot record.' echo -prompt 'Install the Plan 9 master boot record' y n +prompt 'Install the Plan 9 master boot record' yes no switch($rd) { -case n - ; -case y +case yes disk/mbr -m /386/mbr /dev/$disk/data } -prompt 'Mark the Plan 9 partition active' y n +prompt 'Mark the Plan 9 partition active' yes no switch($rd) { -case n - ; -case y +case yes { echo 'A '^$p9part; echo w } | disk/fdisk /dev/$disk/data >[2]/dev/null >/dev/null x=$status if(~ $x '' '|'){ diff --git a/rc/bin/inst/bootsetup b/rc/bin/inst/bootsetup index 34d1c5b9c..e3f2a7cca 100755 --- a/rc/bin/inst/bootsetup +++ b/rc/bin/inst/bootsetup @@ -1,6 +1,6 @@ #!/bin/rc -# desc: create a boot floppy or configure hard disk to boot plan 9 +# desc: configure hard disk to boot plan 9 # prereq: copydist fats=() @@ -73,7 +73,7 @@ case go if(~ $need9fatformat yes){ log Initializing Plan 9 FAT partition. - logprog disk/format -r 2 -d -b /n/newfs/386/pbs $9fat + logprog disk/format -r 2 -d -b /n/newfs/386/pbs -l PLAN9 $9fat } if not { log Updating bootsector. diff --git a/rc/bin/inst/partdisk b/rc/bin/inst/partdisk index cea2136d8..bbe33fbbf 100755 --- a/rc/bin/inst/partdisk +++ b/rc/bin/inst/partdisk @@ -32,24 +32,26 @@ case go prompt $default 'Disk to partition' $disks disk=$rd - if(! ./hasmbr /dev/$disk/data) { + diskedit=disk/fdisk + if(disk/edisk -p /dev/$disk/data >/dev/null >[2=1]) + diskedit=disk/edisk + + if(~ $diskedit disk/fdisk && ! ./hasmbr /dev/$disk/data) { echo 'The disk you selected HAS NO master boot record on its first sector.' echo '(Perhaps it is a completely blank disk.)' - echo 'You need a master boot record to use the disk.' - echo 'Should we install a default master boot record?' + echo 'Shall we create a blank EFI partition table (GPT)' + echo 'or install traditional DOS partition table (MBR)?' echo - prompt 'Install mbr' y n + prompt 'Install mbr or gpt' mbr gpt switch($rd) { - case y + case mbr disk/mbr -m /386/mbr /dev/$disk/data - pickdisk=done + case gpt + disk/edisk -bw /dev/$disk/data + diskedit=disk/edisk } } - diskedit=disk/fdisk - if(disk/edisk -p /dev/$disk/data >/dev/null >[2=1]) - diskedit=disk/edisk - echo echo 'This is '$diskedit'; use it to create a Plan 9 partition.' echo 'If there is enough room, a Plan 9 partition will be' |