xref: /plan9-contrib/sys/lib/dist/pc/inst/partdisk (revision a22b0629beb42d6ba21fb59ad976b0ded93891c9)
19a747e4fSDavid du Colombier#!/bin/rc
29a747e4fSDavid du Colombier
39a747e4fSDavid du Colombier# desc: edit partition tables (e.g., to create a plan 9 partition)
4*a22b0629SDavid du Colombier# prereq: configfs
59a747e4fSDavid du Colombier
69a747e4fSDavid du Colombierswitch($1){
79a747e4fSDavid du Colombiercase go
89a747e4fSDavid du Colombier	disks=`{ls /dev/sd*/data >[2]/dev/null | sed 's!/dev/(sd..)/data!\1!'}
99a747e4fSDavid du Colombier	if(~ $#disks 0) {
109a747e4fSDavid du Colombier		echo 'No disk devices were found on your system.'
119a747e4fSDavid du Colombier		echo 'The installation process cannot continue.'
129a747e4fSDavid du Colombier		exit giveup
139a747e4fSDavid du Colombier	}
149a747e4fSDavid du Colombier
159a747e4fSDavid du Colombier	echo 'The following disk devices were found.'
169a747e4fSDavid du Colombier	echo
179a747e4fSDavid du Colombier	for(i in $disks) {
189a747e4fSDavid du Colombier		desc=`{cat /dev/$i/ctl | sed 1q | sed 's/inquiry //'}
199a747e4fSDavid du Colombier		echo $i '-' $desc
209a747e4fSDavid du Colombier		echo e | disk/fdisk -r /dev/$i/data >[2]/dev/null | grep -v '^   mbr'
219a747e4fSDavid du Colombier		echo
229a747e4fSDavid du Colombier	}
239a747e4fSDavid du Colombier
249a747e4fSDavid du Colombier	okay=no
259a747e4fSDavid du Colombier	defdisk=$disks(1)
269a747e4fSDavid du Colombier
279a747e4fSDavid du Colombier	if(~ $#disks 1)
289a747e4fSDavid du Colombier		default=(-d $disks)
299a747e4fSDavid du Colombier	if not
309a747e4fSDavid du Colombier		default=()
319a747e4fSDavid du Colombier	prompt $default 'Disk to partition' $disks
329a747e4fSDavid du Colombier	disk=$rd
339a747e4fSDavid du Colombier
349a747e4fSDavid du Colombier	if(! hasmbr /dev/$disk/data) {
3539734e7eSDavid du Colombier		echo 'The disk you selected HAS NO master boot record on its first sector.'
369a747e4fSDavid du Colombier		echo '(Perhaps it is a completely blank disk.)'
379a747e4fSDavid du Colombier		echo 'You need a master boot record to use the disk.'
389a747e4fSDavid du Colombier		echo 'Should we install a default master boot record?'
399a747e4fSDavid du Colombier		echo
409a747e4fSDavid du Colombier		prompt 'Install mbr' y n
419a747e4fSDavid du Colombier		switch($rd) {
429a747e4fSDavid du Colombier		case y
439a747e4fSDavid du Colombier			disk/mbr -m /386/mbr /dev/$disk/data
449a747e4fSDavid du Colombier			pickdisk=done
459a747e4fSDavid du Colombier		}
469a747e4fSDavid du Colombier	}
479a747e4fSDavid du Colombier	echo
489a747e4fSDavid du Colombier	echo 'This is disk/fdisk; use it to create a Plan 9 partition.'
499a747e4fSDavid du Colombier	echo 'If there is enough room, a Plan 9 partition will be'
509a747e4fSDavid du Colombier	echo 'suggested; you can probably just type ''w'' and then ''q''.'
519a747e4fSDavid du Colombier	echo
529a747e4fSDavid du Colombier	disk/fdisk -a /dev/$disk/data
539a747e4fSDavid du Colombier	disk/fdisk -p /dev/$disk/data >/dev/$disk/ctl >[2]/dev/null
549a747e4fSDavid du Colombier	for(i in /dev/sd*/plan9*){
559a747e4fSDavid du Colombier		if(test -f $i){
569a747e4fSDavid du Colombier			d=`{basename -d $i}
579a747e4fSDavid du Colombier			disk/prep -p $i >$d/ctl >[2]/dev/null
589a747e4fSDavid du Colombier		}
599a747e4fSDavid du Colombier	}
609a747e4fSDavid du Colombier
619a747e4fSDavid du Colombiercase checkdone
6239734e7eSDavid du Colombier	# we want at least one disk with both an mbr and a plan9 partition
6339734e7eSDavid du Colombier	mbrandplan9=0
6439734e7eSDavid du Colombier	disks=`{ls /dev/sd*/plan9 >[2]/dev/null | sed 's!/dev/(sd..)/plan9!\1!'}
6539734e7eSDavid du Colombier	for(disk in $disks) {
6639734e7eSDavid du Colombier		if(hasmbr /dev/$disk/data)
6739734e7eSDavid du Colombier			mbrandplan9=1
6839734e7eSDavid du Colombier	}
6939734e7eSDavid du Colombier	if(~ $mbrandplan9 0){
709a747e4fSDavid du Colombier		partdisk=notdone
719a747e4fSDavid du Colombier		export partdisk
729a747e4fSDavid du Colombier	}
739a747e4fSDavid du Colombier}
74