shithub: misc

ref: f54501c2592bd7cee283a243391d07f2dd131373
dir: /9legacy/rpi4_usb_installation_example/

View raw version
Installation example in a usb disk using
http://9p.io/sources/contrib/miller/9pi.img.gz as host.

First apply http://adr.freeshell.org/plan9/patches/usb_uas_and_close_ep.diff
on the host if you have problems with your usb disk or you are going
to connect and disconnect usb devices several times (e.g. using a kvm switch).

; partfs /dev/sdU0.0/data
; diskparts /dev/sdXX
; disk/fdisk /dev/sdXX/data
>>> a p1 0 15
>>> t p1 FAT32
>>> a p2 . $
>>> w
>>> q

; disk/format -r 2 -d /dev/sdXX/dos 
; disk/prep /dev/sdXX/plan9
no plan9 partition table found
  empty                    0 3518582819    (3518582819 sectors, 1.63 TB)
>>> a nvram 2 3
>>> a fossil . .+4G
>>> a arenas0 . .+59G
>>> a isect0 . .+3093300k
>>> a other . $
>>> p
  empty                    0 2             (2 sectors, 1.00 KB)
  nvram                    2 3             (1 sectors, 512 B )
  fossil                   3 8388611       (8388608 sectors, 4.00 GB)
  arenas0            8388611 132120579     (123731968 sectors, 59.00 GB)
  isect0           132120579 138307179     (6186600 sectors, 2.95 GB)
  other            138307179 7813550115    (7675242936 sectors, 3.57 TB)

# No bloom filter for now.

; fossil/flfmt /dev/sdXX/fossil
; fossil/flfmt /dev/sdXX/other

; cat flconf
srv -p fscons
srv fossil
fsys main config /dev/sdXX/fossil
fsys other config /dev/sdXX/other
fsys main open -AW
fsys other open -AWV
fsys main

; fossil/conf -w /dev/sdXX/fossil flconf
; fossil/fossil -m 20 -f /dev/sdXX/fossil -c 'srv -AWP fossil.new'  -c 'srv -p fscons.new'
; mount -c /srv/fossil.new /n/fossil.new

; venti/fmtarenas arenas0 /dev/sdXX/arenas0
; venti/fmtisect isect0 /dev/sdC0/isect0
; cat vtconf
index main
isect /dev/sdXX/isect0
arenas /dev/sdXX/arenas0
httpaddr tcp!*!80

; venti/fmtindex vtconf
; venti/conf -w /dev/sdXX/arenas0 <vtconf

; hget http://ftp.osuosl.org/pub/plan9/history/plan9-4e-latest.iso.bz2 | bunzip2 > plan9-4e-latest.iso
; 9660srv
; mount /srv/9660 /n/iso plan9-4e-latest.iso
; echo uname upas :upas >>/srv/fscons.new
; disk/mkfs -a -s /n/iso /n/iso/dist/replica/plan9.proto | disk/mkext -ud /n/fossil.new

; mv /n/fossil.new/sys/src/9/pc/etherm10g2k.i /n/fossil.new/sys/src/9/pc/etherm10g2k.h
; mv /n/fossil.new/sys/src/9/pc/etherm10g4k.i /n/fossil.new/sys/src/9/pc/etherm10g4k.h
; sed 's/(etherm10g[24]k).i/\1.h/' /n/fossil.new/sys/src/9/pc/etherm10g.c >/tmp/etherm10g.c; mv /tmp/etherm10g.c /n/fossil.new/sys/src/9/pc/etherm10g.c
; mv /n/fossil.new/sys/src/9/pc/uartaxp.i /n/fossil.new/sys/src/9/pc/uartaxp.h
; sed 's/(uartaxp).i/\1.h/' /n/fossil.new/sys/src/9/pc/uartaxp.c >/tmp/uartaxp.c; mv /tmp/uartaxp.c /n/fossil.new/sys/src/9/pc/uartaxp.c
; sed 's/(sd53c8xx).i/\1.h/' /n/fossil.new/sys/src/9/pcboot/bootmkfile >/tmp/bootmkfile; mv /tmp/bootmkfile /n/fossil.new/sys/src/9/pcboot/bootmkfile
; mv /n/fossil.new/sys/src/9/pc/sd53c8xx.i /n/fossil.new/sys/src/9/pc/sd53c8xx.h

; cd /n/fossil.new

; for(i in `{hget http://adr.freeshell.org/plan9/9legacylist | grep -v '^#'}){echo applying $i; hget http://www.9legacy.org/9legacy/patch/$i | ape/patch --no-backup-if-mismatch -p1; echo}

; rm -r /sys/src/liboventi

; for(i in `{hget http://adr.freeshell.org/plan9/patches/list | grep -v '^#'}){echo applying $i; hget sdf.adr:/patches/$i | ape/patch --no-backup-if-mismatch -p1; echo}

; touch (386 arm mips power sparc spim sys)^/include/ape/_apetypes.h
; mkdir /n/fossil.new/sys/lib/firmware
; for(i in brcmfmac43430-sdio.bin brcmfmac43430-sdio.txt brcmfmac43455-sdio.bin brcmfmac43455-sdio.clm_blob brcmfmac43455-sdio.txt){hget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm/$i >/n/fossil.new/sys/lib/firmware/$i}

; bind -c /n/fossil.new/sys /sys/
; bind -c /n/fossil.new/amd64 /amd64
; bind -c /n/fossil.new/mips64 /mips64
; cd /sys/src
; mk clean
; mk all

# If you know a better way to do this I'm interested.
; dircp /arm/bin /n/fossil.new/arm/bin
; bind -c /n/fossil.new/arm /arm
; mk install

; cd 9/bcm
; hget -o bootusb.rc http://adr.freeshell.org/plan9/bootusb.rc
; hget -o pi4rc http://adr.freeshell.org/plan9/pi4rc
; mk CONF=pi4rc

; diskparts /dev/sdM0
; dossrv
; mount -c /srv/dos /n/dos /dev/sdM0/dos
; mount -c /srv/dos /n/ndos /dev/sdXX/dos
; dircp /n/dos /n/ndos
; cp s9pi4rc 9pi4rc /n/dos/

Edit cmdline.txt to something like this:
nobootprompt=local ifconfig= venti=tcp!127.1!17034 bootargs=local!#/dev/sdXX/fossil nvram=/dev/sdXX/nvram

And config.txt:
[...]
[pi4]
kernel=9pi4rc
[...]

You should now be able to boot from your usb disk.