xref: /plan9/sys/lib/dist/pc/inst/bootwin9x (revision a22b0629beb42d6ba21fb59ad976b0ded93891c9)
19a747e4fSDavid du Colombier#!/bin/rc
29a747e4fSDavid du Colombier
39a747e4fSDavid du Colombierdosdisk=`{ls /dev/sd??/dos >[2]/dev/null | sed 1q | sed 's!.*/(.*)/dos!\1!'}
49a747e4fSDavid du Colombierif(~ $#dosdisk 0 || ! c: || ! test -f /n/c:/autoexec.bat || ! test -f /n/c:/config.sys) {
59a747e4fSDavid du Colombier	echo 'Could not find autoexec.bat or config.sys on the first FAT disk.'
69a747e4fSDavid du Colombier	exit bad
79a747e4fSDavid du Colombier}
89a747e4fSDavid du Colombier
99a747e4fSDavid du Colombierfor (i in autoexec config msdos)
109a747e4fSDavid du Colombier	if(test -f /n/c:/$i.p9) {
119a747e4fSDavid du Colombier		echo 'A Plan 9 backup already exists; will not edit system files again.'
129a747e4fSDavid du Colombier		exit bad
139a747e4fSDavid du Colombier	}
149a747e4fSDavid du Colombier
159a747e4fSDavid du Colombierfor (i in autoexec.bat config.sys msdos.sys)
169a747e4fSDavid du Colombier	if(! cp /n/c:/$i /n/c:/^`{echo $i | sed 's/\.(bat|sys)$/.p9/'}) {
179a747e4fSDavid du Colombier		echo 'Could not back up '^$i^'; will not continue.'
189a747e4fSDavid du Colombier		exit bad
199a747e4fSDavid du Colombier	}
209a747e4fSDavid du Colombier
219a747e4fSDavid du Colombierif(! test -d /n/c:/plan9 && ! mkdir /n/c:/plan9) {
229a747e4fSDavid du Colombier	echo 'Could not create directory /n/c:/plan9.'
239a747e4fSDavid du Colombier	exit bad
249a747e4fSDavid du Colombier}
259a747e4fSDavid du Colombier
26*a22b0629SDavid du Colombierif(! cp /n/newfs/386/^(9load ld.com 9pcdisk) /tmp/plan9ini.bak /n/c:/plan9) {
279a747e4fSDavid du Colombier	echo 'Could not copy Plan 9 boot files into /n/c:/plan9.'
289a747e4fSDavid du Colombier	exit bad
299a747e4fSDavid du Colombier}
309a747e4fSDavid du Colombier
319a747e4fSDavid du Colombierchmod +w /n/c:/autoexec.bat /n/c:/config.sys /n/c:/msdos.sys
329a747e4fSDavid du Colombier
339a747e4fSDavid du Colombierif(grep -si 'Plan ?9' /n/c:/config.sys || grep -si 'Plan ?9' /n/c:/autoexec.bat) {
349a747e4fSDavid du Colombier	echo 'Plan 9 entries already in config.sys or autoexec.bat.'
359a747e4fSDavid du Colombier	echo 'Not changing them; refer to Plan 9 install documentation'
369a747e4fSDavid du Colombier	echo 'to configure manually.'
379a747e4fSDavid du Colombier	exit bad
389a747e4fSDavid du Colombier}
399a747e4fSDavid du Colombier
409a747e4fSDavid du Colombierif(! grep -si '\[menu\]' /n/c:/config.sys) {
419a747e4fSDavid du Colombier	{
429a747e4fSDavid du Colombier		echo 1
439a747e4fSDavid du Colombier		echo i
449a747e4fSDavid du Colombier		echo '[menu]
459a747e4fSDavid du Colombier'
469a747e4fSDavid du Colombier		echo 'menuitem=windows, Windows
479a747e4fSDavid du Colombier'
489a747e4fSDavid du Colombier		echo 'menudefault=windows
499a747e4fSDavid du Colombier'
509a747e4fSDavid du Colombier		echo '
519a747e4fSDavid du Colombier'
529a747e4fSDavid du Colombier		echo '[common]
539a747e4fSDavid du Colombier'
549a747e4fSDavid du Colombier		echo '
559a747e4fSDavid du Colombier'
569a747e4fSDavid du Colombier		echo '[windows]
579a747e4fSDavid du Colombier'
589a747e4fSDavid du Colombier		echo .
599a747e4fSDavid du Colombier		echo w
609a747e4fSDavid du Colombier		echo q
619a747e4fSDavid du Colombier	} | ed /n/c:/config.sys >/dev/null >[2]/dev/null
629a747e4fSDavid du Colombier}
639a747e4fSDavid du Colombier
649a747e4fSDavid du Colombier{
659a747e4fSDavid du Colombier	echo 1
669a747e4fSDavid du Colombier	echo '/\[[Mm][Ee][Nn][Uu]\]'
679a747e4fSDavid du Colombier	echo '?^[Mm][Ee][Nn][Uu][Ii][Tt][Ee][Mm]='
689a747e4fSDavid du Colombier	echo a
699a747e4fSDavid du Colombier	echo 'menuitem=plan9, Plan 9 from Bell Labs
709a747e4fSDavid du Colombier'
719a747e4fSDavid du Colombier	echo .
729a747e4fSDavid du Colombier	echo '$'
739a747e4fSDavid du Colombier	echo a
749a747e4fSDavid du Colombier	echo '
759a747e4fSDavid du Colombier'
769a747e4fSDavid du Colombier	echo '[plan9]
779a747e4fSDavid du Colombier'
789a747e4fSDavid du Colombier	echo '
799a747e4fSDavid du Colombier'
809a747e4fSDavid du Colombier	echo .
819a747e4fSDavid du Colombier	echo w
829a747e4fSDavid du Colombier	echo q
839a747e4fSDavid du Colombier} | ed /n/c:/config.sys >/dev/null>[2]/dev/null
849a747e4fSDavid du Colombier
859a747e4fSDavid du Colombier{
869a747e4fSDavid du Colombier	echo 1
879a747e4fSDavid du Colombier	echo i
889a747e4fSDavid du Colombier	echo '@echo off
899a747e4fSDavid du Colombier'
909a747e4fSDavid du Colombier	echo 'if %config%==plan9 goto plan9
919a747e4fSDavid du Colombier'
929a747e4fSDavid du Colombier	echo 'goto notplan9
939a747e4fSDavid du Colombier'
949a747e4fSDavid du Colombier	echo ':plan9
959a747e4fSDavid du Colombier'
969a747e4fSDavid du Colombier	echo 'plan9\ld '^$dosdisk^'!dos!plan9/9load
979a747e4fSDavid du Colombier'
989a747e4fSDavid du Colombier	echo ':notplan9
999a747e4fSDavid du Colombier'
1009a747e4fSDavid du Colombier	echo .
1019a747e4fSDavid du Colombier	echo w
1029a747e4fSDavid du Colombier	echo q
1039a747e4fSDavid du Colombier} | ed /n/c:/autoexec.bat >/dev/null>[2]/dev/null
1049a747e4fSDavid du Colombier
1059a747e4fSDavid du Colombierfn zeroopt {
1069a747e4fSDavid du Colombier	if(grep -s '^'^$1^'=1' /n/c:/msdos.sys) {
1079a747e4fSDavid du Colombier		{
1089a747e4fSDavid du Colombier			echo '/^'^$1^'=1/s/=1/=0/'
1099a747e4fSDavid du Colombier			echo w
1109a747e4fSDavid du Colombier			echo q
1119a747e4fSDavid du Colombier		} | ed /n/c:/msdos.sys>/dev/null>[2]/dev/null
1129a747e4fSDavid du Colombier	}
1139a747e4fSDavid du Colombier	if not if (grep -s '^'^$1^'=0' /n/c:/msdos.sys)
1149a747e4fSDavid du Colombier		;
1159a747e4fSDavid du Colombier	if not {
1169a747e4fSDavid du Colombier		{
1179a747e4fSDavid du Colombier			echo 1
118			echo i
119			echo '[Options]
120'
121			echo 'Logo=0
122'
123			echo .
124			echo w
125			echo q
126		} | ed /n/c:/msdos.sys>/dev/null>[2]/dev/null
127	}
128}
129
130if(grep -si '^\[paths\]' /n/c:/msdos.sys){	# Windows 9x rather than DOS
131	zeroopt Logo
132#	zeroopt BootGUI
133}
134
135echo 'Plan 9 added to Windows 9X boot menu.'
136exit ''
137