ref: 3461629bdae8138029de731ed5c38d699f1e5abf
dir: /install.ms/
.TL
Install 9front in OpenBSD VMM
.AU
jrmu (jrmu@cloud9p.org)
.AB
This guide explains how to install 9front as a virtual machine inside
.LN https://wiki.ircnow.org/Vmm.Intro
OpenBSD's VMM
.LN
.AE
.ihtml img <img src="https://wiki.ircnow.org/uploads/9/plan9-desktop.png">
.ihtml img
.SH
Download the ISO
.LP
This installation assumes you (or your admin) has
.LN https://wiki.ircnow.org/Vmm.Intro
configured VMM
.LN
properly.
Inside your home folder, download the 9front ISO:
.P1
$ ftp https://9front.org/iso/9front-10522.amd64.iso.gz
$ sha256 9front-10522.amd64.iso.gz
SHA256 (9front-10522.amd64.iso.gz) = 89f1e35bf735bfc9aeca38286a9a6607f3a40292befa4a30133157790f2edbcc
89f1e35bf735bfc9aeca38286a9a6607f3a40292befa4a30133157790f2edbcc 9front-10522.amd64.iso.gz
$ gunzip 9front-10522.amd64.iso.gz
$ ln -sf 9front-10522.amd64.iso $USER.iso
.P2
.LP
Inside /etc/vm.conf, make sure your virtual machine's cdrom is set to $USER.iso:
.P1
vm "$USER" {
owner $USER
memory 2048M
cdrom "/home/$USER/$USER.iso"
disk /home/$USER/$USER.qcow2
interface {
locked lladdr aa:bb:cc:dd:ee:ff
switch "switch0"
}
}
.P2
Stop your existing virtual machine:
.P1
$ vmctl stop $USER
.P2
You may need to delete any existing data, then create a new qcow2 image, then start the virtual machine:
.P1
$ rm $USER.qcow2
$ vmctl create -s 20G $USER.qcow2
$ vmctl start -c $USER
Connected to /dev/ttyp9 (speed 115200)
Boot failed: not a bootable disk
*e820=1 0x0000000000000000 0x000000000009f800 2 0x000000000009f800 0x00000000000a0000 2 0x00000000000f0000 0x0000000000100000 1 0x0000000000100000 0x000000007fffa000 2 0x000000007fffa000 0x0000000080000000 2 0x00000000f0000000 0x0000000100000000
cdboot=yes
mouseport=ask
monitor=ask
vgasize=ask
bootfile=/amd64/9pc64
At this point, you must immediately interrupt booting to type console=0:
>console=0
ccoonnssoollee==00
Then type boot:
>>bboooott
bboooott
Plan 9
125 holes free
0x0001d000 0x0009f000 532480
0x00100000 0x00110000 65536
0x005df000 0x3365f000 856162304
856760320 bytes free
cpu0: 4600MHz GenuineIntel Xeon5000-series (AX 000206D7 CX 96982203 DX 079BA97F)
ELCR: 02E8
#l0: virtio: 1000Mbps port 0x2000 irq 5 ea f2b2b3daeb89
i8042: kbd init failed
2004M memory: 822M kernel data, 1181M user, 2431M swap
bootfs: Sun Apr 28 01:34:12 GMT 2024
fingerprint: eb2b47a2e2650e5348e2efa5bca9df39239a42c6
nusb/usbd: no hubs
/dev/sd00: OpenBSD VMM CD-ROM 001
/dev/sd00/data 9660
/dev/sdF0:
/dev/sdF0/data
bootargs is (tcp, tls, il, local!device)[local!/dev/sd00/data]
Select the default by pressing enter.
user[glenda]:
init: starting /bin/rc
cirno Jun 16 06:28:16 starting dns resolver on /net
vgasize is (text, 640x480x8, 1024x768x16, ...) [1024x768x16] text
bind: #i: no frame buffer
rio: can't open display: initdisplay: /dev/draw/new: file does not exist: '/dev/draw'
init: rc exit status: rc 216: rio 342: display open
init: starting /bin/rc
term% inst/start
Sun Jun 16 04:29:45 CET 2024 Installation process started
--------------------------------------
Preparing menu...
The following unfinished tasks are ready to be done:
configfs - choose the type of file system to install
confignet - configure the network
tzsetup - choose time zone
Task to do [configfs]:
--------------------------------------
You can install the following types of file systems:
cwfs64x the cached-worm file server
hjfs the new 9front file server (experimental!)
File system (cwfs64x, hjfs)[cwfs64x]: hjfs
--------------------------------------
Preparing menu...
The following tasks are done:
configfs - choose the type of file system to install
The following unfinished tasks are ready to be done:
partdisk - edit partition tables (e.g., to create a plan 9 partition)
mountfs - choose and mount file system partition
confignet - configure the network
tzsetup - choose time zone
Task to do [partdisk]:
--------------------------------------
The following disk devices were found.
sd00 - OpenBSD VMM CD-ROM 001
empty 0 465 (465 cylinders, 1.81 GB)
* p1 465 466 (1 cylinders, 4.00 MB) ESP
sdF0 -
Disk to partition (sd00, sdF0)[no default]: sdF0
The disk you selected HAS NO master boot record on its first sector.
(Perhaps it is a completely blank disk.)
Shall we create a blank EFI partition table (GPT)
or install traditional DOS partition table (MBR)?
Install mbr or gpt (mbr, gpt)[no default]: mbr
This is disk/fdisk; use it to create a Plan 9 partition.
If there is enough room, a Plan 9 partition will be
suggested; you can probably just type 'w' and then 'q'.
cylinder = 8225280 bytes
'* p1 0 2610 (2610 cylinders, 19.99 GB) PLAN9
>>> w
>>> q
--------------------------------------
Preparing menu...
The following tasks are done:
configfs - choose the type of file system to install
partdisk - edit partition tables (e.g., to create a plan 9 partition)
The following unfinished tasks are ready to be done:
prepdisk - subdivide plan 9 disk partition
mountfs - choose and mount file system partition
confignet - configure the network
tzsetup - choose time zone
Task to do [prepdisk]:
--------------------------------------
The following Plan 9 disk partitions were found.
/dev/sdF0/plan9
empty 0 41929587 (41929587 sectors, 19.99 GB)
Plan 9 partition to subdivide (/dev/sdF0/plan9)[/dev/sdF0/plan9]:
This is disk/prep; use it to subdivide the Plan 9 partition.
If it is not yet subdivided, a sensible layout will be suggested;
you can probably just type 'w' and then 'q'.
no plan9 partition table found
9fat 204800
nvram 1
fs 41724786
' 9fat 0 204800 (204800 sectors, 100.00 MB)
' nvram 204800 204801 (1 sectors, 512 B )
' fs 204801 41929587 (41724786 sectors, 19.89 GB)
>>> w
>>> q
--------------------------------------
Preparing menu...
The following tasks are done:
configfs - choose the type of file system to install
partdisk - edit partition tables (e.g., to create a plan 9 partition)
prepdisk - subdivide plan 9 disk partition
The following unfinished tasks are ready to be done:
mountfs - choose and mount file system partition
confignet - configure the network
tzsetup - choose time zone
Task to do [mountfs]:
--------------------------------------
Please choose your hjfs partition
--rw-r----- S 0 glenda glenda 21363090432 Apr 28 03:34 /dev/sdF0/fs
Hjfs partition (/dev/sdF0/fs)[/dev/sdF0/fs]:
Size of RAM filesystem cache (MB)? [296]:
Ream the filesystem? (yes, no)[yes]:
Starting hjfs file server for /dev/sdF0/fs
hjfs: reaming /dev/sdF0/fs
hjfs: ream successful
hjfs: fs is /dev/sdF0/fs
Configuring hjfs file server for /dev/sdF0/fs
hjfs: >create /dist sys sys 775 d
hjfs: >create /usr sys sys 775 d
hjfs: >newuser glenda
hjfs: >newuser adm +glenda
hjfs: >newuser sys +glenda
hjfs: >newuser upas +glenda
hjfs: >echo off
Mounting hjfs file server for /dev/sdF0/fs
% mount -c /srv/hjfs.newfs /n/newfs
--------------------------------------
Preparing menu...
The following tasks are done:
configfs - choose the type of file system to install
partdisk - edit partition tables (e.g., to create a plan 9 partition)
prepdisk - subdivide plan 9 disk partition
mountfs - choose and mount file system partition
The following unfinished tasks are ready to be done:
confignet - configure the network
mountdist - locate and mount the distribution
tzsetup - choose time zone
Task to do [confignet]:
--------------------------------------
We will configure the ethernet.
Please choose a method for configuring your ethernet connection.
manual - specify IP address, network mask, gateway IP address
automatic - use DHCP and SLAAC to automatically configure
Configuration method (manual, automatic)[automatic]: manual
ip address [no default]: 104.167.242.231
network mask [no default]: 255.255.255.128
gateway address [no default]: 104.167.242.129
dns server [104.167.242.129]:
starting ethernet manual config
--------------------------------------
Preparing menu...
The following tasks are done:
configfs - choose the type of file system to install
partdisk - edit partition tables (e.g., to create a plan 9 partition)
prepdisk - subdivide plan 9 disk partition
mountfs - choose and mount file system partition
confignet - configure the network
The following unfinished tasks are ready to be done:
mountdist - locate and mount the distribution
tzsetup - choose time zone
Task to do [mountdist]:
--------------------------------------
Please wait... Scanning storage devices...
/dev/sd00/data
/dev/sdF0/9fat
/dev/sdF0/data
/dev/sdF0/fs
The following storage media were detected.
Choose the one containing the distribution.
/dev/sd00/data (iso9660 cdrom)
Distribution disk (/dev/sd00/data, /dev/sdF0/fs, /)[/]:
% mount /srv/boot /n/distmedia
Which directory contains the distribution?
Location of archives [/]:
--------------------------------------
Preparing menu...
The following tasks are done:
configfs - choose the type of file system to install
partdisk - edit partition tables (e.g., to create a plan 9 partition)
prepdisk - subdivide plan 9 disk partition
mountfs - choose and mount file system partition
confignet - configure the network
mountdist - locate and mount the distribution
The following unfinished tasks are ready to be done:
copydist - copy the distribution into the file system
tzsetup - choose time zone
Task to do [copydist]:
--------------------------------------
processing /sys/lib/sysconfig/proto/allproto
file system made
--------------------------------------
Preparing menu...
The following tasks are done:
configfs - choose the type of file system to install
partdisk - edit partition tables (e.g., to create a plan 9 partition)
prepdisk - subdivide plan 9 disk partition
mountfs - choose and mount file system partition
confignet - configure the network
mountdist - locate and mount the distribution
copydist - copy the distribution into the file system
The following unfinished tasks are ready to be done:
ndbsetup - setup network configuration
tzsetup - choose time zone
bootsetup - configure hard disk to boot plan 9
Task to do [ndbsetup]:
--------------------------------------
Setup network configuration
sysname [cirno]: jrmu.host.nastycode.com
--------------------------------------
Preparing menu...
The following tasks are done:
configfs - choose the type of file system to install
partdisk - edit partition tables (e.g., to create a plan 9 partition)
prepdisk - subdivide plan 9 disk partition
mountfs - choose and mount file system partition
confignet - configure the network
mountdist - locate and mount the distribution
copydist - copy the distribution into the file system
ndbsetup - setup network configuration
The following unfinished tasks are ready to be done:
tzsetup - choose time zone
bootsetup - configure hard disk to boot plan 9
Task to do [tzsetup]:
--------------------------------------
Setup Time Zone
Time Zone (Argentina, Asia_Bahrain, Asia_India, Australia_ACT, Australia_Broken-Hill, Australia_LHI, Australia_NSW, Australia_North, Australia_Queensland, Australia_South, Australia_Sturt, Australia_Tasmania, Australia_Victoria, Australia_West, Australia_Yancowinna, Brazil_Acre, Brazil_DeNoronha, Brazil_East, Brazil_West, CET, Canada_Atlantic, Canada_Central, Canada_East-Saskatchewan, Canada_Eastern, Canada_Mountain, Canada_Newfoundland, Canada_Pacific, Canada_Yukon, Chile_Continental, Chile_EasterIsland, Cuba, EET, Egypt, GB-Eire, GMT, HST, Hongkong, Iceland, Iran, Israel, Jamaica, Japan, Libya, Mexico_BajaNorte, Mexico_BajaSur, Mexico_General, NZ, NZ_CHAT, Navajo, PRC, Poland, ROC, ROK, Singapore, Turkey, US_Alaska, US_Arizona, US_Central, US_East-Indiana, US_Eastern, US_Hawaii, US_Michigan, US_Mountain, US_Pacific, US_Yukon, Uruguay, W-SU, WET)[US_Eastern]:
--------------------------------------
Preparing menu...
The following tasks are done:
configfs - choose the type of file system to install
partdisk - edit partition tables (e.g., to create a plan 9 partition)
prepdisk - subdivide plan 9 disk partition
mountfs - choose and mount file system partition
confignet - configure the network
mountdist - locate and mount the distribution
copydist - copy the distribution into the file system
ndbsetup - setup network configuration
tzsetup - choose time zone
The following unfinished tasks are ready to be done:
bootsetup - configure hard disk to boot plan 9
Task to do [bootsetup]:
--------------------------------------
Setup Plan 9 FAT boot partition (9fat)
Plan 9 FAT partition (/dev/sdF0/9fat)[/dev/sdF0/9fat]:
dossrv: serving /srv/dos
% dd -bs 512 -count 1 -if /dev/sdF0/9fat -of /tmp/pbs.bak
1+0 records in
1+0 records out
Initializing Plan 9 FAT partition.
% disk/format -r 2 -d -b /386/pbs -l PLAN9 /dev/sdF0/9fat
Initializing FAT file system
type hard, 12 tracks, 255 heads, 63 sectors/track, 512 bytes/sec
used 4096 bytes
% mount -c /srv/dos /n/9fat /dev/sdF0/9fat
% rm -f /n/9fat/9bootfat
% cp /386/9bootfat /n/9fat/9bootfat
% chmod +al /n/9fat/9bootfat
% rm -f /n/9fat/plan9.ini
% cp /tmp/plan9.ini /n/9fat/plan9.ini
% rm -f /n/9fat/9pc64
% cp /amd64/9pc64 /n/9fat/9pc64
% mkdir -p /n/9fat/efi/boot
% cp /386/bootia32.efi /n/9fat/efi/boot/
% mkdir -p /n/9fat/efi/boot
% cp /386/bootx64.efi /n/9fat/efi/boot/
% cp /tmp/pbs.bak /n/9fat
% unmount /n/9fat
If you use the Windows NT/2000/XP master boot record
or a master boot record from a Unix clone (e.g., LILO or
FreeBSD bootmgr), it is probably safe to continue using
that boot record rather than install the Plan 9 boot record.
Install the Plan 9 master boot record (yes, no)[no default]: yes
Mark the Plan 9 partition active (yes, no)[no default]: yes
The Plan 9 partition is now marked as active.
--------------------------------------
Preparing menu...
The following tasks are done:
configfs - choose the type of file system to install
partdisk - edit partition tables (e.g., to create a plan 9 partition)
prepdisk - subdivide plan 9 disk partition
mountfs - choose and mount file system partition
confignet - configure the network
mountdist - locate and mount the distribution
copydist - copy the distribution into the file system
ndbsetup - setup network configuration
tzsetup - choose time zone
bootsetup - configure hard disk to boot plan 9
The following unfinished tasks are ready to be done:
finish - finish the installation and reboot
Task to do [finish]:
--------------------------------------
Congratulations; you've completed the install.
halting...hjfs: ending/srv/hjfs.newfs.cmd...
done halting
echo: write error: device or object already in use
rebooting...
cpu0: exiting
Takes a licking and keeps on ticking...
can't reset
.P2
At this point, plan9 is unable to reboot on its own. We escape the serial console, then stop and restart the machine. First, type ~~. then:
.P1
$ doas vmctl stop $USER
$ doas vmctl start -c $USER
host# vmctl start -c jrmu
Connected to /dev/ttyp6 (speed 115200)
MBR...pbs.................ok
*e820=1 0x0000000000000000 0x000000000009f800 2 0x000000000009f800 0x00000000000a0000 2 0x00000000000f0000 0x0000000000100000 1 0x0000000000100000 0x000000007fffa000 2 0x000000007fffa000 0x0000000080000000 2 0x00000000f0000000 0x0000000100000000
bootfile=9pc64
bootargs=local!/dev/sdF0/fs -m 296
mouseport=ask
monitor=ask
vgasize=text
ccoonnssoollee==00
bboooott
Plan 9
125 holes free
0x0001d000 0x0009f000 532480
0x00100000 0x00110000 65536
0x005df000 0x3365f000 856162304
856760320 bytes free
cpu0: 4600MHz GenuineIntel Xeon5000-series (AX 000206D7 CX 96982203 DX 079BA97F)
ELCR: 02E8
#l0: virtio: 1000Mbps port 0x2000 irq 5 ea f2b2b3daeb89
i8042: kbd init failed
2004M memory: 822M kernel data, 1181M user, 2431M swap
bootfs: Sun Apr 28 01:34:12 GMT 2024
fingerprint: eb2b47a2e2650e5348e2efa5bca9df39239a42c6
nusb/usbd: no hubs
/dev/sd00: OpenBSD VMM CD-ROM 001
/dev/sd00/data 9660
/dev/sdF0:
/dev/sdF0/9fat dos
/dev/sdF0/data
/dev/sdF0/fs hjfs
/dev/sdF0/nvram
/dev/sdF0/plan9
bootargs is (tcp, tls, il, local!device)[local!/dev/sdF0/fs -m 296]
user[glenda]:
hjfs: fs is /dev/sdF0/fs
init: starting /bin/rc
bind: #i: no frame buffer
rio: can't open display: initdisplay: /dev/draw/new: file does not exist: '/dev/draw'
init: rc exit status: rc 261: rio 391: display open
init: starting /bin/rc
term% auth/wrkey
bad nvram des key
bad authentication id
bad authentication domain
authid: glenda
authdom: example.com
secstore key:
password:
confirm password:
enable legacy p9sk1[no]:
term% 9fs 9fat
term% cd /n/9fat/
term% cat plan9.ini
bootfile=9pc64
bootargs=local!/dev/sdF0/fs -m 296
mouseport=ask
monitor=ask
vgasize=text
console=0
term% echo 'service=cpu' >> /n/9fat/plan9.ini
term% echo '@{while() {sleep 5; ip/ping 104.167.242.129}} > /dev/null &' >> /cfg/$sysname/cpustart
term% fshalt -r
halting...hjfs: ending
/srv/hjfs.cmd...
done halting
echo: write error: device or object already in use
rebooting...
cpu0: exiting
Takes a licking and keeps on ticking...
can't reset
.P2
`~~.` to escape serial console, then:
.P1
host# vmctl stop username-plan9
stopping vm username-plan9: requested to shutdown vm 6
host# vmctl start -c username-plan9
.P2
To start VNC (optional):
.P1
# vncs -A /bin/rio -s
.P2
See also <http://cloud9p.org/doc/vmm.html>.