wm: doc

ref: 3e90c5e08960e0fd88d17f0094d80fd76bfa83fd
dir: /install.ms/

View raw version
# Install

In this guide, we explain how to install 9front as a virtual machine inside OpenBSD's vmm. See also <http://cloud9p.org/doc/vmm.html>.

https://wiki.ircnow.org/uploads/9/plan9-desktop.png

In /etc/vm.conf: 

vm "username-plan9" {
    owner username
    memory 2048M
    cdrom "/home/iso/9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.amd64.iso"
    disk /home/username/username-plan9.qcow2 
    interface {
        locked lladdr aa:bb:cc:dd:ee:ff
        switch "switch0"
    }
}

Download the 9front ISO: 

$ ftp https://9front.org/iso/9front-10522.amd64.qcow2.gz
$ doas mv 9front-10522.amd64.qcow2.gz /home/iso/
$ cd /home/iso
$ sha256 9front-10522.amd64.qcow2.gz
SHA256 (9front-10522.amd64.qcow2.gz) = 54550d09d83aa8223c043ab1e95d3f6d08b781c089ac0d684848c69a4e03e347
54550d09d83aa8223c043ab1e95d3f6d08b781c089ac0d684848c69a4e03e347      9front-10522.amd64.qcow2.gz
$ gunzip 9front-10522.amd64.qcow2.gz
$ doas chown -R iso:iso /home/iso/

Create a user account and make sure to set the folder as go-rx: 

$ doas su $USER
$ doas chmod -R go-rx /home/$USER

In the home folder:

$ vmctl create -s 20G $USER.qcow2

Then log out of the user with ^D, then as admin user in group wheel: 

$ doas vmctl reload
$ vmctl start -c $USER
    Connected to /dev/ttypr (speed 115200)                                                  
    Boot failed: not a bootable disk                                                        
    
    *e820=1 0x0000000000000000 0x000000000009f800 2 0x000000000009f800 0x00000000000a0000 2 
    0x00000000000f0000 0x0000000000100000 1 0x0000000000100000 0x000000003fffc000 2 0x000000
    003fffc000 0x0000000040000000 2 0x00000000fffc0000 0x0000000100000000                   
    cdboot=yes                                                                              
    mouseport=ask                                                                           
    monitor=ask                                                                             
    vgasize=ask                                                                             
    bootfile=/386/9pc                                                                       
    >console=0                                                                              
    ccoonnssoollee==00
    
    >>bboooott
    
    bboooott
    
    
    Plan 9
    125 holes free
    0x00021000 0x0009f000 516096
    0x00100000 0x00110000 65536
    0x005dd000 0x19cc8000 426684416
    427266048 bytes free
    cpu0: 4600MHz GenuineIntel Xeon5000-series (AX 000206D7 CX 96982203 DX 079BA97F)
    ELCR: 02E8
    #l0: virtio: 1000Mbps port 0x2000 irq 5 ea f2b2b3daeb05
    i8042: kbd init failed
    1000M memory: 413M kernel data, 587M user, 1212M swap
    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] 
    user[glenda]: 
    
    init: starting /bin/rc
    cirno Sep 23 06:50:25 starting dns resolver on /net
    vgasize is (text, 640x480x8, 1024x768x16, ...) [1024x768x16] text
    bind: #i: no frame buffer
    init: rc exit status: rc 215: webcookies 330: interrupt
    
    init: starting /bin/rc
    % inst/start
    Thu Sep 23 04:51:42 CET 2021 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 485       (485 cylinders, 1.89 GB) 
     * p1                 485 486       (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 Jul 18 17:25 /dev/sdF0/fs
    
    Hjfs partition (/dev/sdF0/fs)[/dev/sdF0/fs]: 
    Size of RAM filesystem cache (MB)? [192]: 
    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:
            configdist      - choose the source of the distribution archive
            confignet       - configure the network
            tzsetup - choose time zone
    
    Task to do [configdist]: 
    
    --------------------------------------
    Are you going to download the distribution
    from the internet or do you have it on local media?
    
    Distribution is from (local, net)[local]: 
    
    --------------------------------------
    
    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
            configdist      - choose the source of the distribution archive
    
    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]: 
    starting ethernet automatic config                                                      
    ipconfig: write(try fe80::f0b2:b3ff:feda:eb05 /64): interface does not support multicast
    ipconfig: can't start IPv6 on /net/ether0, address fe80::f0b2:b3ff:feda:eb05
    ipconfig: dialicmp6: cs: can't translate address                                    
    
    --------------------------------------                                                  
    
    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                                
            configdist      - choose the source of the distribution archive                 
            confignet       - configure the network                                         
    
    The following unfinished tasks are ready to be done:                                    
            mountdist       - locate and mount the distribution                             
            download        - download or continue to download the distribution archives    
            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?                                              
    Any of the following will suffice (in order of preference):                             
            - the root directory of the cd image                                            
            - the directory containing 9front.iso                                           
            - the directory containing 9front.iso.bz2                                       
    
    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
            configdist      - choose the source of the distribution archive
            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               
            configdist      - choose the source of the distribution archive
            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]: username.example.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
            configdist      - choose the source of the distribution archive
            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, Au
    stralia_LHI, Australia_NSW, Australia_North, Australia_Queensland, Australia_South, Aust
    ralia_Sturt, Australia_Tasmania, Australia_Victoria, Australia_West, Australia_Yancowinn
    a, 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_BajaN
    orte, Mexico_BajaSur, Mexico_General, NZ, NZ_CHAT, Navajo, PRC, Poland, ROC, ROK, Singap
    ore, 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]: US_Central
    
    --------------------------------------                                                  
    
    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                                
            configdist      - choose the source of the distribution archive          
            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 #s/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 /n/newfs/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 /n/9fat/plan9.ini /n/9fat/9pc
    % cp /n/newfs/386/9bootfat /n/9fat/9bootfat
    % chmod +al /n/9fat/9bootfat
    % cp /tmp/plan9.ini /n/9fat/plan9.ini
    % cp /n/newfs/386/9pc /n/9fat/
    % mkdir -p /n/9fat/efi/boot
    % cp /386/bootia32.efi /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
            configdist      - choose the source of the distribution archive
            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...halted at Thu Sep 23 05:46:49 2021.
    /srv/cwfs.newfs.cmd...
    done halting
    rebooting...
    cpu0: exiting
    Takes a licking and keeps on ticking...
    can't reset
    

At this point, plan9 is unable to reboot on its own, so type `~~.` then: 



    $ doas vmctl stop username-plan9
    $ doas vmctl start -c username-plan9
    



    Connected to /dev/ttyph (speed 115200)
    MBR...pbs.................ok
    *e820=1 0x0000000000000000 0x000000000009f800 2 0x000000000009f800 0x000000000
    00a0000 2 0x00000000000f0000 0x0000000000100000 1 0x0000000000100000 0x0000000
    03fffc000 2 0x000000003fffc000 0x0000000040000000 2 0x00000000fffc0000 0x00000
    00100000000                                                                   
    bootfile=9pc
    bootargs=local!/dev/sdF0/fs -m 192
    mouseport=ask
    monitor=ask
    vgasize=text
    ccoonnssoollee==00
    
    bboooott
    
    
    Plan 9
    126 holes free
    0x0001a000 0x0009f000 544768
    0x0060a000 0x0ffff000 262098944
    262643712 bytes free
    cpu0: 4623MHz GenuineIntel Xeon5000-series (AX 000206D7 CX 96982203 DX 079BA97
    F)
    ELCR: 02E8
    #l0: virtio: 1000Mbps port 0x2000 irq 5 ea de4baa668f07
    i8042: kbd init failed
    1024M memory: 256M kernel data, 767M user, 1392M swap
    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 192] 
    user[glenda]: 
    hjfs: fs is /dev/sdF0/fs
    
    init: starting /bin/rc
    ipconfig: write(try fe80::dc4b:aaff:fe66:8f07 /64): interface does not support multicast
    ipconfig: can't start IPv6 on /net/ether0, address fe80::dc4b:aaff:fe66:8f07
    ipconfig: dialicmp6: cs: can't translate address
    bind: #i: no frame buffer
    rio: can't open display: initdisplay: /dev/draw/new: '/dev/draw' file does not exist
    init: rc exit status: rc 260: rio 396: display open
    
    init: starting /bin/rc
    % auth/wrkey
    bad nvram des key
    bad authentication id
    bad authentication domain
    authid: glenda
    authdom: username.example.com
    secstore key:                               
    password: 
    % 9fs 9fat
    % echo 'service=cpu' >> /n/9fat/plan9.ini
    % echo 'while() { sleep 5; ip/ping 38.87.162.1 > /dev/null } &' >> /bin/cpurc
    % fshalt -r
    

`~~.` to escape serial console, then: 



    host# vmctl stop username-plan9     
    stopping vm username-plan9: requested to shutdown vm 6
    host# vmctl start -c username-plan9 
    

To start VNC (optional): 



    # vncs -A /bin/rio -s