NetBSD Planet


February 08, 2023

NetBSD Blog FOSDEM 2023

FOSDEM took place last week-end, as an offline-first event again for the first time since 2020. It was located as usual at the university campus of the ULB in Brussels. It was packed with developers, users, passionate and professionals of Open Source software, and while NetBSD did not have a booth this year, its presence could be felt on Saturday morning at the BSD DevRoom thanks to the many developers who made it to the conference.

Together with Rodrigo Osorio of the FreeBSD project, I had the pleasure to help manage the DevRoom, have a front seat for the talks, and even start the session by introducing the BSD Driver Harmony initiative.

The staff and respective speakers are currently busy uploading slides and reviewing videos, so keep in mind to check again for new content in the coming few days and weeks if you missed anything or need to dig further into any event from this awesome conference!

Finally, I would like to thank the NetBSD Foundation for sponsoring me to manage the room and attend the GSoC meet-up.

Ruben Schade Fixing “app source not there” in Homebrew

I’ve moved on to NetBSD’s excellent pkgsrc tool for most of my macOS package needs, but I still use Homebrew to install graphical applications.

Today I attempted to upgrade a package, but in my half-asleep stupor I deleted the bundle from the Applications folder first. Derp. This lead to:

$ brew upgrade --cask 86box   
==> Error: 86box: It seems the App source '/Applications/86Box/86Box.app' is not there.

Installing again didn’t work, for perhaps obvious reasons:

$ brew install --cask 86box
==> Warning: Cask '86box' is already installed.

Forcing a reinstall did the trick:

$ brew reinstall --cask 86box
==> Uninstalling Cask 86box
==> Purging files for version 3.11,4311 of Cask 86box
==> Installing Cask 86box
==> Moving App '86Box.app' to '/Applications/86Box/86Box.app'
🍺  86box was successfully installed!

By Ruben Schade in Sydney, 2023-02-08.


February 07, 2023

/r/NetBSD It’s worth running a FreeBSD or NetBSD desktop
submitted by /u/jaypatelani
[link] [comments]
Pullup 9 [pullup-9 #1588] sparc64 unprivileged user crash
/r/NetBSD mksmolnb: a tool to generate a NetBSD microvm

I've been toying with the NetBSD kernel binary (no rebuild) in order to disable every driver that's not needed in a virtualized environment (kvm/VirtIO) so it can boot in less than 100ms.
The project took the form of a microvm creation tool that's able to setup very small NetBSD images that can boot a service in about 200ms.
mksmolnb can leverage another tool I wrote a couple of years ago, sailor, in order to build very small images bundling only the strict necessary libraries and binaries.

submitted by /u/iMil
[link] [comments]
UnitedBSD New install NetBSD 9.3 X86_64 BIOS version wireless configured.

First time Dell Vostro 3350 i7 NetBSD 9.3 install. I set up wireless (athn0) as a precursor to the install, from the network configuration menu. Everything worked fine during install. # ifconfig at this time shows status as "no network". However, everything appears to be configured properly in /etc/wpa_supplicant.conf and /etc/rc.conf.

I can start the connection manually by running /etc/rc.d/wpa_supplicant start and /etc/rc.d/network restart, however this is getting tiresome at best.

The relevant section of /etc/rc.conf read as follows:

dhcpcd=YES
dhcpcd_flags="-qM athn0"
wpa_supplicant=YES
wpa_supplicant_flags="-B -s -i athn0 -D bsd -c /etc/wpa_supplicant.conf"

Can anyone help?

UnitedBSD `du -h | sort -h` alternative for NetBSD

With GNU coreutils and FreeBSD I have become used to seeing the largest items in a directory with the command du -sh ./* | sort -h. In this post I'll show an alternative I have implemented for NetBSD, which I recently started using.

Here is an example of the output of du -sh ./* | sort -h:

[email protected] ~/sort-h-test> du -sh ./* | sort -h
4.0K    ./compbench
20K     ./lsblk
11M     ./hicolor
22M     ./netbsd.bak
43M     ./caddy.tgz
76M     ./caddy
333M    ./go

The NetBSD version of sort(1) does not implement -h (FreeBSD man page for comparison) to sort numbers with unit prefixes. It made me look for a workaround. I did not want to implement my own sort(1), so instead I chose to "humanize" already sorted du output. For this I wrote a script I called humsize. Its output looks like this:

[email protected] ~/sort-h-test> du -sk ./* | sort -n | humsize
   2.0K ./compbench
  18.0K ./lsblk
  10.4M ./hicolor
  21.5M ./netbsd.bak
  42.2M ./caddy.tgz
  74.9M ./caddy
 322.0M ./go

Here is the source code of the script (with a permissive license):

#! /usr/bin/awk -f
# humsize -- humanize du(1) output. This is useful for systems without
# `sort -h`. Use the output of `du -k`. For example,
# $ du -sk ./* | sort -n | humsize
#
# https://opensource.org/licenses/Fair
#
# Copyright 2023 D. Bohdan.
#
# Usage of the works is permitted provided that this instrument is
# retained with the works, so that any entity that uses the works is
# notified of this instrument.
#
# DISCLAIMER: THE WORKS ARE WITHOUT WARRANTY.

BEGIN {
  # Options. Set with `humsize -v varname=value`.
  if (f == "") {
    # What field to humanize.
    f = 1
  }
  if (format == "") {
    # The format string: first the size, then the unit prefix.
    format = "%6.1f%s"
  }

  u_last = 0
  u[++u_last] = "K"
  u[++u_last] = "M"
  u[++u_last] = "G"
  u[++u_last] = "T"
}

# Pass through headers and such.
$f + 0 != $f {
  print
}

$f + 0 == $f {
  size = $f
  i = 1
  while (size > 1024 && i < u_last) {
    size /= 1024
    i++
  }

  $f = sprintf(format, size, u[i])
  print
}

February 06, 2023

UnitedBSD Laptop screen color calibration

All these years, for the longest time, I always put through with washed out colors along with a horrible blue/purple tint and awkward saturation misconfigurations on my old ThinkPads. I thought it was part of the game to endure trashy screens using old second-hand hardware. Well, turns out the shittiness of old LCD panels is mostly due to bad or (most likely) lack of any color calibration rather than hardware specifications.

Just learned today that laptops with graphics support on NetBSD can be color calibrated using xcalib. Best thing of all, the configurations are very fine grained. You can manually change each red/green/blue color channel along with gamma/brightness/contrast.

Feels unreal to be able to say that I can now see NEUTRAL GREY COLORS on the shitty TN panel on my ThinkPad x250 and actually do some graphic design work on my laptop without having to rely on a color calibrated external monitor.

Almost all LCD screens, even if the same model has slightly different color misconfigurations, so you'll have to change these settings to match your screen - but here's the xcalib settings that I used as an example:

xcalib -red 1.1 0 98 -green 1.2 0 99 -blue 1.4 0 84 -a

The value order is gamma/brightness/contrast.

Each time you run xcalib it will just increment the values so you'll have to reset with xcalib -c.

To start with a blank slate: xcalib -red 1 0 100 -green 1 0 100 -blue 1 0 100 -a (should do nothing)
And from there you can try lowering the contrast of the color channel that is too strong on your screen.

Gamma = midtones (the higher in difference of value the less of that color)
E.g. -red 1 0 100 -green 1 0 100 -blue 1.5 0 100 -a will have less blue color in the midtones. Increasing gamma value for all color channels will make the colors pop more.

Brightness = Highlights (probably don't have to change the value from 0)

Contrast = Overall tint of your screen (biggest visible change)

Have fun color calibrating!

Ruben Schade It’s worth running a FreeBSD or NetBSD desktop

Every few months, someone asks me not how to install a FreeBSD or NetBSD desktop, but whether it’s worth doing. Michał Sapka emailed with this most recent comment:

Third: could I ask for some “FreeBSD as daily driver” article? You, a co-worker and Vermaden made me very bsd-curious but there’s a lot people in the webs saying that bsd on desktop is a bad idea. That it’s a server-only use case.

I’d say it’s worth it! But it also depends on what you want to get out of it.

A desktop is a great introduction if you’ve never used BSD before. It teaches you about package management, how the base system is structured, building your first OpenZFS pool, how to perform updates, and in the case of FreeBSD, how to run tools like jails for process isolation, and bhyve for virtual machines. It’s these use cases that happen to make the FreeBSD desktop extremely compelling for me. While understood to be “server” technologies, they also make upgrading foolproof, and the testing new software and architectures a cinch.

On the NetBSD side, I’ve seen the OS bring old hardware back to life, and make budget hardware scream. My Pentium III tower I built as a Windows 98 game machine is dual booted with the latest i386 release of NetBSD (because why not), and my FreeBSD Japanese Panasonic Let’s Note is currently booting NetBSD too for some experiments. It’s as though both machines have had free hardware upgrades, the difference is so stark.

Addressing the proverbial room elephant however, running a BSD desktop does come with its own challenges. FreeBSD is fortunate enough to have Nvidia binary drivers, but Wi-Fi and open-source AMD drivers tend to lag behind. NetBSD also gets even less attention from large vendors than the other BSDs, though in my experience, it sometimes edges out FreeBSD in laptop support. Most of your favourite Linux desktop software is probably available in FreeBSD ports or NetBSD pkgsrc, and those that aren’t can probably be cross compiled. But while FreeBSD’s Linuxulator can run some Linux-only binaries, there are some things you won’t be able to run.

If you’re familiar with installing Linux, I’d put the experience somewhere between a desktop-focused distribution like Fedora, and a LEGO set like Arch. You’ll end up at a shell upon first boot, but you can speed run the installers and have a desktop from packages installed with only a few commands. (In fact, the base systems are literally tarballs, which comes with a whole set of other benefits that are beyond the scope of this post, but are waiting for you if you start using BSD seriously)!

But as I eluded to above, I also acknowledge the existence of the real world. I have colleagues and clients who expect documents written in specific software packages, and I want to run specific games and other proprietary software. For these, I delegate to my Mac, and my Fedora partition. I could run everything I need on those machines and do away with desktop BSD, but I wouldn’t enjoy it.

And that’s kind of the whole point. My FreeBSD desktop workstation is my favourite computer to use. Since I first took the plunge into the BSDs, it’s clicked in a way other systems haven’t. It was fun to tinker and try something new, especially an OS with that history and lineage going back to the original AT&T UNIX. And now I have something that works great for me. There’s this pervasive attitude in IT and hustle culture nonsense that you should have to justify and monetise everything you do. Sometimes you need to give yourself permission to tinker.

If anyone is interested, the FreeBSD Handbook and NetBSD Guide are your best places to start. Vermaden, Tubsta, GaryH Tech, and RoboNuggie also create great BSD tutorials. Provided you’re a bit careful with your hardware choices, and have reasonable expectations about software compatibility, you might be surprised how polished an experience it can be.

By Ruben Schade in Sydney, 2023-02-07.

Pullup 9 [pullup-9 #1587] Tag layered file systems as MPSAFE only if all lower layers are MPSAFE.
NetBSD Installation and Upgrading on DaemonForums UEFI & eMMC (?)
Has anyone successfully installed NetBSD 10.0 to an eMMC disk using UEFI?

(I had a quick go yesterday, but it didn't work, so just wondering if anyone has been successful.)
/r/NetBSD UEFI & eMMC (?)

Has anyone successfully installed NetBSD 10.0 to an eMMC disk using UEFI?

(I had a quick go yesterday, but it didn't work, so just wondering if anyone has been successful.)

submitted by /u/Camtaf
[link] [comments]
Pullup 9 [pullup-9 #1586] next68k MAKEDEV fix
Pullup 9 [pullup-9 #1585] VAXstation 3100 smg(4) framebuffer fix

February 04, 2023

Pullup 9 [pullup-9 #1584] [[email protected]: CVS commit: src/lib/libc/thread-stub]

February 03, 2023

Benny Siegert pkgsrc and a Call for Action
I have been a pkgsrc developer for several years. For what it’s worth, I think pkgsrc is wonderful: a large selection of third-party software, packaged so that it is easy to install with a single command – either building everything from source, or relying on binary packages. pkgsrc supports dozens of OSes – not just NetBSD but also other BSDs, macOS, Linux, Illumos and more. On the other hand, unfortunately, pkgsrc and NetBSD in general are suffering from what I would call a loss of mindshare.

January 30, 2023

/r/NetBSD pkgsrc.se is no more :(
submitted by /u/nsp0323
[link] [comments]
UnitedBSD Wayland compositor

New to Wayland development. I have a fresh Debian install (requisite driver is in linux kernel, I hope to one day port it first to FreeBSD then to NetBSD) with no desktop environment. I have a basic understanding of system administration in Linux, and used to be absolutely enamored with it. Less so am I anymore. I am moving to BSD because A) it satisfies my need to do shit in ways that most people in my own culture don’t, and B) I prefer the BSD license to GPL, as it gives you, the programmer, more freedom. Oh yeah, and systemd. Red Hat/IBM can eat a bag of dicks.

My current initiative is to write a fairly simple compositor shell, likely using wlroots, that starts at boot and displays the standard boot messages as if it weren’t there. When it reaches the login screen, I’d like for it to display a background image with an inset terminal emulator. Once you login, the environment will adjust according to a config file found in the users home directory, but still be operated from the inset terminal. It will have a bar where there will be an application menu, current open applications, workspaces (Maybe, I don’t really use them) and notifications. I personally have no need to implement a desktop filing system as I prefer the clean look, but if it develops a userbase who wants that, maybe. I absolutely will not use Qt, and I’d prefer staying away from GTK, although I would like to figure out how to make it compatible with GTK themes. I might rewrite portions of Wayfire (wobbly windows, 3D workspaces) in Vulkan so I don’t have to use whichever license Wayfire uses, while still having access to those effects. I’d like to be able to release it using the BSD license, does Wayland use GPL?

I’m curious; since I have no experience with Wayland development, where should I begin? It’d likely be easiest to start with a session compositor.


January 28, 2023

Pullup pkgsrc [pullup-pkgsrc #6727] Pullup of devel/git to 2.39.1
Unix Stack Exchange FreeBSD kernel change to NetBSD kernel

Is it possible to swap to the NetBSD kernel in FreeBSD?

As stated in the title, I would like to change the kernel of my Unix build from FreeBSD to NetBSD, as I prefer the philosophy of the rump kernel to that of a monolithic, but prefer the lexicography and semantics of FreeBSD's system applications. The current build is fresh, with only sudo, neovim and git installed. It is running in a VM, so I don't think any additional drivers are installed, if that is optional during the install process. (I've installed OS's so many times that it is practically subconscious for me) Sorry if this question seems a tab bit junior to you, I'm an idiot with limited SysAdmin skills. My question is this: is it possible to swap to the NetBSD kernel in FreeBSD? If so, I will build the kernel from source and swap it.


January 27, 2023

Super User MediaTek MT7921 Wireless LAN driver [closed]

TL;DR The driver I need is in the Linux kernel. I would like to go about rewriting\porting it to NetBSD. I also would like to use some kernel module service so that I don't have to compile the entire kernel to test the driver.

New to BSD, coming from Linux. My laptop (Asus FX706LI) uses the MediaTek MT7921. Although I've never installed linux on this laptop, I know the driver is in Linux 5.12 and subsequent kernels. I am to the point that I'd like to try modifying the driver to work with BSD. I currently have NetBSD running on a QEMU virtual machine, and I'd like to find a service that will allow me to add kernel modules so I don't need to rebuild the kernel for every attempt. Any documentation and whatever you may consider useful is welcomed.

UnitedBSD MediaTek MT7921 Wireless LAN driver

TL;DR The driver I need is in the Linux kernel. I would like to go about rewriting\porting it to NetBSD. I also would like to use some kernel module service so that I don't have to compile the entire kernel to test the driver.

New to BSD, coming from Linux. My laptop (Asus FX706LI) uses the MediaTek MT7921. Although I've never installed linux on this laptop, I know the driver is in Linux 5.12 and subsequent kernels. I am to the point that I'd like to try modifying the driver to work with BSD. I currently have NetBSD running on a QEMU virtual machine, and I'd like to find a service that will allow me to add kernel modules so I don't need to rebuild the kernel for every attempt. Any documentation and whatever you may consider useful is welcomed.

/r/NetBSD MediaTek MT7921 Wireless LAN driver
submitted by /u/RoscoDubois
[link] [comments]

January 26, 2023

Pullup pkgsrc [pullup-pkgsrc #6726] pullup-request: pkgsrc/net/bind916
Ruben Schade The OSs I use most often

I’ve waxed lyrical about my operating systems I prefer to use, including the BSDs and plenty of ancient systems for nostalgic pointlessness. But what about what I actually run most often on a daily basis for work and personal activities?

It turned out to be an easy exercise to quantify and sort them, though the order did surprise me a little:

  1. macOS
  2. Linux
  3. FreeBSD
  4. Windows Server
  5. Windows 11

To clarify, this only accounts for machines to which I have direct access. I suspect Linux would shoot to the top if I included systems I use indirectly, including most web services. I have a 70/30 love/hate relationship with Tux, but there’s no question he’s taken over the world.

FreeBSD’s lower placement is its own fault. My FreeBSD virtual servers, homelab gear, and work machines truck along with very little active effort most of the time, thanks in no small part to OpenZFS and periodic scrubs. “Solid” is a qualitative metric that’s hard to define, but it’s how it feels.

Still, I’m disappointed in myself that I didn’t get NetBSD, DOS, and some 8-bit systems higher.

By Ruben Schade in Sydney, 2023-01-26.


January 24, 2023

Pullup pkgsrc [pullup-pkgsrc #6725] [[email protected]: CVS commit: pkgsrc/www]

January 23, 2023

Pullup 8 [pullup-8 #1796] ixgbe update
Pullup 8 [pullup-8 #1795] wm(4) qemu fix

January 20, 2023

Pullup 8 [pullup-8 #1794] please pullup xorg security fixes for netbsd-8.
Pullup 8 [pullup-8 #1793] [[email protected]: CVS commit: src/usr.bin/locate/locate]
Pullup 8 [pullup-8 #1792] x86 cpuctl(8) update

January 17, 2023

Ruben Schade FreeBSD pipes and redirection, via @klarainc

Today’s installment of things you already know, unless you don’t comes from Klara Systems:

Redirection in #FreeBSD allows you to save the output from a command to a file or pass it on as the input for another command.

Basic forms of redirection with | for pipes and < and > for I/O of files date back to very early UNIX where the concept was first pioneered.

Pipes and redirection were one of those lightbulb moments I had with *nix, albeit on Red Hat Linux at the time. Years later I accidentally realised I could even use them on DOS, albeit in a more limited capacity.

We take a lot of tooling for granted on these systems, because their use has become second nature. It’s a testament to those forward-thinking engineers.

(I’m sure some shortsighted Linux developer is already looking to extend systemd with redirectd(1) that only accepts JSON or something).

By Ruben Schade in Sydney, 2023-01-18.

Pullup pkgsrc [pullup-pkgsrc #6724] PR/57167 CVS commit: pkgsrc/lang/ruby31-base (fwd)

January 15, 2023

Ruben Schade Ben Sidran, Moose the Mooche

It’s Music Monday time! Each and every Monday, except when I don’t, I share a song and tag it with Music Monday; hence the timing and name of the aforementioned series. Though I was tempted to call it Tuesday Tunes, and have it only discuss kuih flavours and my favourite pkgsrc installation from that week.

Funny story, a childhood partner in crime wanted to open a hot dog stand and call it Just Burgers. Jono Augustus, how are you going my friend? Did you know there’s a chain of Western breakfast restaurants in Japan that bear your name? Bare? But I digress from this digression.

Play Ben Sidran - Moose The Mooch

Today’s Music Monday takes us back to a recording studio in 1978, to hear one of my favourite lyrical deliveries of any jazz song ever.

He thought he could find a new love in Paris, France
He’s gonna do the Paris dance!

Well when he got to town
All he found
Was he couldn’t speak French

By Ruben Schade in Sydney, 2023-01-16.

Pullup pkgsrc [pullup-pkgsrc #6723] qt6 fixes for NetBSD/i386
DragonFly BSD Digest HAMMER2/NetBSD

HAMMER2 file system for NetBSD.  (there’s been foreshadowing)


January 13, 2023

DragonFly BSD Digest Always ASCII

NetBSD ASCII flag for the bootloader.  (via)


January 12, 2023

Frederic Cambus NetBSD ASCII flag for the bootloader

As mentioned in my “Customizing NetBSD boot banners” article, it’s really easy to customize NetBSD boot banners using the boot.cfg configuration file.

In a previous life, I used to draw ASCII art (mostly in the pre-2000 era) and more precisely a type of ASCII art referred as newschool ASCII in the artscene. By taking advantage of the extended character set (the 128 to 255 range) of the IBM PC’s code page 437, it was possible to achieve great detail and really smooth curves. Some examples can be found at the bottom of my online gallery.

Attempting to draw the NetBSD flag in ASCII and use it when booting in both NetBSD/i386 and NetBSD/amd64 in BIOS mode was thus too tempting, so here we go.

The NetBSD flag in full glory, loaded in TheDraw:

NetBSD ASCII Flag

And here is a screenshot of the NetBSD x86 bootloader:

NetBSD ASCII Flag in the bootloader

And this is how it could look like with colors and a customized VGA palette:

NetBSD ASCII Flag in the bootloader

Unfortunately, the extended ASCII characters do not display correctly when booting in EFI mode, at least on the machine I tested on, but I suspect it will likely be the case on other implementations as well.

As specified in the Human Interface Infrastructure part (33.2.7.2 subsection) of the UEFI specification, UEFI requires platform support of a font containing the basic Latin character set. So extended ASCII support is not mandatory, and there is no guarantee that the characters would be the same between fonts used by different EFI firmwares anyway.

The boot.cfg configuration file can be downloaded here. Enjoy!

OS News DragonFlyBSD’s HAMMER2 file-system being ported on NetBSD

NetBSD continues using the FFS file-system by default while it’s offered ZFS support that has been slowly improving — in NetBSD-CURRENT is the ability to use ZFS as the root file-system if first booting to FFS, for example. There may be another modern file-system option soon with an effort underway to port DragonFlyBSD’s HAMMER2 over to NetBSD.

The GitHub repository has the code if you’re up for contributing.


January 07, 2023

Stack Overflow How to implement a hello world system call in NetBSD [closed]

I want to implement a hello world system call in NetBSD. I am following the NetBSD documentation where I am able to make add system call in src/sys/kern/syscalls.master list. But the documentation says you need to rebuild libc and reboot with a new kernel. I am not able to understand how to rebuild libc and then reboot. Can someone please help me how to rebuilt libc and reboot.

Also how shall I test my system call with the new kernel loaded.


January 02, 2023

NetBSD Blog Reproducible Builds Summit Venice 2022

The sixth Reproducible Builds Summit took place exactly two months ago in Venice, Italy. These three days of workshops were filled with a succession of interactive sessions, where everyone attending had the opportunity to present or learn about anything related to Build Reproducibility. This included the status of specific Open Source projects, techniques to locate, analyse, and understand issues, or also how to explain and communicate better around this topic.

rb.svg

But what is this about?

Reproducible Builds are a set of software development practices that create an independently-verifiable path from source to binary code.

Why is this important?

Anyone may inspect the source code of Free and Open Source Software for correctness or vulnerabilities. However, most software is distributed pre-compiled, with no method to confirm whether it actually corresponds to the source code published. This allows attacks in a number of different situations, from a malicious developer to network attacks, or the compromise of build infrastructure.

What can be done about it?

The purpose of Reproducible Builds is therefore to allow the verification that no vulnerabilities or backdoors have been introduced during the compilation process. By promising identical results for a given source, Build Reproducibility allows multiple third-parties to compare “correct” results, and to flag any deviations as suspect and worthy of scrutiny.

How is NetBSD doing in this regard?

The base system of NetBSD can be built reproducibly since its 8.0 release! It can be enabled in mk.conf when building NetBSD for instance.

And in pkgsrc?

A first step has been implemented, when using GCC on NetBSD to build packages. Some important tools have been packaged, such as diffoscope. However, further aspects of build reproducibility are not covered in pkgsrc yet, and we welcome contributions to improve this situation! This would help bring this additional security mitigation to the NetBSD community as well as to other systems and users of pkgsrc.

Summary and conclusion

If not already, you should definitely consider Build Reproducibility for your environment or software projects. It also applies to firmware, when sources are available. Thankfully NetBSD offers this ability for the base system already, but more work is required for packages.

As for myself, it was an honour and a pleasure to attend the Summit, keep in touch with the community, participate to the event, learn from everyone attending, and obviously to represent the NetBSD Foundation there. I am looking forward to the next Summit, which should take place in Hamburg from October 30th to November 2nd of 2023.

In the meantime, do not hesitate to get in touch, including to the NetBSD Foundation or to the pkgsrc community specifically, if you want to get involved with any aspect of Build Reproducibility or represent the NetBSD or pkgsrc projects for the Reproducible Builds community.


December 31, 2022

NetBSD General on DaemonForums A 'live' NetBSD.....?
There used to be a 'live' version of NetBSD, but it seems to have been dropped, but OpenBSD & FreeBSD still have people producing theirs, so I was wondering if any of our gurus could produce a new one(?).

I don't personally need it, but it seems a shame that the other flavours have them - & they are a great way to introduce newcomers to the BSDs.

December 30, 2022

DragonFly BSD Digest pkgsrc-2022Q4 out

pkgsrc-2022Q4 branch released.


December 21, 2022

NetBSD General on DaemonForums NetBSD 10 Beta available
As the title says - https://blog.netbsd.org/tnf/entry/ne...beta_available

December 20, 2022

NetBSD Blog NetBSD 10.0 BETA available

After nearly 3 whole years of development (work started on NetBSD 10 in late 2019), BETA snapshots have finally been published for interested users to test. More changes will be backported from the development branch over the next few months before we tag a final release, so the BETA images will keep getting updated.

What to expect

While NetBSD 10.0 is expected to be a major milestone on performance, especially on multi-core systems, currently the BETA builds have some extra kernel diagnostics enabled that may reduce performance somewhat.

Among the features you can expect to find in NetBSD 10 are reworked cryptography, including compatibility with WireGuardⓇ, automatic swap encryption, new disk encryption methods, and CPU acceleration in the kernel. In hardware support, there are updated GPU drivers from Linux 5.6, support for more ARM hardware (including Rockchip RK356X, NXP i.MX 8M, Amlogic G12, Apple M1, and Raspberry Pi 4), support for new security features found in the latest ARM CPUs, and support for Realtek 2.5 gigabit and new Intel 10/25/40 gigabit ethernet adapters. compat_linux has been ported to AArch64 and DTrace has been ported to MIPS. For retrocomputing enthusiasts, there's improved multiprocessor support on Alpha, and more iMac G5 support. The Xen hypervisor support has received a major rework. There are various new userspace programs, including blkdiscard(8) to manually TRIM a disk, aiomixer(1) to control audio volume, realpath(1), and fsck_udf(8). And loads more...

There are many little details that might be relevant to admins when upgrading from NetBSD 9, so wait and read the final release announcement before you upgrade any production systems. Please note that networking setups using tap(4) as a bridge endpoint must be modified to use vether(4) instead, and compat_linux is no longer built into the kernel for security reasons (load it as a module instead). DisplayPort and HDMI audio is now enabled in the default x86 kernel, so you might need to change the default audio device with audiocfg(1) if you're not getting any sound output. blacklistd(8) was renamed to blocklistd(8).

Downloads

Packages

Third-party software is available from pkgsrc, as ever. Binary packages are available for amd64, and I hope to publish binaries for i386 shortly.

Reporting bugs

You can report bugs here!


November 10, 2022

NetBSD General on DaemonForums PKGIN does not start without full path
Hi folks,

this my first attempt ever to install NetBSD, following the main guide it suggests to install "pkgin", so I did, but now I can't call it directly and I have to use the full path ("/usr/pkg/bin/pkgin").

Clearly I made a "pebacak" somewhere... But what is it? :confused:

Thanks,
F.

EDIT: NOW WORKS... :eek:

EDIT 2: NOW WORKS but all the other packages require full path instead :eek: :eek: :eek:

November 05, 2022

Stack Overflow NetBSD: Cannot execute ELF binary written and built for FreeBSD (without using libraries)

I am building a collection of system utilities in C but with the restriction that I cannot use any system libraries, just direct system calls. This program was originally designed for FreeBSD, but I assumed that it would be simple to port between the BSDs.

It compiled fine (as soon as I added the getargs macro for x86_64), but then when I ran it I got this error.

# ./binaries/echo hello world
-sh: Cannot execute ELF binary ./binaries/echo

I decided to check what happened with gdb and I got this

(gdb) r hello world
Starting program: /root/small-utils/binaries/echo
exec: Cannot execute ELF binary /root/small-utils/binaries/echo
/usr/src/external/gpl3/gdb/lib/libgdb/../../dist/gdb/target.c:2170: internal-error: void target_mourn_inferior(ptid_t): Assertion `ptid == inferior_ptid` failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) y

This is a bug, please report it. For instructions, see:
<http://www.gnu.org/software/gdb/bugs/>.

/usr/src/external/gpl3/gdb/lib/libgdb/../../dist/gdb/target.c:2170: internal-error: void target_mourn_inferior(ptid_t): Assertion `ptid == inferior_ptid` failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Create a core file of GDB? (y or n) y
[1]   Abort trap (core dumped) gdb ./binaries/echo

The code can be found on GitHub at https://github.com/minneelyyyy/small-utils. For now it is just echo.


October 23, 2022

DragonFly BSD Digest In Other BSDs for 2022/10/22

It’s Long Article Title week!

 


October 18, 2022

DragonFly BSD Digest SEMIBUG: NetBSD and Security, tonight

SEMIBUG is hosting a presentation by David Maxwell on security and NetBSD, tonight.  It’s hosted online so if you can read this, you can attend.


October 15, 2022

NetBSD Blog NetBSD Arm on Oracle Cloud

Support for running NetBSD on Oracle Cloud Arm-Based Compute Instances has been added to NetBSD -current.

A build of NetBSD/evbarm64 after 2022-10-15 will generate a bootable image (arm64.img.gz) that can be converted to a Custom Image that can run on Oracle Cloud.

To get started, the image needs to be converted to QCOW2 format:

   $ gunzip arm64.img.gz
   $ qemu-img convert -f raw -O qcow2 arm64.img netbsd.qcow2

Next, upload the image to an Oracle Cloud storage bucket.

Once the QCOW2 file has been uploaded, switch to Compute / Custom Images and click Import image. Set an image name, make sure the Operating system field is set to Linux, and select the bucket and object name for your uploaded image. Make sure to select QCOW2 as the Image type. Set the mode to Paravirtualized mode.

After the image is imported, click Edit details and clear all checkboxes except for VM.Standard.A1.Flex. You could also try BM.Standard.A1.160 (bare metal instance) but this is untested. Once the compatible shapes have been updated, click Save changes.

Now click Edit image capabilities, and under the Firmware heading, uncheck BIOS and click Save changes.

Finally, to create an instance, click the Create instance button. Make sure to either provide SSH keys, or download the generated private key in the Add SSH keys section. Click the Create button to start the instance.

The Instance details page will assign you a public IP address. Once the instance has started, you can ssh to it with the SSH key used during image creation as user opc.

   $ ssh -i ssh-key-2022-10-15.key [email protected]
   Last login: Sat Oct 15 18:50:51 2022 from y.y.y.y
   NetBSD 9.99.101 (GENERIC64) #9: Sat Oct 15 15:35:49 ADT 2022

   Welcome to NetBSD!

   This is a development snapshot of NetBSD for testing -- user beware!

   Bug reports: https://www.NetBSD.org/support/send-pr.html
   Donations to the NetBSD Foundation: https://www.NetBSD.org/donations/
   -- UNSAFE KEYS WARNING:

           The ssh host keys on this machine have been generated with
           not enough entropy configured, so may be predictable.

           To fix, follow the "Adding entropy" section in the entropy(7)
           man page and after this machine has enough entropy, re-generate
           the ssh host keys by running:

                   sh /etc/rc.d/sshd keyregen
   instance-20221015-1520$ sysctl machdep.dmi
   machdep.dmi.system-vendor = QEMU
   machdep.dmi.system-product = KVM Virtual Machine
   machdep.dmi.system-version = virt-4.2
   machdep.dmi.chassis-vendor = QEMU
   machdep.dmi.chassis-type = QEMU
   machdep.dmi.chassis-version = virt-4.2
   machdep.dmi.chassis-asset-tag = OracleCloud.com
   machdep.dmi.processor-vendor = QEMU
   machdep.dmi.processor-version = virt-4.2
   machdep.dmi.processor-frequency = 2000 MHz

October 06, 2022

NetBSD Installation and Upgrading on DaemonForums NetBSD: installing to a specific existing partition
I've been testing some of the BSDs in qemu and then on real hardware. I have certain specific requirements including these next two.

One: the BSD must be installed to an existing partition, without disturbing any of the other partitions.

Two: the BSD must not touch the existing boot loader.

So far, OpenBSD can be made to do this. Yay!

NetBSD is another matter. After consulting documentation, and after many tries, I am beginning to suspect that NetBSD can only be installed by letting it trash everything else on the disk and then putting in its own boot-loader. I did, at one point, find an older page describing how to do it, but it did not correspond to the current installer.

Can NetBSD correctly be installed to a specified partition without touching the rest of the SSD/HD? If so, how?

p.s. Yes I set the partition to a9 ahead of time. ;)

October 04, 2022

The NetBSD Foundation Two New Security Advisoriers: NetBSD-SA2022-003, NetBSD-SA2022-004

October 02, 2022

The NetBSD Foundation New Security Advisory: NetBSD-SA2022-002

September 24, 2022

NetBSD Blog The Geeks way of checking what the outside wheather is like

Prologue

When I bought my house in 2004 I went shopping for a outside thermometer - and ended up with a full weather-station instead (a WS2300). When I unpacked it I found a serial cable inside...

Long story short - I was still in the process of recabling the house (running ethernet to every room) and added a serial cable from the machine room to the WS2300, and then did some pkgsrc work and got misc/open2300 and misc/open2300-mysql. I used those to log the data from the weather-station to a mysql database, and later moved that (via misc/open2300-pgsql) to a postgres database.

Now sometime this year the machine running that database had to be replaced (should have done that earlier, it was power hungry and wasteful). The replacement was an aarch64 SoC (a Pine64 Quartz64 model A) - and it had no real com ports (of course) any more. I had experimented with USB serial adapters and the WS2300 before, but for unclear reasons this time I had no luck and couldn't get it to work. Since some of the outdoor sensors of the old weather-station had started failing, I decided to replace it.

New Weather-Station, new Sensors

I picked a WS3500 because it comes with a nice remote sensor arrangement:

I attached it to a satellite dish mount about 1.2m above my garage and ran a two wire cable through the mount to supply it with 3V and get rid of any batteries. It does not have a connector for that, but the battery compartment had enough space for a 330µF elco and soldering that and the cable directly to the battery contacts was easy.

The sensors report to the weather-station via a proprietary protocol in the 868 MHz band.

New Weather-Station, new Reporting

The weather-station can connect to a wifi network but does not offer any services itself. The app used to configure the station offers several predefined weather collection services.

I found the idea a bit strange to have my local weather data logged to some server somewhere else in the cloud and then get it back via my browser, but for others this is a good thing. I found this article that describes exactly the remote-only, no machines required on-site setup. I used that article as inspiration for the data collection (but that part turned out to be quite trivial, see below) and copied a lot of the presentation site from it (also more details below).

So in my setup I created web servers on two dedicated ports of my tiny machine running the postgres server. One is used by the weather-station for reporting the data, the other is used to query the database.

The configuration of the weather-station for a custom server was easy:

I tested the ecowitt protocol first. It uses a post to a fixed URL and the form data has nearly identical data as we get with the solution I ended up with - only a few names (of form fields) are slightly different.

The blacked items "StationID" and "StationKey" appear verbatim in the reported data, you can set them to whatever you want - the scripts below do not check them.

The weather underground protocol does a simple http GET and provides all data as query parameters (I had to add the trailing question mark in the configuration). This makes it very easy to extract the data in a script on the server side.

But lets get there step by step. NetBSD comes with a http/https server in base, originally called "bozohttpd". It is very lightweight, but it can run various types of scripts - I picked the plain old simple CGI and /bin/sh as language, using a bit of awk to convert units.

First I added two users, so I could separate file access rights. This is how they look like in vipw:

weatherupdate:*************:1004:1004::0:0:Weather Update Service:/weather/home:/sbin/nologin
weatherquery:*************:1005:1004::0:0:Weather Query Service:/weather/query:/sbin/nologin
and two httpd instances for them /etc/inetd entry to collect the incoming data:

88		stream	tcp	nowait:600	weatherupdate	/usr/libexec/httpd	httpd -q -c /weather/cgi /weather/files
89		stream	tcp	nowait:600	weatherquery	/usr/libexec/httpd	httpd -q -c /weather/cgi -M .js "text/javascript" - - /weather/files

The document root (/weather/files) would not be used for the instance on port 88, but httpd needs one. Note that these lines use the quiet flag ("-q") which is only available in netbsd-current. You can replace it with "-s" for older versions.

The home directories of both users are mostly empty, besides a .pgpass file that contains the password for this user connection to the postgres server. They look like this:

127.0.0.1:5432:weatherhistory:open2300:xxxxxxxxxxxxxx

where "weatherhistory" is the datebase and "open2300" is the name of the postgres user for the update script and the password is x-ed out. The other file looks very similar:

127.0.0.1:5432:weatherhistory:weatherquery:xxxxxxxxxxx

At the postgres level the user "weatherquery" needs to have SELECT privilege on the table "weather", and "open2300" needs to have INSERT privilege. The table schema (output of "pg_dump -s") looks like this:

--
-- Name: weather; Type: TABLE; Schema: public; Owner: weathermaster
--

CREATE TABLE public.weather (
    "timestamp" timestamp without time zone DEFAULT '1970-01-01 00:00:00'::timestamp without time zone NOT NULL,
    temp_in double precision DEFAULT '0'::double precision NOT NULL,
    temp_out double precision DEFAULT '0'::double precision NOT NULL,
    dewpoint double precision DEFAULT '0'::double precision NOT NULL,
    rel_hum_in integer DEFAULT 0 NOT NULL,
    rel_hum_out integer DEFAULT 0 NOT NULL,
    windspeed double precision DEFAULT '0'::double precision NOT NULL,
    wind_angle double precision DEFAULT '0'::double precision NOT NULL,
    wind_chill double precision DEFAULT '0'::double precision NOT NULL,
    rain_1h double precision DEFAULT '0'::double precision NOT NULL,
    rain_24h double precision DEFAULT '0'::double precision NOT NULL,
    rain_total double precision DEFAULT '0'::double precision NOT NULL,
    rel_pressure double precision DEFAULT '0'::double precision NOT NULL,
    wind_gust double precision DEFAULT 0 NOT NULL,
    light double precision DEFAULT 0 NOT NULL,
    uvi double precision DEFAULT 0 NOT NULL
);

ALTER TABLE public.weather OWNER TO weathermaster;

--
-- Name: weather weather_pkey; Type: CONSTRAINT; Schema: public; Owner: weathermaster
--
ALTER TABLE ONLY public.weather
    ADD CONSTRAINT weather_pkey PRIMARY KEY ("timestamp");

--
-- Name: TABLE weather; Type: ACL; Schema: public; Owner: weathermaster
--
GRANT INSERT ON TABLE public.weather TO open2300;
GRANT SELECT ON TABLE public.weather TO weatherquery;

As noted above, I carried this database over (with minor modifications) from previous instances of the whole setup - so it may not be optimal or elegant. One thing that needs special attention is the "timestamp" column - it carries date/time in UTC and has no timezone associated. This looked like a natural choice, but has some unexpected consequences. When querying data in JSON format, "timestamp" will not get the JavaScript marker for "UTC", a "Z" suffix. So in the JavaScript code in the web pages you will find quite a few places that cover up for this.

Now when the weather station sends data to the configured server, inetd(8) runs httpd(8) and that invokes a shell script /weather/cgi/update.cgi as the "weatherupdate" user. This script uses awk(1) to do a few unit conversions and output a SQL command to insert the data into the "weather" table. This SQL command is then piped to psql(1) with the connection string passed on the command line. The corresponding password is found in ~/.pgpass of the "weatherupdate" user.

The script looks like this:

#! /bin/sh

TZ=UTC; export TZ

awk -v $( echo "$QUERY_STRING" | sed 's/\&/ -v /g' ) 'BEGIN {

temp=(tempf-32)/1.8;
indoortemp=(indoortempf-32)/1.8;
dewpt=(dewptf-32)/1.8;
windchill=(windchillf-32)/1.8;
windspeed=windspeedmph*1.609344;
windgust=windgustmph*1.609344;
rain=rainin*25.4;
dailyrain=dailyrainin*25.4;
totalrain=totalrainin*25.4;
rel_preasure=baromin/0.029529980164712;

printf("INSERT INTO weather VALUES ('"'"'%s'"'"', %f, %f, %f, %d, %d, %f, %d, %f, %f, %f, %f, %f, %f, %f, %f);\n",
	strftime("%F %T"),
	indoortemp,
	temp,
	dewpt,
	indoorhumidity,
	humidity,
	windspeed,
	winddir,
	windchill,
	rain, dailyrain, totalrain,
	rel_preasure,
	windgust,
	solarradiation, UV);

}' | psql "hostaddr='127.0.0.1'dbname='weatherhistory'user='open2300'" > /dev/null 2>&1

Note that it explicitly sets the timezone to UTC. The input data comes (as defined by CGI) via the QUERY_STRING environment variable, as a set of "field=value" items, separated by &. They are converted to sets of "-v" args for the awk invocation via a simple sed script.

With this in place, the weather-station adds a record every five minutes to the database, and it was fun to check it via SQL, but for reasons not quite clear to me most of the rest of the family did not like that kind of access very much.

psql (14.5)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

weatherhistory=> select min(temp_out), max(temp_out) from weather;
  min  | max  
-------+------
 -18.1 | 80.9
(1 row)

I initially thought the 80.9°C were measured while I was soldering the power cable, but apparently they were fallout from the sometimes failing sensors of the old station. The database has 2840 rows with temp_out > 40°C and all of them are 80.something. I should replace them with an average of the neighbor records.

Presenting the data

So I needed an internal web site. Which needs access to the data. The above setup already paved the way for that, via the second port I set up. I wanted to show all the current data in one page, and variable history data on another - which meant two CGI scripts to query the data. The /weather/cgi/latest.cgi script just fetches the last record logged and creates a JSON from it, and also uses pom(6) and the sunwait(1) program from pkgsrc to supply some site and date specific data:

#! /bin/sh

PATH=/usr/games:/usr/pkg/bin:$PATH

GEOPOS="51.505554N 0.075278W"	# geographic position of this weather station
UPDATE=300			# seconds between updates

# This script uses psql(1) from pkgsrc/databases/postgresql14-client,
# pom(6) from the NetBSD games set and pkgsrc/misc/sunwait.

# collect global site data: sunrise and friends
eval $( sunwait report ${GEOPOS} | awk -F": " '
	/Sun directly north/	{
		printf("zenith=\"%s\"\n", $2);
	}
	/Daylight:/		{
		split($2,v," to ");
		printf("sunrise=\"%s\"\nsunset=\"%s\"\n", v[1], v[2]);
	}
	/with Civil twilight:/	{
		split($2,v," to ");
		printf("dawn=\"%s\"\ndusk=\"%s\"\n", v[1], v[2]);
	}
	/It is: Day/ {
		printf("day=true\n");
	}
	/It is: Night/ {
		printf("day=false\n");
	}
' )

# moon phase
eval $( pom | awk '-F('	'
	/The Moon is Full/	{ printf("moontrend=\"-\"\nmoon=100\n"); }
	/The Moon is New/	{ printf("moontrend=\"+\"\nmoon=0\n"); }
	/First Quarter/		{ printf("moontrend=\"+\"\nmoon=50\n"); }
	/Last Quarter/		{ printf("moontrend=\"-\"\nmoon=50\n"); }
	/Waxing/		{
		a=$0;
		sub(/^.*\(/, "", a);
		sub(/%.*$/, "", a);
		printf("moontrend=\"+\"\nmoon=%d\n", a+0);
	}
	/Waning/		{
		a=$0;
		sub(/^.*\(/, "", a);
		sub(/%.*$/, "", a);
		printf("moontrend=\"-\"\nmoon=%d\n", a+0);
	}
' )

# start the json output
printf "\n\n{ \"site\": { \"updates\": ${UPDATE},
	\"dawn\": \"${dawn}\", \"sunrise\": \"${sunrise}\",
	\"zenith\": \"${zenith}\", \"day\": ${day},
	\"sunset\": \"${sunset}\", \"dusk\": \"${dusk}\",
	\"moon\": { \"trend\": \"${moontrend}\", \"percent\": ${moon} }\n}, \"weather\":\n"

# fill database results
printf "WITH t AS ( SELECT * FROM weather ORDER BY timestamp DESC LIMIT 1 ) SELECT row_to_json(t) FROM t;\n" |
	psql --tuples-only --no-align "hostaddr='127.0.0.1'dbname='weatherhistory'user='weatherquery'"

# terminate json
printf "\n}\n"

As you can see, if you would restrict output to plain data from the database, the script would be only four or five lines long. But I like the additional spicing.

The /weather/cgi/history.cgi script fetches rows between two timestamps passed to it (in JSON timestamp format) and answers with a JSON containing an array of all the data in the requested time window:

#! /bin/sh

COND=$( echo "${QUERY_STRING}" | tr '&' '\n'| sed -e 's/%22/\"/g' -e 's/%3A/:/g' | awk '
	/from=/	{ v=$0; sub(/^[^"]*\"/, "", v); sub(/\".*$/, "", v); arg_from=v; }
	/to=/	{ v=$0; sub(/^[^"]*\"/, "", v); sub(/\".*$/, "", v); arg_to=v; }
	END	{
		if (arg_from && arg_to) {
			printf("timestamp >= '"'"'%s'"'"' AND timestamp <= '"'"'%s'"'"'\n",
			    arg_from, arg_to);
		}
	}
' )

if [ -z "${COND}" ]; then
	# printf "could not parse: ${QUERY_STRING}\n" >> /tmp/sql.log
	exit 0;
fi

# start output
printf "\n\n"

# printf "${COND}\n" >> /tmp/sql.log

# fill database results
printf "WITH t AS ( SELECT * FROM weather WHERE ${COND} ORDER by timestamp ASC ) SELECT json_agg(t) FROM t;\n" |
	psql --tuples-only --no-align "hostaddr='127.0.0.1'dbname='weatherhistory'user='weatherquery'" # 2&>> /tmp/sql.err

Fetching this data now is easy in JavaScript.

We have a request URL defined as a const, like this:

const queryURL = 'http://weatherhost.duskware.de:89/cgi-bin/history.cgi?';

and then add (if needed) the paramaters for the query, like in this example function that gets passed a from-date and a to-date:

function showData(fromD, toD)
{
        var url = new URL(queryURL);
        url.searchParams.append("from", '"'+fromD.toJSON()+'"');
        url.searchParams.append("to", '"'+toD.toJSON()+'"');
        fetch(url).then(function(response) {
                return response.json();
        }).then(function(data) {
                makeGraphs(data);
                updateButtons();
        }).catch(function(error) {
                console.error(error)
        });   
}

When the answer from the server arrives, it is decoded as JSON and returned as input data to the next function that makes some graphs from the data array. Finally a few buttons are updated (in this example the time window is put into a start and a end date control.

Inspired by the post mentioned above I used canvas gauges for the display of the latest data and dygraphs for the display of historic data.

Here is an example of how the latest display looks:

And here is how the history display looks:

I have put an archive of the cgi scripts and web pages here, and also for the curious who just want to peek at the full glory of my web design skills the start page (showing the latest weather data) and the history page.

Besides those files, you will need

Then you should be ready to go - easy, isn't it? And no heavy weight dependencies or pkgs needed.

What about other weather stations?

There are quite a few similar weather stations out there now that seem to run "related" firmware and have similar capabilities. Most likely the update script (and details in the presentation pages) will need adjustements for other types.

If you start with a different device, just log all the data it sends and adjust the cgi scripts/database/JavaScript accordingly. For protocol analyzis there are several easy means:

Here is what a debug.cgi script could look like:

#! /bin/sh
env > /tmp/debug.env
printf "\n\nOK\n"
cat > /tmp/debug.input &

This allows you to see the form input in /tmp/debug.input and the CGI environment in /tmp/debug.env.


September 23, 2022

Frederic Cambus Toolchains adventures - Q3 2022
My continuous journey into toolchains, in the third quarter of 2022

This is the sixth post in my toolchains adventures series. Please check the previous posts in the toolchains category for more context about this journey.

In Pkgsrc land, I updated binutils to the 2.39 version, mold to the 1.3.1, 1.4.0, 1.4.1, and 1.4.2 versions, patchelf to the 0.15.0 one, and finally pax-utils to the 1.3.5 one.

Regarding OpenBSD, we imported llvm-profdata into the base system in early July, so I took the opportunity to propose importing llvm-cov as well. This was accepted and is now committed, which will allow producing reports from coverage data without having to install the devel/llvm port.

I also submitted a binutils port, with the stated goal to have up to date versions of the GNU binary utilities. As such it excludes as (for which we have the devel/gas port) and ld. This is intended to replace the aging versions we have in the base system (from binutils 2.17, released in 2006). All installed utilities have the ‘g’ prefix prepended to the binary name. After importing it, I noticed packages didn’t build on OpenBSD/arm64 and OpenBSD/armv7, so I got the chance to send patches upstream to add OpenBSD ARM and AArch64 Little Endian BFD support. While there, I also added the required entry for AArch64 GAS support in upstream binutils.

In September, I got the opportunity to attend the GNU Tools Cauldron 2022 conference which was held on September 16-18th 2022 in Prague, Czech Republic. Three days of talks and discussions about the GNU toolchain, in a friendly and relaxed atmosphere. There were a lot of interesting talks and people, and being able to discuss such topics in person was a nice change.

That’s all for now… Stay tuned!

binutils commits:

2022-09-02 d0a122d Add OpenBSD ARM Little Endian BFD support
2022-08-31 6472b23 Add OpenBSD AArch64 GAS support
2022-08-22 ba86e75 Add OpenBSD AArch64 Little Endian BFD support

LLVM commits:

2022-08-01 892e6e2 [clang] Update Clang version from 15 to 16 in scan-build.1

September 19, 2022

OS News An X11 apologist tries Wayland

All in all, I’m very impressed with the work the wayland community has done since I last did a serious look at the state of things. I’m still waiting for a stacking window manager that scratches the same itch for me that icewm does, but I’m following labwc with great interest. At this point though, I’ve established that I can live my life on wayland, and for the time being I am. Not everyone can yet though, and there’s still work to be done. Part of why I’m feeling the urge to transition to wayland is performance benefits, but the other part is so that I’ll be able to help solve the unsolved problems to make it viable for more people.

I don’t think X is ever going to die. Even if it fades away on Linux, there’s a lot of old video hardware that will probably only ever be well supported with real Xorg, on Linux and other OSes such as NetBSD. That stuff is already seeing support dropped in more recent versions of Xorg, and preservationists will need to do digging to find versions that still take advantage of everything the hardware has to offer. But, I understand now why the wayland folks have been talking so highly of it, and how drastically it simplifies the userland stack, and I’m no longer concerned that I’ll wake up to find my netbook has become unusable for modern software.

I’ve been on Wayland on both my laptop and workstation for a long time now, and there’s no way I’m ever going back with just how much better it performs than X.org. Only my main PC (used mostly for gaming) is still on X.org (Linux Mint), but that’s out of a combination of NVIDIA hardware and my satisfaction with Mint. I agree with the author that X.org won’t die, but the arrow of time is pointing in a very clear direction.


August 30, 2022

Super User FreeBSD kernel image with built-in application

I have experienced creating a FreeBSD kernel image but is there a way to include an application, for example an SQlite database in the image? What I want to achieve is to package the application in the image build as one.


August 17, 2022

Server Fault Linux IP command convert to BSD

What is below IP command to BSD replication?

ip -6 route add local 2a00:f10:500::/48 dev lo

August 06, 2022

OS News NetBSD 9.3 released

NetBSD 9.3 has made it into the wild.

Aside from many bug fixes, 9.3 includes backported improvements to suspend and resume support, various minor additions of new hardware to existing device drivers, compatibility with UDF file systems created on Windows 10, enhanced support for newer Intel Gigabit Ethernet chipsets, better support for new Intel and AMD Zen 3 chipsets, support for configuring connections to Wi-Fi networks using sysinst(8), support for wsfb-based X11 servers on the Commodore Amiga, and minor performance improvements for the Xen hypervisor.

A solid set of improvements for a point release.


August 04, 2022

The NetBSD Foundation NetBSD 9.3 release