├── .gitignore ├── README.md ├── docs ├── Preaface to the Second Edition.pdf ├── Preface to the Fourth Edition.pdf ├── Preface to the Third Edition.pdf └── Programmers Manual Volume 1.pdf ├── extra ├── 9fat └── colemak └── run.sh /.gitignore: -------------------------------------------------------------------------------- 1 | /*.iso 2 | /*.img 3 | /*.gz 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Running Plan 9 on Qemu 2 | 3 | Guide at [danieljames.life/pages/plan9-on-qemu/](https://danieljames.life/pages/plan9-on-qemu/) 4 | -------------------------------------------------------------------------------- /docs/Preaface to the Second Edition.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dnjp/plan9-on-qemu/f4083528c9debfbe64d05ade46677d601affecd4/docs/Preaface to the Second Edition.pdf -------------------------------------------------------------------------------- /docs/Preface to the Fourth Edition.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dnjp/plan9-on-qemu/f4083528c9debfbe64d05ade46677d601affecd4/docs/Preface to the Fourth Edition.pdf -------------------------------------------------------------------------------- /docs/Preface to the Third Edition.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dnjp/plan9-on-qemu/f4083528c9debfbe64d05ade46677d601affecd4/docs/Preface to the Third Edition.pdf -------------------------------------------------------------------------------- /docs/Programmers Manual Volume 1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dnjp/plan9-on-qemu/f4083528c9debfbe64d05ade46677d601affecd4/docs/Programmers Manual Volume 1.pdf -------------------------------------------------------------------------------- /extra/9fat: -------------------------------------------------------------------------------- 1 | #!/bin/rc 2 | 3 | rfork e 4 | part=`{ls /dev/fs/9fat /dev/sd*/9fat >[2]/dev/null} 5 | if(~ $#part 0) { 6 | echo 'no 9fat partition found' >[1=2] 7 | exit no.9fat 8 | } 9 | part=$part(1) 10 | if(! test -f /srv/dos) 11 | dossrv >/dev/null [2]/dev/null 12 | unmount /n/9fat >/dev/null >[2]/dev/null 13 | mount -c /srv/dos /n/9fat $part 14 | unmount /n/9 >/dev/null >[2]/dev/null 15 | mount -c /srv/dos /n/9 $part -------------------------------------------------------------------------------- /extra/colemak: -------------------------------------------------------------------------------- 1 | 0 16 'q 2 | 0 17 'w 3 | 0 18 'f 4 | 0 19 'p 5 | 0 20 'g 6 | 0 21 'j 7 | 0 22 'l 8 | 0 23 'u 9 | 0 24 'y 10 | 0 25 '; 11 | 0 30 'a 12 | 0 31 'r 13 | 0 32 's 14 | 0 33 't 15 | 0 34 'd 16 | 0 35 'h 17 | 0 36 'n 18 | 0 37 'e 19 | 0 38 'i 20 | 0 39 'o 21 | 0 44 'z 22 | 0 45 'x 23 | 0 46 'c 24 | 0 47 'v 25 | 0 48 'b 26 | 0 49 'k 27 | 0 50 'm 28 | 1 16 'Q 29 | 1 17 'W 30 | 1 18 'F 31 | 1 19 'P 32 | 1 20 'G 33 | 1 21 'J 34 | 1 22 'L 35 | 1 23 'U 36 | 1 24 'Y 37 | 1 25 ': 38 | 1 30 'A 39 | 1 31 'R 40 | 1 32 'S 41 | 1 33 'T 42 | 1 34 'D 43 | 1 35 'H 44 | 1 36 'N 45 | 1 37 'E 46 | 1 38 'I 47 | 1 39 'O 48 | 1 44 'Z 49 | 1 45 'X 50 | 1 46 'C 51 | 1 47 'V 52 | 1 48 'B 53 | 1 49 'K 54 | 1 50 'M 55 | 4 16 ^Q 56 | 4 17 ^W 57 | 4 18 ^F 58 | 4 19 ^P 59 | 4 20 ^G 60 | 4 21 ^J 61 | 4 22 ^L 62 | 4 23 ^U 63 | 4 24 ^Y 64 | 4 25 ^[ 65 | 4 30 ^A 66 | 4 31 ^R 67 | 4 32 ^S 68 | 4 33 ^T 69 | 4 34 ^D 70 | 4 35 ^H 71 | 4 36 ^N 72 | 4 37 ^E 73 | 4 38 ^I 74 | 4 39 ^O 75 | 4 44 ^Z 76 | 4 45 ^X 77 | 4 46 ^C 78 | 4 47 ^V 79 | 4 48 ^B 80 | 4 49 ^K 81 | 4 50 ^M 82 | -------------------------------------------------------------------------------- /run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | function install() { 4 | 5 | echo -n 'Would you like to install 9front or 9legacy distribution? [9front, 9legacy, 9ants] ' 6 | read distro 7 | 8 | 9 | echo -n 'Specify in GB how large of an image should be created (ex. 30G): ' 10 | read img_size 11 | 12 | iso_file='' 13 | image_name='' 14 | 15 | case $distro in 16 | 9front) 17 | # download iso to 9front.iso 18 | curl -L http://9front.org/iso/9front-7781.38dcaeaa222c.amd64.iso.gz -o plan9.iso.gz 19 | gunzip 9front.iso.gz 20 | stat 9front.iso 21 | iso_file='plan9.iso' 22 | image_name='9front.qcow2.img' 23 | ;; 24 | 9legacy) 25 | curl -L http://9legacy.org/download/9legacy.iso.bz2 -o 9legacy.iso.bz2 26 | bunzip2 9legacy.iso.bz2 27 | stat 9legacy.iso 28 | iso_file='9legacy.iso' 29 | image_name='9legacy.qcow2.img' 30 | ;; 31 | 9ants) 32 | curl -L http://files.9gridchan.org/9ants5.64.iso.gz -o 9ants.iso.gz 33 | gunzip 9ants.iso.gz 34 | stat 9ants.iso 35 | iso_file='9ants.iso' 36 | image_name='9ants.qcow2.img' 37 | ;; 38 | esac 39 | 40 | qemu-img create -f qcow2 $image_name $img_size 41 | 42 | # Run qemu with installation arguments 43 | qemu-system-x86_64 -hda $image_name -cdrom $iso_file -boot d -vga std -m 768 44 | } 45 | 46 | function run() { 47 | 48 | echo -n 'Do you want to boot 9front or 9legacy? [9front, 9legacy, 9ants] ' 49 | read opt 50 | 51 | image_name='' 52 | 53 | case $opt in 54 | 9front) 55 | image_name='9front.qcow2.img' 56 | ;; 57 | 9legacy) 58 | image_name='9legacy.qcow2.img' 59 | ;; 60 | 9ants) 61 | image_name='9ants.qcow2.img' 62 | ;; 63 | esac 64 | 65 | echo -n 'How much memory in GB should be used for this machine? (ex. 4G) ' 66 | read mem 67 | 68 | # -m option configures memory. feel free to change to match your preferences 69 | qemu-system-x86_64 -m $mem $image_name 70 | } 71 | 72 | 73 | echo -n 'Would you like to install or run Plan 9? [run, install] ' 74 | read action 75 | 76 | case $action in 77 | install) 78 | install 79 | ;; 80 | run) 81 | run 82 | ;; 83 | esac 84 | --------------------------------------------------------------------------------