![cinap_lenrek](/assets/img/avatar_default.png)
when /n/src9 is an alias for / (bind / /n/src9), then the bind from /sys/lib/dist/usr on /n/src9/usr would also overbind /usr and potentially make the build target file inaccessible. the solution is to run aux/stub -d /n/src9/usr. this works as aux/stub mounts itself on /n/src9, so the bind for /n/src9/usr will not override /usr in the root filesystem but the stub directory from aux/stub.
151 lines
3.4 KiB
Makefile
151 lines
3.4 KiB
Makefile
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
|
|
aux/stub -d /n/src9/usr
|
|
bind usr /n/src9/usr
|