summaryrefslogtreecommitdiff
path: root/sys/lib/dist/mkfile
blob: 6fb040377a0371c115527901612107f65381c5e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
proto=/n/src9/sys/lib/sysconfig/proto/distproto

cd:V:	/tmp/9front.386.iso.gz

%.gz:D:	%
	gzip -9 < $prereq > $target

%.386.iso:
	@{
	objtype=386
	kernel=/n/src9/$objtype/9pc
	mk $target.$pid.pc.iso
	mv $target.$pid.pc.iso $target
	}

%.amd64.iso:
	@{
	objtype=amd64
	kernel=/n/src9/$objtype/9pc64
	mk $target.$pid.pc.iso
	mv $target.$pid.pc.iso $target
	}

%.pi.img:
	@{
	objtype=arm
	bootcode=/sys/src/boot/bcm/^(bootcode.bin fixup_cd.dat start_cd.elf LICENCE.broadcom)
	kernels=/n/src9/$objtype/^(9pi 9pi2)
	> /env/config.txt {
		echo '[pi0]'
		echo 'kernel=9pi'
		echo '[pi1]'
		echo 'kernel=9pi'
		echo '[pi2]'
		echo 'kernel=9pi2'
		echo '[pi3]'
		echo 'kernel=9pi2'
		echo 'core_freq=250'
		echo '[all]'
		echo 'gpu_mem=16'
		echo 'enable_uart=1'
	}
	> /env/cmdline.txt {
		echo 'console=0'
	}
	fatfiles=(/env/config.txt /env/cmdline.txt $bootcode $kernels)
	mb=1919	# storage vendors idea of 2GB
	mk $target.$pid.disk
	mv $target.$pid.disk $target
	}

%.zynq.img:
	@{
	objtype=arm
	kernel=/n/src9/$objtype/9zynq
	echo 'bootfile='^`{basename $kernel} > /env/plan9.ini
	fatfiles=(/env/plan9.ini $kernel)
	mb=1919	# storage vendors idea of 2GB
	mk $target.$pid.disk
	mv $target.$pid.disk $target
	}

%.pc.iso:D:	$proto /n/src9/sys/lib/sysconfig/proto/9bootproto $kernel
	@{rfork n
	mk binds
	{grep -v '^bootfile=' /n/src9/cfg/plan9.ini
	echo 'bootfile='^`{echo $kernel | sed 's!^/n/src9!!'}} > /env/plan9.ini
	bind /env/plan9.ini /n/src9/cfg/plan9.ini
	disk/mk9660 -c9j -B 386/9bootiso -E 386/efiboot.fat \
		-p <{cat $proto /n/src9/sys/lib/sysconfig/proto/9bootproto} \
		-s /n/src9 -v 'Plan 9 Front ('^$objtype^')' $target
	if(test -r /n/src9/386/9boothyb){
		dd -if /dev/zero -bs 2048 -count 1024 >> $target
		disk/partfs -m /n/partfs $target
		disk=/n/partfs/sdXX
		disk/mbr -m /n/src9/386/mbr $disk/data
		@{echo a p1 '$-1' '$'
			echo t p1 ESP
			echo A p1
			echo w
			echo q} | disk/fdisk -b $disk/data
		disk/format -b /n/src9/386/pbs -xd -t hard $disk/esp
		s = esp.$pid
		dossrv -f $disk/esp $s
		mount -c /srv/$s /n/esp
		cp /n/src9/386/9boothyb /n/esp/9bootfat
		mkdir /n/esp/efi
		mkdir /n/esp/efi/boot
		cp /n/src9/386/boot*.efi /n/esp/efi/boot
		unmount /n/esp
		rm -f /srv/$s
	}}

%.disk:D:	$proto $fatfiles
	@{rfork n
	mk binds
	rm -f $target
	dd -if /dev/zero -of $target -bs 1048576 -oseek $mb -count 1
	s=`{basename $target}
	disk/partfs -m /n/$s $target
	d=/n/$s/sdXX
	disk/mbr $d/data
	if(~ $target *.pi.img.*){
		{
			echo 'a p1 . .+100M'
			echo 't p1 FAT32'
			echo 'a p2 . $'
			echo 't p2 PLAN9'
			echo 'A p1'
			echo 'p'
			echo 'w'
			echo 'q'
		} | disk/fdisk -b $d/data
		disk/prep -bw -a^(nvram fs) $d/plan9
		disk/format -d $d/dos $fatfiles
	}
	if not {
		disk/fdisk -baw $d/data
		disk/prep -bw -a^(9fat nvram fs) $d/plan9
		disk/format -d -r 2 $d/9fat $fatfiles
	}
	hjfs -f $d/fs -n $s -S -r
	{
		echo echo on
		echo create /dist sys sys 775 d
		echo create /usr sys sys 775 d
		user=glenda
		echo newuser $user
		echo newuser adm +$user
		echo newuser sys +$user
		echo newuser upas +$user
		echo echo off
		sleep 1
	} >> /srv/$s.cmd
	mount -N -c /srv/$s /n/newfs
	disk/mkfs -z 4096 -U -s /n/src9 -d /n/newfs $proto
	echo sync >> /srv/$s.cmd
	echo halt >> /srv/$s.cmd
	while(test -e /srv/$s.cmd) sleep 1
	exit ''
	}

binds:V:
	test -d /n/src9/.hg && bind /n/src9 /n/src9/dist/plan9front
	bind cfg /n/src9/cfg
	bind mail/lib /n/src9/mail/lib
	bind ndb /n/src9/lib/ndb
	bind -a adm/timezone /n/src9/adm/timezone
	bind usr /n/src9/usr