--- title: OpenBSD notes date: 2023-11-29T20:33:48+0100 lastmod: 2023-12-10T02:36:19+0000 tags: - openbsd - python - cloudlog - zsh #showDate: false showReadingTime: false showWordCount: false showPagination: false #showAuthor: false showBreadcrumbs: true feed_exclude: true # site_exclude: true --- These are random notes -- more or less about OpenBSD. Some may not fit here well, but they could relate to OpenBSD or similar operating systems in some way... ## Get some filesystem information ```console $ dumpfs /dev/rsd1a magic 19540119 (FFS2) time Thu Nov 16 21:14:34 2023 [...] (snip; lots of output...) ``` This can be helpful if you want to know, which filesystem you actually use on your OpenBSD box. ## Create a Win95 FAT32 USB stick When you `fdisk -iy sd2` (for example) a USB stick, you usually create one single OpenBSD partition at the 4th position. When you then try to `newfs_msdos -F 32 -L Label sd2i` the layout is gone -- happened to me several times until I got fed up and investigated. I don't know why that happened, but I got my way to create USB sticks, that actually work with other devices like my amateur radios that need those fancy microSD cards. Delete the first bytes on the stick: ~~~console $ doas dd if=/dev/zero bs=1m count=1 of=/dev/rsd2c ~~~ Create the needed partition: ~~~console $ echo -n 'edit 0\n0c\n\n2048\n*\nq\n' | doas fdisk -e sd2 ~~~ A short explanation (`\n` is basically a newline; the Enter key): - `edit 0\n`: edit the first entry (`fdisk -iy sd2` would edit the 4th entry) - `0c\n`: selects **Win95 FAT32L** as file system format - `\n`: only hit enter and use the default _[n]_ - `2048\n`: Start of the partition - `*\n`: Special size value -- means the remainder of the disk (like `-1` on many other tools) - `q\n`: write MBR and quits the program This results in a partition table like this: ~~~console $ fdisk sd2 Disk: sd2 geometry: 966/255/63 [15523840 Sectors] Offset: 0 Signature: 0xAA55 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------------- 0: 0C 0 32 33 - 966 80 10 [ 2048: 15521792 ] Win95 FAT32L 1: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused 2: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused 3: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused ~~~ whereas a `fdisk -iy sd2` creates a table like this: ~~~console $ fdisk sd2 Disk: sd2 geometry: 966/255/63 [15523840 Sectors] Offset: 0 Signature: 0xAA55 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------------- 0: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused 1: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused 2: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused *3: A6 0 1 2 - 966 80 10 [ 64: 15523776 ] OpenBSD ~~~ Don't forget to create the file system: ~~~console $ doas newfs_msdos -F 32 -L 8GB_Stick sd2i ~~~ ## Packages / Ports ### ...because of libraries Updating dependencies before installing (switch `-U`) does help sometimes... > Can't install [package] because of libraries ~~~console $ doas pkg_add -uiU ~~~ Should fix that. ## Python ### ModuleNotFoundError Install python modules with pip. ~~~console $ python3 -m pip install --user --upgrade ${example_module} ~~~ ## Rust ### starship prompt This is usually blocked via the rust-battery crate, as there is still no progress made on issue [#19](https://github.com/svartalf/rust-battery/issues/19), which probably leads to no progress on issue [#2267](https://github.com/starship/starship/issues/2276). Though, there is a [comment](https://github.com/starship/starship/issues/2276#issuecomment-782818302) that disables the optional features (battery). So the final installation of Starship looks like: ~~~console $ cargo install starship --locked --no-default-features ~~~ The compilation took about 9½ minutes. ## Git ## Cloudlog (server) Cloudlog is a webapplication written in PHP that allows ham radio amateurs to log contacts online. I host my own instance on my server and I finally looked into why I never got satellites shown in SAT Timers. I use php-fpm and it is running as the user `www`. It is kind of jailed and it cannot read `/etc/ssl/cert.pem` -- so the https connections cannot be verified and it failes at downloading the satellites infos from other websites. I solved this by copying `/etc/ssl` to `/var/www/etc/ssl` via rsync, keeping file permissions intact. I may setup a cronjob for this maybe. ~~~console $ cd /var/www $ doas rsync -avhzrp /etc/ssl/ etc/ssl sending incremental file list created directory etc/ssl ./ cert.pem ikeca.cnf openssl.cnf x509v3.cnf private/ sent 155.82K bytes received 133 bytes 311.90K bytes/sec total size is 344.08K speedup is 2.21 $ doas rcctl restart php80_fpm php80_fpm(ok) php80_fpm(ok) ~~~ ## Cloudlog (client) Use of the online logging tool Cloudlog on my OpenBSD machine. First off, connect the TX-500 with the computer (CAT cable) and start `rigctld`: ```console $ rigctld -m 2014 -r /dev/cuaU0 -s 9600 -v ``` I use `2014` which is actually a Kenwood TS-2000 -- but on OpenBSD hamlib is currently at version 4.4 and the TX-500 is only available on [version ≥4.5](https://github.com/Hamlib/Hamlib/blob/master/NEWS#L199). For newer hamlib versions (≥4.5) use the rig 2050 like: ```console $ rigctld -m 2050 -r /dev/cuaU0 -s 9600 -v ``` In combination with Digirig I would probably use something like this, because otherwise Digirig would instantly key the transceiver: ```console $ rigctld -m 2014 -r /dev/cuaU0 -s 9600 --set-conf=rts_state=OFF -v ``` Well, I tested this on my desk at home but never used my Laptop for doing digital modes with my TX-500 though -- but I want this to be noted here just in case I should need it someday. On another terminal start [`cloudlogbashcat.sh`](https://github.com/g0wfv/CloudlogBashCat): ```console $ cloudlogbashcat.sh ``` Now, if you open the website of your Cloudlog installation (and if you have setup your rigs) and select the radio that uses cloudlogbashcat. ![cloudlog radio selection dialog](radio-settings-cloudlog.png "You can select your pre-defined radio in the Live QSO tab") ## Z-Shell ### Where is this alias defined? I defined an alias `ls` but I forgot where it was. ~~~console $ PS4='+%x:%I>' zsh -i -x -c '' |& grep ls ~~~ There will be a lot of screen output probably. ### Renaming multiple directories ~~~console $ count=1; zmv -n '*' '$f[1,4]/$((count++))-$f[12,-1]' mv -- 2023-08-05-problems-with-apt-keys-on-my-hotspots 2023/51-problems-with-apt-keys-on-my-hotspots mv -- 2023-08-26-dmrhost-on-a-raspberrypi4-with-openbsd-or-freebsd 2023/52-dmrhost-on-a-raspberrypi4-with-openbsd-or-freebsd mv -- 2023-09-16-openbsd-current-built-from-source 2023/53-openbsd-current-built-from-source ~~~ Moves subdirectories into other folder structure with a counting variable. ~~~console $ count=16; zmv -Q '*(/)' '$((count++))-$f[12,-1]' mv -- 2021-08-08-win10-grub2-and-uefi 16-win10-grub2-and-uefi mv -- 2021-08-12-running-n1mm-logger-on-linux 17-running-n1mm-logger-on-linux mv -- 2021-10-03-winlink-and-vara-on-linux 18-winlink-and-vara-on-linux mv -- 2021-10-03-wordlist-generation 19-wordlist-generation mv -- 2021-10-26-processes-accessing-mountpoints 20-processes-accessing-mountpoints ~~~ That was the second part, counting from where we stopped from the previous directory. There was a draft post left in `2022` which I deleted, now I had to renumber the folders from `28-*` to `34-` to a number lower by 1. ~~~console $ for i in {29..34}; do zmv -n -W $i'*' $((--i))'*'; done mv -- 29-using-nfs-on-a-raspberry-pi 28-using-nfs-on-a-raspberry-pi mv -- 30-vpn-tunnel-into-hamnet-on-fedora-36 29-vpn-tunnel-into-hamnet-on-fedora-36 mv -- 31-winlink-on-linux-fix-invalid-handle-on-logfiles 30-winlink-on-linux-fix-invalid-handle-on-logfiles mv -- 32-hamnet-on-the-pfsense 31-hamnet-on-the-pfsense mv -- 33-changing-network-metrics-on-linux 32-changing-network-metrics-on-linux mv -- 34-change-git-submodule-url 33-change-git-submodule-url ~~~ So, there is still one post left that is actually a draft post and I'd like to remove the leading number from that directory. ~~~console $ zmv -n -W '59-*' '*' mv -- 59-pat-winlink-on-openbsd pat-winlink-on-openbsd ~~~