====== Plan 9 / 9Front, the namespace, and an interactive terminal ======
* This tutorial is intended for SDF Boot Camp participants, providing them and overview.
* It's an accompaniment to the SDF Plan 9 Boot Camp tutorials.
* And, a tutorial about the Raspberry Pi 2 B.
* An amd64 terminal (''term%'') is an optional topic.
===== DRAFT tutorial =====
//====== 9front terminal on a Raspberry Pi 2 B ======//
|x|THIS IS A DRAFT|
**About**
This is a tutorial about setting-up the Plan 9 9front 1 operating system, as a terminal on a Raspberry Pi 2 Model B. The tutorial is aimed at participants in the SDF [[plan_9_9front|Plan 9 Boot Camp]] 2, but should be useful to other SDF VPS users.
The following steps assume that you have edited files while user “glenda”, have run '% fshalt' from the VPS console rc prompt (%) or Drawterm rio rc prompt (%), been able to “[s] - Force Shutdown”, “[r] - reset or start” from the VPS Maintenance Shell, and have used 9front Drawterm successfully.
The [[sdf|SDF]] [[plan_9_9front|Plan 9 / 9Front]] [[sdf_virtual_private_server_service|VPS]], 9front Drawterm, and a 9front 9pi terminal are independent. This tutorial is for educational purposes, and provides additional information about a 9pi. The 9front [[vps_-_9front#front_drawterm|Drawterm]] works __very__ well. Yet, some participants may decide to read about a 9pi terminal. The SDF //Boot Camp// participants study virtualized //amd64 9front//.
1 [[http://fqa.9front.org/fqa1.html|Plan9front]] (or //9front//) is a fork of the //Plan 9// from [[ https://9p.io/plan9/index.html|Bell Labs operating system]]; [[wp>Plan_9_from_Bell_Labs#Derivatives_and_forks|Plan 9 Derivatives and forks]]. 2 [[wp>Booting|Booting]]
==== Less ambitious: ====
ISO \\ [[http://9front.org/iso/]] \\ *pi.img.gz
Nightly ISO \\ [[http://iso.only9fans.com/]] \\ *pi.img.gz
**Note**:
RELEASE \\ [[http://www.9front.org/releases/]] \\ The pi.img file can be used for Raspberry Pi 1, 2, and 3. \\ The pi3.img file can be used for Raspberry Pi 3 and 4 (11/23/2023; //9FRONT “HUMANBIOLOGICS” RELEASED (2023/11/22)//).
^ //ISO// ((The //Raspberry Pi 2 Model B// available memory is limited, failing if there are too many updates, during an initial ''sysupdate''.)) or //Nightly ISO//? ^ 1 day ^
| ✔ ISO ((A recent //Nightly ISO// may have an update, during an initial ''sysupdate''.)) | https://www.wolframalpha.com/input?i=11%2F23%2F2023+to+2023%2F11%2F22 |
| The pi3.img file can be used for Raspberry Pi 3 and 4 (11/18/2023; //9FRONT “DON’T TOUCH THE ARTWORK” RELEASED (2023/06/25)//.) ||
^ //ISO// ((The //Raspberry Pi 2 Model B// available memory is limited, failing if there are too many updates, during an initial ''sysupdate''.)) or //Nightly ISO//? ^ 4 months 23 days ^
| ✔ Nightly ISO ((A recent //Nightly ISO// may have an update, during an initial ''sysupdate''.)) | https://www.wolframalpha.com/input?i=11%2F18%2F2023+to+2023%2F06%2F25 |
| The pi3.img file can be used for Raspberry Pi 3 and 4 (1/27/2021; 9FRONT “EMAILSCHADEN” RELEASED 2020/10/19). ||
OR
==== More ambitious: ====
Appendix J - Junk \\ Raspberry Pi \\ [[http://fqa.9front.org/appendixj.html]]
==== CAUTION: ====
|[%%:!:%%] ((The [%%:!:%%] is interchangeable with a //[CAUTION]//, for the [[plan9front_-_acme_sam_abaco_mothra_and_man#abaco|abaco]], and [[plan9front_-_acme_sam_abaco_mothra_and_man#mothra|mothra]] browsers. :!:))|CAUTION||[%%:!:%%] ((The [%%:!:%%] is interchangeable with a //[CAUTION]//, for the [[plan9front_-_acme_sam_abaco_mothra_and_man#abaco|abaco]], and [[plan9front_-_acme_sam_abaco_mothra_and_man#mothra|mothra]] browsers. :!:))|CAUTION||[%%:!:%%] ((The [%%:!:%%] is interchangeable with a //[CAUTION]//, for the [[plan9front_-_acme_sam_abaco_mothra_and_man#abaco|abaco]], and [[plan9front_-_acme_sam_abaco_mothra_and_man#mothra|mothra]] browsers. :!:))|CAUTION|[%%:!:%%] ((The [%%:!:%%] is interchangeable with a //[CAUTION]//, for the [[plan9front_-_acme_sam_abaco_mothra_and_man#abaco|abaco]], and [[plan9front_-_acme_sam_abaco_mothra_and_man#mothra|mothra]] browsers. :!:))|
Cautionary instructions for **working with SD cards** can be found here:
Installing operating system images \\ [[https://web.archive.org/web/20210127164336/https://www.raspberrypi.org/documentation/installation/installing-images|https://www.raspberrypi.org/documentation/installation/installing-images/]] //(1/27/2021; external archive)//\\ "Writing the image" \\ "How you write the image to the SD card will depend on the operating system you are using."
* Linux
* Mac OS
* Windows
* Chrome OS
=== The copy to an SD card process: ===
**Linux**:
|[%%:!:%%] ((The [%%:!:%%] is interchangeable with a //[CAUTION]//, for the [[plan9front_-_acme_sam_abaco_mothra_and_man#abaco|abaco]], and [[plan9front_-_acme_sam_abaco_mothra_and_man#mothra|mothra]] browsers. :!:))|Run ''lsblk -p'' to see which devices are currently connected to **your machine**.|
|[%%:!:%%] ((The [%%:!:%%] is interchangeable with a //[CAUTION]//, for the [[plan9front_-_acme_sam_abaco_mothra_and_man#abaco|abaco]], and [[plan9front_-_acme_sam_abaco_mothra_and_man#mothra|mothra]] browsers. :!:))|The mentioned ''/dev/sdc'' may __not__ apply to **your machine**. Locate the proper SD card designation, first.|
|[%%:!:%%] ((The [%%:!:%%] is interchangeable with a //[CAUTION]//, for the [[plan9front_-_acme_sam_abaco_mothra_and_man#abaco|abaco]], and [[plan9front_-_acme_sam_abaco_mothra_and_man#mothra|mothra]] browsers. :!:))|Do not guess. Verify first.|
| **..**|Optionally, a separate computer can be used, where there is no danger of damaging a hard drive.|
* Run ''lsblk -p'' to see which devices are currently connected to your machine. lsblk -p
* ( [%%:!:%%] ((The [%%:!:%%] is interchangeable with a //[CAUTION]//, for the [[plan9front_-_acme_sam_abaco_mothra_and_man#abaco|abaco]], and [[plan9front_-_acme_sam_abaco_mothra_and_man#mothra|mothra]] browsers. :!:)) CAUTION) ''/dev/sdc'' may __not__ apply to **your machine**.
sudo dd bs=1M if=9pi.img of=/dev/sdc
lsblk -p
umount /dev/sdc1
sync
|x|THIS IS A DRAFT|
=== The copy image process: ===
* Insert the MicroSD card.
* Start the Raspberry Pi 2 B.
% 9fs pidos
% cp /sys/src/9/bcm/9pi2 /n/pidos/9pi2
Edit **cmdline.txt** if needed:
% cd /n/pidos/
% lc cmdline.txt
% sam cmdline.txt
|[%%:!:%%]((The [%%:!:%%] is interchangeable with a //[CAUTION]//, for the [[plan9front_-_acme_sam_abaco_mothra_and_man#abaco|abaco]], and [[plan9front_-_acme_sam_abaco_mothra_and_man#mothra|mothra]] browsers. :!:))|Add text with a single space separator, for example “mouseport=ps2intellimouse”; all “cmdline.txt” entries remain on a **single line**.|
Example of additional **cmdline.txt** text:
console=0 mouseport=ps2intellimouse
* Optional ( [%%:!:%%] ((The [%%:!:%%] is interchangeable with a //[CAUTION]//, for the [[plan9front_-_acme_sam_abaco_mothra_and_man#abaco|abaco]], and [[plan9front_-_acme_sam_abaco_mothra_and_man#mothra|mothra]] browsers. :!:)) CAUTION) example: console=0 mouseport=ps2intellimouse nobootprompt=local!#S/sdM0/fs user=glenda
* [%%:!:%%] ((The [%%:!:%%] is interchangeable with a //[CAUTION]//, for the [[plan9front_-_acme_sam_abaco_mothra_and_man#abaco|abaco]], and [[plan9front_-_acme_sam_abaco_mothra_and_man#mothra|mothra]] browsers. :!:)) //local!#S/sdM0/fs// is an **example** only.
* Boot the 9pi without the optional example.
* Replace //local!#S/sdM0/fs// with what is displayed during a successful boot.
=== An overclock the Pi 2 B process: ===
Modify (optional) the default ''config.txt'' file:
[pi2]
kernel=9pi2
gpu_mem=16
disable_overscan=1
arm_freq=900
force_turbo=1
=== A start networking process: ===
* The example is using [[wp>Dynamic_Host_Configuration_Protocol|DHCP]].
* [%%:!:%%] ((The [%%:!:%%] is interchangeable with a //[CAUTION]//, for the [[plan9front_-_acme_sam_abaco_mothra_and_man#abaco|abaco]], and [[plan9front_-_acme_sam_abaco_mothra_and_man#mothra|mothra]] browsers. :!:)) The ''ndb/dns'' example is __only__ applied initially, and __not__ required for //[[plan9front_terminal_on_a_raspberry_pi_2_b#less_ambitious|Less ambitious]]//. The results are retained. Entering it again will result in a message: “another dns instance is running”. % ndb/dns
* % ip/ipconfig
==== Timezone: ====
**Configure a Time zone process**:
* [[vps_-_9front#configure_a_time_zone|Configure a Time zone]]
**The shutdown process**:
* % fshalt
==== The start network process: ====
* Start the Raspberry Pi.
% ip/ipconfig
% date
* Check the ''date'' after waiting a minute, if needed for validating the network connection.
% date
**Note**:
|The pi.img file can be used for Raspberry Pi 1, 2, and 3.|
|The pi3.img file can be used for Raspberry Pi 3 and 4. The “/sys/src/9/bcm/9pi2” is intended for the Raspberry Pi 2, or Raspberry Pi 3, only.|
====== A Plan 9 9front SDF Boot Camp tutorial application ======
- From the Plan 9 VPS Drawterm rio rc cpu prompt (%): % aux/listen1 -t 'tcp!*!rcpu' /rc/bin/service/tcp17019
- From the Plan 9 9front Raspberry Pi rio rc terminal prompt (%): % rcpu -h YOUR_IP -u glenda
password:
!
- (This __may__ take time.)
- From the Plan 9 VPS Drawterm rio rc prompt (%):
- Press the [Delete] key once.
- Enter the following to determine if any additional rcpu listening remains active. % ps -a | grep rcpu
* Note: Half the battle is figuring out where to place the mice, since two mice are the used in this tutorial.
* The mentioned 9pi terminal prompt (term%) [[vps_-_9front#at_the_rio_rc_prompt|features]] were absent until the 9pi was connected (''rcpu'') to a cpu.
* The mentioned 9pi terminal [[vps_-_9front#at_the_rio_rc_prompt|feature]] behavior may provide a topic for further discussion.
* The 9pi terminal example is not intended to replace Drawterm.
* Additional review is required to determine if a 9pi terminal is suitable.
* Further //study (([[https://9p.io/wiki/plan9/Configuring_a_standalone_CPU_server/index.html| Configuring a Standalone CPU Server]]))// is necessary to configure a 9pi cpu.
* The 9pi terminal may benefit from additional configuration (TBD).
==== Additional files: ====
* Create a file on the cpu (cpu%) machine.
#!/bin/rc
echo 'invite 9pi .. please connect.'
aux/listen1 -t 'tcp!*!rcpu' /rc/bin/service/tcp17019
*
chmod 755 invitemy9pi
* Create a file on the 9pi term (term%) machine.
#!/bin/rc
echo 'receive 9pi .. please connect.'
rcpu -h YOUR_IP -u glenda
*
chmod 755 recmy9pi
====== A Plan 9 9front rcpu application ======
From the plan9front Raspberry Pi rio rc terminal prompt (%):
=== Edit the /lib/ndb/local file: ===
* The ''echo 'auth=9p.sdf.org authdom=9sdf' >> /lib/ndb/local'' is __only__ applied initially. The results are retained. % echo 'auth=9p.sdf.org authdom=9sdf' >> /lib/ndb/local
=== Check if factotum is running: ===
term% ps | grep factotum
glenda 100 0:00 0:00 168K Pread factotum
* Start factotum if it is __not__ running.
term% auth/factotum
=== RCPU to 9p.sdf.org ===
* A ''9p.sdf.org'' user name (''-u USER'') is required.
% rcpu -h 9p.sdf.org -u USER
password:
!
* Once connected to //9p.sdf.org//:
cpu% cd $home
* Start the //rio (([[vps_-_9front#from_rio|Details about rio]])) (([[plan9front_-_drawterm_rio_and_stats|More details about rio]]))// window system:
cpu% rio
* Start ''[[vps_-_9front#command_reminder|stats -lmisce]]'' in a new //rio (([[vps_-_9front#from_rio|Details about rio]])) (([[plan9front_-_drawterm_rio_and_stats|More details about rio]]))// rc window:
cpu% stats -lmisce
=== An incorrect password repair example: ===
% cat /mnt/factotum/ctl
key proto=dp9ik dom=9sdf user=USER !password?
% echo 'delkey proto=dp9ik dom=9sdf user=USER' > /mnt/factotum/ctl
%
===== Updating the 9pi =====
I.) Updating the 9pi system:
1. type 'sysupdate' - note if changes are brought in.
(you can 'cat /bin/sysupdate' to see how it works)
2. cd /
3. . /sys/lib/rootstub (you can 'cat /sys/lib/rootstub' to see)
4. cd /sys/src
5. mk install
II.) Updating the kernel:
1. cd /sys/src/9/bcm
2. mk
III.) Installing the new kernel:
1. type 9fs pidos
# be careful:
2. cp /sys/src/9/bcm/9pi2 /n/pidos/9pi2
3. fshalt -r
IV.) The 9pi should boot completely up-to-date.
* Installing the new kernel:
% cd
%
% 9fs pidos
% cp /sys/src/9/bcm/9pi2 /n/pidos/9pi2
% fshalt -r
* Start networking & check date:
% ip/ipconfig
% date
[[spreading_the_word_about_sdf|{{https://sdf.org/sdfbanner.png|Spreading the word about SDF}}]]
|x|THIS IS A DRAFT|
===== 9fs link =====
|x|DRAFT [%%:FIXME:%%] ((The [%%:FIXME:%%] is interchangeable with a //[%%FIXME%%]//, for the [[plan9front_-_acme_sam_abaco_mothra_and_man#abaco|abaco]], and [[plan9front_-_acme_sam_abaco_mothra_and_man#mothra|mothra]] browsers. FIXME))|
|x|[[misc:newuser_raspberry_pi_2_b|newuser]]; //con -C /srv/hjfs.cmd//||
|x|[[misc:newuser_raspberry_pi_2_b|sdflink]]; //…post//|//com, bboard -s//|
===== To be determined =====
==== Least ambitious?: ====
* It may be possible to use a 9front terminal (''term%'') from a CD-Rom boot [%%:FIXME:%%] ((The [%%:FIXME:%%] is interchangeable with a //[%%FIXME%%]//, for the [[plan9front_-_acme_sam_abaco_mothra_and_man#abaco|abaco]], and [[plan9front_-_acme_sam_abaco_mothra_and_man#mothra|mothra]] browsers. FIXME)).
* The hardware must support networking.
* Exclude timezone configuration step.
* To be determined