ifireside.fm.rss.xml - sfeed_tests - sfeed tests and RSS and Atom files Err codemadness.org 70
hgit clone git://git.codemadness.org/sfeed_tests URL:git://git.codemadness.org/sfeed_tests codemadness.org 70
1Log /git/sfeed_tests/log.gph codemadness.org 70
1Files /git/sfeed_tests/files.gph codemadness.org 70
1Refs /git/sfeed_tests/refs.gph codemadness.org 70
1README /git/sfeed_tests/file/README.gph codemadness.org 70
1LICENSE /git/sfeed_tests/file/LICENSE.gph codemadness.org 70
i--- Err codemadness.org 70
ifireside.fm.rss.xml (5523779B) Err codemadness.org 70
i--- Err codemadness.org 70
i 1 Err codemadness.org 70
i 2
NOTES
Err codemadness.org 70
i 89 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 96Err codemadness.org 70 i 109 Err codemadness.org 70 i 110The release notes for FreeBSD 12.2-RELEASE contain a summary of the changes made to the FreeBSD base system on the 12-STABLE development line. This document lists applicable security advisories that were issued since the last release, as well as significant changes to the FreeBSD kernel and userland. Some brief remarks on upgrading are also presented.
Err codemadness.org 70 i 97 Err codemadness.org 70 i 98
Err codemadness.org 70 i 99 Err codemadness.org 70 i 100ZFS Webinar: November 18th
Err codemadness.org 70 i 101 Err codemadness.org 70 i 102Join us on November 18th for a live discussion with Allan Jude (VP of Engineering at Klara Inc) in this webinar centred on “best practices of ZFS”
Err codemadness.org 70 i 106 Err codemadness.org 70 i 107
Err codemadness.org 70 i 103 Building Your Storage Array – Everything from picking the best hardware to RAID-Z and using mirrors.
Err codemadness.org 70 i 104 Keeping up with Data Growth – Expanding and growing your pool, and of course, shrinking with device evacuation.
Err codemadness.org 70 i 105 Datasets and Properties – Controlling settings with properties and many other tricks!
Err codemadness.org 70 i 108
Err codemadness.org 70 i 115Err codemadness.org 70 i 119 Err codemadness.org 70 i 120Sys2syz would give an extra edge to Syzkaller for NetBSD. It has a potential of efficiently automating the conversion of syscall definitions to syzkaller’s grammar. This can aid in increasing the number of syscalls covered by Syzkaller significantly with the minimum possibility of manual errors. Let’s delve into its internals.
Err codemadness.org 70 i 116 Err codemadness.org 70 i 117
Err codemadness.org 70 i 118
Err codemadness.org 70 i 123Err codemadness.org 70 i 127 Err codemadness.org 70 i 128In this long blog post, I will write about the technical details of the OpenBSD stable packages building infrastructure. I have setup the infrastructure with the help of Theo De Raadt who provided me the hardware in summer 2019, since then, OpenBSD users can upgrade their packages using pkg_add -u for critical updates that has been backported by the contributors. Many thanks to them, without their work there would be no packages to build. Thanks to pea@ who is my backup for operating this infrastructure in case something happens to me.
Err codemadness.org 70 i 124 Err codemadness.org 70 i 125
Err codemadness.org 70 i 126
Err codemadness.org 70 i 131Err codemadness.org 70 i 138 Err codemadness.org 70 i 139This release finally wraps up the recent Netmap kernel changes and tests.
Err codemadness.org 70 i 135 Err codemadness.org 70 i 136
Err codemadness.org 70 i 132 The Realtek vendor driver was updated as well as third party software cURL,
Err codemadness.org 70 i 133 libxml2, OpenSSL, PHP, Suricata, Syslog-ng and Unbound just to name a couple
Err codemadness.org 70 i 134 of them.
Err codemadness.org 70 i 137
NOTES
Err codemadness.org 70
i 173 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 180Err codemadness.org 70 i 193 Err codemadness.org 70 i 194The release notes for FreeBSD 12.2-RELEASE contain a summary of the changes made to the FreeBSD base system on the 12-STABLE development line. This document lists applicable security advisories that were issued since the last release, as well as significant changes to the FreeBSD kernel and userland. Some brief remarks on upgrading are also presented.
Err codemadness.org 70 i 181 Err codemadness.org 70 i 182
Err codemadness.org 70 i 183 Err codemadness.org 70 i 184ZFS Webinar: November 18th
Err codemadness.org 70 i 185 Err codemadness.org 70 i 186Join us on November 18th for a live discussion with Allan Jude (VP of Engineering at Klara Inc) in this webinar centred on “best practices of ZFS”
Err codemadness.org 70 i 190 Err codemadness.org 70 i 191
Err codemadness.org 70 i 187 Building Your Storage Array – Everything from picking the best hardware to RAID-Z and using mirrors.
Err codemadness.org 70 i 188 Keeping up with Data Growth – Expanding and growing your pool, and of course, shrinking with device evacuation.
Err codemadness.org 70 i 189 Datasets and Properties – Controlling settings with properties and many other tricks!
Err codemadness.org 70 i 192
Err codemadness.org 70 i 199Err codemadness.org 70 i 203 Err codemadness.org 70 i 204Sys2syz would give an extra edge to Syzkaller for NetBSD. It has a potential of efficiently automating the conversion of syscall definitions to syzkaller’s grammar. This can aid in increasing the number of syscalls covered by Syzkaller significantly with the minimum possibility of manual errors. Let’s delve into its internals.
Err codemadness.org 70 i 200 Err codemadness.org 70 i 201
Err codemadness.org 70 i 202
Err codemadness.org 70 i 207Err codemadness.org 70 i 211 Err codemadness.org 70 i 212In this long blog post, I will write about the technical details of the OpenBSD stable packages building infrastructure. I have setup the infrastructure with the help of Theo De Raadt who provided me the hardware in summer 2019, since then, OpenBSD users can upgrade their packages using pkg_add -u for critical updates that has been backported by the contributors. Many thanks to them, without their work there would be no packages to build. Thanks to pea@ who is my backup for operating this infrastructure in case something happens to me.
Err codemadness.org 70 i 208 Err codemadness.org 70 i 209
Err codemadness.org 70 i 210
Err codemadness.org 70 i 215Err codemadness.org 70 i 222 Err codemadness.org 70 i 223This release finally wraps up the recent Netmap kernel changes and tests.
Err codemadness.org 70 i 219 Err codemadness.org 70 i 220
Err codemadness.org 70 i 216 The Realtek vendor driver was updated as well as third party software cURL,
Err codemadness.org 70 i 217 libxml2, OpenSSL, PHP, Suricata, Syslog-ng and Unbound just to name a couple
Err codemadness.org 70 i 218 of them.
Err codemadness.org 70 i 221
NOTES
Err codemadness.org 70
i 306 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 313Err codemadness.org 70 i 321 Err codemadness.org 70 i 322FreeBSD has had varying degrees of support as a hypervisor host throughout its history. For a time during the mid-2000s, VMWare Workstation 3.x could be made to run under FreeBSD’s Linux Emulation, and Qemu was ported in 2004, and later the kQemu accelerator in 2005. Then in 2009 a port for VirtualBox was introduced. All of these solutions suffered from being a solution designed for a different operating system and then ported to FreeBSD, requiring constant maintenance.
Err codemadness.org 70 i 314 Err codemadness.org 70 i 315
Err codemadness.org 70 i 316 Err codemadness.org 70 i 317ZFS and FreeBSD Support
Err codemadness.org 70 i 318 Err codemadness.org 70 i 319Klara offers flexible Support Subscriptions for your ZFS and FreeBSD infrastructure. Get a world class team of experts to back you up. Check it out on our website!
Err codemadness.org 70 i 320
Err codemadness.org 70 i 325Err codemadness.org 70 i 333 Err codemadness.org 70 i 334FreeBSD UDF driver info leak
Err codemadness.org 70 i 327 Err codemadness.org 70 i 328
Err codemadness.org 70 i 326 Analysis done on FreeBSD release 11.0 because that's what I had around.Err codemadness.org 70 i 329
Err codemadness.org 70 i 332- Fix committed to FreeBSD Err codemadness.org 70 i 330 ***
Err codemadness.org 70 i 331
Err codemadness.org 70 i 339Err codemadness.org 70 i 353 Err codemadness.org 70 i 354In the past I've written entries (such as this one) where I said that I was pretty much a Vi user, not really a Vim user, because I almost entirely stuck to Vi features. In a comment on my entry on not using and exploring Vim features, rjc reinforced this, saying that I seemed to be using vi instead of vim (and that there was nothing wrong with this). For a long time I thought this way myself, but these days this is not true any more. These days I really want Vim, not classical Vi.
Err codemadness.org 70 i 340 Err codemadness.org 70 i 341
Err codemadness.org 70 i 342 Err codemadness.org 70 i 343FreeBSD on ESXi ARM Fling: Fixing Virtual Hardware
Err codemadness.org 70 i 344 Err codemadness.org 70 i 345With the current state of FreeBSD on ARM in general, a number of hardware drivers are either set to not auto-load on boot, or are entirely missing altogether. This page is to document my findings with various bits of hardware, and if possible, list fixes.
Err codemadness.org 70 i 346 Err codemadness.org 70 i 347
Err codemadness.org 70 i 348 Err codemadness.org 70 i 349Introduction of a new FreeBSD Remote Process Plugin in LLDB
Err codemadness.org 70 i 350 Err codemadness.org 70 i 351Moritz Systems have been contracted by the FreeBSD Foundation to modernize the LLDB debugger’s support for FreeBSD. We are writing a new plugin utilizing the more modern client-server layout that is already used by Darwin, Linux, NetBSD and (unofficially) OpenBSD. The new plugin is going to gradually replace the legacy one.
Err codemadness.org 70 i 352
Err codemadness.org 70 i 359Err codemadness.org 70 i 363 Err codemadness.org 70 i 364Hi, I know it’s been a while. I recently had to nuke and re-pave my personal laptop and I thought it would be a nice thing to share with the community how I set up OpenBSD on it so that I have a useful, modern, secure environment for getting work done. I’m not going to say I’m the expert on this or that this is the BEST way to set up OpenBSD, but I thought it would be worthwhile for folks doing Google searches to at least get my opinion on this. So, given that, let’s go…
Err codemadness.org 70 i 360 Err codemadness.org 70 i 361
Err codemadness.org 70 i 362
NOTES
Err codemadness.org 70
i 389 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 396Err codemadness.org 70 i 404 Err codemadness.org 70 i 405FreeBSD has had varying degrees of support as a hypervisor host throughout its history. For a time during the mid-2000s, VMWare Workstation 3.x could be made to run under FreeBSD’s Linux Emulation, and Qemu was ported in 2004, and later the kQemu accelerator in 2005. Then in 2009 a port for VirtualBox was introduced. All of these solutions suffered from being a solution designed for a different operating system and then ported to FreeBSD, requiring constant maintenance.
Err codemadness.org 70 i 397 Err codemadness.org 70 i 398
Err codemadness.org 70 i 399 Err codemadness.org 70 i 400ZFS and FreeBSD Support
Err codemadness.org 70 i 401 Err codemadness.org 70 i 402Klara offers flexible Support Subscriptions for your ZFS and FreeBSD infrastructure. Get a world class team of experts to back you up. Check it out on our website!
Err codemadness.org 70 i 403
Err codemadness.org 70 i 408Err codemadness.org 70 i 416 Err codemadness.org 70 i 417FreeBSD UDF driver info leak
Err codemadness.org 70 i 410 Err codemadness.org 70 i 411
Err codemadness.org 70 i 409 Analysis done on FreeBSD release 11.0 because that's what I had around.Err codemadness.org 70 i 412
Err codemadness.org 70 i 415- Fix committed to FreeBSD Err codemadness.org 70 i 413 ***
Err codemadness.org 70 i 414
Err codemadness.org 70 i 422Err codemadness.org 70 i 436 Err codemadness.org 70 i 437In the past I've written entries (such as this one) where I said that I was pretty much a Vi user, not really a Vim user, because I almost entirely stuck to Vi features. In a comment on my entry on not using and exploring Vim features, rjc reinforced this, saying that I seemed to be using vi instead of vim (and that there was nothing wrong with this). For a long time I thought this way myself, but these days this is not true any more. These days I really want Vim, not classical Vi.
Err codemadness.org 70 i 423 Err codemadness.org 70 i 424
Err codemadness.org 70 i 425 Err codemadness.org 70 i 426FreeBSD on ESXi ARM Fling: Fixing Virtual Hardware
Err codemadness.org 70 i 427 Err codemadness.org 70 i 428With the current state of FreeBSD on ARM in general, a number of hardware drivers are either set to not auto-load on boot, or are entirely missing altogether. This page is to document my findings with various bits of hardware, and if possible, list fixes.
Err codemadness.org 70 i 429 Err codemadness.org 70 i 430
Err codemadness.org 70 i 431 Err codemadness.org 70 i 432Introduction of a new FreeBSD Remote Process Plugin in LLDB
Err codemadness.org 70 i 433 Err codemadness.org 70 i 434Moritz Systems have been contracted by the FreeBSD Foundation to modernize the LLDB debugger’s support for FreeBSD. We are writing a new plugin utilizing the more modern client-server layout that is already used by Darwin, Linux, NetBSD and (unofficially) OpenBSD. The new plugin is going to gradually replace the legacy one.
Err codemadness.org 70 i 435
Err codemadness.org 70 i 442Err codemadness.org 70 i 446 Err codemadness.org 70 i 447Hi, I know it’s been a while. I recently had to nuke and re-pave my personal laptop and I thought it would be a nice thing to share with the community how I set up OpenBSD on it so that I have a useful, modern, secure environment for getting work done. I’m not going to say I’m the expert on this or that this is the BEST way to set up OpenBSD, but I thought it would be worthwhile for folks doing Google searches to at least get my opinion on this. So, given that, let’s go…
Err codemadness.org 70 i 443 Err codemadness.org 70 i 444
Err codemadness.org 70 i 445
NOTES
Err codemadness.org 70
i 529 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 536Err codemadness.org 70 i 546 Err codemadness.org 70 i 547Released Oct 18, 2020. (OpenBSD's 25th anniversary)
Err codemadness.org 70 i 537 Err codemadness.org 70 i 538
Err codemadness.org 70 i 539 Err codemadness.org 70 i 540NetBSD 9.1 Released
Err codemadness.org 70 i 541 Err codemadness.org 70 i 542The NetBSD Project is pleased to announce NetBSD 9.1, the first update of the NetBSD 9 release branch. It represents a selected subset of fixes deemed important for security or stability reasons, as well as new features and enhancements.
Err codemadness.org 70 i 543 Err codemadness.org 70 i 544
Err codemadness.org 70 i 545
Err codemadness.org 70 i 550Err codemadness.org 70 i 556 Err codemadness.org 70 i 557As with most other conferences in the last six months, this year’s OpenZFS Developer’s Summit was a bit different than usual. Held via Zoom to accommodate for 2020’s new normal in terms of social engagements, the conference featured a mix of talks delivered live via webinars, and breakout sessions held as regular meetings. This helped recapture some of the “hallway track” that would be lost in an online conference.
Err codemadness.org 70 i 553 Err codemadness.org 70 i 554
Err codemadness.org 70 i 551 • After attending the conference, I wrote up some of my notes from each of the talks
Err codemadness.org 70 i 552 • Part 2
Err codemadness.org 70 i 555
Klara offers flexible Support Subscriptions for your ZFS and FreeBSD infrastructure, simply sign up for our monthly subscription! What's even better is that for the month of October we are giving away 3 months for free, for every yearly subscription, and one month free when you sign up for a 6-months subscription! Check it out on our website!
Err codemadness.org 70 i 560 Err codemadness.org 70 i 561Err codemadness.org 70 i 566Err codemadness.org 70 i 570 Err codemadness.org 70 i 571Some time ago, I had the requirement to use FreeBSD in a project, and soon the question came up if Docker and Kubernetes can be used.
Err codemadness.org 70 i 569
Err codemadness.org 70 i 567 On FreeBSD, Docker is not very well supported, and even if you can get it running, Linux is used in a Docker container. My experience with Docker on FreeBSD is awful, and so I started looking for alternatives.
Err codemadness.org 70 i 568 A quick search on one of the most significant online search engines led me to Jails and then to BastilleBSD.
Err codemadness.org 70 i 576Err codemadness.org 70 i 578 Err codemadness.org 70 i 579I use Tarsnap for my critical data. Case in point, I use it to backup my Bacula database dump. I use Bacula to backup my hosts. The database in question keeps track of what was backed up, from what host, the file size, checksum, where that backup is now, and many other items. Losing this data is annoying but not a disaster. It can be recreated from the backup volumes, but that is time consuming. As it is, the file is dumped daily, and rsynced to multiple locations.
Err codemadness.org 70 i 577
Err codemadness.org 70 i 584Err codemadness.org 70 i 589 Err codemadness.org 70 i 590For those interested in such things, I recently posted my 60,000th tweet. This prodded me to try an experiment I’ve been pondering for a while.
Err codemadness.org 70 i 586 Err codemadness.org 70 i 587
Err codemadness.org 70 i 585 Over at my ebookstore, two of my books are now on a “Name Your Own Price” sale. You can get git commit murder and PAM Mastery for any price you wish, with a minimum of $1.
Err codemadness.org 70 i 588
NOTES
Err codemadness.org 70
i 620 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 627Err codemadness.org 70 i 637 Err codemadness.org 70 i 638Released Oct 18, 2020. (OpenBSD's 25th anniversary)
Err codemadness.org 70 i 628 Err codemadness.org 70 i 629
Err codemadness.org 70 i 630 Err codemadness.org 70 i 631NetBSD 9.1 Released
Err codemadness.org 70 i 632 Err codemadness.org 70 i 633The NetBSD Project is pleased to announce NetBSD 9.1, the first update of the NetBSD 9 release branch. It represents a selected subset of fixes deemed important for security or stability reasons, as well as new features and enhancements.
Err codemadness.org 70 i 634 Err codemadness.org 70 i 635
Err codemadness.org 70 i 636
Err codemadness.org 70 i 641Err codemadness.org 70 i 647 Err codemadness.org 70 i 648As with most other conferences in the last six months, this year’s OpenZFS Developer’s Summit was a bit different than usual. Held via Zoom to accommodate for 2020’s new normal in terms of social engagements, the conference featured a mix of talks delivered live via webinars, and breakout sessions held as regular meetings. This helped recapture some of the “hallway track” that would be lost in an online conference.
Err codemadness.org 70 i 644 Err codemadness.org 70 i 645
Err codemadness.org 70 i 642 • After attending the conference, I wrote up some of my notes from each of the talks
Err codemadness.org 70 i 643 • Part 2
Err codemadness.org 70 i 646
Klara offers flexible Support Subscriptions for your ZFS and FreeBSD infrastructure, simply sign up for our monthly subscription! What's even better is that for the month of October we are giving away 3 months for free, for every yearly subscription, and one month free when you sign up for a 6-months subscription! Check it out on our website!
Err codemadness.org 70 i 651 Err codemadness.org 70 i 652Err codemadness.org 70 i 657Err codemadness.org 70 i 661 Err codemadness.org 70 i 662Some time ago, I had the requirement to use FreeBSD in a project, and soon the question came up if Docker and Kubernetes can be used.
Err codemadness.org 70 i 660
Err codemadness.org 70 i 658 On FreeBSD, Docker is not very well supported, and even if you can get it running, Linux is used in a Docker container. My experience with Docker on FreeBSD is awful, and so I started looking for alternatives.
Err codemadness.org 70 i 659 A quick search on one of the most significant online search engines led me to Jails and then to BastilleBSD.
Err codemadness.org 70 i 667Err codemadness.org 70 i 669 Err codemadness.org 70 i 670I use Tarsnap for my critical data. Case in point, I use it to backup my Bacula database dump. I use Bacula to backup my hosts. The database in question keeps track of what was backed up, from what host, the file size, checksum, where that backup is now, and many other items. Losing this data is annoying but not a disaster. It can be recreated from the backup volumes, but that is time consuming. As it is, the file is dumped daily, and rsynced to multiple locations.
Err codemadness.org 70 i 668
Err codemadness.org 70 i 675Err codemadness.org 70 i 680 Err codemadness.org 70 i 681For those interested in such things, I recently posted my 60,000th tweet. This prodded me to try an experiment I’ve been pondering for a while.
Err codemadness.org 70 i 677 Err codemadness.org 70 i 678
Err codemadness.org 70 i 676 Over at my ebookstore, two of my books are now on a “Name Your Own Price” sale. You can get git commit murder and PAM Mastery for any price you wish, with a minimum of $1.
Err codemadness.org 70 i 679
NOTES
Err codemadness.org 70
i 738 This episode of BSDNow is brought to you by Tarsnap
This weeks episode of BSDNow was sponsored by our friends at Tarsnap, the only secure online backup you can trust your data to. Even paranoids need backups.
Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 749 Err codemadness.org 70 i 750NOTES
Err codemadness.org 70
i 757 This episode of BSDNow is brought to you by Tarsnap
This weeks episode of BSDNow was sponsored by our friends at Tarsnap, the only secure online backup you can trust your data to. Even paranoids need backups.
Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 768 Err codemadness.org 70 i 769NOTES
Err codemadness.org 70
i 826 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 833Err codemadness.org 70 i 848 Err codemadness.org 70 i 849After I posted about the new default window manager in NetBSD I got a few questions, including "when is NetBSD switching from X11 to Wayland?", Wayland being X11's "new" rival. In this blog post, hopefully I can explain why we aren't yet!
Err codemadness.org 70 i 834 Err codemadness.org 70 i 835
Err codemadness.org 70 i 836 Err codemadness.org 70 i 837My BSD sucks less than yours
Err codemadness.org 70 i 838 Err codemadness.org 70 i 839This paper will look at some of the differences between the FreeBSD and OpenBSD operating systems. It is not intended to be solely technical but will also show the different "visions" and design decisions that rule the way things are implemented. It is expected to be a subjective view from two BSD developers and does not pretend to represent these projects in any way.
Err codemadness.org 70 i 840 Err codemadness.org 70 i 841Video
Err codemadness.org 70 i 842 Err codemadness.org 70 i 843Err codemadness.org 70 i 844
Err codemadness.org 70 i 847- EuroBSDCon 2017 Part 1
Err codemadness.org 70 i 845- EuroBSDCon 2017 Part 2
Err codemadness.org 70 i 846
Err codemadness.org 70 i 856Err codemadness.org 70 i 886 Err codemadness.org 70 i 887Back in the days of our OmniOS fileservers, which used HDs (spinning rust) across iSCSI, we wound up changing kernel tunables to speed up ZFS scrubs and saw a significant improvement. When we migrated to our current Linux fileservers with SSDs, I didn't bother including these tunables (or the Linux equivalent), because I expected that SSDs were fast enough that it didn't matter. Indeed, our SSD pools generally scrub like lightning.
Err codemadness.org 70 i 857 Err codemadness.org 70 i 858
Err codemadness.org 70 i 859 Err codemadness.org 70 i 860OpenBSD on the Desktop (Part I)
Err codemadness.org 70 i 861 Err codemadness.org 70 i 862Let's install OpenBSD on a Lenovo Thinkpad X270. I used this computer for my computer science studies. It has both Arch Linux and Windows 10 installed as dual boot. Now that I'm no longer required to run Windows, I can ditch the dual boot and install an operating system of my choice.
Err codemadness.org 70 i 863 Err codemadness.org 70 i 864
Err codemadness.org 70 i 865 Err codemadness.org 70 i 866A simple shell status bar for OpenBSD and cwm(1)
Err codemadness.org 70 i 867 Err codemadness.org 70 i 868These days, I try to use simple and stock software as much as possible on my OpenBSD laptop. I’ve been playing with cwm(1) for weeks and I was missing a status bar. After trying things like Tint2, Polybar etc, I discovered @gonzalo’s termbar. Thanks a lot!
Err codemadness.org 70 i 870 Err codemadness.org 70 i 871
Err codemadness.org 70 i 869 As I love scripting, I decided to build my own.
Err codemadness.org 70 i 872 Err codemadness.org 70 i 873Beastie Bits
Err codemadness.org 70 i 874 Err codemadness.org 70 i 875DragonFly v5.8.3 released to address to issues
Err codemadness.org 70 i 877 Err codemadness.org 70 i 878
Err codemadness.org 70 i 876 OpenSSH 8.4 released
Err codemadness.org 70 i 879 Err codemadness.org 70 i 880Tarsnap
Err codemadness.org 70 i 881 Err codemadness.org 70 i 882Err codemadness.org 70 i 883
Err codemadness.org 70 i 885- This weeks episode of BSDNow was sponsored by our friends at Tarsnap, the only secure online backup you can trust your data to. Even paranoids need backups.
Err codemadness.org 70 i 884
NOTES
Err codemadness.org 70
i 906 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 913Err codemadness.org 70 i 928 Err codemadness.org 70 i 929After I posted about the new default window manager in NetBSD I got a few questions, including "when is NetBSD switching from X11 to Wayland?", Wayland being X11's "new" rival. In this blog post, hopefully I can explain why we aren't yet!
Err codemadness.org 70 i 914 Err codemadness.org 70 i 915
Err codemadness.org 70 i 916 Err codemadness.org 70 i 917My BSD sucks less than yours
Err codemadness.org 70 i 918 Err codemadness.org 70 i 919This paper will look at some of the differences between the FreeBSD and OpenBSD operating systems. It is not intended to be solely technical but will also show the different "visions" and design decisions that rule the way things are implemented. It is expected to be a subjective view from two BSD developers and does not pretend to represent these projects in any way.
Err codemadness.org 70 i 920 Err codemadness.org 70 i 921Video
Err codemadness.org 70 i 922 Err codemadness.org 70 i 923Err codemadness.org 70 i 924
Err codemadness.org 70 i 927- EuroBSDCon 2017 Part 1
Err codemadness.org 70 i 925- EuroBSDCon 2017 Part 2
Err codemadness.org 70 i 926
Err codemadness.org 70 i 936Err codemadness.org 70 i 966 Err codemadness.org 70 i 967Back in the days of our OmniOS fileservers, which used HDs (spinning rust) across iSCSI, we wound up changing kernel tunables to speed up ZFS scrubs and saw a significant improvement. When we migrated to our current Linux fileservers with SSDs, I didn't bother including these tunables (or the Linux equivalent), because I expected that SSDs were fast enough that it didn't matter. Indeed, our SSD pools generally scrub like lightning.
Err codemadness.org 70 i 937 Err codemadness.org 70 i 938
Err codemadness.org 70 i 939 Err codemadness.org 70 i 940OpenBSD on the Desktop (Part I)
Err codemadness.org 70 i 941 Err codemadness.org 70 i 942Let's install OpenBSD on a Lenovo Thinkpad X270. I used this computer for my computer science studies. It has both Arch Linux and Windows 10 installed as dual boot. Now that I'm no longer required to run Windows, I can ditch the dual boot and install an operating system of my choice.
Err codemadness.org 70 i 943 Err codemadness.org 70 i 944
Err codemadness.org 70 i 945 Err codemadness.org 70 i 946A simple shell status bar for OpenBSD and cwm(1)
Err codemadness.org 70 i 947 Err codemadness.org 70 i 948These days, I try to use simple and stock software as much as possible on my OpenBSD laptop. I’ve been playing with cwm(1) for weeks and I was missing a status bar. After trying things like Tint2, Polybar etc, I discovered @gonzalo’s termbar. Thanks a lot!
Err codemadness.org 70 i 950 Err codemadness.org 70 i 951
Err codemadness.org 70 i 949 As I love scripting, I decided to build my own.
Err codemadness.org 70 i 952 Err codemadness.org 70 i 953Beastie Bits
Err codemadness.org 70 i 954 Err codemadness.org 70 i 955DragonFly v5.8.3 released to address to issues
Err codemadness.org 70 i 957 Err codemadness.org 70 i 958
Err codemadness.org 70 i 956 OpenSSH 8.4 released
Err codemadness.org 70 i 959 Err codemadness.org 70 i 960Tarsnap
Err codemadness.org 70 i 961 Err codemadness.org 70 i 962Err codemadness.org 70 i 963
Err codemadness.org 70 i 965- This weeks episode of BSDNow was sponsored by our friends at Tarsnap, the only secure online backup you can trust your data to. Even paranoids need backups.
Err codemadness.org 70 i 964
NOTES
Err codemadness.org 70
i 1032 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 1039Err codemadness.org 70 i 1044 Err codemadness.org 70 i 1045Have you ever had an idea that keeps coming back to you over and over again? For a week? For a month? I know that feeling. My new project was born from this feeling.
Err codemadness.org 70 i 1041 Err codemadness.org 70 i 1042
Err codemadness.org 70 i 1040 On this blog, I mix content a lot. I have written personal posts (not many of them, but still), FreeBSD development posts, development posts, security posts, and ZFS posts. This mixed content can be problematic sometimes. I share a lot of stuff here, and readers don’t know what to expect next. I am just excited by so many things, and I want to share that excitement with you!
Err codemadness.org 70 i 1043
Err codemadness.org 70 i 1048Err codemadness.org 70 i 1053 Err codemadness.org 70 i 1054TrueNAS 12.0 RC1 was released yesterday and with it, TrueNAS CORE is ready for deployment. The merger of FreeNAS and TrueNAS into a unified software image can now begin its path into mainstream use. TrueNAS CORE is the new FreeNAS and is on schedule.
Err codemadness.org 70 i 1050 Err codemadness.org 70 i 1051
Err codemadness.org 70 i 1049 The TrueNAS 12.0 BETA process started in June and has been the most successful BETA release ever with more than 3,000 users and only minor issues. Ars Technica provided a detailed technical walkthrough of the original BETA. There is a long list of features and performance improvements. During the BETA process, TrueNAS 12.0 demonstrated over 1.2 Million IOPS and over 23GB/s on a TrueNAS M60.
Err codemadness.org 70 i 1052
Err codemadness.org 70 i 1059Err codemadness.org 70 i 1063 Err codemadness.org 70 i 1064Interprocess communication, IPC, is one of the most fundamental functions of a modern operating system, playing an essential role in the fabric of contemporary applications. This report conducts an investigation in FreeBSD of the real world performance considerations behind two of the most common IPC mechanisms; pipes and sockets. A simple benchmark provides a fair sense of effective bandwidth for each, and analysis using DTrace, hardware performance counters and the operating system’s source code is presented. We note that pipes outperform sockets by 63% on average across all configurations, and further that the size of userspace transmission buffers has a profound effect on performance — larger buffers are beneficial up to a point (∼ 32-64 KiB) after which performance collapses as a result of devastating cache exhaustion. A deep scrutiny of the probe effects at play is also presented, justifying the validity of conclusions drawn from these experiments.
Err codemadness.org 70 i 1060 Err codemadness.org 70 i 1061
Err codemadness.org 70 i 1062
Err codemadness.org 70 i 1067Err codemadness.org 70 i 1071 Err codemadness.org 70 i 1072First of all, this article has nothing to do with modern hacking techniques like ASLR bypass, ROP exploits, 0day remote kernel exploits or Chrome's Chain-14-Different-Bugs-To-Get-There... Nope, nothing of the above. This article will cover one interesting old-school Unix hacking technique, that will still work nowadays in 2013.
Err codemadness.org 70 i 1068 Err codemadness.org 70 i 1069
Err codemadness.org 70 i 1070
Err codemadness.org 70 i 1075Err codemadness.org 70 i 1079 Err codemadness.org 70 i 1080Dozens of different operating systems have been developed over the years, but only Unix has grown in so many varieties. There are three main branches. Four factors have facilitated this growth...
Err codemadness.org 70 i 1076 Err codemadness.org 70 i 1077
Err codemadness.org 70 i 1078
Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 1097 Err codemadness.org 70 i 1098NOTES
Err codemadness.org 70
i 1105 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 1112Err codemadness.org 70 i 1117 Err codemadness.org 70 i 1118Have you ever had an idea that keeps coming back to you over and over again? For a week? For a month? I know that feeling. My new project was born from this feeling.
Err codemadness.org 70 i 1114 Err codemadness.org 70 i 1115
Err codemadness.org 70 i 1113 On this blog, I mix content a lot. I have written personal posts (not many of them, but still), FreeBSD development posts, development posts, security posts, and ZFS posts. This mixed content can be problematic sometimes. I share a lot of stuff here, and readers don’t know what to expect next. I am just excited by so many things, and I want to share that excitement with you!
Err codemadness.org 70 i 1116
Err codemadness.org 70 i 1121Err codemadness.org 70 i 1126 Err codemadness.org 70 i 1127TrueNAS 12.0 RC1 was released yesterday and with it, TrueNAS CORE is ready for deployment. The merger of FreeNAS and TrueNAS into a unified software image can now begin its path into mainstream use. TrueNAS CORE is the new FreeNAS and is on schedule.
Err codemadness.org 70 i 1123 Err codemadness.org 70 i 1124
Err codemadness.org 70 i 1122 The TrueNAS 12.0 BETA process started in June and has been the most successful BETA release ever with more than 3,000 users and only minor issues. Ars Technica provided a detailed technical walkthrough of the original BETA. There is a long list of features and performance improvements. During the BETA process, TrueNAS 12.0 demonstrated over 1.2 Million IOPS and over 23GB/s on a TrueNAS M60.
Err codemadness.org 70 i 1125
Err codemadness.org 70 i 1132Err codemadness.org 70 i 1136 Err codemadness.org 70 i 1137Interprocess communication, IPC, is one of the most fundamental functions of a modern operating system, playing an essential role in the fabric of contemporary applications. This report conducts an investigation in FreeBSD of the real world performance considerations behind two of the most common IPC mechanisms; pipes and sockets. A simple benchmark provides a fair sense of effective bandwidth for each, and analysis using DTrace, hardware performance counters and the operating system’s source code is presented. We note that pipes outperform sockets by 63% on average across all configurations, and further that the size of userspace transmission buffers has a profound effect on performance — larger buffers are beneficial up to a point (∼ 32-64 KiB) after which performance collapses as a result of devastating cache exhaustion. A deep scrutiny of the probe effects at play is also presented, justifying the validity of conclusions drawn from these experiments.
Err codemadness.org 70 i 1133 Err codemadness.org 70 i 1134
Err codemadness.org 70 i 1135
Err codemadness.org 70 i 1140Err codemadness.org 70 i 1144 Err codemadness.org 70 i 1145First of all, this article has nothing to do with modern hacking techniques like ASLR bypass, ROP exploits, 0day remote kernel exploits or Chrome's Chain-14-Different-Bugs-To-Get-There... Nope, nothing of the above. This article will cover one interesting old-school Unix hacking technique, that will still work nowadays in 2013.
Err codemadness.org 70 i 1141 Err codemadness.org 70 i 1142
Err codemadness.org 70 i 1143
Err codemadness.org 70 i 1148Err codemadness.org 70 i 1152 Err codemadness.org 70 i 1153Dozens of different operating systems have been developed over the years, but only Unix has grown in so many varieties. There are three main branches. Four factors have facilitated this growth...
Err codemadness.org 70 i 1149 Err codemadness.org 70 i 1150
Err codemadness.org 70 i 1151
Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 1170 Err codemadness.org 70 i 1171NOTES
Err codemadness.org 70
i 1229 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 1236Err codemadness.org 70 i 1240 Err codemadness.org 70 i 1241FuryBSD is a tool to test drive stock FreeBSD desktop images in read write mode to see if it will work for you before installing. In order to provide the most reliable experience possible while preserving the integrity of the system the LiveCD now leverages ZFS, compression, replication, a memory file system, and reroot (pivot root).
Err codemadness.org 70 i 1237 Err codemadness.org 70 i 1238
Err codemadness.org 70 i 1239
Err codemadness.org 70 i 1244Err codemadness.org 70 i 1249 Err codemadness.org 70 i 1250FreeBSD moving to Git: Why? With luck, I'll be writing a few blogs on FreeBSD's move to git later this year. Today, we'll start with "why"?
Err codemadness.org 70 i 1246 Err codemadness.org 70 i 1247
Err codemadness.org 70 i 1245 Video from Warner Losh
Err codemadness.org 70 i 1248
Err codemadness.org 70 i 1255Err codemadness.org 70 i 1259 Err codemadness.org 70 i 1260A little over a year ago I published an instant-workstation script for FreeBSD. The idea is to have an installed FreeBSD system, then run a shell script that uses only base-system utilities and installs and configures a workstation setup for you.
Err codemadness.org 70 i 1256 Err codemadness.org 70 i 1257
Err codemadness.org 70 i 1258
Err codemadness.org 70 i 1263Err codemadness.org 70 i 1268 Err codemadness.org 70 i 1269Following on from my recent nut setup, this is the second in a series of three posts.
Err codemadness.org 70 i 1265 Err codemadness.org 70 i 1266
Err codemadness.org 70 i 1264 The next post will deal with adjusting startup and shutdown times to be sure everything proceeds as required.
Err codemadness.org 70 i 1267
Err codemadness.org 70 i 1272Err codemadness.org 70 i 1279 Err codemadness.org 70 i 1280With this commit, Martijn van Duren (martijn@) added login_ldap(8) to -current
Err codemadness.org 70 i 1273 Err codemadness.org 70 i 1274Err codemadness.org 70 i 1275
Err codemadness.org 70 i 1278- https://marc.info/?l=openbsd-cvs&m=159992319027593&w=2 Err codemadness.org 70 i 1276 ***
Err codemadness.org 70 i 1277
Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 1305 Err codemadness.org 70 i 1306NOTES
Err codemadness.org 70
i 1313 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 1320Err codemadness.org 70 i 1324 Err codemadness.org 70 i 1325FuryBSD is a tool to test drive stock FreeBSD desktop images in read write mode to see if it will work for you before installing. In order to provide the most reliable experience possible while preserving the integrity of the system the LiveCD now leverages ZFS, compression, replication, a memory file system, and reroot (pivot root).
Err codemadness.org 70 i 1321 Err codemadness.org 70 i 1322
Err codemadness.org 70 i 1323
Err codemadness.org 70 i 1328Err codemadness.org 70 i 1333 Err codemadness.org 70 i 1334FreeBSD moving to Git: Why? With luck, I'll be writing a few blogs on FreeBSD's move to git later this year. Today, we'll start with "why"?
Err codemadness.org 70 i 1330 Err codemadness.org 70 i 1331
Err codemadness.org 70 i 1329 Video from Warner Losh
Err codemadness.org 70 i 1332
Err codemadness.org 70 i 1339Err codemadness.org 70 i 1343 Err codemadness.org 70 i 1344A little over a year ago I published an instant-workstation script for FreeBSD. The idea is to have an installed FreeBSD system, then run a shell script that uses only base-system utilities and installs and configures a workstation setup for you.
Err codemadness.org 70 i 1340 Err codemadness.org 70 i 1341
Err codemadness.org 70 i 1342
Err codemadness.org 70 i 1347Err codemadness.org 70 i 1352 Err codemadness.org 70 i 1353Following on from my recent nut setup, this is the second in a series of three posts.
Err codemadness.org 70 i 1349 Err codemadness.org 70 i 1350
Err codemadness.org 70 i 1348 The next post will deal with adjusting startup and shutdown times to be sure everything proceeds as required.
Err codemadness.org 70 i 1351
Err codemadness.org 70 i 1356Err codemadness.org 70 i 1363 Err codemadness.org 70 i 1364With this commit, Martijn van Duren (martijn@) added login_ldap(8) to -current
Err codemadness.org 70 i 1357 Err codemadness.org 70 i 1358Err codemadness.org 70 i 1359
Err codemadness.org 70 i 1362- https://marc.info/?l=openbsd-cvs&m=159992319027593&w=2 Err codemadness.org 70 i 1360 ***
Err codemadness.org 70 i 1361
Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 1389 Err codemadness.org 70 i 1390NOTES
Err codemadness.org 70
i 1453 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 1460Err codemadness.org 70 i 1462 Err codemadness.org 70 i 1463I have been running OpenBSD on a Soekris net5501 for my router/firewall since early 2012. Because I run a multitude of services on this system (more on that later), the meager 500Mhz AMD Geode + 512MB SDRAM was starting to get a little sluggish while trying to do anything via the terminal. Despite the perceived performance hit during interactive SSH sessions, it still supported a full 100Mbit connection with NAT, so I wasn’t overly eager to change anything. Luckily though, my ISP increased the bandwidth available on my plan tier to 150Mbit+. Unfortunately, the Soekris only contained 4xVIA Rhine Fast Ethernet. So now, I was using a slow system and wasting money by not being able to fully utilize my connection.
Err codemadness.org 70 i 1461
Err codemadness.org 70 i 1468Err codemadness.org 70 i 1470 Err codemadness.org 70 i 1471I hadn’t really planned on installing a NetBSD VM (after doing all the other two BSDs), but then a NetBSD-related Emacs bug report arrived.
Err codemadness.org 70 i 1469
Err codemadness.org 70 i 1478Err codemadness.org 70 i 1481 Err codemadness.org 70 i 1482Let’s open with the controversy: the scripts that live under /etc/rc.d/ in FreeBSD, NetBSD, and OpenBSD are in the wrong place. They all should live in /libexec/rc.d/ because they are code, not configuration.
Err codemadness.org 70 i 1480
Err codemadness.org 70 i 1479 This misplacement is something that has bugged me for ages but I never had the energy to open this can of worms back when I was very involved in NetBSD. I suspect it would have been a draining discussion and a very difficult thing to change.
Err codemadness.org 70 i 1487Err codemadness.org 70 i 1491 Err codemadness.org 70 i 1492As of September 30, 2020, FreeBSD 11.3 will reach end-of-life and will no longer
Err codemadness.org 70 i 1490
Err codemadness.org 70 i 1488 be supported by the FreeBSD Security Team. Users of FreeBSD 11.3 are strongly
Err codemadness.org 70 i 1489 encouraged to upgrade to a newer release as soon as possible.
Err codemadness.org 70 i 1497Err codemadness.org 70 i 1499 Err codemadness.org 70 i 1500Overall, the jump to HardenedBSD 12.1 is looking promising from our end. From the reported issues we still have more logging quirks to investigate and especially Netmap support (used in IPS and Sensei) is lacking in some areas that were previously working. Patches are being worked on already so we shall get there soon enough. Stay tuned.
Err codemadness.org 70 i 1498
Err codemadness.org 70 i 1505Err codemadness.org 70 i 1509 Err codemadness.org 70 i 1510MidnightBSD 1.2.7 is available via the FTP/HTTP and mirrors as well as github.
Err codemadness.org 70 i 1508
Err codemadness.org 70 i 1506 It includes several bug fixes and security updates over the last ISO release and is recommended for new installations.
Err codemadness.org 70 i 1507 Users who don't want to updatee the whole OS, should consider at least updating libmport as there are many package management fixes
NOTES
Err codemadness.org 70
i 1544 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 1551Err codemadness.org 70 i 1553 Err codemadness.org 70 i 1554I have been running OpenBSD on a Soekris net5501 for my router/firewall since early 2012. Because I run a multitude of services on this system (more on that later), the meager 500Mhz AMD Geode + 512MB SDRAM was starting to get a little sluggish while trying to do anything via the terminal. Despite the perceived performance hit during interactive SSH sessions, it still supported a full 100Mbit connection with NAT, so I wasn’t overly eager to change anything. Luckily though, my ISP increased the bandwidth available on my plan tier to 150Mbit+. Unfortunately, the Soekris only contained 4xVIA Rhine Fast Ethernet. So now, I was using a slow system and wasting money by not being able to fully utilize my connection.
Err codemadness.org 70 i 1552
Err codemadness.org 70 i 1559Err codemadness.org 70 i 1561 Err codemadness.org 70 i 1562I hadn’t really planned on installing a NetBSD VM (after doing all the other two BSDs), but then a NetBSD-related Emacs bug report arrived.
Err codemadness.org 70 i 1560
Err codemadness.org 70 i 1569Err codemadness.org 70 i 1572 Err codemadness.org 70 i 1573Let’s open with the controversy: the scripts that live under /etc/rc.d/ in FreeBSD, NetBSD, and OpenBSD are in the wrong place. They all should live in /libexec/rc.d/ because they are code, not configuration.
Err codemadness.org 70 i 1571
Err codemadness.org 70 i 1570 This misplacement is something that has bugged me for ages but I never had the energy to open this can of worms back when I was very involved in NetBSD. I suspect it would have been a draining discussion and a very difficult thing to change.
Err codemadness.org 70 i 1578Err codemadness.org 70 i 1582 Err codemadness.org 70 i 1583As of September 30, 2020, FreeBSD 11.3 will reach end-of-life and will no longer
Err codemadness.org 70 i 1581
Err codemadness.org 70 i 1579 be supported by the FreeBSD Security Team. Users of FreeBSD 11.3 are strongly
Err codemadness.org 70 i 1580 encouraged to upgrade to a newer release as soon as possible.
Err codemadness.org 70 i 1588Err codemadness.org 70 i 1590 Err codemadness.org 70 i 1591Overall, the jump to HardenedBSD 12.1 is looking promising from our end. From the reported issues we still have more logging quirks to investigate and especially Netmap support (used in IPS and Sensei) is lacking in some areas that were previously working. Patches are being worked on already so we shall get there soon enough. Stay tuned.
Err codemadness.org 70 i 1589
Err codemadness.org 70 i 1596Err codemadness.org 70 i 1600 Err codemadness.org 70 i 1601MidnightBSD 1.2.7 is available via the FTP/HTTP and mirrors as well as github.
Err codemadness.org 70 i 1599
Err codemadness.org 70 i 1597 It includes several bug fixes and security updates over the last ISO release and is recommended for new installations.
Err codemadness.org 70 i 1598 Users who don't want to updatee the whole OS, should consider at least updating libmport as there are many package management fixes
NOTES
Err codemadness.org 70
i 1687 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 1694Err codemadness.org 70 i 1699 Err codemadness.org 70 i 1700At the beginning were text mode consoles. Traditionally, *BSD and Linux on i386 and amd64 used text mode consoles which by default provided 25 rows of 80 columns, the "80x25 mode". This mode uses a 8x16 font stored in the VGA BIOS (which can be slightly different across vendors).
Err codemadness.org 70 i 1696 Err codemadness.org 70 i 1697
Err codemadness.org 70 i 1695 OpenBSD uses the wscons(4) console framework, inherited from NetBSD
Err codemadness.org 70 i 1698
Err codemadness.org 70 i 1703Err codemadness.org 70 i 1707 Err codemadness.org 70 i 1708Though I do wonder sometimes, with just a slight tweak to history, how things might have been different. In another dimension somewhere, I’m using the latest BeOS-powered PowerPC laptop, and a shiny new Palm smartphone. Both of these represented the pinnacle of UI design in the 1990s, and still in the 2020s have yet to be surpassed. People call me an Apple fanboy, but I’d drop all of it in a second for that gear.
Err codemadness.org 70 i 1704 Err codemadness.org 70 i 1705
Err codemadness.org 70 i 1706
Err codemadness.org 70 i 1713Err codemadness.org 70 i 1717 Err codemadness.org 70 i 1718I always missed ‘proper’ cluster software for FreeBSD systems. Recently I got to run several Pacemaker/Corosync based clusters on Linux systems. I thought how to make similar high availability solutions on FreeBSD and I was really shocked when I figured out that both Pacemaker and Corosync tools are available in the FreeBSD Ports and packages as net/pacemaker2 and net/corosync2 respectively.
Err codemadness.org 70 i 1714 Err codemadness.org 70 i 1715
Err codemadness.org 70 i 1716
Err codemadness.org 70 i 1721Err codemadness.org 70 i 1726 Err codemadness.org 70 i 1727"Mainline pkgsrc" can't do strange multi-arch Wine builds yet, so a 32-bit sandbox seems like a reasonable way to use 32-bit Wine on amd64 without resorting to running real Windows in NVMM. We'll see if this was a viable alternative to re-reviewing the multi-arch support in pkgsrc-wip...
Err codemadness.org 70 i 1723 Err codemadness.org 70 i 1724
Err codemadness.org 70 i 1722 We're using sandboxctl, which is a neat tool for quickly shelling into a different NetBSD userspace. Maybe you also don't trust the Windows applications you're running too much - sandboxctl creates a chroot based on a fresh system image, and chroot on NetBSD is fairly bombproof.
Err codemadness.org 70 i 1725
Err codemadness.org 70 i 1730Err codemadness.org 70 i 1733 Err codemadness.org 70 i 1734There is one very handy package on OpenBSD named pkglocatedb which provides the command pkglocate.
Err codemadness.org 70 i 1732
Err codemadness.org 70 i 1731 If you need to find a file or binary/program and you don’t know which package contains it, use pkglocate.
NOTES
Err codemadness.org 70
i 1771 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 1778Err codemadness.org 70 i 1783 Err codemadness.org 70 i 1784At the beginning were text mode consoles. Traditionally, *BSD and Linux on i386 and amd64 used text mode consoles which by default provided 25 rows of 80 columns, the "80x25 mode". This mode uses a 8x16 font stored in the VGA BIOS (which can be slightly different across vendors).
Err codemadness.org 70 i 1780 Err codemadness.org 70 i 1781
Err codemadness.org 70 i 1779 OpenBSD uses the wscons(4) console framework, inherited from NetBSD
Err codemadness.org 70 i 1782
Err codemadness.org 70 i 1787Err codemadness.org 70 i 1791 Err codemadness.org 70 i 1792Though I do wonder sometimes, with just a slight tweak to history, how things might have been different. In another dimension somewhere, I’m using the latest BeOS-powered PowerPC laptop, and a shiny new Palm smartphone. Both of these represented the pinnacle of UI design in the 1990s, and still in the 2020s have yet to be surpassed. People call me an Apple fanboy, but I’d drop all of it in a second for that gear.
Err codemadness.org 70 i 1788 Err codemadness.org 70 i 1789
Err codemadness.org 70 i 1790
Err codemadness.org 70 i 1797Err codemadness.org 70 i 1801 Err codemadness.org 70 i 1802I always missed ‘proper’ cluster software for FreeBSD systems. Recently I got to run several Pacemaker/Corosync based clusters on Linux systems. I thought how to make similar high availability solutions on FreeBSD and I was really shocked when I figured out that both Pacemaker and Corosync tools are available in the FreeBSD Ports and packages as net/pacemaker2 and net/corosync2 respectively.
Err codemadness.org 70 i 1798 Err codemadness.org 70 i 1799
Err codemadness.org 70 i 1800
Err codemadness.org 70 i 1805Err codemadness.org 70 i 1810 Err codemadness.org 70 i 1811"Mainline pkgsrc" can't do strange multi-arch Wine builds yet, so a 32-bit sandbox seems like a reasonable way to use 32-bit Wine on amd64 without resorting to running real Windows in NVMM. We'll see if this was a viable alternative to re-reviewing the multi-arch support in pkgsrc-wip...
Err codemadness.org 70 i 1807 Err codemadness.org 70 i 1808
Err codemadness.org 70 i 1806 We're using sandboxctl, which is a neat tool for quickly shelling into a different NetBSD userspace. Maybe you also don't trust the Windows applications you're running too much - sandboxctl creates a chroot based on a fresh system image, and chroot on NetBSD is fairly bombproof.
Err codemadness.org 70 i 1809
Err codemadness.org 70 i 1814Err codemadness.org 70 i 1817 Err codemadness.org 70 i 1818There is one very handy package on OpenBSD named pkglocatedb which provides the command pkglocate.
Err codemadness.org 70 i 1816
Err codemadness.org 70 i 1815 If you need to find a file or binary/program and you don’t know which package contains it, use pkglocate.
NOTES
Err codemadness.org 70
i 1909 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 1916Err codemadness.org 70 i 1918 Err codemadness.org 70 i 1919Larry Wall posted patch 1.3 to mod.sources on May 8, 1985. A number of versions followed over the years. It's been a faithful alley for a long, long time. I've never had a problem with patch until I embarked on the 2.11BSD restoration project. In going over the logs very carefully, I've discovered a bug that bites this effort twice. It's quite interesting to use 27 year old patches to find this bug while restoring a 29 year old OS...
Err codemadness.org 70 i 1917
Err codemadness.org 70 i 1924Err codemadness.org 70 i 1927 Err codemadness.org 70 i 1928A sandbox is a software which artificially limits access to the specific resources on the target according to the assigned policy. The sandbox installs hooks to the kernel syscalls and other sub-systems in order to interrupt the events triggered by the application. From the application point of view, application working as usual, but when it wants to access, for instance, /dev/kmem the sandbox software decides against the assigned sandbox scheme whether to grant or deny access.
Err codemadness.org 70 i 1926
Err codemadness.org 70 i 1925 In our case, the sandbox is a kernel module which uses MAC (Mandatory Access Control) Framework developed by the TrustedBSD team. All necessary hooks were introduced to the FreeBSD kernel.
Err codemadness.org 70 i 1940Err codemadness.org 70 i 1944 Err codemadness.org 70 i 1945ZFS has a the ability to share itself within a jail. That gives the jail some autonomy, and I like that.
Err codemadness.org 70 i 1943
Err codemadness.org 70 i 1941 I’ve written briefly about that, specifically for iocage. More recently, I started using a zfs snapshot for caching clearing.
Err codemadness.org 70 i 1942 The purpose of this post is to document the existing configuration of the production FreshPorts webserver and outline the plan on how to modify it for more zfs-snapshot-based cache clearing.
Err codemadness.org 70 i 1950Err codemadness.org 70 i 1953 Err codemadness.org 70 i 1954Back in January I mentioned how to add redundancy to a ZFS pool by adding a mirrored drive. Someone with a private account on Twitter asked me why FreeBSD—and NetBSD!—doesn’t ship with a tmux or screen equivilent in base in order to daemonise the process and let them run in the background.
Err codemadness.org 70 i 1952
Err codemadness.org 70 i 1951 ZFS already does this for its internal commands.
Err codemadness.org 70 i 1959Err codemadness.org 70 i 1963 Err codemadness.org 70 i 1964This last month has largely been a quiet one. I've restarted work on porting five-year-old work from the Code Pointer Integrity (CPI) project into HardenedBSD. Chiefly, I've started forward-porting the libc and rtld bits from the CPI project and now need to look at llvm compiler/linker enhancements. We need to be able to apply SafeStack to shared objects, not just application binaries. This forward-porting work I'm doing is to support that effort.
Err codemadness.org 70 i 1962
Err codemadness.org 70 i 1960 The infrastructure has settled and is now churning normally and happily. We're still working out bandwidth issues. We hope to have a new fiber line ran by the end of September.
Err codemadness.org 70 i 1961 As part of this status report, I'm issuing a formal call for donations. I'm aiming for $4,000.00 USD for a newer self-hosted Gitea server. I hope to purchase the new server before the end of 2020.
Err codemadness.org 70 i 1969Err codemadness.org 70 i 1971 Err codemadness.org 70 i 1972Unix and things that run on Unix have been around for a long time now. In particular, GNU Readline was first released in 1989 (as was Bash), which is long enough ago for it (or lookalikes) to become pretty much pervasive, especially in Unix shells. Today it's easy to think of readline support as something that's always been there. But of course this isn't the case. Unix in its modern form dates from V7 in 1979 and 4.2 BSD in 1983, so a lot of Unix was developed before readline and was to some degree shaped by the lack of it.
Err codemadness.org 70 i 1970
NOTES
Err codemadness.org 70
i 1995 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 2002Err codemadness.org 70 i 2004 Err codemadness.org 70 i 2005Larry Wall posted patch 1.3 to mod.sources on May 8, 1985. A number of versions followed over the years. It's been a faithful alley for a long, long time. I've never had a problem with patch until I embarked on the 2.11BSD restoration project. In going over the logs very carefully, I've discovered a bug that bites this effort twice. It's quite interesting to use 27 year old patches to find this bug while restoring a 29 year old OS...
Err codemadness.org 70 i 2003
Err codemadness.org 70 i 2010Err codemadness.org 70 i 2013 Err codemadness.org 70 i 2014A sandbox is a software which artificially limits access to the specific resources on the target according to the assigned policy. The sandbox installs hooks to the kernel syscalls and other sub-systems in order to interrupt the events triggered by the application. From the application point of view, application working as usual, but when it wants to access, for instance, /dev/kmem the sandbox software decides against the assigned sandbox scheme whether to grant or deny access.
Err codemadness.org 70 i 2012
Err codemadness.org 70 i 2011 In our case, the sandbox is a kernel module which uses MAC (Mandatory Access Control) Framework developed by the TrustedBSD team. All necessary hooks were introduced to the FreeBSD kernel.
Err codemadness.org 70 i 2026Err codemadness.org 70 i 2030 Err codemadness.org 70 i 2031ZFS has a the ability to share itself within a jail. That gives the jail some autonomy, and I like that.
Err codemadness.org 70 i 2029
Err codemadness.org 70 i 2027 I’ve written briefly about that, specifically for iocage. More recently, I started using a zfs snapshot for caching clearing.
Err codemadness.org 70 i 2028 The purpose of this post is to document the existing configuration of the production FreshPorts webserver and outline the plan on how to modify it for more zfs-snapshot-based cache clearing.
Err codemadness.org 70 i 2036Err codemadness.org 70 i 2039 Err codemadness.org 70 i 2040Back in January I mentioned how to add redundancy to a ZFS pool by adding a mirrored drive. Someone with a private account on Twitter asked me why FreeBSD—and NetBSD!—doesn’t ship with a tmux or screen equivilent in base in order to daemonise the process and let them run in the background.
Err codemadness.org 70 i 2038
Err codemadness.org 70 i 2037 ZFS already does this for its internal commands.
Err codemadness.org 70 i 2045Err codemadness.org 70 i 2049 Err codemadness.org 70 i 2050This last month has largely been a quiet one. I've restarted work on porting five-year-old work from the Code Pointer Integrity (CPI) project into HardenedBSD. Chiefly, I've started forward-porting the libc and rtld bits from the CPI project and now need to look at llvm compiler/linker enhancements. We need to be able to apply SafeStack to shared objects, not just application binaries. This forward-porting work I'm doing is to support that effort.
Err codemadness.org 70 i 2048
Err codemadness.org 70 i 2046 The infrastructure has settled and is now churning normally and happily. We're still working out bandwidth issues. We hope to have a new fiber line ran by the end of September.
Err codemadness.org 70 i 2047 As part of this status report, I'm issuing a formal call for donations. I'm aiming for $4,000.00 USD for a newer self-hosted Gitea server. I hope to purchase the new server before the end of 2020.
Err codemadness.org 70 i 2055Err codemadness.org 70 i 2057 Err codemadness.org 70 i 2058Unix and things that run on Unix have been around for a long time now. In particular, GNU Readline was first released in 1989 (as was Bash), which is long enough ago for it (or lookalikes) to become pretty much pervasive, especially in Unix shells. Today it's easy to think of readline support as something that's always been there. But of course this isn't the case. Unix in its modern form dates from V7 in 1979 and 4.2 BSD in 1983, so a lot of Unix was developed before readline and was to some degree shaped by the lack of it.
Err codemadness.org 70 i 2056
NOTES
Err codemadness.org 70
i 2133 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 2151Err codemadness.org 70 i 2154 Err codemadness.org 70 i 2155More than six years ago, LibreSSL was forked from OpenSSL, and almost two years ago, i explained the status of LibreSSL documentation during EuroBSDCon 2018 in Bucuresti. So it seems providing an update might be in order.
Err codemadness.org 70 i 2153
Err codemadness.org 70 i 2152 Note that this is not an update regarding LibreSSL status in general because i'm not the right person to talk about the big picture of working on the LibreSSL code, my work has been quite focussed on documentation. All the same, it is fair to say that even though the number of developers working on it is somewhat limited, the LibreSSL project is quite alive, typically having a release every few months. Progress continues being made with respect to porting and adding new functionality (for example regarding TLSv1.3, CMS, RSA-PSS, RSA-OAEP, GOST, SM3, SM4, XChaCha20 during the last two years), OpenSSL compatibility improvements (including providing additional OpenSSL-1.1 APIs), and lots of bug fixes and code cleanup.
Err codemadness.org 70 i 2160Err codemadness.org 70 i 2162 Err codemadness.org 70 i 2163’m coming pretty late to the party, because SPARC64 support in FreeBSD is apparently doomed: After the POWER platform made the switch to a LLVM/Clang-based toolchain, SPARC64 is one of the last ones that still uses the ancient GCC 4.2-based toolchain that the project wants to finally get rid off (it has already happened as I was writing this – looks like the firm plan was not so firm after all, since they killed it off early). And compared to the other platforms it has seen not too much love in recent times… SPARC64 being a great platform, I’d be quite sad to see it go. But before that happens let’s see what the current status is and what would need to be done if it were to survive, shall we?
Err codemadness.org 70 i 2161
Err codemadness.org 70 i 2170Err codemadness.org 70 i 2174 Err codemadness.org 70 i 2175Almost two years ago I wrote a blog post about checkpoints in ZFS. I didn’t hide that I was a big fan of them. That said, after those two years, I still feel that there are underappreciated features in the ZFS world, so I decided to do something about that.
Err codemadness.org 70 i 2173
Err codemadness.org 70 i 2171 Currently, one of the best practices for upgrading your operating system is to use boot environments. They are a great feature for managing multiple kernels and userlands. They are based on juggling which ZFS datasets are mounted. Each dataset has its own version of the system. Unfortunately, boot environments have their limitations. If we, for example, upgrade our ZFS pool, we may not be able to use older versions of the system anymore.
Err codemadness.org 70 i 2172 The big advantage of boot environments is that they have very good tools. Two main tools are beadm (which was created by vermaden) and bectl (which currently is in the FreeBSD base system). These tools allow us to create and manage boot environments.
NOTES
Err codemadness.org 70
i 2213 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 2231Err codemadness.org 70 i 2234 Err codemadness.org 70 i 2235More than six years ago, LibreSSL was forked from OpenSSL, and almost two years ago, i explained the status of LibreSSL documentation during EuroBSDCon 2018 in Bucuresti. So it seems providing an update might be in order.
Err codemadness.org 70 i 2233
Err codemadness.org 70 i 2232 Note that this is not an update regarding LibreSSL status in general because i'm not the right person to talk about the big picture of working on the LibreSSL code, my work has been quite focussed on documentation. All the same, it is fair to say that even though the number of developers working on it is somewhat limited, the LibreSSL project is quite alive, typically having a release every few months. Progress continues being made with respect to porting and adding new functionality (for example regarding TLSv1.3, CMS, RSA-PSS, RSA-OAEP, GOST, SM3, SM4, XChaCha20 during the last two years), OpenSSL compatibility improvements (including providing additional OpenSSL-1.1 APIs), and lots of bug fixes and code cleanup.
Err codemadness.org 70 i 2240Err codemadness.org 70 i 2242 Err codemadness.org 70 i 2243’m coming pretty late to the party, because SPARC64 support in FreeBSD is apparently doomed: After the POWER platform made the switch to a LLVM/Clang-based toolchain, SPARC64 is one of the last ones that still uses the ancient GCC 4.2-based toolchain that the project wants to finally get rid off (it has already happened as I was writing this – looks like the firm plan was not so firm after all, since they killed it off early). And compared to the other platforms it has seen not too much love in recent times… SPARC64 being a great platform, I’d be quite sad to see it go. But before that happens let’s see what the current status is and what would need to be done if it were to survive, shall we?
Err codemadness.org 70 i 2241
Err codemadness.org 70 i 2250Err codemadness.org 70 i 2254 Err codemadness.org 70 i 2255Almost two years ago I wrote a blog post about checkpoints in ZFS. I didn’t hide that I was a big fan of them. That said, after those two years, I still feel that there are underappreciated features in the ZFS world, so I decided to do something about that.
Err codemadness.org 70 i 2253
Err codemadness.org 70 i 2251 Currently, one of the best practices for upgrading your operating system is to use boot environments. They are a great feature for managing multiple kernels and userlands. They are based on juggling which ZFS datasets are mounted. Each dataset has its own version of the system. Unfortunately, boot environments have their limitations. If we, for example, upgrade our ZFS pool, we may not be able to use older versions of the system anymore.
Err codemadness.org 70 i 2252 The big advantage of boot environments is that they have very good tools. Two main tools are beadm (which was created by vermaden) and bectl (which currently is in the FreeBSD base system). These tools allow us to create and manage boot environments.
NOTES
Err codemadness.org 70
i 2345 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 2352Err codemadness.org 70 i 2364 Err codemadness.org 70 i 2365I recently got a Behringer UMC22 sound card for video conferencing and DJing. This page documents what I’ve learned about using this sound card, and USB audio in general, on FreeBSD.
Err codemadness.org 70 i 2354 Err codemadness.org 70 i 2355
Err codemadness.org 70 i 2353 tl;dr: Everything works as long as the sound card follows the USB audio device class specification.
Err codemadness.org 70 i 2356 Err codemadness.org 70 i 2357Kyua: An introduction for NetBSD users
Err codemadness.org 70 i 2358 Err codemadness.org 70 i 2359Kyua's current goal is to reimplement only the ATF tools while maintaining backwards compatibility with the tests written with the ATF libraries (i.e. with the NetBSD test suite).
Err codemadness.org 70 i 2361 Err codemadness.org 70 i 2362
Err codemadness.org 70 i 2360 Because Kyua is a replacement of some ATF components, the end goal is to integrate Kyua into the NetBSD base system (just as ATF is) and remove the deprecated ATF components. Removing the deprecated components will allow us to make the above-mentioned improvements to Kyua, as well as many others, without having to deal with the obsolete ATF code base. Discussing how and when this transition might happen is out of the scope of this document at the moment.
Err codemadness.org 70 i 2363
Err codemadness.org 70 i 2370Err codemadness.org 70 i 2374 Err codemadness.org 70 i 2375I'm a long term user of ZFS on Linux and over pretty much all of the time I've used it, I've built it from the latest development version. Generally this means I update my ZoL build at the same time as I update my Fedora kernel, since a ZoL update requires a kernel reboot anyway. This is a little bit daring, of course, although the ZoL development version has generally been quite solid (and this way I get the latest features and improvements long before I otherwise would).
Err codemadness.org 70 i 2371 Err codemadness.org 70 i 2372
Err codemadness.org 70 i 2373
Err codemadness.org 70 i 2378Err codemadness.org 70 i 2380 Err codemadness.org 70 i 2381As I was browsing the web and catching up on some sites I visit periodically, I found a cool article from Tom Hayden about using Amazon Elastic Map Reduce (EMR) and mrjob in order to compute some statistics on win/loss ratios for chess games he downloaded from the millionbase archive, and generally have fun with EMR. Since the data volume was only about 1.75GB containing around 2 million chess games, I was skeptical of using Hadoop for the task, but I can understand his goal of learning and having fun with mrjob and EMR. Since the problem is basically just to look at the result lines of each file and aggregate the different results, it seems ideally suited to stream processing with shell commands. I tried this out, and for the same amount of data I was able to use my laptop to get the results in about 12 seconds (processing speed of about 270MB/sec), while the Hadoop processing took about 26 minutes (processing speed of about 1.14MB/sec).
Err codemadness.org 70 i 2379
Err codemadness.org 70 i 2386Err codemadness.org 70 i 2391 Err codemadness.org 70 i 2392I know how to find out battery life status using Linux operating system. How do I monitor battery status on a laptop running FreeBSD version 9.x/10.x/11.x/12.x?
Err codemadness.org 70 i 2388 Err codemadness.org 70 i 2389
Err codemadness.org 70 i 2387 You can use any one of the following commands to get battery status under FreeBSD laptop including remaining battery life and more.
Err codemadness.org 70 i 2390
BSD Beer
Err codemadness.org 70
i 2395 Awk for JSON
Err codemadness.org 70
i 2396 Drawing Pictures The Unix Way - with pic and troff
Err codemadness.org 70
i 2397 Refactoring the FreeBSD Kernel with Checked C
NOTES
Err codemadness.org 70
i 2422 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 2429Err codemadness.org 70 i 2441 Err codemadness.org 70 i 2442I recently got a Behringer UMC22 sound card for video conferencing and DJing. This page documents what I’ve learned about using this sound card, and USB audio in general, on FreeBSD.
Err codemadness.org 70 i 2431 Err codemadness.org 70 i 2432
Err codemadness.org 70 i 2430 tl;dr: Everything works as long as the sound card follows the USB audio device class specification.
Err codemadness.org 70 i 2433 Err codemadness.org 70 i 2434Kyua: An introduction for NetBSD users
Err codemadness.org 70 i 2435 Err codemadness.org 70 i 2436Kyua's current goal is to reimplement only the ATF tools while maintaining backwards compatibility with the tests written with the ATF libraries (i.e. with the NetBSD test suite).
Err codemadness.org 70 i 2438 Err codemadness.org 70 i 2439
Err codemadness.org 70 i 2437 Because Kyua is a replacement of some ATF components, the end goal is to integrate Kyua into the NetBSD base system (just as ATF is) and remove the deprecated ATF components. Removing the deprecated components will allow us to make the above-mentioned improvements to Kyua, as well as many others, without having to deal with the obsolete ATF code base. Discussing how and when this transition might happen is out of the scope of this document at the moment.
Err codemadness.org 70 i 2440
Err codemadness.org 70 i 2447Err codemadness.org 70 i 2451 Err codemadness.org 70 i 2452I'm a long term user of ZFS on Linux and over pretty much all of the time I've used it, I've built it from the latest development version. Generally this means I update my ZoL build at the same time as I update my Fedora kernel, since a ZoL update requires a kernel reboot anyway. This is a little bit daring, of course, although the ZoL development version has generally been quite solid (and this way I get the latest features and improvements long before I otherwise would).
Err codemadness.org 70 i 2448 Err codemadness.org 70 i 2449
Err codemadness.org 70 i 2450
Err codemadness.org 70 i 2455Err codemadness.org 70 i 2457 Err codemadness.org 70 i 2458As I was browsing the web and catching up on some sites I visit periodically, I found a cool article from Tom Hayden about using Amazon Elastic Map Reduce (EMR) and mrjob in order to compute some statistics on win/loss ratios for chess games he downloaded from the millionbase archive, and generally have fun with EMR. Since the data volume was only about 1.75GB containing around 2 million chess games, I was skeptical of using Hadoop for the task, but I can understand his goal of learning and having fun with mrjob and EMR. Since the problem is basically just to look at the result lines of each file and aggregate the different results, it seems ideally suited to stream processing with shell commands. I tried this out, and for the same amount of data I was able to use my laptop to get the results in about 12 seconds (processing speed of about 270MB/sec), while the Hadoop processing took about 26 minutes (processing speed of about 1.14MB/sec).
Err codemadness.org 70 i 2456
Err codemadness.org 70 i 2463Err codemadness.org 70 i 2468 Err codemadness.org 70 i 2469I know how to find out battery life status using Linux operating system. How do I monitor battery status on a laptop running FreeBSD version 9.x/10.x/11.x/12.x?
Err codemadness.org 70 i 2465 Err codemadness.org 70 i 2466
Err codemadness.org 70 i 2464 You can use any one of the following commands to get battery status under FreeBSD laptop including remaining battery life and more.
Err codemadness.org 70 i 2467
BSD Beer
Err codemadness.org 70
i 2472 Awk for JSON
Err codemadness.org 70
i 2473 Drawing Pictures The Unix Way - with pic and troff
Err codemadness.org 70
i 2474 Refactoring the FreeBSD Kernel with Checked C
NOTES
Err codemadness.org 70
i 2550 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 2557Err codemadness.org 70 i 2559 Err codemadness.org 70 i 2560FreeBSD has a handful of Qt WebEngine-based browsers. Falkon, and Otter-Browser, and qutebrowser and probably others, too. All of them can run into issues on FreeBSD with GPU-accelerated rendering not working. Let’s look at some of the workarounds.
Err codemadness.org 70 i 2558
Err codemadness.org 70 i 2565Err codemadness.org 70 i 2568 Err codemadness.org 70 i 2569The NanoPi NEO2 from FriendlyARM has been serving me well since 2018, being my test machine for OpenBSD/arm64 related things.
Err codemadness.org 70 i 2567
Err codemadness.org 70 i 2566 As NetBSD/evbarm finally gained support for AArch64 in NetBSD 9.0, released back in February, I decided to give it a try on this device. The board only has 512MB of RAM, and this is where NetBSD really shines. Things have become a lot easier since jmcneill@ now provides bootable ARM images for a variety of devices, including the NanoPi NEO2.
Err codemadness.org 70 i 2574Err codemadness.org 70 i 2577 Err codemadness.org 70 i 2578Yes, it's been a while since I posted here and yes, it's been a while since I was actively working on FreeBSD's wireless stack. Life's been .. well, life. I started the ath10k port in 2015. I wasn't expecting it to take 5 years, but here we are. My life has changed quite a lot since 2015 and a lot of the things I was doing in 2015 just stopped being fun for a while.
Err codemadness.org 70 i 2576
Err codemadness.org 70 i 2575 But the stars have aligned and it's fun again, so here I am.
Err codemadness.org 70 i 2585Err codemadness.org 70 i 2587 Err codemadness.org 70 i 2588In a comment on my praise of ZFS on Linux's ZFS event daemon, Joshua M. Clulow noted that Illumos (and thus OmniOS) has an equivalent in syseventadm, which dates back to Solaris. I hadn't previously known about syseventadm, despite having run Solaris fileservers and OmniOS fileservers for the better part of a decade, and that gives me some tangled feelings.
Err codemadness.org 70 i 2586
Err codemadness.org 70 i 2593Err codemadness.org 70 i 2595 Err codemadness.org 70 i 2596Recently, a friend asked me the history of halt, and when did we have to stop with the sync / sync / sync dance before running halt or reboot. The two are related, it turns out.
Err codemadness.org 70 i 2594
Err codemadness.org 70 i 2601Err codemadness.org 70 i 2604 Err codemadness.org 70 i 2605While DragonFlyBSD has its own, original HAMMER2 file-system, for those needing to access data from EXT2/EXT3/EXT4 file-systems, there is a brand new "ext2fs" driver implementation for this BSD operating system.
Err codemadness.org 70 i 2603
Err codemadness.org 70 i 2602 DragonFlyBSD has long offered an EXT2 file-system driver (that also handles EXT3 and EXT4) while hitting their Git tree this week is a new version. The new sys/vfs/ext2fs driver, which will ultimately replace their existing sys/gnu/vfs/ext2fs driver is based on a port from FreeBSD code. As such, this driver is BSD licensed rather than GPL. But besides the more liberal license to jive with the BSD world, this new driver has various feature/functionality improvements over the prior version. However, there are some known bugs so for the time being both file-system drivers will co-exist.
Casey - openbsd wirewall
Err codemadness.org 70
i 2625 Daryl - zfs
Err codemadness.org 70
i 2626 Raymond - hpe microserver
NOTES
Err codemadness.org 70
i 2639 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 2646Err codemadness.org 70 i 2648 Err codemadness.org 70 i 2649FreeBSD has a handful of Qt WebEngine-based browsers. Falkon, and Otter-Browser, and qutebrowser and probably others, too. All of them can run into issues on FreeBSD with GPU-accelerated rendering not working. Let’s look at some of the workarounds.
Err codemadness.org 70 i 2647
Err codemadness.org 70 i 2654Err codemadness.org 70 i 2657 Err codemadness.org 70 i 2658The NanoPi NEO2 from FriendlyARM has been serving me well since 2018, being my test machine for OpenBSD/arm64 related things.
Err codemadness.org 70 i 2656
Err codemadness.org 70 i 2655 As NetBSD/evbarm finally gained support for AArch64 in NetBSD 9.0, released back in February, I decided to give it a try on this device. The board only has 512MB of RAM, and this is where NetBSD really shines. Things have become a lot easier since jmcneill@ now provides bootable ARM images for a variety of devices, including the NanoPi NEO2.
Err codemadness.org 70 i 2663Err codemadness.org 70 i 2666 Err codemadness.org 70 i 2667Yes, it's been a while since I posted here and yes, it's been a while since I was actively working on FreeBSD's wireless stack. Life's been .. well, life. I started the ath10k port in 2015. I wasn't expecting it to take 5 years, but here we are. My life has changed quite a lot since 2015 and a lot of the things I was doing in 2015 just stopped being fun for a while.
Err codemadness.org 70 i 2665
Err codemadness.org 70 i 2664 But the stars have aligned and it's fun again, so here I am.
Err codemadness.org 70 i 2674Err codemadness.org 70 i 2676 Err codemadness.org 70 i 2677In a comment on my praise of ZFS on Linux's ZFS event daemon, Joshua M. Clulow noted that Illumos (and thus OmniOS) has an equivalent in syseventadm, which dates back to Solaris. I hadn't previously known about syseventadm, despite having run Solaris fileservers and OmniOS fileservers for the better part of a decade, and that gives me some tangled feelings.
Err codemadness.org 70 i 2675
Err codemadness.org 70 i 2682Err codemadness.org 70 i 2684 Err codemadness.org 70 i 2685Recently, a friend asked me the history of halt, and when did we have to stop with the sync / sync / sync dance before running halt or reboot. The two are related, it turns out.
Err codemadness.org 70 i 2683
Err codemadness.org 70 i 2690Err codemadness.org 70 i 2693 Err codemadness.org 70 i 2694While DragonFlyBSD has its own, original HAMMER2 file-system, for those needing to access data from EXT2/EXT3/EXT4 file-systems, there is a brand new "ext2fs" driver implementation for this BSD operating system.
Err codemadness.org 70 i 2692
Err codemadness.org 70 i 2691 DragonFlyBSD has long offered an EXT2 file-system driver (that also handles EXT3 and EXT4) while hitting their Git tree this week is a new version. The new sys/vfs/ext2fs driver, which will ultimately replace their existing sys/gnu/vfs/ext2fs driver is based on a port from FreeBSD code. As such, this driver is BSD licensed rather than GPL. But besides the more liberal license to jive with the BSD world, this new driver has various feature/functionality improvements over the prior version. However, there are some known bugs so for the time being both file-system drivers will co-exist.
Casey - openbsd wirewall
Err codemadness.org 70
i 2714 Daryl - zfs
Err codemadness.org 70
i 2715 Raymond - hpe microserver
NOTES
Err codemadness.org 70
i 2776 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 2783Err codemadness.org 70 i 2790 Err codemadness.org 70 i 2791This report will be covering FreeBSD related projects between April and June, and covers a diverse set of topics ranging from kernel updates over userland and ports, as well to third-party work.
Err codemadness.org 70 i 2787 Err codemadness.org 70 i 2788
Err codemadness.org 70 i 2784 Some highlights picked with the roll of a d100 include, but are not limited to, the ability to forcibly unmounting UFS when the underlying media becomes inaccessible, added preliminary support for Bluetooth Low Energy, a introduction to the FreeBSD Office Hours, and a repository of software collections called potluck to be installed with the pot utility, as well as many many more things.
Err codemadness.org 70 i 2785 As a little treat, readers can also get a rare report from the quarterly team.
Err codemadness.org 70 i 2786 Finally, on behalf of the quarterly team, I would like to extend my deepest appreciation and thank you to salvadore@, who decided to take down his shingle. His contributions not just the quarterly reports themselves, but also the surrounding tooling to many-fold ease the work, are immeasurable.
Err codemadness.org 70 i 2789
Err codemadness.org 70 i 2794Err codemadness.org 70 i 2799 Err codemadness.org 70 i 2800Older Unix systems tend to be fairly uniform in how they handle the so-called 'toolchain' for creating binaries. This blog will give a quick overview of the toolchain pipeline for Unix systems that follow the V7 tradition (which evolved along with Unix, a topic for a separate blog maybe).
Err codemadness.org 70 i 2796 Err codemadness.org 70 i 2797
Err codemadness.org 70 i 2795 Unix is a pipeline based system, either physically or logically. One program takes input, process the data and produces output. The input and output have some interface they obey, usually text-based. The Unix toolchain is no different.
Err codemadness.org 70 i 2798
Err codemadness.org 70 i 2805Err codemadness.org 70 i 2809 Err codemadness.org 70 i 2810This release matures the project from 0.6.x -> 0.7.x. Continued testing and bug fixes are proving Bastille capable for a range of use-cases. New (experimental) features are examples of innovation from community contribution and feedback. Thank you.
Err codemadness.org 70 i 2806 Err codemadness.org 70 i 2807
Err codemadness.org 70 i 2808
NOTES
Err codemadness.org 70
i 2847 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 2854Err codemadness.org 70 i 2861 Err codemadness.org 70 i 2862This report will be covering FreeBSD related projects between April and June, and covers a diverse set of topics ranging from kernel updates over userland and ports, as well to third-party work.
Err codemadness.org 70 i 2858 Err codemadness.org 70 i 2859
Err codemadness.org 70 i 2855 Some highlights picked with the roll of a d100 include, but are not limited to, the ability to forcibly unmounting UFS when the underlying media becomes inaccessible, added preliminary support for Bluetooth Low Energy, a introduction to the FreeBSD Office Hours, and a repository of software collections called potluck to be installed with the pot utility, as well as many many more things.
Err codemadness.org 70 i 2856 As a little treat, readers can also get a rare report from the quarterly team.
Err codemadness.org 70 i 2857 Finally, on behalf of the quarterly team, I would like to extend my deepest appreciation and thank you to salvadore@, who decided to take down his shingle. His contributions not just the quarterly reports themselves, but also the surrounding tooling to many-fold ease the work, are immeasurable.
Err codemadness.org 70 i 2860
Err codemadness.org 70 i 2865Err codemadness.org 70 i 2870 Err codemadness.org 70 i 2871Older Unix systems tend to be fairly uniform in how they handle the so-called 'toolchain' for creating binaries. This blog will give a quick overview of the toolchain pipeline for Unix systems that follow the V7 tradition (which evolved along with Unix, a topic for a separate blog maybe).
Err codemadness.org 70 i 2867 Err codemadness.org 70 i 2868
Err codemadness.org 70 i 2866 Unix is a pipeline based system, either physically or logically. One program takes input, process the data and produces output. The input and output have some interface they obey, usually text-based. The Unix toolchain is no different.
Err codemadness.org 70 i 2869
Err codemadness.org 70 i 2876Err codemadness.org 70 i 2880 Err codemadness.org 70 i 2881This release matures the project from 0.6.x -> 0.7.x. Continued testing and bug fixes are proving Bastille capable for a range of use-cases. New (experimental) features are examples of innovation from community contribution and feedback. Thank you.
Err codemadness.org 70 i 2877 Err codemadness.org 70 i 2878
Err codemadness.org 70 i 2879
This weeks episode of BSDNow was sponsored by our friends at Tarsnap, the only secure online backup you can trust your data to. Even paranoids need backups.
Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 2953 Err codemadness.org 70 i 2954Special Guest: Warner Losh.
]]> Err codemadness.org 70 i 2956This weeks episode of BSDNow was sponsored by our friends at Tarsnap, the only secure online backup you can trust your data to. Even paranoids need backups.
Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 2969 Err codemadness.org 70 i 2970Special Guest: Warner Losh.
]]> Err codemadness.org 70 i 2972NOTES
Err codemadness.org 70
i 3032 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 3039Err codemadness.org 70 i 3049 Err codemadness.org 70 i 3050Years ago, the hunt for the cheapest 10gbe NICs resulted in buying Mellanox ConnectX-2 single-port 10gbe network cards from eBay for around $10. Nowadays those cards have increased in cost to around $20-30. While still cheap, not quite the cheapest. There are now alternatives!
Err codemadness.org 70 i 3042 Err codemadness.org 70 i 3043
Err codemadness.org 70 i 3040 Before diving into details, let’s get something very clear. If you want the absolute simplest plug-and-play 10gbe LAN for your homelab, pay the extra for Mellanox. If you’re willing to go hands-on, do some simple manual configuration and installation, read on for my experiences with Emulex 10gbe NICs.
Err codemadness.org 70 i 3041 Emulex NICs can often be had for around $15 on eBay, sometimes even cheaper. I recently picked up a set of 4 of these cards, which came bundled with 6 SFP+ 10g-SR modules for a grand total of $47.48. Considering I can usually find SFP+ modules for about $5/ea, these alone were worth $30.Err codemadness.org 70 i 3044
Err codemadness.org 70 i 3048- I have also tried some Solarflare cards that I found cheap, they work ok, but are pickier about optics, and tend to be focused on low-latency, so often don’t manage to saturate the full 10 gbps, topping out around 8 gbps.
Err codemadness.org 70 i 3045- I have been using fs.com for optics, patch cables, and DACs. I find DACs are usually cheaper if you are just going between a server and a switch in the same rack, or direct between 2 servers. Err codemadness.org 70 i 3046 ***
Err codemadness.org 70 i 3047
Err codemadness.org 70 i 3053Err codemadness.org 70 i 3057 Err codemadness.org 70 i 3058Almost all of the BSD releases have been well preserved. If you want to find 1BSD, or 2BSD or 4.3-TAHOE BSD you can find them online with little fuss. However, if you search for 2.11BSD, you'll find it easily enough, but it won't be the original. You'll find either the latest patched version (2.11BSD pl 469), or one of the earlier popular version (pl 430 is popular). You can even find the RetroBSD project which used 2.11BSD as a starting point to create systems for tiny mips-based PIC controllers. You'll find every single patch that's been issued for the system.
Err codemadness.org 70 i 3054 Err codemadness.org 70 i 3055
Err codemadness.org 70 i 3056
Err codemadness.org 70 i 3063Err codemadness.org 70 i 3068 Err codemadness.org 70 i 3069In November 2018 AWS published an Open Source tool called Firecracker, mostly a virtual machine monitor relying on KVM, a small sized Linux kernel, and a stripped down version of Qemu. What baffled me was the speed at which the virtual machine would fire up and run the service. The whole process is to be compared to a container, but safer, as it does not share the kernel nor any resource, it is a separate and dedicated virtual machine.
Err codemadness.org 70 i 3065 Err codemadness.org 70 i 3066
Err codemadness.org 70 i 3064 If you want to learn more on Firecracker‘s internals, here’s a very well put article.
Err codemadness.org 70 i 3067
Err codemadness.org 70 i 3072Err codemadness.org 70 i 3077 Err codemadness.org 70 i 3078Since we reported the first bits of powerpc64 support going into the tree on 16 May, work has progressed at a steady pace, resulting in snapshots now being available for this platform.
Err codemadness.org 70 i 3074 Err codemadness.org 70 i 3075
Err codemadness.org 70 i 3073 So, if you have a POWER9 system idling around, go to your nearest mirror and fetch this snapshot. Keep in mind that as this is still very early days, very little handholding is available - you are basically on your own.
Err codemadness.org 70 i 3076
Err codemadness.org 70 i 3081Err codemadness.org 70 i 3085 Err codemadness.org 70 i 3086Sorry about the delay while we chased a race condition in the updates back to an issue with the latest FreeBSD package manager updates. For now we reverted to our current version but all relevant third party packages have been updated as updates became available over the last weeks, e.g. cURL and Python, and hostapd / wpa_supplicant amongst others.
Err codemadness.org 70 i 3082 Err codemadness.org 70 i 3083
Err codemadness.org 70 i 3084
Special Guest: Warner Losh.
]]> Err codemadness.org 70 i 3116NOTES
Err codemadness.org 70
i 3121 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 3128Err codemadness.org 70 i 3138 Err codemadness.org 70 i 3139Years ago, the hunt for the cheapest 10gbe NICs resulted in buying Mellanox ConnectX-2 single-port 10gbe network cards from eBay for around $10. Nowadays those cards have increased in cost to around $20-30. While still cheap, not quite the cheapest. There are now alternatives!
Err codemadness.org 70 i 3131 Err codemadness.org 70 i 3132
Err codemadness.org 70 i 3129 Before diving into details, let’s get something very clear. If you want the absolute simplest plug-and-play 10gbe LAN for your homelab, pay the extra for Mellanox. If you’re willing to go hands-on, do some simple manual configuration and installation, read on for my experiences with Emulex 10gbe NICs.
Err codemadness.org 70 i 3130 Emulex NICs can often be had for around $15 on eBay, sometimes even cheaper. I recently picked up a set of 4 of these cards, which came bundled with 6 SFP+ 10g-SR modules for a grand total of $47.48. Considering I can usually find SFP+ modules for about $5/ea, these alone were worth $30.Err codemadness.org 70 i 3133
Err codemadness.org 70 i 3137- I have also tried some Solarflare cards that I found cheap, they work ok, but are pickier about optics, and tend to be focused on low-latency, so often don’t manage to saturate the full 10 gbps, topping out around 8 gbps.
Err codemadness.org 70 i 3134- I have been using fs.com for optics, patch cables, and DACs. I find DACs are usually cheaper if you are just going between a server and a switch in the same rack, or direct between 2 servers. Err codemadness.org 70 i 3135 ***
Err codemadness.org 70 i 3136
Err codemadness.org 70 i 3142Err codemadness.org 70 i 3146 Err codemadness.org 70 i 3147Almost all of the BSD releases have been well preserved. If you want to find 1BSD, or 2BSD or 4.3-TAHOE BSD you can find them online with little fuss. However, if you search for 2.11BSD, you'll find it easily enough, but it won't be the original. You'll find either the latest patched version (2.11BSD pl 469), or one of the earlier popular version (pl 430 is popular). You can even find the RetroBSD project which used 2.11BSD as a starting point to create systems for tiny mips-based PIC controllers. You'll find every single patch that's been issued for the system.
Err codemadness.org 70 i 3143 Err codemadness.org 70 i 3144
Err codemadness.org 70 i 3145
Err codemadness.org 70 i 3152Err codemadness.org 70 i 3157 Err codemadness.org 70 i 3158In November 2018 AWS published an Open Source tool called Firecracker, mostly a virtual machine monitor relying on KVM, a small sized Linux kernel, and a stripped down version of Qemu. What baffled me was the speed at which the virtual machine would fire up and run the service. The whole process is to be compared to a container, but safer, as it does not share the kernel nor any resource, it is a separate and dedicated virtual machine.
Err codemadness.org 70 i 3154 Err codemadness.org 70 i 3155
Err codemadness.org 70 i 3153 If you want to learn more on Firecracker‘s internals, here’s a very well put article.
Err codemadness.org 70 i 3156
Err codemadness.org 70 i 3161Err codemadness.org 70 i 3166 Err codemadness.org 70 i 3167Since we reported the first bits of powerpc64 support going into the tree on 16 May, work has progressed at a steady pace, resulting in snapshots now being available for this platform.
Err codemadness.org 70 i 3163 Err codemadness.org 70 i 3164
Err codemadness.org 70 i 3162 So, if you have a POWER9 system idling around, go to your nearest mirror and fetch this snapshot. Keep in mind that as this is still very early days, very little handholding is available - you are basically on your own.
Err codemadness.org 70 i 3165
Err codemadness.org 70 i 3170Err codemadness.org 70 i 3174 Err codemadness.org 70 i 3175Sorry about the delay while we chased a race condition in the updates back to an issue with the latest FreeBSD package manager updates. For now we reverted to our current version but all relevant third party packages have been updated as updates became available over the last weeks, e.g. cURL and Python, and hostapd / wpa_supplicant amongst others.
Err codemadness.org 70 i 3171 Err codemadness.org 70 i 3172
Err codemadness.org 70 i 3173
Special Guest: Warner Losh.
]]> Err codemadness.org 70 i 3205NOTES
Err codemadness.org 70
i 3278 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 3285Err codemadness.org 70 i 3288 Err codemadness.org 70 i 3289While working on a big project where multiple teams merge their feature branches frequently into a release Git branch, developers often run into situations where they find that some of their work have been either removed, modified or affected by someone else's work accidentally. It can happen in smaller teams as well. Two features could have been working perfectly fine until they got merged together and broke something. That's a highly possible case. There are many other cases which could cause such hard to understand and subtle bugs which even continuous integration (CI) systems running the entire test suite of our projects couldn't catch.
Err codemadness.org 70 i 3287
Err codemadness.org 70 i 3286 We are not going to discuss how such subtle bugs can get into our release branch because that's just a wild territory out there. Instead, we can definitely discuss about how to find a commit that deviated from an expected outcome of a certain feature. The deviation could be any behaviour of our code that we can measure distinctively — either good or bad in general.
Err codemadness.org 70 i 3294Err codemadness.org 70 i 3296 Err codemadness.org 70 i 3297The FreeBSD Project is pleased to announce the completion of the 2020 Core Team election. Active committers to the project have elected your Eleventh FreeBSD Core Team.!
Err codemadness.org 70 i 3295
Err codemadness.org 70 i 3315Err codemadness.org 70 i 3323 Err codemadness.org 70 i 3324If you buy a Pinebook Pro now, it comes with Manjaro Linux on the internal eMMC storage. Let’s install NetBSD instead!
Err codemadness.org 70 i 3317 Err codemadness.org 70 i 3318
Err codemadness.org 70 i 3316 The easiest way to get started is to buy a decent micro-SD card (what sort of markings it should have is a science of its own, by the way) and install NetBSD on that. On a warm boot (i.e. when rebooting a running system), the micro-SD card has priority compared to the eMMC, so the system will boot from there.Err codemadness.org 70 i 3319
Err codemadness.org 70 i 3322- A FreeBSD developer has borrowed some of the NetBSD code to get audio working on RockPro64 and Pinebook Pro: https://twitter.com/kernelnomicon/status/1282790609778905088 Err codemadness.org 70 i 3320 ***
Err codemadness.org 70 i 3321
Err codemadness.org 70 i 3327Err codemadness.org 70 i 3329 Err codemadness.org 70 i 3330I have ended up with some 10th Gen i3 NUC's (NUC10i3FNH to be specific) to put to work in my testbed. These are quite new devices, the build date on the boxes is 13APR2020. Before I figure out what their true role is (one of them might have to run linux) I need to install FreeBSD -CURRENT and see how performance and hardware support is.
Err codemadness.org 70 i 3328
Err codemadness.org 70 i 3335Err codemadness.org 70 i 3346 Err codemadness.org 70 i 3347Did you know there’s a default size limit to pf’s state table? I did not, but it makes sense that there is one. If for some reason you bump into this limit (difficult for home use, I’d think), here’s how you change it
Err codemadness.org 70 i 3340 Err codemadness.org 70 i 3341
Err codemadness.org 70 i 3336 There is a table-entries limit specified, you can see current settings with
Err codemadness.org 70 i 3337 'pfctl -s all'. You can adjust the limits in the /etc/pf.conf file
Err codemadness.org 70 i 3338 containing the rules with a line like this near the top:
Err codemadness.org 70 i 3339set limit table-entries 100000Err codemadness.org 70 i 3342
Err codemadness.org 70 i 3345- In the original mail thread, there is mention of the FreeBSD sysctl net.pf.request_maxcount, which controls the maximum number of entries that can be sent as a single ioctl(). This allows the user to adjust the memory limit for how big of a list the kernel is willing to allocate memory for. Err codemadness.org 70 i 3343 ***
Err codemadness.org 70 i 3344
NOTES
Err codemadness.org 70
i 3374 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 3381Err codemadness.org 70 i 3384 Err codemadness.org 70 i 3385While working on a big project where multiple teams merge their feature branches frequently into a release Git branch, developers often run into situations where they find that some of their work have been either removed, modified or affected by someone else's work accidentally. It can happen in smaller teams as well. Two features could have been working perfectly fine until they got merged together and broke something. That's a highly possible case. There are many other cases which could cause such hard to understand and subtle bugs which even continuous integration (CI) systems running the entire test suite of our projects couldn't catch.
Err codemadness.org 70 i 3383
Err codemadness.org 70 i 3382 We are not going to discuss how such subtle bugs can get into our release branch because that's just a wild territory out there. Instead, we can definitely discuss about how to find a commit that deviated from an expected outcome of a certain feature. The deviation could be any behaviour of our code that we can measure distinctively — either good or bad in general.
Err codemadness.org 70 i 3390Err codemadness.org 70 i 3392 Err codemadness.org 70 i 3393The FreeBSD Project is pleased to announce the completion of the 2020 Core Team election. Active committers to the project have elected your Eleventh FreeBSD Core Team.!
Err codemadness.org 70 i 3391
Err codemadness.org 70 i 3411Err codemadness.org 70 i 3419 Err codemadness.org 70 i 3420If you buy a Pinebook Pro now, it comes with Manjaro Linux on the internal eMMC storage. Let’s install NetBSD instead!
Err codemadness.org 70 i 3413 Err codemadness.org 70 i 3414
Err codemadness.org 70 i 3412 The easiest way to get started is to buy a decent micro-SD card (what sort of markings it should have is a science of its own, by the way) and install NetBSD on that. On a warm boot (i.e. when rebooting a running system), the micro-SD card has priority compared to the eMMC, so the system will boot from there.Err codemadness.org 70 i 3415
Err codemadness.org 70 i 3418- A FreeBSD developer has borrowed some of the NetBSD code to get audio working on RockPro64 and Pinebook Pro: https://twitter.com/kernelnomicon/status/1282790609778905088 Err codemadness.org 70 i 3416 ***
Err codemadness.org 70 i 3417
Err codemadness.org 70 i 3423Err codemadness.org 70 i 3425 Err codemadness.org 70 i 3426I have ended up with some 10th Gen i3 NUC's (NUC10i3FNH to be specific) to put to work in my testbed. These are quite new devices, the build date on the boxes is 13APR2020. Before I figure out what their true role is (one of them might have to run linux) I need to install FreeBSD -CURRENT and see how performance and hardware support is.
Err codemadness.org 70 i 3424
Err codemadness.org 70 i 3431Err codemadness.org 70 i 3442 Err codemadness.org 70 i 3443Did you know there’s a default size limit to pf’s state table? I did not, but it makes sense that there is one. If for some reason you bump into this limit (difficult for home use, I’d think), here’s how you change it
Err codemadness.org 70 i 3436 Err codemadness.org 70 i 3437
Err codemadness.org 70 i 3432 There is a table-entries limit specified, you can see current settings with
Err codemadness.org 70 i 3433 'pfctl -s all'. You can adjust the limits in the /etc/pf.conf file
Err codemadness.org 70 i 3434 containing the rules with a line like this near the top:
Err codemadness.org 70 i 3435set limit table-entries 100000Err codemadness.org 70 i 3438
Err codemadness.org 70 i 3441- In the original mail thread, there is mention of the FreeBSD sysctl net.pf.request_maxcount, which controls the maximum number of entries that can be sent as a single ioctl(). This allows the user to adjust the memory limit for how big of a list the kernel is willing to allocate memory for. Err codemadness.org 70 i 3439 ***
Err codemadness.org 70 i 3440
NOTES
Err codemadness.org 70
i 3518 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 3525Err codemadness.org 70 i 3527 Err codemadness.org 70 i 3528pot is a great and relatively new jail management tool. It offers DevOps style provisioning and can even be used to provide Docker-like, scalable cloud services together with nomad and consul (more about this in Orchestrating jails with nomad and pot).
Err codemadness.org 70 i 3526
Err codemadness.org 70 i 3533Err codemadness.org 70 i 3536 Err codemadness.org 70 i 3537Today I will be creating a OpenBSD guest via bhyve on OmniOS. I will also be adding a Pass Through Ethernet Controller so I can have a multi-homed guest that will serve as a firewall/router.
Err codemadness.org 70 i 3535
Err codemadness.org 70 i 3534 This post will cover setting up bhyve on OmniOS, so it will also be a good introduction to bhyve. As well, I look into OpenBSD’s uEFI boot loader so if you have had trouble with this, then you are in the right place.
Err codemadness.org 70 i 3544Err codemadness.org 70 i 3565 Err codemadness.org 70 i 3566Q: Comparing-apples-to-BSDs asks: I was reading one of the old articles from the archive. One of the things mentioned was how the BSDs have a distinct approach in terms of packaging the base system relative to userland apps, and that the Linux distros at the time were not following the same practice. Are there Linux distros that have adopted the same approach in modern times? If not, are there technical limitations that are preventing them from doing so, such as some distros supporting multiple kernel versions maybe?
Err codemadness.org 70 i 3546 Err codemadness.org 70 i 3547
Err codemadness.org 70 i 3545 DistroWatch answers: In the article mentioned above, I made the observation that Linux distributions tend to take one of two approaches when it comes to packaging software. Generally a Linux distribution will either offer a rolling release, where virtually all packages are regularly upgraded to their latest stable releases, or a fixed release where almost all packages are kept at a set version number and only receive bug fixes for the life cycle of the distribution. Projects like Arch Linux and Void are popular examples of rolling, always-up-to-date distributions while Fedora and Ubuntu offer fixed platforms.
Err codemadness.org 70 i 3548 Err codemadness.org 70 i 3549My FreeBSD Laptop Build
Err codemadness.org 70 i 3550 Err codemadness.org 70 i 3551I have always liked Thinkpad hardware and when I started to do more commuting I decided I needed something that had a decent sized screen but fit well on a bus. Luckily about this time Lenovo gave me a nice gift in the Thinkpad X390. Its basically the famous X2xx series but with a 13” screen and smaller bezel.
Err codemadness.org 70 i 3553 Err codemadness.org 70 i 3554
Err codemadness.org 70 i 3552 So with this laptop I figured it was time to actually put the docs together on how I got my FreeBSD workstation working on it. I will here in the near future have another post that will cover this for HardenedBSD as well since the steps are similar but have a few extra gotchas due to the extra hardening.
Err codemadness.org 70 i 3555 Err codemadness.org 70 i 3556FreeBSD CURRENT Binary Upgrades
Err codemadness.org 70 i 3557 Err codemadness.org 70 i 3558Err codemadness.org 70 i 3559
Err codemadness.org 70 i 3564- Disclaimer Err codemadness.org 70 i 3560 This proof-of-concept is not a publication of FreeBSD.
Err codemadness.org 70 i 3561- Description Err codemadness.org 70 i 3562 up.bsd.lv is a proof-of-concept of binary updates for FreeBSD/amd64 CURRENT/HEAD to facilitate the exhaustive testing of FreeBSD and the bhyve hypervisor and OpenZFS 2.0 specifically. Updates are based on the SVN revisions of official FreeBSD Release Engineering bi-monthly snapshots.
Err codemadness.org 70 i 3563
lars - openbsd router hardware
Err codemadness.org 70 i 3580 Err codemadness.org 70 i 3581Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 3583 Err codemadness.org 70 i 3584NOTES
Err codemadness.org 70
i 3591 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 3598Err codemadness.org 70 i 3600 Err codemadness.org 70 i 3601pot is a great and relatively new jail management tool. It offers DevOps style provisioning and can even be used to provide Docker-like, scalable cloud services together with nomad and consul (more about this in Orchestrating jails with nomad and pot).
Err codemadness.org 70 i 3599
Err codemadness.org 70 i 3606Err codemadness.org 70 i 3609 Err codemadness.org 70 i 3610Today I will be creating a OpenBSD guest via bhyve on OmniOS. I will also be adding a Pass Through Ethernet Controller so I can have a multi-homed guest that will serve as a firewall/router.
Err codemadness.org 70 i 3608
Err codemadness.org 70 i 3607 This post will cover setting up bhyve on OmniOS, so it will also be a good introduction to bhyve. As well, I look into OpenBSD’s uEFI boot loader so if you have had trouble with this, then you are in the right place.
Err codemadness.org 70 i 3617Err codemadness.org 70 i 3638 Err codemadness.org 70 i 3639Q: Comparing-apples-to-BSDs asks: I was reading one of the old articles from the archive. One of the things mentioned was how the BSDs have a distinct approach in terms of packaging the base system relative to userland apps, and that the Linux distros at the time were not following the same practice. Are there Linux distros that have adopted the same approach in modern times? If not, are there technical limitations that are preventing them from doing so, such as some distros supporting multiple kernel versions maybe?
Err codemadness.org 70 i 3619 Err codemadness.org 70 i 3620
Err codemadness.org 70 i 3618 DistroWatch answers: In the article mentioned above, I made the observation that Linux distributions tend to take one of two approaches when it comes to packaging software. Generally a Linux distribution will either offer a rolling release, where virtually all packages are regularly upgraded to their latest stable releases, or a fixed release where almost all packages are kept at a set version number and only receive bug fixes for the life cycle of the distribution. Projects like Arch Linux and Void are popular examples of rolling, always-up-to-date distributions while Fedora and Ubuntu offer fixed platforms.
Err codemadness.org 70 i 3621 Err codemadness.org 70 i 3622My FreeBSD Laptop Build
Err codemadness.org 70 i 3623 Err codemadness.org 70 i 3624I have always liked Thinkpad hardware and when I started to do more commuting I decided I needed something that had a decent sized screen but fit well on a bus. Luckily about this time Lenovo gave me a nice gift in the Thinkpad X390. Its basically the famous X2xx series but with a 13” screen and smaller bezel.
Err codemadness.org 70 i 3626 Err codemadness.org 70 i 3627
Err codemadness.org 70 i 3625 So with this laptop I figured it was time to actually put the docs together on how I got my FreeBSD workstation working on it. I will here in the near future have another post that will cover this for HardenedBSD as well since the steps are similar but have a few extra gotchas due to the extra hardening.
Err codemadness.org 70 i 3628 Err codemadness.org 70 i 3629FreeBSD CURRENT Binary Upgrades
Err codemadness.org 70 i 3630 Err codemadness.org 70 i 3631Err codemadness.org 70 i 3632
Err codemadness.org 70 i 3637- Disclaimer Err codemadness.org 70 i 3633 This proof-of-concept is not a publication of FreeBSD.
Err codemadness.org 70 i 3634- Description Err codemadness.org 70 i 3635 up.bsd.lv is a proof-of-concept of binary updates for FreeBSD/amd64 CURRENT/HEAD to facilitate the exhaustive testing of FreeBSD and the bhyve hypervisor and OpenZFS 2.0 specifically. Updates are based on the SVN revisions of official FreeBSD Release Engineering bi-monthly snapshots.
Err codemadness.org 70 i 3636
lars - openbsd router hardware
Err codemadness.org 70 i 3653 Err codemadness.org 70 i 3654Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 3656 Err codemadness.org 70 i 3657NOTES
Err codemadness.org 70
i 3713 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 3720Err codemadness.org 70 i 3724 Err codemadness.org 70 i 3725Some time ago Filippo Valsorda wrote yubikey-agent, seamless SSH agent for YubiKeys. I really like YubiKeys and worked on the FreeBSD support for U2F in Chromium and pyu2f, getting yubikey-agent ported looked like an interesting project. It took some hacking to make it work but overall it wasn’t hard. Following is the roadmap on how to get it set up on FreeBSD. The actual details depend on your system (as you will see)
Err codemadness.org 70 i 3721 Err codemadness.org 70 i 3722
Err codemadness.org 70 i 3723
Err codemadness.org 70 i 3728Err codemadness.org 70 i 3733 Err codemadness.org 70 i 3734This should work with OpenBSD 6.7. I write this while the source tree is locked for release, so even if I use -current this is as close as -current gets to -release
Err codemadness.org 70 i 3730 Err codemadness.org 70 i 3731
Err codemadness.org 70 i 3729 Update 2020-06-05: we now have a port for kubectl. So, at least in -current things get a bit easier.
Err codemadness.org 70 i 3732
Err codemadness.org 70 i 3739Err codemadness.org 70 i 3743 Err codemadness.org 70 i 3744FreeBSD, a free and open-source Unix-like operating system has been around since 1993. However, its origins are directly linked to that of BSD, and further back, those of Unix. During this History of FreeBSD series, we will talk about how Unix came to be, and how Berkeley’s Unix developed at Bell Labs.
Err codemadness.org 70 i 3740 Err codemadness.org 70 i 3741
Err codemadness.org 70 i 3742
Err codemadness.org 70 i 3747Err codemadness.org 70 i 3755 Err codemadness.org 70 i 3756Due to the situation with COVID-19 that also lead to people being confined to their homes in South Africa as well, we decided to provide a (freely usable of course) Jitsi Meet instance to the community being hosted in South Africa on our FreeBSD environment.
Err codemadness.org 70 i 3749 Err codemadness.org 70 i 3750
Err codemadness.org 70 i 3748 That way, communities in South Africa and beyond have a free alternative to the commercial conferencing solutions with sometimes dubious security and privacy histories and at the same time improved user experience due to the lower latency of local hosting.Err codemadness.org 70 i 3751
Err codemadness.org 70 i 3754- Grafana for Jitsi-Meet Err codemadness.org 70 i 3752 ***
Err codemadness.org 70 i 3753
Err codemadness.org 70 i 3759Err codemadness.org 70 i 3763 Err codemadness.org 70 i 3764FreeBSD uses bugzilla for tracking bugs, taking feature requests, regressions and issues in the Operating System. The web interface for bugzilla is okay, but if you want to do a lot of batch operations it is slow to deal with. We are planning to run a bugsquash on July 11th and that really needs some tooling to help any hackers that show up process the giant bug list we have.
Err codemadness.org 70 i 3760 Err codemadness.org 70 i 3761
Err codemadness.org 70 i 3762
Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 3787 Err codemadness.org 70 i 3788NOTES
Err codemadness.org 70
i 3795 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 3802Err codemadness.org 70 i 3806 Err codemadness.org 70 i 3807Some time ago Filippo Valsorda wrote yubikey-agent, seamless SSH agent for YubiKeys. I really like YubiKeys and worked on the FreeBSD support for U2F in Chromium and pyu2f, getting yubikey-agent ported looked like an interesting project. It took some hacking to make it work but overall it wasn’t hard. Following is the roadmap on how to get it set up on FreeBSD. The actual details depend on your system (as you will see)
Err codemadness.org 70 i 3803 Err codemadness.org 70 i 3804
Err codemadness.org 70 i 3805
Err codemadness.org 70 i 3810Err codemadness.org 70 i 3815 Err codemadness.org 70 i 3816This should work with OpenBSD 6.7. I write this while the source tree is locked for release, so even if I use -current this is as close as -current gets to -release
Err codemadness.org 70 i 3812 Err codemadness.org 70 i 3813
Err codemadness.org 70 i 3811 Update 2020-06-05: we now have a port for kubectl. So, at least in -current things get a bit easier.
Err codemadness.org 70 i 3814
Err codemadness.org 70 i 3821Err codemadness.org 70 i 3825 Err codemadness.org 70 i 3826FreeBSD, a free and open-source Unix-like operating system has been around since 1993. However, its origins are directly linked to that of BSD, and further back, those of Unix. During this History of FreeBSD series, we will talk about how Unix came to be, and how Berkeley’s Unix developed at Bell Labs.
Err codemadness.org 70 i 3822 Err codemadness.org 70 i 3823
Err codemadness.org 70 i 3824
Err codemadness.org 70 i 3829Err codemadness.org 70 i 3837 Err codemadness.org 70 i 3838Due to the situation with COVID-19 that also lead to people being confined to their homes in South Africa as well, we decided to provide a (freely usable of course) Jitsi Meet instance to the community being hosted in South Africa on our FreeBSD environment.
Err codemadness.org 70 i 3831 Err codemadness.org 70 i 3832
Err codemadness.org 70 i 3830 That way, communities in South Africa and beyond have a free alternative to the commercial conferencing solutions with sometimes dubious security and privacy histories and at the same time improved user experience due to the lower latency of local hosting.Err codemadness.org 70 i 3833
Err codemadness.org 70 i 3836- Grafana for Jitsi-Meet Err codemadness.org 70 i 3834 ***
Err codemadness.org 70 i 3835
Err codemadness.org 70 i 3841Err codemadness.org 70 i 3845 Err codemadness.org 70 i 3846FreeBSD uses bugzilla for tracking bugs, taking feature requests, regressions and issues in the Operating System. The web interface for bugzilla is okay, but if you want to do a lot of batch operations it is slow to deal with. We are planning to run a bugsquash on July 11th and that really needs some tooling to help any hackers that show up process the giant bug list we have.
Err codemadness.org 70 i 3842 Err codemadness.org 70 i 3843
Err codemadness.org 70 i 3844
Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 3869 Err codemadness.org 70 i 3870NOTES
Err codemadness.org 70
i 3926 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 3933Err codemadness.org 70 i 3941 Err codemadness.org 70 i 3942I just got myself a PC Engines APU4D4. I miss an OpenBSD box providing home services. It’s quite simple to install and run OpenBSD on this machine. And you can even update the BIOS from OpenBSD.
Err codemadness.org 70 i 3934 Err codemadness.org 70 i 3935
Err codemadness.org 70 i 3936 Err codemadness.org 70 i 3937NetBSD code study
Err codemadness.org 70 i 3938 Err codemadness.org 70 i 3939
Err codemadness.org 70 i 3940
Err codemadness.org 70 i 3947Err codemadness.org 70 i 3952 Err codemadness.org 70 i 3953My small homelab post generated a ton of questions and comments, most of them specific to running FreeBSD on the HP MicroServer. I’ll try and answer these over the coming week.
Err codemadness.org 70 i 3949 Err codemadness.org 70 i 3950
Err codemadness.org 70 i 3948 Josh Paxton emailed to ask how I got FreeBSD booting on it, given the unconventional booting limitations of the hardware. I thought I wrote about it a few years ago, but maybe it’s on my proverbial draft heap. If you’re impatient, the script is in my lunchbox.
Err codemadness.org 70 i 3951
Err codemadness.org 70 i 3956Err codemadness.org 70 i 3962 Err codemadness.org 70 i 3963multiboot installation of a BSD system with other operating systems
Err codemadness.org 70 i 3959 Err codemadness.org 70 i 3960
Err codemadness.org 70 i 3957 (OSs) on UEFI hardware is not officially supported by any of the
Err codemadness.org 70 i 3958 popular
Err codemadness.org 70 i 3961
Michael - Jordyns ZFS Question
Err codemadness.org 70 i 3979 Err codemadness.org 70 i 3980NOTES
Err codemadness.org 70
i 3997 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 4004Err codemadness.org 70 i 4012 Err codemadness.org 70 i 4013I just got myself a PC Engines APU4D4. I miss an OpenBSD box providing home services. It’s quite simple to install and run OpenBSD on this machine. And you can even update the BIOS from OpenBSD.
Err codemadness.org 70 i 4005 Err codemadness.org 70 i 4006
Err codemadness.org 70 i 4007 Err codemadness.org 70 i 4008NetBSD code study
Err codemadness.org 70 i 4009 Err codemadness.org 70 i 4010
Err codemadness.org 70 i 4011
Err codemadness.org 70 i 4018Err codemadness.org 70 i 4023 Err codemadness.org 70 i 4024My small homelab post generated a ton of questions and comments, most of them specific to running FreeBSD on the HP MicroServer. I’ll try and answer these over the coming week.
Err codemadness.org 70 i 4020 Err codemadness.org 70 i 4021
Err codemadness.org 70 i 4019 Josh Paxton emailed to ask how I got FreeBSD booting on it, given the unconventional booting limitations of the hardware. I thought I wrote about it a few years ago, but maybe it’s on my proverbial draft heap. If you’re impatient, the script is in my lunchbox.
Err codemadness.org 70 i 4022
Err codemadness.org 70 i 4027Err codemadness.org 70 i 4033 Err codemadness.org 70 i 4034multiboot installation of a BSD system with other operating systems
Err codemadness.org 70 i 4030 Err codemadness.org 70 i 4031
Err codemadness.org 70 i 4028 (OSs) on UEFI hardware is not officially supported by any of the
Err codemadness.org 70 i 4029 popular
Err codemadness.org 70 i 4032
Michael - Jordyns ZFS Question
Err codemadness.org 70 i 4050 Err codemadness.org 70 i 4051NOTES
Err codemadness.org 70
i 4119 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 4126Err codemadness.org 70 i 4139 Err codemadness.org 70 i 4140There was a time in history where all that mattered was an Operating System (OS) and the hardware it ran on — the “pre-software era”, if you will. Your hardware dictated the OS you used.
Err codemadness.org 70 i 4130 Err codemadness.org 70 i 4131
Err codemadness.org 70 i 4127 Once software applications became prominent, your hardware’s OS determined the applications you could run. Application vendors were forced to juggle the burden of “portability” between OS platforms, choosing carefully the operating systems they’d develop their software to. Then, there were the great OS Wars of the 1990s, replete with the rampant competition, licensing battles, and nasty lawsuits, which more or less gave birth to the “open source OS” era.
Err codemadness.org 70 i 4128 The advent of the hypervisor simultaneously gave way to the “virtual era” which set us on a path of agnosticism toward the OS. Instead of choosing from the applications available for your chosen OS, you could simply install another OS on the same hardware for your chosen application. The OS became nothing but a necessary cog in the stack.
Err codemadness.org 70 i 4129 TrueNAS open storage enables this “post-OS era” with support for storage clients of all UNIX flavors, Linux, FreeBSD, Windows, MacOS, VMware, Citrix, and many others. Containerization has carried that mentality even further. An operating system, like the hardware that runs it, is now just thought of as part of the “infrastructure”.
Err codemadness.org 70 i 4132 Err codemadness.org 70 i 4133Encrypted ZFS on NetBSD 9.0, for a FreeBSD guy
Err codemadness.org 70 i 4134 Err codemadness.org 70 i 4135I had one of my other HP Microservers brought back from the office last week to help with this working-from-home world we’re in right now. I was going to wipe an old version of Debian Wheezy/Xen and install FreeBSD to mirror my other machines before thinking: why not NetBSD?
Err codemadness.org 70 i 4136 Err codemadness.org 70 i 4137
Err codemadness.org 70 i 4138
Err codemadness.org 70 i 4153Err codemadness.org 70 i 4173 Err codemadness.org 70 i 4174While no one would expect this, there are huge efforts from a small team to bring more games into OpenBSD. In fact, now some commercial games works natively now, thanks to Mono or Java. There are no wine or linux emulation layer in OpenBSD.
Err codemadness.org 70 i 4155 Err codemadness.org 70 i 4156
Err codemadness.org 70 i 4154 Here is a small list of most well known games that run on OpenBSD:
Err codemadness.org 70 i 4157 Err codemadness.org 70 i 4158'dig' a little deeper
Err codemadness.org 70 i 4159 Err codemadness.org 70 i 4160I knew the existence of the dig command but didn't exactly know when and how to use it. Then, just recently I encountered an issue that allowed me to learn and make use of it.
Err codemadness.org 70 i 4161 Err codemadness.org 70 i 4162
Err codemadness.org 70 i 4163 Err codemadness.org 70 i 4164HAMMER2 and periodic snapshots
Err codemadness.org 70 i 4165 Err codemadness.org 70 i 4166The first version of HAMMER took automatic snapshots, set within the config for each filesystem. HAMMER2 now also takes automatic snapshots, via periodic(8) like most every repeating task on your DragonFly system.
Err codemadness.org 70 i 4167 Err codemadness.org 70 i 4168Err codemadness.org 70 i 4169
Err codemadness.org 70 i 4172- git: Implement periodic hammer2 snapshots Err codemadness.org 70 i 4170 ***
Err codemadness.org 70 i 4171
NOTES
Err codemadness.org 70
i 4195 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 4202Err codemadness.org 70 i 4215 Err codemadness.org 70 i 4216There was a time in history where all that mattered was an Operating System (OS) and the hardware it ran on — the “pre-software era”, if you will. Your hardware dictated the OS you used.
Err codemadness.org 70 i 4206 Err codemadness.org 70 i 4207
Err codemadness.org 70 i 4203 Once software applications became prominent, your hardware’s OS determined the applications you could run. Application vendors were forced to juggle the burden of “portability” between OS platforms, choosing carefully the operating systems they’d develop their software to. Then, there were the great OS Wars of the 1990s, replete with the rampant competition, licensing battles, and nasty lawsuits, which more or less gave birth to the “open source OS” era.
Err codemadness.org 70 i 4204 The advent of the hypervisor simultaneously gave way to the “virtual era” which set us on a path of agnosticism toward the OS. Instead of choosing from the applications available for your chosen OS, you could simply install another OS on the same hardware for your chosen application. The OS became nothing but a necessary cog in the stack.
Err codemadness.org 70 i 4205 TrueNAS open storage enables this “post-OS era” with support for storage clients of all UNIX flavors, Linux, FreeBSD, Windows, MacOS, VMware, Citrix, and many others. Containerization has carried that mentality even further. An operating system, like the hardware that runs it, is now just thought of as part of the “infrastructure”.
Err codemadness.org 70 i 4208 Err codemadness.org 70 i 4209Encrypted ZFS on NetBSD 9.0, for a FreeBSD guy
Err codemadness.org 70 i 4210 Err codemadness.org 70 i 4211I had one of my other HP Microservers brought back from the office last week to help with this working-from-home world we’re in right now. I was going to wipe an old version of Debian Wheezy/Xen and install FreeBSD to mirror my other machines before thinking: why not NetBSD?
Err codemadness.org 70 i 4212 Err codemadness.org 70 i 4213
Err codemadness.org 70 i 4214
Err codemadness.org 70 i 4229Err codemadness.org 70 i 4249 Err codemadness.org 70 i 4250While no one would expect this, there are huge efforts from a small team to bring more games into OpenBSD. In fact, now some commercial games works natively now, thanks to Mono or Java. There are no wine or linux emulation layer in OpenBSD.
Err codemadness.org 70 i 4231 Err codemadness.org 70 i 4232
Err codemadness.org 70 i 4230 Here is a small list of most well known games that run on OpenBSD:
Err codemadness.org 70 i 4233 Err codemadness.org 70 i 4234'dig' a little deeper
Err codemadness.org 70 i 4235 Err codemadness.org 70 i 4236I knew the existence of the dig command but didn't exactly know when and how to use it. Then, just recently I encountered an issue that allowed me to learn and make use of it.
Err codemadness.org 70 i 4237 Err codemadness.org 70 i 4238
Err codemadness.org 70 i 4239 Err codemadness.org 70 i 4240HAMMER2 and periodic snapshots
Err codemadness.org 70 i 4241 Err codemadness.org 70 i 4242The first version of HAMMER took automatic snapshots, set within the config for each filesystem. HAMMER2 now also takes automatic snapshots, via periodic(8) like most every repeating task on your DragonFly system.
Err codemadness.org 70 i 4243 Err codemadness.org 70 i 4244Err codemadness.org 70 i 4245
Err codemadness.org 70 i 4248- git: Implement periodic hammer2 snapshots Err codemadness.org 70 i 4246 ***
Err codemadness.org 70 i 4247
NOTES
Err codemadness.org 70
i 4325 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 4332Err codemadness.org 70 i 4334 Err codemadness.org 70 i 4335Let's see how to upgrade your OpenBSD system. Maybe you are doing this because the latest release just came out. If so, this is pretty simple: back up your data, boot from install media, and select "Upgrade" instead of "Install". But maybe the latest release has been out for a few months. Why would we go through the trouble of building and installing a new kernel or other core system components? Maybe some patches have been released to improve system security or stability. It is pretty easy to build and install a kernel on OpenBSD, easier and simpler in many ways than it is on Linux.
Err codemadness.org 70 i 4333
Err codemadness.org 70 i 4340Err codemadness.org 70 i 4344 Err codemadness.org 70 i 4345Where do UNIX manpages come from? Who introduced the section-based layout of NAME, SYNOPSIS, and so on? And for manpage authors: where were those economical two- and three-letter instructions developed?
Err codemadness.org 70 i 4341 Err codemadness.org 70 i 4342
Err codemadness.org 70 i 4343
Err codemadness.org 70 i 4348Err codemadness.org 70 i 4354 Err codemadness.org 70 i 4355The VAX is the oldest machine architecture still supported by NetBSD.
Err codemadness.org 70 i 4351 Err codemadness.org 70 i 4352
Err codemadness.org 70 i 4349 Unfortunately there is another challenge, totally outside of NetBSD, but affecting the VAX port big time: the compiler support for VAX is ... let's say sub-optimal. It is also risking to be dropped completely by gcc upstream.
Err codemadness.org 70 i 4350 Now here is where people can help: there is a bounty campaign to finance a gcc hacker to fix the hardest and most immediate issue with gcc for VAX. Without this being resolved, gcc will drop support for VAX in a near future version.
Err codemadness.org 70 i 4353
Err codemadness.org 70 i 4358Err codemadness.org 70 i 4362 Err codemadness.org 70 i 4363As a FreeBSD developer, I make a point of using FreeBSD whenever I can — including on the desktop. I've been running FreeBSD on laptops since 2004; this hasn't always been easy, but over the years I've found that the situation has generally been improving. One of the things we still lack is adequate documentation, however — so I'm writing this to provide an example for users and also Google bait in case anyone runs into some of the problems I had to address.
Err codemadness.org 70 i 4359 Err codemadness.org 70 i 4360
Err codemadness.org 70 i 4361
Err codemadness.org 70 i 4366Err codemadness.org 70 i 4375 Err codemadness.org 70 i 4376HAMMER2 just became a little more DWIM: the pfs-list and pfs-delete directives will now look across all mounted filesystems, not just the current directory’s mount path. pfs-delete won’t delete any filesystem name that appears in more than one place, though
Err codemadness.org 70 i 4367 Err codemadness.org 70 i 4368Err codemadness.org 70 i 4369
Err codemadness.org 70 i 4374- git: hammer2 - Enhance pfs-list and pfs-delete Err codemadness.org 70 i 4370 Enhance pfs-list to list PFSs available across all mounted hammer2 filesystems instead of just the current directory's mount. A specific mount may be specified via -s mountpt. Err codemadness.org 70 i 4371 Enhance pfs-delete to look for the PFS name across all mounted hammer2 filesystems instead of just the current directory's mount. Err codemadness.org 70 i 4372 As a safety, pfs-delete will refuse to delete PFS names which are duplicated across multiple mounts. A specific mount may be specified via -s mountpt.
Err codemadness.org 70 i 4373
NOTES
Err codemadness.org 70
i 4404 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 4411Err codemadness.org 70 i 4413 Err codemadness.org 70 i 4414Let's see how to upgrade your OpenBSD system. Maybe you are doing this because the latest release just came out. If so, this is pretty simple: back up your data, boot from install media, and select "Upgrade" instead of "Install". But maybe the latest release has been out for a few months. Why would we go through the trouble of building and installing a new kernel or other core system components? Maybe some patches have been released to improve system security or stability. It is pretty easy to build and install a kernel on OpenBSD, easier and simpler in many ways than it is on Linux.
Err codemadness.org 70 i 4412
Err codemadness.org 70 i 4419Err codemadness.org 70 i 4423 Err codemadness.org 70 i 4424Where do UNIX manpages come from? Who introduced the section-based layout of NAME, SYNOPSIS, and so on? And for manpage authors: where were those economical two- and three-letter instructions developed?
Err codemadness.org 70 i 4420 Err codemadness.org 70 i 4421
Err codemadness.org 70 i 4422
Err codemadness.org 70 i 4427Err codemadness.org 70 i 4433 Err codemadness.org 70 i 4434The VAX is the oldest machine architecture still supported by NetBSD.
Err codemadness.org 70 i 4430 Err codemadness.org 70 i 4431
Err codemadness.org 70 i 4428 Unfortunately there is another challenge, totally outside of NetBSD, but affecting the VAX port big time: the compiler support for VAX is ... let's say sub-optimal. It is also risking to be dropped completely by gcc upstream.
Err codemadness.org 70 i 4429 Now here is where people can help: there is a bounty campaign to finance a gcc hacker to fix the hardest and most immediate issue with gcc for VAX. Without this being resolved, gcc will drop support for VAX in a near future version.
Err codemadness.org 70 i 4432
Err codemadness.org 70 i 4437Err codemadness.org 70 i 4441 Err codemadness.org 70 i 4442As a FreeBSD developer, I make a point of using FreeBSD whenever I can — including on the desktop. I've been running FreeBSD on laptops since 2004; this hasn't always been easy, but over the years I've found that the situation has generally been improving. One of the things we still lack is adequate documentation, however — so I'm writing this to provide an example for users and also Google bait in case anyone runs into some of the problems I had to address.
Err codemadness.org 70 i 4438 Err codemadness.org 70 i 4439
Err codemadness.org 70 i 4440
Err codemadness.org 70 i 4445Err codemadness.org 70 i 4454 Err codemadness.org 70 i 4455HAMMER2 just became a little more DWIM: the pfs-list and pfs-delete directives will now look across all mounted filesystems, not just the current directory’s mount path. pfs-delete won’t delete any filesystem name that appears in more than one place, though
Err codemadness.org 70 i 4446 Err codemadness.org 70 i 4447Err codemadness.org 70 i 4448
Err codemadness.org 70 i 4453- git: hammer2 - Enhance pfs-list and pfs-delete Err codemadness.org 70 i 4449 Enhance pfs-list to list PFSs available across all mounted hammer2 filesystems instead of just the current directory's mount. A specific mount may be specified via -s mountpt. Err codemadness.org 70 i 4450 Enhance pfs-delete to look for the PFS name across all mounted hammer2 filesystems instead of just the current directory's mount. Err codemadness.org 70 i 4451 As a safety, pfs-delete will refuse to delete PFS names which are duplicated across multiple mounts. A specific mount may be specified via -s mountpt.
Err codemadness.org 70 i 4452
NOTES
Err codemadness.org 70
i 4532 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 4539Err codemadness.org 70 i 4546 Err codemadness.org 70 i 4547The second RC build of the 11.4-RELEASE release cycle is now available.
Err codemadness.org 70 i 4540 Err codemadness.org 70 i 4541Err codemadness.org 70 i 4542
Err codemadness.org 70 i 4545- 11.4-RELEASE notes (still in progress at the time of recording) Err codemadness.org 70 i 4543 ***
Err codemadness.org 70 i 4544
Err codemadness.org 70 i 4550Err codemadness.org 70 i 4554 Err codemadness.org 70 i 4555This document is work in progress and I'll update the date above once I change something. If you have something to add, remarks, etc please contact me. Preferably via Mastodon but other means of communication are also fine.
Err codemadness.org 70 i 4551 Err codemadness.org 70 i 4552
Err codemadness.org 70 i 4553
Err codemadness.org 70 i 4560Err codemadness.org 70 i 4564 Err codemadness.org 70 i 4565Veteran technology writer Jim Salter wrote an excellent guide on the ZFS file system’s features and performance that we absolutely had to share. There’s plenty of information in the article for ZFS newbies and advanced users alike. Be sure to check out the article over at Ars Technica to learn more about ZFS concepts including pools, vdevs, datasets, snapshots, and replication, just to name a few.
Err codemadness.org 70 i 4561 Err codemadness.org 70 i 4562
Err codemadness.org 70 i 4563
Err codemadness.org 70 i 4568Err codemadness.org 70 i 4572 Err codemadness.org 70 i 4573Colin is the founder of Tarsnap, a secure online backup service which combines the flexibility and scriptability of the standard UNIX "tar" utility with strong encryption, deduplication, and the reliability of Amazon S3 storage. Having started work on Tarsnap in 2006, Colin is among the first generation of users of Amazon Web Services, and has written dozens of articles about his experiences with AWS on his blog.
Err codemadness.org 70 i 4569 Err codemadness.org 70 i 4570
Err codemadness.org 70 i 4571
Err codemadness.org 70 i 4576Err codemadness.org 70 i 4581 Err codemadness.org 70 i 4582The FreeBSD Core Team invites you to complete the 2020 FreeBSD Community Survey. The purpose of this survey is to collect quantitative data from the public in order to help guide the project’s priorities and efforts. This is only the second time a survey has been conducted by the FreeBSD Project and your input is valued.
Err codemadness.org 70 i 4578 Err codemadness.org 70 i 4579
Err codemadness.org 70 i 4577 The survey will remain open for 14 days and will close on June 16th at 17:00 UTC (Tuesday 10am PDT).
Err codemadness.org 70 i 4580
Morgan - Can I get some commentary on this issue
Err codemadness.org 70 i 4599 Err codemadness.org 70 i 4600Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 4602 Err codemadness.org 70 i 4603Sponsored By:
NOTES
Err codemadness.org 70
i 4610 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 4617Err codemadness.org 70 i 4624 Err codemadness.org 70 i 4625The second RC build of the 11.4-RELEASE release cycle is now available.
Err codemadness.org 70 i 4618 Err codemadness.org 70 i 4619Err codemadness.org 70 i 4620
Err codemadness.org 70 i 4623- 11.4-RELEASE notes (still in progress at the time of recording) Err codemadness.org 70 i 4621 ***
Err codemadness.org 70 i 4622
Err codemadness.org 70 i 4628Err codemadness.org 70 i 4632 Err codemadness.org 70 i 4633This document is work in progress and I'll update the date above once I change something. If you have something to add, remarks, etc please contact me. Preferably via Mastodon but other means of communication are also fine.
Err codemadness.org 70 i 4629 Err codemadness.org 70 i 4630
Err codemadness.org 70 i 4631
Err codemadness.org 70 i 4638Err codemadness.org 70 i 4642 Err codemadness.org 70 i 4643Veteran technology writer Jim Salter wrote an excellent guide on the ZFS file system’s features and performance that we absolutely had to share. There’s plenty of information in the article for ZFS newbies and advanced users alike. Be sure to check out the article over at Ars Technica to learn more about ZFS concepts including pools, vdevs, datasets, snapshots, and replication, just to name a few.
Err codemadness.org 70 i 4639 Err codemadness.org 70 i 4640
Err codemadness.org 70 i 4641
Err codemadness.org 70 i 4646Err codemadness.org 70 i 4650 Err codemadness.org 70 i 4651Colin is the founder of Tarsnap, a secure online backup service which combines the flexibility and scriptability of the standard UNIX "tar" utility with strong encryption, deduplication, and the reliability of Amazon S3 storage. Having started work on Tarsnap in 2006, Colin is among the first generation of users of Amazon Web Services, and has written dozens of articles about his experiences with AWS on his blog.
Err codemadness.org 70 i 4647 Err codemadness.org 70 i 4648
Err codemadness.org 70 i 4649
Err codemadness.org 70 i 4654Err codemadness.org 70 i 4659 Err codemadness.org 70 i 4660The FreeBSD Core Team invites you to complete the 2020 FreeBSD Community Survey. The purpose of this survey is to collect quantitative data from the public in order to help guide the project’s priorities and efforts. This is only the second time a survey has been conducted by the FreeBSD Project and your input is valued.
Err codemadness.org 70 i 4656 Err codemadness.org 70 i 4657
Err codemadness.org 70 i 4655 The survey will remain open for 14 days and will close on June 16th at 17:00 UTC (Tuesday 10am PDT).
Err codemadness.org 70 i 4658
Morgan - Can I get some commentary on this issue
Err codemadness.org 70 i 4677 Err codemadness.org 70 i 4678Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 4680 Err codemadness.org 70 i 4681Sponsored By:
NOTES
Err codemadness.org 70
i 4733 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 4740Err codemadness.org 70 i 4742 Err codemadness.org 70 i 4743In this blog, we will discuss about the 4.4BSD Thread scheduler one of the two schedulers in NetBSD and a few OS APIs that can be used to control the schedulers and get information while executing.
Err codemadness.org 70 i 4741
Err codemadness.org 70 i 4748Err codemadness.org 70 i 4750 Err codemadness.org 70 i 4751This has been a long while in the making—it's test results time. To truly understand the fundamentals of computer storage, it's important to explore the impact of various conventional RAID (Redundant Array of Inexpensive Disks) topologies on performance. It's also important to understand what ZFS is and how it works. But at some point, people (particularly computer enthusiasts on the Internet) want numbers.
Err codemadness.org 70 i 4749
Err codemadness.org 70 i 4762Err codemadness.org 70 i 4764 Err codemadness.org 70 i 4765I used OpenBSD on the original Surface Go back in 2018 and many things worked with the big exception of the internal Atheros WiFi. This meant I had to keep it tethered to a USB-C dock for Ethernet or use a small USB-A WiFi dongle plugged into a less-than-small USB-A-to-USB-C adapter.
Err codemadness.org 70 i 4763
Err codemadness.org 70 i 4770Err codemadness.org 70 i 4774 Err codemadness.org 70 i 4775If you’ve ever installed and explored another Linux distro (what Linux sysadmin hasn’t?!?), then exploring FreeBSD is going be somewhat similar with a few key differences.
Err codemadness.org 70 i 4773
Err codemadness.org 70 i 4771 While there is no graphical installation, the installation process is straightforward and similar to installing a server-based Linux distro. Just make sure you choose the local_unbound package when prompted if you want to cache DNS lookups locally, as FreeBSD doesn’t have a built-in local DNS resolver that does this.
Err codemadness.org 70 i 4772 Following installation, the directory structure is almost identical to Linux. Of course, you’ll notice some small differences here and there (e.g. regular user home directories are located under /usr/home instead of /home). Standard UNIX commands such as ls, chmod, find, which, ps, nice, ifconfig, netstat, sockstat (the ss command in Linux) are exactly as you’d expect, but with some different options here and there that you’ll see in the man pages. And yes, reboot and poweroff are there too.
Err codemadness.org 70 i 4780Err codemadness.org 70 i 4782 Err codemadness.org 70 i 4783Recently I replaced my 2014 MacBook Air with a Lenovo Thinkpad T480, on which I've installed FreeBSD, currently 12.1-RELEASE. This page documents my set-up along with various configuration tweaks and fixes.
Err codemadness.org 70 i 4781
Sponsored By:
NOTES
Err codemadness.org 70
i 4813 This episode of BSDNow is brought to you by Tarsnap
Err codemadness.org 70 i 4820Err codemadness.org 70 i 4822 Err codemadness.org 70 i 4823In this blog, we will discuss about the 4.4BSD Thread scheduler one of the two schedulers in NetBSD and a few OS APIs that can be used to control the schedulers and get information while executing.
Err codemadness.org 70 i 4821
Err codemadness.org 70 i 4828Err codemadness.org 70 i 4830 Err codemadness.org 70 i 4831This has been a long while in the making—it's test results time. To truly understand the fundamentals of computer storage, it's important to explore the impact of various conventional RAID (Redundant Array of Inexpensive Disks) topologies on performance. It's also important to understand what ZFS is and how it works. But at some point, people (particularly computer enthusiasts on the Internet) want numbers.
Err codemadness.org 70 i 4829
Err codemadness.org 70 i 4842Err codemadness.org 70 i 4844 Err codemadness.org 70 i 4845I used OpenBSD on the original Surface Go back in 2018 and many things worked with the big exception of the internal Atheros WiFi. This meant I had to keep it tethered to a USB-C dock for Ethernet or use a small USB-A WiFi dongle plugged into a less-than-small USB-A-to-USB-C adapter.
Err codemadness.org 70 i 4843
Err codemadness.org 70 i 4850Err codemadness.org 70 i 4854 Err codemadness.org 70 i 4855If you’ve ever installed and explored another Linux distro (what Linux sysadmin hasn’t?!?), then exploring FreeBSD is going be somewhat similar with a few key differences.
Err codemadness.org 70 i 4853
Err codemadness.org 70 i 4851 While there is no graphical installation, the installation process is straightforward and similar to installing a server-based Linux distro. Just make sure you choose the local_unbound package when prompted if you want to cache DNS lookups locally, as FreeBSD doesn’t have a built-in local DNS resolver that does this.
Err codemadness.org 70 i 4852 Following installation, the directory structure is almost identical to Linux. Of course, you’ll notice some small differences here and there (e.g. regular user home directories are located under /usr/home instead of /home). Standard UNIX commands such as ls, chmod, find, which, ps, nice, ifconfig, netstat, sockstat (the ss command in Linux) are exactly as you’d expect, but with some different options here and there that you’ll see in the man pages. And yes, reboot and poweroff are there too.
Err codemadness.org 70 i 4860Err codemadness.org 70 i 4862 Err codemadness.org 70 i 4863Recently I replaced my 2014 MacBook Air with a Lenovo Thinkpad T480, on which I've installed FreeBSD, currently 12.1-RELEASE. This page documents my set-up along with various configuration tweaks and fixes.
Err codemadness.org 70 i 4861
Sponsored By:
Err codemadness.org 70 i 4947Err codemadness.org 70 i 4951 Err codemadness.org 70 i 4952Err codemadness.org 70 i 4948Err codemadness.org 70 i 4950A brief introduction to randomness
Err codemadness.org 70 i 4949
Err codemadness.org 70 i 4957Err codemadness.org 70 i 4959 Err codemadness.org 70 i 4960But what if we want them to act unpredictably? This is very useful if we want to secure our private communications with randomized keys, or not let people cheat at video games, or if we're doing statistical simulations or similar.
Err codemadness.org 70 i 4958
Err codemadness.org 70 i 4965Err codemadness.org 70 i 4970 Err codemadness.org 70 i 4971Err codemadness.org 70 i 4966Err codemadness.org 70 i 4969I’ve heard it said the cobbler’s children walk barefoot. While posessing the qualities of a famed financial investment strategy, it speaks to how we generally put more effort into things for others than ourselves; at least in business.
Err codemadness.org 70 i 4968
Err codemadness.org 70 i 4967 The HP Microserver I share with Clara is a modest affair compared to what we run at work. It has six spinning rust drives and two SSDs which are ZFS-mirrored; not even in a RAID 10 equivalent. This is underlaid with GELI for encryption, and served to our Macs with Netatalk over gigabit Ethernet with jumbo frames.
Err codemadness.org 70 i 4978Err codemadness.org 70 i 4983 Err codemadness.org 70 i 4984Matt Thomas (matt@) has served on the NetBSD core team for over ten years, and has made many contributions, including ELF functionality, being the long-time VAX maintainer, gcc contributor, the generic pmap, and also networking functionality, and platform bring-up over the years. Matt has stepped down from the NetBSD core team, and we thank him for his many, extensive contributions.
Err codemadness.org 70 i 4980 Err codemadness.org 70 i 4981
Err codemadness.org 70 i 4979 Robert Elz (kre@), a long time BSD contributor, has kindly accepted the offer to join the core team, and help us out with the benefit of his experience and advice over many years. Amongst other things, Robert has been maintaining our shell, liaising with the Austin Group, and bringing it up to date with modern functionality.
Err codemadness.org 70 i 4982
Err codemadness.org 70 i 4987Err codemadness.org 70 i 4989 Err codemadness.org 70 i 4990In a post to the ports@ mailing list, Landry Breuil (landry@) shared some of his notes on using qemu guest agent on OpenBSD kvm/qemu guests.
Err codemadness.org 70 i 4988
Err codemadness.org 70 i 4995Err codemadness.org 70 i 4999 Err codemadness.org 70 i 5000A while ago I wanted to learn more about OpenBSD development. So I picked a project, in this case WireGuard, to develop a native client for. Over the last two years, with many different iterations, and working closely with the WireGuard's creator (Jason [Jason A. Donenfeld - Ed.], CC'd), it started to become a serious project eventually reaching parity with other official implementations. Finally, we are here and I think it is time for any further development to happen inside the src tree.
Err codemadness.org 70 i 4996 Err codemadness.org 70 i 4997
Err codemadness.org 70 i 4998
Err codemadness.org 70 i 5003Err codemadness.org 70 i 5007 Err codemadness.org 70 i 5008I’m using FreeBSD again on a laptop for some reasons so expect to read more about FreeBSD here. This tutorial explain how to get a graphical desktop using FreeBSD 12.1.
Err codemadness.org 70 i 5004 Err codemadness.org 70 i 5005
Err codemadness.org 70 i 5006
Err codemadness.org 70 i 5044Err codemadness.org 70 i 5048 Err codemadness.org 70 i 5049Err codemadness.org 70 i 5045Err codemadness.org 70 i 5047A brief introduction to randomness
Err codemadness.org 70 i 5046
Err codemadness.org 70 i 5054Err codemadness.org 70 i 5056 Err codemadness.org 70 i 5057But what if we want them to act unpredictably? This is very useful if we want to secure our private communications with randomized keys, or not let people cheat at video games, or if we're doing statistical simulations or similar.
Err codemadness.org 70 i 5055
Err codemadness.org 70 i 5062Err codemadness.org 70 i 5067 Err codemadness.org 70 i 5068Err codemadness.org 70 i 5063Err codemadness.org 70 i 5066I’ve heard it said the cobbler’s children walk barefoot. While posessing the qualities of a famed financial investment strategy, it speaks to how we generally put more effort into things for others than ourselves; at least in business.
Err codemadness.org 70 i 5065
Err codemadness.org 70 i 5064 The HP Microserver I share with Clara is a modest affair compared to what we run at work. It has six spinning rust drives and two SSDs which are ZFS-mirrored; not even in a RAID 10 equivalent. This is underlaid with GELI for encryption, and served to our Macs with Netatalk over gigabit Ethernet with jumbo frames.
Err codemadness.org 70 i 5075Err codemadness.org 70 i 5080 Err codemadness.org 70 i 5081Matt Thomas (matt@) has served on the NetBSD core team for over ten years, and has made many contributions, including ELF functionality, being the long-time VAX maintainer, gcc contributor, the generic pmap, and also networking functionality, and platform bring-up over the years. Matt has stepped down from the NetBSD core team, and we thank him for his many, extensive contributions.
Err codemadness.org 70 i 5077 Err codemadness.org 70 i 5078
Err codemadness.org 70 i 5076 Robert Elz (kre@), a long time BSD contributor, has kindly accepted the offer to join the core team, and help us out with the benefit of his experience and advice over many years. Amongst other things, Robert has been maintaining our shell, liaising with the Austin Group, and bringing it up to date with modern functionality.
Err codemadness.org 70 i 5079
Err codemadness.org 70 i 5084Err codemadness.org 70 i 5086 Err codemadness.org 70 i 5087In a post to the ports@ mailing list, Landry Breuil (landry@) shared some of his notes on using qemu guest agent on OpenBSD kvm/qemu guests.
Err codemadness.org 70 i 5085
Err codemadness.org 70 i 5092Err codemadness.org 70 i 5096 Err codemadness.org 70 i 5097A while ago I wanted to learn more about OpenBSD development. So I picked a project, in this case WireGuard, to develop a native client for. Over the last two years, with many different iterations, and working closely with the WireGuard's creator (Jason [Jason A. Donenfeld - Ed.], CC'd), it started to become a serious project eventually reaching parity with other official implementations. Finally, we are here and I think it is time for any further development to happen inside the src tree.
Err codemadness.org 70 i 5093 Err codemadness.org 70 i 5094
Err codemadness.org 70 i 5095
Err codemadness.org 70 i 5100Err codemadness.org 70 i 5104 Err codemadness.org 70 i 5105I’m using FreeBSD again on a laptop for some reasons so expect to read more about FreeBSD here. This tutorial explain how to get a graphical desktop using FreeBSD 12.1.
Err codemadness.org 70 i 5101 Err codemadness.org 70 i 5102
Err codemadness.org 70 i 5103
Err codemadness.org 70 i 5188Err codemadness.org 70 i 5190 Err codemadness.org 70 i 5191Putting together the bits and pieces of a backup and restore concept, while not being rocket science, always seems to be a little bit ungrateful. Most Admin Handbooks handle this topic only within few pages. After replacing my old Mac Mini's OS by NetBSD, I tried to implement an automated backup, allowing me to handle it similarly to the time machine backups I've been using before. Suggestions on how to improve are always welcome.
Err codemadness.org 70 i 5189
Err codemadness.org 70 i 5196Err codemadness.org 70 i 5198 Err codemadness.org 70 i 5199The OpenBSD project produces and operating system which places focus on portability, standardisation, code correctness, proactive security and integrated cryptography. The project's latest release is OpenBSD 6.7 which introduces several new improvements to the cron scheduling daemon, improvements to the web server daemon, and the top command now offers scrollable output. These and many more changes can be found in the project's release announcement: "This is a partial list of new features and systems included in OpenBSD 6.7. For a comprehensive list, see the changelog leading to 6.7. General improvements and bugfixes: Reduced the minimum allowed number of chunks in a CONCAT volume from 2 to 1, increasing the number of volumes which can be created on a single disk with bioctl(8) from 7 to 15. This can be used to create more partitions than previously. Rewrote the cron(8) flag-parsing code to be getopt-like, allowing tight formations like -ns and flag repetition. Renamed the 'options' field in crontab(5) to 'flags'. Added crontab(5) -s flag to the command field, indicating that only a single instance of the job should run concurrently. Added cron(8) support for random time values using the ~ operator. Allowed cwm(1) configuration of window size based on percentage of the master window during horizontal and vertical tiling actions."
Err codemadness.org 70 i 5197
Err codemadness.org 70 i 5211Err codemadness.org 70 i 5214 Err codemadness.org 70 i 5215Recently, I had an opportunity to build a WireGuard jail on a FreeBSD 12.1 host.
Err codemadness.org 70 i 5213
Err codemadness.org 70 i 5212 As it was really quick and easy to setup and it has been working completely fine for a month, I’d like to share my experience with anyone interested in this topic.
Err codemadness.org 70 i 5220Err codemadness.org 70 i 5222 Err codemadness.org 70 i 5223One of the famous big splits between the BSD Unix world and the System V world is whether ordinary users can use chown (the command and the system call) to give away their own files. In System V derived Unixes you were generally allowed to; in BSD derived Unixes you weren't. Until I looked it up now to make sure, I thought that BSD changed this behavior from V7 and that V7 had an unrestricted chown. However, this turns out to be wrong; in V7 Unix, chown(2) was restricted to root only.
Err codemadness.org 70 i 5221
Err codemadness.org 70 i 5228Err codemadness.org 70 i 5232 Err codemadness.org 70 i 5233As many of you know, we’ve historically had three ticket types available in our tracker: Bugs, Features, and Improvements, which are all fairly self-explanatory. After some discussion internally, we’ve decided to implement a new type of ticket, a “Suggestion”. These will be replacing Feature and Improvement requests for the TrueNAS Community, simplifying things down to two options: Bugs and Suggestions. This change also introduces a slightly different workflow than before.
Err codemadness.org 70 i 5229 Err codemadness.org 70 i 5230
Err codemadness.org 70 i 5231
Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 5263Err codemadness.org 70 i 5265 Err codemadness.org 70 i 5266Putting together the bits and pieces of a backup and restore concept, while not being rocket science, always seems to be a little bit ungrateful. Most Admin Handbooks handle this topic only within few pages. After replacing my old Mac Mini's OS by NetBSD, I tried to implement an automated backup, allowing me to handle it similarly to the time machine backups I've been using before. Suggestions on how to improve are always welcome.
Err codemadness.org 70 i 5264
Err codemadness.org 70 i 5271Err codemadness.org 70 i 5273 Err codemadness.org 70 i 5274The OpenBSD project produces and operating system which places focus on portability, standardisation, code correctness, proactive security and integrated cryptography. The project's latest release is OpenBSD 6.7 which introduces several new improvements to the cron scheduling daemon, improvements to the web server daemon, and the top command now offers scrollable output. These and many more changes can be found in the project's release announcement: "This is a partial list of new features and systems included in OpenBSD 6.7. For a comprehensive list, see the changelog leading to 6.7. General improvements and bugfixes: Reduced the minimum allowed number of chunks in a CONCAT volume from 2 to 1, increasing the number of volumes which can be created on a single disk with bioctl(8) from 7 to 15. This can be used to create more partitions than previously. Rewrote the cron(8) flag-parsing code to be getopt-like, allowing tight formations like -ns and flag repetition. Renamed the 'options' field in crontab(5) to 'flags'. Added crontab(5) -s flag to the command field, indicating that only a single instance of the job should run concurrently. Added cron(8) support for random time values using the ~ operator. Allowed cwm(1) configuration of window size based on percentage of the master window during horizontal and vertical tiling actions."
Err codemadness.org 70 i 5272
Err codemadness.org 70 i 5286Err codemadness.org 70 i 5289 Err codemadness.org 70 i 5290Recently, I had an opportunity to build a WireGuard jail on a FreeBSD 12.1 host.
Err codemadness.org 70 i 5288
Err codemadness.org 70 i 5287 As it was really quick and easy to setup and it has been working completely fine for a month, I’d like to share my experience with anyone interested in this topic.
Err codemadness.org 70 i 5295Err codemadness.org 70 i 5297 Err codemadness.org 70 i 5298One of the famous big splits between the BSD Unix world and the System V world is whether ordinary users can use chown (the command and the system call) to give away their own files. In System V derived Unixes you were generally allowed to; in BSD derived Unixes you weren't. Until I looked it up now to make sure, I thought that BSD changed this behavior from V7 and that V7 had an unrestricted chown. However, this turns out to be wrong; in V7 Unix, chown(2) was restricted to root only.
Err codemadness.org 70 i 5296
Err codemadness.org 70 i 5303Err codemadness.org 70 i 5307 Err codemadness.org 70 i 5308As many of you know, we’ve historically had three ticket types available in our tracker: Bugs, Features, and Improvements, which are all fairly self-explanatory. After some discussion internally, we’ve decided to implement a new type of ticket, a “Suggestion”. These will be replacing Feature and Improvement requests for the TrueNAS Community, simplifying things down to two options: Bugs and Suggestions. This change also introduces a slightly different workflow than before.
Err codemadness.org 70 i 5304 Err codemadness.org 70 i 5305
Err codemadness.org 70 i 5306
Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 5388Err codemadness.org 70 i 5396 Err codemadness.org 70 i 5397With FreeBSD Foundation grant, Kristof Provost harnesses new parallel techniques to uncork performance bottleneck
Err codemadness.org 70 i 5389 Err codemadness.org 70 i 5390Err codemadness.org 70 i 5391
Err codemadness.org 70 i 5395- Kristof also streamed some of his work, providing an interesting insight into how such development work happens
Err codemadness.org 70 i 5392- > https://www.twitch.tv/provostk/videos Err codemadness.org 70 i 5393 ***
Err codemadness.org 70 i 5394
+> Unix has won in every conceivable way. And in true mythic style, it contains the seeds of its own eclipse. This is my subjective historical narrative of how that happened.
Err codemadness.org 70 i 5400 Err codemadness.org 70 i 5401Err codemadness.org 70 i 5402Err codemadness.org 70 i 5408 Err codemadness.org 70 i 5409I’m using the name “Unix” to include the entire family of operating systems descended from it, or that have been heavily influenced by it. That includes Linux, SunOS, Solaris, BSD, Mac OS X, and many, many others.
Err codemadness.org 70 i 5405 Err codemadness.org 70 i 5406
Err codemadness.org 70 i 5403 Both major mobile OSs, Android and iOS, have Unix roots. Their billions of users dwarf those using clunky things like laptops and desktops, but even there, Windows is only the non-Unix viable OS. Almost everything running server-side in giant datacenters is Linux.
Err codemadness.org 70 i 5404 How did Unix win?
Err codemadness.org 70 i 5407
Err codemadness.org 70 i 5414Err codemadness.org 70 i 5418 Err codemadness.org 70 i 5419This blog post continues where the blog post A central log host with syslog-ng on FreeBSD left off. Open source solutions to check syslog log messages exist, such as Logcheck or Logwatch. Although these are not to difficult to implement and maintain, I still found these to much. So I went for my own home grown solution to check the syslog messages of the SoCruel.NU central log host. And the solution presented in this blog post works pretty well for me!
Err codemadness.org 70 i 5415 Err codemadness.org 70 i 5416
Err codemadness.org 70 i 5417
Err codemadness.org 70 i 5422Err codemadness.org 70 i 5428 Err codemadness.org 70 i 5429Until recently, I’ve never had a chance to use VLANs on FreeBSD hosts, though I sometimes configure them on ethernet switches.
Err codemadness.org 70 i 5425 Err codemadness.org 70 i 5426
Err codemadness.org 70 i 5423 But when I was playing with vnet jails, I suddenly got interested in VLAN configuration on FreeBSD and experimented with it for some time.
Err codemadness.org 70 i 5424 I wrote this short article to summarize my current understanding of how to configure VLANs on FreeBSD.
Err codemadness.org 70 i 5427
Err codemadness.org 70 i 5432Err codemadness.org 70 i 5436 Err codemadness.org 70 i 5437Some hardware is not supported in illumos yet, but luckily there is bhyve which supports pci passthrough to any guest operating system. To continue with my OmniOS desktop on "modern" hardware I would love wifi support, so why not using a bhyve guest as router zone which provide the required drivers?
Err codemadness.org 70 i 5433 Err codemadness.org 70 i 5434
Err codemadness.org 70 i 5435
Err codemadness.org 70 i 5440Err codemadness.org 70 i 5444 Err codemadness.org 70 i 5445TrueNAS 11.3-U2.1 is generally available as of 4/22/2020. This update is based on FreeNAS 11.3-U2 which has had over 50k deployments and received excellent community and third party reviews. The Release Notes are available on the iXsystems.com website.
Err codemadness.org 70 i 5441 Err codemadness.org 70 i 5442
Err codemadness.org 70 i 5443
HardenedBSD April 2020 Status Report
Err codemadness.org 70
i 5448 NYC Bug’s Mailing List - Listing of open Dev Jobs
Morgan - Performance
Err codemadness.org 70 i 5458 Err codemadness.org 70 i 5459Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 5461 Err codemadness.org 70 i 5462Err codemadness.org 70 i 5473Err codemadness.org 70 i 5481 Err codemadness.org 70 i 5482With FreeBSD Foundation grant, Kristof Provost harnesses new parallel techniques to uncork performance bottleneck
Err codemadness.org 70 i 5474 Err codemadness.org 70 i 5475Err codemadness.org 70 i 5476
Err codemadness.org 70 i 5480- Kristof also streamed some of his work, providing an interesting insight into how such development work happens
Err codemadness.org 70 i 5477- > https://www.twitch.tv/provostk/videos Err codemadness.org 70 i 5478 ***
Err codemadness.org 70 i 5479
+> Unix has won in every conceivable way. And in true mythic style, it contains the seeds of its own eclipse. This is my subjective historical narrative of how that happened.
Err codemadness.org 70 i 5485 Err codemadness.org 70 i 5486Err codemadness.org 70 i 5487Err codemadness.org 70 i 5493 Err codemadness.org 70 i 5494I’m using the name “Unix” to include the entire family of operating systems descended from it, or that have been heavily influenced by it. That includes Linux, SunOS, Solaris, BSD, Mac OS X, and many, many others.
Err codemadness.org 70 i 5490 Err codemadness.org 70 i 5491
Err codemadness.org 70 i 5488 Both major mobile OSs, Android and iOS, have Unix roots. Their billions of users dwarf those using clunky things like laptops and desktops, but even there, Windows is only the non-Unix viable OS. Almost everything running server-side in giant datacenters is Linux.
Err codemadness.org 70 i 5489 How did Unix win?
Err codemadness.org 70 i 5492
Err codemadness.org 70 i 5499Err codemadness.org 70 i 5503 Err codemadness.org 70 i 5504This blog post continues where the blog post A central log host with syslog-ng on FreeBSD left off. Open source solutions to check syslog log messages exist, such as Logcheck or Logwatch. Although these are not to difficult to implement and maintain, I still found these to much. So I went for my own home grown solution to check the syslog messages of the SoCruel.NU central log host. And the solution presented in this blog post works pretty well for me!
Err codemadness.org 70 i 5500 Err codemadness.org 70 i 5501
Err codemadness.org 70 i 5502
Err codemadness.org 70 i 5507Err codemadness.org 70 i 5513 Err codemadness.org 70 i 5514Until recently, I’ve never had a chance to use VLANs on FreeBSD hosts, though I sometimes configure them on ethernet switches.
Err codemadness.org 70 i 5510 Err codemadness.org 70 i 5511
Err codemadness.org 70 i 5508 But when I was playing with vnet jails, I suddenly got interested in VLAN configuration on FreeBSD and experimented with it for some time.
Err codemadness.org 70 i 5509 I wrote this short article to summarize my current understanding of how to configure VLANs on FreeBSD.
Err codemadness.org 70 i 5512
Err codemadness.org 70 i 5517Err codemadness.org 70 i 5521 Err codemadness.org 70 i 5522Some hardware is not supported in illumos yet, but luckily there is bhyve which supports pci passthrough to any guest operating system. To continue with my OmniOS desktop on "modern" hardware I would love wifi support, so why not using a bhyve guest as router zone which provide the required drivers?
Err codemadness.org 70 i 5518 Err codemadness.org 70 i 5519
Err codemadness.org 70 i 5520
Err codemadness.org 70 i 5525Err codemadness.org 70 i 5529 Err codemadness.org 70 i 5530TrueNAS 11.3-U2.1 is generally available as of 4/22/2020. This update is based on FreeNAS 11.3-U2 which has had over 50k deployments and received excellent community and third party reviews. The Release Notes are available on the iXsystems.com website.
Err codemadness.org 70 i 5526 Err codemadness.org 70 i 5527
Err codemadness.org 70 i 5528
HardenedBSD April 2020 Status Report
Err codemadness.org 70
i 5533 NYC Bug’s Mailing List - Listing of open Dev Jobs
Morgan - Performance
Err codemadness.org 70 i 5543 Err codemadness.org 70 i 5544Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 5546 Err codemadness.org 70 i 5547Err codemadness.org 70 i 5610Err codemadness.org 70 i 5614 Err codemadness.org 70 i 5615Some time ago, I was describing how to configure networking crash dumps. In that post, I mentioned that there is also the possibility to encrypt crash dumps. Today we will look into this functionality. Initially, it was implemented during Google Summer of Code 2013 by my friend Konrad Witaszczyk, who made it available in FreeBSD 12. If you can understand Polish, you can also look into his presentation on BSD-PL on which he gave a comprehensive review of all kernel crash dumps features.
Err codemadness.org 70 i 5611 Err codemadness.org 70 i 5612The main issue with crash dumps is that they may include sensitive information available in memory during a crash. They will contain all the data from the kernel and the userland, like passwords, private keys, etc. While dumping them, they are written to unencrypted storage, so if somebody took out the hard drive, they could access sensitive data. If you are sending a crash dump through the network, it may be captured by third parties. Locally the data are written directly to a dump device, skipping the GEOM subsystem. The purpose of that is to allow a kernel to write a crash dump even in case a panic occurs in the GEOM subsystem. It means that a crash dump cannot be automatically encrypted with GELI.
Err codemadness.org 70 i 5613
Err codemadness.org 70 i 5620Err codemadness.org 70 i 5626 Err codemadness.org 70 i 5627Time, a word that is entangled in everything in our lives, something we’re intimately familiar with. Keeping track of it is important for many activities we do.
Err codemadness.org 70 i 5621 Err codemadness.org 70 i 5622Over millennia we’ve developed different ways to calculate it. Most prominently, we’ve relied on the position the sun appears to be at in the sky, what is called apparent solar time.
Err codemadness.org 70 i 5623 Err codemadness.org 70 i 5624We’ve decided to split it as seasons pass, counting one full cycle of the 4 seasons as a year, a full rotation around the sun. We’ve also divided the passing of light to the lack thereof as days, a rotation of the earth on itself. Moving on to more precise clock divisions such as seconds, minutes, and hours, units that meant different things at different points in history. Ultimately, as travel got faster, the different ways of counting time that evolved in multiple places had to converge. People had to agree on what it all meant.
Err codemadness.org 70 i 5625
See the article for more
Err codemadness.org 70 i 5628 Err codemadness.org 70 i 5629Err codemadness.org 70 i 5640Err codemadness.org 70 i 5642 Err codemadness.org 70 i 5643syslog-ng is the Swiss army knife of log management. You can collect logs from any source, process them in real time and deliver them to wide range of destinations. It allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure. This is why syslog-ng is the perfect solution for the central log host of my (mainly) FreeBSD based infrastructure.
Err codemadness.org 70 i 5641
Err codemadness.org 70 i 5648Err codemadness.org 70 i 5650 Err codemadness.org 70 i 5651This week I committed an overhaul of the kernel entropy system. Please let me know if you observe any snags! For the technical background, see the thread on tech-kern a few months ago: https://mail-index.NetBSD.org/tech-kern/2019/12/21/msg025876.html.
Err codemadness.org 70 i 5649
Err codemadness.org 70 i 5656Err codemadness.org 70 i 5658 Err codemadness.org 70 i 5659I used T_PAGEFLT’s blog post as a reference for setting my NetBSD kernel development environment since his website is down I’m putting down the steps here so it would be helpful for starters.
Err codemadness.org 70 i 5657
Err codemadness.org 70 i 5701Err codemadness.org 70 i 5705 Err codemadness.org 70 i 5706Some time ago, I was describing how to configure networking crash dumps. In that post, I mentioned that there is also the possibility to encrypt crash dumps. Today we will look into this functionality. Initially, it was implemented during Google Summer of Code 2013 by my friend Konrad Witaszczyk, who made it available in FreeBSD 12. If you can understand Polish, you can also look into his presentation on BSD-PL on which he gave a comprehensive review of all kernel crash dumps features.
Err codemadness.org 70 i 5702 Err codemadness.org 70 i 5703The main issue with crash dumps is that they may include sensitive information available in memory during a crash. They will contain all the data from the kernel and the userland, like passwords, private keys, etc. While dumping them, they are written to unencrypted storage, so if somebody took out the hard drive, they could access sensitive data. If you are sending a crash dump through the network, it may be captured by third parties. Locally the data are written directly to a dump device, skipping the GEOM subsystem. The purpose of that is to allow a kernel to write a crash dump even in case a panic occurs in the GEOM subsystem. It means that a crash dump cannot be automatically encrypted with GELI.
Err codemadness.org 70 i 5704
Err codemadness.org 70 i 5711Err codemadness.org 70 i 5717 Err codemadness.org 70 i 5718Time, a word that is entangled in everything in our lives, something we’re intimately familiar with. Keeping track of it is important for many activities we do.
Err codemadness.org 70 i 5712 Err codemadness.org 70 i 5713Over millennia we’ve developed different ways to calculate it. Most prominently, we’ve relied on the position the sun appears to be at in the sky, what is called apparent solar time.
Err codemadness.org 70 i 5714 Err codemadness.org 70 i 5715We’ve decided to split it as seasons pass, counting one full cycle of the 4 seasons as a year, a full rotation around the sun. We’ve also divided the passing of light to the lack thereof as days, a rotation of the earth on itself. Moving on to more precise clock divisions such as seconds, minutes, and hours, units that meant different things at different points in history. Ultimately, as travel got faster, the different ways of counting time that evolved in multiple places had to converge. People had to agree on what it all meant.
Err codemadness.org 70 i 5716
See the article for more
Err codemadness.org 70 i 5719 Err codemadness.org 70 i 5720Err codemadness.org 70 i 5731Err codemadness.org 70 i 5733 Err codemadness.org 70 i 5734syslog-ng is the Swiss army knife of log management. You can collect logs from any source, process them in real time and deliver them to wide range of destinations. It allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure. This is why syslog-ng is the perfect solution for the central log host of my (mainly) FreeBSD based infrastructure.
Err codemadness.org 70 i 5732
Err codemadness.org 70 i 5739Err codemadness.org 70 i 5741 Err codemadness.org 70 i 5742This week I committed an overhaul of the kernel entropy system. Please let me know if you observe any snags! For the technical background, see the thread on tech-kern a few months ago: https://mail-index.NetBSD.org/tech-kern/2019/12/21/msg025876.html.
Err codemadness.org 70 i 5740
Err codemadness.org 70 i 5747Err codemadness.org 70 i 5749 Err codemadness.org 70 i 5750I used T_PAGEFLT’s blog post as a reference for setting my NetBSD kernel development environment since his website is down I’m putting down the steps here so it would be helpful for starters.
Err codemadness.org 70 i 5748
Err codemadness.org 70 i 5865Err codemadness.org 70 i 5867 Err codemadness.org 70 i 5868The Q2 2020 images are not a visible leap forward but a functional leap forward. Most effort was spent creating a better out of box experience for automatic Ethernet configuration, working WiFi, webcam, and improved hypervisor support.
Err codemadness.org 70 i 5866
Err codemadness.org 70 i 5873Err codemadness.org 70 i 5875 Err codemadness.org 70 i 5876Since I wrote my article "Why you should migrate everything from Linux to BSD" I have been wanting to write something about the technical reasons to choose FreeBSD over GNU/Linux and while I cannot possibly cover every single reason, I can write about some of the things that I consider worth noting.
Err codemadness.org 70 i 5874
Err codemadness.org 70 i 5883Err codemadness.org 70 i 5889 Err codemadness.org 70 i 5890When I began work on the FreeBSD 12.1-RELEASE review last week, it didn't take long to figure out that the desktop portion wasn't going very smoothly.
Err codemadness.org 70 i 5884 Err codemadness.org 70 i 5885I think it's important for BSD-curious users to know of easier, gentler alternatives, so I did a little looking around and settled on GhostBSD for a follow-up review.
Err codemadness.org 70 i 5886 Err codemadness.org 70 i 5887GhostBSD is based on TrueOS, which itself derives from FreeBSD Stable. It was originally a Canadian distro, but—like most successful distributions—it has transcended its country of origin and can now be considered worldwide. Significant GhostBSD development takes place now in Canada, Italy, Germany, and the United States.
Err codemadness.org 70 i 5888
Err codemadness.org 70 i 5895Err codemadness.org 70 i 5899 Err codemadness.org 70 i 5900My next book will be TLS Mastery, all about Transport Layer Encryption, Let’s Encrypt, OCSP, and so on.
Err codemadness.org 70 i 5896 Err codemadness.org 70 i 5897This should be a shorter book, more like my DNSSEC or Tarsnap titles, or the first edition of Sudo Mastery. I would like a break from writing doorstops like the SNMP and jails books.
Err codemadness.org 70 i 5898
JT's post: https://twitter.com/q5sys/status/1251194823589138432
Err codemadness.org 70 i 5906 Err codemadness.org 70 i 5907Others jumped in with their collections:
Err codemadness.org 70 i 5912 Err codemadness.org 70 i 5913Do you have a nice collection, take a picture and send it in!
Err codemadness.org 70 i 5921 Err codemadness.org 70 i 5922Err codemadness.org 70 i 5927Err codemadness.org 70 i 5939 Err codemadness.org 70 i 5940Hi there,
Err codemadness.org 70 i 5928 Err codemadness.org 70 i 5929It's been a very long time I haven't written anything after my last OpenBSD blogs, that is,
Err codemadness.org 70 i 5930 Err codemadness.org 70 i 5931OpenBSD Kernel Internals — Creation of process from user-space to kernel space.
Err codemadness.org 70 i 5932 Err codemadness.org 70 i 5933OpenBSD: Introduction to
Err codemadness.org 70 i 5934 Err codemadness.org 70 i 5935execpromisesin the pledge(2)pledge(2): OpenBSD's defensive approach to OS Security
Err codemadness.org 70 i 5936 Err codemadness.org 70 i 5937So, again I started reading OpenBSD source codes with debugger after reducing my sleep timings and managing to get some time after professional life. This time I have picked one of my favourite item from my wishlist to learn and share, that is, OpenBSD malloc(3), secure allocator
Err codemadness.org 70 i 5938
Err codemadness.org 70 i 5945Err codemadness.org 70 i 5951 Err codemadness.org 70 i 5952my home FreeNAS runs two pools for data. One RAIDZ2 with four spinning disk drives and one mirror with two SSDs. Toying with InfluxDB and Grafana in the last couple of days I found that I seem to have a constant write load of 1 Megabyte (!) per second on the SSDs. What the ...?
Err codemadness.org 70 i 5946 Err codemadness.org 70 i 5947So I run three VMs on the SSDs in total. One with Windows 10, two with Ubuntu running Confluence, A wiki essentially, with files for attachments and MySQL as the backend database. Clearly the writes had to stop when the wikis were not used at all, just sitting idle, right?
Err codemadness.org 70 i 5948 Err codemadness.org 70 i 5949Well even with a full query log and quite some experience in the operation of web applications I could not figure out what Confluence is doing (productively, no doubt) but trust me, it writes a couple of hundred kbytes to the database each second just sitting idle.
Err codemadness.org 70 i 5950
Err codemadness.org 70 i 5957Err codemadness.org 70 i 5959 Err codemadness.org 70 i 5960I've wanted to write about my infrastructure for a while, but I kept thinking, "I'll wait until after I've done $next_thing_on_my_todo." Of course this cycle never ends, so I decided to write about its state at the end of 2019. Maybe I'll write an update on it in a couple of moons; who knows?
Err codemadness.org 70 i 5958
BSDCan Home Lab Panel recording session: May 5th at 18:00 UTC
Err codemadness.org 70 i 6010Err codemadness.org 70 i 6012 Err codemadness.org 70 i 6013The Q2 2020 images are not a visible leap forward but a functional leap forward. Most effort was spent creating a better out of box experience for automatic Ethernet configuration, working WiFi, webcam, and improved hypervisor support.
Err codemadness.org 70 i 6011
Err codemadness.org 70 i 6018Err codemadness.org 70 i 6020 Err codemadness.org 70 i 6021Since I wrote my article "Why you should migrate everything from Linux to BSD" I have been wanting to write something about the technical reasons to choose FreeBSD over GNU/Linux and while I cannot possibly cover every single reason, I can write about some of the things that I consider worth noting.
Err codemadness.org 70 i 6019
Err codemadness.org 70 i 6028Err codemadness.org 70 i 6034 Err codemadness.org 70 i 6035When I began work on the FreeBSD 12.1-RELEASE review last week, it didn't take long to figure out that the desktop portion wasn't going very smoothly.
Err codemadness.org 70 i 6029 Err codemadness.org 70 i 6030I think it's important for BSD-curious users to know of easier, gentler alternatives, so I did a little looking around and settled on GhostBSD for a follow-up review.
Err codemadness.org 70 i 6031 Err codemadness.org 70 i 6032GhostBSD is based on TrueOS, which itself derives from FreeBSD Stable. It was originally a Canadian distro, but—like most successful distributions—it has transcended its country of origin and can now be considered worldwide. Significant GhostBSD development takes place now in Canada, Italy, Germany, and the United States.
Err codemadness.org 70 i 6033
Err codemadness.org 70 i 6040Err codemadness.org 70 i 6044 Err codemadness.org 70 i 6045My next book will be TLS Mastery, all about Transport Layer Encryption, Let’s Encrypt, OCSP, and so on.
Err codemadness.org 70 i 6041 Err codemadness.org 70 i 6042This should be a shorter book, more like my DNSSEC or Tarsnap titles, or the first edition of Sudo Mastery. I would like a break from writing doorstops like the SNMP and jails books.
Err codemadness.org 70 i 6043
JT's post: https://twitter.com/q5sys/status/1251194823589138432
Err codemadness.org 70 i 6051 Err codemadness.org 70 i 6052Others jumped in with their collections:
Err codemadness.org 70 i 6057 Err codemadness.org 70 i 6058Do you have a nice collection, take a picture and send it in!
Err codemadness.org 70 i 6066 Err codemadness.org 70 i 6067Err codemadness.org 70 i 6072Err codemadness.org 70 i 6084 Err codemadness.org 70 i 6085Hi there,
Err codemadness.org 70 i 6073 Err codemadness.org 70 i 6074It's been a very long time I haven't written anything after my last OpenBSD blogs, that is,
Err codemadness.org 70 i 6075 Err codemadness.org 70 i 6076OpenBSD Kernel Internals — Creation of process from user-space to kernel space.
Err codemadness.org 70 i 6077 Err codemadness.org 70 i 6078OpenBSD: Introduction to
Err codemadness.org 70 i 6079 Err codemadness.org 70 i 6080execpromisesin the pledge(2)pledge(2): OpenBSD's defensive approach to OS Security
Err codemadness.org 70 i 6081 Err codemadness.org 70 i 6082So, again I started reading OpenBSD source codes with debugger after reducing my sleep timings and managing to get some time after professional life. This time I have picked one of my favourite item from my wishlist to learn and share, that is, OpenBSD malloc(3), secure allocator
Err codemadness.org 70 i 6083
Err codemadness.org 70 i 6090Err codemadness.org 70 i 6096 Err codemadness.org 70 i 6097my home FreeNAS runs two pools for data. One RAIDZ2 with four spinning disk drives and one mirror with two SSDs. Toying with InfluxDB and Grafana in the last couple of days I found that I seem to have a constant write load of 1 Megabyte (!) per second on the SSDs. What the ...?
Err codemadness.org 70 i 6091 Err codemadness.org 70 i 6092So I run three VMs on the SSDs in total. One with Windows 10, two with Ubuntu running Confluence, A wiki essentially, with files for attachments and MySQL as the backend database. Clearly the writes had to stop when the wikis were not used at all, just sitting idle, right?
Err codemadness.org 70 i 6093 Err codemadness.org 70 i 6094Well even with a full query log and quite some experience in the operation of web applications I could not figure out what Confluence is doing (productively, no doubt) but trust me, it writes a couple of hundred kbytes to the database each second just sitting idle.
Err codemadness.org 70 i 6095
Err codemadness.org 70 i 6102Err codemadness.org 70 i 6104 Err codemadness.org 70 i 6105I've wanted to write about my infrastructure for a while, but I kept thinking, "I'll wait until after I've done $next_thing_on_my_todo." Of course this cycle never ends, so I decided to write about its state at the end of 2019. Maybe I'll write an update on it in a couple of moons; who knows?
Err codemadness.org 70 i 6103
BSDCan Home Lab Panel recording session: May 5th at 18:00 UTC
Err codemadness.org 70 i 6214Err codemadness.org 70 i 6217 Err codemadness.org 70 i 6218OpenBSD aims to be a secure operating system. In the past few months there were quite a few security errata, however. That’s not too unusual, but some of the recent ones were a bit special. One might even say bad. The OpenBSD approach to security has a few aspects, two of which might be avoiding errors and minimizing the risk of mistakes. Other people have other ideas about how to build secure systems. I think it’s worth examining whether the OpenBSD approach works, or if this is evidence that it’s doomed to failure.
Err codemadness.org 70 i 6216
Err codemadness.org 70 i 6215 I picked a few errata, not all of them, that were interesting and happened to suit my narrative.
Err codemadness.org 70 i 6223Err codemadness.org 70 i 6225 Err codemadness.org 70 i 6226Welcome, to the quarterly reports, of the future! Well, at least the first quarterly report from 2020. The new timeline, mentioned in the last few reports, still holds, which brings us to this report, which covers the period of January 2020 - March 2020.
Err codemadness.org 70 i 6224
Err codemadness.org 70 i 6233Err codemadness.org 70 i 6237 Err codemadness.org 70 i 6238One trait of modern Western culture is the notion of progress. A view claiming, at large, everything is getting better and better.
Err codemadness.org 70 i 6234 Err codemadness.org 70 i 6235How should we think about progress? Both in general and regarding technology?
Err codemadness.org 70 i 6236
Err codemadness.org 70 i 6243Err codemadness.org 70 i 6245 Err codemadness.org 70 i 6246I was recently pointed at a web page on Thomas E. Dickeys site talking about NetBSD curses. It seems initially that the page was intended to be a pointer to some differences between ncurses and NetBSD curses and does appear to start off in this vein but it seems that the author has lost the plot as the document evolved and the tail end of it seems to be devolving into some sort of slanging match. I don't want to go through Mr. Dickey's document point by point, that would be tedious but I would like to pick out some of the things that I believe to be the most egregious. Please note that even though I am a NetBSD developer, the opinions below are my own and not the NetBSD projects.
Err codemadness.org 70 i 6244
Err codemadness.org 70 i 6251Err codemadness.org 70 i 6257 Err codemadness.org 70 i 6258I’m not really interested in defending anything. I tried out plan9port and liked it, but I have to live in Unix land. Here’s how I set that up.
Err codemadness.org 70 i 6252 Err codemadness.org 70 i 6253A Warning
Err codemadness.org 70 i 6254 Err codemadness.org 70 i 6255The suckless community, and some of the plan9 communities, are dominated by jackasses. I hope that’s strong enough wording to impress the severity. Don’t go into IRC for help. Stay off the suckless email list. The software is great, the people who write it are well-spoken and well-reasoned, but for some reason the fandom is horrible to everyone.
Err codemadness.org 70 i 6256
Err codemadness.org 70 i 6263Err codemadness.org 70 i 6271 Err codemadness.org 70 i 6272This month's Linux distro review isn't of a Linux distribution at all—instead, we're taking a look at FreeBSD, the original gangster of free Unix-like operating systems.
Err codemadness.org 70 i 6264 Err codemadness.org 70 i 6265The first FreeBSD release was in 1993, but the operating system's roots go further back—considerably further back. FreeBSD started out in 1992 as a patch-release of Bill and Lynne Jolitz's 386BSD—but 386BSD itself came from the original Berkeley Software Distribution (BSD). BSD itself goes back to 1977—for reference, Linus Torvalds was only seven years old then.
Err codemadness.org 70 i 6266 Err codemadness.org 70 i 6267Before we get started, I'd like to acknowledge something up front—our distro reviews include the desktop experience, and that is very much not FreeBSD's strength. FreeBSD is far, far better suited to running as a headless server than as a desktop! We're going to get a full desktop running on it anyway, because according to Lee Hutchinson, I hate myself—and also because we can't imagine readers wouldn't care about it.
Err codemadness.org 70 i 6268 Err codemadness.org 70 i 6269FreeBSD does not provide a good desktop experience, to say the least. But if you're hankering for a BSD-based desktop, don't worry—we're already planning a followup review of GhostBSD, a desktop-focused BSD distribution.
Err codemadness.org 70 i 6270
Jordyn - ZFS Pool Problem
Err codemadness.org 70 i 6299 Err codemadness.org 70 i 6300Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 6321Err codemadness.org 70 i 6324 Err codemadness.org 70 i 6325OpenBSD aims to be a secure operating system. In the past few months there were quite a few security errata, however. That’s not too unusual, but some of the recent ones were a bit special. One might even say bad. The OpenBSD approach to security has a few aspects, two of which might be avoiding errors and minimizing the risk of mistakes. Other people have other ideas about how to build secure systems. I think it’s worth examining whether the OpenBSD approach works, or if this is evidence that it’s doomed to failure.
Err codemadness.org 70 i 6323
Err codemadness.org 70 i 6322 I picked a few errata, not all of them, that were interesting and happened to suit my narrative.
Err codemadness.org 70 i 6330Err codemadness.org 70 i 6332 Err codemadness.org 70 i 6333Welcome, to the quarterly reports, of the future! Well, at least the first quarterly report from 2020. The new timeline, mentioned in the last few reports, still holds, which brings us to this report, which covers the period of January 2020 - March 2020.
Err codemadness.org 70 i 6331
Err codemadness.org 70 i 6340Err codemadness.org 70 i 6344 Err codemadness.org 70 i 6345One trait of modern Western culture is the notion of progress. A view claiming, at large, everything is getting better and better.
Err codemadness.org 70 i 6341 Err codemadness.org 70 i 6342How should we think about progress? Both in general and regarding technology?
Err codemadness.org 70 i 6343
Err codemadness.org 70 i 6350Err codemadness.org 70 i 6352 Err codemadness.org 70 i 6353I was recently pointed at a web page on Thomas E. Dickeys site talking about NetBSD curses. It seems initially that the page was intended to be a pointer to some differences between ncurses and NetBSD curses and does appear to start off in this vein but it seems that the author has lost the plot as the document evolved and the tail end of it seems to be devolving into some sort of slanging match. I don't want to go through Mr. Dickey's document point by point, that would be tedious but I would like to pick out some of the things that I believe to be the most egregious. Please note that even though I am a NetBSD developer, the opinions below are my own and not the NetBSD projects.
Err codemadness.org 70 i 6351
Err codemadness.org 70 i 6358Err codemadness.org 70 i 6364 Err codemadness.org 70 i 6365I’m not really interested in defending anything. I tried out plan9port and liked it, but I have to live in Unix land. Here’s how I set that up.
Err codemadness.org 70 i 6359 Err codemadness.org 70 i 6360A Warning
Err codemadness.org 70 i 6361 Err codemadness.org 70 i 6362The suckless community, and some of the plan9 communities, are dominated by jackasses. I hope that’s strong enough wording to impress the severity. Don’t go into IRC for help. Stay off the suckless email list. The software is great, the people who write it are well-spoken and well-reasoned, but for some reason the fandom is horrible to everyone.
Err codemadness.org 70 i 6363
Err codemadness.org 70 i 6370Err codemadness.org 70 i 6378 Err codemadness.org 70 i 6379This month's Linux distro review isn't of a Linux distribution at all—instead, we're taking a look at FreeBSD, the original gangster of free Unix-like operating systems.
Err codemadness.org 70 i 6371 Err codemadness.org 70 i 6372The first FreeBSD release was in 1993, but the operating system's roots go further back—considerably further back. FreeBSD started out in 1992 as a patch-release of Bill and Lynne Jolitz's 386BSD—but 386BSD itself came from the original Berkeley Software Distribution (BSD). BSD itself goes back to 1977—for reference, Linus Torvalds was only seven years old then.
Err codemadness.org 70 i 6373 Err codemadness.org 70 i 6374Before we get started, I'd like to acknowledge something up front—our distro reviews include the desktop experience, and that is very much not FreeBSD's strength. FreeBSD is far, far better suited to running as a headless server than as a desktop! We're going to get a full desktop running on it anyway, because according to Lee Hutchinson, I hate myself—and also because we can't imagine readers wouldn't care about it.
Err codemadness.org 70 i 6375 Err codemadness.org 70 i 6376FreeBSD does not provide a good desktop experience, to say the least. But if you're hankering for a BSD-based desktop, don't worry—we're already planning a followup review of GhostBSD, a desktop-focused BSD distribution.
Err codemadness.org 70 i 6377
Jordyn - ZFS Pool Problem
Err codemadness.org 70 i 6406 Err codemadness.org 70 i 6407Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 6485Err codemadness.org 70 i 6487 Err codemadness.org 70 i 6488On the side, I’ve been wrapping up some improvements to the classic Unix stdio libraries in illumos. stdio contains the classic functions like fopen(), printf(), and the security nightmare gets(). While working on support for fmemopen() and friends I got to reacquaint myself with some of the joys of the stdio ABI and its history from 7th Edition Unix. With that in mind, let’s dive into this, history, and some mistakes not to repeat. While this is written from the perspective of the C programming language, aspects of it apply to many other languages.
Err codemadness.org 70 i 6486
Err codemadness.org 70 i 6493Err codemadness.org 70 i 6497 Err codemadness.org 70 i 6498My X260 only runs OpenBSD and has no CD driver. But I still need to upgrade its BIOS from time to time. And this is possible using the ISO BIOS image.
Err codemadness.org 70 i 6494 Err codemadness.org 70 i 6495First off all, you need to download the “BIOS Update (Bootable CD)” from the Lenovo Support Website.
Err codemadness.org 70 i 6496
Err codemadness.org 70 i 6505Err codemadness.org 70 i 6507 Err codemadness.org 70 i 6508Various Unixes have had a 'iowait' statistic for a long time now (although I can't find a source for where it originated; it's not in 4.x BSD, so it may have come through System V and sar). The traditional and standard definition of iowait is that it's the amount of time the system was idle but had at least one process waiting on disk IO. Rather than count this time as 'idle' (as you would if you had a three-way division of CPU time between user, system, and idle), some Unixes evolved to count this as a new category, 'iowait'.
Err codemadness.org 70 i 6506
Err codemadness.org 70 i 6513Err codemadness.org 70 i 6519 Err codemadness.org 70 i 6520After hosting with Netlify for a few years, I decided to head back to self hosting. Theres a few reasons for that but the main reasoning was that I had more control over how things worked.
Err codemadness.org 70 i 6514 Err codemadness.org 70 i 6515In this post, i’ll show you my workflow for deploying my Hugo generated site (www.jaredwolff.com). Instead of using what most people would go for, i’ll be doing all of this using a FreeBSD Jails based server. Plus i’ll show you some tricks i’ve learned over the years on bulk image resizing and more.
Err codemadness.org 70 i 6516 Err codemadness.org 70 i 6517Let’s get to it.
Err codemadness.org 70 i 6518
Err codemadness.org 70 i 6525Err codemadness.org 70 i 6533 Err codemadness.org 70 i 6534Typically, some time after releasing a new NetBSD major version (such as NetBSD 9.0), we will announce the end-of-life of the N-2 branch, in this case NetBSD-7.
Err codemadness.org 70 i 6526 Err codemadness.org 70 i 6527We've decided to hold off on doing that to ensure our users don't feel rushed to perform a major version update on any remote machines, possibly needing to reach the machine if anything goes wrong.
Err codemadness.org 70 i 6528 Err codemadness.org 70 i 6529Security fixes will still be made to the NetBSD-7 branch.
Err codemadness.org 70 i 6530 Err codemadness.org 70 i 6531We hope you're all safe. Stay home.
Err codemadness.org 70 i 6532
Err codemadness.org 70 i 6539Err codemadness.org 70 i 6541 Err codemadness.org 70 i 6542VM escape has become a popular topic of discussion over the last few years. A good amount of research on this topic has been published for various hypervisors like VMware, QEMU, VirtualBox, Xen and Hyper-V. Bhyve is a hypervisor for FreeBSD supporting hardware-assisted virtualization. This paper details the exploitation of two bugs in bhyve - FreeBSD-SA-16:32.bhyve (VGA emulation heap overflow) and CVE-2018-17160 (Firmware Configuration device bss buffer overflow) and some generic techniques which could be used for exploiting other bhyve bugs. Further, the paper also discusses sandbox escapes using PCI device passthrough, and Control-Flow Integrity bypasses in HardenedBSD 12-CURRENT
Err codemadness.org 70 i 6540
Err codemadness.org 70 i 6586Err codemadness.org 70 i 6588 Err codemadness.org 70 i 6589On the side, I’ve been wrapping up some improvements to the classic Unix stdio libraries in illumos. stdio contains the classic functions like fopen(), printf(), and the security nightmare gets(). While working on support for fmemopen() and friends I got to reacquaint myself with some of the joys of the stdio ABI and its history from 7th Edition Unix. With that in mind, let’s dive into this, history, and some mistakes not to repeat. While this is written from the perspective of the C programming language, aspects of it apply to many other languages.
Err codemadness.org 70 i 6587
Err codemadness.org 70 i 6594Err codemadness.org 70 i 6598 Err codemadness.org 70 i 6599My X260 only runs OpenBSD and has no CD driver. But I still need to upgrade its BIOS from time to time. And this is possible using the ISO BIOS image.
Err codemadness.org 70 i 6595 Err codemadness.org 70 i 6596First off all, you need to download the “BIOS Update (Bootable CD)” from the Lenovo Support Website.
Err codemadness.org 70 i 6597
Err codemadness.org 70 i 6606Err codemadness.org 70 i 6608 Err codemadness.org 70 i 6609Various Unixes have had a 'iowait' statistic for a long time now (although I can't find a source for where it originated; it's not in 4.x BSD, so it may have come through System V and sar). The traditional and standard definition of iowait is that it's the amount of time the system was idle but had at least one process waiting on disk IO. Rather than count this time as 'idle' (as you would if you had a three-way division of CPU time between user, system, and idle), some Unixes evolved to count this as a new category, 'iowait'.
Err codemadness.org 70 i 6607
Err codemadness.org 70 i 6614Err codemadness.org 70 i 6620 Err codemadness.org 70 i 6621After hosting with Netlify for a few years, I decided to head back to self hosting. Theres a few reasons for that but the main reasoning was that I had more control over how things worked.
Err codemadness.org 70 i 6615 Err codemadness.org 70 i 6616In this post, i’ll show you my workflow for deploying my Hugo generated site (www.jaredwolff.com). Instead of using what most people would go for, i’ll be doing all of this using a FreeBSD Jails based server. Plus i’ll show you some tricks i’ve learned over the years on bulk image resizing and more.
Err codemadness.org 70 i 6617 Err codemadness.org 70 i 6618Let’s get to it.
Err codemadness.org 70 i 6619
Err codemadness.org 70 i 6626Err codemadness.org 70 i 6634 Err codemadness.org 70 i 6635Typically, some time after releasing a new NetBSD major version (such as NetBSD 9.0), we will announce the end-of-life of the N-2 branch, in this case NetBSD-7.
Err codemadness.org 70 i 6627 Err codemadness.org 70 i 6628We've decided to hold off on doing that to ensure our users don't feel rushed to perform a major version update on any remote machines, possibly needing to reach the machine if anything goes wrong.
Err codemadness.org 70 i 6629 Err codemadness.org 70 i 6630Security fixes will still be made to the NetBSD-7 branch.
Err codemadness.org 70 i 6631 Err codemadness.org 70 i 6632We hope you're all safe. Stay home.
Err codemadness.org 70 i 6633
Err codemadness.org 70 i 6640Err codemadness.org 70 i 6642 Err codemadness.org 70 i 6643VM escape has become a popular topic of discussion over the last few years. A good amount of research on this topic has been published for various hypervisors like VMware, QEMU, VirtualBox, Xen and Hyper-V. Bhyve is a hypervisor for FreeBSD supporting hardware-assisted virtualization. This paper details the exploitation of two bugs in bhyve - FreeBSD-SA-16:32.bhyve (VGA emulation heap overflow) and CVE-2018-17160 (Firmware Configuration device bss buffer overflow) and some generic techniques which could be used for exploiting other bhyve bugs. Further, the paper also discusses sandbox escapes using PCI device passthrough, and Control-Flow Integrity bypasses in HardenedBSD 12-CURRENT
Err codemadness.org 70 i 6641
Err codemadness.org 70 i 6764Err codemadness.org 70 i 6768 Err codemadness.org 70 i 6769The third release in the NetBSD-8 is now available.
Err codemadness.org 70 i 6765 Err codemadness.org 70 i 6766This release includes all the security fixes in NetBSD-8 up until this point, and other fixes deemed important for stability.
Err codemadness.org 70 i 6767
Err codemadness.org 70 i 6795Err codemadness.org 70 i 6797 Err codemadness.org 70 i 6798NextCloud and OpenBSD are complementary to one another. NextCloud is an awesome, secure and private alternative for proprietary platforms, whereas OpenBSD forms the most secure and solid foundation to serve it on. Setting it up in the best way isn’t hard, especially using this step by step tutorial.
Err codemadness.org 70 i 6796
Err codemadness.org 70 i 6803Err codemadness.org 70 i 6807 Err codemadness.org 70 i 6808Back when this tutorial was initially written, things were different. The OpenBSD port relied on PHP 5.6 and there were no package updates. But the port improved (hats off, Gonzalo!) and package updates were introduced to the -stable branch (hats off, Solene!).
Err codemadness.org 70 i 6804 Err codemadness.org 70 i 6805A rewrite of this tutorial was long overdue. Right now, it is written for 6.6 -stable and will be updated once 6.7 is released. If you have any questions or desire some help, feel free to reach out.
Err codemadness.org 70 i 6806
Err codemadness.org 70 i 6815Err codemadness.org 70 i 6817 Err codemadness.org 70 i 6818For years I’ve been using XScreenSaver as a default, but I recently learned about xsecurelock and re-evaluated my screen-saving requirements
Err codemadness.org 70 i 6816
Err codemadness.org 70 i 6823Err codemadness.org 70 i 6833 Err codemadness.org 70 i 6834I have been experimenting with running two systems at the same time on the RK3399 SoC.
Err codemadness.org 70 i 6828 Err codemadness.org 70 i 6829
Err codemadness.org 70 i 6824 It all begun when I figured out how to switch to the A72 cpu for RISC OS. When the switch was done, the A53 cpu just continued to execute code.
Err codemadness.org 70 i 6825 OK I thought why not give it something to do!
Err codemadness.org 70 i 6826 My first step was to run some small programs.
Err codemadness.org 70 i 6827 It worked!Err codemadness.org 70 i 6830
Err codemadness.org 70 i 6832- Thanks to Tom Jones for the pointer to this article
Err codemadness.org 70 i 6831
Err codemadness.org 70 i 6893Err codemadness.org 70 i 6897 Err codemadness.org 70 i 6898The third release in the NetBSD-8 is now available.
Err codemadness.org 70 i 6894 Err codemadness.org 70 i 6895This release includes all the security fixes in NetBSD-8 up until this point, and other fixes deemed important for stability.
Err codemadness.org 70 i 6896
Err codemadness.org 70 i 6924Err codemadness.org 70 i 6926 Err codemadness.org 70 i 6927NextCloud and OpenBSD are complementary to one another. NextCloud is an awesome, secure and private alternative for proprietary platforms, whereas OpenBSD forms the most secure and solid foundation to serve it on. Setting it up in the best way isn’t hard, especially using this step by step tutorial.
Err codemadness.org 70 i 6925
Err codemadness.org 70 i 6932Err codemadness.org 70 i 6936 Err codemadness.org 70 i 6937Back when this tutorial was initially written, things were different. The OpenBSD port relied on PHP 5.6 and there were no package updates. But the port improved (hats off, Gonzalo!) and package updates were introduced to the -stable branch (hats off, Solene!).
Err codemadness.org 70 i 6933 Err codemadness.org 70 i 6934A rewrite of this tutorial was long overdue. Right now, it is written for 6.6 -stable and will be updated once 6.7 is released. If you have any questions or desire some help, feel free to reach out.
Err codemadness.org 70 i 6935
Err codemadness.org 70 i 6944Err codemadness.org 70 i 6946 Err codemadness.org 70 i 6947For years I’ve been using XScreenSaver as a default, but I recently learned about xsecurelock and re-evaluated my screen-saving requirements
Err codemadness.org 70 i 6945
Err codemadness.org 70 i 6952Err codemadness.org 70 i 6962 Err codemadness.org 70 i 6963I have been experimenting with running two systems at the same time on the RK3399 SoC.
Err codemadness.org 70 i 6957 Err codemadness.org 70 i 6958
Err codemadness.org 70 i 6953 It all begun when I figured out how to switch to the A72 cpu for RISC OS. When the switch was done, the A53 cpu just continued to execute code.
Err codemadness.org 70 i 6954 OK I thought why not give it something to do!
Err codemadness.org 70 i 6955 My first step was to run some small programs.
Err codemadness.org 70 i 6956 It worked!Err codemadness.org 70 i 6959
Err codemadness.org 70 i 6961- Thanks to Tom Jones for the pointer to this article
Err codemadness.org 70 i 6960
Err codemadness.org 70 i 7081Err codemadness.org 70 i 7087 Err codemadness.org 70 i 7088This article is part of a self-published book project by Balthazar Rouberol and Etienne Brodu, ex-roommates, friends and colleagues, aiming at empowering the up and coming generation of developers. We currently are hard at work on it!
Err codemadness.org 70 i 7082 Err codemadness.org 70 i 7083One of the things that makes the shell an invaluable tool is the amount of available text processing commands, and the ability to easily pipe them into each other to build complex text processing workflows. These commands can make it trivial to perform text and data analysis, convert data between different formats, filter lines, etc.
Err codemadness.org 70 i 7084 Err codemadness.org 70 i 7085When working with text data, the philosophy is to break any complex problem you have into a set of smaller ones, and to solve each of them with a specialized tool.
Err codemadness.org 70 i 7086
Err codemadness.org 70 i 7093Err codemadness.org 70 i 7099 Err codemadness.org 70 i 7100One of the questions that comes up time and time again about ZFS is “how can I migrate my data to a pool on a few of my disks, then add the rest of the disks afterward?”
Err codemadness.org 70 i 7094 Err codemadness.org 70 i 7095If you just want to get the data moved and don’t care about balance, you can just copy the data over, then add the new disks and be done with it. But, it won’t be distributed evenly over the vdevs in your pool.
Err codemadness.org 70 i 7096 Err codemadness.org 70 i 7097Don’t fret, though, it’s actually pretty easy to rebalance mirrors. In the following example, we’ll assume you’ve got four disks in a RAID array on an old machine, and two disks available to copy the data to in the short term.
Err codemadness.org 70 i 7098
Err codemadness.org 70 i 7107Err codemadness.org 70 i 7109 Err codemadness.org 70 i 7110I am a huge fan of OpenBSD’s built-in httpd server as it is simple, secure, and quite performant. With the modern push of the large search providers pushing secure websites, it is now important to add security headers to your website or risk having the search results for your website downgraded. Fortunately, it is very easy to do this when you combine httpd with relayd. While relayd is principally designed for layer 3 redirections and layer 7 relays, it just so happens that it makes a handy tool for adding the recommended security headers. My website automatically redirects users from http to https and this gets achieved using a simple redirection in /etc/httpd.conf So if you have a configuration similar to mine, then you will still want to have httpd listen on the egress interface on port 80. The key thing to change here is to have httpd listen on 127.0.0.1 on port 443.
Err codemadness.org 70 i 7108
Err codemadness.org 70 i 7115Err codemadness.org 70 i 7117 Err codemadness.org 70 i 7118Our long standing practice here, predating even the first generation of our ZFS fileservers, is that we have two main sorts of filesystems, home directories (homedir filesystems) and what we call 'work directory' (workdir) filesystems. Homedir filesystems are called /h/NNN (for some NNN) and workdir filesystems are called /w/NNN; the NNN is unique across all of the different sorts of filesystems. Users are encouraged to put as much stuff as possible in workdirs and can have as many of them as they want, which mattered a lot more in the days when we used Solaris DiskSuite and had fixed-sized filesystems.
Err codemadness.org 70 i 7116
https://web.archive.org/web/20200315184849/https://blog.jonlu.ca/posts/speeding-up-zsh
Err codemadness.org 70 i 7123 Err codemadness.org 70 i 7124Err codemadness.org 70 i 7125Err codemadness.org 70 i 7129 Err codemadness.org 70 i 7130I was opening multiple shells for an unrelated project today and noticed how abysmal my shell load speed was. After the initial load it was relatively fast, but the actual shell start up was noticeably slow. I timed it with time and these were the results.
Err codemadness.org 70 i 7126 Err codemadness.org 70 i 7127In the future I hope to actually recompile zsh with additional profiling techniques and debug information - keeping an internal timer and having a flag output current time for each command in a tree fashion would make building heat maps really easy.
Err codemadness.org 70 i 7128
Err codemadness.org 70 i 7135Err codemadness.org 70 i 7137 Err codemadness.org 70 i 7138Pipes are cool! We saw how handy they are in a previous blog post. Let’s look at a typical way to use the pipe operator. We have some output, and we want to look at the first lines of the output. Let’s download The Brothers Karamazov by Fyodor Dostoevsky, a fairly long novel.
Err codemadness.org 70 i 7136
Err codemadness.org 70 i 7143Err codemadness.org 70 i 7146 Err codemadness.org 70 i 7147In my entry on why ZFS isn't good at growing and reshaping pools, I mentioned that we go to quite some lengths in our ZFS environment to be able to incrementally expand our pools. Today I want to put together all of the pieces of that in one place to discuss what those lengths are.
Err codemadness.org 70 i 7145
Err codemadness.org 70 i 7144 Our big constraint is that not only do we need to add space to pools over time, but we have a fairly large number of pools and which pools will have space added to them is unpredictable. We need a solution to pool expansion that leaves us with as much flexibility as possible for as long as possible. This pretty much requires being able to expand pools in relatively small increments of space.
Err codemadness.org 70 i 7152Err codemadness.org 70 i 7154 Err codemadness.org 70 i 7155In my third installment of FreeBSD vs Linux, I will discuss underlying reasons for why Linux moved away from ifconfig(8) to ip(8).
Err codemadness.org 70 i 7153
In the past, when people said, “Linux is a kernel, not an operating system”, I knew that was true but I always thought it was a rather pedantic criticism. Of course no one runs just the Linux kernel, you run a distribution of Linux. But after reviewing userland code, I understand the significant drawbacks to developing “just a kernel” in isolation from the rest of the system.
Err codemadness.org 70 i 7156 Err codemadness.org 70 i 7157Err codemadness.org 70 i 7162Err codemadness.org 70 i 7166 Err codemadness.org 70 i 7167if you’re someone like me who habitually clears their terminal, sometimes you want a little excitement in your life. Here is a way to do just that.
Err codemadness.org 70 i 7163 Err codemadness.org 70 i 7164This post revolves around the idea of giving a command a percent chance of running. While the topic at hand is not serious, this simple technique has potential in your scripts.
Err codemadness.org 70 i 7165
Err codemadness.org 70 i 7198Err codemadness.org 70 i 7204 Err codemadness.org 70 i 7205This article is part of a self-published book project by Balthazar Rouberol and Etienne Brodu, ex-roommates, friends and colleagues, aiming at empowering the up and coming generation of developers. We currently are hard at work on it!
Err codemadness.org 70 i 7199 Err codemadness.org 70 i 7200One of the things that makes the shell an invaluable tool is the amount of available text processing commands, and the ability to easily pipe them into each other to build complex text processing workflows. These commands can make it trivial to perform text and data analysis, convert data between different formats, filter lines, etc.
Err codemadness.org 70 i 7201 Err codemadness.org 70 i 7202When working with text data, the philosophy is to break any complex problem you have into a set of smaller ones, and to solve each of them with a specialized tool.
Err codemadness.org 70 i 7203
Err codemadness.org 70 i 7210Err codemadness.org 70 i 7216 Err codemadness.org 70 i 7217One of the questions that comes up time and time again about ZFS is “how can I migrate my data to a pool on a few of my disks, then add the rest of the disks afterward?”
Err codemadness.org 70 i 7211 Err codemadness.org 70 i 7212If you just want to get the data moved and don’t care about balance, you can just copy the data over, then add the new disks and be done with it. But, it won’t be distributed evenly over the vdevs in your pool.
Err codemadness.org 70 i 7213 Err codemadness.org 70 i 7214Don’t fret, though, it’s actually pretty easy to rebalance mirrors. In the following example, we’ll assume you’ve got four disks in a RAID array on an old machine, and two disks available to copy the data to in the short term.
Err codemadness.org 70 i 7215
Err codemadness.org 70 i 7224Err codemadness.org 70 i 7226 Err codemadness.org 70 i 7227I am a huge fan of OpenBSD’s built-in httpd server as it is simple, secure, and quite performant. With the modern push of the large search providers pushing secure websites, it is now important to add security headers to your website or risk having the search results for your website downgraded. Fortunately, it is very easy to do this when you combine httpd with relayd. While relayd is principally designed for layer 3 redirections and layer 7 relays, it just so happens that it makes a handy tool for adding the recommended security headers. My website automatically redirects users from http to https and this gets achieved using a simple redirection in /etc/httpd.conf So if you have a configuration similar to mine, then you will still want to have httpd listen on the egress interface on port 80. The key thing to change here is to have httpd listen on 127.0.0.1 on port 443.
Err codemadness.org 70 i 7225
Err codemadness.org 70 i 7232Err codemadness.org 70 i 7234 Err codemadness.org 70 i 7235Our long standing practice here, predating even the first generation of our ZFS fileservers, is that we have two main sorts of filesystems, home directories (homedir filesystems) and what we call 'work directory' (workdir) filesystems. Homedir filesystems are called /h/NNN (for some NNN) and workdir filesystems are called /w/NNN; the NNN is unique across all of the different sorts of filesystems. Users are encouraged to put as much stuff as possible in workdirs and can have as many of them as they want, which mattered a lot more in the days when we used Solaris DiskSuite and had fixed-sized filesystems.
Err codemadness.org 70 i 7233
https://web.archive.org/web/20200315184849/https://blog.jonlu.ca/posts/speeding-up-zsh
Err codemadness.org 70 i 7240 Err codemadness.org 70 i 7241Err codemadness.org 70 i 7242Err codemadness.org 70 i 7246 Err codemadness.org 70 i 7247I was opening multiple shells for an unrelated project today and noticed how abysmal my shell load speed was. After the initial load it was relatively fast, but the actual shell start up was noticeably slow. I timed it with time and these were the results.
Err codemadness.org 70 i 7243 Err codemadness.org 70 i 7244In the future I hope to actually recompile zsh with additional profiling techniques and debug information - keeping an internal timer and having a flag output current time for each command in a tree fashion would make building heat maps really easy.
Err codemadness.org 70 i 7245
Err codemadness.org 70 i 7252Err codemadness.org 70 i 7254 Err codemadness.org 70 i 7255Pipes are cool! We saw how handy they are in a previous blog post. Let’s look at a typical way to use the pipe operator. We have some output, and we want to look at the first lines of the output. Let’s download The Brothers Karamazov by Fyodor Dostoevsky, a fairly long novel.
Err codemadness.org 70 i 7253
Err codemadness.org 70 i 7260Err codemadness.org 70 i 7263 Err codemadness.org 70 i 7264In my entry on why ZFS isn't good at growing and reshaping pools, I mentioned that we go to quite some lengths in our ZFS environment to be able to incrementally expand our pools. Today I want to put together all of the pieces of that in one place to discuss what those lengths are.
Err codemadness.org 70 i 7262
Err codemadness.org 70 i 7261 Our big constraint is that not only do we need to add space to pools over time, but we have a fairly large number of pools and which pools will have space added to them is unpredictable. We need a solution to pool expansion that leaves us with as much flexibility as possible for as long as possible. This pretty much requires being able to expand pools in relatively small increments of space.
Err codemadness.org 70 i 7269Err codemadness.org 70 i 7271 Err codemadness.org 70 i 7272In my third installment of FreeBSD vs Linux, I will discuss underlying reasons for why Linux moved away from ifconfig(8) to ip(8).
Err codemadness.org 70 i 7270
In the past, when people said, “Linux is a kernel, not an operating system”, I knew that was true but I always thought it was a rather pedantic criticism. Of course no one runs just the Linux kernel, you run a distribution of Linux. But after reviewing userland code, I understand the significant drawbacks to developing “just a kernel” in isolation from the rest of the system.
Err codemadness.org 70 i 7273 Err codemadness.org 70 i 7274Err codemadness.org 70 i 7279Err codemadness.org 70 i 7283 Err codemadness.org 70 i 7284if you’re someone like me who habitually clears their terminal, sometimes you want a little excitement in your life. Here is a way to do just that.
Err codemadness.org 70 i 7280 Err codemadness.org 70 i 7281This post revolves around the idea of giving a command a percent chance of running. While the topic at hand is not serious, this simple technique has potential in your scripts.
Err codemadness.org 70 i 7282
Err codemadness.org 70 i 7367Err codemadness.org 70 i 7373 Err codemadness.org 70 i 7374Here is a quick HOWTO for those who want to provide some FreeBSD based compute resources to help finding vaccines.
Err codemadness.org 70 i 7368 Err codemadness.org 70 i 7369UPDATE 2020-03-22: 0mp@ made a port out of this, it is in “biology/linux-foldingathome”.
Err codemadness.org 70 i 7370 Err codemadness.org 70 i 7371Per default it will now pick up some SARS-CoV‑2 (COVID-19) related folding tasks. There are some more config options (e.g. how much of the system resources are used). Please refer to the official Folding@Home site for more information about that. Be also aware that there is a big rise in compute resources donated to Folding@Home, so the pool of available work units may be empty from time to time, but they are working on adding more work units. Be patient.
Err codemadness.org 70 i 7372
Err codemadness.org 70 i 7379Err codemadness.org 70 i 7385 Err codemadness.org 70 i 7386WireGuard is a modern designed VPN that uses the latest cryptography for stronger security, is very lightweight, and is relatively easy to set up (mostly). I say ‘mostly’ because I found setting up WireGuard in OPNsense to be more difficult than I anticipated. The basic setup of the WireGuard VPN itself was as easy as the authors claim on their website, but I came across a few gotcha's. The gotcha's occur with functionality that is beyond the scope of the WireGuard protocol so I cannot fault them for that. My greatest struggle was configuring WireGuard to function similarly to my OpenVPN server. I want the ability to connect remotely to my home network from my iPhone or iPad, tunnel all traffic through the VPN, have access to certain devices and services on my network, and have the VPN devices use my home's Internet connection.
Err codemadness.org 70 i 7380 Err codemadness.org 70 i 7381WireGuard behaves more like a SSH server than a typical VPN server. With WireGuard, devices which have shared their cryptographic keys with each other are able to connect via an encrypted tunnel (like a SSH server configured to use keys instead of passwords). The devices that are connecting to one another are referred to as “peer” devices. When the peer device is an OPNsense router with WireGuard installed, for instance, it can be configured to allow access to various resources on your network. It becomes a tunnel into your network similar to OpenVPN (with the appropriate firewall rules enabled). I will refer to the WireGuard installation on OPNsense as the server rather than a “peer” to make it more clear which device I am configuring unless I am describing the user interface because that is the terminology used interchangeably by WireGuard.
Err codemadness.org 70 i 7382 Err codemadness.org 70 i 7383The documentation I found on WireGuard in OPNsense is straightforward and relatively easy to understand, but I had to wrestle with it for a little while to gain a better understanding on how it should be configured. I believe it was partially due to differing end goals – I was trying to achieve something a little different than the authors of other wiki/blog/forum posts. Piecing together various sources of information, I finally ended up with a configuration that met the goals stated above.
Err codemadness.org 70 i 7384
Err codemadness.org 70 i 7393Err codemadness.org 70 i 7395 Err codemadness.org 70 i 7396NomadBSD 1.3.1 has recently been made available. NomadBSD is a lightweight and portable FreeBSD distribution, designed to run on live on a USB flash drive, allowing you to plug, test, and play on different hardware. They have also started a forum as of yesterday, where you can ask questions and mingle with the NomadBSD community. Notable changes in 1.3.1 are base system upgraded to FreeBSD 12.1-p2. automatic network interface setup improved, image size increased to over 4GB, Thunderbird, Zeroconf, and some more listed below.
Err codemadness.org 70 i 7394
Err codemadness.org 70 i 7401Err codemadness.org 70 i 7403 Err codemadness.org 70 i 7404Eric Turgeon, main developer of GhostBSD, has announced version 20.02 of the FreeBSD based operating system. Notable changes are ZFS partition into the custom partition editor installer, allowing you to install alongside with Windows, Linux, or macOS. Other changes are force upgrade all packages on system upgrade, improved update station, and powerd by default for laptop battery performance.
Err codemadness.org 70 i 7402
Err codemadness.org 70 i 7409Err codemadness.org 70 i 7411 Err codemadness.org 70 i 7412This new release is now based on FreeBSD 12.1 with the latest FreeBSD quarterly packages. This brings XFCE up to 4.14, and KDE up to 5.17. In addition to updates this new ISO mostly addresses community bugs, community enhancement requests, and community pull requests. Due to the overwhelming amount of reports with GitHub hosting all new releases are now being pushed to SourceForge only for the time being. Previous releases will still be kept for archive purposes.
Err codemadness.org 70 i 7410
Err codemadness.org 70 i 7417Err codemadness.org 70 i 7419 Err codemadness.org 70 i 7420pf-badhost is a simple, easy to use badhost blocker that uses the power of the pf firewall to block many of the internet's biggest irritants. Annoyances such as SSH and SMTP bruteforcers are largely eliminated. Shodan scans and bots looking for webservers to abuse are stopped dead in their tracks. When used to filter outbound traffic, pf-badhost blocks many seedy, spooky malware containing and/or compromised webhosts.
Err codemadness.org 70 i 7418
Err codemadness.org 70 i 7461Err codemadness.org 70 i 7467 Err codemadness.org 70 i 7468Here is a quick HOWTO for those who want to provide some FreeBSD based compute resources to help finding vaccines.
Err codemadness.org 70 i 7462 Err codemadness.org 70 i 7463UPDATE 2020-03-22: 0mp@ made a port out of this, it is in “biology/linux-foldingathome”.
Err codemadness.org 70 i 7464 Err codemadness.org 70 i 7465Per default it will now pick up some SARS-CoV‑2 (COVID-19) related folding tasks. There are some more config options (e.g. how much of the system resources are used). Please refer to the official Folding@Home site for more information about that. Be also aware that there is a big rise in compute resources donated to Folding@Home, so the pool of available work units may be empty from time to time, but they are working on adding more work units. Be patient.
Err codemadness.org 70 i 7466
Err codemadness.org 70 i 7473Err codemadness.org 70 i 7479 Err codemadness.org 70 i 7480WireGuard is a modern designed VPN that uses the latest cryptography for stronger security, is very lightweight, and is relatively easy to set up (mostly). I say ‘mostly’ because I found setting up WireGuard in OPNsense to be more difficult than I anticipated. The basic setup of the WireGuard VPN itself was as easy as the authors claim on their website, but I came across a few gotcha's. The gotcha's occur with functionality that is beyond the scope of the WireGuard protocol so I cannot fault them for that. My greatest struggle was configuring WireGuard to function similarly to my OpenVPN server. I want the ability to connect remotely to my home network from my iPhone or iPad, tunnel all traffic through the VPN, have access to certain devices and services on my network, and have the VPN devices use my home's Internet connection.
Err codemadness.org 70 i 7474 Err codemadness.org 70 i 7475WireGuard behaves more like a SSH server than a typical VPN server. With WireGuard, devices which have shared their cryptographic keys with each other are able to connect via an encrypted tunnel (like a SSH server configured to use keys instead of passwords). The devices that are connecting to one another are referred to as “peer” devices. When the peer device is an OPNsense router with WireGuard installed, for instance, it can be configured to allow access to various resources on your network. It becomes a tunnel into your network similar to OpenVPN (with the appropriate firewall rules enabled). I will refer to the WireGuard installation on OPNsense as the server rather than a “peer” to make it more clear which device I am configuring unless I am describing the user interface because that is the terminology used interchangeably by WireGuard.
Err codemadness.org 70 i 7476 Err codemadness.org 70 i 7477The documentation I found on WireGuard in OPNsense is straightforward and relatively easy to understand, but I had to wrestle with it for a little while to gain a better understanding on how it should be configured. I believe it was partially due to differing end goals – I was trying to achieve something a little different than the authors of other wiki/blog/forum posts. Piecing together various sources of information, I finally ended up with a configuration that met the goals stated above.
Err codemadness.org 70 i 7478
Err codemadness.org 70 i 7487Err codemadness.org 70 i 7489 Err codemadness.org 70 i 7490NomadBSD 1.3.1 has recently been made available. NomadBSD is a lightweight and portable FreeBSD distribution, designed to run on live on a USB flash drive, allowing you to plug, test, and play on different hardware. They have also started a forum as of yesterday, where you can ask questions and mingle with the NomadBSD community. Notable changes in 1.3.1 are base system upgraded to FreeBSD 12.1-p2. automatic network interface setup improved, image size increased to over 4GB, Thunderbird, Zeroconf, and some more listed below.
Err codemadness.org 70 i 7488
Err codemadness.org 70 i 7495Err codemadness.org 70 i 7497 Err codemadness.org 70 i 7498Eric Turgeon, main developer of GhostBSD, has announced version 20.02 of the FreeBSD based operating system. Notable changes are ZFS partition into the custom partition editor installer, allowing you to install alongside with Windows, Linux, or macOS. Other changes are force upgrade all packages on system upgrade, improved update station, and powerd by default for laptop battery performance.
Err codemadness.org 70 i 7496
Err codemadness.org 70 i 7503Err codemadness.org 70 i 7505 Err codemadness.org 70 i 7506This new release is now based on FreeBSD 12.1 with the latest FreeBSD quarterly packages. This brings XFCE up to 4.14, and KDE up to 5.17. In addition to updates this new ISO mostly addresses community bugs, community enhancement requests, and community pull requests. Due to the overwhelming amount of reports with GitHub hosting all new releases are now being pushed to SourceForge only for the time being. Previous releases will still be kept for archive purposes.
Err codemadness.org 70 i 7504
Err codemadness.org 70 i 7511Err codemadness.org 70 i 7513 Err codemadness.org 70 i 7514pf-badhost is a simple, easy to use badhost blocker that uses the power of the pf firewall to block many of the internet's biggest irritants. Annoyances such as SSH and SMTP bruteforcers are largely eliminated. Shodan scans and bots looking for webservers to abuse are stopped dead in their tracks. When used to filter outbound traffic, pf-badhost blocks many seedy, spooky malware containing and/or compromised webhosts.
Err codemadness.org 70 i 7512
Err codemadness.org 70 i 7615Err codemadness.org 70 i 7623 Err codemadness.org 70 i 7624It has been a while since I have posted here so I wanted to share something that was surprisingly difficult for me to figure out. I have a Thinkpad T440p that I have flashed with Coreboot 4.11 with some special patches that allow the newer machine to work. When I got the laptop, the default BIOS was UEFI and I installed two operating systems.
Err codemadness.org 70 i 7616 Err codemadness.org 70 i 7617Windows 10 with bitlocker full disk encryption on the “normal” drive (I replaced the spinning 2.5″ disk with an SSD)
Err codemadness.org 70 i 7618 Err codemadness.org 70 i 7619Ubuntu 19.10 on the m.2 SATA drive that I installed using LUKS full disk encryption
Err codemadness.org 70 i 7620 Err codemadness.org 70 i 7621I purchased one of those carriers for the optical bay that allows you to install a third SSD and so I did that with the intent of putting OpenBSD on it. Since my other two operating systems were running full disk encryption, I wanted to do the same on OpenBSD.
Err codemadness.org 70 i 7622
Err codemadness.org 70 i 7633Err codemadness.org 70 i 7637 Err codemadness.org 70 i 7638Dear FreeBSD community,
Err codemadness.org 70 i 7634 Err codemadness.org 70 i 7635As of February 29, 2020, FreeBSD 12.0 will reach end-of-life and will no longer be supported by the FreeBSD Security Team. Users of FreeBSD 12.0 are strongly encouraged to upgrade to a newer release as soon as possible.
Err codemadness.org 70 i 7636
Err codemadness.org 70 i 7650Err codemadness.org 70 i 7654 Err codemadness.org 70 i 7655One piece of ZFS terminology is DVA and DVAs, which is short for Data Virtual Address. For ZFS, a DVA is the equivalent of a block number in other filesystems; it tells ZFS where to find whatever data we're talking about. The short summary of what fields DVAs have and what they mean is that DVAs tell us how to find blocks by giving us their vdev (by number) and their byte offset into that particular vdev (and then their size). A typical DVA might say that you find what it's talking about on vdev 0 at byte offset 0x53a40ed000. There are some consequences of this that I hadn't really thought about until the other day.
Err codemadness.org 70 i 7651 Err codemadness.org 70 i 7652Right away we can see why ZFS has a problem removing a vdev; the vdev's number is burned into every DVA that refers to data on it. If there's no vdev 0 in the pool, ZFS has no idea where to even start looking for data because all addressing is relative to the vdev. ZFS pool shrinking gets around this by adding a translation layer that says where to find the portions of vdev 0 that you care about after it's been removed.
Err codemadness.org 70 i 7653
Err codemadness.org 70 i 7664Err codemadness.org 70 i 7668 Err codemadness.org 70 i 7669Microsoft is changing the security defaults for Active Directory to eliminate some security vulnerabilities in its protocols. Unfortunately, these new security defaults may disrupt existing FreeNAS/TrueNAS deployments once Windows systems are updated. The Windows updates may appear sometime in March 2020; no official date has been announced as of yet.
Err codemadness.org 70 i 7665 Err codemadness.org 70 i 7666FreeNAS and TrueNAS users that utilize Active Directory should update to version 11.3 (or 11.2-U8) to avoid potential disruption of their networks when updating to the latest versions of Windows software after March 1, 2020. Version 11.3 has been released and version 11.2-U8 will be available in early March.
Err codemadness.org 70 i 7667
Err codemadness.org 70 i 7674Err codemadness.org 70 i 7676 Err codemadness.org 70 i 7677NetBSD now has a users(7) and groups(7) manual. Looking into what entries existed in the passwd and group files I wondered about root’s full name who we now know as Charlie Root in the BSDs....
Err codemadness.org 70 i 7675
Err codemadness.org 70 i 7682Err codemadness.org 70 i 7688 Err codemadness.org 70 i 7689Over in the fediverse, Pete Zaitcev had a reaction to my entry on OpenBSD versus Prometheus for us:
Err codemadness.org 70 i 7683 Err codemadness.org 70 i 7684I don't think the situation is usually that bad. Our situation with Prometheus is basically a worst case scenario for Go on OpenBSD, and most people will have much better results, especially if you stick to supported OpenBSD versions.
Err codemadness.org 70 i 7685 Err codemadness.org 70 i 7686If you stick to supported OpenBSD versions, upgrading your machines as older OpenBSD releases fall out of support (as the OpenBSD people want you to do), you should not have any problems with your own Go programs. The latest Go release will support the currently supported OpenBSD versions (as long as OpenBSD remains a supported platform for Go), and the Go 1.0 compatibility guarantee means that you can always rebuild your current Go programs with newer versions of Go. You might have problems with compiled binaries that you don't want to rebuild, but my understanding is that this is the case for OpenBSD in general; it doesn't guarantee a stable ABI even for C programs (cf). If you use OpenBSD, you have to be prepared to rebuild your code after OpenBSD upgrades regardless of what language it's written in.
Err codemadness.org 70 i 7687
Err codemadness.org 70 i 7730Err codemadness.org 70 i 7738 Err codemadness.org 70 i 7739It has been a while since I have posted here so I wanted to share something that was surprisingly difficult for me to figure out. I have a Thinkpad T440p that I have flashed with Coreboot 4.11 with some special patches that allow the newer machine to work. When I got the laptop, the default BIOS was UEFI and I installed two operating systems.
Err codemadness.org 70 i 7731 Err codemadness.org 70 i 7732Windows 10 with bitlocker full disk encryption on the “normal” drive (I replaced the spinning 2.5″ disk with an SSD)
Err codemadness.org 70 i 7733 Err codemadness.org 70 i 7734Ubuntu 19.10 on the m.2 SATA drive that I installed using LUKS full disk encryption
Err codemadness.org 70 i 7735 Err codemadness.org 70 i 7736I purchased one of those carriers for the optical bay that allows you to install a third SSD and so I did that with the intent of putting OpenBSD on it. Since my other two operating systems were running full disk encryption, I wanted to do the same on OpenBSD.
Err codemadness.org 70 i 7737
Err codemadness.org 70 i 7748Err codemadness.org 70 i 7752 Err codemadness.org 70 i 7753Dear FreeBSD community,
Err codemadness.org 70 i 7749 Err codemadness.org 70 i 7750As of February 29, 2020, FreeBSD 12.0 will reach end-of-life and will no longer be supported by the FreeBSD Security Team. Users of FreeBSD 12.0 are strongly encouraged to upgrade to a newer release as soon as possible.
Err codemadness.org 70 i 7751
Err codemadness.org 70 i 7765Err codemadness.org 70 i 7769 Err codemadness.org 70 i 7770One piece of ZFS terminology is DVA and DVAs, which is short for Data Virtual Address. For ZFS, a DVA is the equivalent of a block number in other filesystems; it tells ZFS where to find whatever data we're talking about. The short summary of what fields DVAs have and what they mean is that DVAs tell us how to find blocks by giving us their vdev (by number) and their byte offset into that particular vdev (and then their size). A typical DVA might say that you find what it's talking about on vdev 0 at byte offset 0x53a40ed000. There are some consequences of this that I hadn't really thought about until the other day.
Err codemadness.org 70 i 7766 Err codemadness.org 70 i 7767Right away we can see why ZFS has a problem removing a vdev; the vdev's number is burned into every DVA that refers to data on it. If there's no vdev 0 in the pool, ZFS has no idea where to even start looking for data because all addressing is relative to the vdev. ZFS pool shrinking gets around this by adding a translation layer that says where to find the portions of vdev 0 that you care about after it's been removed.
Err codemadness.org 70 i 7768
Err codemadness.org 70 i 7779Err codemadness.org 70 i 7783 Err codemadness.org 70 i 7784Microsoft is changing the security defaults for Active Directory to eliminate some security vulnerabilities in its protocols. Unfortunately, these new security defaults may disrupt existing FreeNAS/TrueNAS deployments once Windows systems are updated. The Windows updates may appear sometime in March 2020; no official date has been announced as of yet.
Err codemadness.org 70 i 7780 Err codemadness.org 70 i 7781FreeNAS and TrueNAS users that utilize Active Directory should update to version 11.3 (or 11.2-U8) to avoid potential disruption of their networks when updating to the latest versions of Windows software after March 1, 2020. Version 11.3 has been released and version 11.2-U8 will be available in early March.
Err codemadness.org 70 i 7782
Err codemadness.org 70 i 7789Err codemadness.org 70 i 7791 Err codemadness.org 70 i 7792NetBSD now has a users(7) and groups(7) manual. Looking into what entries existed in the passwd and group files I wondered about root’s full name who we now know as Charlie Root in the BSDs....
Err codemadness.org 70 i 7790
Err codemadness.org 70 i 7797Err codemadness.org 70 i 7803 Err codemadness.org 70 i 7804Over in the fediverse, Pete Zaitcev had a reaction to my entry on OpenBSD versus Prometheus for us:
Err codemadness.org 70 i 7798 Err codemadness.org 70 i 7799I don't think the situation is usually that bad. Our situation with Prometheus is basically a worst case scenario for Go on OpenBSD, and most people will have much better results, especially if you stick to supported OpenBSD versions.
Err codemadness.org 70 i 7800 Err codemadness.org 70 i 7801If you stick to supported OpenBSD versions, upgrading your machines as older OpenBSD releases fall out of support (as the OpenBSD people want you to do), you should not have any problems with your own Go programs. The latest Go release will support the currently supported OpenBSD versions (as long as OpenBSD remains a supported platform for Go), and the Go 1.0 compatibility guarantee means that you can always rebuild your current Go programs with newer versions of Go. You might have problems with compiled binaries that you don't want to rebuild, but my understanding is that this is the case for OpenBSD in general; it doesn't guarantee a stable ABI even for C programs (cf). If you use OpenBSD, you have to be prepared to rebuild your code after OpenBSD upgrades regardless of what language it's written in.
Err codemadness.org 70 i 7802
Err codemadness.org 70 i 7901Err codemadness.org 70 i 7907 Err codemadness.org 70 i 7908The power and promise of all open source software is freedom. Another way to express freedom is choice — choice of platforms, deployment models, stacks, configurations, etc.
Err codemadness.org 70 i 7902 Err codemadness.org 70 i 7903The FreeBSD Foundation is dedicated to supporting and promoting the FreeBSD Project and community worldwide. But, what does this mean, exactly, you may wonder. The truth is it means many different things, but in all cases the Foundation acts to expand freedom and choice so that FreeBSD users have the power to serve their varied compute needs.
Err codemadness.org 70 i 7904 Err codemadness.org 70 i 7905This blog tells the story of one specific way the Foundation helps a member of the community provide greater hardware choice for all FreeBSD users.
Err codemadness.org 70 i 7906
Err codemadness.org 70 i 7913Err codemadness.org 70 i 7917 Err codemadness.org 70 i 7918DragonFly version 5.8 brings a new dsynth utility for building your own binary dports packages, plus significant support work to speed up that build - up to and including the entire collection. Additional progress has been made on GPU and signal support.
Err codemadness.org 70 i 7914 Err codemadness.org 70 i 7915The details of all commits between the 5.6 and 5.8 branches are available in the associated commit messages for 5.8.0rc1 and 5.8.0. Also see /usr/src/UPDATING for specific file changes in PAM.
Err codemadness.org 70 i 7916
Err codemadness.org 70 i 7938Err codemadness.org 70 i 7944 Err codemadness.org 70 i 7945FreeNAS and TrueNAS have been separate-but-related members of the #1 Open Source storage software family since 2012. FreeNAS is the free Open Source version with an expert community and has led the pursuit of innovations like Plugins and VMs. TrueNAS is the enterprise version for organizations of all sizes that need additional uptime and performance, as well as the enterprise-grade support necessary for critical data and applications.
Err codemadness.org 70 i 7939 Err codemadness.org 70 i 7940From the beginning at iXsystems, we’ve developed, tested, documented, and released both as separate products, even though the vast majority of code is shared. This was a deliberate technical decision in the beginning but over time became less of a necessity and more of “just how we’ve always done it”. Furthermore, to change it was going to require a serious overhaul to how we build and package both products, among other things, so we continued to kick the can down the road. As we made systematic improvements to development and QA efficiency over the past few years, the redundant release process became almost impossible to ignore as our next major efficiency roadblock to overcome. So, we’ve finally rolled up our sleeves.
Err codemadness.org 70 i 7941 Err codemadness.org 70 i 7942With the recent 11.3 release, TrueNAS gained parity with FreeNAS on features like VMs and Plugins, further homogenizing the code. Today, we announce the next phase of evolution for FreeNAS and TrueNAS.
Err codemadness.org 70 i 7943
Err codemadness.org 70 i 7950Err codemadness.org 70 i 7952 Err codemadness.org 70 i 7953We have a decent number of OpenBSD machines that do important things (and that have sometimes experienced problems like running out of disk space), and we have a Prometheus based metrics and monitoring system. The Prometheus host agent has enough support for OpenBSD to be able to report on critical metrics, including things like local disk space. Despite all of this, after some investigation I've determined that it's not really sensible to even try to deploy the host agent on our OpenBSD machines. This is due to a combination of factors that have at their root OpenBSD's lack of ABI stability
Err codemadness.org 70 i 7951
Err codemadness.org 70 i 7958Err codemadness.org 70 i 7962 Err codemadness.org 70 i 7963As described in Warner's email message[1] to the FreeBSD-arch mailing list we have reached GCC 4.2.1's retirement date. At this time all supported architectures either use in-tree Clang, or rely on external toolchain (i.e., a contemporary GCC version from ports).
Err codemadness.org 70 i 7959 Err codemadness.org 70 i 7960GCC 4.2.1 was released July 18, 2007 and was imported into FreeBSD later that year, in r171825. GCC has served us well, but version 4.2.1 is obsolete and not used by default on any architecture in FreeBSD. It does not support modern C and does not support arm64 or RISC-V.
Err codemadness.org 70 i 7961
Err codemadness.org 70 i 8004Err codemadness.org 70 i 8010 Err codemadness.org 70 i 8011The power and promise of all open source software is freedom. Another way to express freedom is choice — choice of platforms, deployment models, stacks, configurations, etc.
Err codemadness.org 70 i 8005 Err codemadness.org 70 i 8006The FreeBSD Foundation is dedicated to supporting and promoting the FreeBSD Project and community worldwide. But, what does this mean, exactly, you may wonder. The truth is it means many different things, but in all cases the Foundation acts to expand freedom and choice so that FreeBSD users have the power to serve their varied compute needs.
Err codemadness.org 70 i 8007 Err codemadness.org 70 i 8008This blog tells the story of one specific way the Foundation helps a member of the community provide greater hardware choice for all FreeBSD users.
Err codemadness.org 70 i 8009
Err codemadness.org 70 i 8016Err codemadness.org 70 i 8020 Err codemadness.org 70 i 8021DragonFly version 5.8 brings a new dsynth utility for building your own binary dports packages, plus significant support work to speed up that build - up to and including the entire collection. Additional progress has been made on GPU and signal support.
Err codemadness.org 70 i 8017 Err codemadness.org 70 i 8018The details of all commits between the 5.6 and 5.8 branches are available in the associated commit messages for 5.8.0rc1 and 5.8.0. Also see /usr/src/UPDATING for specific file changes in PAM.
Err codemadness.org 70 i 8019
Err codemadness.org 70 i 8041Err codemadness.org 70 i 8047 Err codemadness.org 70 i 8048FreeNAS and TrueNAS have been separate-but-related members of the #1 Open Source storage software family since 2012. FreeNAS is the free Open Source version with an expert community and has led the pursuit of innovations like Plugins and VMs. TrueNAS is the enterprise version for organizations of all sizes that need additional uptime and performance, as well as the enterprise-grade support necessary for critical data and applications.
Err codemadness.org 70 i 8042 Err codemadness.org 70 i 8043From the beginning at iXsystems, we’ve developed, tested, documented, and released both as separate products, even though the vast majority of code is shared. This was a deliberate technical decision in the beginning but over time became less of a necessity and more of “just how we’ve always done it”. Furthermore, to change it was going to require a serious overhaul to how we build and package both products, among other things, so we continued to kick the can down the road. As we made systematic improvements to development and QA efficiency over the past few years, the redundant release process became almost impossible to ignore as our next major efficiency roadblock to overcome. So, we’ve finally rolled up our sleeves.
Err codemadness.org 70 i 8044 Err codemadness.org 70 i 8045With the recent 11.3 release, TrueNAS gained parity with FreeNAS on features like VMs and Plugins, further homogenizing the code. Today, we announce the next phase of evolution for FreeNAS and TrueNAS.
Err codemadness.org 70 i 8046
Err codemadness.org 70 i 8053Err codemadness.org 70 i 8055 Err codemadness.org 70 i 8056We have a decent number of OpenBSD machines that do important things (and that have sometimes experienced problems like running out of disk space), and we have a Prometheus based metrics and monitoring system. The Prometheus host agent has enough support for OpenBSD to be able to report on critical metrics, including things like local disk space. Despite all of this, after some investigation I've determined that it's not really sensible to even try to deploy the host agent on our OpenBSD machines. This is due to a combination of factors that have at their root OpenBSD's lack of ABI stability
Err codemadness.org 70 i 8054
Err codemadness.org 70 i 8061Err codemadness.org 70 i 8065 Err codemadness.org 70 i 8066As described in Warner's email message[1] to the FreeBSD-arch mailing list we have reached GCC 4.2.1's retirement date. At this time all supported architectures either use in-tree Clang, or rely on external toolchain (i.e., a contemporary GCC version from ports).
Err codemadness.org 70 i 8062 Err codemadness.org 70 i 8063GCC 4.2.1 was released July 18, 2007 and was imported into FreeBSD later that year, in r171825. GCC has served us well, but version 4.2.1 is obsolete and not used by default on any architecture in FreeBSD. It does not support modern C and does not support arm64 or RISC-V.
Err codemadness.org 70 i 8064
Err codemadness.org 70 i 8172Err codemadness.org 70 i 8174 Err codemadness.org 70 i 8175One of the best aspects of ZFS is its reliability. This can be accomplished using a few features like copy-on-write approach and checksumming. Today we will look at how ZFS does checksumming and why it does it the proper way. Most of the file systems don’t provide any integrity checking and fail in several scenarios:
Err codemadness.org 70 i 8173
Err codemadness.org 70 i 8183Err codemadness.org 70 i 8185 Err codemadness.org 70 i 8186Checksumming may help us detect errors in a few of those situations.
Err codemadness.org 70 i 8184
Err codemadness.org 70 i 8191Err codemadness.org 70 i 8195 Err codemadness.org 70 i 8196It's been a while since last having any new magical optimizations to talk about by DragonFlyBSD lead developer Matthew Dillon, but on Wednesday he landed some significant temporary file-system "TMPFS" optimizations for better throughput including with swap.
Err codemadness.org 70 i 8192 Err codemadness.org 70 i 8193Of several interesting commits merged tonight, the improved write clustering is a big one. In particular, "Reduces low-memory tmpfs paging I/O overheads by 4x and generally increases paging throughput to SSD-based swap by 2x-4x. Tmpfs is now able to issue a lot more 64KB I/Os when under memory pressure."
Err codemadness.org 70 i 8194
Err codemadness.org 70 i 8201Err codemadness.org 70 i 8203 Err codemadness.org 70 i 8204There's also a new tunable in the VM space as well as part of his commits on Wednesday night. This follows a lot of recent work on dsynth, improved page-out daemon pipelining, and other routine work.
Err codemadness.org 70 i 8202
Err codemadness.org 70 i 8209Err codemadness.org 70 i 8211 Err codemadness.org 70 i 8212This work is building up towards the eventual DragonFlyBSD 5.8 while those wanting to try the latest improvements right away can find their daily snapshots.
Err codemadness.org 70 i 8210
Err codemadness.org 70 i 8219Err codemadness.org 70 i 8223 Err codemadness.org 70 i 8224recently read Mark McBride's Five Years of Btrfs (via), which has a significant discussion of why McBride chose Btrfs over ZFS that boils down to ZFS not being very good at evolving your pool structure. You might doubt this judgment from a Btrfs user, so let me say as both a fan of ZFS and a long term user of it that this is unfortunately quite true; ZFS is not a good choice if you want to modify your pool disk layout significantly over time. ZFS works best if the only change in your pools that you do is replacing drives with bigger drives. In our ZFS environment we go to quite some lengths to be able to expand pools incrementally over time, and while this works it both leaves us with unbalanced pools and means that we're basically forced to use mirroring instead of RAIDZ.
Err codemadness.org 70 i 8220 Err codemadness.org 70 i 8221(An unbalanced pool is one where some vdevs and disks have much more data than others. This is less of an issue for us now that we're using SSDs instead of HDs.)
Err codemadness.org 70 i 8222
Err codemadness.org 70 i 8229Err codemadness.org 70 i 8235 Err codemadness.org 70 i 8236I wanted to see how pkgsrc works on aarch64 Linux Manjaro since it is a very mature framework that is very portable and supported by many architectures – pkgsrc (package source) is a package management system for Unix-like operating systems. It was forked from the FreeBSD ports collection in 1997 as the primary package management system for NetBSD.
Err codemadness.org 70 i 8230 Err codemadness.org 70 i 8231One might question why use pkgsrc on Arch based Manjaro, since the pacman package repository is very good on its own. I see alternative pkgsrc as a good automated build framework that offers a way to produce independent build environment /usr/pkg that does not interfere with the current Linux distribution in any way (all libraries are statically built)
Err codemadness.org 70 i 8232 Err codemadness.org 70 i 8233I have used the latest Manjaro for Pinebookpro and standard recommended tools as mentioned here https://wiki.netbsd.org/pkgsrc/how_to_use_pkgsrc_on_linux/
Err codemadness.org 70 i 8234
Err codemadness.org 70 i 8245Err codemadness.org 70 i 8247 Err codemadness.org 70 i 8248syslog-ng is the Swiss army knife of log management. You can collect logs from any source, process them in real time and deliver them to wide range of destinations. It allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure. This is why syslog-ng is the perfect solution for the central log host of my (mainly) FreeBSD based infrastructure.
Err codemadness.org 70 i 8246
Err codemadness.org 70 i 8253Err codemadness.org 70 i 8255 Err codemadness.org 70 i 8256This blog post continues where the blog post A central log host with syslog-ng on FreeBSD left off. Open source solutions to check syslog log messages exist, such as Logcheck or Logwatch. Although these are not too difficult to implement and maintain, I still found these to much. So I went for my own home grown solution to check the syslog messages of the SoCruel.NU central log host.
Err codemadness.org 70 i 8254
Err codemadness.org 70 i 8298Err codemadness.org 70 i 8300 Err codemadness.org 70 i 8301One of the best aspects of ZFS is its reliability. This can be accomplished using a few features like copy-on-write approach and checksumming. Today we will look at how ZFS does checksumming and why it does it the proper way. Most of the file systems don’t provide any integrity checking and fail in several scenarios:
Err codemadness.org 70 i 8299
Err codemadness.org 70 i 8309Err codemadness.org 70 i 8311 Err codemadness.org 70 i 8312Checksumming may help us detect errors in a few of those situations.
Err codemadness.org 70 i 8310
Err codemadness.org 70 i 8317Err codemadness.org 70 i 8321 Err codemadness.org 70 i 8322It's been a while since last having any new magical optimizations to talk about by DragonFlyBSD lead developer Matthew Dillon, but on Wednesday he landed some significant temporary file-system "TMPFS" optimizations for better throughput including with swap.
Err codemadness.org 70 i 8318 Err codemadness.org 70 i 8319Of several interesting commits merged tonight, the improved write clustering is a big one. In particular, "Reduces low-memory tmpfs paging I/O overheads by 4x and generally increases paging throughput to SSD-based swap by 2x-4x. Tmpfs is now able to issue a lot more 64KB I/Os when under memory pressure."
Err codemadness.org 70 i 8320
Err codemadness.org 70 i 8327Err codemadness.org 70 i 8329 Err codemadness.org 70 i 8330There's also a new tunable in the VM space as well as part of his commits on Wednesday night. This follows a lot of recent work on dsynth, improved page-out daemon pipelining, and other routine work.
Err codemadness.org 70 i 8328
Err codemadness.org 70 i 8335Err codemadness.org 70 i 8337 Err codemadness.org 70 i 8338This work is building up towards the eventual DragonFlyBSD 5.8 while those wanting to try the latest improvements right away can find their daily snapshots.
Err codemadness.org 70 i 8336
Err codemadness.org 70 i 8345Err codemadness.org 70 i 8349 Err codemadness.org 70 i 8350recently read Mark McBride's Five Years of Btrfs (via), which has a significant discussion of why McBride chose Btrfs over ZFS that boils down to ZFS not being very good at evolving your pool structure. You might doubt this judgment from a Btrfs user, so let me say as both a fan of ZFS and a long term user of it that this is unfortunately quite true; ZFS is not a good choice if you want to modify your pool disk layout significantly over time. ZFS works best if the only change in your pools that you do is replacing drives with bigger drives. In our ZFS environment we go to quite some lengths to be able to expand pools incrementally over time, and while this works it both leaves us with unbalanced pools and means that we're basically forced to use mirroring instead of RAIDZ.
Err codemadness.org 70 i 8346 Err codemadness.org 70 i 8347(An unbalanced pool is one where some vdevs and disks have much more data than others. This is less of an issue for us now that we're using SSDs instead of HDs.)
Err codemadness.org 70 i 8348
Err codemadness.org 70 i 8355Err codemadness.org 70 i 8361 Err codemadness.org 70 i 8362I wanted to see how pkgsrc works on aarch64 Linux Manjaro since it is a very mature framework that is very portable and supported by many architectures – pkgsrc (package source) is a package management system for Unix-like operating systems. It was forked from the FreeBSD ports collection in 1997 as the primary package management system for NetBSD.
Err codemadness.org 70 i 8356 Err codemadness.org 70 i 8357One might question why use pkgsrc on Arch based Manjaro, since the pacman package repository is very good on its own. I see alternative pkgsrc as a good automated build framework that offers a way to produce independent build environment /usr/pkg that does not interfere with the current Linux distribution in any way (all libraries are statically built)
Err codemadness.org 70 i 8358 Err codemadness.org 70 i 8359I have used the latest Manjaro for Pinebookpro and standard recommended tools as mentioned here https://wiki.netbsd.org/pkgsrc/how_to_use_pkgsrc_on_linux/
Err codemadness.org 70 i 8360
Err codemadness.org 70 i 8371Err codemadness.org 70 i 8373 Err codemadness.org 70 i 8374syslog-ng is the Swiss army knife of log management. You can collect logs from any source, process them in real time and deliver them to wide range of destinations. It allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure. This is why syslog-ng is the perfect solution for the central log host of my (mainly) FreeBSD based infrastructure.
Err codemadness.org 70 i 8372
Err codemadness.org 70 i 8379Err codemadness.org 70 i 8381 Err codemadness.org 70 i 8382This blog post continues where the blog post A central log host with syslog-ng on FreeBSD left off. Open source solutions to check syslog log messages exist, such as Logcheck or Logwatch. Although these are not too difficult to implement and maintain, I still found these to much. So I went for my own home grown solution to check the syslog messages of the SoCruel.NU central log host.
Err codemadness.org 70 i 8380
Err codemadness.org 70 i 8484Err codemadness.org 70 i 8492 Err codemadness.org 70 i 8493At its heart, FuryBSD is a very simple beast. According to the site, “FuryBSD is a back to basics lightweight desktop distribution based on stock FreeBSD.” It is basically FreeBSD with a desktop environment pre-configured and several apps preinstalled. The goal is to quickly get a FreeBSD-based system running on your computer.
Err codemadness.org 70 i 8485 Err codemadness.org 70 i 8486You might be thinking that this sounds a lot like a couple of other BSDs that are available, such as NomadBSD and GhostBSD. The major difference between those BSDs and FuryBSD is that FuryBSD is much closer to stock FreeBSD. For example, FuryBSD uses the FreeBSD installer, while others have created their own installers and utilities.
Err codemadness.org 70 i 8487 Err codemadness.org 70 i 8488As it states on the site, “Although FuryBSD may resemble past graphical BSD projects like PC-BSD and TrueOS, FuryBSD is created by a different team and takes a different approach focusing on tight integration with FreeBSD. This keeps overhead low and maintains compatibility with upstream.” The lead dev also told me that “One key focus for FuryBSD is for it to be a small live media with a few assistive tools to test drivers for hardware.”
Err codemadness.org 70 i 8489 Err codemadness.org 70 i 8490Currently, you can go to the FuryBSD homepage and download either an XFCE or KDE LiveCD. A GNOME version is in the works.
Err codemadness.org 70 i 8491
Err codemadness.org 70 i 8498Err codemadness.org 70 i 8502 Err codemadness.org 70 i 8503The NetBSD Project is pleased to announce NetBSD 9.0, the seventeenth major release of the NetBSD operating system.
Err codemadness.org 70 i 8499 Err codemadness.org 70 i 8500This release brings significant improvements in terms of hardware support, quality assurance, security, along with new features and hundreds of bug fixes. Here are some highlights of this new release.
Err codemadness.org 70 i 8501
Err codemadness.org 70 i 8510Err codemadness.org 70 i 8514 Err codemadness.org 70 i 8515Our target for 2019 was CDN$300K. Our community's continued generosity combined with our corporate donors exceeded that nicely. In addition we received the largest single donation in our history, CDN$380K from Smartisan. The return of Google was another welcome event. Altogether 2019 was our most successful campaign to date, yielding CDN$692K in total.
Err codemadness.org 70 i 8511 Err codemadness.org 70 i 8512We thank all our donors, Iridium (Smartisan), Platinum (Yandex, Google), Gold (Microsoft, Facebook) Silver (2Keys) and Bronze (genua, Thinkst Canary). But especially our community of smaller donors whose contributions are the bedrock of our support. Thank you all!
Err codemadness.org 70 i 8513
Err codemadness.org 70 i 8524Err codemadness.org 70 i 8530 Err codemadness.org 70 i 8531Our OmniOS fileservers have now been out of service for about six months, which makes it somewhat past time for a retrospective on them. Our OmniOS fileservers followed on our Solaris fileservers, which I wrote a two part retrospective on (part 1, part 2), and have now been replaced by our Linux fileservers. To be honest, I have been sitting on my hands about writing this retrospective because we have mixed feelings about our OmniOS fileservers.
Err codemadness.org 70 i 8525 Err codemadness.org 70 i 8526I will put the summary up front. OmniOS worked reasonably well for us over its lifespan here and looking back I think it was almost certainly the right choice for us at the time we made that choice (which was 2013 and 2014). However it was not without issues that marred our experience with it in practice, although not enough to make me regret that we ran it (and ran it for as long as we did). Part of our issues are likely due to a design mistake in making our fileservers too big, although this design mistake was probably magnified when we were unable to use Intel 10G-T networking in OmniOS.
Err codemadness.org 70 i 8527 Err codemadness.org 70 i 8528On the one hand, our OmniOS fileservers worked, almost always reliably. Like our Solaris fileservers before them, they ran quietly for years without needing much attention, delivering NFS fileservice to our Ubuntu servers; specifically, we ran them for about five years (2014 through 2019, although we started migrating away at the end of 2018). Over this time we had only minor hardware issues and not all that many disk failures, and we suffered no data loss (with ZFS checksums likely saving us several times, and certainly providing good reassurances). Our overall environment was easy to manage and was pretty much problem free in the face of things like failed disks. I'm pretty sure that our users saw a NFS environment that was solid, reliable, and performed well pretty much all of the time, which is the important thing. So OmniOS basically delivered the fileserver environment we wanted.
Err codemadness.org 70 i 8529
Err codemadness.org 70 i 8536Err codemadness.org 70 i 8540 Err codemadness.org 70 i 8541Is it really more than 10 years since we last had an official fundraising drive?
Err codemadness.org 70 i 8537 Err codemadness.org 70 i 8538Looking at old TNF financial reports I noticed that we have been doing quite well financially over the last years, with a steady stream of small and medium donations, and most of the time only moderate expenditures. The last fundraising drive back in 2009 was a giant success, and we have lived off it until now.
Err codemadness.org 70 i 8539
Err codemadness.org 70 i 8546Err codemadness.org 70 i 8552 Err codemadness.org 70 i 8553OpenSSH 8.2 was released on 2020-02-14. It is available from the mirrors listed at https://www.openssh.com/.
Err codemadness.org 70 i 8547 Err codemadness.org 70 i 8548OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support.
Err codemadness.org 70 i 8549 Err codemadness.org 70 i 8550Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at:
Err codemadness.org 70 i 8551
Err codemadness.org 70 i 8599Err codemadness.org 70 i 8607 Err codemadness.org 70 i 8608At its heart, FuryBSD is a very simple beast. According to the site, “FuryBSD is a back to basics lightweight desktop distribution based on stock FreeBSD.” It is basically FreeBSD with a desktop environment pre-configured and several apps preinstalled. The goal is to quickly get a FreeBSD-based system running on your computer.
Err codemadness.org 70 i 8600 Err codemadness.org 70 i 8601You might be thinking that this sounds a lot like a couple of other BSDs that are available, such as NomadBSD and GhostBSD. The major difference between those BSDs and FuryBSD is that FuryBSD is much closer to stock FreeBSD. For example, FuryBSD uses the FreeBSD installer, while others have created their own installers and utilities.
Err codemadness.org 70 i 8602 Err codemadness.org 70 i 8603As it states on the site, “Although FuryBSD may resemble past graphical BSD projects like PC-BSD and TrueOS, FuryBSD is created by a different team and takes a different approach focusing on tight integration with FreeBSD. This keeps overhead low and maintains compatibility with upstream.” The lead dev also told me that “One key focus for FuryBSD is for it to be a small live media with a few assistive tools to test drivers for hardware.”
Err codemadness.org 70 i 8604 Err codemadness.org 70 i 8605Currently, you can go to the FuryBSD homepage and download either an XFCE or KDE LiveCD. A GNOME version is in the works.
Err codemadness.org 70 i 8606
Err codemadness.org 70 i 8613Err codemadness.org 70 i 8617 Err codemadness.org 70 i 8618The NetBSD Project is pleased to announce NetBSD 9.0, the seventeenth major release of the NetBSD operating system.
Err codemadness.org 70 i 8614 Err codemadness.org 70 i 8615This release brings significant improvements in terms of hardware support, quality assurance, security, along with new features and hundreds of bug fixes. Here are some highlights of this new release.
Err codemadness.org 70 i 8616
Err codemadness.org 70 i 8625Err codemadness.org 70 i 8629 Err codemadness.org 70 i 8630Our target for 2019 was CDN$300K. Our community's continued generosity combined with our corporate donors exceeded that nicely. In addition we received the largest single donation in our history, CDN$380K from Smartisan. The return of Google was another welcome event. Altogether 2019 was our most successful campaign to date, yielding CDN$692K in total.
Err codemadness.org 70 i 8626 Err codemadness.org 70 i 8627We thank all our donors, Iridium (Smartisan), Platinum (Yandex, Google), Gold (Microsoft, Facebook) Silver (2Keys) and Bronze (genua, Thinkst Canary). But especially our community of smaller donors whose contributions are the bedrock of our support. Thank you all!
Err codemadness.org 70 i 8628
Err codemadness.org 70 i 8639Err codemadness.org 70 i 8645 Err codemadness.org 70 i 8646Our OmniOS fileservers have now been out of service for about six months, which makes it somewhat past time for a retrospective on them. Our OmniOS fileservers followed on our Solaris fileservers, which I wrote a two part retrospective on (part 1, part 2), and have now been replaced by our Linux fileservers. To be honest, I have been sitting on my hands about writing this retrospective because we have mixed feelings about our OmniOS fileservers.
Err codemadness.org 70 i 8640 Err codemadness.org 70 i 8641I will put the summary up front. OmniOS worked reasonably well for us over its lifespan here and looking back I think it was almost certainly the right choice for us at the time we made that choice (which was 2013 and 2014). However it was not without issues that marred our experience with it in practice, although not enough to make me regret that we ran it (and ran it for as long as we did). Part of our issues are likely due to a design mistake in making our fileservers too big, although this design mistake was probably magnified when we were unable to use Intel 10G-T networking in OmniOS.
Err codemadness.org 70 i 8642 Err codemadness.org 70 i 8643On the one hand, our OmniOS fileservers worked, almost always reliably. Like our Solaris fileservers before them, they ran quietly for years without needing much attention, delivering NFS fileservice to our Ubuntu servers; specifically, we ran them for about five years (2014 through 2019, although we started migrating away at the end of 2018). Over this time we had only minor hardware issues and not all that many disk failures, and we suffered no data loss (with ZFS checksums likely saving us several times, and certainly providing good reassurances). Our overall environment was easy to manage and was pretty much problem free in the face of things like failed disks. I'm pretty sure that our users saw a NFS environment that was solid, reliable, and performed well pretty much all of the time, which is the important thing. So OmniOS basically delivered the fileserver environment we wanted.
Err codemadness.org 70 i 8644
Err codemadness.org 70 i 8651Err codemadness.org 70 i 8655 Err codemadness.org 70 i 8656Is it really more than 10 years since we last had an official fundraising drive?
Err codemadness.org 70 i 8652 Err codemadness.org 70 i 8653Looking at old TNF financial reports I noticed that we have been doing quite well financially over the last years, with a steady stream of small and medium donations, and most of the time only moderate expenditures. The last fundraising drive back in 2009 was a giant success, and we have lived off it until now.
Err codemadness.org 70 i 8654
Err codemadness.org 70 i 8661Err codemadness.org 70 i 8667 Err codemadness.org 70 i 8668OpenSSH 8.2 was released on 2020-02-14. It is available from the mirrors listed at https://www.openssh.com/.
Err codemadness.org 70 i 8662 Err codemadness.org 70 i 8663OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support.
Err codemadness.org 70 i 8664 Err codemadness.org 70 i 8665Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at:
Err codemadness.org 70 i 8666
Err codemadness.org 70 i 8802Err codemadness.org 70 i 8810 Err codemadness.org 70 i 8811FuryBSD is the most recent addition to the DistroWatch database and provides a live desktop operating system based on FreeBSD. FuryBSD is not entirely different in its goals from NomadBSD, which we discussed recently. I wanted to take this FreeBSD-based project for a test drive and see how it compares to NomadBSD and other desktop-oriented projects in the FreeBSD family.
Err codemadness.org 70 i 8803 Err codemadness.org 70 i 8804FuryBSD supplies hybrid ISO/USB images which can be used to run a live desktop. There are two desktop editions currently, both for 64-bit (x86_64) machines: Xfce and KDE Plasma. The Xfce edition is 1.4GB in size and is the flavour I downloaded. The KDE Plasma edition is about 3.0GB in size.
Err codemadness.org 70 i 8805 Err codemadness.org 70 i 8806My fresh install of FuryBSD booted to a graphical login screen. From there I could sign into my account, which brings up the Xfce desktop. The installed version of Xfce is the same as the live version, with a few minor changes. Most of the desktop icons have been removed with just the file manager launchers remaining. The Getting Started and System Information icons have been removed. Otherwise the experience is virtually identical to the live media.
Err codemadness.org 70 i 8807 Err codemadness.org 70 i 8808FuryBSD uses a theme that is mostly grey and white with creamy yellow folder icons. The application menu launchers tend to have neutral icons, neither particularly bright and detailed or minimal.
Err codemadness.org 70 i 8809
Err codemadness.org 70 i 8816Err codemadness.org 70 i 8822 Err codemadness.org 70 i 8823Upstream describes LLDB as a next generation, high-performance debugger. It is built on top of LLVM/Clang toolchain, and features great integration with it. At the moment, it primarily supports debugging C, C++ and ObjC code, and there is interest in extending it to more languages.
Err codemadness.org 70 i 8817 Err codemadness.org 70 i 8818In February 2019, I have started working on LLDB, as contracted by the NetBSD Foundation. So far I've been working on reenabling continuous integration, squashing bugs, improving NetBSD core file support, extending NetBSD's ptrace interface to cover more register types and fix compat32 issues, fixing watchpoint and threading support.
Err codemadness.org 70 i 8819 Err codemadness.org 70 i 8820The original NetBSD port of LLDB was focused on amd64 only. In January, I have extended it to support i386 executables. This includes both 32-bit builds of LLDB (running natively on i386 kernel or via compat32) and debugging 32-bit programs from 64-bit LLDB.
Err codemadness.org 70 i 8821
Err codemadness.org 70 i 8830Err codemadness.org 70 i 8845 Err codemadness.org 70 i 8846wpa_supplicant is definitely a lower-class citizen, sorry.
Err codemadness.org 70 i 8831 Err codemadness.org 70 i 8832I increasingly wonder why this stuff matters; transit costs are so much lower than the period when eduroam was setup, and their reliance on 802.11x is super weird in a world where, for the most part
Err codemadness.org 70 i 8840 Err codemadness.org 70 i 8841
Err codemadness.org 70 i 8833 + entire cities have open wifi in their downtown core
Err codemadness.org 70 i 8834 + edu vs edu+transit split horizon problems have to be solved anyways
Err codemadness.org 70 i 8835 + many universities have parallel open wifi
Err codemadness.org 70 i 8836 + rate limiting / fare-share approaches for the open-net, on unmetered
Err codemadness.org 70 i 8837 + flat-rate solves the problem
Err codemadness.org 70 i 8838 + LTE hotspot off a phone isn't a rip off anymore
Err codemadness.org 70 i 8839 + other open networks existessentially no one else feels compelled to do use 802.11x for a so called "semi-open access network", so I think they've lost the plot on friction vs benefit.
Err codemadness.org 70 i 8842 Err codemadness.org 70 i 8843(we've held hackathons at EDU campus that are locked down like that, and in every case we've said no way, gotten a wire with open net, and built our own wifi. we will not subject our developers to that extra complexity).
Err codemadness.org 70 i 8844
Err codemadness.org 70 i 8851Err codemadness.org 70 i 8853 Err codemadness.org 70 i 8854Some bits and bobs from the KDE FreeBSD team in february 2020. We met at the FreeBSD devsummit before FOSDEM, along with other FreeBSD people. Plans were made, schemes were forged, and Groff the Goat was introduced to some new people.
Err codemadness.org 70 i 8852
Err codemadness.org 70 i 8888Err codemadness.org 70 i 8894 Err codemadness.org 70 i 8895Hi everyone,
Err codemadness.org 70 i 8889 Err codemadness.org 70 i 8890The Travel Grant Application for BSDCan 2020 is now open. The Foundation can help you attend BSDCan through our travel grant program. Travel grants are available to FreeBSD developers and advocates who need assistance with travel expenses for attending conferences related to FreeBSD development. BSDCan 2020 applications are due April 9, 2020. Find out more and apply at: https://www.freebsdfoundation.org/what-we-do/grants/travel-grants/
Err codemadness.org 70 i 8891 Err codemadness.org 70 i 8892Did you know the Foundation also provides grants for technical events not specifically focused on BSD? If you feel that your attendance at one of these events will benefit the FreeBSD Project and Community and you need assistance getting there, please fill out the general travel grant application. Your application must be received 7 weeks prior to the event. The general application can be found here: https://goo.gl/forms/QzsOMR8Jra0vqFYH2
Err codemadness.org 70 i 8893
Err codemadness.org 70 i 8904Err codemadness.org 70 i 8906 Err codemadness.org 70 i 8907I’m going to do jails within a jail. I already do that with poudriere in a jail but here I want to test an older version of iocage before upgrading my current jail hosts to a newer version.
Err codemadness.org 70 i 8905
Err codemadness.org 70 i 8918Err codemadness.org 70 i 8920 Err codemadness.org 70 i 8921This post includes my errors and mistakes. Perhaps you should proceed carefully and read it all first.
Err codemadness.org 70 i 8919
Err codemadness.org 70 i 8963Err codemadness.org 70 i 8971 Err codemadness.org 70 i 8972FuryBSD is the most recent addition to the DistroWatch database and provides a live desktop operating system based on FreeBSD. FuryBSD is not entirely different in its goals from NomadBSD, which we discussed recently. I wanted to take this FreeBSD-based project for a test drive and see how it compares to NomadBSD and other desktop-oriented projects in the FreeBSD family.
Err codemadness.org 70 i 8964 Err codemadness.org 70 i 8965FuryBSD supplies hybrid ISO/USB images which can be used to run a live desktop. There are two desktop editions currently, both for 64-bit (x86_64) machines: Xfce and KDE Plasma. The Xfce edition is 1.4GB in size and is the flavour I downloaded. The KDE Plasma edition is about 3.0GB in size.
Err codemadness.org 70 i 8966 Err codemadness.org 70 i 8967My fresh install of FuryBSD booted to a graphical login screen. From there I could sign into my account, which brings up the Xfce desktop. The installed version of Xfce is the same as the live version, with a few minor changes. Most of the desktop icons have been removed with just the file manager launchers remaining. The Getting Started and System Information icons have been removed. Otherwise the experience is virtually identical to the live media.
Err codemadness.org 70 i 8968 Err codemadness.org 70 i 8969FuryBSD uses a theme that is mostly grey and white with creamy yellow folder icons. The application menu launchers tend to have neutral icons, neither particularly bright and detailed or minimal.
Err codemadness.org 70 i 8970
Err codemadness.org 70 i 8977Err codemadness.org 70 i 8983 Err codemadness.org 70 i 8984Upstream describes LLDB as a next generation, high-performance debugger. It is built on top of LLVM/Clang toolchain, and features great integration with it. At the moment, it primarily supports debugging C, C++ and ObjC code, and there is interest in extending it to more languages.
Err codemadness.org 70 i 8978 Err codemadness.org 70 i 8979In February 2019, I have started working on LLDB, as contracted by the NetBSD Foundation. So far I've been working on reenabling continuous integration, squashing bugs, improving NetBSD core file support, extending NetBSD's ptrace interface to cover more register types and fix compat32 issues, fixing watchpoint and threading support.
Err codemadness.org 70 i 8980 Err codemadness.org 70 i 8981The original NetBSD port of LLDB was focused on amd64 only. In January, I have extended it to support i386 executables. This includes both 32-bit builds of LLDB (running natively on i386 kernel or via compat32) and debugging 32-bit programs from 64-bit LLDB.
Err codemadness.org 70 i 8982
Err codemadness.org 70 i 8991Err codemadness.org 70 i 9006 Err codemadness.org 70 i 9007wpa_supplicant is definitely a lower-class citizen, sorry.
Err codemadness.org 70 i 8992 Err codemadness.org 70 i 8993I increasingly wonder why this stuff matters; transit costs are so much lower than the period when eduroam was setup, and their reliance on 802.11x is super weird in a world where, for the most part
Err codemadness.org 70 i 9001 Err codemadness.org 70 i 9002
Err codemadness.org 70 i 8994 + entire cities have open wifi in their downtown core
Err codemadness.org 70 i 8995 + edu vs edu+transit split horizon problems have to be solved anyways
Err codemadness.org 70 i 8996 + many universities have parallel open wifi
Err codemadness.org 70 i 8997 + rate limiting / fare-share approaches for the open-net, on unmetered
Err codemadness.org 70 i 8998 + flat-rate solves the problem
Err codemadness.org 70 i 8999 + LTE hotspot off a phone isn't a rip off anymore
Err codemadness.org 70 i 9000 + other open networks existessentially no one else feels compelled to do use 802.11x for a so called "semi-open access network", so I think they've lost the plot on friction vs benefit.
Err codemadness.org 70 i 9003 Err codemadness.org 70 i 9004(we've held hackathons at EDU campus that are locked down like that, and in every case we've said no way, gotten a wire with open net, and built our own wifi. we will not subject our developers to that extra complexity).
Err codemadness.org 70 i 9005
Err codemadness.org 70 i 9012Err codemadness.org 70 i 9014 Err codemadness.org 70 i 9015Some bits and bobs from the KDE FreeBSD team in february 2020. We met at the FreeBSD devsummit before FOSDEM, along with other FreeBSD people. Plans were made, schemes were forged, and Groff the Goat was introduced to some new people.
Err codemadness.org 70 i 9013
Err codemadness.org 70 i 9049Err codemadness.org 70 i 9055 Err codemadness.org 70 i 9056Hi everyone,
Err codemadness.org 70 i 9050 Err codemadness.org 70 i 9051The Travel Grant Application for BSDCan 2020 is now open. The Foundation can help you attend BSDCan through our travel grant program. Travel grants are available to FreeBSD developers and advocates who need assistance with travel expenses for attending conferences related to FreeBSD development. BSDCan 2020 applications are due April 9, 2020. Find out more and apply at: https://www.freebsdfoundation.org/what-we-do/grants/travel-grants/
Err codemadness.org 70 i 9052 Err codemadness.org 70 i 9053Did you know the Foundation also provides grants for technical events not specifically focused on BSD? If you feel that your attendance at one of these events will benefit the FreeBSD Project and Community and you need assistance getting there, please fill out the general travel grant application. Your application must be received 7 weeks prior to the event. The general application can be found here: https://goo.gl/forms/QzsOMR8Jra0vqFYH2
Err codemadness.org 70 i 9054
Err codemadness.org 70 i 9065Err codemadness.org 70 i 9067 Err codemadness.org 70 i 9068I’m going to do jails within a jail. I already do that with poudriere in a jail but here I want to test an older version of iocage before upgrading my current jail hosts to a newer version.
Err codemadness.org 70 i 9066
Err codemadness.org 70 i 9079Err codemadness.org 70 i 9081 Err codemadness.org 70 i 9082This post includes my errors and mistakes. Perhaps you should proceed carefully and read it all first.
Err codemadness.org 70 i 9080
Err codemadness.org 70 i 9204Err codemadness.org 70 i 9212 Err codemadness.org 70 i 9213In the past few days, several free software maintainers have come out to discuss the stresses of their work. Though the timing was suggestive, my article last week on the philosophy of project governance was, at best, only tangentially related to this topic - I had been working on that article for a while. I do have some thoughts that I’d like to share about what kind of stresses I’ve dealt with as a FOSS maintainer, and how I’ve managed (or often mismanaged) it.
Err codemadness.org 70 i 9205 Err codemadness.org 70 i 9206February will mark one year that I’ve been working on self-directed free software projects full-time. I was planning on writing an optimistic retrospective article around this time, but given the current mood of the ecosystem I think it would be better to be realistic. In this stage of my career, I now feel at once happier, busier, more fulfilled, more engaged, more stressed, and more depressed than I have at any other point in my life.
Err codemadness.org 70 i 9207 Err codemadness.org 70 i 9208The good parts are numerous. I’m able to work on my life’s passions, and my projects are in the best shape they’ve ever been thanks to the attention I’m able to pour into them. I’ve also been able to do more thoughtful, careful work; with the extra time I’ve been able to make my software more robust and reliable than it’s ever been. The variety of projects I can invest my time into has also increased substantially, with what was once relegated to minor curiosities now receiving a similar amount of attention as my larger projects were receiving in my spare time before. I can work from anywhere in the world, at any time, not worrying about when to take time off and when to put my head down and crank out a lot of code.
Err codemadness.org 70 i 9209 Err codemadness.org 70 i 9210The frustrations are numerous, as well. I often feel like I’ve bit off more than I can chew. This has been the default state of affairs for me for a long time; I’m often neglecting half of my projects in order to obtain progress by leaps and bounds in just a few. Working on FOSS full-time has cast this model’s disadvantages into greater relief, as I focus on a greater breadth of projects and spend more time on them.
Err codemadness.org 70 i 9211
Err codemadness.org 70 i 9218Err codemadness.org 70 i 9222 Err codemadness.org 70 i 9223Recently at my job, I was faced with a task to develop a file server explicitly suited for the requirements of the company. Needless to say, any configuration of a kind depends on what the infrastructure needs. So, drawing from my personal experience and numerous materials on the web, I came up with the combination FreeBSD+SAMBA+AD as the most appropriate. It appears to be a perfect choice for this environment, and harmonic addition to the existing network configuration since FreeBSD + SAMBA + AD enables admins with the broad range of possibilities for access control. However, as nothing is perfect, this configuration isn’t the best choice if your priority is data protection because it won’t be able to reach the necessary levels of reliability and fault tolerance without outside improvements.
Err codemadness.org 70 i 9219 Err codemadness.org 70 i 9220Now, since we’ve established that, let’s move on to the next point. This article’s describing the process of building a test environment while concentrating primarily on the details of the configuration. As the author, though, I must say I’m in no way suggesting that this is the only way! The following configuration will be presented in its initial stage, with the minimum requirements necessary to get the job done, and its purpose in one specific situation only. Here, look at this as a useful strategy to solve similar tasks. Well, let’s get started!
Err codemadness.org 70 i 9221
Err codemadness.org 70 i 9228Err codemadness.org 70 i 9240 Err codemadness.org 70 i 9241February 11th was the first meeting of this new user group, founded by John Young and myself
Err codemadness.org 70 i 9229 Err codemadness.org 70 i 923011 people attended, and a lot of good discussions were had
Err codemadness.org 70 i 9231 Err codemadness.org 70 i 9232One of the attendees already owns a domain that fits well for the group, so we will be getting that setup over the next few weeks, as well as the twitter account, and other organization stuff.
Err codemadness.org 70 i 9233 Err codemadness.org 70 i 9234Special thanks to the illumos users who drove in from Buffalo to attend, although they may have actually had a shorter drive than a few of the other attendees.
Err codemadness.org 70 i 9235 Err codemadness.org 70 i 9236The next meeting is scheduled again for the 2nd Tuesday of the month, March 10th.
Err codemadness.org 70 i 9237 Err codemadness.org 70 i 9238We are still discussing if we should meet at a restaurant again, or try to get a space at the local college or innovation hub where we can have a projector etc.
Err codemadness.org 70 i 9239
Err codemadness.org 70 i 9248Err codemadness.org 70 i 9250 Err codemadness.org 70 i 9251There are quite a few solutions for container orchestration, but the most popular (or the most famous and highly advertised, is probably, a Kubernetes) Since I plan to conduct many experiments with installing and configuring k8s, I need a laboratory in which I can quickly and easily deploy a cluster in any quantities for myself. In my work and everyday life I use two OS very tightly - Linux and FreeBSD OS. Kubernetes and docker are Linux-centric projects, and at first glance, you should not expect any useful participation and help from FreeBSD here. As the saying goes, an elephant can be made out of a fly, but it will no longer fly. However, two tempting things come to mind - this is very good integration and work in the FreeBSD ZFS file system, from which it would be nice to use the snapshot mechanism, COW and reliability. And the second is the bhyve hypervisor, because we still need the docker and k8s loader in the form of the Linux kernel. Thus, we need to connect a certain number of actions in various ways, most of which are related to starting and pre-configuring virtual machines. This is typical of both a Linux-based server and FreeBSD. What exactly will work under the hood to run virtual machines does not play a big role. And if so - let's take a FreeBSD here!
Err codemadness.org 70 i 9249
Err codemadness.org 70 i 9256Err codemadness.org 70 i 9258 Err codemadness.org 70 i 9259We hope this will lead to the best NetBSD release ever (only to be topped by NetBSD 10 next year).
Err codemadness.org 70 i 9257
Here are a few highlights of the new release:
Err codemadness.org 70 i 9261 Err codemadness.org 70 i 9262You can download binaries of NetBSD 9.0_RC1 from our Fastly-provided CDN: https://cdn.netbsd.org/pub/NetBSD/NetBSD-9.0_RC1/
Err codemadness.org 70 i 9286Err codemadness.org 70 i 9290 Err codemadness.org 70 i 9291For over 5 years now, OPNsense is driving innovation through modularising and hardening the open source firewall, with simple and reliable firmware upgrades, multi-language support, HardenedBSD security, fast adoption of upstream software updates as well as clear and stable 2-Clause BSD licensing.
Err codemadness.org 70 i 9287 Err codemadness.org 70 i 928820.1, nicknamed "Keen Kingfisher", is a subtle improvement on sustainable firewall experience. This release adds VXLAN and additional loopback device support, IPsec public key authentication and elliptic curve TLS certificate creation amongst others. Third party software has been updated to their latest versions. The logging frontend was rewritten for MVC with seamless API support. On the far side the documentation increased in quality as well as quantity and now presents itself in a familiar menu layout.
Err codemadness.org 70 i 9289
Err codemadness.org 70 i 9296Err codemadness.org 70 i 9302 Err codemadness.org 70 i 9303Over the past month, we purchased and deployed the new 13-CURRENT/amd64 package building server. We published our first 13-CURRENT/amd64 production package build using that server. We then rebuilt the old package building server to act as the 12-STABLE/amd64 package building server. This post signifies a very important milestone: we have now fully recovered from last year's death of our infrastructure. Our 12-STABLE/amd64 repo, previously out-of-date by many months, is now fully up-to-date!
Err codemadness.org 70 i 9297 Err codemadness.org 70 i 9298HardenedBSD is in a very unique position to provide innovative solutions to at-risk and underprivileged populations. As such, we are making human rights endeavors a defining area of focus. Our infrastructure will integrate various privacy and anonymity enhancing technologies and techniques to protect lives. Our operating system's security posture will increase, especially with our focus on exploit mitigations.
Err codemadness.org 70 i 9299 Err codemadness.org 70 i 9300Navigating the intersection between human rights and information security directly impacts lives. HardenedBSD's 2020 mission and focus is to deliver an entire hardened ecosystem that is unfriendly towards those who would oppress or censor their people. This includes a subtle shift in priorities to match this new mission and focus. While we implement exploit mitigations and further harden the ecosystem, we will seek out opportunities to contribute a tangible and unique impact on human rights issues. Providing Tor Onion Services for our core infrastructure is the first step in likely many to come towards securely helping those in need.
Err codemadness.org 70 i 9301
Err codemadness.org 70 i 9346Err codemadness.org 70 i 9354 Err codemadness.org 70 i 9355In the past few days, several free software maintainers have come out to discuss the stresses of their work. Though the timing was suggestive, my article last week on the philosophy of project governance was, at best, only tangentially related to this topic - I had been working on that article for a while. I do have some thoughts that I’d like to share about what kind of stresses I’ve dealt with as a FOSS maintainer, and how I’ve managed (or often mismanaged) it.
Err codemadness.org 70 i 9347 Err codemadness.org 70 i 9348February will mark one year that I’ve been working on self-directed free software projects full-time. I was planning on writing an optimistic retrospective article around this time, but given the current mood of the ecosystem I think it would be better to be realistic. In this stage of my career, I now feel at once happier, busier, more fulfilled, more engaged, more stressed, and more depressed than I have at any other point in my life.
Err codemadness.org 70 i 9349 Err codemadness.org 70 i 9350The good parts are numerous. I’m able to work on my life’s passions, and my projects are in the best shape they’ve ever been thanks to the attention I’m able to pour into them. I’ve also been able to do more thoughtful, careful work; with the extra time I’ve been able to make my software more robust and reliable than it’s ever been. The variety of projects I can invest my time into has also increased substantially, with what was once relegated to minor curiosities now receiving a similar amount of attention as my larger projects were receiving in my spare time before. I can work from anywhere in the world, at any time, not worrying about when to take time off and when to put my head down and crank out a lot of code.
Err codemadness.org 70 i 9351 Err codemadness.org 70 i 9352The frustrations are numerous, as well. I often feel like I’ve bit off more than I can chew. This has been the default state of affairs for me for a long time; I’m often neglecting half of my projects in order to obtain progress by leaps and bounds in just a few. Working on FOSS full-time has cast this model’s disadvantages into greater relief, as I focus on a greater breadth of projects and spend more time on them.
Err codemadness.org 70 i 9353
Err codemadness.org 70 i 9360Err codemadness.org 70 i 9364 Err codemadness.org 70 i 9365Recently at my job, I was faced with a task to develop a file server explicitly suited for the requirements of the company. Needless to say, any configuration of a kind depends on what the infrastructure needs. So, drawing from my personal experience and numerous materials on the web, I came up with the combination FreeBSD+SAMBA+AD as the most appropriate. It appears to be a perfect choice for this environment, and harmonic addition to the existing network configuration since FreeBSD + SAMBA + AD enables admins with the broad range of possibilities for access control. However, as nothing is perfect, this configuration isn’t the best choice if your priority is data protection because it won’t be able to reach the necessary levels of reliability and fault tolerance without outside improvements.
Err codemadness.org 70 i 9361 Err codemadness.org 70 i 9362Now, since we’ve established that, let’s move on to the next point. This article’s describing the process of building a test environment while concentrating primarily on the details of the configuration. As the author, though, I must say I’m in no way suggesting that this is the only way! The following configuration will be presented in its initial stage, with the minimum requirements necessary to get the job done, and its purpose in one specific situation only. Here, look at this as a useful strategy to solve similar tasks. Well, let’s get started!
Err codemadness.org 70 i 9363
Err codemadness.org 70 i 9370Err codemadness.org 70 i 9382 Err codemadness.org 70 i 9383February 11th was the first meeting of this new user group, founded by John Young and myself
Err codemadness.org 70 i 9371 Err codemadness.org 70 i 937211 people attended, and a lot of good discussions were had
Err codemadness.org 70 i 9373 Err codemadness.org 70 i 9374One of the attendees already owns a domain that fits well for the group, so we will be getting that setup over the next few weeks, as well as the twitter account, and other organization stuff.
Err codemadness.org 70 i 9375 Err codemadness.org 70 i 9376Special thanks to the illumos users who drove in from Buffalo to attend, although they may have actually had a shorter drive than a few of the other attendees.
Err codemadness.org 70 i 9377 Err codemadness.org 70 i 9378The next meeting is scheduled again for the 2nd Tuesday of the month, March 10th.
Err codemadness.org 70 i 9379 Err codemadness.org 70 i 9380We are still discussing if we should meet at a restaurant again, or try to get a space at the local college or innovation hub where we can have a projector etc.
Err codemadness.org 70 i 9381
Err codemadness.org 70 i 9390Err codemadness.org 70 i 9392 Err codemadness.org 70 i 9393There are quite a few solutions for container orchestration, but the most popular (or the most famous and highly advertised, is probably, a Kubernetes) Since I plan to conduct many experiments with installing and configuring k8s, I need a laboratory in which I can quickly and easily deploy a cluster in any quantities for myself. In my work and everyday life I use two OS very tightly - Linux and FreeBSD OS. Kubernetes and docker are Linux-centric projects, and at first glance, you should not expect any useful participation and help from FreeBSD here. As the saying goes, an elephant can be made out of a fly, but it will no longer fly. However, two tempting things come to mind - this is very good integration and work in the FreeBSD ZFS file system, from which it would be nice to use the snapshot mechanism, COW and reliability. And the second is the bhyve hypervisor, because we still need the docker and k8s loader in the form of the Linux kernel. Thus, we need to connect a certain number of actions in various ways, most of which are related to starting and pre-configuring virtual machines. This is typical of both a Linux-based server and FreeBSD. What exactly will work under the hood to run virtual machines does not play a big role. And if so - let's take a FreeBSD here!
Err codemadness.org 70 i 9391
Err codemadness.org 70 i 9398Err codemadness.org 70 i 9400 Err codemadness.org 70 i 9401We hope this will lead to the best NetBSD release ever (only to be topped by NetBSD 10 next year).
Err codemadness.org 70 i 9399
Here are a few highlights of the new release:
Err codemadness.org 70 i 9403 Err codemadness.org 70 i 9404You can download binaries of NetBSD 9.0_RC1 from our Fastly-provided CDN: https://cdn.netbsd.org/pub/NetBSD/NetBSD-9.0_RC1/
Err codemadness.org 70 i 9428Err codemadness.org 70 i 9432 Err codemadness.org 70 i 9433For over 5 years now, OPNsense is driving innovation through modularising and hardening the open source firewall, with simple and reliable firmware upgrades, multi-language support, HardenedBSD security, fast adoption of upstream software updates as well as clear and stable 2-Clause BSD licensing.
Err codemadness.org 70 i 9429 Err codemadness.org 70 i 943020.1, nicknamed "Keen Kingfisher", is a subtle improvement on sustainable firewall experience. This release adds VXLAN and additional loopback device support, IPsec public key authentication and elliptic curve TLS certificate creation amongst others. Third party software has been updated to their latest versions. The logging frontend was rewritten for MVC with seamless API support. On the far side the documentation increased in quality as well as quantity and now presents itself in a familiar menu layout.
Err codemadness.org 70 i 9431
Err codemadness.org 70 i 9438Err codemadness.org 70 i 9444 Err codemadness.org 70 i 9445Over the past month, we purchased and deployed the new 13-CURRENT/amd64 package building server. We published our first 13-CURRENT/amd64 production package build using that server. We then rebuilt the old package building server to act as the 12-STABLE/amd64 package building server. This post signifies a very important milestone: we have now fully recovered from last year's death of our infrastructure. Our 12-STABLE/amd64 repo, previously out-of-date by many months, is now fully up-to-date!
Err codemadness.org 70 i 9439 Err codemadness.org 70 i 9440HardenedBSD is in a very unique position to provide innovative solutions to at-risk and underprivileged populations. As such, we are making human rights endeavors a defining area of focus. Our infrastructure will integrate various privacy and anonymity enhancing technologies and techniques to protect lives. Our operating system's security posture will increase, especially with our focus on exploit mitigations.
Err codemadness.org 70 i 9441 Err codemadness.org 70 i 9442Navigating the intersection between human rights and information security directly impacts lives. HardenedBSD's 2020 mission and focus is to deliver an entire hardened ecosystem that is unfriendly towards those who would oppress or censor their people. This includes a subtle shift in priorities to match this new mission and focus. While we implement exploit mitigations and further harden the ecosystem, we will seek out opportunities to contribute a tangible and unique impact on human rights issues. Providing Tor Onion Services for our core infrastructure is the first step in likely many to come towards securely helping those in need.
Err codemadness.org 70 i 9443
Err codemadness.org 70 i 9550Err codemadness.org 70 i 9558 Err codemadness.org 70 i 9559OpenBSD has a well deserved reputation for putting security and a clean system (for code, documentation, and so on) first, and everything else second. OpenBSD is of course based on BSD (it's right there in the name) and descends from FreeBSD NetBSD (you can read the history here). But one of the questions you could ask about it is whether it had to be that way, and in particular if you could build something like OpenBSD on top of Linux. I believe that the answer is no.
Err codemadness.org 70 i 9551 Err codemadness.org 70 i 9552Linux and the *BSDs have a significantly different model of what they are. BSDs have a 'base system' that provides an integrated and fully operational core Unix, covering the kernel, C library and compiler, and the normal Unix user level programs, all maintained and distributed by the particular BSD. Linux is not a single unit this way, and instead all of the component parts are maintained separately and assembled in various ways by various Linux distributions. Both approaches have their advantages, but one big one for the BSD approach is that it enables global changes.
Err codemadness.org 70 i 9553 Err codemadness.org 70 i 9554Making global changes is an important part of what makes OpenBSD's approach to improving security, code maintenance, and so on work. Because it directly maintains everything as a unit, OpenBSD is in a position to introduce new C library or kernel APIs (or change them) and then immediately update all sorts of things in user level programs to use the new API. This takes a certain amount of work, of course, but it's possible to do it at all. And because OpenBSD can do this sort of ambitious global change, it does.
Err codemadness.org 70 i 9555 Err codemadness.org 70 i 9556This goes further than just the ability to make global changes, because in theory you can patch in global changes on top of a bunch of separate upstream projects. Because OpenBSD is in control of its entire base system, it's not forced to try to reconcile different development priorities or integrate clashing changes. OpenBSD can decide (and has) that only certain sorts of changes will be accepted into its system at all, no matter what people want. If there are features or entire programs that don't fit into what OpenBSD will accept, they just lose out.
Err codemadness.org 70 i 9557
Err codemadness.org 70 i 9564Err codemadness.org 70 i 9570 Err codemadness.org 70 i 9571Here is the last quarterly status report for 2019. As you might remember from last report, we changed our timeline: now we collect reports the last month of each quarter and we edit and publish the full document the next month. Thus, we cover here the period October 2019 - December 2019.
Err codemadness.org 70 i 9565 Err codemadness.org 70 i 9566If you thought that the FreeBSD community was less active in the Christmas' quarter you will be glad to be proven wrong: a quick glance at the summary will be sufficient to see that much work has been done in the last months.
Err codemadness.org 70 i 9567 Err codemadness.org 70 i 9568Have a nice read!
Err codemadness.org 70 i 9569
Err codemadness.org 70 i 9578Err codemadness.org 70 i 9582 Err codemadness.org 70 i 9583As 20.1 nears we will be making adjustments to the scope of the release with an announcement following shortly.
Err codemadness.org 70 i 9579 Err codemadness.org 70 i 9580For now, this update brings you a GeoIP database configuration page for aliases which is now required due to upstream database policy changes and a number of prominent third-party software updates we are happy to see included.
Err codemadness.org 70 i 9581
Err codemadness.org 70 i 9588Err codemadness.org 70 i 9590 Err codemadness.org 70 i 9591Archives are important. When they are public and available for searching, it retains and passes on knowledge. It saves vast amounts of time.
Err codemadness.org 70 i 9589
Err codemadness.org 70 i 9596Err codemadness.org 70 i 9598 Err codemadness.org 70 i 9599I've been working today on deploying Tor Onion Service v3 nodes across our build infrastructure. I'm happy to announce that the public portion of this is now completed. Below you will find various onion service hostnames and their match to our infrastructure.
Err codemadness.org 70 i 9597
Err codemadness.org 70 i 9653Err codemadness.org 70 i 9661 Err codemadness.org 70 i 9662OpenBSD has a well deserved reputation for putting security and a clean system (for code, documentation, and so on) first, and everything else second. OpenBSD is of course based on BSD (it's right there in the name) and descends from FreeBSD NetBSD (you can read the history here). But one of the questions you could ask about it is whether it had to be that way, and in particular if you could build something like OpenBSD on top of Linux. I believe that the answer is no.
Err codemadness.org 70 i 9654 Err codemadness.org 70 i 9655Linux and the *BSDs have a significantly different model of what they are. BSDs have a 'base system' that provides an integrated and fully operational core Unix, covering the kernel, C library and compiler, and the normal Unix user level programs, all maintained and distributed by the particular BSD. Linux is not a single unit this way, and instead all of the component parts are maintained separately and assembled in various ways by various Linux distributions. Both approaches have their advantages, but one big one for the BSD approach is that it enables global changes.
Err codemadness.org 70 i 9656 Err codemadness.org 70 i 9657Making global changes is an important part of what makes OpenBSD's approach to improving security, code maintenance, and so on work. Because it directly maintains everything as a unit, OpenBSD is in a position to introduce new C library or kernel APIs (or change them) and then immediately update all sorts of things in user level programs to use the new API. This takes a certain amount of work, of course, but it's possible to do it at all. And because OpenBSD can do this sort of ambitious global change, it does.
Err codemadness.org 70 i 9658 Err codemadness.org 70 i 9659This goes further than just the ability to make global changes, because in theory you can patch in global changes on top of a bunch of separate upstream projects. Because OpenBSD is in control of its entire base system, it's not forced to try to reconcile different development priorities or integrate clashing changes. OpenBSD can decide (and has) that only certain sorts of changes will be accepted into its system at all, no matter what people want. If there are features or entire programs that don't fit into what OpenBSD will accept, they just lose out.
Err codemadness.org 70 i 9660
Err codemadness.org 70 i 9667Err codemadness.org 70 i 9673 Err codemadness.org 70 i 9674Here is the last quarterly status report for 2019. As you might remember from last report, we changed our timeline: now we collect reports the last month of each quarter and we edit and publish the full document the next month. Thus, we cover here the period October 2019 - December 2019.
Err codemadness.org 70 i 9668 Err codemadness.org 70 i 9669If you thought that the FreeBSD community was less active in the Christmas' quarter you will be glad to be proven wrong: a quick glance at the summary will be sufficient to see that much work has been done in the last months.
Err codemadness.org 70 i 9670 Err codemadness.org 70 i 9671Have a nice read!
Err codemadness.org 70 i 9672
Err codemadness.org 70 i 9681Err codemadness.org 70 i 9685 Err codemadness.org 70 i 9686As 20.1 nears we will be making adjustments to the scope of the release with an announcement following shortly.
Err codemadness.org 70 i 9682 Err codemadness.org 70 i 9683For now, this update brings you a GeoIP database configuration page for aliases which is now required due to upstream database policy changes and a number of prominent third-party software updates we are happy to see included.
Err codemadness.org 70 i 9684
Err codemadness.org 70 i 9691Err codemadness.org 70 i 9693 Err codemadness.org 70 i 9694Archives are important. When they are public and available for searching, it retains and passes on knowledge. It saves vast amounts of time.
Err codemadness.org 70 i 9692
Err codemadness.org 70 i 9699Err codemadness.org 70 i 9701 Err codemadness.org 70 i 9702I've been working today on deploying Tor Onion Service v3 nodes across our build infrastructure. I'm happy to announce that the public portion of this is now completed. Below you will find various onion service hostnames and their match to our infrastructure.
Err codemadness.org 70 i 9700
Err codemadness.org 70 i 9817Err codemadness.org 70 i 9825 Err codemadness.org 70 i 9826Update 2020-01-21: Since I wrote this article it got posted on Hacker News, Reddit and Lobster, and a few people have emailed me with comments. I have updated the article with comments where I have found it needed. As an important side note I would like to point out that I am not a FreeBSD developer, there may be things going on in the FreeBSD world that I know absolutely nothing about. I am also not glued to the FreeBSD developer mailing lists. I am not a FreeBSD "fanboy". I have been using GNU/Linux a ton more for the past two decades than FreeBSD, mainly due to hardware incompatibility (lacking or buggy drivers), and I love both Debian GNU/Linux and Arch Linux just as much as FreeBSD. However, I am concerned about the development of GNU/Linux as of late. Also this article is not about me trying to make anyone switch from something else to FreeBSD. It's about why I like FreeBSD and that I recommend you try it out if you're into messing with operating systems.
Err codemadness.org 70 i 9818 Err codemadness.org 70 i 9819I think the year was late 1999 or mid 2000 when I one day was browsing computer books at my favorite bookshop and I discovered the book The Complete FreeBSD third edition from 1999 by Greg Lehey. With the book came 4 CD Roms with FreeBSD 3.3.
Err codemadness.org 70 i 9820 Err codemadness.org 70 i 9821I had already familiarized myself with GNU/Linux in 1998, and I was in the process of migrating every server and desktop operating system away from Microsoft Windows, both at home and at my company, to GNU/Linux, initially Red Hat Linux and then later Debian GNU/Linux, which eventually became my favorite GNU/Linux distribution for many years.
Err codemadness.org 70 i 9822 Err codemadness.org 70 i 9823When I first saw The Complete FreeBSD book by Greg Lehey I remember noticing the text on the front page that said, "The Free Version of Berkeley UNIX" and "Rock Solid Stability", and I was immediately intrigued! What was that all about? A free UNIX operating system! And rock solid stability? That sounded amazing.
Err codemadness.org 70 i 9824
Err codemadness.org 70 i 9831Err codemadness.org 70 i 9837 Err codemadness.org 70 i 9838In late December 2019, Hyperbola announced that they would be making major changes to their project. They have decided to drop the Linux kernel in favor of forking the OpenBSD kernel. This announcement only came months after Project Trident announced that they were going in the opposite direction (from BSD to Linux).
Err codemadness.org 70 i 9832 Err codemadness.org 70 i 9833Hyperbola also plans to replace all software that is not GPL v3 compliant with new versions that are.
Err codemadness.org 70 i 9834 Err codemadness.org 70 i 9835To get more insight into the future of their new project, I interviewed Andre, co-founder of Hyperbola.
Err codemadness.org 70 i 9836
Err codemadness.org 70 i 9845Err codemadness.org 70 i 9849 Err codemadness.org 70 i 9850This month I have improved the NetBSD ptrace(2) API, removing one legacy interface with a few flaws and replacing it with two new calls with new features, and removing technical debt.
Err codemadness.org 70 i 9846 Err codemadness.org 70 i 9847As LLVM 10.0 is branching now soon (Jan 15th 2020), I worked on proper support of the LLVM features for NetBSD 9.0 (today RC1) and NetBSD HEAD (future 10.0).
Err codemadness.org 70 i 9848
Err codemadness.org 70 i 9855Err codemadness.org 70 i 9861 Err codemadness.org 70 i 9862FreeBSD has existed as an operating system, project, and foundation for more than twenty years, and its earlier incantations have exited for far longer. The old guard have been developing code, porting software, and writing documentation for longer than I’ve existed. I’ve been using it for more than a decade for personal projects, and professionally for half that time.
Err codemadness.org 70 i 9856 Err codemadness.org 70 i 9857While there are many prominent Australian FreeBSD contributors, sysadmins, and users, we’ve always had to venture overseas for conferences. We’re always told Australians are among the most ardent travellers, but I always wondered if we could do a domestic event as well.
Err codemadness.org 70 i 9858 Err codemadness.org 70 i 9859And on Tuesday, we did! Deb Goodkin and the FreeBSD Foundation graciously organised and chaired a dedicated FreeBSD miniconf at the long-running linux.conf.au event held each year in a different city in Australia and New Zealand.
Err codemadness.org 70 i 9860
Err codemadness.org 70 i 9867Err codemadness.org 70 i 9869 Err codemadness.org 70 i 9870This is a simple write-up to setup Docker on FreeNAS 11 or FreeBSD 11.
Err codemadness.org 70 i 9868
But muh jails?
Err codemadness.org 70 i 9871 Err codemadness.org 70 i 9872Err codemadness.org 70 i 9873Err codemadness.org 70 i 9875 Err codemadness.org 70 i 9876You know that jails are dope and you know that jails are dope, yet no one else knows it. So here we are stuck with docker. Two years ago I would be the last person to recommend using docker, but a whole lot of things has changes past years…
Err codemadness.org 70 i 9874
So jails are dead then?
Err codemadness.org 70 i 9877 Err codemadness.org 70 i 9878Err codemadness.org 70 i 9879Err codemadness.org 70 i 9881 Err codemadness.org 70 i 9882No, jails are still dope, but jails lack tools to manage them. Yes, there are a few tools, but they meant for hard-core FreeBSD users who used to suffering. Docker allows you to run applications without deep knowledge of application you’re running. It will also allow you to run applications that are not ported to FreeBSD.
Err codemadness.org 70 i 9880
Err codemadness.org 70 i 9887Err codemadness.org 70 i 9889 Err codemadness.org 70 i 9890As an operating system GNU/Linux has become a real mess because of the fragmented nature of the project, the bloatware in the kernel, and because of the jerking around by commercial interests.
Err codemadness.org 70 i 9888
Err codemadness.org 70 i 9933Err codemadness.org 70 i 9941 Err codemadness.org 70 i 9942Update 2020-01-21: Since I wrote this article it got posted on Hacker News, Reddit and Lobster, and a few people have emailed me with comments. I have updated the article with comments where I have found it needed. As an important side note I would like to point out that I am not a FreeBSD developer, there may be things going on in the FreeBSD world that I know absolutely nothing about. I am also not glued to the FreeBSD developer mailing lists. I am not a FreeBSD "fanboy". I have been using GNU/Linux a ton more for the past two decades than FreeBSD, mainly due to hardware incompatibility (lacking or buggy drivers), and I love both Debian GNU/Linux and Arch Linux just as much as FreeBSD. However, I am concerned about the development of GNU/Linux as of late. Also this article is not about me trying to make anyone switch from something else to FreeBSD. It's about why I like FreeBSD and that I recommend you try it out if you're into messing with operating systems.
Err codemadness.org 70 i 9934 Err codemadness.org 70 i 9935I think the year was late 1999 or mid 2000 when I one day was browsing computer books at my favorite bookshop and I discovered the book The Complete FreeBSD third edition from 1999 by Greg Lehey. With the book came 4 CD Roms with FreeBSD 3.3.
Err codemadness.org 70 i 9936 Err codemadness.org 70 i 9937I had already familiarized myself with GNU/Linux in 1998, and I was in the process of migrating every server and desktop operating system away from Microsoft Windows, both at home and at my company, to GNU/Linux, initially Red Hat Linux and then later Debian GNU/Linux, which eventually became my favorite GNU/Linux distribution for many years.
Err codemadness.org 70 i 9938 Err codemadness.org 70 i 9939When I first saw The Complete FreeBSD book by Greg Lehey I remember noticing the text on the front page that said, "The Free Version of Berkeley UNIX" and "Rock Solid Stability", and I was immediately intrigued! What was that all about? A free UNIX operating system! And rock solid stability? That sounded amazing.
Err codemadness.org 70 i 9940
Err codemadness.org 70 i 9947Err codemadness.org 70 i 9953 Err codemadness.org 70 i 9954In late December 2019, Hyperbola announced that they would be making major changes to their project. They have decided to drop the Linux kernel in favor of forking the OpenBSD kernel. This announcement only came months after Project Trident announced that they were going in the opposite direction (from BSD to Linux).
Err codemadness.org 70 i 9948 Err codemadness.org 70 i 9949Hyperbola also plans to replace all software that is not GPL v3 compliant with new versions that are.
Err codemadness.org 70 i 9950 Err codemadness.org 70 i 9951To get more insight into the future of their new project, I interviewed Andre, co-founder of Hyperbola.
Err codemadness.org 70 i 9952
Err codemadness.org 70 i 9961Err codemadness.org 70 i 9965 Err codemadness.org 70 i 9966This month I have improved the NetBSD ptrace(2) API, removing one legacy interface with a few flaws and replacing it with two new calls with new features, and removing technical debt.
Err codemadness.org 70 i 9962 Err codemadness.org 70 i 9963As LLVM 10.0 is branching now soon (Jan 15th 2020), I worked on proper support of the LLVM features for NetBSD 9.0 (today RC1) and NetBSD HEAD (future 10.0).
Err codemadness.org 70 i 9964
Err codemadness.org 70 i 9971Err codemadness.org 70 i 9977 Err codemadness.org 70 i 9978FreeBSD has existed as an operating system, project, and foundation for more than twenty years, and its earlier incantations have exited for far longer. The old guard have been developing code, porting software, and writing documentation for longer than I’ve existed. I’ve been using it for more than a decade for personal projects, and professionally for half that time.
Err codemadness.org 70 i 9972 Err codemadness.org 70 i 9973While there are many prominent Australian FreeBSD contributors, sysadmins, and users, we’ve always had to venture overseas for conferences. We’re always told Australians are among the most ardent travellers, but I always wondered if we could do a domestic event as well.
Err codemadness.org 70 i 9974 Err codemadness.org 70 i 9975And on Tuesday, we did! Deb Goodkin and the FreeBSD Foundation graciously organised and chaired a dedicated FreeBSD miniconf at the long-running linux.conf.au event held each year in a different city in Australia and New Zealand.
Err codemadness.org 70 i 9976
Err codemadness.org 70 i 9983Err codemadness.org 70 i 9985 Err codemadness.org 70 i 9986This is a simple write-up to setup Docker on FreeNAS 11 or FreeBSD 11.
Err codemadness.org 70 i 9984
But muh jails?
Err codemadness.org 70 i 9987 Err codemadness.org 70 i 9988Err codemadness.org 70 i 9989Err codemadness.org 70 i 9991 Err codemadness.org 70 i 9992You know that jails are dope and you know that jails are dope, yet no one else knows it. So here we are stuck with docker. Two years ago I would be the last person to recommend using docker, but a whole lot of things has changes past years…
Err codemadness.org 70 i 9990
So jails are dead then?
Err codemadness.org 70 i 9993 Err codemadness.org 70 i 9994Err codemadness.org 70 i 9995Err codemadness.org 70 i 9997 Err codemadness.org 70 i 9998No, jails are still dope, but jails lack tools to manage them. Yes, there are a few tools, but they meant for hard-core FreeBSD users who used to suffering. Docker allows you to run applications without deep knowledge of application you’re running. It will also allow you to run applications that are not ported to FreeBSD.
Err codemadness.org 70 i 9996
Err codemadness.org 70 i 10003Err codemadness.org 70 i 10005 Err codemadness.org 70 i 10006As an operating system GNU/Linux has become a real mess because of the fragmented nature of the project, the bloatware in the kernel, and because of the jerking around by commercial interests.
Err codemadness.org 70 i 10004
Err codemadness.org 70 i 10108Err codemadness.org 70 i 10112 Err codemadness.org 70 i 10113Now here’s something more like what I was originally expecting the content on this blog to look like. I’m in the process of moving all of our FreeBSD servers (about 30 in total) from 11.3 to 12.1. We have our own local build of the OS, and until “packaged base” gets to a state where it’s reliably usable, we’re stuck doing upgrades the old-fashioned way. I created a set of notes for myself while cranking through these upgrades and I wanted to share them since they are not really work-specific and this process isn’t very well documented for people who haven’t been doing this sort of upgrade process for 25 years.
Err codemadness.org 70 i 10109 Err codemadness.org 70 i 10110Our source and object trees are read-only exported from the build server over NFS, which causes things to be slow. /etc/make.conf and /etc/src.conf are symbolic links on all of our servers to the master copies in /usr/src so that make installworld can find the configuration parameters the system was built with.
Err codemadness.org 70 i 10111
Err codemadness.org 70 i 10118Err codemadness.org 70 i 10124 Err codemadness.org 70 i 10125This may be a little off-topic for this board (forgive me if it is, please). However, I wanted to say that I'm one of the people who works on DistroWatch (distrowatch.com) and this past week we had to deal with a server facing hardware failure. We had a discussion about whether to continue running Debian or switch to something else.
Err codemadness.org 70 i 10119 Err codemadness.org 70 i 10120The primary "something else" option turned out to be FreeBSD and it is what we eventually went with. It took a while to convert everything over from working with Debian GNU/Linux to FreeBSD 12 (some script incompatibilities, different paths, some changes to web server configuration, networking IPv6 troubles). But in the end we ended up with a good, FreeBSD-based experience.
Err codemadness.org 70 i 10121 Err codemadness.org 70 i 10122Since the transition was successful, though certainly not seamless, I thought people might want to do a Q&A on the migration process. Especially for those thinking of making the same switch.
Err codemadness.org 70 i 10123
Err codemadness.org 70 i 10132Err codemadness.org 70 i 10136 Err codemadness.org 70 i 10137iked(8) no longer automatically blocks unencrypted outbound IPv6 packets. This feature was intended to avoid accidental leakage, but in practice was found to mostly be a cause of misconfiguration.
Err codemadness.org 70 i 10133 Err codemadness.org 70 i 10134If you previously used iked(8)'s -6 flag to disable this feature, it is no longer needed and should be removed from /etc/rc.conf.local if used.
Err codemadness.org 70 i 10135
Err codemadness.org 70 i 10142Err codemadness.org 70 i 10148 Err codemadness.org 70 i 10149“Don’t use ZFS. It’s that simple. It was always more of a buzzword than anything else, I feel, and the licensing issues just make it a non-starter for me.”
Err codemadness.org 70 i 10143 Err codemadness.org 70 i 10144This is what Linus Torvalds said in a mailing list to once again express his disliking for ZFS filesystem specially over its licensing.
Err codemadness.org 70 i 10145 Err codemadness.org 70 i 10146To avoid unnecessary confusion, this is more intended for Linux distributions, kernel developers and maintainers rather than individual Linux users.
Err codemadness.org 70 i 10147
Err codemadness.org 70 i 10154Err codemadness.org 70 i 10158 Err codemadness.org 70 i 10159We successfully incorporated the Argon2 reference implementation into NetBSD/amd64 for our 2019 Google Summer of Coding project. We introduced our project here and provided some hints on how to select parameters here. For our final report, we will provide an overview of what changes were made to complete the project.
Err codemadness.org 70 i 10155 Err codemadness.org 70 i 10156The Argon2 reference implementation, available here, is available under both the Creative Commons CC0 1.0 and the Apache Public License 2.0. To import the reference implementation into src/external, we chose to use the Apache 2.0 license for this project.
Err codemadness.org 70 i 10157
Err codemadness.org 70 i 10164Err codemadness.org 70 i 10170 Err codemadness.org 70 i 10171Upstream describes LLDB as a next generation, high-performance debugger. It is built on top of LLVM/Clang toolchain, and features great integration with it. At the moment, it primarily supports debugging C, C++ and ObjC code, and there is interest in extending it to more languages.
Err codemadness.org 70 i 10165 Err codemadness.org 70 i 10166In February 2019, I have started working on LLDB, as contracted by the NetBSD Foundation. So far I've been working on reenabling continuous integration, squashing bugs, improving NetBSD core file support, extending NetBSD's ptrace interface to cover more register types and fix compat32 issues, fixing watchpoint and threading support.
Err codemadness.org 70 i 10167 Err codemadness.org 70 i 10168Throughout December I've continued working on our build bot maintenance, in particular enabling compiler-rt tests. I've revived and finished my old patch for extended register state (XState) in core dumps. I've started working on bringing proper i386 support to LLDB.
Err codemadness.org 70 i 10169
Err codemadness.org 70 i 10214Err codemadness.org 70 i 10218 Err codemadness.org 70 i 10219Now here’s something more like what I was originally expecting the content on this blog to look like. I’m in the process of moving all of our FreeBSD servers (about 30 in total) from 11.3 to 12.1. We have our own local build of the OS, and until “packaged base” gets to a state where it’s reliably usable, we’re stuck doing upgrades the old-fashioned way. I created a set of notes for myself while cranking through these upgrades and I wanted to share them since they are not really work-specific and this process isn’t very well documented for people who haven’t been doing this sort of upgrade process for 25 years.
Err codemadness.org 70 i 10215 Err codemadness.org 70 i 10216Our source and object trees are read-only exported from the build server over NFS, which causes things to be slow. /etc/make.conf and /etc/src.conf are symbolic links on all of our servers to the master copies in /usr/src so that make installworld can find the configuration parameters the system was built with.
Err codemadness.org 70 i 10217
Err codemadness.org 70 i 10224Err codemadness.org 70 i 10230 Err codemadness.org 70 i 10231This may be a little off-topic for this board (forgive me if it is, please). However, I wanted to say that I'm one of the people who works on DistroWatch (distrowatch.com) and this past week we had to deal with a server facing hardware failure. We had a discussion about whether to continue running Debian or switch to something else.
Err codemadness.org 70 i 10225 Err codemadness.org 70 i 10226The primary "something else" option turned out to be FreeBSD and it is what we eventually went with. It took a while to convert everything over from working with Debian GNU/Linux to FreeBSD 12 (some script incompatibilities, different paths, some changes to web server configuration, networking IPv6 troubles). But in the end we ended up with a good, FreeBSD-based experience.
Err codemadness.org 70 i 10227 Err codemadness.org 70 i 10228Since the transition was successful, though certainly not seamless, I thought people might want to do a Q&A on the migration process. Especially for those thinking of making the same switch.
Err codemadness.org 70 i 10229
Err codemadness.org 70 i 10238Err codemadness.org 70 i 10242 Err codemadness.org 70 i 10243iked(8) no longer automatically blocks unencrypted outbound IPv6 packets. This feature was intended to avoid accidental leakage, but in practice was found to mostly be a cause of misconfiguration.
Err codemadness.org 70 i 10239 Err codemadness.org 70 i 10240If you previously used iked(8)'s -6 flag to disable this feature, it is no longer needed and should be removed from /etc/rc.conf.local if used.
Err codemadness.org 70 i 10241
Err codemadness.org 70 i 10248Err codemadness.org 70 i 10254 Err codemadness.org 70 i 10255“Don’t use ZFS. It’s that simple. It was always more of a buzzword than anything else, I feel, and the licensing issues just make it a non-starter for me.”
Err codemadness.org 70 i 10249 Err codemadness.org 70 i 10250This is what Linus Torvalds said in a mailing list to once again express his disliking for ZFS filesystem specially over its licensing.
Err codemadness.org 70 i 10251 Err codemadness.org 70 i 10252To avoid unnecessary confusion, this is more intended for Linux distributions, kernel developers and maintainers rather than individual Linux users.
Err codemadness.org 70 i 10253
Err codemadness.org 70 i 10260Err codemadness.org 70 i 10264 Err codemadness.org 70 i 10265We successfully incorporated the Argon2 reference implementation into NetBSD/amd64 for our 2019 Google Summer of Coding project. We introduced our project here and provided some hints on how to select parameters here. For our final report, we will provide an overview of what changes were made to complete the project.
Err codemadness.org 70 i 10261 Err codemadness.org 70 i 10262The Argon2 reference implementation, available here, is available under both the Creative Commons CC0 1.0 and the Apache Public License 2.0. To import the reference implementation into src/external, we chose to use the Apache 2.0 license for this project.
Err codemadness.org 70 i 10263
Err codemadness.org 70 i 10270Err codemadness.org 70 i 10276 Err codemadness.org 70 i 10277Upstream describes LLDB as a next generation, high-performance debugger. It is built on top of LLVM/Clang toolchain, and features great integration with it. At the moment, it primarily supports debugging C, C++ and ObjC code, and there is interest in extending it to more languages.
Err codemadness.org 70 i 10271 Err codemadness.org 70 i 10272In February 2019, I have started working on LLDB, as contracted by the NetBSD Foundation. So far I've been working on reenabling continuous integration, squashing bugs, improving NetBSD core file support, extending NetBSD's ptrace interface to cover more register types and fix compat32 issues, fixing watchpoint and threading support.
Err codemadness.org 70 i 10273 Err codemadness.org 70 i 10274Throughout December I've continued working on our build bot maintenance, in particular enabling compiler-rt tests. I've revived and finished my old patch for extended register state (XState) in core dumps. I've started working on bringing proper i386 support to LLDB.
Err codemadness.org 70 i 10275
Err codemadness.org 70 i 10392Err codemadness.org 70 i 10400 Err codemadness.org 70 i 10401It’s hard to believe that 2019 is nearly over. It has been an amazing year for supporting the FreeBSD Project and community! Why do I say that? Because as I reflect over the past 12 months, I realize how many events we’ve attended all over the world, and how many lives we’ve touched in so many ways. From advocating for FreeBSD to implementing FreeBSD features, my team has been there to help make FreeBSD the best open source project and operating system out there.
Err codemadness.org 70 i 10393 Err codemadness.org 70 i 10394In 2019, we focused on supporting a few key areas where the Project needed the most help. The first area was software development. Whether it was contracting FreeBSD developers to work on projects like wifi support, to providing internal staff to quickly implement hardware workarounds, we’ve stepped in to help keep FreeBSD innovative, secure, and reliable. Software development includes supporting the tools and infrastructure that make the development process go smoothly, and we’re on it with team members heading up the Continuous Integration efforts, and actively involved in the clusteradmin and security teams.
Err codemadness.org 70 i 10395 Err codemadness.org 70 i 10396Our advocacy efforts focused on recruiting new users and contributors to the Project. We attended and participated in 38 conferences and events in 21 countries. From giving FreeBSD presentations and workshops to staffing tables, we were able to have 1:1 conversations with thousands of attendees.
Err codemadness.org 70 i 10397 Err codemadness.org 70 i 10398Our travels also provided opportunities to talk directly with FreeBSD commercial and individual users, contributors, and future FreeBSD user/contributors. We’ve seen an increase in use and interest in FreeBSD from all of these organizations and individuals. These meetings give us a chance to learn more about what organizations need and what they and other individuals are working on. The information helps inform the work we should fund.
Err codemadness.org 70 i 10399
Err codemadness.org 70 i 10406Err codemadness.org 70 i 10414 Err codemadness.org 70 i 10415wireguard (wg) is a modern vpn protocol, using the latest class of encryption algorithms while at the same time promising speed and a small code base.
Err codemadness.org 70 i 10407 Err codemadness.org 70 i 10408modern crypto and lean code are also tenants of openbsd, thus it was a no brainer to migrate my router from openvpn over to wireguard.
Err codemadness.org 70 i 10409 Err codemadness.org 70 i 10410my setup : a collection of devices, both wired and wireless, that are nat’d through my router (openbsd 6.6) out via my vpn provider azire* and out to the internet using wg-quick to start wg.
Err codemadness.org 70 i 10411 Err codemadness.org 70 i 10412running : doubtless this could be improved on, but currently i start wg manually when my router boots. this, and the nat'ing on the vpn interface mean its impossible for clients to connect to the internet without the vpn being up. as my router is on a ups and only reboots when a kernel patch requires it, it’s a compromise i can live with. run wg-quick (please replace vpn with whatever you named your wg .conf file.) and reload pf rules.
Err codemadness.org 70 i 10413
Err codemadness.org 70 i 10422Err codemadness.org 70 i 10440 Err codemadness.org 70 i 10441AWS, the cloud division of Amazon, announced in December the next generation of its ARM processors, the Graviton2. This is a custom chip design with a 7nm architecture. It is based on 64-bit ARM Neoverse cores.
Err codemadness.org 70 i 10423 Err codemadness.org 70 i 10424Compared to first-generation Graviton processors (A1), today’s new chips should deliver up to 7x the performance of A1 instances in some cases. Floating point performance is now twice as fast. There are additional memory channels and cache speed memory access should be much faster.
Err codemadness.org 70 i 10425 Err codemadness.org 70 i 10426The company is working on three types of Graviton2 EC2 instances that should be available soon. Instances with a “g” suffix are powered by Graviton2 chips. If they have a “d” suffix, it also means that they have NVMe local storage.
Err codemadness.org 70 i 10427 Err codemadness.org 70 i 10428Err codemadness.org 70 i 10429
Err codemadness.org 70 i 10433 Err codemadness.org 70 i 10434- Err codemadness.org 70 i 10430
General-purpose instances (M6g and M6gd)
- Err codemadness.org 70 i 10431
Compute-optimized instances (C6g and C6gd)
- Err codemadness.org 70 i 10432
Memory-optimized instances (R6g and R6gd)
You can choose instances with up to 64 vCPUs, 512 GiB of memory and 25 Gbps networking.
Err codemadness.org 70 i 10435 Err codemadness.org 70 i 10436And you can see that ARM-powered servers are not just a fad. AWS already promises a 40% better price/performance ratio with ARM-based instances when you compare them with x86-based instances.
Err codemadness.org 70 i 10437 Err codemadness.org 70 i 10438AWS has been working with operating system vendors and independent software vendors to help them release software that runs on ARM. ARM-based EC2 instances support Amazon Linux 2, Ubuntu, Red Hat, SUSE, Fedora, Debian and FreeBSD. It also works with multiple container services (Docker, Amazon ECS, and Amazon Elastic Kubernetes Service).
Err codemadness.org 70 i 10439
Err codemadness.org 70 i 10450Err codemadness.org 70 i 10454 Err codemadness.org 70 i 10455The pkgsrc developers are proud to announce the 65th quarterly release of pkgsrc, the cross-platform packaging system. pkgsrc is available with more than 20,000 packages, running on 23 separate platforms; more information on pkgsrc itself is available at https://www.pkgsrc.org/
Err codemadness.org 70 i 10451 Err codemadness.org 70 i 10452In total, 190 packages were added, 96 packages were removed, and 1,868 package updates (to 1388 unique packages) were processed since the pkgsrc-2019Q3 release. As usual, a large number of updates and additions were processed for packages for go (14), guile (11), perl (170), php (10), python (426), and ruby (110). This continues pkgsrc's tradition of adding useful packages, updating many packages to more current versions, and pruning unmaintained packages that are believed to have essentially no users.
Err codemadness.org 70 i 10453
Err codemadness.org 70 i 10460Err codemadness.org 70 i 10468 Err codemadness.org 70 i 10469I fell in love with a dead keyboard layout.
Err codemadness.org 70 i 10461 Err codemadness.org 70 i 10462A decade or so ago while helping a friends father clean out an old building, we came across an ancient Sun Microsystems server. We found it curious. Everything about it was different from what we were used to. The command line was black on white, the connectors strange and foreign, and the keyboard layout was bizarre.
Err codemadness.org 70 i 10463 Err codemadness.org 70 i 10464We never did much with it; turning it on made all the lights in his home dim, and our joint knowledge of UNIX was nonexistent. It sat in his bedroom for years supporting his television at the foot of his bed.
Err codemadness.org 70 i 10465 Err codemadness.org 70 i 10466I never forgot that keyboard though. The thought that there was this alternative layout out there seemed intriguing to me.
Err codemadness.org 70 i 10467
Err codemadness.org 70 i 10474Err codemadness.org 70 i 10480 Err codemadness.org 70 i 10481Last night I had a need to put together a new OpenBSD machine. Since I already use DigitalOcean for one of my public DNS servers I wanted to use them for this need but sadly like all too many of the cloud providers they don't support OpenBSD. Now they do support FreeBSD and I found a couple writeups that show how to use FreeBSD as a shim to install OpenBSD.
Err codemadness.org 70 i 10475 Err codemadness.org 70 i 10476They are both sort of old at this point and with OpenBSD 6.6 out I ran into a bit of a snag. The default these days is to use a GPT partition table to enable EFI booting. This is generally pretty sane but it looks to me like the FreeBSD droplet doesn't support this. After the installer rebooted the VM failed to boot, being unable to find the bootloader.
Err codemadness.org 70 i 10477 Err codemadness.org 70 i 10478Thankfully DigitalOcean has a recovery ISO that you can boot by simply switching to it and powering off and then on your Droplet.
Err codemadness.org 70 i 10479
Err codemadness.org 70 i 10525Err codemadness.org 70 i 10533 Err codemadness.org 70 i 10534It’s hard to believe that 2019 is nearly over. It has been an amazing year for supporting the FreeBSD Project and community! Why do I say that? Because as I reflect over the past 12 months, I realize how many events we’ve attended all over the world, and how many lives we’ve touched in so many ways. From advocating for FreeBSD to implementing FreeBSD features, my team has been there to help make FreeBSD the best open source project and operating system out there.
Err codemadness.org 70 i 10526 Err codemadness.org 70 i 10527In 2019, we focused on supporting a few key areas where the Project needed the most help. The first area was software development. Whether it was contracting FreeBSD developers to work on projects like wifi support, to providing internal staff to quickly implement hardware workarounds, we’ve stepped in to help keep FreeBSD innovative, secure, and reliable. Software development includes supporting the tools and infrastructure that make the development process go smoothly, and we’re on it with team members heading up the Continuous Integration efforts, and actively involved in the clusteradmin and security teams.
Err codemadness.org 70 i 10528 Err codemadness.org 70 i 10529Our advocacy efforts focused on recruiting new users and contributors to the Project. We attended and participated in 38 conferences and events in 21 countries. From giving FreeBSD presentations and workshops to staffing tables, we were able to have 1:1 conversations with thousands of attendees.
Err codemadness.org 70 i 10530 Err codemadness.org 70 i 10531Our travels also provided opportunities to talk directly with FreeBSD commercial and individual users, contributors, and future FreeBSD user/contributors. We’ve seen an increase in use and interest in FreeBSD from all of these organizations and individuals. These meetings give us a chance to learn more about what organizations need and what they and other individuals are working on. The information helps inform the work we should fund.
Err codemadness.org 70 i 10532
Err codemadness.org 70 i 10539Err codemadness.org 70 i 10547 Err codemadness.org 70 i 10548wireguard (wg) is a modern vpn protocol, using the latest class of encryption algorithms while at the same time promising speed and a small code base.
Err codemadness.org 70 i 10540 Err codemadness.org 70 i 10541modern crypto and lean code are also tenants of openbsd, thus it was a no brainer to migrate my router from openvpn over to wireguard.
Err codemadness.org 70 i 10542 Err codemadness.org 70 i 10543my setup : a collection of devices, both wired and wireless, that are nat’d through my router (openbsd 6.6) out via my vpn provider azire* and out to the internet using wg-quick to start wg.
Err codemadness.org 70 i 10544 Err codemadness.org 70 i 10545running : doubtless this could be improved on, but currently i start wg manually when my router boots. this, and the nat'ing on the vpn interface mean its impossible for clients to connect to the internet without the vpn being up. as my router is on a ups and only reboots when a kernel patch requires it, it’s a compromise i can live with. run wg-quick (please replace vpn with whatever you named your wg .conf file.) and reload pf rules.
Err codemadness.org 70 i 10546
Err codemadness.org 70 i 10555Err codemadness.org 70 i 10573 Err codemadness.org 70 i 10574AWS, the cloud division of Amazon, announced in December the next generation of its ARM processors, the Graviton2. This is a custom chip design with a 7nm architecture. It is based on 64-bit ARM Neoverse cores.
Err codemadness.org 70 i 10556 Err codemadness.org 70 i 10557Compared to first-generation Graviton processors (A1), today’s new chips should deliver up to 7x the performance of A1 instances in some cases. Floating point performance is now twice as fast. There are additional memory channels and cache speed memory access should be much faster.
Err codemadness.org 70 i 10558 Err codemadness.org 70 i 10559The company is working on three types of Graviton2 EC2 instances that should be available soon. Instances with a “g” suffix are powered by Graviton2 chips. If they have a “d” suffix, it also means that they have NVMe local storage.
Err codemadness.org 70 i 10560 Err codemadness.org 70 i 10561Err codemadness.org 70 i 10562
Err codemadness.org 70 i 10566 Err codemadness.org 70 i 10567- Err codemadness.org 70 i 10563
General-purpose instances (M6g and M6gd)
- Err codemadness.org 70 i 10564
Compute-optimized instances (C6g and C6gd)
- Err codemadness.org 70 i 10565
Memory-optimized instances (R6g and R6gd)
You can choose instances with up to 64 vCPUs, 512 GiB of memory and 25 Gbps networking.
Err codemadness.org 70 i 10568 Err codemadness.org 70 i 10569And you can see that ARM-powered servers are not just a fad. AWS already promises a 40% better price/performance ratio with ARM-based instances when you compare them with x86-based instances.
Err codemadness.org 70 i 10570 Err codemadness.org 70 i 10571AWS has been working with operating system vendors and independent software vendors to help them release software that runs on ARM. ARM-based EC2 instances support Amazon Linux 2, Ubuntu, Red Hat, SUSE, Fedora, Debian and FreeBSD. It also works with multiple container services (Docker, Amazon ECS, and Amazon Elastic Kubernetes Service).
Err codemadness.org 70 i 10572
Err codemadness.org 70 i 10583Err codemadness.org 70 i 10587 Err codemadness.org 70 i 10588The pkgsrc developers are proud to announce the 65th quarterly release of pkgsrc, the cross-platform packaging system. pkgsrc is available with more than 20,000 packages, running on 23 separate platforms; more information on pkgsrc itself is available at https://www.pkgsrc.org/
Err codemadness.org 70 i 10584 Err codemadness.org 70 i 10585In total, 190 packages were added, 96 packages were removed, and 1,868 package updates (to 1388 unique packages) were processed since the pkgsrc-2019Q3 release. As usual, a large number of updates and additions were processed for packages for go (14), guile (11), perl (170), php (10), python (426), and ruby (110). This continues pkgsrc's tradition of adding useful packages, updating many packages to more current versions, and pruning unmaintained packages that are believed to have essentially no users.
Err codemadness.org 70 i 10586
Err codemadness.org 70 i 10593Err codemadness.org 70 i 10601 Err codemadness.org 70 i 10602I fell in love with a dead keyboard layout.
Err codemadness.org 70 i 10594 Err codemadness.org 70 i 10595A decade or so ago while helping a friends father clean out an old building, we came across an ancient Sun Microsystems server. We found it curious. Everything about it was different from what we were used to. The command line was black on white, the connectors strange and foreign, and the keyboard layout was bizarre.
Err codemadness.org 70 i 10596 Err codemadness.org 70 i 10597We never did much with it; turning it on made all the lights in his home dim, and our joint knowledge of UNIX was nonexistent. It sat in his bedroom for years supporting his television at the foot of his bed.
Err codemadness.org 70 i 10598 Err codemadness.org 70 i 10599I never forgot that keyboard though. The thought that there was this alternative layout out there seemed intriguing to me.
Err codemadness.org 70 i 10600
Err codemadness.org 70 i 10607Err codemadness.org 70 i 10613 Err codemadness.org 70 i 10614Last night I had a need to put together a new OpenBSD machine. Since I already use DigitalOcean for one of my public DNS servers I wanted to use them for this need but sadly like all too many of the cloud providers they don't support OpenBSD. Now they do support FreeBSD and I found a couple writeups that show how to use FreeBSD as a shim to install OpenBSD.
Err codemadness.org 70 i 10608 Err codemadness.org 70 i 10609They are both sort of old at this point and with OpenBSD 6.6 out I ran into a bit of a snag. The default these days is to use a GPT partition table to enable EFI booting. This is generally pretty sane but it looks to me like the FreeBSD droplet doesn't support this. After the installer rebooted the VM failed to boot, being unable to find the bootloader.
Err codemadness.org 70 i 10610 Err codemadness.org 70 i 10611Thankfully DigitalOcean has a recovery ISO that you can boot by simply switching to it and powering off and then on your Droplet.
Err codemadness.org 70 i 10612
Err codemadness.org 70 i 10743Err codemadness.org 70 i 10749 Err codemadness.org 70 i 10750Due to the Linux kernel rapidly proceeding down an unstable path, we are planning on implementing a completely new OS derived from several BSD implementations.
Err codemadness.org 70 i 10744 Err codemadness.org 70 i 10745This was not an easy decision to make, but we wish to use our time and resources to create a viable alternative to the current operating system trends which are actively seeking to undermine user choice and freedom.
Err codemadness.org 70 i 10746 Err codemadness.org 70 i 10747This will not be a "distro", but a hard fork of the OpenBSD kernel and userspace including new code written under GPLv3 and LGPLv3 to replace GPL-incompatible parts and non-free ones.
Err codemadness.org 70 i 10748
Err codemadness.org 70 i 10763Err codemadness.org 70 i 10767 Err codemadness.org 70 i 10768Future versions of Hyperbola will be using HyperbolaBSD which will have the new kernel, userspace and not be ABI compatible with previous versions.
Err codemadness.org 70 i 10764 Err codemadness.org 70 i 10765HyperbolaBSD is intended to be modular and minimalist so other projects will be able to re-use the code under free license.
Err codemadness.org 70 i 10766
Err codemadness.org 70 i 10777Err codemadness.org 70 i 10783 Err codemadness.org 70 i 10784After graduating college, I am moving from Brooklyn, NY to Redmond, WA (guess where I got a job). I always wanted to re-do my OPNsense firewall (currently a HP T730) with stock FreeBSD and IPFW’s in-kernel NAT.
Err codemadness.org 70 i 10778 Err codemadness.org 70 i 10779Why IPFW? Benchmarks have shown IPFW to be faster which is especially good for my Tor relay, and because I can! However, one downside of IPFW is less documentation vs PF, even less without natd (which we’re not using), and this took me time to figure this out.
Err codemadness.org 70 i 10780 Err codemadness.org 70 i 10781But since my T730 is already packed, I am testing this on a old PC with two NICs, and my laptop [1] as a client with an USB-to-Ethernet adapter.
Err codemadness.org 70 i 10782
Err codemadness.org 70 i 10791Err codemadness.org 70 i 10793 Err codemadness.org 70 i 10794This is just a heads up that the Wayland option is now turned on by
Err codemadness.org 70 i 10792
default for NetBSD 9 and Linux in cases where it peacefully coexists
Err codemadness.org 70
i 10795 with X11.
Err codemadness.org 70 i 10809Err codemadness.org 70 i 10815 Err codemadness.org 70 i 10816The WebRTC option has also been enabled by default on NetBSD 9 for two Firefox versions: www/firefox, www/firefox68
Err codemadness.org 70 i 10810 Err codemadness.org 70 i 10811Please keep me informed of any fallout. Hopefully, there will be none.
Err codemadness.org 70 i 10812 Err codemadness.org 70 i 10813If you want to try out Wayland-related things on NetBSD 9, wm/velox/MESSAGE may be interesting for you.
Err codemadness.org 70 i 10814
Err codemadness.org 70 i 10821Err codemadness.org 70 i 10827 Err codemadness.org 70 i 10828Upstream describes LLDB as a next generation, high-performance debugger. It is built on top of LLVM/Clang toolchain, and features great integration with it. At the moment, it primarily supports debugging C, C++ and ObjC code, and there is interest in extending it to more languages.
Err codemadness.org 70 i 10822 Err codemadness.org 70 i 10823In February, I have started working on LLDB, as contracted by the NetBSD Foundation. So far I've been working on reenabling continuous integration, squashing bugs, improving NetBSD core file support, extending NetBSD's ptrace interface to cover more register types and fix compat32 issues and fixing watchpoint support. Then, I've started working on improving thread support which is taking longer than expected. You can read more about that in my September 2019 report.
Err codemadness.org 70 i 10824 Err codemadness.org 70 i 10825So far the number of issues uncovered while enabling proper threading support has stopped me from merging the work-in-progress patches. However, I've finally reached the point where I believe that the current work can be merged and the remaining problems can be resolved afterwards. More on that and other LLVM-related events happening during the last month in this report.
Err codemadness.org 70 i 10826
Err codemadness.org 70 i 10833Err codemadness.org 70 i 10839 Err codemadness.org 70 i 10840Hardware backed keys can be generated using "ssh-keygen -t ecdsa-sk" (or "ed25519-sk" if your token supports it). Many tokens require to be touched/tapped to confirm this step.
Err codemadness.org 70 i 10834 Err codemadness.org 70 i 10835You'll get a public/private keypair back as usual, except in this case, the private key file does not contain a highly-sensitive private key but instead holds a "key handle" that is used by the security key to derive the real private key at signing time.
Err codemadness.org 70 i 10836 Err codemadness.org 70 i 10837So, stealing a copy of the private key file without also stealing your security key (or access to it) should not give the attacker anything.
Err codemadness.org 70 i 10838
Err codemadness.org 70 i 10900Err codemadness.org 70 i 10906 Err codemadness.org 70 i 10907Due to the Linux kernel rapidly proceeding down an unstable path, we are planning on implementing a completely new OS derived from several BSD implementations.
Err codemadness.org 70 i 10901 Err codemadness.org 70 i 10902This was not an easy decision to make, but we wish to use our time and resources to create a viable alternative to the current operating system trends which are actively seeking to undermine user choice and freedom.
Err codemadness.org 70 i 10903 Err codemadness.org 70 i 10904This will not be a "distro", but a hard fork of the OpenBSD kernel and userspace including new code written under GPLv3 and LGPLv3 to replace GPL-incompatible parts and non-free ones.
Err codemadness.org 70 i 10905
Err codemadness.org 70 i 10920Err codemadness.org 70 i 10924 Err codemadness.org 70 i 10925Future versions of Hyperbola will be using HyperbolaBSD which will have the new kernel, userspace and not be ABI compatible with previous versions.
Err codemadness.org 70 i 10921 Err codemadness.org 70 i 10922HyperbolaBSD is intended to be modular and minimalist so other projects will be able to re-use the code under free license.
Err codemadness.org 70 i 10923
Err codemadness.org 70 i 10934Err codemadness.org 70 i 10940 Err codemadness.org 70 i 10941After graduating college, I am moving from Brooklyn, NY to Redmond, WA (guess where I got a job). I always wanted to re-do my OPNsense firewall (currently a HP T730) with stock FreeBSD and IPFW’s in-kernel NAT.
Err codemadness.org 70 i 10935 Err codemadness.org 70 i 10936Why IPFW? Benchmarks have shown IPFW to be faster which is especially good for my Tor relay, and because I can! However, one downside of IPFW is less documentation vs PF, even less without natd (which we’re not using), and this took me time to figure this out.
Err codemadness.org 70 i 10937 Err codemadness.org 70 i 10938But since my T730 is already packed, I am testing this on a old PC with two NICs, and my laptop [1] as a client with an USB-to-Ethernet adapter.
Err codemadness.org 70 i 10939
Err codemadness.org 70 i 10948Err codemadness.org 70 i 10950 Err codemadness.org 70 i 10951This is just a heads up that the Wayland option is now turned on by
Err codemadness.org 70 i 10949
default for NetBSD 9 and Linux in cases where it peacefully coexists
Err codemadness.org 70
i 10952 with X11.
Err codemadness.org 70 i 10966Err codemadness.org 70 i 10972 Err codemadness.org 70 i 10973The WebRTC option has also been enabled by default on NetBSD 9 for two Firefox versions: www/firefox, www/firefox68
Err codemadness.org 70 i 10967 Err codemadness.org 70 i 10968Please keep me informed of any fallout. Hopefully, there will be none.
Err codemadness.org 70 i 10969 Err codemadness.org 70 i 10970If you want to try out Wayland-related things on NetBSD 9, wm/velox/MESSAGE may be interesting for you.
Err codemadness.org 70 i 10971
Err codemadness.org 70 i 10978Err codemadness.org 70 i 10984 Err codemadness.org 70 i 10985Upstream describes LLDB as a next generation, high-performance debugger. It is built on top of LLVM/Clang toolchain, and features great integration with it. At the moment, it primarily supports debugging C, C++ and ObjC code, and there is interest in extending it to more languages.
Err codemadness.org 70 i 10979 Err codemadness.org 70 i 10980In February, I have started working on LLDB, as contracted by the NetBSD Foundation. So far I've been working on reenabling continuous integration, squashing bugs, improving NetBSD core file support, extending NetBSD's ptrace interface to cover more register types and fix compat32 issues and fixing watchpoint support. Then, I've started working on improving thread support which is taking longer than expected. You can read more about that in my September 2019 report.
Err codemadness.org 70 i 10981 Err codemadness.org 70 i 10982So far the number of issues uncovered while enabling proper threading support has stopped me from merging the work-in-progress patches. However, I've finally reached the point where I believe that the current work can be merged and the remaining problems can be resolved afterwards. More on that and other LLVM-related events happening during the last month in this report.
Err codemadness.org 70 i 10983
Err codemadness.org 70 i 10990Err codemadness.org 70 i 10996 Err codemadness.org 70 i 10997Hardware backed keys can be generated using "ssh-keygen -t ecdsa-sk" (or "ed25519-sk" if your token supports it). Many tokens require to be touched/tapped to confirm this step.
Err codemadness.org 70 i 10991 Err codemadness.org 70 i 10992You'll get a public/private keypair back as usual, except in this case, the private key file does not contain a highly-sensitive private key but instead holds a "key handle" that is used by the security key to derive the real private key at signing time.
Err codemadness.org 70 i 10993 Err codemadness.org 70 i 10994So, stealing a copy of the private key file without also stealing your security key (or access to it) should not give the attacker anything.
Err codemadness.org 70 i 10995
Err codemadness.org 70 i 11138Err codemadness.org 70 i 11146 Err codemadness.org 70 i 11147How much better could things actually be if we abandoned the enterprise development model?
Err codemadness.org 70 i 11139 Err codemadness.org 70 i 11140Next I will compare this enterprise development approach with non-enterprise development - projects such as OpenBSD, which do not hesitate to introduce ABI breaking changes to improve the codebase.
Err codemadness.org 70 i 11141 Err codemadness.org 70 i 11142One of the most commonly referred to pillars of the project's philosophy has long been its emphasis on clean functional code. Any code which makes it into OpenBSD is subject to ongoing aggressive audits for deprecated, or otherwise unmaintained code in order to reduce cruft and attack surface. Additionally the project creator, Theo de Raadt, and his team of core developers engage in ongoing development for proactive mitigations for various attack classes many of which are directly adopted by various multi-platform userland applications as well as the operating systems themselves (Windows, Linux, and the other BSDs). Frequently it is the case that introducing new features (not just deprecating old ones) introduces new incompatibilities against previously functional binaries compiled for OpenBSD.
Err codemadness.org 70 i 11143 Err codemadness.org 70 i 11144To prevent the sort of kernel memory bloat that has plagued so many other operating systems for years, the project enforces a hard ceiling on the number of lines of code that can ever be in ring 0 at a given time. Current estimates guess the number of bugs per line of code in the Linux kernel are around 1 bug per every 10,000 lines of code. Think of this in the context of the scope creep seen in the Linux kernel (which if I recall correctly is currently at around 100,000,000 lines of code), as well as the Windows NT kernel (500,000,000 lines of code) and you quickly begin to understand how adding more and more functionality into the most privileged components of the operating system without first removing old components begins to add up in terms of the drastic difference seen between these systems in the number of zero day exploits caught in the wild respectively.
Err codemadness.org 70 i 11145
Err codemadness.org 70 i 11152Err codemadness.org 70 i 11162 Err codemadness.org 70 i 11163Unix is beautiful. Allow me to paint some happy little trees for you. I’m not going to explain a bunch of commands – that’s boring, and there’s a million tutorials on the web doing that already. I’m going to leave you with the ability to reason about the system.
Err codemadness.org 70 i 11153 Err codemadness.org 70 i 11154Every fancy thing you want done is one google search away.
Err codemadness.org 70 i 11155 Err codemadness.org 70 i 11156But understanding why the solution does what you want is not the same.
Err codemadness.org 70 i 11157 Err codemadness.org 70 i 11158That’s what gives you real power, the power to not be afraid.
Err codemadness.org 70 i 11159 Err codemadness.org 70 i 11160And since it rhymes, it must be true.
Err codemadness.org 70 i 11161
Err codemadness.org 70 i 11170Err codemadness.org 70 i 11178 Err codemadness.org 70 i 11179For those of you interested in AMD's new Ryzen Threadripper 3960X/3970X processors with TRX40 motherboards for running FreeBSD, the experience in our initial testing has been surprisingly pleasant. In fact, it works out-of-the-box which one could argue is better than the current Linux support that needs the MCE workaround for booting. Here are some benchmarks of FreeBSD 12.1 on the Threadripper 3970X compared to Linux and Windows for this new HEDT platform.
Err codemadness.org 70 i 11171 Err codemadness.org 70 i 11172It was refreshing to see FreeBSD 12.1 booting and running just fine with the Ryzen Threadripper 3970X 32-core/64-thread processor from the ASUS ROG ZENITH II EXTREME motherboard and all core functionality working including the PCIe 4.0 NVMe SSD storage, onboard networking, etc. The system was running with 4 x 16GB DDR4-3600 memory, 1TB Corsair Force MP600 NVMe SSD, and Radeon RX 580 graphics. It was refreshing to see FreeBSD 12.1 running well with this high-end AMD Threadripper system considering Linux even needed a boot workaround.
Err codemadness.org 70 i 11173 Err codemadness.org 70 i 11174While the FreeBSD 12.1 experience was trouble-free with the ASUS TRX40 motherboard (ROG Zenith II Extreme) and AMD Ryzen Threadripper 3970X, DragonFlyBSD unfortunately was not. Both DragonFlyBSD 5.6.2 stable and the DragonFlyBSD daily development snapshot from last week were yielding a panic on boot. So with that, DragonFlyBSD wasn't tested for this Threadripper 3970X comparison but just FreeBSD 12.1.
Err codemadness.org 70 i 11175 Err codemadness.org 70 i 11176FreeBSD 12.1 on the Threadripper 3970X was benchmarked both with its default LLVM Clang 8.0.1 compiler and again with GCC 9.2 from ports for ruling out compiler differences. The FreeBSD 12.1 performance was compared to last week's Windows 10 vs. Linux benchmarks with the same system.
Err codemadness.org 70 i 11177
Err codemadness.org 70 i 11184Err codemadness.org 70 i 11190 Err codemadness.org 70 i 11191BSDCan 2020 will be held 5-6 (Fri-Sat) June, 2020 in Ottawa, at the University of Ottawa. It will be preceded by two days of tutorials on 3-4 June (Wed-Thu).
Err codemadness.org 70 i 11185 Err codemadness.org 70 i 11186NOTE the change of month in 2020 back to June Also: do not miss out on the Goat BOF on Tuesday 2 June.
Err codemadness.org 70 i 11187 Err codemadness.org 70 i 11188We are now accepting proposals for talks. The talks should be designed with a very strong technical content bias. Proposals of a business development or marketing nature are not appropriate for this venue.
Err codemadness.org 70 i 11189
Err codemadness.org 70 i 11196Err codemadness.org 70 i 11198 Err codemadness.org 70 i 11199If you are doing something interesting with a BSD operating system, please submit a proposal. Whether you are developing a very complex system using BSD as the foundation, or helping others and have a story to tell about how BSD played a role, we want to hear about your experience. People using BSD as a platform for research are also encouraged to submit a proposal. Possible topics include:
Err codemadness.org 70 i 11197
Err codemadness.org 70 i 11209Err codemadness.org 70 i 11213 Err codemadness.org 70 i 11214From the BSDCan website, the Archives section will allow you to review the wide variety of past BSDCan presentations as further examples.
Err codemadness.org 70 i 11210 Err codemadness.org 70 i 11211Both users and developers are encouraged to share their experiences.
Err codemadness.org 70 i 11212
Err codemadness.org 70 i 11219Err codemadness.org 70 i 11237 Err codemadness.org 70 i 112382019 has been an extremely productive year with regards to HardenedBSD's infrastructure. Several opportunities aligned themselves in such a way as to open a door for a near-complete rebuild with a vast expansion.
Err codemadness.org 70 i 11220 Err codemadness.org 70 i 11221The last few months especially have seen a major expansion of our infrastructure. We obtained a number of to-be-retired Dell R410 servers. The crash of our nightly build server provided the opportunity to deploy these R410 servers, doubling our build capacity.
Err codemadness.org 70 i 11222 Err codemadness.org 70 i 11223My available time to spend on HardenedBSD has decreased compared to this time last year. As part of rebuilding our infrastructure, I wanted to enable the community to be able to contribute. I'm structuring the work such that help is just a pull request away. Those in the HardenedBSD community who want to contribute to the infrastructure work can simply open a pull request. I'll review the code, and deploy it after a successful review. Users/contributors don't need access to our servers in order to improve them.
Err codemadness.org 70 i 11224 Err codemadness.org 70 i 11225My primary goal for the rest of 2019 and into 2020 is to become fully self-hosted, with the sole exception of email. I want to transition the source-of-truth git repos to our own infrastructure. We will still provide a read-only mirror on GitHub.
Err codemadness.org 70 i 11226 Err codemadness.org 70 i 11227As I develop this infrastructure, I'm doing so with human rights in mind. HardenedBSD is in a very unique position. In 2020, I plan to provide production Tor Onion Services for the various bits of our infrastructure. HardenedBSD will provide access to its various internal services to its developers and contributors. The entire development lifecycle, going from dev to prod, will be able to happen over Tor.
Err codemadness.org 70 i 11228 Err codemadness.org 70 i 11229Transparency will be key moving forward. Logs for the auto-sync script are now published directly to GitHub. Build logs will be, soon, too. Logs of all automated processes, and the code for those processes, will be tracked publicly via git. This will be especially crucial for development over Tor.
Err codemadness.org 70 i 11230 Err codemadness.org 70 i 11231Integrating Tor into our infrastructure so deeply increases risk and maintenance burden. However, I believe that through added transparency, we will be able to mitigate risk. Periodic audits will need to be performed and published.
Err codemadness.org 70 i 11232 Err codemadness.org 70 i 11233I hope to migrate HardenedBSD's site away from Drupal to a static site generator. We don't really need the dynamic capabilities Drupal gives us. The many security issues Drupal and PHP both bring also leave much to be desired.
Err codemadness.org 70 i 11234 Err codemadness.org 70 i 11235So, that's about it. I spent the last few months of 2019 laying the foundation for a successful 2020. I'm excited to see how the project grows.
Err codemadness.org 70 i 11236
Err codemadness.org 70 i 11284Err codemadness.org 70 i 11292 Err codemadness.org 70 i 11293How much better could things actually be if we abandoned the enterprise development model?
Err codemadness.org 70 i 11285 Err codemadness.org 70 i 11286Next I will compare this enterprise development approach with non-enterprise development - projects such as OpenBSD, which do not hesitate to introduce ABI breaking changes to improve the codebase.
Err codemadness.org 70 i 11287 Err codemadness.org 70 i 11288One of the most commonly referred to pillars of the project's philosophy has long been its emphasis on clean functional code. Any code which makes it into OpenBSD is subject to ongoing aggressive audits for deprecated, or otherwise unmaintained code in order to reduce cruft and attack surface. Additionally the project creator, Theo de Raadt, and his team of core developers engage in ongoing development for proactive mitigations for various attack classes many of which are directly adopted by various multi-platform userland applications as well as the operating systems themselves (Windows, Linux, and the other BSDs). Frequently it is the case that introducing new features (not just deprecating old ones) introduces new incompatibilities against previously functional binaries compiled for OpenBSD.
Err codemadness.org 70 i 11289 Err codemadness.org 70 i 11290To prevent the sort of kernel memory bloat that has plagued so many other operating systems for years, the project enforces a hard ceiling on the number of lines of code that can ever be in ring 0 at a given time. Current estimates guess the number of bugs per line of code in the Linux kernel are around 1 bug per every 10,000 lines of code. Think of this in the context of the scope creep seen in the Linux kernel (which if I recall correctly is currently at around 100,000,000 lines of code), as well as the Windows NT kernel (500,000,000 lines of code) and you quickly begin to understand how adding more and more functionality into the most privileged components of the operating system without first removing old components begins to add up in terms of the drastic difference seen between these systems in the number of zero day exploits caught in the wild respectively.
Err codemadness.org 70 i 11291
Err codemadness.org 70 i 11298Err codemadness.org 70 i 11308 Err codemadness.org 70 i 11309Unix is beautiful. Allow me to paint some happy little trees for you. I’m not going to explain a bunch of commands – that’s boring, and there’s a million tutorials on the web doing that already. I’m going to leave you with the ability to reason about the system.
Err codemadness.org 70 i 11299 Err codemadness.org 70 i 11300Every fancy thing you want done is one google search away.
Err codemadness.org 70 i 11301 Err codemadness.org 70 i 11302But understanding why the solution does what you want is not the same.
Err codemadness.org 70 i 11303 Err codemadness.org 70 i 11304That’s what gives you real power, the power to not be afraid.
Err codemadness.org 70 i 11305 Err codemadness.org 70 i 11306And since it rhymes, it must be true.
Err codemadness.org 70 i 11307
Err codemadness.org 70 i 11316Err codemadness.org 70 i 11324 Err codemadness.org 70 i 11325For those of you interested in AMD's new Ryzen Threadripper 3960X/3970X processors with TRX40 motherboards for running FreeBSD, the experience in our initial testing has been surprisingly pleasant. In fact, it works out-of-the-box which one could argue is better than the current Linux support that needs the MCE workaround for booting. Here are some benchmarks of FreeBSD 12.1 on the Threadripper 3970X compared to Linux and Windows for this new HEDT platform.
Err codemadness.org 70 i 11317 Err codemadness.org 70 i 11318It was refreshing to see FreeBSD 12.1 booting and running just fine with the Ryzen Threadripper 3970X 32-core/64-thread processor from the ASUS ROG ZENITH II EXTREME motherboard and all core functionality working including the PCIe 4.0 NVMe SSD storage, onboard networking, etc. The system was running with 4 x 16GB DDR4-3600 memory, 1TB Corsair Force MP600 NVMe SSD, and Radeon RX 580 graphics. It was refreshing to see FreeBSD 12.1 running well with this high-end AMD Threadripper system considering Linux even needed a boot workaround.
Err codemadness.org 70 i 11319 Err codemadness.org 70 i 11320While the FreeBSD 12.1 experience was trouble-free with the ASUS TRX40 motherboard (ROG Zenith II Extreme) and AMD Ryzen Threadripper 3970X, DragonFlyBSD unfortunately was not. Both DragonFlyBSD 5.6.2 stable and the DragonFlyBSD daily development snapshot from last week were yielding a panic on boot. So with that, DragonFlyBSD wasn't tested for this Threadripper 3970X comparison but just FreeBSD 12.1.
Err codemadness.org 70 i 11321 Err codemadness.org 70 i 11322FreeBSD 12.1 on the Threadripper 3970X was benchmarked both with its default LLVM Clang 8.0.1 compiler and again with GCC 9.2 from ports for ruling out compiler differences. The FreeBSD 12.1 performance was compared to last week's Windows 10 vs. Linux benchmarks with the same system.
Err codemadness.org 70 i 11323
Err codemadness.org 70 i 11330Err codemadness.org 70 i 11336 Err codemadness.org 70 i 11337BSDCan 2020 will be held 5-6 (Fri-Sat) June, 2020 in Ottawa, at the University of Ottawa. It will be preceded by two days of tutorials on 3-4 June (Wed-Thu).
Err codemadness.org 70 i 11331 Err codemadness.org 70 i 11332NOTE the change of month in 2020 back to June Also: do not miss out on the Goat BOF on Tuesday 2 June.
Err codemadness.org 70 i 11333 Err codemadness.org 70 i 11334We are now accepting proposals for talks. The talks should be designed with a very strong technical content bias. Proposals of a business development or marketing nature are not appropriate for this venue.
Err codemadness.org 70 i 11335
Err codemadness.org 70 i 11342Err codemadness.org 70 i 11344 Err codemadness.org 70 i 11345If you are doing something interesting with a BSD operating system, please submit a proposal. Whether you are developing a very complex system using BSD as the foundation, or helping others and have a story to tell about how BSD played a role, we want to hear about your experience. People using BSD as a platform for research are also encouraged to submit a proposal. Possible topics include:
Err codemadness.org 70 i 11343
Err codemadness.org 70 i 11355Err codemadness.org 70 i 11359 Err codemadness.org 70 i 11360From the BSDCan website, the Archives section will allow you to review the wide variety of past BSDCan presentations as further examples.
Err codemadness.org 70 i 11356 Err codemadness.org 70 i 11357Both users and developers are encouraged to share their experiences.
Err codemadness.org 70 i 11358
Err codemadness.org 70 i 11365Err codemadness.org 70 i 11383 Err codemadness.org 70 i 113842019 has been an extremely productive year with regards to HardenedBSD's infrastructure. Several opportunities aligned themselves in such a way as to open a door for a near-complete rebuild with a vast expansion.
Err codemadness.org 70 i 11366 Err codemadness.org 70 i 11367The last few months especially have seen a major expansion of our infrastructure. We obtained a number of to-be-retired Dell R410 servers. The crash of our nightly build server provided the opportunity to deploy these R410 servers, doubling our build capacity.
Err codemadness.org 70 i 11368 Err codemadness.org 70 i 11369My available time to spend on HardenedBSD has decreased compared to this time last year. As part of rebuilding our infrastructure, I wanted to enable the community to be able to contribute. I'm structuring the work such that help is just a pull request away. Those in the HardenedBSD community who want to contribute to the infrastructure work can simply open a pull request. I'll review the code, and deploy it after a successful review. Users/contributors don't need access to our servers in order to improve them.
Err codemadness.org 70 i 11370 Err codemadness.org 70 i 11371My primary goal for the rest of 2019 and into 2020 is to become fully self-hosted, with the sole exception of email. I want to transition the source-of-truth git repos to our own infrastructure. We will still provide a read-only mirror on GitHub.
Err codemadness.org 70 i 11372 Err codemadness.org 70 i 11373As I develop this infrastructure, I'm doing so with human rights in mind. HardenedBSD is in a very unique position. In 2020, I plan to provide production Tor Onion Services for the various bits of our infrastructure. HardenedBSD will provide access to its various internal services to its developers and contributors. The entire development lifecycle, going from dev to prod, will be able to happen over Tor.
Err codemadness.org 70 i 11374 Err codemadness.org 70 i 11375Transparency will be key moving forward. Logs for the auto-sync script are now published directly to GitHub. Build logs will be, soon, too. Logs of all automated processes, and the code for those processes, will be tracked publicly via git. This will be especially crucial for development over Tor.
Err codemadness.org 70 i 11376 Err codemadness.org 70 i 11377Integrating Tor into our infrastructure so deeply increases risk and maintenance burden. However, I believe that through added transparency, we will be able to mitigate risk. Periodic audits will need to be performed and published.
Err codemadness.org 70 i 11378 Err codemadness.org 70 i 11379I hope to migrate HardenedBSD's site away from Drupal to a static site generator. We don't really need the dynamic capabilities Drupal gives us. The many security issues Drupal and PHP both bring also leave much to be desired.
Err codemadness.org 70 i 11380 Err codemadness.org 70 i 11381So, that's about it. I spent the last few months of 2019 laying the foundation for a successful 2020. I'm excited to see how the project grows.
Err codemadness.org 70 i 11382
Err codemadness.org 70 i 11566Err codemadness.org 70 i 11574 Err codemadness.org 70 i 11575OpenBSD uses BSD Authentication, which is made up of a variety of authentication styles. The authentication styles currently provided are:
Err codemadness.org 70 i 11573
Err codemadness.org 70 i 11567 passwd Request a password and check it against the password in the master.passwd file. See login_passwd(8).
Err codemadness.org 70 i 11568 skey Send a challenge and request a response, checking it with S/Key (tm) authentication. See login_skey(8).
Err codemadness.org 70 i 11569 yubikey Authenticate using a Yubico YubiKey token. See login_yubikey(8).
Err codemadness.org 70 i 11570 For any given style, the program /usr/libexec/auth/login_style is used to
Err codemadness.org 70 i 11571 perform the authentication. The synopsis of this program is:
Err codemadness.org 70 i 11572 /usr/libexec/auth/login_style [-v name=value] [-s service] username class
Err codemadness.org 70 i 11580Err codemadness.org 70 i 11583 Err codemadness.org 70 i 11584Err codemadness.org 70 i 11582login_passwd [-s service] [-v wheel=yes|no] [-v lastchance=yes|no] user [class] The service argument specifies which protocol to use with the invoking program. The allowed protocols are login, challenge, and response. (The challenge protocol is silently ignored but will report success as passwd-style authentication is not challenge-response based). Err codemadness.org 70 i 11581
Here are a few highlights of the new release:
Err codemadness.org 70 i 11602 Err codemadness.org 70 i 11603Err codemadness.org 70 i 11604Support for Arm AArch64 (64-bit Armv8-A) machines, including "Arm ServerReady"
Err codemadness.org 70 i 11619
Err codemadness.org 70 i 11605 compliant machines (SBBR+SBSA)
Err codemadness.org 70 i 11606 Enhanced hardware support for Armv7-A
Err codemadness.org 70 i 11607 Updated GPU drivers (e.g. support for Intel Kabylake)
Err codemadness.org 70 i 11608 Enhanced virtualization support
Err codemadness.org 70 i 11609 Support for hardware-accelerated virtualization (NVMM)
Err codemadness.org 70 i 11610 Support for Performance Monitoring Counters
Err codemadness.org 70 i 11611 Support for Kernel ASLR
Err codemadness.org 70 i 11612 Support several kernel sanitizers (KLEAK, KASAN, KUBSAN)
Err codemadness.org 70 i 11613 Support for userland sanitizers
Err codemadness.org 70 i 11614 Audit of the network stack
Err codemadness.org 70 i 11615 Many improvements in NPF
Err codemadness.org 70 i 11616 Updated ZFS
Err codemadness.org 70 i 11617 Reworked error handling and NCQ support in the SATA subsystem
Err codemadness.org 70 i 11618 Support a common framework for USB Ethernet drivers (usbnet)
More information on the RC can be found on the NetBSD 9 release page
Err codemadness.org 70 i 11636Err codemadness.org 70 i 11638 Err codemadness.org 70 i 11639Base of a FreeBSD droplet, we'll re-image our boot block device with FreeNAS iso. We'll then install FreeNAS on the second block device. Once done we're going to do the ol' switcheroo: we're going to re-image our original boot block device using the now FreeNAS-installed second block device.
Err codemadness.org 70 i 11637
Err codemadness.org 70 i 11654Err codemadness.org 70 i 11692 Err codemadness.org 70 i 11693The base system has been changed to FreeBSD 12.1-RELEASE-p1
Err codemadness.org 70 i 11680 Err codemadness.org 70 i 11681
Err codemadness.org 70 i 11655 Due to a deadlock problem, FreeBSD's unionfs has been replaced by unionfs-fuse
Err codemadness.org 70 i 11656 The GPT layout has been changed to MBR. This prevents problems with Lenovo
Err codemadness.org 70 i 11657 systems that refuse to boot from GPT if "lenovofix" is not set, and systems that
Err codemadness.org 70 i 11658 hang on boot if "lenovofix" is set.
Err codemadness.org 70 i 11659 Support for ZFS installations has been added to the NomadBSD installer.
Err codemadness.org 70 i 11660 The rc-script for setting up the network interfaces has been fixed and improved.
Err codemadness.org 70 i 11661 Support for setting the country code for the wlan device has been added.
Err codemadness.org 70 i 11662 Auto configuration for running in VirtualBox has been added.
Err codemadness.org 70 i 11663 A check for the default display has been added to the graphics configuration scripts. This fixes problems where users with Optimus have their NVIDIA card disabled, and use the integrated graphics chip instead.
Err codemadness.org 70 i 11664 NVIDIA driver version 440 has been added.
Err codemadness.org 70 i 11665 nomadbsd-dmconfig, a Qt tool for selecting the display manager theme, setting the
Err codemadness.org 70 i 11666 default user and autologin has been added.
Err codemadness.org 70 i 11667 nomadbsd-adduser, a Qt tool for added preconfigured user accounts to the system has been added.
Err codemadness.org 70 i 11668 Martin Orszulik added Czech translations to the setup and installation wizard.
Err codemadness.org 70 i 11669 The NomadBSD logo, designed by Ian Grindley, has been changed.
Err codemadness.org 70 i 11670 Support for localized error messages has been added.
Err codemadness.org 70 i 11671 Support for localizing the password prompts has been added.
Err codemadness.org 70 i 11672 Some templates for starting other DEs have been added to ~/.xinitrc.
Err codemadness.org 70 i 11673 The interfaces of nomadbsd-setup-gui and nomadbsd-install-gui have been improved.
Err codemadness.org 70 i 11674 A script that helps users to configure a multihead systems has been added.
Err codemadness.org 70 i 11675 The Xorg driver for newer Intel GPUs has been changed from "intel" to "modesetting".
Err codemadness.org 70 i 11676 /proc has been added to /etc/fstab
Err codemadness.org 70 i 11677 A D-Bus session issue has been fixed which prevented thunar from accessing samba shares.
Err codemadness.org 70 i 11678 DSBBg which allows users to change and manage wallpapers has been added.
Err codemadness.org 70 i 11679 The latest version of update_obmenu now supports auto-updating the Openbox menu. Manually updating the Openbox menu after packet (de)installation is therefore no longer needed.Support for multiple keyboard layouts has been added.
Err codemadness.org 70 i 11691
Err codemadness.org 70 i 11682 www/palemoon has been removed.
Err codemadness.org 70 i 11683 mail/thunderbird has been removed.
Err codemadness.org 70 i 11684 audio/audacity has been added.
Err codemadness.org 70 i 11685 deskutils/orage has been added.
Err codemadness.org 70 i 11686 the password manager fpm2 has been replaced by KeePassXC
Err codemadness.org 70 i 11687 mail/sylpheed has been replaced by mail/claws-mail
Err codemadness.org 70 i 11688 multimedia/simplescreenrecorder has been added.
Err codemadness.org 70 i 11689 DSBMC has been changed to DSBMC-Qt
Err codemadness.org 70 i 11690 Many small improvements and bug fixes.
Special Guest: Mariusz Zaborski.
]]> Err codemadness.org 70 i 11741Err codemadness.org 70 i 11755Err codemadness.org 70 i 11763 Err codemadness.org 70 i 11764OpenBSD uses BSD Authentication, which is made up of a variety of authentication styles. The authentication styles currently provided are:
Err codemadness.org 70 i 11762
Err codemadness.org 70 i 11756 passwd Request a password and check it against the password in the master.passwd file. See login_passwd(8).
Err codemadness.org 70 i 11757 skey Send a challenge and request a response, checking it with S/Key (tm) authentication. See login_skey(8).
Err codemadness.org 70 i 11758 yubikey Authenticate using a Yubico YubiKey token. See login_yubikey(8).
Err codemadness.org 70 i 11759 For any given style, the program /usr/libexec/auth/login_style is used to
Err codemadness.org 70 i 11760 perform the authentication. The synopsis of this program is:
Err codemadness.org 70 i 11761 /usr/libexec/auth/login_style [-v name=value] [-s service] username class
Err codemadness.org 70 i 11769Err codemadness.org 70 i 11772 Err codemadness.org 70 i 11773Err codemadness.org 70 i 11771login_passwd [-s service] [-v wheel=yes|no] [-v lastchance=yes|no] user [class] The service argument specifies which protocol to use with the invoking program. The allowed protocols are login, challenge, and response. (The challenge protocol is silently ignored but will report success as passwd-style authentication is not challenge-response based). Err codemadness.org 70 i 11770
Here are a few highlights of the new release:
Err codemadness.org 70 i 11791 Err codemadness.org 70 i 11792Err codemadness.org 70 i 11793Support for Arm AArch64 (64-bit Armv8-A) machines, including "Arm ServerReady"
Err codemadness.org 70 i 11808
Err codemadness.org 70 i 11794 compliant machines (SBBR+SBSA)
Err codemadness.org 70 i 11795 Enhanced hardware support for Armv7-A
Err codemadness.org 70 i 11796 Updated GPU drivers (e.g. support for Intel Kabylake)
Err codemadness.org 70 i 11797 Enhanced virtualization support
Err codemadness.org 70 i 11798 Support for hardware-accelerated virtualization (NVMM)
Err codemadness.org 70 i 11799 Support for Performance Monitoring Counters
Err codemadness.org 70 i 11800 Support for Kernel ASLR
Err codemadness.org 70 i 11801 Support several kernel sanitizers (KLEAK, KASAN, KUBSAN)
Err codemadness.org 70 i 11802 Support for userland sanitizers
Err codemadness.org 70 i 11803 Audit of the network stack
Err codemadness.org 70 i 11804 Many improvements in NPF
Err codemadness.org 70 i 11805 Updated ZFS
Err codemadness.org 70 i 11806 Reworked error handling and NCQ support in the SATA subsystem
Err codemadness.org 70 i 11807 Support a common framework for USB Ethernet drivers (usbnet)
More information on the RC can be found on the NetBSD 9 release page
Err codemadness.org 70 i 11825Err codemadness.org 70 i 11827 Err codemadness.org 70 i 11828Base of a FreeBSD droplet, we'll re-image our boot block device with FreeNAS iso. We'll then install FreeNAS on the second block device. Once done we're going to do the ol' switcheroo: we're going to re-image our original boot block device using the now FreeNAS-installed second block device.
Err codemadness.org 70 i 11826
Err codemadness.org 70 i 11843Err codemadness.org 70 i 11881 Err codemadness.org 70 i 11882The base system has been changed to FreeBSD 12.1-RELEASE-p1
Err codemadness.org 70 i 11869 Err codemadness.org 70 i 11870
Err codemadness.org 70 i 11844 Due to a deadlock problem, FreeBSD's unionfs has been replaced by unionfs-fuse
Err codemadness.org 70 i 11845 The GPT layout has been changed to MBR. This prevents problems with Lenovo
Err codemadness.org 70 i 11846 systems that refuse to boot from GPT if "lenovofix" is not set, and systems that
Err codemadness.org 70 i 11847 hang on boot if "lenovofix" is set.
Err codemadness.org 70 i 11848 Support for ZFS installations has been added to the NomadBSD installer.
Err codemadness.org 70 i 11849 The rc-script for setting up the network interfaces has been fixed and improved.
Err codemadness.org 70 i 11850 Support for setting the country code for the wlan device has been added.
Err codemadness.org 70 i 11851 Auto configuration for running in VirtualBox has been added.
Err codemadness.org 70 i 11852 A check for the default display has been added to the graphics configuration scripts. This fixes problems where users with Optimus have their NVIDIA card disabled, and use the integrated graphics chip instead.
Err codemadness.org 70 i 11853 NVIDIA driver version 440 has been added.
Err codemadness.org 70 i 11854 nomadbsd-dmconfig, a Qt tool for selecting the display manager theme, setting the
Err codemadness.org 70 i 11855 default user and autologin has been added.
Err codemadness.org 70 i 11856 nomadbsd-adduser, a Qt tool for added preconfigured user accounts to the system has been added.
Err codemadness.org 70 i 11857 Martin Orszulik added Czech translations to the setup and installation wizard.
Err codemadness.org 70 i 11858 The NomadBSD logo, designed by Ian Grindley, has been changed.
Err codemadness.org 70 i 11859 Support for localized error messages has been added.
Err codemadness.org 70 i 11860 Support for localizing the password prompts has been added.
Err codemadness.org 70 i 11861 Some templates for starting other DEs have been added to ~/.xinitrc.
Err codemadness.org 70 i 11862 The interfaces of nomadbsd-setup-gui and nomadbsd-install-gui have been improved.
Err codemadness.org 70 i 11863 A script that helps users to configure a multihead systems has been added.
Err codemadness.org 70 i 11864 The Xorg driver for newer Intel GPUs has been changed from "intel" to "modesetting".
Err codemadness.org 70 i 11865 /proc has been added to /etc/fstab
Err codemadness.org 70 i 11866 A D-Bus session issue has been fixed which prevented thunar from accessing samba shares.
Err codemadness.org 70 i 11867 DSBBg which allows users to change and manage wallpapers has been added.
Err codemadness.org 70 i 11868 The latest version of update_obmenu now supports auto-updating the Openbox menu. Manually updating the Openbox menu after packet (de)installation is therefore no longer needed.Support for multiple keyboard layouts has been added.
Err codemadness.org 70 i 11880
Err codemadness.org 70 i 11871 www/palemoon has been removed.
Err codemadness.org 70 i 11872 mail/thunderbird has been removed.
Err codemadness.org 70 i 11873 audio/audacity has been added.
Err codemadness.org 70 i 11874 deskutils/orage has been added.
Err codemadness.org 70 i 11875 the password manager fpm2 has been replaced by KeePassXC
Err codemadness.org 70 i 11876 mail/sylpheed has been replaced by mail/claws-mail
Err codemadness.org 70 i 11877 multimedia/simplescreenrecorder has been added.
Err codemadness.org 70 i 11878 DSBMC has been changed to DSBMC-Qt
Err codemadness.org 70 i 11879 Many small improvements and bug fixes.
Special Guest: Mariusz Zaborski.
]]> Err codemadness.org 70 i 11930Special Guest: Michael W Lucas.
]]> Err codemadness.org 70 i 11975Special Guest: Michael W Lucas.
]]> Err codemadness.org 70 i 11993Err codemadness.org 70 i 12074Err codemadness.org 70 i 12080 Err codemadness.org 70 i 12081Upstream describes LLDB as a next generation, high-performance debugger. It is built on top of LLVM/Clang toolchain, and features great integration with it. At the moment, it primarily supports debugging C, C++ and ObjC code, and there is interest in extending it to more languages.
Err codemadness.org 70 i 12075 Err codemadness.org 70 i 12076In February, I have started working on LLDB, as contracted by the NetBSD Foundation. So far I've been working on reenabling continuous integration, squashing bugs, improving NetBSD core file support, extending NetBSD's ptrace interface to cover more register types and fix compat32 issues and fixing watchpoint support. Then, I've started working on improving thread support which is taking longer than expected. You can read more about that in my September 2019 report.
Err codemadness.org 70 i 12077 Err codemadness.org 70 i 12078So far the number of issues uncovered while enabling proper threading support has stopped me from merging the work-in-progress patches. However, I've finally reached the point where I believe that the current work can be merged and the remaining problems can be resolved afterwards. More on that and other LLVM-related events happening during the last month in this report.
Err codemadness.org 70 i 12079
Err codemadness.org 70 i 12086Err codemadness.org 70 i 12088 Err codemadness.org 70 i 12089The FreeBSD handbook describes an IPSec VPN tunnel between 2 FreeBSD hosts (see https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ipsec.html)
Err codemadness.org 70 i 12087
But it is also possible to have multiple, 2 or more, IPSec VPN tunnels created and running on a FreeBSD host. How to implement and configure this is described below.
Err codemadness.org 70 i 12090 Err codemadness.org 70 i 12091Err codemadness.org 70 i 12092Err codemadness.org 70 i 12098 Err codemadness.org 70 i 12099The requirements is to have 3 locations (A, B and C) connected with IPSec VPN tunnels using FreeBSD (11.3-RELEASE).
Err codemadness.org 70 i 12093 Err codemadness.org 70 i 12094Each location has 1 IPSec VPN host running FreeBSD (VPN host A, B and C).
Err codemadness.org 70 i 12095 Err codemadness.org 70 i 12096VPN host A has 2 IPSec VPN tunnels: 1 to location B (VPN host B) and 1 to location C (VPN host C).
Err codemadness.org 70 i 12097
Err codemadness.org 70 i 12106Err codemadness.org 70 i 12112 Err codemadness.org 70 i 12113Drew Gallatin of Netflix presented at the recent EuroBSDcon 2019 conference in Norway on the company's network stack optimizations to FreeBSD. Netflix was working on being able to deliver 200Gb/s network performance for video streaming out of Intel Xeon and AMD EPYC servers, to which they are now at 190Gb/s+ and in the process that doubled the potential of EPYC Naples/Rome servers and also very hefty upgrades too for Intel.
Err codemadness.org 70 i 12107 Err codemadness.org 70 i 12108Netflix has long been known to be using FreeBSD in their data centers particularly where network performance is concerned. But in wanting to deliver 200Gb/s throughput from individual servers led them to making NUMA optimizations to the FreeBSD network stack. Allocating NUMA local memory for kernel TLS crypto buffers and for backing files sent via sentfile were among their optimizations. Changes to network connection handling and dealing with incoming connections to Nginx were also made.
Err codemadness.org 70 i 12109 Err codemadness.org 70 i 12110For those just wanting the end result, Netflix's NUMA optimizations to FreeBSD resulted in their Intel Xeon servers going from 105Gb/s to 191Gb/s while the NUMA fabric utilization dropped from 40% to 13%.
Err codemadness.org 70 i 12111
Err codemadness.org 70 i 12118Err codemadness.org 70 i 12130 Err codemadness.org 70 i 12131In case you are wondering why happy eyeballs: It's a variation on this:
Err codemadness.org 70 i 12120 Err codemadness.org 70 i 12121
Err codemadness.org 70 i 12119 https://en.wikipedia.org/wiki/Happy_Eyeballsunwind has a concept of a best nameserver type. It considers a configured DoT nameserver to be better than doing it's own recursive resolving. Recursive resolving is considered to be better than asking the dhcp provided nameservers.
Err codemadness.org 70 i 12122 Err codemadness.org 70 i 12123This diff sorts the nameserver types by quality, as above (validation, resolving, dead...), and as a tie breaker it adds the median of the round trip time of previous queries into the mix.
Err codemadness.org 70 i 12124 Err codemadness.org 70 i 12125One other interesting thing about this is that it gets us past captive portals without a check URL, that's why this diff is so huge, it rips out all the captive portal stuff (please apply with patch -E):
Err codemadness.org 70 i 12127 Err codemadness.org 70 i 12128
Err codemadness.org 70 i 12126 17 files changed, 385 insertions(+), 1683 deletions(-)Please test this. I'm particularly interested in reports from people who move between networks and need to get past captive portals.
Err codemadness.org 70 i 12129
Err codemadness.org 70 i 12136Err codemadness.org 70 i 12142 Err codemadness.org 70 i 12143Product Overview
Err codemadness.org 70 i 12137 Err codemadness.org 70 i 12138FreeBSD is an operating system used to power servers, desktops, and embedded systems. Derived from BSD, the version of UNIX developed at the University of California, Berkeley, FreeBSD has been continually developed by a large community for more than 30 years.
Err codemadness.org 70 i 12139 Err codemadness.org 70 i 12140FreeBSD's networking, security, storage, and monitoring features, including the pf firewall, the Capsicum and CloudABI capability frameworks, the ZFS filesystem, and the DTrace dynamic tracing framework, make FreeBSD the platform of choice for many of the busiest web sites and most pervasive embedded networking and storage systems.
Err codemadness.org 70 i 12141
Err codemadness.org 70 i 12148Err codemadness.org 70 i 12160 Err codemadness.org 70 i 12161I just committed all the dependencies for OpenSSH security key (U2F) support to base and tweaked OpenSSH to use them directly. This means there will be no additional configuration hoops to jump through to use U2F/FIDO2 security keys.
Err codemadness.org 70 i 12149 Err codemadness.org 70 i 12150Hardware backed keys can be generated using "ssh-keygen -t ecdsa-sk" (or "ed25519-sk" if your token supports it). Many tokens require to be touched/tapped to confirm this step.
Err codemadness.org 70 i 12151 Err codemadness.org 70 i 12152You'll get a public/private keypair back as usual, except in this case, the private key file does not contain a highly-sensitive private key but instead holds a "key handle" that is used by the security key to derive the real private key at signing time.
Err codemadness.org 70 i 12153 Err codemadness.org 70 i 12154So, stealing a copy of the private key file without also stealing your security key (or access to it) should not give the attacker anything.
Err codemadness.org 70 i 12155 Err codemadness.org 70 i 12156Once you have generated a key, you can use it normally - i.e. add it to an agent, copy it to your destination's authorized_keys files (assuming they are running -current too), etc. At authentication time, you will be prompted to tap your security key to confirm the signature operation - this makes theft-of-access attacks against security keys more difficult too.
Err codemadness.org 70 i 12157 Err codemadness.org 70 i 12158Please test this thoroughly - it's a big change that we want to have stable before the next release.
Err codemadness.org 70 i 12159
Err codemadness.org 70 i 12205Err codemadness.org 70 i 12211 Err codemadness.org 70 i 12212Upstream describes LLDB as a next generation, high-performance debugger. It is built on top of LLVM/Clang toolchain, and features great integration with it. At the moment, it primarily supports debugging C, C++ and ObjC code, and there is interest in extending it to more languages.
Err codemadness.org 70 i 12206 Err codemadness.org 70 i 12207In February, I have started working on LLDB, as contracted by the NetBSD Foundation. So far I've been working on reenabling continuous integration, squashing bugs, improving NetBSD core file support, extending NetBSD's ptrace interface to cover more register types and fix compat32 issues and fixing watchpoint support. Then, I've started working on improving thread support which is taking longer than expected. You can read more about that in my September 2019 report.
Err codemadness.org 70 i 12208 Err codemadness.org 70 i 12209So far the number of issues uncovered while enabling proper threading support has stopped me from merging the work-in-progress patches. However, I've finally reached the point where I believe that the current work can be merged and the remaining problems can be resolved afterwards. More on that and other LLVM-related events happening during the last month in this report.
Err codemadness.org 70 i 12210
Err codemadness.org 70 i 12217Err codemadness.org 70 i 12219 Err codemadness.org 70 i 12220The FreeBSD handbook describes an IPSec VPN tunnel between 2 FreeBSD hosts (see https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ipsec.html)
Err codemadness.org 70 i 12218
But it is also possible to have multiple, 2 or more, IPSec VPN tunnels created and running on a FreeBSD host. How to implement and configure this is described below.
Err codemadness.org 70 i 12221 Err codemadness.org 70 i 12222Err codemadness.org 70 i 12223Err codemadness.org 70 i 12229 Err codemadness.org 70 i 12230The requirements is to have 3 locations (A, B and C) connected with IPSec VPN tunnels using FreeBSD (11.3-RELEASE).
Err codemadness.org 70 i 12224 Err codemadness.org 70 i 12225Each location has 1 IPSec VPN host running FreeBSD (VPN host A, B and C).
Err codemadness.org 70 i 12226 Err codemadness.org 70 i 12227VPN host A has 2 IPSec VPN tunnels: 1 to location B (VPN host B) and 1 to location C (VPN host C).
Err codemadness.org 70 i 12228
Err codemadness.org 70 i 12237Err codemadness.org 70 i 12243 Err codemadness.org 70 i 12244Drew Gallatin of Netflix presented at the recent EuroBSDcon 2019 conference in Norway on the company's network stack optimizations to FreeBSD. Netflix was working on being able to deliver 200Gb/s network performance for video streaming out of Intel Xeon and AMD EPYC servers, to which they are now at 190Gb/s+ and in the process that doubled the potential of EPYC Naples/Rome servers and also very hefty upgrades too for Intel.
Err codemadness.org 70 i 12238 Err codemadness.org 70 i 12239Netflix has long been known to be using FreeBSD in their data centers particularly where network performance is concerned. But in wanting to deliver 200Gb/s throughput from individual servers led them to making NUMA optimizations to the FreeBSD network stack. Allocating NUMA local memory for kernel TLS crypto buffers and for backing files sent via sentfile were among their optimizations. Changes to network connection handling and dealing with incoming connections to Nginx were also made.
Err codemadness.org 70 i 12240 Err codemadness.org 70 i 12241For those just wanting the end result, Netflix's NUMA optimizations to FreeBSD resulted in their Intel Xeon servers going from 105Gb/s to 191Gb/s while the NUMA fabric utilization dropped from 40% to 13%.
Err codemadness.org 70 i 12242
Err codemadness.org 70 i 12249Err codemadness.org 70 i 12261 Err codemadness.org 70 i 12262In case you are wondering why happy eyeballs: It's a variation on this:
Err codemadness.org 70 i 12251 Err codemadness.org 70 i 12252
Err codemadness.org 70 i 12250 https://en.wikipedia.org/wiki/Happy_Eyeballsunwind has a concept of a best nameserver type. It considers a configured DoT nameserver to be better than doing it's own recursive resolving. Recursive resolving is considered to be better than asking the dhcp provided nameservers.
Err codemadness.org 70 i 12253 Err codemadness.org 70 i 12254This diff sorts the nameserver types by quality, as above (validation, resolving, dead...), and as a tie breaker it adds the median of the round trip time of previous queries into the mix.
Err codemadness.org 70 i 12255 Err codemadness.org 70 i 12256One other interesting thing about this is that it gets us past captive portals without a check URL, that's why this diff is so huge, it rips out all the captive portal stuff (please apply with patch -E):
Err codemadness.org 70 i 12258 Err codemadness.org 70 i 12259
Err codemadness.org 70 i 12257 17 files changed, 385 insertions(+), 1683 deletions(-)Please test this. I'm particularly interested in reports from people who move between networks and need to get past captive portals.
Err codemadness.org 70 i 12260
Err codemadness.org 70 i 12267Err codemadness.org 70 i 12273 Err codemadness.org 70 i 12274Product Overview
Err codemadness.org 70 i 12268 Err codemadness.org 70 i 12269FreeBSD is an operating system used to power servers, desktops, and embedded systems. Derived from BSD, the version of UNIX developed at the University of California, Berkeley, FreeBSD has been continually developed by a large community for more than 30 years.
Err codemadness.org 70 i 12270 Err codemadness.org 70 i 12271FreeBSD's networking, security, storage, and monitoring features, including the pf firewall, the Capsicum and CloudABI capability frameworks, the ZFS filesystem, and the DTrace dynamic tracing framework, make FreeBSD the platform of choice for many of the busiest web sites and most pervasive embedded networking and storage systems.
Err codemadness.org 70 i 12272
Err codemadness.org 70 i 12279Err codemadness.org 70 i 12291 Err codemadness.org 70 i 12292I just committed all the dependencies for OpenSSH security key (U2F) support to base and tweaked OpenSSH to use them directly. This means there will be no additional configuration hoops to jump through to use U2F/FIDO2 security keys.
Err codemadness.org 70 i 12280 Err codemadness.org 70 i 12281Hardware backed keys can be generated using "ssh-keygen -t ecdsa-sk" (or "ed25519-sk" if your token supports it). Many tokens require to be touched/tapped to confirm this step.
Err codemadness.org 70 i 12282 Err codemadness.org 70 i 12283You'll get a public/private keypair back as usual, except in this case, the private key file does not contain a highly-sensitive private key but instead holds a "key handle" that is used by the security key to derive the real private key at signing time.
Err codemadness.org 70 i 12284 Err codemadness.org 70 i 12285So, stealing a copy of the private key file without also stealing your security key (or access to it) should not give the attacker anything.
Err codemadness.org 70 i 12286 Err codemadness.org 70 i 12287Once you have generated a key, you can use it normally - i.e. add it to an agent, copy it to your destination's authorized_keys files (assuming they are running -current too), etc. At authentication time, you will be prompted to tap your security key to confirm the signature operation - this makes theft-of-access attacks against security keys more difficult too.
Err codemadness.org 70 i 12288 Err codemadness.org 70 i 12289Please test this thoroughly - it's a big change that we want to have stable before the next release.
Err codemadness.org 70 i 12290
Err codemadness.org 70 i 12396Err codemadness.org 70 i 12404 Err codemadness.org 70 i 12405This quarter the reports team has been more active than usual thanks to a better organization: calls for reports and reminders have been sent regularly, reports have been reviewed and merged quickly (I would like to thank debdrup@ in particular for his reviewing work).
Err codemadness.org 70 i 12397 Err codemadness.org 70 i 12398Efficiency could still be improved with the help of our community. In particular, the quarterly team has found that many reports have arrived in the last days before the deadline or even after. I would like to invite the community to follow the guidelines below that can help us sending out the reports sooner.
Err codemadness.org 70 i 12399 Err codemadness.org 70 i 12400Starting from next quarter, all quarterly status reports will be prepared the last month of the quarter itself, instead of the first month after the quarter's end. This means that deadlines for submitting reports will be the 1st of January, April, July and October.
Err codemadness.org 70 i 12401 Err codemadness.org 70 i 12402Next quarter will then be a short one, covering the months of November and December only and the report will probably be out in mid January.
Err codemadness.org 70 i 12403
Err codemadness.org 70 i 12410Err codemadness.org 70 i 12416 Err codemadness.org 70 i 12417OpenBSD, huh? Yes, I usually write about FreeBSD and that’s in fact what I tried installing on the machine first. But I ran into problems with it very early on (never even reached single user mode) and put it aside for later. Since I powered up the SunFire again last month, I needed an OS now and chose OpenBSD for the simple reason that I have it available.
Err codemadness.org 70 i 12411 Err codemadness.org 70 i 12412First I wanted to call this article simply “OpenBSD on SPARC” – but that would have been misleading since OpenBSD used to support 32-bit SPARC processors, too. The platform was just put to rest after the 5.9 release.
Err codemadness.org 70 i 12413 Err codemadness.org 70 i 12414Version 6.0 was the last release of OpenBSD that came on CD-ROM. When I bought it, I thought that I’d never use the SPARC CD. But here was the chance! While it is an obsolete release, it comes with the cryptographic signatures to verify the next release. So the plan is to start at 6.0 as I can trust the original CDs and then update to the latest release. This will also be an opportunity to recap on some of the things that changed over the various versions.
Err codemadness.org 70 i 12415
Err codemadness.org 70 i 12424Err codemadness.org 70 i 12428 Err codemadness.org 70 i 12429Because it will contain the ZFS source code for both Linux and FreeBSD, we will rename the "ZFSonLinux" code repository to "OpenZFS". Specifically, the repo at http://github.com/ZFSonLinux/zfs will be moved to the OpenZFS organization, at http://github.com/OpenZFS/zfs.
Err codemadness.org 70 i 12425 Err codemadness.org 70 i 12426The next major release of ZFS for Linux and FreeBSD will be "OpenZFS 2.0", and is expected to ship in 2020.
Err codemadness.org 70 i 12427
Err codemadness.org 70 i 12434Err codemadness.org 70 i 12436 Err codemadness.org 70 i 12437A long time ago— like 15 years ago— I worked at Sun Microsystems. The company was nearly dead at the time (it died a couple years later) because they didn't make anything that anyone wanted to buy anymore. So they had a lot of strange ideas about how they'd make their comeback.
Err codemadness.org 70 i 12435
Err codemadness.org 70 i 12442Err codemadness.org 70 i 12446 Err codemadness.org 70 i 12447Sometimes while testing file systems or applications you want to simulate some errors on the disk level. The first time I heard about this need was from Baptiste Daroussin during his presentation at AsiaBSDCon 2016. He mentioned how they had built a test lab with it. The same need was recently discussed during the PGCon 2019, to test a PostgreSQL instance. If you are FreeBSD user, I have great news for you: there is a GEOM provider which allows you to simulate a failing device.
Err codemadness.org 70 i 12443 Err codemadness.org 70 i 12444GNOP allows us to configure transparent providers from existing ones. The first interesting option of it is that we can slice the device into smaller pieces, thanks to the ‘offset option’ and ‘stripsesize’. This allows us to observe how the data on the disk is changing. Let’s assume that we want to observe the changes in the GPT table when the GPT flags are added or removed (for example the bootme flags which are described here). We can use dd every time and analyze it using absolute values from the disks.
Err codemadness.org 70 i 12445
Err codemadness.org 70 i 12452Err codemadness.org 70 i 12458 Err codemadness.org 70 i 12459This is a tutorial to guide you through the shiny new pkg_comp 2.0 on NetBSD.
Err codemadness.org 70 i 12453 Err codemadness.org 70 i 12454Goals: to use pkg_comp 2.0 to build a binary repository of all the packages you are interested in; to keep the repository fresh on a daily basis; and to use that repository with pkgin to maintain your NetBSD system up-to-date and secure.
Err codemadness.org 70 i 12455 Err codemadness.org 70 i 12456This tutorial is specifically targeted at NetBSD but should work on other platforms with some small changes. Expect, at the very least, a macOS-specific tutorial as soon as I create a pkg_comp standalone installer for that platform.
Err codemadness.org 70 i 12457
Err codemadness.org 70 i 12506Err codemadness.org 70 i 12514 Err codemadness.org 70 i 12515This quarter the reports team has been more active than usual thanks to a better organization: calls for reports and reminders have been sent regularly, reports have been reviewed and merged quickly (I would like to thank debdrup@ in particular for his reviewing work).
Err codemadness.org 70 i 12507 Err codemadness.org 70 i 12508Efficiency could still be improved with the help of our community. In particular, the quarterly team has found that many reports have arrived in the last days before the deadline or even after. I would like to invite the community to follow the guidelines below that can help us sending out the reports sooner.
Err codemadness.org 70 i 12509 Err codemadness.org 70 i 12510Starting from next quarter, all quarterly status reports will be prepared the last month of the quarter itself, instead of the first month after the quarter's end. This means that deadlines for submitting reports will be the 1st of January, April, July and October.
Err codemadness.org 70 i 12511 Err codemadness.org 70 i 12512Next quarter will then be a short one, covering the months of November and December only and the report will probably be out in mid January.
Err codemadness.org 70 i 12513
Err codemadness.org 70 i 12520Err codemadness.org 70 i 12526 Err codemadness.org 70 i 12527OpenBSD, huh? Yes, I usually write about FreeBSD and that’s in fact what I tried installing on the machine first. But I ran into problems with it very early on (never even reached single user mode) and put it aside for later. Since I powered up the SunFire again last month, I needed an OS now and chose OpenBSD for the simple reason that I have it available.
Err codemadness.org 70 i 12521 Err codemadness.org 70 i 12522First I wanted to call this article simply “OpenBSD on SPARC” – but that would have been misleading since OpenBSD used to support 32-bit SPARC processors, too. The platform was just put to rest after the 5.9 release.
Err codemadness.org 70 i 12523 Err codemadness.org 70 i 12524Version 6.0 was the last release of OpenBSD that came on CD-ROM. When I bought it, I thought that I’d never use the SPARC CD. But here was the chance! While it is an obsolete release, it comes with the cryptographic signatures to verify the next release. So the plan is to start at 6.0 as I can trust the original CDs and then update to the latest release. This will also be an opportunity to recap on some of the things that changed over the various versions.
Err codemadness.org 70 i 12525
Err codemadness.org 70 i 12534Err codemadness.org 70 i 12538 Err codemadness.org 70 i 12539Because it will contain the ZFS source code for both Linux and FreeBSD, we will rename the "ZFSonLinux" code repository to "OpenZFS". Specifically, the repo at http://github.com/ZFSonLinux/zfs will be moved to the OpenZFS organization, at http://github.com/OpenZFS/zfs.
Err codemadness.org 70 i 12535 Err codemadness.org 70 i 12536The next major release of ZFS for Linux and FreeBSD will be "OpenZFS 2.0", and is expected to ship in 2020.
Err codemadness.org 70 i 12537
Err codemadness.org 70 i 12544Err codemadness.org 70 i 12546 Err codemadness.org 70 i 12547A long time ago— like 15 years ago— I worked at Sun Microsystems. The company was nearly dead at the time (it died a couple years later) because they didn't make anything that anyone wanted to buy anymore. So they had a lot of strange ideas about how they'd make their comeback.
Err codemadness.org 70 i 12545
Err codemadness.org 70 i 12552Err codemadness.org 70 i 12556 Err codemadness.org 70 i 12557Sometimes while testing file systems or applications you want to simulate some errors on the disk level. The first time I heard about this need was from Baptiste Daroussin during his presentation at AsiaBSDCon 2016. He mentioned how they had built a test lab with it. The same need was recently discussed during the PGCon 2019, to test a PostgreSQL instance. If you are FreeBSD user, I have great news for you: there is a GEOM provider which allows you to simulate a failing device.
Err codemadness.org 70 i 12553 Err codemadness.org 70 i 12554GNOP allows us to configure transparent providers from existing ones. The first interesting option of it is that we can slice the device into smaller pieces, thanks to the ‘offset option’ and ‘stripsesize’. This allows us to observe how the data on the disk is changing. Let’s assume that we want to observe the changes in the GPT table when the GPT flags are added or removed (for example the bootme flags which are described here). We can use dd every time and analyze it using absolute values from the disks.
Err codemadness.org 70 i 12555
Err codemadness.org 70 i 12562Err codemadness.org 70 i 12568 Err codemadness.org 70 i 12569This is a tutorial to guide you through the shiny new pkg_comp 2.0 on NetBSD.
Err codemadness.org 70 i 12563 Err codemadness.org 70 i 12564Goals: to use pkg_comp 2.0 to build a binary repository of all the packages you are interested in; to keep the repository fresh on a daily basis; and to use that repository with pkgin to maintain your NetBSD system up-to-date and secure.
Err codemadness.org 70 i 12565 Err codemadness.org 70 i 12566This tutorial is specifically targeted at NetBSD but should work on other platforms with some small changes. Expect, at the very least, a macOS-specific tutorial as soon as I create a pkg_comp standalone installer for that platform.
Err codemadness.org 70 i 12567
Err codemadness.org 70 i 12668Err codemadness.org 70 i 12672 Err codemadness.org 70 i 12673Linux Professional Institute extends its Open Technology certification track with the BSD Specialist Certification. Starting October 30, 2019, BSD Specialist exams will be globally available. The certification was developed in collaboration with the BSD Certification Group which merged with Linux Professional Institute in 2018.
Err codemadness.org 70 i 12669 Err codemadness.org 70 i 12670G. Matthew Rice, the Executive Director of Linux Professional Institute says that "the release of the BSD Specialist certification marks a major milestone for Linux Professional Institute. With this new credential, we are reaffirming our belief in the value of, and support for, all open source technologies. As much as possible, future credentials and educational programs will include coverage of BSD.”
Err codemadness.org 70 i 12671
Err codemadness.org 70 i 12678Err codemadness.org 70 i 12680 Err codemadness.org 70 i 12681The seventh annual OpenZFS Developer Summit took place on November 4th and 5th in San Francisco and brought together a healthy mix of familiar faces and new community participants. Several folks from iXsystems took part in the talks, hacking, and socializing at this amazing annual event. The messages of the event can be summed up as Unification, Refinement, and Ecosystem Tooling.
Err codemadness.org 70 i 12679
Err codemadness.org 70 i 12692Err codemadness.org 70 i 12696 Err codemadness.org 70 i 12697In the previous post I explained why sometimes building your software from ports may make sense on FreeBSD. I also introduced the reader to the old-fashioned way of using tools to make working with ports a bit more convenient.
Err codemadness.org 70 i 12693 Err codemadness.org 70 i 12694In this follow-up post we’re going to take a closer look at portmaster and see how it especially makes updating from ports much, much easier. For people coming here without having read the previous article: What I describe here is not what every FreeBSD admin today should consider good practice (any more)! It can still be useful in special cases, but my main intention is to discuss this for building up the foundation for what you actually should do today.
Err codemadness.org 70 i 12695
Err codemadness.org 70 i 12702Err codemadness.org 70 i 12708 Err codemadness.org 70 i 12709Upstream describes LLDB as a next generation, high-performance debugger. It is built on top of LLVM/Clang toolchain, and features great integration with it. At the moment, it primarily supports debugging C, C++ and ObjC code, and there is interest in extending it to more languages.
Err codemadness.org 70 i 12703 Err codemadness.org 70 i 12704In February, I have started working on LLDB, as contracted by the NetBSD Foundation. So far I've been working on reenabling continuous integration, squashing bugs, improving NetBSD core file support, extending NetBSD's ptrace interface to cover more register types and fix compat32 issues and fixing watchpoint support. Then, I've started working on improving thread support which is taking longer than expected. You can read more about that in my September 2019 report.
Err codemadness.org 70 i 12705 Err codemadness.org 70 i 12706So far the number of issues uncovered while enabling proper threading support has stopped me from merging the work-in-progress patches. However, I've finally reached the point where I believe that the current work can be merged and the remaining problems can be resolved afterwards. More on that and other LLVM-related events happening during the last month in this report.
Err codemadness.org 70 i 12707
Err codemadness.org 70 i 12756Err codemadness.org 70 i 12760 Err codemadness.org 70 i 12761Linux Professional Institute extends its Open Technology certification track with the BSD Specialist Certification. Starting October 30, 2019, BSD Specialist exams will be globally available. The certification was developed in collaboration with the BSD Certification Group which merged with Linux Professional Institute in 2018.
Err codemadness.org 70 i 12757 Err codemadness.org 70 i 12758G. Matthew Rice, the Executive Director of Linux Professional Institute says that "the release of the BSD Specialist certification marks a major milestone for Linux Professional Institute. With this new credential, we are reaffirming our belief in the value of, and support for, all open source technologies. As much as possible, future credentials and educational programs will include coverage of BSD.”
Err codemadness.org 70 i 12759
Err codemadness.org 70 i 12766Err codemadness.org 70 i 12768 Err codemadness.org 70 i 12769The seventh annual OpenZFS Developer Summit took place on November 4th and 5th in San Francisco and brought together a healthy mix of familiar faces and new community participants. Several folks from iXsystems took part in the talks, hacking, and socializing at this amazing annual event. The messages of the event can be summed up as Unification, Refinement, and Ecosystem Tooling.
Err codemadness.org 70 i 12767
Err codemadness.org 70 i 12780Err codemadness.org 70 i 12784 Err codemadness.org 70 i 12785In the previous post I explained why sometimes building your software from ports may make sense on FreeBSD. I also introduced the reader to the old-fashioned way of using tools to make working with ports a bit more convenient.
Err codemadness.org 70 i 12781 Err codemadness.org 70 i 12782In this follow-up post we’re going to take a closer look at portmaster and see how it especially makes updating from ports much, much easier. For people coming here without having read the previous article: What I describe here is not what every FreeBSD admin today should consider good practice (any more)! It can still be useful in special cases, but my main intention is to discuss this for building up the foundation for what you actually should do today.
Err codemadness.org 70 i 12783
Err codemadness.org 70 i 12790Err codemadness.org 70 i 12796 Err codemadness.org 70 i 12797Upstream describes LLDB as a next generation, high-performance debugger. It is built on top of LLVM/Clang toolchain, and features great integration with it. At the moment, it primarily supports debugging C, C++ and ObjC code, and there is interest in extending it to more languages.
Err codemadness.org 70 i 12791 Err codemadness.org 70 i 12792In February, I have started working on LLDB, as contracted by the NetBSD Foundation. So far I've been working on reenabling continuous integration, squashing bugs, improving NetBSD core file support, extending NetBSD's ptrace interface to cover more register types and fix compat32 issues and fixing watchpoint support. Then, I've started working on improving thread support which is taking longer than expected. You can read more about that in my September 2019 report.
Err codemadness.org 70 i 12793 Err codemadness.org 70 i 12794So far the number of issues uncovered while enabling proper threading support has stopped me from merging the work-in-progress patches. However, I've finally reached the point where I believe that the current work can be merged and the remaining problems can be resolved afterwards. More on that and other LLVM-related events happening during the last month in this report.
Err codemadness.org 70 i 12795
Some of the highlights:
Err codemadness.org 70 i 12913 Err codemadness.org 70 i 12914For a complete list of new features and known problems, please see the online release notes and errata list, available at: https://www.FreeBSD.org/releases/12.1R/relnotes.html
Err codemadness.org 70 i 12928Err codemadness.org 70 i 12934 Err codemadness.org 70 i 12935Nobody needs to be told that UNIX is popular today. In this article we will show you a little of where it was yesterday and over the past decade. And, without meaning in the least to minimise the incredible contributions of Ken Thompson and Dennis Ritchie, we will bring to light many of the others who worked on early versions, and try to show where some of the key ideas came from, and how they got into the UNIX of today.
Err codemadness.org 70 i 12929 Err codemadness.org 70 i 12930Our title says we are talking about UNIX evolution. Evolution means different things to different people. We use the term loosely, to describe the change over time among the many different UNIX variants in use both inside and outside Bell Labs. Ideas, code, and useful programs seem to have made their way back and forth - like mutant genes - among all the many UNIXes living in the phone company over the decade in question.
Err codemadness.org 70 i 12931 Err codemadness.org 70 i 12932Part One looks at some of the major components of the current UNIX system - the text formatting tools, the compilers and program development tools, and so on. Most of the work described in Part One took place at
Err codemadness.org 70 i 12933Research'', a part of Bell Laboratories (now AT&T Bell Laboratories, then as nowthe Labs''), and the ancestral home of UNIX. In planned (but not written) later parts, we would have looked at some of the myriad versions of UNIX - there are far more than one might suspect. This includes a look at Columbus and USG and at Berkeley Unix. You'll begin to get a glimpse inside the history of the major streams of development of the system during that time.
Err codemadness.org 70 i 12942Err codemadness.org 70 i 12946 Err codemadness.org 70 i 12947I do my FreeBSD development using git, tmux, vim and cscope.
Err codemadness.org 70 i 12943 Err codemadness.org 70 i 12944I keep a FreeBSD fork on my github, I have forked https://github.com/freebsd/freebsd to https://github.com/adventureloop/freebsd
Err codemadness.org 70 i 12945
Err codemadness.org 70 i 12952Err codemadness.org 70 i 12956 Err codemadness.org 70 i 12957As we are experiencing the Suricata community first hand in Amsterdam we thought to release this version a bit earlier than planned. Included is the latest Suricata 5.0.0 release in the development version. That means later this November we will releasing version 5 to the production version as we finish up tweaking the integration and maybe pick up 5.0.1 as it becomes available.
Err codemadness.org 70 i 12953 Err codemadness.org 70 i 12954LDAP TLS connectivity is now integrated into the system trust store, which ensures that all required root and intermediate certificates will be seen by the connection setup when they have been added to the authorities section. The same is true for trusting self-signed certificates. On top of this, IPsec now supports public key authentication as contributed by Pascal Mathis.
Err codemadness.org 70 i 12955
Err codemadness.org 70 i 12962Err codemadness.org 70 i 12964 Err codemadness.org 70 i 12965We at HardenedBSD have a lot of news to share. On 05 Nov 2019, Oliver Pinter resigned amicably from the project. All of us at HardenedBSD owe Oliver our gratitude and appreciation. This humble project, named by Oliver, was born out of his thesis work and the collaboration with Shawn Webb. Oliver created the HardenedBSD repo on GitHub in April 2013. The HardenedBSD Foundation was formed five years later to carry on this great work.
Err codemadness.org 70 i 12963
Err codemadness.org 70 i 12970Err codemadness.org 70 i 12972 Err codemadness.org 70 i 12973DNSSEC validation has been enabled in the default unbound.conf(5) in -current. The relevant commits were from Job Snijders (job@)
Err codemadness.org 70 i 12971
Err codemadness.org 70 i 12978Err codemadness.org 70 i 12980 Err codemadness.org 70 i 12981Shopware is the next generation of open source e-commerce software. Based on bleeding edge technologies like Symfony 3, Doctrine2 and Zend Framework Shopware comes as the perfect platform for your next e-commerce project. This tutorial will walk you through the Shopware Community Edition (CE) installation on FreeBSD 12 system by using NGINX as a web server.
Err codemadness.org 70 i 12979
Err codemadness.org 70 i 12986Err codemadness.org 70 i 12997 Err codemadness.org 70 i 12998Make sure your system meets the following minimum requirements:
Err codemadness.org 70 i 12987 Err codemadness.org 70 i 12988Err codemadness.org 70 i 12989
Err codemadness.org 70 i 12996- Linux-based operating system with NGINX or Apache 2.x (with mod_rewrite) web server installed.
Err codemadness.org 70 i 12990- PHP 5.6.4 or higher with ctype, gd, curl, dom, hash, iconv, zip, json, mbstring, openssl, session, simplexml, xml, zlib, fileinfo, and pdo/mysql extensions. PHP 7.1 or above is strongly recommended.
Err codemadness.org 70 i 12991- MySQL 5.5.0 or higher.
Err codemadness.org 70 i 12992- Possibility to set up cron jobs.
Err codemadness.org 70 i 12993- Minimum 4 GB available hard disk space.
Err codemadness.org 70 i 12994- IonCube Loader version 5.0.0 or higher (optional).
Err codemadness.org 70 i 12995
Err codemadness.org 70 i 13003Err codemadness.org 70 i 13009 Err codemadness.org 70 i 13010Project RainbowCrack was originally Zhu Shuanglei's implementation, it's not clear to me if the project is still just his or if it's even been maintained for a while. His page seems to have been last updated in August 2007.
Err codemadness.org 70 i 13004 Err codemadness.org 70 i 13005The Project RainbowCrack web page now has just binaries for Windows XP and Linux, both 32-bit and 64-bit versions.
Err codemadness.org 70 i 13006 Err codemadness.org 70 i 13007Earlier versions were available as source code. The version 1.2 source code does not compile on OpenBSD, and in my experience it doesn't compile on Linux, either. It seems to date from 2004 at the earliest, and I think it makes some version-2.4 assumptions about Linux kernel headers.
Err codemadness.org 70 i 13008
Some of the highlights:
Err codemadness.org 70 i 13046 Err codemadness.org 70 i 13047For a complete list of new features and known problems, please see the online release notes and errata list, available at: https://www.FreeBSD.org/releases/12.1R/relnotes.html
Err codemadness.org 70 i 13061Err codemadness.org 70 i 13067 Err codemadness.org 70 i 13068Nobody needs to be told that UNIX is popular today. In this article we will show you a little of where it was yesterday and over the past decade. And, without meaning in the least to minimise the incredible contributions of Ken Thompson and Dennis Ritchie, we will bring to light many of the others who worked on early versions, and try to show where some of the key ideas came from, and how they got into the UNIX of today.
Err codemadness.org 70 i 13062 Err codemadness.org 70 i 13063Our title says we are talking about UNIX evolution. Evolution means different things to different people. We use the term loosely, to describe the change over time among the many different UNIX variants in use both inside and outside Bell Labs. Ideas, code, and useful programs seem to have made their way back and forth - like mutant genes - among all the many UNIXes living in the phone company over the decade in question.
Err codemadness.org 70 i 13064 Err codemadness.org 70 i 13065Part One looks at some of the major components of the current UNIX system - the text formatting tools, the compilers and program development tools, and so on. Most of the work described in Part One took place at
Err codemadness.org 70 i 13066Research'', a part of Bell Laboratories (now AT&T Bell Laboratories, then as nowthe Labs''), and the ancestral home of UNIX. In planned (but not written) later parts, we would have looked at some of the myriad versions of UNIX - there are far more than one might suspect. This includes a look at Columbus and USG and at Berkeley Unix. You'll begin to get a glimpse inside the history of the major streams of development of the system during that time.
Err codemadness.org 70 i 13075Err codemadness.org 70 i 13079 Err codemadness.org 70 i 13080I do my FreeBSD development using git, tmux, vim and cscope.
Err codemadness.org 70 i 13076 Err codemadness.org 70 i 13077I keep a FreeBSD fork on my github, I have forked https://github.com/freebsd/freebsd to https://github.com/adventureloop/freebsd
Err codemadness.org 70 i 13078
Err codemadness.org 70 i 13085Err codemadness.org 70 i 13089 Err codemadness.org 70 i 13090As we are experiencing the Suricata community first hand in Amsterdam we thought to release this version a bit earlier than planned. Included is the latest Suricata 5.0.0 release in the development version. That means later this November we will releasing version 5 to the production version as we finish up tweaking the integration and maybe pick up 5.0.1 as it becomes available.
Err codemadness.org 70 i 13086 Err codemadness.org 70 i 13087LDAP TLS connectivity is now integrated into the system trust store, which ensures that all required root and intermediate certificates will be seen by the connection setup when they have been added to the authorities section. The same is true for trusting self-signed certificates. On top of this, IPsec now supports public key authentication as contributed by Pascal Mathis.
Err codemadness.org 70 i 13088
Err codemadness.org 70 i 13095Err codemadness.org 70 i 13097 Err codemadness.org 70 i 13098We at HardenedBSD have a lot of news to share. On 05 Nov 2019, Oliver Pinter resigned amicably from the project. All of us at HardenedBSD owe Oliver our gratitude and appreciation. This humble project, named by Oliver, was born out of his thesis work and the collaboration with Shawn Webb. Oliver created the HardenedBSD repo on GitHub in April 2013. The HardenedBSD Foundation was formed five years later to carry on this great work.
Err codemadness.org 70 i 13096
Err codemadness.org 70 i 13103Err codemadness.org 70 i 13105 Err codemadness.org 70 i 13106DNSSEC validation has been enabled in the default unbound.conf(5) in -current. The relevant commits were from Job Snijders (job@)
Err codemadness.org 70 i 13104
Err codemadness.org 70 i 13111Err codemadness.org 70 i 13113 Err codemadness.org 70 i 13114Shopware is the next generation of open source e-commerce software. Based on bleeding edge technologies like Symfony 3, Doctrine2 and Zend Framework Shopware comes as the perfect platform for your next e-commerce project. This tutorial will walk you through the Shopware Community Edition (CE) installation on FreeBSD 12 system by using NGINX as a web server.
Err codemadness.org 70 i 13112
Err codemadness.org 70 i 13119Err codemadness.org 70 i 13130 Err codemadness.org 70 i 13131Make sure your system meets the following minimum requirements:
Err codemadness.org 70 i 13120 Err codemadness.org 70 i 13121Err codemadness.org 70 i 13122
Err codemadness.org 70 i 13129- Linux-based operating system with NGINX or Apache 2.x (with mod_rewrite) web server installed.
Err codemadness.org 70 i 13123- PHP 5.6.4 or higher with ctype, gd, curl, dom, hash, iconv, zip, json, mbstring, openssl, session, simplexml, xml, zlib, fileinfo, and pdo/mysql extensions. PHP 7.1 or above is strongly recommended.
Err codemadness.org 70 i 13124- MySQL 5.5.0 or higher.
Err codemadness.org 70 i 13125- Possibility to set up cron jobs.
Err codemadness.org 70 i 13126- Minimum 4 GB available hard disk space.
Err codemadness.org 70 i 13127- IonCube Loader version 5.0.0 or higher (optional).
Err codemadness.org 70 i 13128
Err codemadness.org 70 i 13136Err codemadness.org 70 i 13142 Err codemadness.org 70 i 13143Project RainbowCrack was originally Zhu Shuanglei's implementation, it's not clear to me if the project is still just his or if it's even been maintained for a while. His page seems to have been last updated in August 2007.
Err codemadness.org 70 i 13137 Err codemadness.org 70 i 13138The Project RainbowCrack web page now has just binaries for Windows XP and Linux, both 32-bit and 64-bit versions.
Err codemadness.org 70 i 13139 Err codemadness.org 70 i 13140Earlier versions were available as source code. The version 1.2 source code does not compile on OpenBSD, and in my experience it doesn't compile on Linux, either. It seems to date from 2004 at the earliest, and I think it makes some version-2.4 assumptions about Linux kernel headers.
Err codemadness.org 70 i 13141
Err codemadness.org 70 i 13272Err codemadness.org 70 i 13280 Err codemadness.org 70 i 13281Today is the day.
Err codemadness.org 70 i 13273 Err codemadness.org 70 i 13274Today I move a zpool from an R710 into an R720. The goal: all services on that zpool start running on the new host.
Err codemadness.org 70 i 13275 Err codemadness.org 70 i 13276Fortunately, that zpool is dedicated to jails, more or less. I have done some planning about this, including moving a poudriere on the R710 into a jail.
Err codemadness.org 70 i 13277 Err codemadness.org 70 i 13278Now it is almost noon on Saturday, I am sitting in the basement (just outside the server room), and I’m typing this up.
Err codemadness.org 70 i 13279
In this post:
Err codemadness.org 70 i 13283 Err codemadness.org 70 i 13284Err codemadness.org 70 i 13298Err codemadness.org 70 i 13308 Err codemadness.org 70 i 13309I’ve used OpenBSD on and off since 2.1. More back then than in the last 10 years or so though, so I thought I’d try it again.
Err codemadness.org 70 i 13299 Err codemadness.org 70 i 13300What triggered this was me finding a silly bug in GNU cpio that has existed with a “FIXME” comment since at least 1994. I checked OpenBSD to see if it had a related bug, but as expected no it was just fine.
Err codemadness.org 70 i 13301 Err codemadness.org 70 i 13302I don’t quite remember why I stopped using OpenBSD for servers, but I do remember filesystem corruption on “unexpected power disconnections” (even with softdep turned on), which I’ve never really seen on Linux.
Err codemadness.org 70 i 13303 Err codemadness.org 70 i 13304That and that fewer things “just worked” than with Linux, which matters more when I installed more random things than I do now. I’ve become a lot more minimalist. Probably due to less spare time. Life is better when you don’t run things like PHP (not that OpenBSD doesn’t support PHP, just an example) or your own email server with various antispam tooling, and other things.
Err codemadness.org 70 i 13305 Err codemadness.org 70 i 13306This is all experience from running OpenBSD on a server. On my next laptop I intend to try running OpenBSD on the dektop, and will see if that more ad-hoc environment works well. E.g. will gnuradio work? Lack of other-OS VM support may be a problem.
Err codemadness.org 70 i 13307
Err codemadness.org 70 i 13314Err codemadness.org 70 i 13318 Err codemadness.org 70 i 13319Ouch, that’s a long list of bad stuff. Still, I like it. I’ll continue to run it, and will make sure my stuff continues working on OpenBSD.
Err codemadness.org 70 i 13315 Err codemadness.org 70 i 13316And maybe in a year I’ll have a review of OpenBSD on a laptop.
Err codemadness.org 70 i 13317
Err codemadness.org 70 i 13326Err codemadness.org 70 i 13328 Err codemadness.org 70 i 13329zlib and dhcpcd are both updated in DragonFly… but my quick perusal of the commits makes it sound like bugfix only; no usage changes needed.
Err codemadness.org 70 i 13327
Err codemadness.org 70 i 13339Err codemadness.org 70 i 13341 Err codemadness.org 70 i 13342The most recent item on my list of “Geeky things I did that made me feel pretty awesome” is an hour’s adventure that culminated in this code:
Err codemadness.org 70 i 13340
$ file IMG* | awk 'BEGIN{a=0} {print substr($1, 1, length($1)-5),a++"_"substr($8,1, length($8)-1)}' | while read fn fr; do echo $(rename -v "s/$fn/img_$fr/g" *); done Err codemadness.org 70
i 13343 IMG_20170808_172653_425.jpg renamed as img_0_4032x3024.jpg Err codemadness.org 70
i 13344 IMG_20170808_173020_267.jpg renamed as img_1_3024x3506.jpg Err codemadness.org 70
i 13345 IMG_20170808_173130_616.jpg renamed as img_2_3024x3779.jpg Err codemadness.org 70
i 13346 IMG_20170808_173221_425.jpg renamed as img_3_3024x3780.jpg Err codemadness.org 70
i 13347 IMG_20170808_173417_059.jpg renamed as img_4_2956x2980.jpg Err codemadness.org 70
i 13348 IMG_20170808_173450_971.jpg renamed as img_5_3024x3024.jpg Err codemadness.org 70
i 13349 IMG_20170808_173536_034.jpg renamed as img_6_4032x3024.jpg Err codemadness.org 70
i 13350 IMG_20170808_173602_732.jpg renamed as img_7_1617x1617.jpg Err codemadness.org 70
i 13351 IMG_20170808_173645_339.jpg renamed as img_8_3024x3780.jpg Err codemadness.org 70
i 13352 IMG_20170909_170146_585.jpg renamed as img_9_3036x3036.jpg Err codemadness.org 70
i 13353 IMG_20170911_211522_543.jpg renamed as img_10_3036x3036.jpg Err codemadness.org 70
i 13354 IMG_20170913_071608_288.jpg renamed as img_11_2760x2760.jpg Err codemadness.org 70
i 13355 IMG_20170913_073205_522.jpg renamed as img_12_2738x2738.jpg Err codemadness.org 70
i 13356 // ... etc etc Err codemadness.org 70
i 13357 Err codemadness.org 70
i 13358 Err codemadness.org 70
i 13359 Err codemadness.org 70 i 13360Err codemadness.org 70 i 13362 Err codemadness.org 70 i 13363The last item on the aforementioned list is “TODO: come up with a shorter title for this list.”
Err codemadness.org 70 i 13361
Err codemadness.org 70 i 13368Err codemadness.org 70 i 13375 Err codemadness.org 70 i 13376d00d, that document is devilspawn. I've recently spent my nights in pain
Err codemadness.org 70 i 13370 Err codemadness.org 70 i 13371
Err codemadness.org 70 i 13369 implementing the selection mechanism. WHY OH WHY OH WHY? why me? why did I choose to do this? and what sick evil twisted mind wrote this damn spec? I don't know why I'm working with it, I just wanted to make a useful program.I didn't know what I was getting myself in to. Nobody knows until they try it. And once you start, you're unable to stop. You can't stop, if you stop then you haven't completed it to spec. You can't fail on this, it's just a few pages of text, how can that be so hard? So what if they use Atoms for everything. So what if there's no explicit correlation between the target type of a SelectionNotify event and the type of the property it indicates?
Err codemadness.org 70 i 13372 Err codemadness.org 70 i 13373So what if the distinction is ambiguous? So what if the document is littered with such atrocities? It's not the spec's fault, the spec is authoritative. It's obviously YOUR (the implementor's) fault for misunderstanding it. If you didn't misunderstand it, you wouldn't be here complaining about it would you?
Err codemadness.org 70 i 13374
Err codemadness.org 70 i 13381Err codemadness.org 70 i 13383 Err codemadness.org 70 i 13384As anyone who has been running HAMMER1 or HAMMER2 has noticed, snapshots and copy on write and infinite history can eat a lot of disk space, even if the actual file volume isn’t changing much. There’s now an ‘emergency mode‘ for HAMMER2, where disk operations can happen even if there isn’t space for the normal history activity. It’s dangerous, in that the normal protections against data loss if power is cut go away, and snapshots created while in this mode will be mangled. So definitely don’t leave it on!
Err codemadness.org 70 i 13382
Err codemadness.org 70 i 13433Err codemadness.org 70 i 13441 Err codemadness.org 70 i 13442Today is the day.
Err codemadness.org 70 i 13434 Err codemadness.org 70 i 13435Today I move a zpool from an R710 into an R720. The goal: all services on that zpool start running on the new host.
Err codemadness.org 70 i 13436 Err codemadness.org 70 i 13437Fortunately, that zpool is dedicated to jails, more or less. I have done some planning about this, including moving a poudriere on the R710 into a jail.
Err codemadness.org 70 i 13438 Err codemadness.org 70 i 13439Now it is almost noon on Saturday, I am sitting in the basement (just outside the server room), and I’m typing this up.
Err codemadness.org 70 i 13440
In this post:
Err codemadness.org 70 i 13444 Err codemadness.org 70 i 13445Err codemadness.org 70 i 13459Err codemadness.org 70 i 13469 Err codemadness.org 70 i 13470I’ve used OpenBSD on and off since 2.1. More back then than in the last 10 years or so though, so I thought I’d try it again.
Err codemadness.org 70 i 13460 Err codemadness.org 70 i 13461What triggered this was me finding a silly bug in GNU cpio that has existed with a “FIXME” comment since at least 1994. I checked OpenBSD to see if it had a related bug, but as expected no it was just fine.
Err codemadness.org 70 i 13462 Err codemadness.org 70 i 13463I don’t quite remember why I stopped using OpenBSD for servers, but I do remember filesystem corruption on “unexpected power disconnections” (even with softdep turned on), which I’ve never really seen on Linux.
Err codemadness.org 70 i 13464 Err codemadness.org 70 i 13465That and that fewer things “just worked” than with Linux, which matters more when I installed more random things than I do now. I’ve become a lot more minimalist. Probably due to less spare time. Life is better when you don’t run things like PHP (not that OpenBSD doesn’t support PHP, just an example) or your own email server with various antispam tooling, and other things.
Err codemadness.org 70 i 13466 Err codemadness.org 70 i 13467This is all experience from running OpenBSD on a server. On my next laptop I intend to try running OpenBSD on the dektop, and will see if that more ad-hoc environment works well. E.g. will gnuradio work? Lack of other-OS VM support may be a problem.
Err codemadness.org 70 i 13468
Err codemadness.org 70 i 13475Err codemadness.org 70 i 13479 Err codemadness.org 70 i 13480Ouch, that’s a long list of bad stuff. Still, I like it. I’ll continue to run it, and will make sure my stuff continues working on OpenBSD.
Err codemadness.org 70 i 13476 Err codemadness.org 70 i 13477And maybe in a year I’ll have a review of OpenBSD on a laptop.
Err codemadness.org 70 i 13478
Err codemadness.org 70 i 13487Err codemadness.org 70 i 13489 Err codemadness.org 70 i 13490zlib and dhcpcd are both updated in DragonFly… but my quick perusal of the commits makes it sound like bugfix only; no usage changes needed.
Err codemadness.org 70 i 13488
Err codemadness.org 70 i 13500Err codemadness.org 70 i 13502 Err codemadness.org 70 i 13503The most recent item on my list of “Geeky things I did that made me feel pretty awesome” is an hour’s adventure that culminated in this code:
Err codemadness.org 70 i 13501
$ file IMG* | awk 'BEGIN{a=0} {print substr($1, 1, length($1)-5),a++"_"substr($8,1, length($8)-1)}' | while read fn fr; do echo $(rename -v "s/$fn/img_$fr/g" *); done Err codemadness.org 70
i 13504 IMG_20170808_172653_425.jpg renamed as img_0_4032x3024.jpg Err codemadness.org 70
i 13505 IMG_20170808_173020_267.jpg renamed as img_1_3024x3506.jpg Err codemadness.org 70
i 13506 IMG_20170808_173130_616.jpg renamed as img_2_3024x3779.jpg Err codemadness.org 70
i 13507 IMG_20170808_173221_425.jpg renamed as img_3_3024x3780.jpg Err codemadness.org 70
i 13508 IMG_20170808_173417_059.jpg renamed as img_4_2956x2980.jpg Err codemadness.org 70
i 13509 IMG_20170808_173450_971.jpg renamed as img_5_3024x3024.jpg Err codemadness.org 70
i 13510 IMG_20170808_173536_034.jpg renamed as img_6_4032x3024.jpg Err codemadness.org 70
i 13511 IMG_20170808_173602_732.jpg renamed as img_7_1617x1617.jpg Err codemadness.org 70
i 13512 IMG_20170808_173645_339.jpg renamed as img_8_3024x3780.jpg Err codemadness.org 70
i 13513 IMG_20170909_170146_585.jpg renamed as img_9_3036x3036.jpg Err codemadness.org 70
i 13514 IMG_20170911_211522_543.jpg renamed as img_10_3036x3036.jpg Err codemadness.org 70
i 13515 IMG_20170913_071608_288.jpg renamed as img_11_2760x2760.jpg Err codemadness.org 70
i 13516 IMG_20170913_073205_522.jpg renamed as img_12_2738x2738.jpg Err codemadness.org 70
i 13517 // ... etc etc Err codemadness.org 70
i 13518 Err codemadness.org 70
i 13519 Err codemadness.org 70
i 13520 Err codemadness.org 70 i 13521Err codemadness.org 70 i 13523 Err codemadness.org 70 i 13524The last item on the aforementioned list is “TODO: come up with a shorter title for this list.”
Err codemadness.org 70 i 13522
Err codemadness.org 70 i 13529Err codemadness.org 70 i 13536 Err codemadness.org 70 i 13537d00d, that document is devilspawn. I've recently spent my nights in pain
Err codemadness.org 70 i 13531 Err codemadness.org 70 i 13532
Err codemadness.org 70 i 13530 implementing the selection mechanism. WHY OH WHY OH WHY? why me? why did I choose to do this? and what sick evil twisted mind wrote this damn spec? I don't know why I'm working with it, I just wanted to make a useful program.I didn't know what I was getting myself in to. Nobody knows until they try it. And once you start, you're unable to stop. You can't stop, if you stop then you haven't completed it to spec. You can't fail on this, it's just a few pages of text, how can that be so hard? So what if they use Atoms for everything. So what if there's no explicit correlation between the target type of a SelectionNotify event and the type of the property it indicates?
Err codemadness.org 70 i 13533 Err codemadness.org 70 i 13534So what if the distinction is ambiguous? So what if the document is littered with such atrocities? It's not the spec's fault, the spec is authoritative. It's obviously YOUR (the implementor's) fault for misunderstanding it. If you didn't misunderstand it, you wouldn't be here complaining about it would you?
Err codemadness.org 70 i 13535
Err codemadness.org 70 i 13542Err codemadness.org 70 i 13544 Err codemadness.org 70 i 13545As anyone who has been running HAMMER1 or HAMMER2 has noticed, snapshots and copy on write and infinite history can eat a lot of disk space, even if the actual file volume isn’t changing much. There’s now an ‘emergency mode‘ for HAMMER2, where disk operations can happen even if there isn’t space for the normal history activity. It’s dangerous, in that the normal protections against data loss if power is cut go away, and snapshots created while in this mode will be mangled. So definitely don’t leave it on!
Err codemadness.org 70 i 13543
Err codemadness.org 70 i 13680Err codemadness.org 70 i 13684 Err codemadness.org 70 i 13685What is it that runs the servers that hold our online world, be it the web or the cloud? What enables the mobile apps that are at the center of increasingly on-demand lives in the developed world and of mobile banking and messaging in the developing world? The answer is the operating system Unix and its many descendants: Linux, Android, BSD Unix, MacOS, iOS—the list goes on and on. Want to glimpse the Unix in your Mac? Open a Terminal window and enter “man roff” to view the Unix manual entry for an early text formatting program that lives within your operating system.
Err codemadness.org 70 i 13681 Err codemadness.org 70 i 136822019 marks the 50th anniversary of the start of Unix. In the summer of 1969, that same summer that saw humankind’s first steps on the surface of the Moon, computer scientists at the Bell Telephone Laboratories—most centrally Ken Thompson and Dennis Ritchie—began the construction of a new operating system, using a then-aging DEC PDP-7 computer at the labs.
Err codemadness.org 70 i 13683
Err codemadness.org 70 i 13694Err codemadness.org 70 i 13696 Err codemadness.org 70 i 13697It was supposed to say "log," but the computer sending the message — based at UCLA — crashed before the letter "g" was typed. A computer at Stanford 560 kilometres away was supposed to fill in the remaining characters "in," as in "log in."
Err codemadness.org 70 i 13695
Err codemadness.org 70 i 13702Err codemadness.org 70 i 13730 Err codemadness.org 70 i 13731"The idea of the network was you could sit at one computer, log on through the network to a remote computer and use its services there,"
Err codemadness.org 70 i 13703 Err codemadness.org 70 i 1370450 years later, the internet has become so ubiquitous that it has almost been rendered invisible. There's hardly an aspect in our daily lives that hasn't been touched and transformed by it.
Err codemadness.org 70 i 13705 Err codemadness.org 70 i 13706Q: Take us back to that day 50 years ago. Did you have the sense that this was going to be something you'd be talking about a half a century later?
Err codemadness.org 70 i 13707 Err codemadness.org 70 i 13708A: Well, yes and no. Four months before that message was sent, there was a press release that came out of UCLA in which it quotes me as describing what my vision for this network would become. Basically what it said is that this network would be always on, always available. Anybody with any device could get on at anytime from any location, and it would be invisible.
Err codemadness.org 70 i 13709 Err codemadness.org 70 i 13710Well, what I missed ... was that this is going to become a social network. People talking to people. Not computers talking to computers, but [the] human element.
Err codemadness.org 70 i 13711 Err codemadness.org 70 i 13712Q: Can you briefly explain what you were working on in that lab? Why were you trying to get computers to actually talk to one another?
Err codemadness.org 70 i 13713 Err codemadness.org 70 i 13714A: As an MIT graduate student, years before, I recognized I was surrounded by computers and I realized there was no effective [or efficient] way for them to communicate. I did my dissertation, my research, on establishing a mathematical theory of how these networks would work. But there was no such network existing. AT&T said it won't work and, even if it does, we want nothing to do with it.
Err codemadness.org 70 i 13715 Err codemadness.org 70 i 13716So I had to wait around for years until the Advanced Research Projects Agency within the Department of Defence decided they needed a network to connect together the computer scientists they were supervising and supporting.
Err codemadness.org 70 i 13717 Err codemadness.org 70 i 13718Q: For all the promise of the internet, it has also developed some dark sides that I'm guessing pioneers like yourselves never anticipated.
Err codemadness.org 70 i 13719 Err codemadness.org 70 i 13720A: We did not. I knew everybody on the internet at that time, and they were all well-behaved and they all believed in an open, shared free network. So we did not put in any security controls.
Err codemadness.org 70 i 13721 Err codemadness.org 70 i 13722When the first spam email occurred, we began to see the dark side emerge as this network reached nefarious people sitting in basements with a high-speed connection, reaching out to millions of people instantaneously, at no cost in time or money, anonymously until all sorts of unpleasant events occurred, which we called the dark side.
Err codemadness.org 70 i 13723 Err codemadness.org 70 i 13724But in those early days, I considered the network to be going through its teenage years. Hacking to spam, annoying kinds of effects. I thought that one day this network would mature and grow up. Well, in fact, it took a turn for the worse when nation states, organized crime and extremists came in and began to abuse the network in severe ways.
Err codemadness.org 70 i 13725 Err codemadness.org 70 i 13726Q: Is there any part of you that regrets giving birth to this?
Err codemadness.org 70 i 13727 Err codemadness.org 70 i 13728A: Absolutely not. The greater good is much more important.
Err codemadness.org 70 i 13729
Err codemadness.org 70 i 13738Err codemadness.org 70 i 13746 Err codemadness.org 70 i 13747blacklistd(8) provides an API that can be used by network daemons to communicate with a packet filter via a daemon to enforce opening and closing ports dynamically based on policy.
Err codemadness.org 70 i 13739 Err codemadness.org 70 i 13740The interface to the packet filter is in /libexec/blacklistd-helper (this is currently designed for npf) and the configuration file (inspired from inetd.conf) is in etc/blacklistd.conf
Err codemadness.org 70 i 13741 Err codemadness.org 70 i 13742Now, blacklistd(8) will require bpfjit(4) (Just-In-Time compiler for Berkeley Packet Filter) in order to properly work, in addition to, naturally, npf(7) as frontend and syslogd(8), as a backend to print diagnostic messages. Also remember npf shall rely on the npflog* virtual network interface to provide logging for tcpdump() to use.
Err codemadness.org 70 i 13743 Err codemadness.org 70 i 13744Unfortunately (dont' ask me why ??) in 8.1 all the required kernel components are still not compiled by default in the GENERIC kernel (though they are in HEAD), and are rather provided as modules. Enabling NPF and blacklistd services would normally result in them being automatically loaded as root, but predictably on securelevel=1 this is not going to happen.
Err codemadness.org 70 i 13745
Err codemadness.org 70 i 13756Err codemadness.org 70 i 13760 Err codemadness.org 70 i 13761Sometime in the last week OpenBSD crossed 400,000 commits (*) upon all our repositories since starting at 1995/10/18 08:37:01 Canada/Mountain. That's a lot of commits by a lot of amazing people.
Err codemadness.org 70 i 13757 Err codemadness.org 70 i 13758(*) by one measure. Since the repository is so large and old, there are a variety of quirks including ChangeLog missing entries and branches not convertible to other repo forms, so measuring is hard. If you think you've got a great way of measuring, don't be so sure of yourself -- you may have overcounted or undercounted.
Err codemadness.org 70 i 13759
Err codemadness.org 70 i 13771Err codemadness.org 70 i 13773 Err codemadness.org 70 i 13774Bolt is a sophisticated, lightweight and simple CMS built with PHP. It is released under the open-source MIT-license and source code is hosted as a public repository on Github. A bolt is a tool for Content Management, which strives to be as simple and straightforward as possible. It is quick to set up, easy to configure, uses elegant templates. Bolt is created using modern open-source libraries and is best suited to build sites in HTML5 with modern markup. In this tutorial, we will go through the Bolt CMS installation on FreeBSD 12 system by using Nginx as a web server, MySQL as a database server, and optionally you can secure the transport layer by using acme.sh client and Let's Encrypt certificate authority to add SSL support.
Err codemadness.org 70 i 13772
Err codemadness.org 70 i 13791Err codemadness.org 70 i 13798 Err codemadness.org 70 i 13799Refactor the XOP groups in order to be able to queue strategy calls, whenever possible, to the same CPU as the issuer. This optimizes several cases and reduces unnecessary IPI traffic between cores. The next best thing to do would be to not queue certain XOPs to an H2 support thread at all, but I would like to keep the threads intact for later clustering work.
Err codemadness.org 70 i 13793 Err codemadness.org 70 i 13794
Err codemadness.org 70 i 13792 The best scaling case for this is when one has a large number of user threads doing I/O. One instance of a single-threaded program on an otherwise idle machine might see a slightly reduction in performance but at the same time we completely avoid unnecessarily spamming all cores in the system on the behalf of a single program, so overhead is also significantly lower.This will tend to increase the number of H2 support threads since we need a certain degree of multiplication for domain separation.
Err codemadness.org 70 i 13795 Err codemadness.org 70 i 13796This should significantly increase I/O performance for multi-threaded workloads.
Err codemadness.org 70 i 13797
Err codemadness.org 70 i 13804Err codemadness.org 70 i 13808 Err codemadness.org 70 i 13809I've seen the writing on the wall, and while for now you can configure Firefox not to use DoH, I'm not confident enough to think it will remain that way. To that end, I've finally set up my own DoH server for use at Chez Boca. It only involved setting up my own CA to generate the appropriate certificates, install my CA certificate into Firefox, configure Apache to run over HTTP/2 (THANK YOU SO VERY XXXXXXX MUCH GOOGLE FOR SHOVING THIS HTTP/2 XXXXXXXX DOWN OUR THROATS!—no, I'm not bitter) and write a 150 line script that just queries my own local DNS, because, you know, it's more XXXXXXX secure or some XXXXXXXX reason like that.
Err codemadness.org 70 i 13805 Err codemadness.org 70 i 13806Sigh.
Err codemadness.org 70 i 13807
Michael - FreeNAS inside a Jail
Err codemadness.org 70 i 13831 Err codemadness.org 70 i 13832Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 13851Err codemadness.org 70 i 13855 Err codemadness.org 70 i 13856What is it that runs the servers that hold our online world, be it the web or the cloud? What enables the mobile apps that are at the center of increasingly on-demand lives in the developed world and of mobile banking and messaging in the developing world? The answer is the operating system Unix and its many descendants: Linux, Android, BSD Unix, MacOS, iOS—the list goes on and on. Want to glimpse the Unix in your Mac? Open a Terminal window and enter “man roff” to view the Unix manual entry for an early text formatting program that lives within your operating system.
Err codemadness.org 70 i 13852 Err codemadness.org 70 i 138532019 marks the 50th anniversary of the start of Unix. In the summer of 1969, that same summer that saw humankind’s first steps on the surface of the Moon, computer scientists at the Bell Telephone Laboratories—most centrally Ken Thompson and Dennis Ritchie—began the construction of a new operating system, using a then-aging DEC PDP-7 computer at the labs.
Err codemadness.org 70 i 13854
Err codemadness.org 70 i 13865Err codemadness.org 70 i 13867 Err codemadness.org 70 i 13868It was supposed to say "log," but the computer sending the message — based at UCLA — crashed before the letter "g" was typed. A computer at Stanford 560 kilometres away was supposed to fill in the remaining characters "in," as in "log in."
Err codemadness.org 70 i 13866
Err codemadness.org 70 i 13873Err codemadness.org 70 i 13901 Err codemadness.org 70 i 13902"The idea of the network was you could sit at one computer, log on through the network to a remote computer and use its services there,"
Err codemadness.org 70 i 13874 Err codemadness.org 70 i 1387550 years later, the internet has become so ubiquitous that it has almost been rendered invisible. There's hardly an aspect in our daily lives that hasn't been touched and transformed by it.
Err codemadness.org 70 i 13876 Err codemadness.org 70 i 13877Q: Take us back to that day 50 years ago. Did you have the sense that this was going to be something you'd be talking about a half a century later?
Err codemadness.org 70 i 13878 Err codemadness.org 70 i 13879A: Well, yes and no. Four months before that message was sent, there was a press release that came out of UCLA in which it quotes me as describing what my vision for this network would become. Basically what it said is that this network would be always on, always available. Anybody with any device could get on at anytime from any location, and it would be invisible.
Err codemadness.org 70 i 13880 Err codemadness.org 70 i 13881Well, what I missed ... was that this is going to become a social network. People talking to people. Not computers talking to computers, but [the] human element.
Err codemadness.org 70 i 13882 Err codemadness.org 70 i 13883Q: Can you briefly explain what you were working on in that lab? Why were you trying to get computers to actually talk to one another?
Err codemadness.org 70 i 13884 Err codemadness.org 70 i 13885A: As an MIT graduate student, years before, I recognized I was surrounded by computers and I realized there was no effective [or efficient] way for them to communicate. I did my dissertation, my research, on establishing a mathematical theory of how these networks would work. But there was no such network existing. AT&T said it won't work and, even if it does, we want nothing to do with it.
Err codemadness.org 70 i 13886 Err codemadness.org 70 i 13887So I had to wait around for years until the Advanced Research Projects Agency within the Department of Defence decided they needed a network to connect together the computer scientists they were supervising and supporting.
Err codemadness.org 70 i 13888 Err codemadness.org 70 i 13889Q: For all the promise of the internet, it has also developed some dark sides that I'm guessing pioneers like yourselves never anticipated.
Err codemadness.org 70 i 13890 Err codemadness.org 70 i 13891A: We did not. I knew everybody on the internet at that time, and they were all well-behaved and they all believed in an open, shared free network. So we did not put in any security controls.
Err codemadness.org 70 i 13892 Err codemadness.org 70 i 13893When the first spam email occurred, we began to see the dark side emerge as this network reached nefarious people sitting in basements with a high-speed connection, reaching out to millions of people instantaneously, at no cost in time or money, anonymously until all sorts of unpleasant events occurred, which we called the dark side.
Err codemadness.org 70 i 13894 Err codemadness.org 70 i 13895But in those early days, I considered the network to be going through its teenage years. Hacking to spam, annoying kinds of effects. I thought that one day this network would mature and grow up. Well, in fact, it took a turn for the worse when nation states, organized crime and extremists came in and began to abuse the network in severe ways.
Err codemadness.org 70 i 13896 Err codemadness.org 70 i 13897Q: Is there any part of you that regrets giving birth to this?
Err codemadness.org 70 i 13898 Err codemadness.org 70 i 13899A: Absolutely not. The greater good is much more important.
Err codemadness.org 70 i 13900
Err codemadness.org 70 i 13909Err codemadness.org 70 i 13917 Err codemadness.org 70 i 13918blacklistd(8) provides an API that can be used by network daemons to communicate with a packet filter via a daemon to enforce opening and closing ports dynamically based on policy.
Err codemadness.org 70 i 13910 Err codemadness.org 70 i 13911The interface to the packet filter is in /libexec/blacklistd-helper (this is currently designed for npf) and the configuration file (inspired from inetd.conf) is in etc/blacklistd.conf
Err codemadness.org 70 i 13912 Err codemadness.org 70 i 13913Now, blacklistd(8) will require bpfjit(4) (Just-In-Time compiler for Berkeley Packet Filter) in order to properly work, in addition to, naturally, npf(7) as frontend and syslogd(8), as a backend to print diagnostic messages. Also remember npf shall rely on the npflog* virtual network interface to provide logging for tcpdump() to use.
Err codemadness.org 70 i 13914 Err codemadness.org 70 i 13915Unfortunately (dont' ask me why ??) in 8.1 all the required kernel components are still not compiled by default in the GENERIC kernel (though they are in HEAD), and are rather provided as modules. Enabling NPF and blacklistd services would normally result in them being automatically loaded as root, but predictably on securelevel=1 this is not going to happen.
Err codemadness.org 70 i 13916
Err codemadness.org 70 i 13927Err codemadness.org 70 i 13931 Err codemadness.org 70 i 13932Sometime in the last week OpenBSD crossed 400,000 commits (*) upon all our repositories since starting at 1995/10/18 08:37:01 Canada/Mountain. That's a lot of commits by a lot of amazing people.
Err codemadness.org 70 i 13928 Err codemadness.org 70 i 13929(*) by one measure. Since the repository is so large and old, there are a variety of quirks including ChangeLog missing entries and branches not convertible to other repo forms, so measuring is hard. If you think you've got a great way of measuring, don't be so sure of yourself -- you may have overcounted or undercounted.
Err codemadness.org 70 i 13930
Err codemadness.org 70 i 13942Err codemadness.org 70 i 13944 Err codemadness.org 70 i 13945Bolt is a sophisticated, lightweight and simple CMS built with PHP. It is released under the open-source MIT-license and source code is hosted as a public repository on Github. A bolt is a tool for Content Management, which strives to be as simple and straightforward as possible. It is quick to set up, easy to configure, uses elegant templates. Bolt is created using modern open-source libraries and is best suited to build sites in HTML5 with modern markup. In this tutorial, we will go through the Bolt CMS installation on FreeBSD 12 system by using Nginx as a web server, MySQL as a database server, and optionally you can secure the transport layer by using acme.sh client and Let's Encrypt certificate authority to add SSL support.
Err codemadness.org 70 i 13943
Err codemadness.org 70 i 13962Err codemadness.org 70 i 13969 Err codemadness.org 70 i 13970Refactor the XOP groups in order to be able to queue strategy calls, whenever possible, to the same CPU as the issuer. This optimizes several cases and reduces unnecessary IPI traffic between cores. The next best thing to do would be to not queue certain XOPs to an H2 support thread at all, but I would like to keep the threads intact for later clustering work.
Err codemadness.org 70 i 13964 Err codemadness.org 70 i 13965
Err codemadness.org 70 i 13963 The best scaling case for this is when one has a large number of user threads doing I/O. One instance of a single-threaded program on an otherwise idle machine might see a slightly reduction in performance but at the same time we completely avoid unnecessarily spamming all cores in the system on the behalf of a single program, so overhead is also significantly lower.This will tend to increase the number of H2 support threads since we need a certain degree of multiplication for domain separation.
Err codemadness.org 70 i 13966 Err codemadness.org 70 i 13967This should significantly increase I/O performance for multi-threaded workloads.
Err codemadness.org 70 i 13968
Err codemadness.org 70 i 13975Err codemadness.org 70 i 13979 Err codemadness.org 70 i 13980I've seen the writing on the wall, and while for now you can configure Firefox not to use DoH, I'm not confident enough to think it will remain that way. To that end, I've finally set up my own DoH server for use at Chez Boca. It only involved setting up my own CA to generate the appropriate certificates, install my CA certificate into Firefox, configure Apache to run over HTTP/2 (THANK YOU SO VERY XXXXXXX MUCH GOOGLE FOR SHOVING THIS HTTP/2 XXXXXXXX DOWN OUR THROATS!—no, I'm not bitter) and write a 150 line script that just queries my own local DNS, because, you know, it's more XXXXXXX secure or some XXXXXXXX reason like that.
Err codemadness.org 70 i 13976 Err codemadness.org 70 i 13977Sigh.
Err codemadness.org 70 i 13978
Michael - FreeNAS inside a Jail
Err codemadness.org 70 i 14002 Err codemadness.org 70 i 14003Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Err codemadness.org 70 i 14131Err codemadness.org 70 i 14133 Err codemadness.org 70 i 14134In the summer of 1969 computer scientists Ken Thompson and Dennis Ritchie created the first implementation of Unix with the goal of designing an elegant and economical operating system for a little-used PDP-7 minicomputer at Bell Labs. That modest project, however, would have a far-reaching legacy. Unix made large-scale networking of diverse computing systems — and the Internet — practical. The Unix team went on to develop the C language, which brought an unprecedented combination of efficiency and expressiveness to programming. Both made computing more "portable". Today, Linux, the most popular descendent of Unix, powers the vast majority of servers, and elements of Unix and Linux are found in most mobile devices. Meanwhile C++ remains one of the most widely used programming languages today. Unix may be a half-century old but its influence is only growing.
Err codemadness.org 70 i 14132
Err codemadness.org 70 i 14139Err codemadness.org 70 i 14141 Err codemadness.org 70 i 14142In my prior blog post, I traced Ken's scrounged PDP-7 to SN 34. In this post I'll show that we have actual video footage of that PDP-7 due to an old film from Bell Labs. this gives us almost a minute of footage of the PDP-7 Ken later used to create Unix.
Err codemadness.org 70 i 14140
Err codemadness.org 70 i 14159Err codemadness.org 70 i 14161 Err codemadness.org 70 i 14162Hello friends and followers, Lots of plugin and ports updates this time with a few minor improvements in all core areas. Behind the scenes we are starting to migrate the base system to version
Err codemadness.org 70 i 14160
12.1 which is supposed to hit the next 20.1 release. Stay tuned for more infos in the next month or so.
Err codemadness.org 70 i 14163 Err codemadness.org 70 i 14164Here are the full patch notes:
Err codemadness.org 70 i 14165 Err codemadness.org 70 i 14166Err codemadness.org 70 i 14207Err codemadness.org 70 i 14213 Err codemadness.org 70 i 14214Since the release of 19.09, I have seen a lot of misunderstandings on what is GhostBSD and the future of GhostBSD. GhostBSD is based on TrueOS with FreeBSD 12 STABLE with our twist to it. We are still continuing to use TrueOS for OpenRC, and the new package's system for the base system that is built from ports. GhostBSD is becoming a slow-moving rolling release base on the latest TrueOS with FreeBSD 12 STABLE. When FreeBSD 13 STABLE gets released, GhostBSD will be upgraded to TrueOS with FreeBSD 13 STABLE.
Err codemadness.org 70 i 14208 Err codemadness.org 70 i 14209Our official desktop is MATE, which means that the leading developer of GhostBSD does not officially support XFCE. Community releases are maintained by the community and for the community. GhostBSD project will provide help to build and to host the community release. If anyone wants to have a particular desktop supported, it is up to the community. Sure I will help where I can, answer questions and guide new community members that contribute to community release.
Err codemadness.org 70 i 14210 Err codemadness.org 70 i 14211There is some effort going on for Plasma5 desktop. If anyone is interested in helping with XFCE and Plasma5 or in creating another community release, you are well come to contribute. Also, Contribution to the GhostBSD base system, to ports and new ports, and in house software are welcome. We are mostly active on Telegram https://t.me/ghostbsd, but you can also reach us on the forum.
Err codemadness.org 70 i 14212
Err codemadness.org 70 i 14219Err codemadness.org 70 i 14221 Err codemadness.org 70 i 14222Looking for a lightweight VPN client, but are not ready to spend a monthly recurring amount on a VPN? VPNs can be expensive depending upon the quality of service and amount of privacy you want. A good VPN plan can easily set you back by 10$ a month and even that doesn’t guarantee your privacy. There is no way to be sure whether the VPN is storing your confidential information and traffic logs or not. sshuttle is the answer to your problem it provides VPN over ssh and in this article we’re going to explore this cheap yet powerful alternative to the expensive VPNs. By using open source tools you can control your own privacy.
Err codemadness.org 70 i 14220
Err codemadness.org 70 i 14227Err codemadness.org 70 i 14229 Err codemadness.org 70 i 14230sshuttle is an awesome program that allows you to create a VPN connection from your local machine to any remote server that you have ssh access on. The tunnel established over the ssh connection can then be used to route all your traffic from client machine through the remote machine including all the dns traffic. In the bare bones sshuttle is just a proxy server which runs on the client machine and forwards all the traffic to a ssh tunnel. Since its open source it holds quite a lot of major advantages over traditional VPN.
Err codemadness.org 70 i 14228
Security
Err codemadness.org 70 i 14236 Err codemadness.org 70 i 14237This release includes a number of changes that may affect existing configurations:
Err codemadness.org 70 i 14242 Err codemadness.org 70 i 14243New Features
Err codemadness.org 70 i 14247 Err codemadness.org 70 i 14248Err codemadness.org 70 i 14309Err codemadness.org 70 i 14311 Err codemadness.org 70 i 14312In the summer of 1969 computer scientists Ken Thompson and Dennis Ritchie created the first implementation of Unix with the goal of designing an elegant and economical operating system for a little-used PDP-7 minicomputer at Bell Labs. That modest project, however, would have a far-reaching legacy. Unix made large-scale networking of diverse computing systems — and the Internet — practical. The Unix team went on to develop the C language, which brought an unprecedented combination of efficiency and expressiveness to programming. Both made computing more "portable". Today, Linux, the most popular descendent of Unix, powers the vast majority of servers, and elements of Unix and Linux are found in most mobile devices. Meanwhile C++ remains one of the most widely used programming languages today. Unix may be a half-century old but its influence is only growing.
Err codemadness.org 70 i 14310
Err codemadness.org 70 i 14317Err codemadness.org 70 i 14319 Err codemadness.org 70 i 14320In my prior blog post, I traced Ken's scrounged PDP-7 to SN 34. In this post I'll show that we have actual video footage of that PDP-7 due to an old film from Bell Labs. this gives us almost a minute of footage of the PDP-7 Ken later used to create Unix.
Err codemadness.org 70 i 14318
Err codemadness.org 70 i 14337Err codemadness.org 70 i 14339 Err codemadness.org 70 i 14340Hello friends and followers, Lots of plugin and ports updates this time with a few minor improvements in all core areas. Behind the scenes we are starting to migrate the base system to version
Err codemadness.org 70 i 14338
12.1 which is supposed to hit the next 20.1 release. Stay tuned for more infos in the next month or so.
Err codemadness.org 70 i 14341 Err codemadness.org 70 i 14342Here are the full patch notes:
Err codemadness.org 70 i 14343 Err codemadness.org 70 i 14344Err codemadness.org 70 i 14385Err codemadness.org 70 i 14391 Err codemadness.org 70 i 14392Since the release of 19.09, I have seen a lot of misunderstandings on what is GhostBSD and the future of GhostBSD. GhostBSD is based on TrueOS with FreeBSD 12 STABLE with our twist to it. We are still continuing to use TrueOS for OpenRC, and the new package's system for the base system that is built from ports. GhostBSD is becoming a slow-moving rolling release base on the latest TrueOS with FreeBSD 12 STABLE. When FreeBSD 13 STABLE gets released, GhostBSD will be upgraded to TrueOS with FreeBSD 13 STABLE.
Err codemadness.org 70 i 14386 Err codemadness.org 70 i 14387Our official desktop is MATE, which means that the leading developer of GhostBSD does not officially support XFCE. Community releases are maintained by the community and for the community. GhostBSD project will provide help to build and to host the community release. If anyone wants to have a particular desktop supported, it is up to the community. Sure I will help where I can, answer questions and guide new community members that contribute to community release.
Err codemadness.org 70 i 14388 Err codemadness.org 70 i 14389There is some effort going on for Plasma5 desktop. If anyone is interested in helping with XFCE and Plasma5 or in creating another community release, you are well come to contribute. Also, Contribution to the GhostBSD base system, to ports and new ports, and in house software are welcome. We are mostly active on Telegram https://t.me/ghostbsd, but you can also reach us on the forum.
Err codemadness.org 70 i 14390
Err codemadness.org 70 i 14397Err codemadness.org 70 i 14399 Err codemadness.org 70 i 14400Looking for a lightweight VPN client, but are not ready to spend a monthly recurring amount on a VPN? VPNs can be expensive depending upon the quality of service and amount of privacy you want. A good VPN plan can easily set you back by 10$ a month and even that doesn’t guarantee your privacy. There is no way to be sure whether the VPN is storing your confidential information and traffic logs or not. sshuttle is the answer to your problem it provides VPN over ssh and in this article we’re going to explore this cheap yet powerful alternative to the expensive VPNs. By using open source tools you can control your own privacy.
Err codemadness.org 70 i 14398
Err codemadness.org 70 i 14405Err codemadness.org 70 i 14407 Err codemadness.org 70 i 14408sshuttle is an awesome program that allows you to create a VPN connection from your local machine to any remote server that you have ssh access on. The tunnel established over the ssh connection can then be used to route all your traffic from client machine through the remote machine including all the dns traffic. In the bare bones sshuttle is just a proxy server which runs on the client machine and forwards all the traffic to a ssh tunnel. Since its open source it holds quite a lot of major advantages over traditional VPN.
Err codemadness.org 70 i 14406
Security
Err codemadness.org 70 i 14414 Err codemadness.org 70 i 14415This release includes a number of changes that may affect existing configurations:
Err codemadness.org 70 i 14420 Err codemadness.org 70 i 14421New Features
Err codemadness.org 70 i 14425 Err codemadness.org 70 i 14426Robot OS on FreeBSD
Err codemadness.org 70 i 14525 Err codemadness.org 70 i 14526Special Guest: Trenton Shulz.
]]> Err codemadness.org 70 i 14559Robot OS on FreeBSD
Err codemadness.org 70 i 14566 Err codemadness.org 70 i 14567Special Guest: Trenton Shulz.
]]> Err codemadness.org 70 i 14600Err codemadness.org 70 i 14724Err codemadness.org 70 i 14726 Err codemadness.org 70 i 14727Back in 2015, I jumped on the ThinkPad bandwagon by getting an X240 to run FreeBSD on. Unlike most people in the ThinkPad crowd, I actually liked the clickpad and didn\u2019t use the trackpoint much. But this summer I\u2019ve decided that it was time for something newer. I wanted something..
Err codemadness.org 70 i 14725
Err codemadness.org 70 i 14739Err codemadness.org 70 i 14745 Err codemadness.org 70 i 14746I was considering a ThinkPad X1 Carbon from an old generation - the one from the same year as the X230 is corebootable, so that\u2019s fun. But going back in processor generations just doesn\u2019t feel great. I want something more efficient, not less!
Err codemadness.org 70 i 14740 Err codemadness.org 70 i 14741And then I discovered the Pixelbook. Other than the big huge large bezels around the screen, I liked everything about it. Thin aluminum design, a 3:2 HiDPI screen, rubber palm rests (why isn\u2019t every laptop ever doing that?!), the \u201cconvertibleness\u201d (flip the screen around to turn it into.. something rather big for a tablet, but it is useful actually), a Wacom touchscreen that supports a pen, mostly reasonable hardware (Intel Wi-Fi), and that famous coreboot support (Chromebooks\u2019 stock firmware is coreboot + depthcharge).
Err codemadness.org 70 i 14742 Err codemadness.org 70 i 14743So here it is, my new laptop, a Google Pixelbook.
Err codemadness.org 70 i 14744
Err codemadness.org 70 i 14751Err codemadness.org 70 i 14755 Err codemadness.org 70 i 14756Pixelbook, FreeBSD, coreboot, EDK2 good.
Err codemadness.org 70 i 14752 Err codemadness.org 70 i 14753Seriously, I have no big words to say, other than just recommending this laptop to FOSS enthusiasts :)
Err codemadness.org 70 i 14754
Err codemadness.org 70 i 14765Err codemadness.org 70 i 14767 Err codemadness.org 70 i 14768NetBSD is known as a very portable operating system, currently running on 44 different architectures (12 different types of CPU). This paper takes a look at what has been done to make it portable, and how this has decreased the amount of effort needed to port NetBSD to a new architecture. The new AMD x86-64 architecture, of which the specifications were published at the end of 2000, with hardware to follow in 2002, is used as an example.
Err codemadness.org 70 i 14766
Err codemadness.org 70 i 14773Err codemadness.org 70 i 14775 Err codemadness.org 70 i 14776Supporting multiple platforms was a primary goal of the NetBSD project from the start. As NetBSD was ported to more and more platforms, the NetBSD kernel code was adapted to become more portable along the way.
Err codemadness.org 70 i 14774
Err codemadness.org 70 i 14781Err codemadness.org 70 i 14783 Err codemadness.org 70 i 14784Generally, code is shared between ports as much as possible. In NetBSD, it should always be considered if the code can be assumed to be useful on other architectures, present or future. If so, it is machine-independent and put it in an appropriate place in the source tree. When writing code that is intended to be machine-independent, and it contains conditional preprocessor statements depending on the architecture, then the code is likely wrong, or an extra abstraction layer is needed to get rid of these statements.
Err codemadness.org 70 i 14782
Err codemadness.org 70 i 14789Err codemadness.org 70 i 14791 Err codemadness.org 70 i 14792Assumptions about the size of any type are not made. Assumptions made about type sizes on 32-bit platforms were a large problem when 64-bit platforms came around. Most of the problems of this kind had to be dealt with when NetBSD was ported to the DEC Alpha in 1994. A variation on this problem had to be dealt with with the UltraSPARC (sparc64) port in 1998, which is 64-bit, but big endian (vs. the little-endianness of the Alpha). When interacting with datastructures of a fixed size, such as on-disk metadata for filesystems, or datastructures directly interpreted by device hardware, explicitly sized types are used, such as uint32_t, int8_t, etc.
Err codemadness.org 70 i 14790
Err codemadness.org 70 i 14797Err codemadness.org 70 i 14799 Err codemadness.org 70 i 14800The port of NetBSD to AMD's x86-64 architecture was done in six weeks, which confirms NetBSD's reputation as being a very portable operating system. One week was spent setting up the cross-toolchain and reading the x86-64 specifications, three weeks were spent writing the kernel code, one week was spent writing the userspace code, and one week testing and debugging it all. No problems were observed in any of the machine-independent parts of the kernel during test runs; all (simulated) device drivers, file systems, etc, worked without modification.
Err codemadness.org 70 i 14798
Err codemadness.org 70 i 14807Err codemadness.org 70 i 14809 Err codemadness.org 70 i 14810Every so often (currently monthly), there is an "OpenZFS leadership meeting". What this really means is 'lead developers from the various ZFS implementations get together to talk about things'. Announcements and meeting notes from these meetings get sent out to various mailing lists, including the ZFS on Linux ones.
Err codemadness.org 70 i 14808
Err codemadness.org 70 i 14821Err codemadness.org 70 i 14827 Err codemadness.org 70 i 14828This is very interesting to me because of two reasons. First, in the past we have definitely seen significant problems on our OmniOS machines, both when an entire pool hits a quota limit and when a single filesystem hits a refquota limit. It's nice to know that this wasn't just our imagination and that there is a real issue here. Even better, it might someday be improved (and perhaps in a way that we can use at least some of the time).
Err codemadness.org 70 i 14822 Err codemadness.org 70 i 14823Second, any number of people here run very close to and sometimes at the quota limits of both filesystems and pools, fundamentally because people aren't willing to buy more space. We have in the past assumed that this was relatively harmless and would only make people run out of space. If this is a known issue that causes serious performance degradation, well, I don't know if there's anything we can do, but at least we're going to have to think about it and maybe push harder at people. The first step will have to be learning the details of what's going on at the ZFS level to cause the slowdown. (It's apparently similar to what happens when the pool is almost full, but I don't know the specifics of that either.)
Err codemadness.org 70 i 14824 Err codemadness.org 70 i 14825With that said, we don't seem to have seen clear adverse effects on our Linux fileservers, and they've definitely run into quota limits (repeatedly). One possible reason for this is that having lots of RAM and SSDs makes the effects mostly go away. Another possible reason is that we haven't been looking closely enough to see that we're experiencing global slowdowns that correlate to filesystems hitting quota limits. We've had issues before with somewhat subtle slowdowns that we didn't understand (cf), so I can't discount that we're having it happen again.
Err codemadness.org 70 i 14826
Err codemadness.org 70 i 14833Err codemadness.org 70 i 14843 Err codemadness.org 70 i 14844I'll preface this by saying - yes, I'm still neck deep in FreeBSD's wifi stack and 802.11ac support, but it turns out it's slow work to fix 15 year old locking related issues that worked fine on 11abg cards, kinda worked ok on 11n cards, and are terrible for these 11ac cards. I'll .. get there.
Err codemadness.org 70 i 14834 Err codemadness.org 70 i 14835Anyhoo, I've finally been mucking around with AX.25 packet radio. I've been wanting to do this since I was a teenager and found out about its existence, but back in high school and .. well, until a few years ago really .. I didn't have my amateur radio licence. But, now I do, and I've done a bunch of other stuff with a bunch of other radios. The main stumbling block? All my devices are either Apple products or run FreeBSD - and none of them have useful AX.25 stacks. The main stacks of choice these days run on Linux, Windows or are a full hardware TNC.
Err codemadness.org 70 i 14836 Err codemadness.org 70 i 14837So yes, I was avoiding hacking on AX.25 stuff because there wasn't a BSD compatible AX.25 stack. I'm 40 now, leave me be.
Err codemadness.org 70 i 14838 Err codemadness.org 70 i 14839But! A few weeks ago I found that someone was still running a packet BBS out of San Francisco. And amazingly, his local node ran on FreeBSD! It turns out Jeremy (KK6JJJ) ported both an old copy of KA9Q and N0ARY-BBS to run on FreeBSD! Cool!
Err codemadness.org 70 i 14840 Err codemadness.org 70 i 14841I grabbed my 2m radio (which is already cabled up for digital modes), compiled up his KA9Q port, figured out how to get it to speak to Direwolf, and .. ok. Well, it worked. Kinda.
Err codemadness.org 70 i 14842
Err codemadness.org 70 i 14849Err codemadness.org 70 i 14851 Err codemadness.org 70 i 14852HAMMER2 is Copy on Write, meaning changes are made to copies of existing data. This means operations are generally atomic and can survive a power outage, etc. (You should read up on it!) However, there\u2019s now a fsck command, useful if you want a report of data validity rather than any manual repair process.
Err codemadness.org 70 i 14850
Mark Kettenis (kettenis@) has recently committed changes which restore a certain amount of startx(1)/xinit(1) functionality for non-root users. The commit messages explain the situation:
Err codemadness.org 70 i 14857 Err codemadness.org 70 i 14858CVSROOT: /cvs Err codemadness.org 70
i 14859 Module name: src Err codemadness.org 70
i 14860 Changes by: kettenis@cvs.openbsd.org 2019/09/15 06:25:41 Err codemadness.org 70
i 14861 Err codemadness.org 70
i 14862 Modified files: Err codemadness.org 70
i 14863 etc/etc.amd64 : fbtab Err codemadness.org 70
i 14864 etc/etc.arm64 : fbtab Err codemadness.org 70
i 14865 etc/etc.hppa : fbtab Err codemadness.org 70
i 14866 etc/etc.i386 : fbtab Err codemadness.org 70
i 14867 etc/etc.loongson: fbtab Err codemadness.org 70
i 14868 etc/etc.luna88k: fbtab Err codemadness.org 70
i 14869 etc/etc.macppc : fbtab Err codemadness.org 70
i 14870 etc/etc.octeon : fbtab Err codemadness.org 70
i 14871 etc/etc.sgi : fbtab Err codemadness.org 70
i 14872 etc/etc.sparc64: fbtab Err codemadness.org 70
i 14873 Err codemadness.org 70
i 14874 Log message: Err codemadness.org 70
i 14875 Add ttyC4 to lost of devices to change when logging in on ttyC0 (and in some cases also the serial console) such that X can use it as its VT when running without root privileges. Err codemadness.org 70
i 14876 Err codemadness.org 70
i 14877 ok jsg@, matthieu@ Err codemadness.org 70
i 14878 CVSROOT: /cvs Err codemadness.org 70
i 14879 Module name: xenocara Err codemadness.org 70
i 14880 Changes by: kettenis@cvs.openbsd.org 2019/09/15 06:31:08 Err codemadness.org 70
i 14881 Err codemadness.org 70
i 14882 Modified files: Err codemadness.org 70
i 14883 xserver/hw/xfree86/common: xf86AutoConfig.c Err codemadness.org 70
i 14884 Err codemadness.org 70
i 14885 Log message: Err codemadness.org 70
i 14886 Add modesetting driver as a fall-back when appropriate such that we can use it when running without root privileges which prevents us from scanning the PCI bus. Err codemadness.org 70
i 14887 Err codemadness.org 70
i 14888 This makes startx(1)/xinit(1) work again on modern systems with inteldrm(4), radeondrm(4) and amdgpu(4). In some cases this will result in using a different driver than with xenodm(4) which may expose issues (e.g. when we prefer the intel Xorg driver) or loss of acceleration (e.g. older cards supported by radeondrm(4)). Err codemadness.org 70
i 14889 Err codemadness.org 70
i 14890 ok jsg@, matthieu@ Err codemadness.org 70
i 14891 Err codemadness.org 70
i 14892 Err codemadness.org 70
i 14893 Err codemadness.org 70 i 14939Err codemadness.org 70 i 14941 Err codemadness.org 70 i 14942Back in 2015, I jumped on the ThinkPad bandwagon by getting an X240 to run FreeBSD on. Unlike most people in the ThinkPad crowd, I actually liked the clickpad and didn\u2019t use the trackpoint much. But this summer I\u2019ve decided that it was time for something newer. I wanted something..
Err codemadness.org 70 i 14940
Err codemadness.org 70 i 14954Err codemadness.org 70 i 14960 Err codemadness.org 70 i 14961I was considering a ThinkPad X1 Carbon from an old generation - the one from the same year as the X230 is corebootable, so that\u2019s fun. But going back in processor generations just doesn\u2019t feel great. I want something more efficient, not less!
Err codemadness.org 70 i 14955 Err codemadness.org 70 i 14956And then I discovered the Pixelbook. Other than the big huge large bezels around the screen, I liked everything about it. Thin aluminum design, a 3:2 HiDPI screen, rubber palm rests (why isn\u2019t every laptop ever doing that?!), the \u201cconvertibleness\u201d (flip the screen around to turn it into.. something rather big for a tablet, but it is useful actually), a Wacom touchscreen that supports a pen, mostly reasonable hardware (Intel Wi-Fi), and that famous coreboot support (Chromebooks\u2019 stock firmware is coreboot + depthcharge).
Err codemadness.org 70 i 14957 Err codemadness.org 70 i 14958So here it is, my new laptop, a Google Pixelbook.
Err codemadness.org 70 i 14959
Err codemadness.org 70 i 14966Err codemadness.org 70 i 14970 Err codemadness.org 70 i 14971Pixelbook, FreeBSD, coreboot, EDK2 good.
Err codemadness.org 70 i 14967 Err codemadness.org 70 i 14968Seriously, I have no big words to say, other than just recommending this laptop to FOSS enthusiasts :)
Err codemadness.org 70 i 14969
Err codemadness.org 70 i 14980Err codemadness.org 70 i 14982 Err codemadness.org 70 i 14983NetBSD is known as a very portable operating system, currently running on 44 different architectures (12 different types of CPU). This paper takes a look at what has been done to make it portable, and how this has decreased the amount of effort needed to port NetBSD to a new architecture. The new AMD x86-64 architecture, of which the specifications were published at the end of 2000, with hardware to follow in 2002, is used as an example.
Err codemadness.org 70 i 14981
Err codemadness.org 70 i 14988Err codemadness.org 70 i 14990 Err codemadness.org 70 i 14991Supporting multiple platforms was a primary goal of the NetBSD project from the start. As NetBSD was ported to more and more platforms, the NetBSD kernel code was adapted to become more portable along the way.
Err codemadness.org 70 i 14989
Err codemadness.org 70 i 14996Err codemadness.org 70 i 14998 Err codemadness.org 70 i 14999Generally, code is shared between ports as much as possible. In NetBSD, it should always be considered if the code can be assumed to be useful on other architectures, present or future. If so, it is machine-independent and put it in an appropriate place in the source tree. When writing code that is intended to be machine-independent, and it contains conditional preprocessor statements depending on the architecture, then the code is likely wrong, or an extra abstraction layer is needed to get rid of these statements.
Err codemadness.org 70 i 14997
Err codemadness.org 70 i 15004Err codemadness.org 70 i 15006 Err codemadness.org 70 i 15007Assumptions about the size of any type are not made. Assumptions made about type sizes on 32-bit platforms were a large problem when 64-bit platforms came around. Most of the problems of this kind had to be dealt with when NetBSD was ported to the DEC Alpha in 1994. A variation on this problem had to be dealt with with the UltraSPARC (sparc64) port in 1998, which is 64-bit, but big endian (vs. the little-endianness of the Alpha). When interacting with datastructures of a fixed size, such as on-disk metadata for filesystems, or datastructures directly interpreted by device hardware, explicitly sized types are used, such as uint32_t, int8_t, etc.
Err codemadness.org 70 i 15005
Err codemadness.org 70 i 15012Err codemadness.org 70 i 15014 Err codemadness.org 70 i 15015The port of NetBSD to AMD's x86-64 architecture was done in six weeks, which confirms NetBSD's reputation as being a very portable operating system. One week was spent setting up the cross-toolchain and reading the x86-64 specifications, three weeks were spent writing the kernel code, one week was spent writing the userspace code, and one week testing and debugging it all. No problems were observed in any of the machine-independent parts of the kernel during test runs; all (simulated) device drivers, file systems, etc, worked without modification.
Err codemadness.org 70 i 15013
Err codemadness.org 70 i 15022Err codemadness.org 70 i 15024 Err codemadness.org 70 i 15025Every so often (currently monthly), there is an "OpenZFS leadership meeting". What this really means is 'lead developers from the various ZFS implementations get together to talk about things'. Announcements and meeting notes from these meetings get sent out to various mailing lists, including the ZFS on Linux ones.
Err codemadness.org 70 i 15023
Err codemadness.org 70 i 15036Err codemadness.org 70 i 15042 Err codemadness.org 70 i 15043This is very interesting to me because of two reasons. First, in the past we have definitely seen significant problems on our OmniOS machines, both when an entire pool hits a quota limit and when a single filesystem hits a refquota limit. It's nice to know that this wasn't just our imagination and that there is a real issue here. Even better, it might someday be improved (and perhaps in a way that we can use at least some of the time).
Err codemadness.org 70 i 15037 Err codemadness.org 70 i 15038Second, any number of people here run very close to and sometimes at the quota limits of both filesystems and pools, fundamentally because people aren't willing to buy more space. We have in the past assumed that this was relatively harmless and would only make people run out of space. If this is a known issue that causes serious performance degradation, well, I don't know if there's anything we can do, but at least we're going to have to think about it and maybe push harder at people. The first step will have to be learning the details of what's going on at the ZFS level to cause the slowdown. (It's apparently similar to what happens when the pool is almost full, but I don't know the specifics of that either.)
Err codemadness.org 70 i 15039 Err codemadness.org 70 i 15040With that said, we don't seem to have seen clear adverse effects on our Linux fileservers, and they've definitely run into quota limits (repeatedly). One possible reason for this is that having lots of RAM and SSDs makes the effects mostly go away. Another possible reason is that we haven't been looking closely enough to see that we're experiencing global slowdowns that correlate to filesystems hitting quota limits. We've had issues before with somewhat subtle slowdowns that we didn't understand (cf), so I can't discount that we're having it happen again.
Err codemadness.org 70 i 15041
Err codemadness.org 70 i 15048Err codemadness.org 70 i 15058 Err codemadness.org 70 i 15059I'll preface this by saying - yes, I'm still neck deep in FreeBSD's wifi stack and 802.11ac support, but it turns out it's slow work to fix 15 year old locking related issues that worked fine on 11abg cards, kinda worked ok on 11n cards, and are terrible for these 11ac cards. I'll .. get there.
Err codemadness.org 70 i 15049 Err codemadness.org 70 i 15050Anyhoo, I've finally been mucking around with AX.25 packet radio. I've been wanting to do this since I was a teenager and found out about its existence, but back in high school and .. well, until a few years ago really .. I didn't have my amateur radio licence. But, now I do, and I've done a bunch of other stuff with a bunch of other radios. The main stumbling block? All my devices are either Apple products or run FreeBSD - and none of them have useful AX.25 stacks. The main stacks of choice these days run on Linux, Windows or are a full hardware TNC.
Err codemadness.org 70 i 15051 Err codemadness.org 70 i 15052So yes, I was avoiding hacking on AX.25 stuff because there wasn't a BSD compatible AX.25 stack. I'm 40 now, leave me be.
Err codemadness.org 70 i 15053 Err codemadness.org 70 i 15054But! A few weeks ago I found that someone was still running a packet BBS out of San Francisco. And amazingly, his local node ran on FreeBSD! It turns out Jeremy (KK6JJJ) ported both an old copy of KA9Q and N0ARY-BBS to run on FreeBSD! Cool!
Err codemadness.org 70 i 15055 Err codemadness.org 70 i 15056I grabbed my 2m radio (which is already cabled up for digital modes), compiled up his KA9Q port, figured out how to get it to speak to Direwolf, and .. ok. Well, it worked. Kinda.
Err codemadness.org 70 i 15057
Err codemadness.org 70 i 15064Err codemadness.org 70 i 15066 Err codemadness.org 70 i 15067HAMMER2 is Copy on Write, meaning changes are made to copies of existing data. This means operations are generally atomic and can survive a power outage, etc. (You should read up on it!) However, there\u2019s now a fsck command, useful if you want a report of data validity rather than any manual repair process.
Err codemadness.org 70 i 15065
Mark Kettenis (kettenis@) has recently committed changes which restore a certain amount of startx(1)/xinit(1) functionality for non-root users. The commit messages explain the situation:
Err codemadness.org 70 i 15072 Err codemadness.org 70 i 15073CVSROOT: /cvs Err codemadness.org 70
i 15074 Module name: src Err codemadness.org 70
i 15075 Changes by: kettenis@cvs.openbsd.org 2019/09/15 06:25:41 Err codemadness.org 70
i 15076 Err codemadness.org 70
i 15077 Modified files: Err codemadness.org 70
i 15078 etc/etc.amd64 : fbtab Err codemadness.org 70
i 15079 etc/etc.arm64 : fbtab Err codemadness.org 70
i 15080 etc/etc.hppa : fbtab Err codemadness.org 70
i 15081 etc/etc.i386 : fbtab Err codemadness.org 70
i 15082 etc/etc.loongson: fbtab Err codemadness.org 70
i 15083 etc/etc.luna88k: fbtab Err codemadness.org 70
i 15084 etc/etc.macppc : fbtab Err codemadness.org 70
i 15085 etc/etc.octeon : fbtab Err codemadness.org 70
i 15086 etc/etc.sgi : fbtab Err codemadness.org 70
i 15087 etc/etc.sparc64: fbtab Err codemadness.org 70
i 15088 Err codemadness.org 70
i 15089 Log message: Err codemadness.org 70
i 15090 Add ttyC4 to lost of devices to change when logging in on ttyC0 (and in some cases also the serial console) such that X can use it as its VT when running without root privileges. Err codemadness.org 70
i 15091 Err codemadness.org 70
i 15092 ok jsg@, matthieu@ Err codemadness.org 70
i 15093 CVSROOT: /cvs Err codemadness.org 70
i 15094 Module name: xenocara Err codemadness.org 70
i 15095 Changes by: kettenis@cvs.openbsd.org 2019/09/15 06:31:08 Err codemadness.org 70
i 15096 Err codemadness.org 70
i 15097 Modified files: Err codemadness.org 70
i 15098 xserver/hw/xfree86/common: xf86AutoConfig.c Err codemadness.org 70
i 15099 Err codemadness.org 70
i 15100 Log message: Err codemadness.org 70
i 15101 Add modesetting driver as a fall-back when appropriate such that we can use it when running without root privileges which prevents us from scanning the PCI bus. Err codemadness.org 70
i 15102 Err codemadness.org 70
i 15103 This makes startx(1)/xinit(1) work again on modern systems with inteldrm(4), radeondrm(4) and amdgpu(4). In some cases this will result in using a different driver than with xenodm(4) which may expose issues (e.g. when we prefer the intel Xorg driver) or loss of acceleration (e.g. older cards supported by radeondrm(4)). Err codemadness.org 70
i 15104 Err codemadness.org 70
i 15105 ok jsg@, matthieu@ Err codemadness.org 70
i 15106 Err codemadness.org 70
i 15107 Err codemadness.org 70
i 15108 Err codemadness.org 70 i 15249Err codemadness.org 70 i 15251 Err codemadness.org 70 i 15252Datto backs up data, a lot of it. At the time of writing Datto has over 500 PB of data stored on ZFS. This count includes both backup appliances that are sent to customer sites, as well as cloud storage servers that are used for secondary and tertiary backup of those appliances. At this scale drive swaps are a daily occurrence, and data corruption is inevitable. How we handle this corruption when it happens determines whether we truly lose data, or successfully restore from secondary backup. In this post we'll be showing you how at Datto we intentionally cause corruption in our testing environments, to ensure we're building software that can properly handle these scenarios.
Err codemadness.org 70 i 15250
Err codemadness.org 70 i 15257Err codemadness.org 70 i 15259 Err codemadness.org 70 i 15260Since this is a mirror setup, a naive solution to cause corruption would be to randomly dd the same sectors of both /dev/sdb and /dev/sdc. This works, but is equally likely to just overwrite random unused space, or take down the zpool entirely. What we really want is to corrupt a specific snapshot, or even a specific file in that snapshot, to simulate a more realistic minor corruption event. Luckily we have a tool called zdb that lets us view some low level information about datasets.
Err codemadness.org 70 i 15258
Err codemadness.org 70 i 15265Err codemadness.org 70 i 15269 Err codemadness.org 70 i 15270At the 500 PB scale, it's not a matter of if data corruption will happen but when. Intentionally causing corruption is one of the strategies we use to ensure we're building software that can handle these rare (but inevitable) events.
Err codemadness.org 70 i 15266 Err codemadness.org 70 i 15267To others out there using ZFS: I'm curious to hear how you've solved this problem. We did quite a bit of experimentation with zinject before going with this more brute force method. So I'd be especially interested if you've had luck simply simulating corruption with zinject.
Err codemadness.org 70 i 15268
Err codemadness.org 70 i 15275Err codemadness.org 70 i 15279 Err codemadness.org 70 i 15280A sparc64 version is also being prepared and will be added when done
Err codemadness.org 70 i 15276 Err codemadness.org 70 i 15277This post describes how to write a simple hello world program in pure assembly on NetBSD/amd64. We will not use (nor link against) libc, nor use gcc to compile it. I will be using GNU as (gas), and therefore the AT&T syntax instead of Intel.
Err codemadness.org 70 i 15278
Err codemadness.org 70 i 15285Err codemadness.org 70 i 15287 Err codemadness.org 70 i 15288Why not? Because it's fun to program in assembly directly. Contrary to a popular belief assembly programs aren't always faster than what optimizing compilers produce. Nevertheless it's good to be able to read assembly, especially when debugging C programs
Err codemadness.org 70 i 15286
Err codemadness.org 70 i 15303Err codemadness.org 70 i 15307 Err codemadness.org 70 i 15308First occurrence on eth0:2010 Winterlan, the LackRack is the ultimate, low-cost, high shininess solution for your modular datacenter-in-the-living-room. Featuring the LACK (side table) from Ikea, the LackRack is an easy-to-implement, exact-fit datacenter building block. It's a little known fact that we have seen Google engineers tinker with Lack tables since way back in 2009.
Err codemadness.org 70 i 15304 Err codemadness.org 70 i 15305The LackRack will certainly make its appearance again this summer at eth0:2010 Summer.
Err codemadness.org 70 i 15306
Err codemadness.org 70 i 15313Err codemadness.org 70 i 15317 Err codemadness.org 70 i 15318When temporarily not in use, multiple LackRacks can be stacked in a space-efficient way without disassembly, unlike competing 19" server racks.
Err codemadness.org 70 i 15314 Err codemadness.org 70 i 15315The LackRack was first seen on eth0:2010 Winterlan in the no-shoe Lounge area. Its low-cost and perfect fit are great for mounting up to 8 U of 19" hardware, such as switches (see below), or perhaps other 19" gear. It's very easy to assemble, and thanks to the design, they are stable enough to hold (for example) 19" switches and you can put your bottle of Club-Mate on top! Multi-shiny LackRack can also be painted to your specific preferences and the airflow is unprecedented!
Err codemadness.org 70 i 15316
Err codemadness.org 70 i 15323Err codemadness.org 70 i 15325 Err codemadness.org 70 i 15326You can find a howto on buying a LackRack on this page. This includes the proof that a 19" switch can indeed be placed in the LackRack in its natural habitat!
Err codemadness.org 70 i 15324
Err codemadness.org 70 i 15331Err codemadness.org 70 i 15339 Err codemadness.org 70 i 15340The OmniOS Community Edition Association is proud to announce the general availability of OmniOS - r151030.
Err codemadness.org 70 i 15332 Err codemadness.org 70 i 15333OmniOS is published according to a 6-month release cycle, r151030 LTS takes over from r151028, published in November 2018; and since it is a LTS release it also takes over from r151022. The r151030 LTS release will be supported for 3 Years. It is the first LTS release published by the OmniOS CE Association since taking over the reins from OmniTI in 2017. The next LTS release is scheduled for May 2021. The old stable r151026 release is now end-of-life. See the release schedule for further details.
Err codemadness.org 70 i 15334 Err codemadness.org 70 i 15335This is only a small selection of the new features, and bug fixes in the new release; review the release notes for full details.
Err codemadness.org 70 i 15336 Err codemadness.org 70 i 15337If you upgrade from r22 and want to see all new features added since then, make sure to also read the release notes for r24, r26 and r28.
Err codemadness.org 70 i 15338
Err codemadness.org 70 i 15351Err codemadness.org 70 i 15353 Err codemadness.org 70 i 15354When I have to work on Linux systems I usually miss many nice FreeBSD tools such as these for example to name the few: sockstat, gstat, top -b -o res, top -m io -o total, usbconfig, rcorder, beadm/bectl, idprio/rtprio,… but sometimes – which rarely happens – Linux has some very useful tool that is not available on FreeBSD. An example of such tool is lsblk(8) that does one thing and does it quite well – lists block devices and their contents. It has some problems like listing a disk that is entirely used under ZFS pool on which lsblk(8) displays two partitions instead of information about ZFS just being there – but we all know how much in some circles the CDDL licensed ZFS is unloved in that GPL world.
Err codemadness.org 70 i 15352
Example lsblk(8) output from Linux system:
Err codemadness.org 70 i 15355 Err codemadness.org 70 i 15356$ lsblk Err codemadness.org 70
i 15357 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT Err codemadness.org 70
i 15358 sr0 11:0 1 1024M 0 rom Err codemadness.org 70
i 15359 sda 8:0 0 931.5G 0 disk Err codemadness.org 70
i 15360 |-sda1 8:1 0 500M 0 part /boot Err codemadness.org 70
i 15361 `-sda2 8:2 0 931G 0 part Err codemadness.org 70
i 15362 |-vg_local-lv_root (dm-0) 253:0 0 50G 0 lvm / Err codemadness.org 70
i 15363 |-vg_local-lv_swap (dm-1) 253:1 0 17.7G 0 lvm [SWAP] Err codemadness.org 70
i 15364 `-vg_local-lv_home (dm-2) 253:2 0 1.8T 0 lvm /home Err codemadness.org 70
i 15365 sdc 8:32 0 232.9G 0 disk Err codemadness.org 70
i 15366 `-sdc1 8:33 0 232.9G 0 part Err codemadness.org 70
i 15367 `-md1 9:1 0 232.9G 0 raid10 /data Err codemadness.org 70
i 15368 sdd 8:48 0 232.9G 0 disk Err codemadness.org 70
i 15369 `-sdd1 8:49 0 232.9G 0 part Err codemadness.org 70
i 15370 `-md1 9:1 0 232.9G 0 raid10 /data Err codemadness.org 70
i 15371 Err codemadness.org 70
i 15372 Err codemadness.org 70
i 15373 Err codemadness.org 70 i 15374Err codemadness.org 70 i 15376 Err codemadness.org 70 i 15377What FreeBSD offers in this department? The camcontrol(8) and geom(8) commands are available. You can also use gpart(8) command to list partitions. Below you will find output of these commands from my single disk laptop. Please note that because of WordPress limitations I need to change all > < characters to ] [ ones in the commands outputs.
Err codemadness.org 70 i 15375
Err codemadness.org 70 i 15386Err codemadness.org 70 i 15388 Err codemadness.org 70 i 15389This is a general package update to the CURRENT release repository based upon TrueOS 19.10
Err codemadness.org 70 i 15387
Err codemadness.org 70 i 15443Err codemadness.org 70 i 15445 Err codemadness.org 70 i 15446Datto backs up data, a lot of it. At the time of writing Datto has over 500 PB of data stored on ZFS. This count includes both backup appliances that are sent to customer sites, as well as cloud storage servers that are used for secondary and tertiary backup of those appliances. At this scale drive swaps are a daily occurrence, and data corruption is inevitable. How we handle this corruption when it happens determines whether we truly lose data, or successfully restore from secondary backup. In this post we'll be showing you how at Datto we intentionally cause corruption in our testing environments, to ensure we're building software that can properly handle these scenarios.
Err codemadness.org 70 i 15444
Err codemadness.org 70 i 15451Err codemadness.org 70 i 15453 Err codemadness.org 70 i 15454Since this is a mirror setup, a naive solution to cause corruption would be to randomly dd the same sectors of both /dev/sdb and /dev/sdc. This works, but is equally likely to just overwrite random unused space, or take down the zpool entirely. What we really want is to corrupt a specific snapshot, or even a specific file in that snapshot, to simulate a more realistic minor corruption event. Luckily we have a tool called zdb that lets us view some low level information about datasets.
Err codemadness.org 70 i 15452
Err codemadness.org 70 i 15459Err codemadness.org 70 i 15463 Err codemadness.org 70 i 15464At the 500 PB scale, it's not a matter of if data corruption will happen but when. Intentionally causing corruption is one of the strategies we use to ensure we're building software that can handle these rare (but inevitable) events.
Err codemadness.org 70 i 15460 Err codemadness.org 70 i 15461To others out there using ZFS: I'm curious to hear how you've solved this problem. We did quite a bit of experimentation with zinject before going with this more brute force method. So I'd be especially interested if you've had luck simply simulating corruption with zinject.
Err codemadness.org 70 i 15462
Err codemadness.org 70 i 15469Err codemadness.org 70 i 15473 Err codemadness.org 70 i 15474A sparc64 version is also being prepared and will be added when done
Err codemadness.org 70 i 15470 Err codemadness.org 70 i 15471This post describes how to write a simple hello world program in pure assembly on NetBSD/amd64. We will not use (nor link against) libc, nor use gcc to compile it. I will be using GNU as (gas), and therefore the AT&T syntax instead of Intel.
Err codemadness.org 70 i 15472
Err codemadness.org 70 i 15479Err codemadness.org 70 i 15481 Err codemadness.org 70 i 15482Why not? Because it's fun to program in assembly directly. Contrary to a popular belief assembly programs aren't always faster than what optimizing compilers produce. Nevertheless it's good to be able to read assembly, especially when debugging C programs
Err codemadness.org 70 i 15480
Err codemadness.org 70 i 15497Err codemadness.org 70 i 15501 Err codemadness.org 70 i 15502First occurrence on eth0:2010 Winterlan, the LackRack is the ultimate, low-cost, high shininess solution for your modular datacenter-in-the-living-room. Featuring the LACK (side table) from Ikea, the LackRack is an easy-to-implement, exact-fit datacenter building block. It's a little known fact that we have seen Google engineers tinker with Lack tables since way back in 2009.
Err codemadness.org 70 i 15498 Err codemadness.org 70 i 15499The LackRack will certainly make its appearance again this summer at eth0:2010 Summer.
Err codemadness.org 70 i 15500
Err codemadness.org 70 i 15507Err codemadness.org 70 i 15511 Err codemadness.org 70 i 15512When temporarily not in use, multiple LackRacks can be stacked in a space-efficient way without disassembly, unlike competing 19" server racks.
Err codemadness.org 70 i 15508 Err codemadness.org 70 i 15509The LackRack was first seen on eth0:2010 Winterlan in the no-shoe Lounge area. Its low-cost and perfect fit are great for mounting up to 8 U of 19" hardware, such as switches (see below), or perhaps other 19" gear. It's very easy to assemble, and thanks to the design, they are stable enough to hold (for example) 19" switches and you can put your bottle of Club-Mate on top! Multi-shiny LackRack can also be painted to your specific preferences and the airflow is unprecedented!
Err codemadness.org 70 i 15510
Err codemadness.org 70 i 15517Err codemadness.org 70 i 15519 Err codemadness.org 70 i 15520You can find a howto on buying a LackRack on this page. This includes the proof that a 19" switch can indeed be placed in the LackRack in its natural habitat!
Err codemadness.org 70 i 15518
Err codemadness.org 70 i 15525Err codemadness.org 70 i 15533 Err codemadness.org 70 i 15534The OmniOS Community Edition Association is proud to announce the general availability of OmniOS - r151030.
Err codemadness.org 70 i 15526 Err codemadness.org 70 i 15527OmniOS is published according to a 6-month release cycle, r151030 LTS takes over from r151028, published in November 2018; and since it is a LTS release it also takes over from r151022. The r151030 LTS release will be supported for 3 Years. It is the first LTS release published by the OmniOS CE Association since taking over the reins from OmniTI in 2017. The next LTS release is scheduled for May 2021. The old stable r151026 release is now end-of-life. See the release schedule for further details.
Err codemadness.org 70 i 15528 Err codemadness.org 70 i 15529This is only a small selection of the new features, and bug fixes in the new release; review the release notes for full details.
Err codemadness.org 70 i 15530 Err codemadness.org 70 i 15531If you upgrade from r22 and want to see all new features added since then, make sure to also read the release notes for r24, r26 and r28.
Err codemadness.org 70 i 15532
Err codemadness.org 70 i 15545Err codemadness.org 70 i 15547 Err codemadness.org 70 i 15548When I have to work on Linux systems I usually miss many nice FreeBSD tools such as these for example to name the few: sockstat, gstat, top -b -o res, top -m io -o total, usbconfig, rcorder, beadm/bectl, idprio/rtprio,… but sometimes – which rarely happens – Linux has some very useful tool that is not available on FreeBSD. An example of such tool is lsblk(8) that does one thing and does it quite well – lists block devices and their contents. It has some problems like listing a disk that is entirely used under ZFS pool on which lsblk(8) displays two partitions instead of information about ZFS just being there – but we all know how much in some circles the CDDL licensed ZFS is unloved in that GPL world.
Err codemadness.org 70 i 15546
Example lsblk(8) output from Linux system:
Err codemadness.org 70 i 15549 Err codemadness.org 70 i 15550$ lsblk Err codemadness.org 70
i 15551 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT Err codemadness.org 70
i 15552 sr0 11:0 1 1024M 0 rom Err codemadness.org 70
i 15553 sda 8:0 0 931.5G 0 disk Err codemadness.org 70
i 15554 |-sda1 8:1 0 500M 0 part /boot Err codemadness.org 70
i 15555 `-sda2 8:2 0 931G 0 part Err codemadness.org 70
i 15556 |-vg_local-lv_root (dm-0) 253:0 0 50G 0 lvm / Err codemadness.org 70
i 15557 |-vg_local-lv_swap (dm-1) 253:1 0 17.7G 0 lvm [SWAP] Err codemadness.org 70
i 15558 `-vg_local-lv_home (dm-2) 253:2 0 1.8T 0 lvm /home Err codemadness.org 70
i 15559 sdc 8:32 0 232.9G 0 disk Err codemadness.org 70
i 15560 `-sdc1 8:33 0 232.9G 0 part Err codemadness.org 70
i 15561 `-md1 9:1 0 232.9G 0 raid10 /data Err codemadness.org 70
i 15562 sdd 8:48 0 232.9G 0 disk Err codemadness.org 70
i 15563 `-sdd1 8:49 0 232.9G 0 part Err codemadness.org 70
i 15564 `-md1 9:1 0 232.9G 0 raid10 /data Err codemadness.org 70
i 15565 Err codemadness.org 70
i 15566 Err codemadness.org 70
i 15567 Err codemadness.org 70 i 15568Err codemadness.org 70 i 15570 Err codemadness.org 70 i 15571What FreeBSD offers in this department? The camcontrol(8) and geom(8) commands are available. You can also use gpart(8) command to list partitions. Below you will find output of these commands from my single disk laptop. Please note that because of WordPress limitations I need to change all > < characters to ] [ ones in the commands outputs.
Err codemadness.org 70 i 15569
Err codemadness.org 70 i 15580Err codemadness.org 70 i 15582 Err codemadness.org 70 i 15583This is a general package update to the CURRENT release repository based upon TrueOS 19.10
Err codemadness.org 70 i 15581
Err codemadness.org 70 i 15780Err codemadness.org 70 i 15790 Err codemadness.org 70 i 15791For those wondering how well FreeBSD and DragonFlyBSD are handling AMD's new Ryzen 3000 series desktop processors, here are some benchmarks on a Ryzen 7 3700X with MSI MEG X570 GODLIKE where both of these popular BSD operating systems were working out-of-the-box. For some fun mid-week benchmarking, here are those results of FreeBSD 12.0 and DragonFlyBSD 5.6.2 up against openSUSE Tumbleweed and Ubuntu 19.04.
Err codemadness.org 70 i 15781 Err codemadness.org 70 i 15782Back in July I looked at FreeBSD 12 on the Ryzen 9 3900X but at that time at least DragonFlyBSD had troubles booting on that system. When trying out the Ryzen 7 3700X + MSI GODLIKE X570 motherboard on the latest BIOS, everything "just worked" without any compatibility issues for either of these BSDs.
Err codemadness.org 70 i 15783 Err codemadness.org 70 i 15784We've been eager to see how well DragonFlyBSD is performing on these new AMD Zen 2 CPUs with DragonFlyBSD lead developer Matthew Dillon having publicly expressed being impressed by the new AMD Ryzen 3000 series CPUs.
Err codemadness.org 70 i 15785 Err codemadness.org 70 i 15786For comparison to those BSDs, Ubuntu 19.04 and openSUSE Tumbleweed were tested on the same hardware in their out-of-the-box configurations. While Clear Linux is normally the fastest, on this system Clear's power management defaults had caused issues in being unable to detect the Samsung 970 EVO Plus NVMe SSD used for testing and so we left it out this round.
Err codemadness.org 70 i 15787 Err codemadness.org 70 i 15788All of the hardware was the same throughout testing as were the BIOS settings and running the Ryzen 7 3700X at stock speeds. (Any differences in the reported hardware for the system table just come down to differences in what is exposed by each OS for reporting.) All of the BSD/Linux benchmarks on this eight core / sixteen thread processor were run via the Phoronix Test Suite. In the case of FreeBSD 12.0, we benchmarked both with its default LLVM Clang 6.0 compiler as well as with GCC 9.1 so that it would match the GCC compiler being the default on the other operating systems under test.
Err codemadness.org 70 i 15789
Err codemadness.org 70 i 15796Err codemadness.org 70 i 15804 Err codemadness.org 70 i 15805iXsystems is honored to have the TrueNAS® M-Series unified storage selected to store, serve, and protect the entire digital archive for the John F. Kennedy Library Foundation. This is in support of the collection at the John F. Kennedy Presidential Library and Museum (JFK Library). Over the next several years, the Foundation hopes to grow the digital collection from hundreds of terabytes today to cover much more of the Archives at the Kennedy Library. Overall there is a total of 25 million documents, audio recordings, photos, and videos once the project is complete.
Err codemadness.org 70 i 15797 Err codemadness.org 70 i 15798Having first deployed the TrueNAS M50-HA earlier in 2019, the JFK Library has now completed the migration of its existing digital collection and is now in the process of digitizing much of the rest of its vast collection.
Err codemadness.org 70 i 15799 Err codemadness.org 70 i 15800Not only is the catalog of material vast, it is also diverse, with files being copied to the storage system from a variety of sources in numerous file types. To achieve this ambitious goal, the library required a high-end NAS system capable of sharing with a variety of systems throughout the digitization process. The digital archive will be served from the TrueNAS M50 and made available to both in-person and online visitors.
Err codemadness.org 70 i 15801 Err codemadness.org 70 i 15802With precious material and information comes robust demands. The highly-available TrueNAS M-Series has multiple layers of protection to help keep data safe, including data scrubs, checksums, unlimited snapshots, replication, and more. TrueNAS is also inherently scalable with data shares only limited by the number of drives connected to the pool. Perfect for archival storage, the deployed TrueNAS M50 will grow with the library’s content, easily expanding its storage capacity over time as needed. Supporting a variety of protocols, multi-petabyte scalability in a single share, and anytime, uninterrupted capacity expansion, the TrueNAS M-Series ticked all the right boxes.
Err codemadness.org 70 i 15803
Err codemadness.org 70 i 15816Err codemadness.org 70 i 15824 Err codemadness.org 70 i 15825FreeBSD 12.0 is already approaching one year old while FreeBSD 12.1 is now on the way as the next installment with various bug/security fixes and other alterations to this BSD operating system.
Err codemadness.org 70 i 15817 Err codemadness.org 70 i 15818FreeBSD 12.1 has many security/bug fixes throughout, no longer enables "-Werror" by default as a compiler flag (Update: This change is just for the GCC 4.2 compiler), has imported BearSSL into the FreeBSD base system as a lightweight TLS/SSL implementation, bzip2recover has been added, and a variety of mostly lower-level changes. More details can be found via the in-progress release notes.
Err codemadness.org 70 i 15819 Err codemadness.org 70 i 15820For those with time to test this weekend, FreeBSD 12.1 Beta 1 is available for all prominent architectures.
Err codemadness.org 70 i 15821 Err codemadness.org 70 i 15822The FreeBSD release team is planning for at least another beta or two and around three release candidates. If all goes well, FreeBSD 12.1 will be out in early November.
Err codemadness.org 70 i 15823
Err codemadness.org 70 i 15907Err codemadness.org 70 i 15909 Err codemadness.org 70 i 15910The fourth biennial vBSDCon was held in Reston, VA on September 5th through 7th and attracted attendees and presenters from not only the Washington, DC area, but also Canada, Germany, Kenya, and beyond. While MeetBSD caters to Silicon Valley BSD enthusiasts on even years, vBSDcon caters to East Coast and DC area enthusiasts on odd years. Verisign was again the key sponsor of vBSDcon 2019 but this year made a conscious effort to entrust the organization of the event to a team of community members led by Dan Langille, who you probably know as the lead BSDCan organizer. The result of this shift was a low key but professional event that fostered great conversation and brainstorming at every turn.
Err codemadness.org 70 i 15908
Err codemadness.org 70 i 15930Err codemadness.org 70 i 15934 Err codemadness.org 70 i 15935I fear we're drifting a bit here and the S/N ratio is dropping a bit w.r.t the actual history of Unix. Please no more on the relative merits of version control systems or alternative text processing systems.
Err codemadness.org 70 i 15931 Err codemadness.org 70 i 15932So I'll try to distract you by saying this. I'm sitting on two artifacts that have recently been given to me:
Err codemadness.org 70 i 15933
Err codemadness.org 70 i 15943Err codemadness.org 70 i 15947 Err codemadness.org 70 i 15948and I am going slowly crazy as I wait for them to be offically released. Now you have a new topic to talk about :-)
Err codemadness.org 70 i 15944 Err codemadness.org 70 i 15945Cheers, Warren
Err codemadness.org 70 i 15946
* for some definition of "soon"
Err codemadness.org 70 i 15949 Err codemadness.org 70 i 15950Err codemadness.org 70 i 15995Err codemadness.org 70 i 16005 Err codemadness.org 70 i 16006For those wondering how well FreeBSD and DragonFlyBSD are handling AMD's new Ryzen 3000 series desktop processors, here are some benchmarks on a Ryzen 7 3700X with MSI MEG X570 GODLIKE where both of these popular BSD operating systems were working out-of-the-box. For some fun mid-week benchmarking, here are those results of FreeBSD 12.0 and DragonFlyBSD 5.6.2 up against openSUSE Tumbleweed and Ubuntu 19.04.
Err codemadness.org 70 i 15996 Err codemadness.org 70 i 15997Back in July I looked at FreeBSD 12 on the Ryzen 9 3900X but at that time at least DragonFlyBSD had troubles booting on that system. When trying out the Ryzen 7 3700X + MSI GODLIKE X570 motherboard on the latest BIOS, everything "just worked" without any compatibility issues for either of these BSDs.
Err codemadness.org 70 i 15998 Err codemadness.org 70 i 15999We've been eager to see how well DragonFlyBSD is performing on these new AMD Zen 2 CPUs with DragonFlyBSD lead developer Matthew Dillon having publicly expressed being impressed by the new AMD Ryzen 3000 series CPUs.
Err codemadness.org 70 i 16000 Err codemadness.org 70 i 16001For comparison to those BSDs, Ubuntu 19.04 and openSUSE Tumbleweed were tested on the same hardware in their out-of-the-box configurations. While Clear Linux is normally the fastest, on this system Clear's power management defaults had caused issues in being unable to detect the Samsung 970 EVO Plus NVMe SSD used for testing and so we left it out this round.
Err codemadness.org 70 i 16002 Err codemadness.org 70 i 16003All of the hardware was the same throughout testing as were the BIOS settings and running the Ryzen 7 3700X at stock speeds. (Any differences in the reported hardware for the system table just come down to differences in what is exposed by each OS for reporting.) All of the BSD/Linux benchmarks on this eight core / sixteen thread processor were run via the Phoronix Test Suite. In the case of FreeBSD 12.0, we benchmarked both with its default LLVM Clang 6.0 compiler as well as with GCC 9.1 so that it would match the GCC compiler being the default on the other operating systems under test.
Err codemadness.org 70 i 16004
Err codemadness.org 70 i 16011Err codemadness.org 70 i 16019 Err codemadness.org 70 i 16020iXsystems is honored to have the TrueNAS® M-Series unified storage selected to store, serve, and protect the entire digital archive for the John F. Kennedy Library Foundation. This is in support of the collection at the John F. Kennedy Presidential Library and Museum (JFK Library). Over the next several years, the Foundation hopes to grow the digital collection from hundreds of terabytes today to cover much more of the Archives at the Kennedy Library. Overall there is a total of 25 million documents, audio recordings, photos, and videos once the project is complete.
Err codemadness.org 70 i 16012 Err codemadness.org 70 i 16013Having first deployed the TrueNAS M50-HA earlier in 2019, the JFK Library has now completed the migration of its existing digital collection and is now in the process of digitizing much of the rest of its vast collection.
Err codemadness.org 70 i 16014 Err codemadness.org 70 i 16015Not only is the catalog of material vast, it is also diverse, with files being copied to the storage system from a variety of sources in numerous file types. To achieve this ambitious goal, the library required a high-end NAS system capable of sharing with a variety of systems throughout the digitization process. The digital archive will be served from the TrueNAS M50 and made available to both in-person and online visitors.
Err codemadness.org 70 i 16016 Err codemadness.org 70 i 16017With precious material and information comes robust demands. The highly-available TrueNAS M-Series has multiple layers of protection to help keep data safe, including data scrubs, checksums, unlimited snapshots, replication, and more. TrueNAS is also inherently scalable with data shares only limited by the number of drives connected to the pool. Perfect for archival storage, the deployed TrueNAS M50 will grow with the library’s content, easily expanding its storage capacity over time as needed. Supporting a variety of protocols, multi-petabyte scalability in a single share, and anytime, uninterrupted capacity expansion, the TrueNAS M-Series ticked all the right boxes.
Err codemadness.org 70 i 16018
Err codemadness.org 70 i 16031Err codemadness.org 70 i 16039 Err codemadness.org 70 i 16040FreeBSD 12.0 is already approaching one year old while FreeBSD 12.1 is now on the way as the next installment with various bug/security fixes and other alterations to this BSD operating system.
Err codemadness.org 70 i 16032 Err codemadness.org 70 i 16033FreeBSD 12.1 has many security/bug fixes throughout, no longer enables "-Werror" by default as a compiler flag (Update: This change is just for the GCC 4.2 compiler), has imported BearSSL into the FreeBSD base system as a lightweight TLS/SSL implementation, bzip2recover has been added, and a variety of mostly lower-level changes. More details can be found via the in-progress release notes.
Err codemadness.org 70 i 16034 Err codemadness.org 70 i 16035For those with time to test this weekend, FreeBSD 12.1 Beta 1 is available for all prominent architectures.
Err codemadness.org 70 i 16036 Err codemadness.org 70 i 16037The FreeBSD release team is planning for at least another beta or two and around three release candidates. If all goes well, FreeBSD 12.1 will be out in early November.
Err codemadness.org 70 i 16038
Err codemadness.org 70 i 16122Err codemadness.org 70 i 16124 Err codemadness.org 70 i 16125The fourth biennial vBSDCon was held in Reston, VA on September 5th through 7th and attracted attendees and presenters from not only the Washington, DC area, but also Canada, Germany, Kenya, and beyond. While MeetBSD caters to Silicon Valley BSD enthusiasts on even years, vBSDcon caters to East Coast and DC area enthusiasts on odd years. Verisign was again the key sponsor of vBSDcon 2019 but this year made a conscious effort to entrust the organization of the event to a team of community members led by Dan Langille, who you probably know as the lead BSDCan organizer. The result of this shift was a low key but professional event that fostered great conversation and brainstorming at every turn.
Err codemadness.org 70 i 16123
Err codemadness.org 70 i 16145Err codemadness.org 70 i 16149 Err codemadness.org 70 i 16150I fear we're drifting a bit here and the S/N ratio is dropping a bit w.r.t the actual history of Unix. Please no more on the relative merits of version control systems or alternative text processing systems.
Err codemadness.org 70 i 16146 Err codemadness.org 70 i 16147So I'll try to distract you by saying this. I'm sitting on two artifacts that have recently been given to me:
Err codemadness.org 70 i 16148
Err codemadness.org 70 i 16158Err codemadness.org 70 i 16162 Err codemadness.org 70 i 16163and I am going slowly crazy as I wait for them to be offically released. Now you have a new topic to talk about :-)
Err codemadness.org 70 i 16159 Err codemadness.org 70 i 16160Cheers, Warren
Err codemadness.org 70 i 16161
* for some definition of "soon"
Err codemadness.org 70 i 16164 Err codemadness.org 70 i 16165Err codemadness.org 70 i 16273Err codemadness.org 70 i 16277 Err codemadness.org 70 i 16278We’re back from EuroBSDcon in Lillehammer, Norway. It was a great conference with 212 people attending. 2 days of tutorials, parallel to the FreeBSD Devsummit, followed by two days of talks. Some speakers uploaded their slides to papers.freebsd.org already with more to come.
Err codemadness.org 70 i 16274 Err codemadness.org 70 i 16275The social event was also interesting. We visited an open air museum with building preserved from different time periods. In the older section they had a collection of farm buildings, a church originally built in the 1200s and relocated to the museum, and a school house. In the more modern area, they had houses from 1915, and each decade from 1930 to 1990, plus a “house of the future” as imagined in 2001. Many had open doors to allow you to tour the inside, and some were even “inhabited”. The latter fact gave a much more interactive experience and we could learn additional things about the history of that particular house. The town at the end included a general store, a post office, and more. Then, we all had a nice dinner together in the museum’s restaurant.
Err codemadness.org 70 i 16276
Err codemadness.org 70 i 16287Err codemadness.org 70 i 16289 Err codemadness.org 70 i 16290In this article, I would like to present a tutorial to set up buildbot, a continuous integration (CI) software (like Jenkins, drone, etc.), making use of FreeBSD’s containerization mechanism "jails". We will cover terminology, rationale for using both buildbot and jails together, and installation steps. At the end, you will have a working buildbot instance using its sample build configuration, ready to play around with your own CI plans (or even CD, it’s very flexible!). Some hints for production-grade installations are given, but the tutorial steps are meant for a test environment (namely a virtual machine). Buildbot’s configuration and detailed concepts are not in scope here.
Err codemadness.org 70 i 16288
Err codemadness.org 70 i 16299Err codemadness.org 70 i 16307 Err codemadness.org 70 i 16308First of all, I was not clear enough about the political consequences of centralizing mail services at Big Mailer Corps.
Err codemadness.org 70 i 16300 Err codemadness.org 70 i 16301It doesn’t make sense for Random Joe, sharing kitten pictures with his family and friends, to build a personal mail infrastructure when multiple Big Mailer Corps offer “for free” an amazing quality of service. They provide him with an e-mail address that is immediately available and which will generally work reliably. It really doesn’t make sense for Random Joe not to go there, and particularly if even techies go there without hesitation, proving it is a sound choice.
Err codemadness.org 70 i 16302 Err codemadness.org 70 i 16303There is nothing wrong with Random Joes using a service that works.
Err codemadness.org 70 i 16304 Err codemadness.org 70 i 16305What is terribly wrong though is the centralization of a communication protocol in the hands of a few commercial companies, EVERY SINGLE ONE OF THEM coming from the same country (currently led by a lunatic who abuses power and probably suffers from NPD), EVERY SINGLE ONE OF THEM having been in the news and/or in a court for random/assorted “unpleasant” behaviors (privacy abuses, eavesdropping, monopoly abuse, sexual or professional harassment, you just name it…), and EVERY SINGLE ONE OF THEM growing user bases that far exceeds the total population of multiple countries combined.
Err codemadness.org 70 i 16306
Err codemadness.org 70 i 16315Err codemadness.org 70 i 16321 Err codemadness.org 70 i 16322The HamBSD project aims to bring amateur packet radio to OpenBSD, including support for TCP/IP over AX.25 and APRS tracking/digipeating in the base system.
Err codemadness.org 70 i 16316 Err codemadness.org 70 i 16317HamBSD will not provide a full AX.25 stack but instead only implement support for UI frames. There will be a focus on simplicity, security and readable code.
Err codemadness.org 70 i 16318 Err codemadness.org 70 i 16319The amateur radio community needs a reliable platform for packet radio for use in both leisure and emergency scenarios. It should be expected that the system is stable and resilient (but as yet it is neither).
Err codemadness.org 70 i 16320
Err codemadness.org 70 i 16327Err codemadness.org 70 i 16329 Err codemadness.org 70 i 16330HAMMER2 is Copy on Write, meaning changes are made to copies of existing data. This means operations are generally atomic and can survive a power outage, etc. (You should read up on it!) However, there’s now a fsck command, useful if you want a report of data validity rather than any manual repair process.
Err codemadness.org 70 i 16328
Err codemadness.org 70 i 16335Err codemadness.org 70 i 16342 Err codemadness.org 70 i 16343Add initial fsck support for HAMMER2, although CoW fs doesn't require fsck as a concept. Currently no repairing (no write), just verifying.
Err codemadness.org 70 i 16336 Err codemadness.org 70 i 16337Keep this as a separate command for now.
Err codemadness.org 70 i 16339 Err codemadness.org 70 i 16340
Err codemadness.org 70 i 16338 https://i.redd.it/vkdss0mtdpo31.jpg
Err codemadness.org 70 i 16341
Err codemadness.org 70 i 16346Err codemadness.org 70 i 16350 Err codemadness.org 70 i 16351Add modesetting driver as a fall-back when appropriate such that we can use it when running without root privileges which prevents us from scanning the PCI bus.
Err codemadness.org 70 i 16347 Err codemadness.org 70 i 16348This makes startx(1)/xinit(1) work again on modern systems with inteldrm(4), radeondrm(4) and amdgpu(4). In some cases this will result in using a different driver than with xenodm(4) which may expose issues (e.g. when we prefer the intel Xorg driver) or loss of acceleration (e.g. older cards supported by radeondrm(4)).
Err codemadness.org 70 i 16349
Err codemadness.org 70 i 16394Err codemadness.org 70 i 16398 Err codemadness.org 70 i 16399We’re back from EuroBSDcon in Lillehammer, Norway. It was a great conference with 212 people attending. 2 days of tutorials, parallel to the FreeBSD Devsummit, followed by two days of talks. Some speakers uploaded their slides to papers.freebsd.org already with more to come.
Err codemadness.org 70 i 16395 Err codemadness.org 70 i 16396The social event was also interesting. We visited an open air museum with building preserved from different time periods. In the older section they had a collection of farm buildings, a church originally built in the 1200s and relocated to the museum, and a school house. In the more modern area, they had houses from 1915, and each decade from 1930 to 1990, plus a “house of the future” as imagined in 2001. Many had open doors to allow you to tour the inside, and some were even “inhabited”. The latter fact gave a much more interactive experience and we could learn additional things about the history of that particular house. The town at the end included a general store, a post office, and more. Then, we all had a nice dinner together in the museum’s restaurant.
Err codemadness.org 70 i 16397
Err codemadness.org 70 i 16408Err codemadness.org 70 i 16410 Err codemadness.org 70 i 16411In this article, I would like to present a tutorial to set up buildbot, a continuous integration (CI) software (like Jenkins, drone, etc.), making use of FreeBSD’s containerization mechanism "jails". We will cover terminology, rationale for using both buildbot and jails together, and installation steps. At the end, you will have a working buildbot instance using its sample build configuration, ready to play around with your own CI plans (or even CD, it’s very flexible!). Some hints for production-grade installations are given, but the tutorial steps are meant for a test environment (namely a virtual machine). Buildbot’s configuration and detailed concepts are not in scope here.
Err codemadness.org 70 i 16409
Err codemadness.org 70 i 16420Err codemadness.org 70 i 16428 Err codemadness.org 70 i 16429First of all, I was not clear enough about the political consequences of centralizing mail services at Big Mailer Corps.
Err codemadness.org 70 i 16421 Err codemadness.org 70 i 16422It doesn’t make sense for Random Joe, sharing kitten pictures with his family and friends, to build a personal mail infrastructure when multiple Big Mailer Corps offer “for free” an amazing quality of service. They provide him with an e-mail address that is immediately available and which will generally work reliably. It really doesn’t make sense for Random Joe not to go there, and particularly if even techies go there without hesitation, proving it is a sound choice.
Err codemadness.org 70 i 16423 Err codemadness.org 70 i 16424There is nothing wrong with Random Joes using a service that works.
Err codemadness.org 70 i 16425 Err codemadness.org 70 i 16426What is terribly wrong though is the centralization of a communication protocol in the hands of a few commercial companies, EVERY SINGLE ONE OF THEM coming from the same country (currently led by a lunatic who abuses power and probably suffers from NPD), EVERY SINGLE ONE OF THEM having been in the news and/or in a court for random/assorted “unpleasant” behaviors (privacy abuses, eavesdropping, monopoly abuse, sexual or professional harassment, you just name it…), and EVERY SINGLE ONE OF THEM growing user bases that far exceeds the total population of multiple countries combined.
Err codemadness.org 70 i 16427
Err codemadness.org 70 i 16436Err codemadness.org 70 i 16442 Err codemadness.org 70 i 16443The HamBSD project aims to bring amateur packet radio to OpenBSD, including support for TCP/IP over AX.25 and APRS tracking/digipeating in the base system.
Err codemadness.org 70 i 16437 Err codemadness.org 70 i 16438HamBSD will not provide a full AX.25 stack but instead only implement support for UI frames. There will be a focus on simplicity, security and readable code.
Err codemadness.org 70 i 16439 Err codemadness.org 70 i 16440The amateur radio community needs a reliable platform for packet radio for use in both leisure and emergency scenarios. It should be expected that the system is stable and resilient (but as yet it is neither).
Err codemadness.org 70 i 16441
Err codemadness.org 70 i 16448Err codemadness.org 70 i 16450 Err codemadness.org 70 i 16451HAMMER2 is Copy on Write, meaning changes are made to copies of existing data. This means operations are generally atomic and can survive a power outage, etc. (You should read up on it!) However, there’s now a fsck command, useful if you want a report of data validity rather than any manual repair process.
Err codemadness.org 70 i 16449
Err codemadness.org 70 i 16456Err codemadness.org 70 i 16463 Err codemadness.org 70 i 16464Add initial fsck support for HAMMER2, although CoW fs doesn't require fsck as a concept. Currently no repairing (no write), just verifying.
Err codemadness.org 70 i 16457 Err codemadness.org 70 i 16458Keep this as a separate command for now.
Err codemadness.org 70 i 16460 Err codemadness.org 70 i 16461
Err codemadness.org 70 i 16459 https://i.redd.it/vkdss0mtdpo31.jpg
Err codemadness.org 70 i 16462
Err codemadness.org 70 i 16467Err codemadness.org 70 i 16471 Err codemadness.org 70 i 16472Add modesetting driver as a fall-back when appropriate such that we can use it when running without root privileges which prevents us from scanning the PCI bus.
Err codemadness.org 70 i 16468 Err codemadness.org 70 i 16469This makes startx(1)/xinit(1) work again on modern systems with inteldrm(4), radeondrm(4) and amdgpu(4). In some cases this will result in using a different driver than with xenodm(4) which may expose issues (e.g. when we prefer the intel Xorg driver) or loss of acceleration (e.g. older cards supported by radeondrm(4)).
Err codemadness.org 70 i 16470
Err codemadness.org 70 i 16710Err codemadness.org 70 i 16714 Err codemadness.org 70 i 16715As NetBSD-9 is branched, I have been asked to finish the LLVM sanitizer integration. This work is now accomplished and with MKLLVM=yes build option (by default off), the distribution will be populated with LLVM files for ASan, TSan, MSan, UBSan, libFuzzer, SafeStack and XRay.
Err codemadness.org 70 i 16711 Err codemadness.org 70 i 16712I have also transplanted basesystem GDB patched to my GDB repository and managed to run the GDB regression test-suite.
Err codemadness.org 70 i 16713
Err codemadness.org 70 i 16720Err codemadness.org 70 i 16722 Err codemadness.org 70 i 16723I have enhanced and imported my local MKSANITIZER code that makes whole distribution sanitization possible. Few real bugs were fixed and a number of patches were newly written to reflect the current NetBSD sources state. I have also merged another chunk of the fruits of the GSoC-2018 project with fuzzing the userland (by plusun@).
Err codemadness.org 70 i 16721
Err codemadness.org 70 i 16769Err codemadness.org 70 i 16771 Err codemadness.org 70 i 16772Inspired by lutris (a Linux gaming platform), we would like to provide a game launcher to play windows games on FreeBSD.
Err codemadness.org 70 i 16770
Err codemadness.org 70 i 16797Err codemadness.org 70 i 16803 Err codemadness.org 70 i 16804Many myths surround the Ada programming language, but it continues to be used and evolve at the same time. And while the increased adoption of Ada and SPARK, its provable subset, is slow, it’s noticeable. Ada already addresses more of the features found in found in heavily used embedded languages like C+ and C#. It also tackles problems addressed by upcoming languages like Rust.
Err codemadness.org 70 i 16798 Err codemadness.org 70 i 16799Chris concludes, “Development technologies have a profound impact on one of the largest and most variable costs associated with embedded-system engineering—labor. At a time when on-time system deployment can not only impact customer satisfaction, but access to services revenue streams, engineering team efficiency is at a premium. Our research showed that programming language choices can have significant influence in this area, leading to shorter projects, better schedules and, ultimately, lower development costs. While a variety of factors can influence and dictate language choice, our research showed that Ada’s evolution has made it an increasingly compelling option for engineering organizations, providing both technically and financially sound solution.”
Err codemadness.org 70 i 16800 Err codemadness.org 70 i 16801In general, Ada already makes embedded “programming in the large” much easier by handling issues that aren’t even addressed in other languages. Though these features are often provided by third-party software, it results in inconsistent practices among developers. Ada also supports the gamut of embedded platforms from systems like Arm’s Cortex-M through supercomputers. Learning Ada isn’t as hard as one might think and the benefits can be significant.
Err codemadness.org 70 i 16802
Err codemadness.org 70 i 16813Err codemadness.org 70 i 16821 Err codemadness.org 70 i 16822Core approved source commit bits for Doug Moore (dougm), Chuck Silvers (chs), Brandon Bergren (bdragon), and a vendor commit bit for Scott Phillips (scottph).
Err codemadness.org 70 i 16814 Err codemadness.org 70 i 16815The annual developer survey closed on 2019-04-02. Of the 397 developers, 243 took the survey with an average completion time of 12 minutes. The public survey closed on 2019-05-13. It was taken by 3637 users and had a 79% completion rate. A presentation of the survey results took place at BSDCan 2019.
Err codemadness.org 70 i 16816 Err codemadness.org 70 i 16817The core team voted to appoint a working group to explore transitioning our source code 'source of truth' from Subversion to Git. Core asked Ed Maste to chair the group as Ed has been researching this topic for some time. For example, Ed gave a MeetBSD 2018 talk on the topic.
Err codemadness.org 70 i 16818 Err codemadness.org 70 i 16819There is a variety of viewpoints within core regarding where and how to host a Git repository, however core feels that Git is the prudent path forward.
Err codemadness.org 70 i 16820
CVSROOT: /cvs Err codemadness.org 70
i 16827 Module name: src Err codemadness.org 70
i 16828 Changes by: deraadt@cvs.openbsd.org 2019/08/09 21:56:02 Err codemadness.org 70
i 16829 Err codemadness.org 70
i 16830 Modified files: Err codemadness.org 70
i 16831 etc/root : root.mail Err codemadness.org 70
i 16832 share/mk : sys.mk Err codemadness.org 70
i 16833 sys/arch/macppc/stand/tbxidata: bsd.tbxi Err codemadness.org 70
i 16834 sys/conf : newvers.sh Err codemadness.org 70
i 16835 sys/sys : param.h Err codemadness.org 70
i 16836 usr.bin/signify: signify.1 Err codemadness.org 70
i 16837 Err codemadness.org 70
i 16838 Log message: Err codemadness.org 70
i 16839 move to 6.6-beta Err codemadness.org 70
i 16840 Err codemadness.org 70
i 16841 Err codemadness.org 70
i 16842 Err codemadness.org 70
i 16843 Err codemadness.org 70
i 16844 Improved hardware support, including:
Err codemadness.org 70 i 16845 Err codemadness.org 70 i 16846Err codemadness.org 70 i 16872Err codemadness.org 70 i 16874 Err codemadness.org 70 i 16875This is the fifth general package update to the STABLE release repository based upon TrueOS 12-Stable.
Err codemadness.org 70 i 16873
Package Summary
Err codemadness.org 70 i 16878 Err codemadness.org 70 i 16879New Packages (20)
Err codemadness.org 70 i 16885 Err codemadness.org 70 i 16886Deleted Packages (24)
Err codemadness.org 70 i 16909 Err codemadness.org 70 i 16910[CHVT feedback]
Err codemadness.org 70
i 16962 DJ - Feedback
Err codemadness.org 70
i 16963 Ben - chvt
Err codemadness.org 70
i 16964 Harri - Marc's chvt question
Err codemadness.org 70 i 16987Err codemadness.org 70 i 16991 Err codemadness.org 70 i 16992As NetBSD-9 is branched, I have been asked to finish the LLVM sanitizer integration. This work is now accomplished and with MKLLVM=yes build option (by default off), the distribution will be populated with LLVM files for ASan, TSan, MSan, UBSan, libFuzzer, SafeStack and XRay.
Err codemadness.org 70 i 16988 Err codemadness.org 70 i 16989I have also transplanted basesystem GDB patched to my GDB repository and managed to run the GDB regression test-suite.
Err codemadness.org 70 i 16990
Err codemadness.org 70 i 16997Err codemadness.org 70 i 16999 Err codemadness.org 70 i 17000I have enhanced and imported my local MKSANITIZER code that makes whole distribution sanitization possible. Few real bugs were fixed and a number of patches were newly written to reflect the current NetBSD sources state. I have also merged another chunk of the fruits of the GSoC-2018 project with fuzzing the userland (by plusun@).
Err codemadness.org 70 i 16998
Err codemadness.org 70 i 17046Err codemadness.org 70 i 17048 Err codemadness.org 70 i 17049Inspired by lutris (a Linux gaming platform), we would like to provide a game launcher to play windows games on FreeBSD.
Err codemadness.org 70 i 17047
Err codemadness.org 70 i 17074Err codemadness.org 70 i 17080 Err codemadness.org 70 i 17081Many myths surround the Ada programming language, but it continues to be used and evolve at the same time. And while the increased adoption of Ada and SPARK, its provable subset, is slow, it’s noticeable. Ada already addresses more of the features found in found in heavily used embedded languages like C+ and C#. It also tackles problems addressed by upcoming languages like Rust.
Err codemadness.org 70 i 17075 Err codemadness.org 70 i 17076Chris concludes, “Development technologies have a profound impact on one of the largest and most variable costs associated with embedded-system engineering—labor. At a time when on-time system deployment can not only impact customer satisfaction, but access to services revenue streams, engineering team efficiency is at a premium. Our research showed that programming language choices can have significant influence in this area, leading to shorter projects, better schedules and, ultimately, lower development costs. While a variety of factors can influence and dictate language choice, our research showed that Ada’s evolution has made it an increasingly compelling option for engineering organizations, providing both technically and financially sound solution.”
Err codemadness.org 70 i 17077 Err codemadness.org 70 i 17078In general, Ada already makes embedded “programming in the large” much easier by handling issues that aren’t even addressed in other languages. Though these features are often provided by third-party software, it results in inconsistent practices among developers. Ada also supports the gamut of embedded platforms from systems like Arm’s Cortex-M through supercomputers. Learning Ada isn’t as hard as one might think and the benefits can be significant.
Err codemadness.org 70 i 17079
Err codemadness.org 70 i 17090Err codemadness.org 70 i 17098 Err codemadness.org 70 i 17099Core approved source commit bits for Doug Moore (dougm), Chuck Silvers (chs), Brandon Bergren (bdragon), and a vendor commit bit for Scott Phillips (scottph).
Err codemadness.org 70 i 17091 Err codemadness.org 70 i 17092The annual developer survey closed on 2019-04-02. Of the 397 developers, 243 took the survey with an average completion time of 12 minutes. The public survey closed on 2019-05-13. It was taken by 3637 users and had a 79% completion rate. A presentation of the survey results took place at BSDCan 2019.
Err codemadness.org 70 i 17093 Err codemadness.org 70 i 17094The core team voted to appoint a working group to explore transitioning our source code 'source of truth' from Subversion to Git. Core asked Ed Maste to chair the group as Ed has been researching this topic for some time. For example, Ed gave a MeetBSD 2018 talk on the topic.
Err codemadness.org 70 i 17095 Err codemadness.org 70 i 17096There is a variety of viewpoints within core regarding where and how to host a Git repository, however core feels that Git is the prudent path forward.
Err codemadness.org 70 i 17097
CVSROOT: /cvs Err codemadness.org 70
i 17104 Module name: src Err codemadness.org 70
i 17105 Changes by: deraadt@cvs.openbsd.org 2019/08/09 21:56:02 Err codemadness.org 70
i 17106 Err codemadness.org 70
i 17107 Modified files: Err codemadness.org 70
i 17108 etc/root : root.mail Err codemadness.org 70
i 17109 share/mk : sys.mk Err codemadness.org 70
i 17110 sys/arch/macppc/stand/tbxidata: bsd.tbxi Err codemadness.org 70
i 17111 sys/conf : newvers.sh Err codemadness.org 70
i 17112 sys/sys : param.h Err codemadness.org 70
i 17113 usr.bin/signify: signify.1 Err codemadness.org 70
i 17114 Err codemadness.org 70
i 17115 Log message: Err codemadness.org 70
i 17116 move to 6.6-beta Err codemadness.org 70
i 17117 Err codemadness.org 70
i 17118 Err codemadness.org 70
i 17119 Err codemadness.org 70
i 17120 Err codemadness.org 70
i 17121 Improved hardware support, including:
Err codemadness.org 70 i 17122 Err codemadness.org 70 i 17123Err codemadness.org 70 i 17149Err codemadness.org 70 i 17151 Err codemadness.org 70 i 17152This is the fifth general package update to the STABLE release repository based upon TrueOS 12-Stable.
Err codemadness.org 70 i 17150
Package Summary
Err codemadness.org 70 i 17155 Err codemadness.org 70 i 17156New Packages (20)
Err codemadness.org 70 i 17162 Err codemadness.org 70 i 17163Deleted Packages (24)
Err codemadness.org 70 i 17186 Err codemadness.org 70 i 17187[CHVT feedback]
Err codemadness.org 70
i 17239 DJ - Feedback
Err codemadness.org 70
i 17240 Ben - chvt
Err codemadness.org 70
i 17241 Harri - Marc's chvt question
Allan and Benedict attended vBSDcon 2019, which ended last week.
Err codemadness.org 70 i 17362 Err codemadness.org 70 i 17363It was held again at the Hyatt Regency Reston and the main conference was organized by Dan Langille of BSDCan fame.The two day conference was preceded by a one day FreeBSD hackathon, where FreeBSD developers had the chance to work on patches and PRs. In the evening, a reception was held to welcome attendees and give them a chance to chat and get to know each other over food and drinks.
Err codemadness.org 70 i 17364 Err codemadness.org 70 i 17365The first day of the conference was opened with a Keynote by Paul Vixie about DNS over HTTPS (DoH). He explained how we got to the current state and what challenges (technical and social) this entails.
Err codemadness.org 70 i 17366 Err codemadness.org 70 i 17367John Baldwin followed up by giving an overview of the work on “In-Kernel TLS Framing and Encryption for FreeBSD” abstract and the recent commit we covered in episode 313.
Err codemadness.org 70 i 17372 Err codemadness.org 70 i 17373Meanwhile, Brian Callahan was giving a separate session in another room about “Learning to (Open)BSD through its porting system: an attendee-driven educational session” where people had the chance to learn about how to create ports for the BSDs.
Err codemadness.org 70 i 17374 Err codemadness.org 70 i 17375David Fullard’s talk about “Transitioning from FreeNAS to FreeBSD” was his first talk at a BSD conference and described how he built his own home NAS setup trying to replicate FreeNAS’ functionality on FreeBSD, and why he transitioned from using an appliance to using vanilla FreeBSD.
Err codemadness.org 70 i 17376 Err codemadness.org 70 i 17377Shawn Webb followed with his overview talk about the “State of the Hardened Union”.
Err codemadness.org 70 i 17378 Err codemadness.org 70 i 17379Benedict’s talk about “Replacing an Oracle Server with FreeBSD, OpenZFS, and PostgreSQL” was well received as people are interested in how we liberated ourselves from the clutches of Oracle without compromising functionality.
Err codemadness.org 70 i 17380 Err codemadness.org 70 i 17381Entertaining and educational at the same time, Michael W. Lucas talk about “Twenty Years in Jail: FreeBSD Jails, Then and Now” closed the first day. Lucas also had a table in the hallway with his various tech and non-tech books for sale.
Err codemadness.org 70 i 17382 Err codemadness.org 70 i 17383People formed small groups and went into town for dinner. Some returned later that night to some work in the hacker lounge or talk amongst fellow BSD enthusiasts.
Err codemadness.org 70 i 17384 Err codemadness.org 70 i 17385Colin Percival was the keynote speaker for the second day and had an in-depth look at “23 years of software side channel attacks”.
Err codemadness.org 70 i 17386 Err codemadness.org 70 i 17387Allan reprised his “ELI5: ZFS Caching” talk explaining how the ZFS adaptive replacement cache (ARC) work and how it can be tuned for various workloads.
Err codemadness.org 70 i 17388 Err codemadness.org 70 i 17389“By the numbers: ZFS Performance Results from Six Operating Systems and Their Derivatives” by Michael Dexter followed with his approach to benchmarking OpenZFS on various platforms.
Err codemadness.org 70 i 17390 Err codemadness.org 70 i 17391Conor Beh was also a new speaker to vBSDcon. His talk was about “FreeBSD at Work: Building Network and Storage Infrastructure with pfSense and FreeNAS”.
Err codemadness.org 70 i 17392 Err codemadness.org 70 i 17393Two OpenBSD talks closed the talk session: Kurt Mosiejczuk with “Care and Feeding of OpenBSD Porters” and Aaron Poffenberger with “Road Warrior Disaster Recovery: Secure, Synchronized, and Backed-up”.
Err codemadness.org 70 i 17394 Err codemadness.org 70 i 17395A dinner and reception was enjoyed by the attendees and gave more time to discuss the talks given and other things until late at night.
Err codemadness.org 70 i 17396 Err codemadness.org 70 i 17397We want to thank the vBSDcon organizers and especially Dan Langille for running such a great conference. We are grateful to Verisign as the main sponsor and The FreeBSD Foundation for sponsoring the tote bags. Thanks to all the speakers and attendees!
Err codemadness.org 70 i 17398 Err codemadness.org 70 i 17399Err codemadness.org 70 i 17422Err codemadness.org 70 i 17428 Err codemadness.org 70 i 17429The InfinityBook 14” v2 is a fanless 14” notebook. It is an excellent choice for running OpenBSD - but order it with the supported wireless card (see below.).
Err codemadness.org 70 i 17423 Err codemadness.org 70 i 17424I’ve set it up in a dual-boot configuration so that I can switch between Linux and OpenBSD - mainly to spot differences in the drivers. TUXEDO allows a variety of configurations through their webshop.
Err codemadness.org 70 i 17425 Err codemadness.org 70 i 17426The dual boot setup with grub2 and EFI boot will be covered in a separate blogpost. My tests were done with OpenBSD-current - which is as of writing flagged as 6.6-beta.
Err codemadness.org 70 i 17427
Err codemadness.org 70 i 17438Err codemadness.org 70 i 17450 Err codemadness.org 70 i 17451Maybe its pervasiveness has long obscured its origins. But Unix, the operating system that in one derivative or another powers nearly all smartphones sold worldwide, was born 50 years ago from the failure of an ambitious project that involved titans like Bell Labs, GE, and MIT. Largely the brainchild of a few programmers at Bell Labs, the unlikely story of Unix begins with a meeting on the top floor of an otherwise unremarkable annex at the sprawling Bell Labs complex in Murray Hill, New Jersey.
Err codemadness.org 70 i 17439 Err codemadness.org 70 i 17440It was a bright, cold Monday, the last day of March 1969, and the computer sciences department was hosting distinguished guests: Bill Baker, a Bell Labs vice president, and Ed David, the director of research. Baker was about to pull the plug on Multics (a condensed form of MULTiplexed Information and Computing Service), a software project that the computer sciences department had been working on for four years. Multics was two years overdue, way over budget, and functional only in the loosest possible understanding of the term.
Err codemadness.org 70 i 17441 Err codemadness.org 70 i 17442Trying to put the best spin possible on what was clearly an abject failure, Baker gave a speech in which he claimed that Bell Labs had accomplished everything it was trying to accomplish in Multics and that they no longer needed to work on the project. As Berk Tague, a staffer present at the meeting, later told Princeton University, “Like Vietnam, he declared victory and got out of Multics.”
Err codemadness.org 70 i 17443 Err codemadness.org 70 i 17444Within the department, this announcement was hardly unexpected. The programmers were acutely aware of the various issues with both the scope of the project and the computer they had been asked to build it for.
Err codemadness.org 70 i 17445 Err codemadness.org 70 i 17446Still, it was something to work on, and as long as Bell Labs was working on Multics, they would also have a $7 million mainframe computer to play around with in their spare time. Dennis Ritchie, one of the programmers working on Multics, later said they all felt some stake in the success of the project, even though they knew the odds of that success were exceedingly remote.
Err codemadness.org 70 i 17447 Err codemadness.org 70 i 17448Cancellation of Multics meant the end of the only project that the programmers in the Computer science department had to work on—and it also meant the loss of the only computer in the Computer science department. After the GE 645 mainframe was taken apart and hauled off, the computer science department’s resources were reduced to little more than office supplies and a few terminals.
Err codemadness.org 70 i 17449
Err codemadness.org 70 i 17456Err codemadness.org 70 i 17482 Err codemadness.org 70 i 17483In the early '60s, Bill Ninke, a researcher in acoustics, had demonstrated a rudimentary graphical user interface with a DEC PDP-7 minicomputer. Acoustics still had that computer, but they weren’t using it and had stuck it somewhere out of the way up on the sixth floor.
Err codemadness.org 70 i 17457 Err codemadness.org 70 i 17458And so Thompson, an indefatigable explorer of the labs’ nooks and crannies, finally found that PDP-7 shortly after Davis and Baker cancelled Multics.
Err codemadness.org 70 i 17459 Err codemadness.org 70 i 17460With the rest of the team’s help, Thompson bundled up the various pieces of the PDP-7—a machine about the size of a refrigerator, not counting the terminal—moved it into a closet assigned to the acoustics department, and got it up and running. One way or another, they convinced acoustics to provide space for the computer and also to pay for the not infrequent repairs to it out of that department’s budget.
Err codemadness.org 70 i 17461 Err codemadness.org 70 i 17462McIlroy’s programmers suddenly had a computer, kind of. So during the summer of 1969, Thompson, Ritchie, and Canaday hashed out the basics of a file manager that would run on the PDP-7. This was no simple task. Batch computing—running programs one after the other—rarely required that a computer be able to permanently store information, and many mainframes did not have any permanent storage device (whether a tape or a hard disk) attached to them. But the time-sharing environment that these programmers had fallen in love with required attached storage. And with multiple users connected to the same computer at the same time, the file manager had to be written well enough to keep one user’s files from being written over another user’s. When a file was read, the output from that file had to be sent to the user that was opening it.
Err codemadness.org 70 i 17463 Err codemadness.org 70 i 17464It was a challenge that McIlroy’s team was willing to accept. They had seen the future of computing and wanted to explore it. They knew that Multics was a dead-end, but they had discovered the possibilities opened up by shared development, shared access, and real-time computing. Twenty years later, Ritchie characterized it for Princeton as such: “What we wanted to preserve was not just a good environment in which to do programming, but a system around which a fellowship could form.”
Err codemadness.org 70 i 17465 Err codemadness.org 70 i 17466Eventually when they had the file management system more or less fleshed out conceptually, it came time to actually write the code. The trio—all of whom had terrible handwriting—decided to use the Labs’ dictating service. One of them called up a lab extension and dictated the entire code base into a tape recorder. And thus, some unidentified clerical worker or workers soon had the unenviable task of trying to convert that into a typewritten document.
Err codemadness.org 70 i 17467 Err codemadness.org 70 i 17468Of course, it was done imperfectly. Among various errors, “inode” came back as “eye node,” but the output was still viewed as a decided improvement over their assorted scribbles.
Err codemadness.org 70 i 17469 Err codemadness.org 70 i 17470In August 1969, Thompson’s wife and son went on a three-week vacation to see her family out in Berkeley, and Thompson decided to spend that time writing an assembler, a file editor, and a kernel to manage the PDP-7 processor. This would turn the group’s file manager into a full-fledged operating system. He generously allocated himself one week for each task.
Err codemadness.org 70 i 17471 Err codemadness.org 70 i 17472Thompson finished his tasks more or less on schedule. And by September, the computer science department at Bell Labs had an operating system running on a PDP-7—and it wasn’t Multics.
Err codemadness.org 70 i 17473 Err codemadness.org 70 i 17474By the summer of 1970, the team had attached a tape drive to the PDP-7, and their blossoming OS also had a growing selection of tools for programmers (several of which persist down to this day). But despite the successes, Thompson, Canaday, and Ritchie were still being rebuffed by labs management in their efforts to get a brand-new computer.
Err codemadness.org 70 i 17475 Err codemadness.org 70 i 17476It wasn’t until late 1971 that the computer science department got a truly modern computer. The Unix team had developed several tools designed to automatically format text files for printing over the past year or so. They had done so to simplify the production of documentation for their pet project, but their tools had escaped and were being used by several researchers elsewhere on the top floor. At the same time, the legal department was prepared to spend a fortune on a mainframe program called “AstroText.” Catching wind of this, the Unix crew realized that they could, with only a little effort, upgrade the tools they had written for their own use into something that the legal department could use to prepare patent applications.
Err codemadness.org 70 i 17477 Err codemadness.org 70 i 17478The computer science department pitched lab management on the purchase of a DEC PDP-11 for document production purposes, and Max Mathews offered to pay for the machine out of the acoustics department budget. Finally, management gave in and purchased a computer for the Unix team to play with. Eventually, word leaked out about this operating system, and businesses and institutions with PDP-11s began contacting Bell Labs about their new operating system. The Labs made it available for free—requesting only the cost of postage and media from anyone who wanted a copy.
Err codemadness.org 70 i 17479 Err codemadness.org 70 i 17480The rest has quite literally made tech history.
Err codemadness.org 70 i 17481
Err codemadness.org 70 i 17492Err codemadness.org 70 i 17498 Err codemadness.org 70 i 17499A network dump might be very useful for collecting kernel crash dumps from embedded machines and machines with a larger amount of RAM then available swap partition size. Besides net dumps we can also try to compress the core dump. However, often this may still not be enough swap to keep whole core dump. In such situation using network dump is a convenient and reliable way for collecting kernel dump.
Err codemadness.org 70 i 17493 Err codemadness.org 70 i 17494So, first, let’s talk a little bit about history. The first implementation of the network dumps was implemented around 2000 for the FreeBSD 4.x as a kernel module. The code was implemented in 2010 with the intention of being part of FreeBSD 9.0. However, the code never landed in FreeBSD. Finally, in 2018 with the commit r333283 by Mark Johnston the netdump client code landed in the FreeBSD. Subsequently, many other commitments were then implemented to add support for the different drivers (for example r333289). The first official release of FreeBSD, which support netdump is FreeBSD 12.0.
Err codemadness.org 70 i 17495 Err codemadness.org 70 i 17496Now, let’s get back to the main topic. How to configure the network dump? Two machines are needed. One machine is to collect core dump, let’s call it server. We will use the second one to send us the core dump - the client.
Err codemadness.org 70 i 17497
Allan and Benedict attended vBSDcon 2019, which ended last week.
Err codemadness.org 70 i 17546 Err codemadness.org 70 i 17547It was held again at the Hyatt Regency Reston and the main conference was organized by Dan Langille of BSDCan fame.The two day conference was preceded by a one day FreeBSD hackathon, where FreeBSD developers had the chance to work on patches and PRs. In the evening, a reception was held to welcome attendees and give them a chance to chat and get to know each other over food and drinks.
Err codemadness.org 70 i 17548 Err codemadness.org 70 i 17549The first day of the conference was opened with a Keynote by Paul Vixie about DNS over HTTPS (DoH). He explained how we got to the current state and what challenges (technical and social) this entails.
Err codemadness.org 70 i 17550 Err codemadness.org 70 i 17551John Baldwin followed up by giving an overview of the work on “In-Kernel TLS Framing and Encryption for FreeBSD” abstract and the recent commit we covered in episode 313.
Err codemadness.org 70 i 17556 Err codemadness.org 70 i 17557Meanwhile, Brian Callahan was giving a separate session in another room about “Learning to (Open)BSD through its porting system: an attendee-driven educational session” where people had the chance to learn about how to create ports for the BSDs.
Err codemadness.org 70 i 17558 Err codemadness.org 70 i 17559David Fullard’s talk about “Transitioning from FreeNAS to FreeBSD” was his first talk at a BSD conference and described how he built his own home NAS setup trying to replicate FreeNAS’ functionality on FreeBSD, and why he transitioned from using an appliance to using vanilla FreeBSD.
Err codemadness.org 70 i 17560 Err codemadness.org 70 i 17561Shawn Webb followed with his overview talk about the “State of the Hardened Union”.
Err codemadness.org 70 i 17562 Err codemadness.org 70 i 17563Benedict’s talk about “Replacing an Oracle Server with FreeBSD, OpenZFS, and PostgreSQL” was well received as people are interested in how we liberated ourselves from the clutches of Oracle without compromising functionality.
Err codemadness.org 70 i 17564 Err codemadness.org 70 i 17565Entertaining and educational at the same time, Michael W. Lucas talk about “Twenty Years in Jail: FreeBSD Jails, Then and Now” closed the first day. Lucas also had a table in the hallway with his various tech and non-tech books for sale.
Err codemadness.org 70 i 17566 Err codemadness.org 70 i 17567People formed small groups and went into town for dinner. Some returned later that night to some work in the hacker lounge or talk amongst fellow BSD enthusiasts.
Err codemadness.org 70 i 17568 Err codemadness.org 70 i 17569Colin Percival was the keynote speaker for the second day and had an in-depth look at “23 years of software side channel attacks”.
Err codemadness.org 70 i 17570 Err codemadness.org 70 i 17571Allan reprised his “ELI5: ZFS Caching” talk explaining how the ZFS adaptive replacement cache (ARC) work and how it can be tuned for various workloads.
Err codemadness.org 70 i 17572 Err codemadness.org 70 i 17573“By the numbers: ZFS Performance Results from Six Operating Systems and Their Derivatives” by Michael Dexter followed with his approach to benchmarking OpenZFS on various platforms.
Err codemadness.org 70 i 17574 Err codemadness.org 70 i 17575Conor Beh was also a new speaker to vBSDcon. His talk was about “FreeBSD at Work: Building Network and Storage Infrastructure with pfSense and FreeNAS”.
Err codemadness.org 70 i 17576 Err codemadness.org 70 i 17577Two OpenBSD talks closed the talk session: Kurt Mosiejczuk with “Care and Feeding of OpenBSD Porters” and Aaron Poffenberger with “Road Warrior Disaster Recovery: Secure, Synchronized, and Backed-up”.
Err codemadness.org 70 i 17578 Err codemadness.org 70 i 17579A dinner and reception was enjoyed by the attendees and gave more time to discuss the talks given and other things until late at night.
Err codemadness.org 70 i 17580 Err codemadness.org 70 i 17581We want to thank the vBSDcon organizers and especially Dan Langille for running such a great conference. We are grateful to Verisign as the main sponsor and The FreeBSD Foundation for sponsoring the tote bags. Thanks to all the speakers and attendees!
Err codemadness.org 70 i 17582 Err codemadness.org 70 i 17583Err codemadness.org 70 i 17606Err codemadness.org 70 i 17612 Err codemadness.org 70 i 17613The InfinityBook 14” v2 is a fanless 14” notebook. It is an excellent choice for running OpenBSD - but order it with the supported wireless card (see below.).
Err codemadness.org 70 i 17607 Err codemadness.org 70 i 17608I’ve set it up in a dual-boot configuration so that I can switch between Linux and OpenBSD - mainly to spot differences in the drivers. TUXEDO allows a variety of configurations through their webshop.
Err codemadness.org 70 i 17609 Err codemadness.org 70 i 17610The dual boot setup with grub2 and EFI boot will be covered in a separate blogpost. My tests were done with OpenBSD-current - which is as of writing flagged as 6.6-beta.
Err codemadness.org 70 i 17611
Err codemadness.org 70 i 17622Err codemadness.org 70 i 17634 Err codemadness.org 70 i 17635Maybe its pervasiveness has long obscured its origins. But Unix, the operating system that in one derivative or another powers nearly all smartphones sold worldwide, was born 50 years ago from the failure of an ambitious project that involved titans like Bell Labs, GE, and MIT. Largely the brainchild of a few programmers at Bell Labs, the unlikely story of Unix begins with a meeting on the top floor of an otherwise unremarkable annex at the sprawling Bell Labs complex in Murray Hill, New Jersey.
Err codemadness.org 70 i 17623 Err codemadness.org 70 i 17624It was a bright, cold Monday, the last day of March 1969, and the computer sciences department was hosting distinguished guests: Bill Baker, a Bell Labs vice president, and Ed David, the director of research. Baker was about to pull the plug on Multics (a condensed form of MULTiplexed Information and Computing Service), a software project that the computer sciences department had been working on for four years. Multics was two years overdue, way over budget, and functional only in the loosest possible understanding of the term.
Err codemadness.org 70 i 17625 Err codemadness.org 70 i 17626Trying to put the best spin possible on what was clearly an abject failure, Baker gave a speech in which he claimed that Bell Labs had accomplished everything it was trying to accomplish in Multics and that they no longer needed to work on the project. As Berk Tague, a staffer present at the meeting, later told Princeton University, “Like Vietnam, he declared victory and got out of Multics.”
Err codemadness.org 70 i 17627 Err codemadness.org 70 i 17628Within the department, this announcement was hardly unexpected. The programmers were acutely aware of the various issues with both the scope of the project and the computer they had been asked to build it for.
Err codemadness.org 70 i 17629 Err codemadness.org 70 i 17630Still, it was something to work on, and as long as Bell Labs was working on Multics, they would also have a $7 million mainframe computer to play around with in their spare time. Dennis Ritchie, one of the programmers working on Multics, later said they all felt some stake in the success of the project, even though they knew the odds of that success were exceedingly remote.
Err codemadness.org 70 i 17631 Err codemadness.org 70 i 17632Cancellation of Multics meant the end of the only project that the programmers in the Computer science department had to work on—and it also meant the loss of the only computer in the Computer science department. After the GE 645 mainframe was taken apart and hauled off, the computer science department’s resources were reduced to little more than office supplies and a few terminals.
Err codemadness.org 70 i 17633
Err codemadness.org 70 i 17640Err codemadness.org 70 i 17666 Err codemadness.org 70 i 17667In the early '60s, Bill Ninke, a researcher in acoustics, had demonstrated a rudimentary graphical user interface with a DEC PDP-7 minicomputer. Acoustics still had that computer, but they weren’t using it and had stuck it somewhere out of the way up on the sixth floor.
Err codemadness.org 70 i 17641 Err codemadness.org 70 i 17642And so Thompson, an indefatigable explorer of the labs’ nooks and crannies, finally found that PDP-7 shortly after Davis and Baker cancelled Multics.
Err codemadness.org 70 i 17643 Err codemadness.org 70 i 17644With the rest of the team’s help, Thompson bundled up the various pieces of the PDP-7—a machine about the size of a refrigerator, not counting the terminal—moved it into a closet assigned to the acoustics department, and got it up and running. One way or another, they convinced acoustics to provide space for the computer and also to pay for the not infrequent repairs to it out of that department’s budget.
Err codemadness.org 70 i 17645 Err codemadness.org 70 i 17646McIlroy’s programmers suddenly had a computer, kind of. So during the summer of 1969, Thompson, Ritchie, and Canaday hashed out the basics of a file manager that would run on the PDP-7. This was no simple task. Batch computing—running programs one after the other—rarely required that a computer be able to permanently store information, and many mainframes did not have any permanent storage device (whether a tape or a hard disk) attached to them. But the time-sharing environment that these programmers had fallen in love with required attached storage. And with multiple users connected to the same computer at the same time, the file manager had to be written well enough to keep one user’s files from being written over another user’s. When a file was read, the output from that file had to be sent to the user that was opening it.
Err codemadness.org 70 i 17647 Err codemadness.org 70 i 17648It was a challenge that McIlroy’s team was willing to accept. They had seen the future of computing and wanted to explore it. They knew that Multics was a dead-end, but they had discovered the possibilities opened up by shared development, shared access, and real-time computing. Twenty years later, Ritchie characterized it for Princeton as such: “What we wanted to preserve was not just a good environment in which to do programming, but a system around which a fellowship could form.”
Err codemadness.org 70 i 17649 Err codemadness.org 70 i 17650Eventually when they had the file management system more or less fleshed out conceptually, it came time to actually write the code. The trio—all of whom had terrible handwriting—decided to use the Labs’ dictating service. One of them called up a lab extension and dictated the entire code base into a tape recorder. And thus, some unidentified clerical worker or workers soon had the unenviable task of trying to convert that into a typewritten document.
Err codemadness.org 70 i 17651 Err codemadness.org 70 i 17652Of course, it was done imperfectly. Among various errors, “inode” came back as “eye node,” but the output was still viewed as a decided improvement over their assorted scribbles.
Err codemadness.org 70 i 17653 Err codemadness.org 70 i 17654In August 1969, Thompson’s wife and son went on a three-week vacation to see her family out in Berkeley, and Thompson decided to spend that time writing an assembler, a file editor, and a kernel to manage the PDP-7 processor. This would turn the group’s file manager into a full-fledged operating system. He generously allocated himself one week for each task.
Err codemadness.org 70 i 17655 Err codemadness.org 70 i 17656Thompson finished his tasks more or less on schedule. And by September, the computer science department at Bell Labs had an operating system running on a PDP-7—and it wasn’t Multics.
Err codemadness.org 70 i 17657 Err codemadness.org 70 i 17658By the summer of 1970, the team had attached a tape drive to the PDP-7, and their blossoming OS also had a growing selection of tools for programmers (several of which persist down to this day). But despite the successes, Thompson, Canaday, and Ritchie were still being rebuffed by labs management in their efforts to get a brand-new computer.
Err codemadness.org 70 i 17659 Err codemadness.org 70 i 17660It wasn’t until late 1971 that the computer science department got a truly modern computer. The Unix team had developed several tools designed to automatically format text files for printing over the past year or so. They had done so to simplify the production of documentation for their pet project, but their tools had escaped and were being used by several researchers elsewhere on the top floor. At the same time, the legal department was prepared to spend a fortune on a mainframe program called “AstroText.” Catching wind of this, the Unix crew realized that they could, with only a little effort, upgrade the tools they had written for their own use into something that the legal department could use to prepare patent applications.
Err codemadness.org 70 i 17661 Err codemadness.org 70 i 17662The computer science department pitched lab management on the purchase of a DEC PDP-11 for document production purposes, and Max Mathews offered to pay for the machine out of the acoustics department budget. Finally, management gave in and purchased a computer for the Unix team to play with. Eventually, word leaked out about this operating system, and businesses and institutions with PDP-11s began contacting Bell Labs about their new operating system. The Labs made it available for free—requesting only the cost of postage and media from anyone who wanted a copy.
Err codemadness.org 70 i 17663 Err codemadness.org 70 i 17664The rest has quite literally made tech history.
Err codemadness.org 70 i 17665
Err codemadness.org 70 i 17676Err codemadness.org 70 i 17682 Err codemadness.org 70 i 17683A network dump might be very useful for collecting kernel crash dumps from embedded machines and machines with a larger amount of RAM then available swap partition size. Besides net dumps we can also try to compress the core dump. However, often this may still not be enough swap to keep whole core dump. In such situation using network dump is a convenient and reliable way for collecting kernel dump.
Err codemadness.org 70 i 17677 Err codemadness.org 70 i 17678So, first, let’s talk a little bit about history. The first implementation of the network dumps was implemented around 2000 for the FreeBSD 4.x as a kernel module. The code was implemented in 2010 with the intention of being part of FreeBSD 9.0. However, the code never landed in FreeBSD. Finally, in 2018 with the commit r333283 by Mark Johnston the netdump client code landed in the FreeBSD. Subsequently, many other commitments were then implemented to add support for the different drivers (for example r333289). The first official release of FreeBSD, which support netdump is FreeBSD 12.0.
Err codemadness.org 70 i 17679 Err codemadness.org 70 i 17680Now, let’s get back to the main topic. How to configure the network dump? Two machines are needed. One machine is to collect core dump, let’s call it server. We will use the second one to send us the core dump - the client.
Err codemadness.org 70 i 17681
Err codemadness.org 70 i 17807Err codemadness.org 70 i 17815 Err codemadness.org 70 i 17816Recently, Artem S. Tashkinov wrote on the Linux kernel mailing list about a Linux problem under memory pressure (via, and threaded here). The specific reproduction instructions involved having low RAM, turning off swap space, and then putting the system under load, and when that happened (emphasis mine):
Err codemadness.org 70 i 17808 Err codemadness.org 70 i 17809Once you hit a situation when opening a new tab requires more RAM than is currently available, the system will stall hard. You will barely be able to move the mouse pointer. Your disk LED will be flashing incessantly (I'm not entirely sure why). [...]
Err codemadness.org 70 i 17810 Err codemadness.org 70 i 17811I'm afraid I have bad news for the people snickering at Linux here; if you're running without swap space, you can probably get any Unix to behave this way under memory pressure. If you can't on your particular Unix, I'd actually say that your Unix is probably not letting you get full use out of your RAM.
Err codemadness.org 70 i 17812 Err codemadness.org 70 i 17813To simplify a bit, we can divide pages of user memory up into anonymous pages and file-backed pages. File-backed pages are what they sound like; they come from some specific file on the filesystem that they can be written out to (if they're dirty) or read back in from. Anonymous pages are not backed by a file, so the only place they can be written out to and read back in from is swap space. Anonymous pages mostly come from dynamic memory allocations and from modifying the program's global variables and data; file backed pages come mostly from mapping files into memory with mmap() and also, crucially, from the code and read-only data of the program.
Err codemadness.org 70 i 17814
Err codemadness.org 70 i 17825Err codemadness.org 70 i 17829 Err codemadness.org 70 i 17830First, history: DragonFly has had binaries of dports available for download for quite some time. These were originally built using poudriere, and then using the synth tool put together by John Marino. Synth worked both to build all software in dports, and as a way to test DragonFly’s SMP capability under extreme load.
Err codemadness.org 70 i 17826 Err codemadness.org 70 i 17827Matthew Dillon is working on a new version, called dsynth. It is available now but not yet part of the build. He’s been working quickly on it and there’s plenty more commits than what I have linked here. It’s already led to finding more high-load fixes.
Err codemadness.org 70 i 17828
Err codemadness.org 70 i 17835Err codemadness.org 70 i 17844 Err codemadness.org 70 i 17845DSynth is basically synth written in C, from scratch. It is designed to give us a bulk builder in base and be friendly to porting and jails down the line (for now its uses chroot's).
Err codemadness.org 70 i 17836 Err codemadness.org 70 i 17837The original synth was written by John R. Marino and its basic flow was used in writing this program, but as it was written in ada no code was directly copied.
Err codemadness.org 70 i 17838 Err codemadness.org 70 i 17839Err codemadness.org 70 i 17840
Err codemadness.org 70 i 17843- Err codemadness.org 70 i 17841
The intent is to make dsynth compatible with synth's configuration files and directory structure.
- Err codemadness.org 70 i 17842
This is a work in progress and not yet ready for prime-time. Pushing so we can get some more eyeballs. Most of the directives do not yet work (everything, and build works, and 'cleanup' can be used to clean up any dangling mounts).
Err codemadness.org 70 i 17856Err codemadness.org 70 i 17864 Err codemadness.org 70 i 17865Some considerable time ago I wrote up instructions on how to set up a FreeBSD machine with the latest KDE Plasma Desktop. Those instructions, while fairly short (set up X, install the KDE meta-port, .. and that’s it) are a bit fiddly.
Err codemadness.org 70 i 17857 Err codemadness.org 70 i 17858So – prompted slightly by a Twitter exchange recently – I’ve started a mini-sub-project to script the installation of a desktop environment and the bits needed to support it. To give it at least a modicum of UI, dialog(1) is used to ask for an environment to install and a display manager.
Err codemadness.org 70 i 17859 Err codemadness.org 70 i 17860The tricky bits – pointed out to me after I started – are hardware support, although a best-effort is better than having nothing, I think.
Err codemadness.org 70 i 17861 Err codemadness.org 70 i 17862In any case, in a VBox host it’s now down to running a single script and picking Plasma and SDDM to get a usable system for me. Other combinations have not been tested, nor has system-hardware-setup. I’ll probably maintain it for a while and if I have time and energy it’ll be tried with nVidia (those work quite well on FreeBSD) and AMD (not so much, in my experience) graphics cards when I shuffle some machines around.
Err codemadness.org 70 i 17863
Err codemadness.org 70 i 17874Err codemadness.org 70 i 17876 Err codemadness.org 70 i 17877Following up on an earlier post, the new servers for DragonFly are in place. The old 40-core machine used for bulk build, monster, is being retired. The power efficiency of the new machines is startling. Incidentally, this is where donations go – infrastructure.
Err codemadness.org 70 i 17875
Err codemadness.org 70 i 17882Err codemadness.org 70 i 17892 Err codemadness.org 70 i 17893We have three new servers in the colo now that will be taking most/all bulk package building duties from monster and the two blades (muscles and pkgbox64) that previously did the work. Monster will be retired. The new servers are a dual-socket Xeon (sting) and two 3900X based systems (thor and loki) which all together burn only around half the wattage that monster burned (500W vs 1000W) and 3 times the performance. That's at least a 6:1 improvement in performance efficiency.
Err codemadness.org 70 i 17883 Err codemadness.org 70 i 17884With SSD prices down significantly the new machines have all-SSDs. These new machines allow us to build dports binary packages for release, master, and staged at the same time and reduces the full-on bulk build times for getting all three done down from 2 weeks to 2 days. It will allow us to more promptly synchronize updates to ports with dports and get binary packages up sooner.
Err codemadness.org 70 i 17885 Err codemadness.org 70 i 17886Monster, our venerable 48-core quad-socket opteron is being retired. This was a wonderful dev machine for working on DragonFly's SMP algorithms over the last 6+ years precisely because its inter-core and inter-socket latencies were quite high. If a SMP algorithm wasn't spot-on, you could feel it. Over the years DragonFly's performance on monster in doing things like bulk builds increased radically as the SMP algorithms got better and the cores became more and more localized. This kept monster relevant far longer than I thought it would be.
Err codemadness.org 70 i 17887 Err codemadness.org 70 i 17888But we are at a point now where improvements in efficiency are just too good to ignore. Monster's quad-socket opteron (4 x 12 core 6168's) pulls 1000W under full load while a single Ryzen 3900X (12 core / 24 thread) in a server configuration pulls only 150W, and is slightly faster on the same workload to boot.
Err codemadness.org 70 i 17889 Err codemadness.org 70 i 17890I would like to thank everyone's generous donations over the last few years! We burned a few thousand on the new machines (as well as the major SSD upgrades we did to the blades) and made very good use of the money, particularly this year as prices for all major components (RAM, SSDs, CPUs, Mobos, etc) have dropped significantly.
Err codemadness.org 70 i 17891
Err codemadness.org 70 i 17898Err codemadness.org 70 i 17904 Err codemadness.org 70 i 17905Ever since OBS was successfully ported to NetBSD, I’ve been trying it out, seeing what works and what doesn’t. I’ve only just gotten started, and there’ll definitely be a lot of tweaking going forward.
Err codemadness.org 70 i 17899 Err codemadness.org 70 i 17900Capturing a specific application’s windows seems to work okay. Capturing an entire display works, too. I actually haven’t tried streaming to Twitch or YouTube yet, but in a previous experiment a few weeks ago, I was able to run a FFmpeg command line and that could stream to Twitch mostly OK.
Err codemadness.org 70 i 17901 Err codemadness.org 70 i 17902My laptop combined with my external monitor allows me to have a dual-monitor setup wherein the smaller laptop screen can be my “broadcasting station” while the bigger screen is where all the action takes place. I can make OBS visible on all Xfce workspaces, but keep it tucked away on that display only. Altogether, the setup should let me use the big screen for the fun stuff but I can still monitor everything in the small screen.
Err codemadness.org 70 i 17903
Err codemadness.org 70 i 17910Err codemadness.org 70 i 17918 Err codemadness.org 70 i 17919Ultimately the goal is to get Valve's Steam client running on NetBSD using their Linux compatibility layer while the focus the past few months with Google Summer of Code 2019 were supporting the necessary DRM ioctls for allowing Linux software running on NetBSD to be able to tap accelerated graphics support.
Err codemadness.org 70 i 17911 Err codemadness.org 70 i 17912Student developer Surya P spent the summer working on compat_netbsd32 DRM interfaces to allow Direct Rendering Manager using applications running under their Linux compatibility layer.
Err codemadness.org 70 i 17913 Err codemadness.org 70 i 17914These interfaces have been tested and working as well as updating the "suse131" packages in NetBSD to make use of those interfaces. So the necessary interfaces are now in place for Linux software running on NetBSD to be able to use accelerated graphics though Steam itself isn't yet running on NetBSD with this layer.
Err codemadness.org 70 i 17915 Err codemadness.org 70 i 17916Those curious about this DRM ioctl GSoC project can learn more from the NetBSD blog. NetBSD has also been seeing work this summer on Wayland support and better Wine support to ultimately make this BSD a better desktop operating system and potentially a comparable gaming platform to Linux.
Err codemadness.org 70 i 17917
Err codemadness.org 70 i 17963Err codemadness.org 70 i 17971 Err codemadness.org 70 i 17972Recently, Artem S. Tashkinov wrote on the Linux kernel mailing list about a Linux problem under memory pressure (via, and threaded here). The specific reproduction instructions involved having low RAM, turning off swap space, and then putting the system under load, and when that happened (emphasis mine):
Err codemadness.org 70 i 17964 Err codemadness.org 70 i 17965Once you hit a situation when opening a new tab requires more RAM than is currently available, the system will stall hard. You will barely be able to move the mouse pointer. Your disk LED will be flashing incessantly (I'm not entirely sure why). [...]
Err codemadness.org 70 i 17966 Err codemadness.org 70 i 17967I'm afraid I have bad news for the people snickering at Linux here; if you're running without swap space, you can probably get any Unix to behave this way under memory pressure. If you can't on your particular Unix, I'd actually say that your Unix is probably not letting you get full use out of your RAM.
Err codemadness.org 70 i 17968 Err codemadness.org 70 i 17969To simplify a bit, we can divide pages of user memory up into anonymous pages and file-backed pages. File-backed pages are what they sound like; they come from some specific file on the filesystem that they can be written out to (if they're dirty) or read back in from. Anonymous pages are not backed by a file, so the only place they can be written out to and read back in from is swap space. Anonymous pages mostly come from dynamic memory allocations and from modifying the program's global variables and data; file backed pages come mostly from mapping files into memory with mmap() and also, crucially, from the code and read-only data of the program.
Err codemadness.org 70 i 17970
Err codemadness.org 70 i 17981Err codemadness.org 70 i 17985 Err codemadness.org 70 i 17986First, history: DragonFly has had binaries of dports available for download for quite some time. These were originally built using poudriere, and then using the synth tool put together by John Marino. Synth worked both to build all software in dports, and as a way to test DragonFly’s SMP capability under extreme load.
Err codemadness.org 70 i 17982 Err codemadness.org 70 i 17983Matthew Dillon is working on a new version, called dsynth. It is available now but not yet part of the build. He’s been working quickly on it and there’s plenty more commits than what I have linked here. It’s already led to finding more high-load fixes.
Err codemadness.org 70 i 17984
Err codemadness.org 70 i 17991Err codemadness.org 70 i 18000 Err codemadness.org 70 i 18001DSynth is basically synth written in C, from scratch. It is designed to give us a bulk builder in base and be friendly to porting and jails down the line (for now its uses chroot's).
Err codemadness.org 70 i 17992 Err codemadness.org 70 i 17993The original synth was written by John R. Marino and its basic flow was used in writing this program, but as it was written in ada no code was directly copied.
Err codemadness.org 70 i 17994 Err codemadness.org 70 i 17995Err codemadness.org 70 i 17996
Err codemadness.org 70 i 17999- Err codemadness.org 70 i 17997
The intent is to make dsynth compatible with synth's configuration files and directory structure.
- Err codemadness.org 70 i 17998
This is a work in progress and not yet ready for prime-time. Pushing so we can get some more eyeballs. Most of the directives do not yet work (everything, and build works, and 'cleanup' can be used to clean up any dangling mounts).
Err codemadness.org 70 i 18012Err codemadness.org 70 i 18020 Err codemadness.org 70 i 18021Some considerable time ago I wrote up instructions on how to set up a FreeBSD machine with the latest KDE Plasma Desktop. Those instructions, while fairly short (set up X, install the KDE meta-port, .. and that’s it) are a bit fiddly.
Err codemadness.org 70 i 18013 Err codemadness.org 70 i 18014So – prompted slightly by a Twitter exchange recently – I’ve started a mini-sub-project to script the installation of a desktop environment and the bits needed to support it. To give it at least a modicum of UI, dialog(1) is used to ask for an environment to install and a display manager.
Err codemadness.org 70 i 18015 Err codemadness.org 70 i 18016The tricky bits – pointed out to me after I started – are hardware support, although a best-effort is better than having nothing, I think.
Err codemadness.org 70 i 18017 Err codemadness.org 70 i 18018In any case, in a VBox host it’s now down to running a single script and picking Plasma and SDDM to get a usable system for me. Other combinations have not been tested, nor has system-hardware-setup. I’ll probably maintain it for a while and if I have time and energy it’ll be tried with nVidia (those work quite well on FreeBSD) and AMD (not so much, in my experience) graphics cards when I shuffle some machines around.
Err codemadness.org 70 i 18019
Err codemadness.org 70 i 18030Err codemadness.org 70 i 18032 Err codemadness.org 70 i 18033Following up on an earlier post, the new servers for DragonFly are in place. The old 40-core machine used for bulk build, monster, is being retired. The power efficiency of the new machines is startling. Incidentally, this is where donations go – infrastructure.
Err codemadness.org 70 i 18031
Err codemadness.org 70 i 18038Err codemadness.org 70 i 18048 Err codemadness.org 70 i 18049We have three new servers in the colo now that will be taking most/all bulk package building duties from monster and the two blades (muscles and pkgbox64) that previously did the work. Monster will be retired. The new servers are a dual-socket Xeon (sting) and two 3900X based systems (thor and loki) which all together burn only around half the wattage that monster burned (500W vs 1000W) and 3 times the performance. That's at least a 6:1 improvement in performance efficiency.
Err codemadness.org 70 i 18039 Err codemadness.org 70 i 18040With SSD prices down significantly the new machines have all-SSDs. These new machines allow us to build dports binary packages for release, master, and staged at the same time and reduces the full-on bulk build times for getting all three done down from 2 weeks to 2 days. It will allow us to more promptly synchronize updates to ports with dports and get binary packages up sooner.
Err codemadness.org 70 i 18041 Err codemadness.org 70 i 18042Monster, our venerable 48-core quad-socket opteron is being retired. This was a wonderful dev machine for working on DragonFly's SMP algorithms over the last 6+ years precisely because its inter-core and inter-socket latencies were quite high. If a SMP algorithm wasn't spot-on, you could feel it. Over the years DragonFly's performance on monster in doing things like bulk builds increased radically as the SMP algorithms got better and the cores became more and more localized. This kept monster relevant far longer than I thought it would be.
Err codemadness.org 70 i 18043 Err codemadness.org 70 i 18044But we are at a point now where improvements in efficiency are just too good to ignore. Monster's quad-socket opteron (4 x 12 core 6168's) pulls 1000W under full load while a single Ryzen 3900X (12 core / 24 thread) in a server configuration pulls only 150W, and is slightly faster on the same workload to boot.
Err codemadness.org 70 i 18045 Err codemadness.org 70 i 18046I would like to thank everyone's generous donations over the last few years! We burned a few thousand on the new machines (as well as the major SSD upgrades we did to the blades) and made very good use of the money, particularly this year as prices for all major components (RAM, SSDs, CPUs, Mobos, etc) have dropped significantly.
Err codemadness.org 70 i 18047
Err codemadness.org 70 i 18054Err codemadness.org 70 i 18060 Err codemadness.org 70 i 18061Ever since OBS was successfully ported to NetBSD, I’ve been trying it out, seeing what works and what doesn’t. I’ve only just gotten started, and there’ll definitely be a lot of tweaking going forward.
Err codemadness.org 70 i 18055 Err codemadness.org 70 i 18056Capturing a specific application’s windows seems to work okay. Capturing an entire display works, too. I actually haven’t tried streaming to Twitch or YouTube yet, but in a previous experiment a few weeks ago, I was able to run a FFmpeg command line and that could stream to Twitch mostly OK.
Err codemadness.org 70 i 18057 Err codemadness.org 70 i 18058My laptop combined with my external monitor allows me to have a dual-monitor setup wherein the smaller laptop screen can be my “broadcasting station” while the bigger screen is where all the action takes place. I can make OBS visible on all Xfce workspaces, but keep it tucked away on that display only. Altogether, the setup should let me use the big screen for the fun stuff but I can still monitor everything in the small screen.
Err codemadness.org 70 i 18059
Err codemadness.org 70 i 18066Err codemadness.org 70 i 18074 Err codemadness.org 70 i 18075Ultimately the goal is to get Valve's Steam client running on NetBSD using their Linux compatibility layer while the focus the past few months with Google Summer of Code 2019 were supporting the necessary DRM ioctls for allowing Linux software running on NetBSD to be able to tap accelerated graphics support.
Err codemadness.org 70 i 18067 Err codemadness.org 70 i 18068Student developer Surya P spent the summer working on compat_netbsd32 DRM interfaces to allow Direct Rendering Manager using applications running under their Linux compatibility layer.
Err codemadness.org 70 i 18069 Err codemadness.org 70 i 18070These interfaces have been tested and working as well as updating the "suse131" packages in NetBSD to make use of those interfaces. So the necessary interfaces are now in place for Linux software running on NetBSD to be able to use accelerated graphics though Steam itself isn't yet running on NetBSD with this layer.
Err codemadness.org 70 i 18071 Err codemadness.org 70 i 18072Those curious about this DRM ioctl GSoC project can learn more from the NetBSD blog. NetBSD has also been seeing work this summer on Wayland support and better Wine support to ultimately make this BSD a better desktop operating system and potentially a comparable gaming platform to Linux.
Err codemadness.org 70 i 18073
Err codemadness.org 70 i 18193Err codemadness.org 70 i 18198 Err codemadness.org 70 i 18199Another year, another ThinkPad X1 Carbon, this time with a Dolby Atmos sound system and a smaller battery.
Err codemadness.org 70 i 18197
Err codemadness.org 70 i 18194 The seventh generation X1 Carbon isn't much different than the fifth and sixth generations. I opted for the non-vPro Core i5-8265U, 16Gb of RAM, a 512Gb NVMe SSD, and a matte non-touch WQHD display at ~300 nits. A brighter 500-nit 4k display is available, though early reports indicated it severely impacts battery life.
Err codemadness.org 70 i 18195 Gone are the microSD card slot on the back and 1mm of overall thickness (from 15.95mm to 14.95mm), but also 6Whr of battery (down to 51Whr) and a little bit of travel in the keyboard and TrackPoint buttons. I still very much like the feel of both of them, so kudos to Lenovo for not going too far down the Apple route of sacrificing performance and usability just for a thinner profile.
Err codemadness.org 70 i 18196 On my fifth generation X1 Carbon, I used a vinyl plotter to cut out stickers to cover the webcam, "X1 Carbon" branding from the bottom of the display, the power button LED, and the "ThinkPad" branding from the lower part of the keyboard deck.
Err codemadness.org 70 i 18212Err codemadness.org 70 i 18214 Err codemadness.org 70 i 18215FreeBSD with some additional setup can be installed on a MacBook 1,1 or 2,1. This article covers how to do so with FreeBSD 10-12.
Err codemadness.org 70 i 18213
Err codemadness.org 70 i 18220Err codemadness.org 70 i 18222 Err codemadness.org 70 i 18223FreeBSD can be installed as the only OS on your MacBook if desired. What you should have is:
Err codemadness.org 70 i 18221
Burn the ISO file to the blank CD or DVD. Once done, make sure it's in your MacBook and then power off the MacBook. Turn it on, and hold down the c key until the FreeBSD disc boots.
Err codemadness.org 70 i 18228 Err codemadness.org 70 i 18229Err codemadness.org 70 i 18241Err codemadness.org 70 i 18243 Err codemadness.org 70 i 18244One of the projects I have been working on for the past several months in conjunction with several other folks is upstreaming work from Netflix to handle some aspects of Transport Layer Security (TLS) in the kernel. In particular, this lets a web server use sendfile() to send static content on HTTPS connections. There is a lot more detail in the review itself, so I will spare pasting a big wall of text here. However, I have posted the patch to add the kernel-side of KTLS for review at the URL below. KTLS also requires other patches to OpenSSL and nginx, but this review is only for the kernel bits. Patches and reviews for the other bits will follow later.
Err codemadness.org 70 i 18242
Err codemadness.org 70 i 18253Err codemadness.org 70 i 18255 Err codemadness.org 70 i 18256This is a tool inspired by the beadm utility for FreeBSD/Illumos systems that creates and manages ZFS boot environments. This utility in contrast is written from the ground up in C, this should provide better performance, integration, and extensibility than the POSIX sh and awk script it was inspired by. During the time this project has been worked on, beadm has been superseded by bectl on FreeBSD. After hammering out some of the outstanding internal logic issues, I might look at providing a similar interface to the command as bectl.
Err codemadness.org 70 i 18254
Err codemadness.org 70 i 18269Err codemadness.org 70 i 18273 Err codemadness.org 70 i 18274This is a general package update to the CURRENT release repository based upon TrueOS 19.08.
Err codemadness.org 70 i 18272
Err codemadness.org 70 i 18270 Legacy boot ISO functional again
Err codemadness.org 70 i 18271 This update includes the FreeBSD fixes for the “vesa” graphics driver for legacy-boot systems. The system can once again be installed on legacy-boot systems.
PACKAGE CHANGES FROM 19.07-U1
Err codemadness.org 70 i 18276 Err codemadness.org 70 i 18277Err codemadness.org 70 i 18286Err codemadness.org 70 i 18288 Err codemadness.org 70 i 18289This is the third general package update to the STABLE release repository based upon TrueOS 12-Stable.
Err codemadness.org 70 i 18287
Err codemadness.org 70 i 18345Err codemadness.org 70 i 18350 Err codemadness.org 70 i 18351Another year, another ThinkPad X1 Carbon, this time with a Dolby Atmos sound system and a smaller battery.
Err codemadness.org 70 i 18349
Err codemadness.org 70 i 18346 The seventh generation X1 Carbon isn't much different than the fifth and sixth generations. I opted for the non-vPro Core i5-8265U, 16Gb of RAM, a 512Gb NVMe SSD, and a matte non-touch WQHD display at ~300 nits. A brighter 500-nit 4k display is available, though early reports indicated it severely impacts battery life.
Err codemadness.org 70 i 18347 Gone are the microSD card slot on the back and 1mm of overall thickness (from 15.95mm to 14.95mm), but also 6Whr of battery (down to 51Whr) and a little bit of travel in the keyboard and TrackPoint buttons. I still very much like the feel of both of them, so kudos to Lenovo for not going too far down the Apple route of sacrificing performance and usability just for a thinner profile.
Err codemadness.org 70 i 18348 On my fifth generation X1 Carbon, I used a vinyl plotter to cut out stickers to cover the webcam, "X1 Carbon" branding from the bottom of the display, the power button LED, and the "ThinkPad" branding from the lower part of the keyboard deck.
Err codemadness.org 70 i 18364Err codemadness.org 70 i 18366 Err codemadness.org 70 i 18367FreeBSD with some additional setup can be installed on a MacBook 1,1 or 2,1. This article covers how to do so with FreeBSD 10-12.
Err codemadness.org 70 i 18365
Err codemadness.org 70 i 18372Err codemadness.org 70 i 18374 Err codemadness.org 70 i 18375FreeBSD can be installed as the only OS on your MacBook if desired. What you should have is:
Err codemadness.org 70 i 18373
Burn the ISO file to the blank CD or DVD. Once done, make sure it's in your MacBook and then power off the MacBook. Turn it on, and hold down the c key until the FreeBSD disc boots.
Err codemadness.org 70 i 18380 Err codemadness.org 70 i 18381Err codemadness.org 70 i 18393Err codemadness.org 70 i 18395 Err codemadness.org 70 i 18396One of the projects I have been working on for the past several months in conjunction with several other folks is upstreaming work from Netflix to handle some aspects of Transport Layer Security (TLS) in the kernel. In particular, this lets a web server use sendfile() to send static content on HTTPS connections. There is a lot more detail in the review itself, so I will spare pasting a big wall of text here. However, I have posted the patch to add the kernel-side of KTLS for review at the URL below. KTLS also requires other patches to OpenSSL and nginx, but this review is only for the kernel bits. Patches and reviews for the other bits will follow later.
Err codemadness.org 70 i 18394
Err codemadness.org 70 i 18405Err codemadness.org 70 i 18407 Err codemadness.org 70 i 18408This is a tool inspired by the beadm utility for FreeBSD/Illumos systems that creates and manages ZFS boot environments. This utility in contrast is written from the ground up in C, this should provide better performance, integration, and extensibility than the POSIX sh and awk script it was inspired by. During the time this project has been worked on, beadm has been superseded by bectl on FreeBSD. After hammering out some of the outstanding internal logic issues, I might look at providing a similar interface to the command as bectl.
Err codemadness.org 70 i 18406
Err codemadness.org 70 i 18421Err codemadness.org 70 i 18425 Err codemadness.org 70 i 18426This is a general package update to the CURRENT release repository based upon TrueOS 19.08.
Err codemadness.org 70 i 18424
Err codemadness.org 70 i 18422 Legacy boot ISO functional again
Err codemadness.org 70 i 18423 This update includes the FreeBSD fixes for the “vesa” graphics driver for legacy-boot systems. The system can once again be installed on legacy-boot systems.
PACKAGE CHANGES FROM 19.07-U1
Err codemadness.org 70 i 18428 Err codemadness.org 70 i 18429Err codemadness.org 70 i 18438Err codemadness.org 70 i 18440 Err codemadness.org 70 i 18441This is the third general package update to the STABLE release repository based upon TrueOS 12-Stable.
Err codemadness.org 70 i 18439
Err codemadness.org 70 i 18566Err codemadness.org 70 i 18568 Err codemadness.org 70 i 18569Today, Linux and open source rules the world, and the UNIX philosophy is widely considered compulsory. Organizations are striving to build small, focused applications that work collaboratively in a cloud and microservices environment. We rely on the network, as well as HTTP (text) APIs for storing and referencing data. Moreover, nearly all configuration is stored and communicated using text (e.g. YAML, JSON or XML). And while the UNIX philosophy has changed dramatically over the past 5 decades, it hasn’t strayed too far from Ken Thompson’s original definition in 1973:
Err codemadness.org 70 i 18567
Err codemadness.org 70 i 18580Err codemadness.org 70 i 18592 Err codemadness.org 70 i 18593Valuable research is often hindered or outright prevented by the inability to install software. This need not be the case.
Err codemadness.org 70 i 18581 Err codemadness.org 70 i 18582Since I began supporting research computing in 1999, I’ve frequently seen researchers struggle for days or weeks trying to install a single open source application. In most cases, they ultimately failed.
Err codemadness.org 70 i 18583 Err codemadness.org 70 i 18584In many cases, they could have easily installed the software in seconds with one simple command, using a package manager such as Debian packages, FreeBSD ports, MacPorts, or Pkgsrc, just to name a few.
Err codemadness.org 70 i 18585 Err codemadness.org 70 i 18586Developer websites often contain poorly written instructions for doing “caveman installs”; manually downloading, unpacking, patching, and building the software. The same laborious process must often be followed for other software packages on which it depends, which can sometimes number in the dozens. Many researchers are simply unaware that there are easier ways to install the software they need. Caveman installs are a colossal waste of man-hours. If 1000 people around the globe spend an average of 20 hours each trying to install the same program that could have been installed with a package manager (this is not uncommon), then 20,000 man-hours have been lost that could have gone toward science. How many important discoveries are delayed by this?
Err codemadness.org 70 i 18587 Err codemadness.org 70 i 18588The elite research institutions have ample funding and dozens of IT staff dedicated to research computing. They can churn out publications even if their operation is inefficient. Most institutions, however, have few or no IT staff dedicated to research, and cannot afford to squander precious man-hours on temporary, one-off software installs. The wise approach for those of us in that situation is to collaborate on making software deployment easier for everyone. If we do so, then even the smallest research groups can leverage that work to be more productive and make more frequent contributions to science.
Err codemadness.org 70 i 18589 Err codemadness.org 70 i 18590Fortunately, the vast majority of open source software installs can be made trivial for anyone to do for themselves. Modern package managers perform all the same steps as a caveman install, but automatically. Package managers also install dependencies for us automatically.
Err codemadness.org 70 i 18591
Err codemadness.org 70 i 18600Err codemadness.org 70 i 18604 Err codemadness.org 70 i 18605For two years I've been driving myself crazy trying to figure out the source of a driver problem on OpenBSD: interrupts never arrived for certain touchpad devices. A couple weeks ago, I put out a public plea asking for help in case any non-OpenBSD developers recognized the problem, but while debugging an unrelated issue over the weekend, I finally solved it.
Err codemadness.org 70 i 18601 Err codemadness.org 70 i 18602It's been a long journey and it's a technical tale, but here it is.
Err codemadness.org 70 i 18603
Err codemadness.org 70 i 18614Err codemadness.org 70 i 18616 Err codemadness.org 70 i 18617Presently, Wine on amd64 is in test phase. It seems to work fine with caveats like LD_LIBRARY_PATH which has to be set as 32-bit Xorg libs don't have ${PREFIX}/emul/netbsd32/lib in its rpath section. The latter is due to us extracting 32-bit libs from tarballs in lieu of building 32-bit Xorg on amd64. As previously stated, pkgsrc doesn't search for pkgconfig files in ${PREFIX}/emul/netbsd32/lib which might have inadvertent effects that I am unaware of as of now. I shall be working on these issues during the final coding period. I would like to thank @leot, @maya and @christos for saving me from shooting myself in the foot many a time. I, admittedly, have had times when multiple approaches, which all seemed right at that time, perplexed me. I believe those are times when having a mentor counts, and I have been lucky enough to have really good ones. Once again, thanks to Google for this wonderful opportunity.
Err codemadness.org 70 i 18615
Err codemadness.org 70 i 18622Err codemadness.org 70 i 18626 Err codemadness.org 70 i 18627As a part of Google Summer of Code’19, I am working on improving the support for Syzkaller kernel fuzzer. Syzkaller is an unsupervised coverage-guided kernel fuzzer, that supports a variety of operating systems including NetBSD. This report details the work done during the second coding period.
Err codemadness.org 70 i 18623 Err codemadness.org 70 i 18624You can also take a look at the first report to learn more about the initial support that we added. : https://blog.netbsd.org/tnf/entry/enhancing_syzkaller_support_for_netbsd
Err codemadness.org 70 i 18625
Err codemadness.org 70 i 18632Err codemadness.org 70 i 18634 Err codemadness.org 70 i 18635"So I said I won’t be talking about the BSDs, but I feel like I should at the very least give you a general overview of the RK3399 *BSD functionality. I’ll make it quick. I’ve spoken to *BSD devs whom worked on the RockPro64 and from what I’ve gathered (despite the different *BSDs having varying degree of support for the RK3399 SOC) many of the core features are already supported, which bodes well for *BSD on the Pro. That said, some of the things you’d require on a functional laptop – such as the LCD (using eDP) for instance – will not work on the Pinebook Pro using *BSD as of today. So clearly a degree of work is yet needed for a BSD to run on the device. However, keep in mind that *BSD developers will be receiving their units soon and by the time you receive yours some basic functionality may be available."
Err codemadness.org 70 i 18633
Err codemadness.org 70 i 18640Err codemadness.org 70 i 18650 Err codemadness.org 70 i 18651Killing processes in a Unix-like system can be trickier than expected. Last week I was debugging an odd issue related to job stopping on Semaphore. More specifically, an issue related to the killing of a running process in a job. Here are the highlights of what I learned:
Err codemadness.org 70 i 18641 Err codemadness.org 70 i 18642Unix-like operating systems have sophisticated process relationships. Parent-child, process groups, sessions, and session leaders. However, the details are not uniform across operating systems like Linux and macOS. POSIX compliant operating systems support sending signals to process groups with a negative PID number.
Err codemadness.org 70 i 18643 Err codemadness.org 70 i 18644Sending signals to all processes in a session is not trivial with syscalls.
Err codemadness.org 70 i 18645 Err codemadness.org 70 i 18646Child processes started with exec inherit their parent signal configuration. If the parent process is ignoring the SIGHUP signal, for example, this configuration is propagated to the children.
Err codemadness.org 70 i 18647 Err codemadness.org 70 i 18648The answer to the “What happens with orphaned process groups” question is not trivial.
Err codemadness.org 70 i 18649
Err codemadness.org 70 i 18656Err codemadness.org 70 i 18664 Err codemadness.org 70 i 18665I love fast software. That is, software speedy both in function and interface. Software with minimal to no lag between wanting to activate or manipulate something and the thing happening. Lightness.
Err codemadness.org 70 i 18657 Err codemadness.org 70 i 18658Software that’s speedy usually means it’s focused. Like a good tool, it often means that it’s simple, but that’s not necessarily true. Speed in software is probably the most valuable, least valued asset. To me, speedy software is the difference between an application smoothly integrating into your life, and one called upon with great reluctance. Fastness in software is like great margins in a book — makes you smile without necessarily knowing why.
Err codemadness.org 70 i 18659 Err codemadness.org 70 i 18660But why is slow bad? Fast software is not always good software, but slow software is rarely able to rise to greatness. Fast software gives the user a chance to “meld” with its toolset. That is, not break flow. When the nerds upon Nerd Hill fight to the death over Vi and Emacs, it’s partly because they have such a strong affinity for the flow of the application and its meldiness. They have invested. The Tool Is Good, so they feel. Not breaking flow is an axiom of great tools.
Err codemadness.org 70 i 18661 Err codemadness.org 70 i 18662A typewriter is an excellent tool because, even though it’s slow in a relative sense, every aspect of the machine itself operates as quickly as the user can move. It is focused. There are no delays when making a new line or slamming a key into the paper. Yes, you have to put a new sheet of paper into the machine at the end of a page, but that action becomes part of the flow of using the machine, and the accumulation of paper a visual indication of work completed. It is not wasted work. There are no fundamental mechanical delays in using the machine. The best software inches ever closer to the physical directness of something like a typewriter. (The machine may break down, of course, ribbons need to be changed — but this is maintenance and separate from the use of the tool. I’d be delighted to “maintain” Photoshop if it would lighten it up.)
Err codemadness.org 70 i 18663
Err codemadness.org 70 i 18705Err codemadness.org 70 i 18707 Err codemadness.org 70 i 18708Today, Linux and open source rules the world, and the UNIX philosophy is widely considered compulsory. Organizations are striving to build small, focused applications that work collaboratively in a cloud and microservices environment. We rely on the network, as well as HTTP (text) APIs for storing and referencing data. Moreover, nearly all configuration is stored and communicated using text (e.g. YAML, JSON or XML). And while the UNIX philosophy has changed dramatically over the past 5 decades, it hasn’t strayed too far from Ken Thompson’s original definition in 1973:
Err codemadness.org 70 i 18706
Err codemadness.org 70 i 18719Err codemadness.org 70 i 18731 Err codemadness.org 70 i 18732Valuable research is often hindered or outright prevented by the inability to install software. This need not be the case.
Err codemadness.org 70 i 18720 Err codemadness.org 70 i 18721Since I began supporting research computing in 1999, I’ve frequently seen researchers struggle for days or weeks trying to install a single open source application. In most cases, they ultimately failed.
Err codemadness.org 70 i 18722 Err codemadness.org 70 i 18723In many cases, they could have easily installed the software in seconds with one simple command, using a package manager such as Debian packages, FreeBSD ports, MacPorts, or Pkgsrc, just to name a few.
Err codemadness.org 70 i 18724 Err codemadness.org 70 i 18725Developer websites often contain poorly written instructions for doing “caveman installs”; manually downloading, unpacking, patching, and building the software. The same laborious process must often be followed for other software packages on which it depends, which can sometimes number in the dozens. Many researchers are simply unaware that there are easier ways to install the software they need. Caveman installs are a colossal waste of man-hours. If 1000 people around the globe spend an average of 20 hours each trying to install the same program that could have been installed with a package manager (this is not uncommon), then 20,000 man-hours have been lost that could have gone toward science. How many important discoveries are delayed by this?
Err codemadness.org 70 i 18726 Err codemadness.org 70 i 18727The elite research institutions have ample funding and dozens of IT staff dedicated to research computing. They can churn out publications even if their operation is inefficient. Most institutions, however, have few or no IT staff dedicated to research, and cannot afford to squander precious man-hours on temporary, one-off software installs. The wise approach for those of us in that situation is to collaborate on making software deployment easier for everyone. If we do so, then even the smallest research groups can leverage that work to be more productive and make more frequent contributions to science.
Err codemadness.org 70 i 18728 Err codemadness.org 70 i 18729Fortunately, the vast majority of open source software installs can be made trivial for anyone to do for themselves. Modern package managers perform all the same steps as a caveman install, but automatically. Package managers also install dependencies for us automatically.
Err codemadness.org 70 i 18730
Err codemadness.org 70 i 18739Err codemadness.org 70 i 18743 Err codemadness.org 70 i 18744For two years I've been driving myself crazy trying to figure out the source of a driver problem on OpenBSD: interrupts never arrived for certain touchpad devices. A couple weeks ago, I put out a public plea asking for help in case any non-OpenBSD developers recognized the problem, but while debugging an unrelated issue over the weekend, I finally solved it.
Err codemadness.org 70 i 18740 Err codemadness.org 70 i 18741It's been a long journey and it's a technical tale, but here it is.
Err codemadness.org 70 i 18742
Err codemadness.org 70 i 18753Err codemadness.org 70 i 18755 Err codemadness.org 70 i 18756Presently, Wine on amd64 is in test phase. It seems to work fine with caveats like LD_LIBRARY_PATH which has to be set as 32-bit Xorg libs don't have ${PREFIX}/emul/netbsd32/lib in its rpath section. The latter is due to us extracting 32-bit libs from tarballs in lieu of building 32-bit Xorg on amd64. As previously stated, pkgsrc doesn't search for pkgconfig files in ${PREFIX}/emul/netbsd32/lib which might have inadvertent effects that I am unaware of as of now. I shall be working on these issues during the final coding period. I would like to thank @leot, @maya and @christos for saving me from shooting myself in the foot many a time. I, admittedly, have had times when multiple approaches, which all seemed right at that time, perplexed me. I believe those are times when having a mentor counts, and I have been lucky enough to have really good ones. Once again, thanks to Google for this wonderful opportunity.
Err codemadness.org 70 i 18754
Err codemadness.org 70 i 18761Err codemadness.org 70 i 18765 Err codemadness.org 70 i 18766As a part of Google Summer of Code’19, I am working on improving the support for Syzkaller kernel fuzzer. Syzkaller is an unsupervised coverage-guided kernel fuzzer, that supports a variety of operating systems including NetBSD. This report details the work done during the second coding period.
Err codemadness.org 70 i 18762 Err codemadness.org 70 i 18763You can also take a look at the first report to learn more about the initial support that we added. : https://blog.netbsd.org/tnf/entry/enhancing_syzkaller_support_for_netbsd
Err codemadness.org 70 i 18764
Err codemadness.org 70 i 18771Err codemadness.org 70 i 18773 Err codemadness.org 70 i 18774"So I said I won’t be talking about the BSDs, but I feel like I should at the very least give you a general overview of the RK3399 *BSD functionality. I’ll make it quick. I’ve spoken to *BSD devs whom worked on the RockPro64 and from what I’ve gathered (despite the different *BSDs having varying degree of support for the RK3399 SOC) many of the core features are already supported, which bodes well for *BSD on the Pro. That said, some of the things you’d require on a functional laptop – such as the LCD (using eDP) for instance – will not work on the Pinebook Pro using *BSD as of today. So clearly a degree of work is yet needed for a BSD to run on the device. However, keep in mind that *BSD developers will be receiving their units soon and by the time you receive yours some basic functionality may be available."
Err codemadness.org 70 i 18772
Err codemadness.org 70 i 18779Err codemadness.org 70 i 18789 Err codemadness.org 70 i 18790Killing processes in a Unix-like system can be trickier than expected. Last week I was debugging an odd issue related to job stopping on Semaphore. More specifically, an issue related to the killing of a running process in a job. Here are the highlights of what I learned:
Err codemadness.org 70 i 18780 Err codemadness.org 70 i 18781Unix-like operating systems have sophisticated process relationships. Parent-child, process groups, sessions, and session leaders. However, the details are not uniform across operating systems like Linux and macOS. POSIX compliant operating systems support sending signals to process groups with a negative PID number.
Err codemadness.org 70 i 18782 Err codemadness.org 70 i 18783Sending signals to all processes in a session is not trivial with syscalls.
Err codemadness.org 70 i 18784 Err codemadness.org 70 i 18785Child processes started with exec inherit their parent signal configuration. If the parent process is ignoring the SIGHUP signal, for example, this configuration is propagated to the children.
Err codemadness.org 70 i 18786 Err codemadness.org 70 i 18787The answer to the “What happens with orphaned process groups” question is not trivial.
Err codemadness.org 70 i 18788
Err codemadness.org 70 i 18795Err codemadness.org 70 i 18803 Err codemadness.org 70 i 18804I love fast software. That is, software speedy both in function and interface. Software with minimal to no lag between wanting to activate or manipulate something and the thing happening. Lightness.
Err codemadness.org 70 i 18796 Err codemadness.org 70 i 18797Software that’s speedy usually means it’s focused. Like a good tool, it often means that it’s simple, but that’s not necessarily true. Speed in software is probably the most valuable, least valued asset. To me, speedy software is the difference between an application smoothly integrating into your life, and one called upon with great reluctance. Fastness in software is like great margins in a book — makes you smile without necessarily knowing why.
Err codemadness.org 70 i 18798 Err codemadness.org 70 i 18799But why is slow bad? Fast software is not always good software, but slow software is rarely able to rise to greatness. Fast software gives the user a chance to “meld” with its toolset. That is, not break flow. When the nerds upon Nerd Hill fight to the death over Vi and Emacs, it’s partly because they have such a strong affinity for the flow of the application and its meldiness. They have invested. The Tool Is Good, so they feel. Not breaking flow is an axiom of great tools.
Err codemadness.org 70 i 18800 Err codemadness.org 70 i 18801A typewriter is an excellent tool because, even though it’s slow in a relative sense, every aspect of the machine itself operates as quickly as the user can move. It is focused. There are no delays when making a new line or slamming a key into the paper. Yes, you have to put a new sheet of paper into the machine at the end of a page, but that action becomes part of the flow of using the machine, and the accumulation of paper a visual indication of work completed. It is not wasted work. There are no fundamental mechanical delays in using the machine. The best software inches ever closer to the physical directness of something like a typewriter. (The machine may break down, of course, ribbons need to be changed — but this is maintenance and separate from the use of the tool. I’d be delighted to “maintain” Photoshop if it would lighten it up.)
Err codemadness.org 70 i 18802
Err codemadness.org 70 i 18941Err codemadness.org 70 i 18985 Err codemadness.org 70 i 18986If you have been following source-changes, you may have noticed the creation of the netbsd-9 branch! It has some really exciting items that we worked on:
Err codemadness.org 70 i 18942 Err codemadness.org 70 i 18943Err codemadness.org 70 i 18944
Err codemadness.org 70 i 18978 Err codemadness.org 70 i 18979- New AArch64 architecture support: Err codemadness.org 70 i 18945 Err codemadness.org 70 i 18946
Err codemadness.org 70 i 18952Err codemadness.org 70 i 18947
- Symmetric and asymmetrical multiprocessing support (aka big.LITTLE)
Err codemadness.org 70 i 18948- Support for running 32-bit binaries
Err codemadness.org 70 i 18949- UEFI and ACPI support
Err codemadness.org 70 i 18950- Support for SBSA/SBBR (server-class) hardware.
Err codemadness.org 70 i 18951- The FDT-ization of many ARM boards: Err codemadness.org 70 i 18953 Err codemadness.org 70 i 18954
Err codemadness.org 70 i 18959Err codemadness.org 70 i 18955
- the 32-bit GENERIC kernel lists 129 different DTS configurations
Err codemadness.org 70 i 18956- the 64-bit GENERIC64 kernel lists 74 different DTS configurations
Err codemadness.org 70 i 18957- All supported by a single kernel, without requiring per-board configuration.
Err codemadness.org 70 i 18958- Graphics driver update, matching Linux 4.4, adding support for up to Kaby Lake based Intel graphics devices.
Err codemadness.org 70 i 18960- ZFS has been updated to a modern version and seen many bugfixes.
Err codemadness.org 70 i 18961- New hardware-accelerated virtualization via NVMM.
Err codemadness.org 70 i 18962- NPF performance improvements and bug fixes. A new lookup algorithm, thmap, is now the default.
Err codemadness.org 70 i 18963- NVMe performance improvements
Err codemadness.org 70 i 18964- Optional kernel ASLR support, and partial kernel ASLR for the default configuration.
Err codemadness.org 70 i 18965- Kernel sanitizers: Err codemadness.org 70 i 18966 Err codemadness.org 70 i 18967
Err codemadness.org 70 i 18973Err codemadness.org 70 i 18968
- KLEAK, detecting memory leaks
Err codemadness.org 70 i 18969- KASAN, detecting memory overruns
Err codemadness.org 70 i 18970- KUBSAN, detecting undefined behaviour
Err codemadness.org 70 i 18971- These have been used together with continuous fuzzing via the syzkaller project to find many bugs that were fixed.
Err codemadness.org 70 i 18972- The removal of outdated networking components such as ISDN and all of its drivers
Err codemadness.org 70 i 18974- The installer is now capable of performing GPT UEFI installations.
Err codemadness.org 70 i 18975- Dramatically improved support for userland sanitizers, as well as the option to build all of NetBSD's userland using them for bug-finding.
Err codemadness.org 70 i 18976- Update to graphics userland: Mesa was updated to 18.3.4, and llvmpipe is now available for several architectures, providing 3D graphics even in the absence of a supported GPU.
Err codemadness.org 70 i 18977We try to test NetBSD as best as we can, but your testing can help NetBSD 9.0 a great release. Please test it and let us know of any bugs you find.
Err codemadness.org 70 i 18980 Err codemadness.org 70 i 18981Err codemadness.org 70 i 18982
Err codemadness.org 70 i 18984- Binaries are available at https://nycdn.netbsd.org/pub/NetBSD-daily/netbsd-9/latest/
Err codemadness.org 70 i 18983
Err codemadness.org 70 i 18991Err codemadness.org 70 i 18997 Err codemadness.org 70 i 18998xargs is probably one of the more difficult to understand of the unix command arsenal and of course that just means it’s one of the most useful too.
Err codemadness.org 70 i 18996
Err codemadness.org 70 i 18992 I discovered a handy trick that I thought was worth a share. Please note there are probably other (better) ways to do this but I did my stackoverflow research and found nothing better.
Err codemadness.org 70 i 18993 xargs — at least how I’ve most utilized it — is handy for taking some number of lines as input and doing some work per line. It’s hard to be more specific than that as it does so much else.
Err codemadness.org 70 i 18994 It literally took me an hour of piecing together random man pages + tips from 11 year olds on stack overflow, but eventually I produced this gem:
Err codemadness.org 70 i 18995 This is an example of how to find files matching a certain pattern and rename each of them. It sounds so trivial (and it is) but it demonstrates some cool tricks in an easy concept.
Err codemadness.org 70 i 19005Err codemadness.org 70 i 19008 Err codemadness.org 70 i 19009This is a transcript of the talk I gave at pkgsrcCon 2019 in Cambridge, UK. It is about spellcheckers, but there are much more general software engineering lessons that we can learn from this case study.
Err codemadness.org 70 i 19007
Err codemadness.org 70 i 19006 The reason I got into this subject at all was my paternal leave last year, when I finally had some more time to spend working on pkgsrc. It was a tiny item in the enormous TODO file at the top of the source tree (“update enchant to version 2.2”) that made me go into this rabbit hole.
Err codemadness.org 70 i 19014Err codemadness.org 70 i 19017 Err codemadness.org 70 i 19018I have been working on adapting TriforceAFL for NetBSD kernel syscall fuzzing. This blog post summarizes the work done until the second evaluation.
Err codemadness.org 70 i 19016
Err codemadness.org 70 i 19015 For work done during the first coding period, check out this post.
Benedict’s Gear:
Err codemadness.org 70 i 19040 Err codemadness.org 70 i 19041Err codemadness.org 70 i 19042GlocalMe G3 Mobile Travel HotSpot and Powerbank
Err codemadness.org 70 i 19045
Err codemadness.org 70 i 19043 Mogics Power Bagel
Err codemadness.org 70 i 19044 Charby Sense Power Cable
Allan’s Gear:
Err codemadness.org 70 i 19047 Err codemadness.org 70 i 19048Err codemadness.org 70 i 19049Huawei E5770s-320 4G LTE 150 Mbps Mobile WiFi Pro
Err codemadness.org 70 i 19055
Err codemadness.org 70 i 19050 AOW Global Data SIM Card for On-Demand 4G LTE Mobile Data in Over 90 Countries
Err codemadness.org 70 i 19051 All my devices charge from USB-C, so that is great
Err codemadness.org 70 i 19052 More USB thumb drives than strictly necessary
Err codemadness.org 70 i 19053 My Lenovo X270 laptop running FreeBSD 13-current
Err codemadness.org 70 i 19054 My 2016 Macbook Pro (a prize from the raffle at vBSDCon 2017) that I use for email and video conferencing to preserve battery on my FreeBSD machine for work
Err codemadness.org 70 i 19100Err codemadness.org 70 i 19144 Err codemadness.org 70 i 19145If you have been following source-changes, you may have noticed the creation of the netbsd-9 branch! It has some really exciting items that we worked on:
Err codemadness.org 70 i 19101 Err codemadness.org 70 i 19102Err codemadness.org 70 i 19103
Err codemadness.org 70 i 19137 Err codemadness.org 70 i 19138- New AArch64 architecture support: Err codemadness.org 70 i 19104 Err codemadness.org 70 i 19105
Err codemadness.org 70 i 19111Err codemadness.org 70 i 19106
- Symmetric and asymmetrical multiprocessing support (aka big.LITTLE)
Err codemadness.org 70 i 19107- Support for running 32-bit binaries
Err codemadness.org 70 i 19108- UEFI and ACPI support
Err codemadness.org 70 i 19109- Support for SBSA/SBBR (server-class) hardware.
Err codemadness.org 70 i 19110- The FDT-ization of many ARM boards: Err codemadness.org 70 i 19112 Err codemadness.org 70 i 19113
Err codemadness.org 70 i 19118Err codemadness.org 70 i 19114
- the 32-bit GENERIC kernel lists 129 different DTS configurations
Err codemadness.org 70 i 19115- the 64-bit GENERIC64 kernel lists 74 different DTS configurations
Err codemadness.org 70 i 19116- All supported by a single kernel, without requiring per-board configuration.
Err codemadness.org 70 i 19117- Graphics driver update, matching Linux 4.4, adding support for up to Kaby Lake based Intel graphics devices.
Err codemadness.org 70 i 19119- ZFS has been updated to a modern version and seen many bugfixes.
Err codemadness.org 70 i 19120- New hardware-accelerated virtualization via NVMM.
Err codemadness.org 70 i 19121- NPF performance improvements and bug fixes. A new lookup algorithm, thmap, is now the default.
Err codemadness.org 70 i 19122- NVMe performance improvements
Err codemadness.org 70 i 19123- Optional kernel ASLR support, and partial kernel ASLR for the default configuration.
Err codemadness.org 70 i 19124- Kernel sanitizers: Err codemadness.org 70 i 19125 Err codemadness.org 70 i 19126
Err codemadness.org 70 i 19132Err codemadness.org 70 i 19127
- KLEAK, detecting memory leaks
Err codemadness.org 70 i 19128- KASAN, detecting memory overruns
Err codemadness.org 70 i 19129- KUBSAN, detecting undefined behaviour
Err codemadness.org 70 i 19130- These have been used together with continuous fuzzing via the syzkaller project to find many bugs that were fixed.
Err codemadness.org 70 i 19131- The removal of outdated networking components such as ISDN and all of its drivers
Err codemadness.org 70 i 19133- The installer is now capable of performing GPT UEFI installations.
Err codemadness.org 70 i 19134- Dramatically improved support for userland sanitizers, as well as the option to build all of NetBSD's userland using them for bug-finding.
Err codemadness.org 70 i 19135- Update to graphics userland: Mesa was updated to 18.3.4, and llvmpipe is now available for several architectures, providing 3D graphics even in the absence of a supported GPU.
Err codemadness.org 70 i 19136We try to test NetBSD as best as we can, but your testing can help NetBSD 9.0 a great release. Please test it and let us know of any bugs you find.
Err codemadness.org 70 i 19139 Err codemadness.org 70 i 19140Err codemadness.org 70 i 19141
Err codemadness.org 70 i 19143- Binaries are available at https://nycdn.netbsd.org/pub/NetBSD-daily/netbsd-9/latest/
Err codemadness.org 70 i 19142
Err codemadness.org 70 i 19150Err codemadness.org 70 i 19156 Err codemadness.org 70 i 19157xargs is probably one of the more difficult to understand of the unix command arsenal and of course that just means it’s one of the most useful too.
Err codemadness.org 70 i 19155
Err codemadness.org 70 i 19151 I discovered a handy trick that I thought was worth a share. Please note there are probably other (better) ways to do this but I did my stackoverflow research and found nothing better.
Err codemadness.org 70 i 19152 xargs — at least how I’ve most utilized it — is handy for taking some number of lines as input and doing some work per line. It’s hard to be more specific than that as it does so much else.
Err codemadness.org 70 i 19153 It literally took me an hour of piecing together random man pages + tips from 11 year olds on stack overflow, but eventually I produced this gem:
Err codemadness.org 70 i 19154 This is an example of how to find files matching a certain pattern and rename each of them. It sounds so trivial (and it is) but it demonstrates some cool tricks in an easy concept.
Err codemadness.org 70 i 19164Err codemadness.org 70 i 19167 Err codemadness.org 70 i 19168This is a transcript of the talk I gave at pkgsrcCon 2019 in Cambridge, UK. It is about spellcheckers, but there are much more general software engineering lessons that we can learn from this case study.
Err codemadness.org 70 i 19166
Err codemadness.org 70 i 19165 The reason I got into this subject at all was my paternal leave last year, when I finally had some more time to spend working on pkgsrc. It was a tiny item in the enormous TODO file at the top of the source tree (“update enchant to version 2.2”) that made me go into this rabbit hole.
Err codemadness.org 70 i 19173Err codemadness.org 70 i 19176 Err codemadness.org 70 i 19177I have been working on adapting TriforceAFL for NetBSD kernel syscall fuzzing. This blog post summarizes the work done until the second evaluation.
Err codemadness.org 70 i 19175
Err codemadness.org 70 i 19174 For work done during the first coding period, check out this post.
Benedict’s Gear:
Err codemadness.org 70 i 19199 Err codemadness.org 70 i 19200Err codemadness.org 70 i 19201GlocalMe G3 Mobile Travel HotSpot and Powerbank
Err codemadness.org 70 i 19204
Err codemadness.org 70 i 19202 Mogics Power Bagel
Err codemadness.org 70 i 19203 Charby Sense Power Cable
Allan’s Gear:
Err codemadness.org 70 i 19206 Err codemadness.org 70 i 19207Err codemadness.org 70 i 19208Huawei E5770s-320 4G LTE 150 Mbps Mobile WiFi Pro
Err codemadness.org 70 i 19214
Err codemadness.org 70 i 19209 AOW Global Data SIM Card for On-Demand 4G LTE Mobile Data in Over 90 Countries
Err codemadness.org 70 i 19210 All my devices charge from USB-C, so that is great
Err codemadness.org 70 i 19211 More USB thumb drives than strictly necessary
Err codemadness.org 70 i 19212 My Lenovo X270 laptop running FreeBSD 13-current
Err codemadness.org 70 i 19213 My 2016 Macbook Pro (a prize from the raffle at vBSDCon 2017) that I use for email and video conferencing to preserve battery on my FreeBSD machine for work
Err codemadness.org 70 i 19384Err codemadness.org 70 i 19391 Err codemadness.org 70 i 19392We do not wish to keep you from enjoying your summer time, but this
Err codemadness.org 70 i 19388 Err codemadness.org 70 i 19389
Err codemadness.org 70 i 19385 is a recommended security update enriched with reliability fixes for the
Err codemadness.org 70 i 19386 new 19.7 series. Of special note are performance improvements as well
Err codemadness.org 70 i 19387 as a fix for a longstanding NAT before IPsec limitation.Full patch notes:
Err codemadness.org 70 i 19390
Err codemadness.org 70 i 19430Err codemadness.org 70 i 19432 Err codemadness.org 70 i 19433Stay safe and hydrated, Your OPNsense team
Err codemadness.org 70 i 19431
One of the frustrating things about operating ZFS on Linux is that the ARC size is critical but ZFS's auto-tuning of it is opaque and apparently prone to malfunctions, where your ARC will mysteriously shrink drastically and then stick there.
Err codemadness.org 70 i 19440Err codemadness.org 70 i 19446 Err codemadness.org 70 i 19447Linux's regular filesystem disk cache is very predictable; if you do disk IO, the cache will relentlessly grow to use all of your free memory. This sometimes disconcerts people when free reports that there's very little memory actually free, but at least you're getting value from your RAM. This is so reliable and regular that we generally don't think about 'is my system going to use all of my RAM as a disk cache', because the answer is always 'yes'. (The general filesystem cache is also called the page cache.)
Err codemadness.org 70 i 19441 Err codemadness.org 70 i 19442This is unfortunately not the case with the ZFS ARC in ZFS on Linux (and it wasn't necessarily the case even on Solaris). ZFS has both a current size and a 'target size' for the ARC (called 'c' in ZFS statistics). When your system boots this target size starts out as the maximum allowed size for the ARC, but various events afterward can cause it to be reduced (which obviously limits the size of your ARC, since that's its purpose). In practice, this reduction in the target size is both pretty sticky and rather mysterious (as ZFS on Linux doesn't currently expose enough statistics to tell why your ARC target size shrunk in any particular case).
Err codemadness.org 70 i 19443 Err codemadness.org 70 i 19444The net effect is that the ZFS ARC is not infrequently quite shy and hesitant about using memory, in stark contrast to Linux's normal filesystem cache. The default maximum ARC size starts out as only half of your RAM (unlike the regular filesystem cache, which will use all of it), and then it shrinks from there, sometimes very significantly, and once shrunk it only recovers slowly (if at all).
Err codemadness.org 70 i 19445
commit a49112761c919d42d405ec10252eb0553662c824 Err codemadness.org 70
i 19454 Author: Matthew Dillon <dillon at apollo.backplane.com> Err codemadness.org 70
i 19455 Date: Mon Jun 10 17:53:46 2019 -0700 Err codemadness.org 70
i 19456 Err codemadness.org 70
i 19457 installer - Default to HAMMER2 Err codemadness.org 70
i 19458 Err codemadness.org 70
i 19459 * Change the installer default from HAMMER1 to HAMMER2. Err codemadness.org 70
i 19460 Err codemadness.org 70
i 19461 * Adjust the nrelease build to print the location of the image files Err codemadness.org 70
i 19462 when it finishes. Err codemadness.org 70
i 19463 Err codemadness.org 70
i 19464 Summary of changes: Err codemadness.org 70
i 19465 nrelease/Makefile | 2 +- Err codemadness.org 70
i 19466 usr.sbin/installer/dfuibe_installer/flow.c | 20 ++++++++++---------- Err codemadness.org 70
i 19467 2 files changed, 11 insertions(+), 11 deletions(-) Err codemadness.org 70
i 19468 Err codemadness.org 70
i 19469 http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/a49112761c919d42d405ec10252eb0553662c824 Err codemadness.org 70
i 19470 Err codemadness.org 70
i 19471 Err codemadness.org 70
i 19472 Err codemadness.org 70 i 19477Err codemadness.org 70 i 19479 Err codemadness.org 70 i 19480NetBSD audio – an application perspective ... or, "doing it natively, because we can"
Err codemadness.org 70 i 19478
audio options for NetBSD in pkgsrc
Err codemadness.org 70 i 19482 Err codemadness.org 70 i 19483Many many abstraction layers available:
Err codemadness.org 70 i 19488 Err codemadness.org 70 i 19489Advantages of using NetBSD audio directly
Err codemadness.org 70 i 19498 Err codemadness.org 70 i 19499[nia note: SDL2 seems very sensitive to the blk_ms sysctl being high or low, with other implementations there seems to be a less noticable difference. I don't know why.]
Err codemadness.org 70 i 19514Err codemadness.org 70 i 19520 Err codemadness.org 70 i 19521Two new FreeNAS Mini systems join the very popular FreeNAS Mini and Mini XL:
Err codemadness.org 70 i 19515 Err codemadness.org 70 i 19516FreeNAS Mini XL+: This powerful 10 Bay platform (8x 3.5” and 1x 2.5” hot-swap, 1x 2.5” internal) includes the latest, compact server technology and provides dual 10GbE ports, 8 CPU cores and 32 GB RAM for high performance workgroups. The Mini XL+ scales beyond 100TB and is ideal for very demanding applications, including hosting virtual machines and multimedia editing. Starting at $1499, the Mini XL+ configured with cache SSD and 80 TB capacity is $4299, and consumes about 100 Watts.
Err codemadness.org 70 i 19517 Err codemadness.org 70 i 19518FreeNAS Mini E: This cost-effective 4 Bay platform provides the resources required for SOHO use with quad GbE ports and 8 GB of RAM. The Mini E is ideal for file sharing, streaming and transcoding video at 1080p. Starting at $749, the Mini E configured with 8 TB capacity is $999, and consumes about 36 Watts.
Err codemadness.org 70 i 19519
Err codemadness.org 70 i 19564Err codemadness.org 70 i 19571 Err codemadness.org 70 i 19572We do not wish to keep you from enjoying your summer time, but this
Err codemadness.org 70 i 19568 Err codemadness.org 70 i 19569
Err codemadness.org 70 i 19565 is a recommended security update enriched with reliability fixes for the
Err codemadness.org 70 i 19566 new 19.7 series. Of special note are performance improvements as well
Err codemadness.org 70 i 19567 as a fix for a longstanding NAT before IPsec limitation.Full patch notes:
Err codemadness.org 70 i 19570
Err codemadness.org 70 i 19610Err codemadness.org 70 i 19612 Err codemadness.org 70 i 19613Stay safe and hydrated, Your OPNsense team
Err codemadness.org 70 i 19611
One of the frustrating things about operating ZFS on Linux is that the ARC size is critical but ZFS's auto-tuning of it is opaque and apparently prone to malfunctions, where your ARC will mysteriously shrink drastically and then stick there.
Err codemadness.org 70 i 19620Err codemadness.org 70 i 19626 Err codemadness.org 70 i 19627Linux's regular filesystem disk cache is very predictable; if you do disk IO, the cache will relentlessly grow to use all of your free memory. This sometimes disconcerts people when free reports that there's very little memory actually free, but at least you're getting value from your RAM. This is so reliable and regular that we generally don't think about 'is my system going to use all of my RAM as a disk cache', because the answer is always 'yes'. (The general filesystem cache is also called the page cache.)
Err codemadness.org 70 i 19621 Err codemadness.org 70 i 19622This is unfortunately not the case with the ZFS ARC in ZFS on Linux (and it wasn't necessarily the case even on Solaris). ZFS has both a current size and a 'target size' for the ARC (called 'c' in ZFS statistics). When your system boots this target size starts out as the maximum allowed size for the ARC, but various events afterward can cause it to be reduced (which obviously limits the size of your ARC, since that's its purpose). In practice, this reduction in the target size is both pretty sticky and rather mysterious (as ZFS on Linux doesn't currently expose enough statistics to tell why your ARC target size shrunk in any particular case).
Err codemadness.org 70 i 19623 Err codemadness.org 70 i 19624The net effect is that the ZFS ARC is not infrequently quite shy and hesitant about using memory, in stark contrast to Linux's normal filesystem cache. The default maximum ARC size starts out as only half of your RAM (unlike the regular filesystem cache, which will use all of it), and then it shrinks from there, sometimes very significantly, and once shrunk it only recovers slowly (if at all).
Err codemadness.org 70 i 19625
commit a49112761c919d42d405ec10252eb0553662c824 Err codemadness.org 70
i 19634 Author: Matthew Dillon <dillon at apollo.backplane.com> Err codemadness.org 70
i 19635 Date: Mon Jun 10 17:53:46 2019 -0700 Err codemadness.org 70
i 19636 Err codemadness.org 70
i 19637 installer - Default to HAMMER2 Err codemadness.org 70
i 19638 Err codemadness.org 70
i 19639 * Change the installer default from HAMMER1 to HAMMER2. Err codemadness.org 70
i 19640 Err codemadness.org 70
i 19641 * Adjust the nrelease build to print the location of the image files Err codemadness.org 70
i 19642 when it finishes. Err codemadness.org 70
i 19643 Err codemadness.org 70
i 19644 Summary of changes: Err codemadness.org 70
i 19645 nrelease/Makefile | 2 +- Err codemadness.org 70
i 19646 usr.sbin/installer/dfuibe_installer/flow.c | 20 ++++++++++---------- Err codemadness.org 70
i 19647 2 files changed, 11 insertions(+), 11 deletions(-) Err codemadness.org 70
i 19648 Err codemadness.org 70
i 19649 http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/a49112761c919d42d405ec10252eb0553662c824 Err codemadness.org 70
i 19650 Err codemadness.org 70
i 19651 Err codemadness.org 70
i 19652 Err codemadness.org 70 i 19657Err codemadness.org 70 i 19659 Err codemadness.org 70 i 19660NetBSD audio – an application perspective ... or, "doing it natively, because we can"
Err codemadness.org 70 i 19658
audio options for NetBSD in pkgsrc
Err codemadness.org 70 i 19662 Err codemadness.org 70 i 19663Many many abstraction layers available:
Err codemadness.org 70 i 19668 Err codemadness.org 70 i 19669Advantages of using NetBSD audio directly
Err codemadness.org 70 i 19678 Err codemadness.org 70 i 19679[nia note: SDL2 seems very sensitive to the blk_ms sysctl being high or low, with other implementations there seems to be a less noticable difference. I don't know why.]
Err codemadness.org 70 i 19694Err codemadness.org 70 i 19700 Err codemadness.org 70 i 19701Two new FreeNAS Mini systems join the very popular FreeNAS Mini and Mini XL:
Err codemadness.org 70 i 19695 Err codemadness.org 70 i 19696FreeNAS Mini XL+: This powerful 10 Bay platform (8x 3.5” and 1x 2.5” hot-swap, 1x 2.5” internal) includes the latest, compact server technology and provides dual 10GbE ports, 8 CPU cores and 32 GB RAM for high performance workgroups. The Mini XL+ scales beyond 100TB and is ideal for very demanding applications, including hosting virtual machines and multimedia editing. Starting at $1499, the Mini XL+ configured with cache SSD and 80 TB capacity is $4299, and consumes about 100 Watts.
Err codemadness.org 70 i 19697 Err codemadness.org 70 i 19698FreeNAS Mini E: This cost-effective 4 Bay platform provides the resources required for SOHO use with quad GbE ports and 8 GB of RAM. The Mini E is ideal for file sharing, streaming and transcoding video at 1080p. Starting at $749, the Mini E configured with 8 TB capacity is $999, and consumes about 36 Watts.
Err codemadness.org 70 i 19699
Err codemadness.org 70 i 19813Err codemadness.org 70 i 19825 Err codemadness.org 70 i 19826For the last week I've been testing out a replacement for Monster, our 48-core opteron server. The project will be removing Monster from the colo in a week or two and replacing it with three machines which together will use half the power that Monster did alone.
Err codemadness.org 70 i 19814 Err codemadness.org 70 i 19815The goal is to clear out a little power budget in the colo and to really beef-up our package-building capabilities to reduce the turn-around time needed to test ports syncs and updates to the binary package system.
Err codemadness.org 70 i 19816 Err codemadness.org 70 i 19817Currently we use two blades to do most of the building, plus monster sometimes. The blades take almost a week (120 hours+) to do a full synth run and monster takes around 27.5 hours. But we need to do three bulk builds more or less at the same time... one for the release branch, one for the development branch, and one for staging updates. It just takes too long and its been gnawing at me for a little while.
Err codemadness.org 70 i 19818 Err codemadness.org 70 i 19819Well, Zen 2 to the rescue! These new CPUs can take ECC, there's actually an IPMI mobo available, and they are fast as hell and cheap for what we get.
Err codemadness.org 70 i 19820 Err codemadness.org 70 i 19821The new machines will be two 3900X based servers, plus a dual-xeon system that I already had at home. The 3900X's can each do a full synth run in 24.5 hours and the Xeon can do it in around 31 hours. Monster will be retired. And the crazy thing about this? Monster burns 1000W going full bore. Each of the 3900X servers burns 160W and the Xeon burns 200W. In otherwords, we are replacing 1000W with only 520W and getting roughly 6x the performance efficiency in the upgrade. This tell you just how much more power-efficient machines have become in the last 9 years or so. > This upgrade will allow us to do full builds for both release and dev in roughly one day instead of seven days, and do it without interfering with staging work that might be happening at the same time.
Err codemadness.org 70 i 19822 Err codemadness.org 70 i 19823Future trends - DragonFlyBSD has reached a bit of a cross-roads. With most of the SMP work now essentially complete across the entire system the main project focus is now on supplying reliable binary ports for release and developer branches, DRM (GPU) support and other UI elements to keep DragonFlyBSD relevant on workstations, and continuing Filesystem work on HAMMER2 to get multi-device and clustering going.
Err codemadness.org 70 i 19824
Err codemadness.org 70 i 19831Err codemadness.org 70 i 19837 Err codemadness.org 70 i 19838One of the amazing functionalities of ZFS is the possibility of sending a whole dataset from one place to another. This mechanism is amazing to create backups of your ZFS based machines. Although, there were some issues with this functionality for a long time when a user sent a big chunk of data. What if you would do that over the network and your connection has disappeared? What if your machine was rebooted as you are sending a snapshot?
Err codemadness.org 70 i 19832 Err codemadness.org 70 i 19833For a very long time, you didn't have any options - you had to send a snapshot from the beginning. Now, this limitation was already bad enough. However, another downside of this approach was that all the data which you already send was thrown away. Therefore, ZFS had to go over all this data and remove them from the dataset. Imagine the terabytes of data which you sent via the network was thrown away because as you were sending the last few bytes, the network went off.
Err codemadness.org 70 i 19834 Err codemadness.org 70 i 19835In this short post, I don't want to go over the whole ZFS snapshot infrastructure (if you think that such a post would be useful, please leave a comment). Now, to get back to the point, this infrastructure is used to clone the datasets. Some time ago a new feature called “Resuming ZFS send” was introduced. That means that if there was some problem with transmitting the dataset from one point to another you could resume it or throw them away. But the point is, that yes, you finally have a choice.
Err codemadness.org 70 i 19836
Err codemadness.org 70 i 19845Err codemadness.org 70 i 19849 Err codemadness.org 70 i 19850If for some reasons you want to visualize your bandwidth traffic on an interface (in or out) in a terminal with a nice graph, here is a small script to do so, involving ttyplot, a nice software making graphics in a terminal.
Err codemadness.org 70 i 19846 Err codemadness.org 70 i 19847The following will works on OpenBSD. You can install ttyplot by pkg_add ttyplot as root, ttyplot package appeared since OpenBSD 6.5.
Err codemadness.org 70 i 19848
Err codemadness.org 70 i 19855Err codemadness.org 70 i 19869 Err codemadness.org 70 i 19870There’s a FreeBSD commit to telnet. fix a couple of snprintf() buffer overflows. It’s received a bit of attention for various reasons, telnet in 2019?, etc. I thought I’d take a look. Here’s a few random observations.
Err codemadness.org 70 i 19856 Err codemadness.org 70 i 19857Err codemadness.org 70 i 19858
Err codemadness.org 70 i 19868- Err codemadness.org 70 i 19859
The first line is indented with spaces while the others use tabs.
- Err codemadness.org 70 i 19860
The correct type for string length is size_t not unsigned int.
- Err codemadness.org 70 i 19861
sizeof(char) is always one. There’s no need to multiply by it.
- Err codemadness.org 70 i 19862
If you do need to multiply by a size, this is an unsafe pattern. Use calloc or something similar. (OpenBSD provides reallocarray to avoid zeroing cost of calloc.)
- Err codemadness.org 70 i 19863
Return value of malloc doesn’t need to be cast. In fact, should not be, lest you disguise a warning.
- Err codemadness.org 70 i 19864
Return value of malloc is not checked for NULL.
- Err codemadness.org 70 i 19865
No reason to cast cp to char * when passing to snprintf. It already is that type. And if it weren’t, what are you doing?
- Err codemadness.org 70 i 19866
The whole operation could be simplified by using asprintf.
- Err codemadness.org 70 i 19867
Although unlikely (probably impossible here, but more generally), adding the two source lengths together can overflow, resulting in truncation with an unchecked snprintf call. asprintf avoids this failure case.
Err codemadness.org 70 i 19875Err codemadness.org 70 i 19877 Err codemadness.org 70 i 19878Earlier this year I FOIAed the FBI for details on allegations of backdoor installed in the IPSEC stack in 2010, originally discussed by OpenBSD devs (https://marc.info/?l=openbsd-tech&m=129236621626462 …) Today, I got an interesting but unexpected responsive record:
Err codemadness.org 70 i 19876
Err codemadness.org 70 i 19927Err codemadness.org 70 i 19939 Err codemadness.org 70 i 19940For the last week I've been testing out a replacement for Monster, our 48-core opteron server. The project will be removing Monster from the colo in a week or two and replacing it with three machines which together will use half the power that Monster did alone.
Err codemadness.org 70 i 19928 Err codemadness.org 70 i 19929The goal is to clear out a little power budget in the colo and to really beef-up our package-building capabilities to reduce the turn-around time needed to test ports syncs and updates to the binary package system.
Err codemadness.org 70 i 19930 Err codemadness.org 70 i 19931Currently we use two blades to do most of the building, plus monster sometimes. The blades take almost a week (120 hours+) to do a full synth run and monster takes around 27.5 hours. But we need to do three bulk builds more or less at the same time... one for the release branch, one for the development branch, and one for staging updates. It just takes too long and its been gnawing at me for a little while.
Err codemadness.org 70 i 19932 Err codemadness.org 70 i 19933Well, Zen 2 to the rescue! These new CPUs can take ECC, there's actually an IPMI mobo available, and they are fast as hell and cheap for what we get.
Err codemadness.org 70 i 19934 Err codemadness.org 70 i 19935The new machines will be two 3900X based servers, plus a dual-xeon system that I already had at home. The 3900X's can each do a full synth run in 24.5 hours and the Xeon can do it in around 31 hours. Monster will be retired. And the crazy thing about this? Monster burns 1000W going full bore. Each of the 3900X servers burns 160W and the Xeon burns 200W. In otherwords, we are replacing 1000W with only 520W and getting roughly 6x the performance efficiency in the upgrade. This tell you just how much more power-efficient machines have become in the last 9 years or so. > This upgrade will allow us to do full builds for both release and dev in roughly one day instead of seven days, and do it without interfering with staging work that might be happening at the same time.
Err codemadness.org 70 i 19936 Err codemadness.org 70 i 19937Future trends - DragonFlyBSD has reached a bit of a cross-roads. With most of the SMP work now essentially complete across the entire system the main project focus is now on supplying reliable binary ports for release and developer branches, DRM (GPU) support and other UI elements to keep DragonFlyBSD relevant on workstations, and continuing Filesystem work on HAMMER2 to get multi-device and clustering going.
Err codemadness.org 70 i 19938
Err codemadness.org 70 i 19945Err codemadness.org 70 i 19951 Err codemadness.org 70 i 19952One of the amazing functionalities of ZFS is the possibility of sending a whole dataset from one place to another. This mechanism is amazing to create backups of your ZFS based machines. Although, there were some issues with this functionality for a long time when a user sent a big chunk of data. What if you would do that over the network and your connection has disappeared? What if your machine was rebooted as you are sending a snapshot?
Err codemadness.org 70 i 19946 Err codemadness.org 70 i 19947For a very long time, you didn't have any options - you had to send a snapshot from the beginning. Now, this limitation was already bad enough. However, another downside of this approach was that all the data which you already send was thrown away. Therefore, ZFS had to go over all this data and remove them from the dataset. Imagine the terabytes of data which you sent via the network was thrown away because as you were sending the last few bytes, the network went off.
Err codemadness.org 70 i 19948 Err codemadness.org 70 i 19949In this short post, I don't want to go over the whole ZFS snapshot infrastructure (if you think that such a post would be useful, please leave a comment). Now, to get back to the point, this infrastructure is used to clone the datasets. Some time ago a new feature called “Resuming ZFS send” was introduced. That means that if there was some problem with transmitting the dataset from one point to another you could resume it or throw them away. But the point is, that yes, you finally have a choice.
Err codemadness.org 70 i 19950
Err codemadness.org 70 i 19959Err codemadness.org 70 i 19963 Err codemadness.org 70 i 19964If for some reasons you want to visualize your bandwidth traffic on an interface (in or out) in a terminal with a nice graph, here is a small script to do so, involving ttyplot, a nice software making graphics in a terminal.
Err codemadness.org 70 i 19960 Err codemadness.org 70 i 19961The following will works on OpenBSD. You can install ttyplot by pkg_add ttyplot as root, ttyplot package appeared since OpenBSD 6.5.
Err codemadness.org 70 i 19962
Err codemadness.org 70 i 19969Err codemadness.org 70 i 19983 Err codemadness.org 70 i 19984There’s a FreeBSD commit to telnet. fix a couple of snprintf() buffer overflows. It’s received a bit of attention for various reasons, telnet in 2019?, etc. I thought I’d take a look. Here’s a few random observations.
Err codemadness.org 70 i 19970 Err codemadness.org 70 i 19971Err codemadness.org 70 i 19972
Err codemadness.org 70 i 19982- Err codemadness.org 70 i 19973
The first line is indented with spaces while the others use tabs.
- Err codemadness.org 70 i 19974
The correct type for string length is size_t not unsigned int.
- Err codemadness.org 70 i 19975
sizeof(char) is always one. There’s no need to multiply by it.
- Err codemadness.org 70 i 19976
If you do need to multiply by a size, this is an unsafe pattern. Use calloc or something similar. (OpenBSD provides reallocarray to avoid zeroing cost of calloc.)
- Err codemadness.org 70 i 19977
Return value of malloc doesn’t need to be cast. In fact, should not be, lest you disguise a warning.
- Err codemadness.org 70 i 19978
Return value of malloc is not checked for NULL.
- Err codemadness.org 70 i 19979
No reason to cast cp to char * when passing to snprintf. It already is that type. And if it weren’t, what are you doing?
- Err codemadness.org 70 i 19980
The whole operation could be simplified by using asprintf.
- Err codemadness.org 70 i 19981
Although unlikely (probably impossible here, but more generally), adding the two source lengths together can overflow, resulting in truncation with an unchecked snprintf call. asprintf avoids this failure case.
Err codemadness.org 70 i 19989Err codemadness.org 70 i 19991 Err codemadness.org 70 i 19992Earlier this year I FOIAed the FBI for details on allegations of backdoor installed in the IPSEC stack in 2010, originally discussed by OpenBSD devs (https://marc.info/?l=openbsd-tech&m=129236621626462 …) Today, I got an interesting but unexpected responsive record:
Err codemadness.org 70 i 19990
Err codemadness.org 70 i 20112Err codemadness.org 70 i 20116 Err codemadness.org 70 i 20117Maybe I can’t read, but I have the feeling that official documentations explain every single corner case for a given tool, except the one you will actually need. My today’s struggle: replacing a disk within a FreeBSD ZFS pool.
Err codemadness.org 70 i 20115
Err codemadness.org 70 i 20113 What? there’s a shitton of docs on this topic! Are you stupid?
Err codemadness.org 70 i 20114 I don’t know, maybe. Yet none covered the process in a simple, straight and complete manner.
Err codemadness.org 70 i 20122Err codemadness.org 70 i 20127 Err codemadness.org 70 i 20128Hi there,
Err codemadness.org 70 i 20126
Err codemadness.org 70 i 20123 For four and a half years now, OPNsense is driving innovation through modularising and hardening the open source firewall, with simple and reliable firmware upgrades, multi-language support, HardenedBSD security, fast adoption of upstream software updates as well as clear and stable 2-Clause BSD licensing.
Err codemadness.org 70 i 20124 We thank all of you for helping test, shape and contribute to the project! We know it would not be the same without you.
Err codemadness.org 70 i 20125 Download links, an installation guide[1] and the checksums for the images can be found below as well.
Err codemadness.org 70 i 20139Err codemadness.org 70 i 20141 Err codemadness.org 70 i 20142Ioctls are input/output control system calls and DRM stands for direct rendering manager The DRM layer provides several services to graphics drivers, many of them driven by the application interfaces it provides through libdrm, the library that wraps most of the DRM ioctls. These include vblank event handling, memory management, output management, framebuffer management, command submission & fencing, suspend/resume support, and DMA services.
Err codemadness.org 70 i 20140
Err codemadness.org 70 i 20147Err codemadness.org 70 i 20149 Err codemadness.org 70 i 20150NetBSD was able to make native DRM ioctl calls with hardware rendering once xorg and proper mesa packages where installed. We used the glxinfo and glxgears applications to test this out.
Err codemadness.org 70 i 20148
Err codemadness.org 70 i 20155Err codemadness.org 70 i 20159 Err codemadness.org 70 i 20160Discord users keep telling about their so called discord server, which is not dedicated to them at all. And Discord has a very bad quality and a lot of voice distorsion.
Err codemadness.org 70 i 20158
Err codemadness.org 70 i 20156 Why not run your very own mumble server with high voice quality and low latency and privacy respect? This is very easy to setup on OpenBSD!
Err codemadness.org 70 i 20157 Mumble is an open source voip client, it has a client named Mumble (available on various operating system) and at least Android, the server part is murmur but there is a lightweight server named umurmur. People authentication is done through certificate generated locally and automatically accepted on a server, and the certificate get associated with a nickname. Nobody can pick the same nickname as another person if it’s not the same certificate.
Err codemadness.org 70 i 20169Err codemadness.org 70 i 20175 Err codemadness.org 70 i 20176From time to time, I like to review my knowledge in a certain area, even when I feel like I know a lot about it already. I go back to the basics and read tutorials, manuals, books or watch interesting videos.
Err codemadness.org 70 i 20174
Err codemadness.org 70 i 20170 I’ve been using macOS for a couple of years now, previously being a linux user for some (relatively short) time. Both these operating systems have a common ancestor — Unix. While I’m definitely not an expert, I feel quite comfortable using linux & macOS — I understand the concepts behind the system architecture, know a lot of command line tools & navigate through the shell without a hassle. So-called unix philosophy is also close to my heart. I always feel like there’s more I could squeeze out of it.
Err codemadness.org 70 i 20171 Recently, I found that book titled “Unix for dummies, 5th edition” which was published back in… 2004. Feels literally like AGES in the computer-related world. However, it was a great shot — the book starts with the basics, providing some brief history of Unix and how it came to life. It talks a lot about the structure of the system and where certain pieces fit (eg. “standard” set of tools), and how to understand permissions and work with files & directories. There’s even a whole chapter about shell-based text editors like Vi and Emacs! Despite the fact that I am familiar with most of these, I could still find some interesting pieces & tools that I either knew existed (but never had a chance to use), or even haven’t ever heard of. And almost all of these are still valid in the modern “incarnations” of Unix’s descendants: Linux and macOS.
Err codemadness.org 70 i 20172 The book also talks about networking, surfing the web & working with email. It’s cute to see pictures of those old browsers rendering “ancient” Internet websites, but hey — this is how it looked like no more than fifteen years ago!
Err codemadness.org 70 i 20173 I can really recommend this book to anyone working on modern macOS or Linux — you will certainly find some interesting pieces. Especially if you like to go back to the roots from time to time as I do!
Err codemadness.org 70 i 20181Err codemadness.org 70 i 20184 Err codemadness.org 70 i 20185In preparation for a talk on Seventh Edition Unix this fall, I stumbled upon a service list from DEC for all known PDP-7 machines. From that list, and other sources, I believe that PDP-7 serial number 34 was the original Unix machine.
Err codemadness.org 70 i 20183
Err codemadness.org 70 i 20182 V0 Unix could run on only one of the PDP-7s. Of the 99 PDP-7s produced, only two had disks. Serial number 14 had an RA01 listed, presumably a disk, though of a different type. In addition to the PDP-7 being obsolete in 1970, no other PDP-7 could run Unix, limiting its appeal outside of Bell Labs. By porting Unix to the PDP-11 in 1970, the group ensured Unix would live on into the future. The PDP-9 and PDP-15 were both upgrades of the PDP-7, so to be fair, PDP-7 Unix did have a natural upgrade path (the PDP-11 out sold the 18 bit systems though ~600,000 to ~1000). Ken Thompson reports in a private email that there were 2 PDP-9s and 1 PDP-15 at Bell Labs that could run a version of the PDP-7 Unix, though those machines were viewed as born obsolete.
Err codemadness.org 70 i 20190Err codemadness.org 70 i 20194 Err codemadness.org 70 i 20195Upstream describes LLDB as a next generation, high-performance debugger. It is built on top of LLVM/Clang toolchain, and features great integration with it. At the moment, it primarily supports debugging C, C++ and ObjC code, and there is interest in extending it to more languages.
Err codemadness.org 70 i 20193
Err codemadness.org 70 i 20191 In February, I have started working on LLDB, as contracted by the NetBSD Foundation. So far I've been working on reenabling continuous integration, squashing bugs, improving NetBSD core file support and lately extending NetBSD's ptrace interface to cover more register types and fix compat32 issues. You can read more about that in my May 2019 report.
Err codemadness.org 70 i 20192 In June, I have finally finished the remaining ptrace() work for xstate and got it merged both on NetBSD and LLDB end (meaning it's going to make it into NetBSD 9). I have also worked on debug register support in LLDB, effectively fixing watchpoint support. Once again I had to fight some upstream regressions.
Err codemadness.org 70 i 20236Err codemadness.org 70 i 20240 Err codemadness.org 70 i 20241Maybe I can’t read, but I have the feeling that official documentations explain every single corner case for a given tool, except the one you will actually need. My today’s struggle: replacing a disk within a FreeBSD ZFS pool.
Err codemadness.org 70 i 20239
Err codemadness.org 70 i 20237 What? there’s a shitton of docs on this topic! Are you stupid?
Err codemadness.org 70 i 20238 I don’t know, maybe. Yet none covered the process in a simple, straight and complete manner.
Err codemadness.org 70 i 20246Err codemadness.org 70 i 20251 Err codemadness.org 70 i 20252Hi there,
Err codemadness.org 70 i 20250
Err codemadness.org 70 i 20247 For four and a half years now, OPNsense is driving innovation through modularising and hardening the open source firewall, with simple and reliable firmware upgrades, multi-language support, HardenedBSD security, fast adoption of upstream software updates as well as clear and stable 2-Clause BSD licensing.
Err codemadness.org 70 i 20248 We thank all of you for helping test, shape and contribute to the project! We know it would not be the same without you.
Err codemadness.org 70 i 20249 Download links, an installation guide[1] and the checksums for the images can be found below as well.
Err codemadness.org 70 i 20263Err codemadness.org 70 i 20265 Err codemadness.org 70 i 20266Ioctls are input/output control system calls and DRM stands for direct rendering manager The DRM layer provides several services to graphics drivers, many of them driven by the application interfaces it provides through libdrm, the library that wraps most of the DRM ioctls. These include vblank event handling, memory management, output management, framebuffer management, command submission & fencing, suspend/resume support, and DMA services.
Err codemadness.org 70 i 20264
Err codemadness.org 70 i 20271Err codemadness.org 70 i 20273 Err codemadness.org 70 i 20274NetBSD was able to make native DRM ioctl calls with hardware rendering once xorg and proper mesa packages where installed. We used the glxinfo and glxgears applications to test this out.
Err codemadness.org 70 i 20272
Err codemadness.org 70 i 20279Err codemadness.org 70 i 20283 Err codemadness.org 70 i 20284Discord users keep telling about their so called discord server, which is not dedicated to them at all. And Discord has a very bad quality and a lot of voice distorsion.
Err codemadness.org 70 i 20282
Err codemadness.org 70 i 20280 Why not run your very own mumble server with high voice quality and low latency and privacy respect? This is very easy to setup on OpenBSD!
Err codemadness.org 70 i 20281 Mumble is an open source voip client, it has a client named Mumble (available on various operating system) and at least Android, the server part is murmur but there is a lightweight server named umurmur. People authentication is done through certificate generated locally and automatically accepted on a server, and the certificate get associated with a nickname. Nobody can pick the same nickname as another person if it’s not the same certificate.
Err codemadness.org 70 i 20293Err codemadness.org 70 i 20299 Err codemadness.org 70 i 20300From time to time, I like to review my knowledge in a certain area, even when I feel like I know a lot about it already. I go back to the basics and read tutorials, manuals, books or watch interesting videos.
Err codemadness.org 70 i 20298
Err codemadness.org 70 i 20294 I’ve been using macOS for a couple of years now, previously being a linux user for some (relatively short) time. Both these operating systems have a common ancestor — Unix. While I’m definitely not an expert, I feel quite comfortable using linux & macOS — I understand the concepts behind the system architecture, know a lot of command line tools & navigate through the shell without a hassle. So-called unix philosophy is also close to my heart. I always feel like there’s more I could squeeze out of it.
Err codemadness.org 70 i 20295 Recently, I found that book titled “Unix for dummies, 5th edition” which was published back in… 2004. Feels literally like AGES in the computer-related world. However, it was a great shot — the book starts with the basics, providing some brief history of Unix and how it came to life. It talks a lot about the structure of the system and where certain pieces fit (eg. “standard” set of tools), and how to understand permissions and work with files & directories. There’s even a whole chapter about shell-based text editors like Vi and Emacs! Despite the fact that I am familiar with most of these, I could still find some interesting pieces & tools that I either knew existed (but never had a chance to use), or even haven’t ever heard of. And almost all of these are still valid in the modern “incarnations” of Unix’s descendants: Linux and macOS.
Err codemadness.org 70 i 20296 The book also talks about networking, surfing the web & working with email. It’s cute to see pictures of those old browsers rendering “ancient” Internet websites, but hey — this is how it looked like no more than fifteen years ago!
Err codemadness.org 70 i 20297 I can really recommend this book to anyone working on modern macOS or Linux — you will certainly find some interesting pieces. Especially if you like to go back to the roots from time to time as I do!
Err codemadness.org 70 i 20305Err codemadness.org 70 i 20308 Err codemadness.org 70 i 20309In preparation for a talk on Seventh Edition Unix this fall, I stumbled upon a service list from DEC for all known PDP-7 machines. From that list, and other sources, I believe that PDP-7 serial number 34 was the original Unix machine.
Err codemadness.org 70 i 20307
Err codemadness.org 70 i 20306 V0 Unix could run on only one of the PDP-7s. Of the 99 PDP-7s produced, only two had disks. Serial number 14 had an RA01 listed, presumably a disk, though of a different type. In addition to the PDP-7 being obsolete in 1970, no other PDP-7 could run Unix, limiting its appeal outside of Bell Labs. By porting Unix to the PDP-11 in 1970, the group ensured Unix would live on into the future. The PDP-9 and PDP-15 were both upgrades of the PDP-7, so to be fair, PDP-7 Unix did have a natural upgrade path (the PDP-11 out sold the 18 bit systems though ~600,000 to ~1000). Ken Thompson reports in a private email that there were 2 PDP-9s and 1 PDP-15 at Bell Labs that could run a version of the PDP-7 Unix, though those machines were viewed as born obsolete.
Err codemadness.org 70 i 20314Err codemadness.org 70 i 20318 Err codemadness.org 70 i 20319Upstream describes LLDB as a next generation, high-performance debugger. It is built on top of LLVM/Clang toolchain, and features great integration with it. At the moment, it primarily supports debugging C, C++ and ObjC code, and there is interest in extending it to more languages.
Err codemadness.org 70 i 20317
Err codemadness.org 70 i 20315 In February, I have started working on LLDB, as contracted by the NetBSD Foundation. So far I've been working on reenabling continuous integration, squashing bugs, improving NetBSD core file support and lately extending NetBSD's ptrace interface to cover more register types and fix compat32 issues. You can read more about that in my May 2019 report.
Err codemadness.org 70 i 20316 In June, I have finally finished the remaining ptrace() work for xstate and got it merged both on NetBSD and LLDB end (meaning it's going to make it into NetBSD 9). I have also worked on debug register support in LLDB, effectively fixing watchpoint support. Once again I had to fight some upstream regressions.
Err codemadness.org 70 i 20457Err codemadness.org 70 i 20459 Err codemadness.org 70 i 20460The FreeBSD Release Engineering Team is pleased to announce the availability of FreeBSD 11.3-RELEASE. This is the fourth release of the stable/11 branch.
Err codemadness.org 70 i 20458
Err codemadness.org 70 i 20487Err codemadness.org 70 i 20493 Err codemadness.org 70 i 20494Why OpenBSD? Simply because it is the best tool for the job for me for my new-to-me Lenovo Thinkpad T420. Additionally, I do care about security and non-bloat in my personal operating systems (business needs can have different priorities, to be clear).
Err codemadness.org 70 i 20488 Err codemadness.org 70 i 20489I will try to detail what my reasons are for going with OpenBSD (instead of GNU/Linux, NetBSD, or FreeBSD of which I’m comfortable using without issue), challenges and frustrations I’ve encountered, and what my opinions are along the way.
Err codemadness.org 70 i 20490 Err codemadness.org 70 i 20491Disclaimer: in this post, I’m speaking about what is my opinion, and I’m not trying to convince you to use OpenBSD or anything else. I don’t truly care, but wanted to share in case it could be useful to you. I do hope you give OpenBSD a shot as your workstation, especially if it has been a while.
Err codemadness.org 70 i 20492
Err codemadness.org 70 i 20499Err codemadness.org 70 i 20503 Err codemadness.org 70 i 20504I’m not new to OpenBSD, to be clear. I’ve been using it off and on for over 20 years. The biggest time in my life was the early 2000s (I was even the Python port maintainer for a bit), where I not only used it for my workstation, but also for production servers and network devices.
Err codemadness.org 70 i 20500 Err codemadness.org 70 i 20501I just haven’t used it as a workstation (outside of a virtual machine) in over 10 years, but have used it for servers. Workstation needs, especially for a primary workstation, are greatly different and the small things end up mattering most.
Err codemadness.org 70 i 20502
Err codemadness.org 70 i 20515Err codemadness.org 70 i 20519 Err codemadness.org 70 i 20520The easy way to describe fuzzing is to compare it to the process of unit testing a program, but with different input. This input can be random, or it can be generated in some way that makes it unexpected form standard execution perspective.
Err codemadness.org 70 i 20516 Err codemadness.org 70 i 20517The simplest 'fuzzer' can be written in few lines of bash, by getting N bytes from /dev/rand, and putting them to the program as a parameter.
Err codemadness.org 70 i 20518
Err codemadness.org 70 i 20525Err codemadness.org 70 i 20533 Err codemadness.org 70 i 20534What can be done to make fuzzing more effective? If we think about fuzzing as a process, where we place data into the input of the program (which is a black box), and we can only interact via input, not much more can be done.
Err codemadness.org 70 i 20526 Err codemadness.org 70 i 20527However, programs usually process different inputs at different speeds, which can give us some insight into the program's behavior. During fuzzing, we are trying to crash the program, thus we need additional probes to observe the program's behaviour.
Err codemadness.org 70 i 20528 Err codemadness.org 70 i 20529Additional knowledge about program state can be exploited as a feedback loop for generating new input vectors. Knowledge about the program itself and the structure of input data can also be considered. As an example, if the input data is in the form of HTML, changing characters inside the body will probably cause less problems for the parser than experimenting with headers and HTML tags.
Err codemadness.org 70 i 20530 Err codemadness.org 70 i 20531For open source programs, we can read the source code to know what input takes which execution path. Nonetheless, this might be very time consuming, and it would be much more helpful if this can be automated. As it turns out, this process can be improved by tracing coverage of the execution
Err codemadness.org 70 i 20532
Err codemadness.org 70 i 20539Err codemadness.org 70 i 20549 Err codemadness.org 70 i 20550You can submit your proposal at https://easychair.org/conferences/?conf=vbsdcon2019
Err codemadness.org 70 i 20540 Err codemadness.org 70 i 20541The talks will have a very strong technical content bias. Proposals of a business development or marketing nature are not appropriate for this venue.
Err codemadness.org 70 i 20542 Err codemadness.org 70 i 20543If you are doing something interesting with a BSD operating system, please submit a proposal. Whether you are developing a very complex system using BSD as the foundation, or helping others and have a story to tell about how BSD played a role, we want to hear about your experience. People using BSD as a platform for research are also encouraged to submit a proposal.
Err codemadness.org 70 i 20544 Err codemadness.org 70 i 20545Possible topics include: How we manage a giant installation with respect to handling spam, snd/or sysadmin, and/or networking, Cool new stuff in BSD, Tell us about your project which runs on BSD.
Err codemadness.org 70 i 20546 Err codemadness.org 70 i 20547Both users and developers are encouraged to share their experiences.
Err codemadness.org 70 i 20548
Err codemadness.org 70 i 20555Err codemadness.org 70 i 20565 Err codemadness.org 70 i 20566In February 2019 the FreeBSD project issued an advisory about a possible vulnerability in the handling of file descriptors. UNIX-like systems such as FreeBSD allow to send file descriptors to other processes via UNIX-domain sockets. This can for example be used to pass file access privileges to the receiving process.
Err codemadness.org 70 i 20556 Err codemadness.org 70 i 20557Inside the kernel, file descriptors are used to indirectly reference a C struct which stores the relevant information about the file object. This could for instance include a reference to a vnode which describes the file for the file system, the file type, or the access privileges.
Err codemadness.org 70 i 20558 Err codemadness.org 70 i 20559What really happens if a UNIX-domain socket is used to send a file descriptor to another process is that for the receiving process, inside the kernel a reference to this struct is created. As the new file descriptor is a reference to the same file object, all information is inherited. For instance, this can allow to give another process write access to a file on the drive even if the process owner is normally not able to open the file writable.
Err codemadness.org 70 i 20560 Err codemadness.org 70 i 20561The advisory describes that FreeBSD 12.0 introduced a bug in this mechanism. As the file descriptor information is sent via a socket, the sender and the receiver have to allocate buffers for the procedure. If the receiving buffer is not large enough, the FreeBSD kernel attempts to close the received file descriptors to prevent a leak of these to the sender. However, while the responsible function closes the file descriptor, it fails to release the reference from the file descriptor to the file object. This could cause the reference counter to wrap.
Err codemadness.org 70 i 20562 Err codemadness.org 70 i 20563The advisory further states that the impact of this bug is possibly a local privilege escalation to gain root privileges or a jail escape. However, no proof-of-concept was provided by the advisory authors.
Err codemadness.org 70 i 20564
Err codemadness.org 70 i 20575Err codemadness.org 70 i 20577 Err codemadness.org 70 i 20578The privilege escalation is now a piece of cake thanks to a technique used by kingcope, who published a FreeBSD root exploit in 2005, which writes to the file /etc/libmap.conf. This configuration file can be used to hook the loading of dynamic libraries if a program is started. The exploit therefore creates a dynamic library, which copies /bin/sh to another file and sets the suid-bit for the copy. The hooked library is libutil, which is for instance called by su. Therefore, a call to su by the user will afterwards result in a suid copy of /bin/sh.
Err codemadness.org 70 i 20576
Err codemadness.org 70 i 20587Err codemadness.org 70 i 20593 Err codemadness.org 70 i 20594If you ever wanted to make a twitch stream from your OpenBSD system, this is now possible, thanks to OpenBSD developer thfr@ who made a wrapper named fauxstream using ffmpeg with relevant parameters.
Err codemadness.org 70 i 20588 Err codemadness.org 70 i 20589The setup is quite easy, it only requires a few steps and searching on Twitch website two informations, hopefully, to ease the process, I found the links for you.
Err codemadness.org 70 i 20590 Err codemadness.org 70 i 20591You will need to make an account on twitch, get your api key (a long string of characters) which should stay secret because it allow anyone having it to stream on your account.
Err codemadness.org 70 i 20592
Err codemadness.org 70 i 20642Err codemadness.org 70 i 20644 Err codemadness.org 70 i 20645The FreeBSD Release Engineering Team is pleased to announce the availability of FreeBSD 11.3-RELEASE. This is the fourth release of the stable/11 branch.
Err codemadness.org 70 i 20643
Err codemadness.org 70 i 20672Err codemadness.org 70 i 20678 Err codemadness.org 70 i 20679Why OpenBSD? Simply because it is the best tool for the job for me for my new-to-me Lenovo Thinkpad T420. Additionally, I do care about security and non-bloat in my personal operating systems (business needs can have different priorities, to be clear).
Err codemadness.org 70 i 20673 Err codemadness.org 70 i 20674I will try to detail what my reasons are for going with OpenBSD (instead of GNU/Linux, NetBSD, or FreeBSD of which I’m comfortable using without issue), challenges and frustrations I’ve encountered, and what my opinions are along the way.
Err codemadness.org 70 i 20675 Err codemadness.org 70 i 20676Disclaimer: in this post, I’m speaking about what is my opinion, and I’m not trying to convince you to use OpenBSD or anything else. I don’t truly care, but wanted to share in case it could be useful to you. I do hope you give OpenBSD a shot as your workstation, especially if it has been a while.
Err codemadness.org 70 i 20677
Err codemadness.org 70 i 20684Err codemadness.org 70 i 20688 Err codemadness.org 70 i 20689I’m not new to OpenBSD, to be clear. I’ve been using it off and on for over 20 years. The biggest time in my life was the early 2000s (I was even the Python port maintainer for a bit), where I not only used it for my workstation, but also for production servers and network devices.
Err codemadness.org 70 i 20685 Err codemadness.org 70 i 20686I just haven’t used it as a workstation (outside of a virtual machine) in over 10 years, but have used it for servers. Workstation needs, especially for a primary workstation, are greatly different and the small things end up mattering most.
Err codemadness.org 70 i 20687
Err codemadness.org 70 i 20700Err codemadness.org 70 i 20704 Err codemadness.org 70 i 20705The easy way to describe fuzzing is to compare it to the process of unit testing a program, but with different input. This input can be random, or it can be generated in some way that makes it unexpected form standard execution perspective.
Err codemadness.org 70 i 20701 Err codemadness.org 70 i 20702The simplest 'fuzzer' can be written in few lines of bash, by getting N bytes from /dev/rand, and putting them to the program as a parameter.
Err codemadness.org 70 i 20703
Err codemadness.org 70 i 20710Err codemadness.org 70 i 20718 Err codemadness.org 70 i 20719What can be done to make fuzzing more effective? If we think about fuzzing as a process, where we place data into the input of the program (which is a black box), and we can only interact via input, not much more can be done.
Err codemadness.org 70 i 20711 Err codemadness.org 70 i 20712However, programs usually process different inputs at different speeds, which can give us some insight into the program's behavior. During fuzzing, we are trying to crash the program, thus we need additional probes to observe the program's behaviour.
Err codemadness.org 70 i 20713 Err codemadness.org 70 i 20714Additional knowledge about program state can be exploited as a feedback loop for generating new input vectors. Knowledge about the program itself and the structure of input data can also be considered. As an example, if the input data is in the form of HTML, changing characters inside the body will probably cause less problems for the parser than experimenting with headers and HTML tags.
Err codemadness.org 70 i 20715 Err codemadness.org 70 i 20716For open source programs, we can read the source code to know what input takes which execution path. Nonetheless, this might be very time consuming, and it would be much more helpful if this can be automated. As it turns out, this process can be improved by tracing coverage of the execution
Err codemadness.org 70 i 20717
Err codemadness.org 70 i 20724Err codemadness.org 70 i 20734 Err codemadness.org 70 i 20735You can submit your proposal at https://easychair.org/conferences/?conf=vbsdcon2019
Err codemadness.org 70 i 20725 Err codemadness.org 70 i 20726The talks will have a very strong technical content bias. Proposals of a business development or marketing nature are not appropriate for this venue.
Err codemadness.org 70 i 20727 Err codemadness.org 70 i 20728If you are doing something interesting with a BSD operating system, please submit a proposal. Whether you are developing a very complex system using BSD as the foundation, or helping others and have a story to tell about how BSD played a role, we want to hear about your experience. People using BSD as a platform for research are also encouraged to submit a proposal.
Err codemadness.org 70 i 20729 Err codemadness.org 70 i 20730Possible topics include: How we manage a giant installation with respect to handling spam, snd/or sysadmin, and/or networking, Cool new stuff in BSD, Tell us about your project which runs on BSD.
Err codemadness.org 70 i 20731 Err codemadness.org 70 i 20732Both users and developers are encouraged to share their experiences.
Err codemadness.org 70 i 20733
Err codemadness.org 70 i 20740Err codemadness.org 70 i 20750 Err codemadness.org 70 i 20751In February 2019 the FreeBSD project issued an advisory about a possible vulnerability in the handling of file descriptors. UNIX-like systems such as FreeBSD allow to send file descriptors to other processes via UNIX-domain sockets. This can for example be used to pass file access privileges to the receiving process.
Err codemadness.org 70 i 20741 Err codemadness.org 70 i 20742Inside the kernel, file descriptors are used to indirectly reference a C struct which stores the relevant information about the file object. This could for instance include a reference to a vnode which describes the file for the file system, the file type, or the access privileges.
Err codemadness.org 70 i 20743 Err codemadness.org 70 i 20744What really happens if a UNIX-domain socket is used to send a file descriptor to another process is that for the receiving process, inside the kernel a reference to this struct is created. As the new file descriptor is a reference to the same file object, all information is inherited. For instance, this can allow to give another process write access to a file on the drive even if the process owner is normally not able to open the file writable.
Err codemadness.org 70 i 20745 Err codemadness.org 70 i 20746The advisory describes that FreeBSD 12.0 introduced a bug in this mechanism. As the file descriptor information is sent via a socket, the sender and the receiver have to allocate buffers for the procedure. If the receiving buffer is not large enough, the FreeBSD kernel attempts to close the received file descriptors to prevent a leak of these to the sender. However, while the responsible function closes the file descriptor, it fails to release the reference from the file descriptor to the file object. This could cause the reference counter to wrap.
Err codemadness.org 70 i 20747 Err codemadness.org 70 i 20748The advisory further states that the impact of this bug is possibly a local privilege escalation to gain root privileges or a jail escape. However, no proof-of-concept was provided by the advisory authors.
Err codemadness.org 70 i 20749
Err codemadness.org 70 i 20760Err codemadness.org 70 i 20762 Err codemadness.org 70 i 20763The privilege escalation is now a piece of cake thanks to a technique used by kingcope, who published a FreeBSD root exploit in 2005, which writes to the file /etc/libmap.conf. This configuration file can be used to hook the loading of dynamic libraries if a program is started. The exploit therefore creates a dynamic library, which copies /bin/sh to another file and sets the suid-bit for the copy. The hooked library is libutil, which is for instance called by su. Therefore, a call to su by the user will afterwards result in a suid copy of /bin/sh.
Err codemadness.org 70 i 20761
Err codemadness.org 70 i 20772Err codemadness.org 70 i 20778 Err codemadness.org 70 i 20779If you ever wanted to make a twitch stream from your OpenBSD system, this is now possible, thanks to OpenBSD developer thfr@ who made a wrapper named fauxstream using ffmpeg with relevant parameters.
Err codemadness.org 70 i 20773 Err codemadness.org 70 i 20774The setup is quite easy, it only requires a few steps and searching on Twitch website two informations, hopefully, to ease the process, I found the links for you.
Err codemadness.org 70 i 20775 Err codemadness.org 70 i 20776You will need to make an account on twitch, get your api key (a long string of characters) which should stay secret because it allow anyone having it to stream on your account.
Err codemadness.org 70 i 20777
Err codemadness.org 70 i 20897Err codemadness.org 70 i 20909 Err codemadness.org 70 i 20910I have recently acquired an Am5x86 computer, in a surprisingly good condition. This is an ongoing project, check this page often for updates!
Err codemadness.org 70 i 20898 Err codemadness.org 70 i 20899I began by connecting a front panel. The panel came from a different chassis and is slightly too wide, so I had to attach it with a couple of zip-ties. However, that makes it stick out from the PC front at an angle, allowing easy access when the computer sits at the floor - and thats where it is most of the time. It's not that bad, to be honest, and its way easier to access than it would be, if mounted vertically
Err codemadness.org 70 i 20900 Err codemadness.org 70 i 20901There is a mains switch on the front panel because the computer uses an older style power supply. Those power supplies instead of relying on a PSON signal, like modern ATX supplies, run a 4 wire cable to a mains switch. The cable carries live and neutral both ways, and the switch keys in or out the power. The system powers on as soon as the switch is enabled.
Err codemadness.org 70 i 20902 Err codemadness.org 70 i 20903Originally there was no graphics card in it. Since a PC will not boot with out a GPU, I had to find one. The mainboard only has PCI and ISA slots, and all the GPUs I had were AGP. Fortunately, I bought a PCI GPU hoping it would solve my issue...
Err codemadness.org 70 i 20904 Err codemadness.org 70 i 20905However the GPU turned out to be faulty. It took me some time to repair it. I had to repair a broken trace leading to one of the EEPROM pins, and replace a contact in the EEPROM's socket. Then I replaced all the electrolytic capacitors on it, and that fixed it for good.
Err codemadness.org 70 i 20906 Err codemadness.org 70 i 20907Having used up only one of the three PCI slots, I populated the remaining pair with two ethernet cards. I still have a bunch of ISA slots available, but I have nothing to install there. Yet.
Err codemadness.org 70 i 20908
Err codemadness.org 70 i 20919Err codemadness.org 70 i 20925 Err codemadness.org 70 i 20926This piece demonstrates the setup of a server service in a FreeNAS jail and how to share files with a jail using Apache 2.4 as an example. Jails are powerful, self-contained FreeBSD environments with separate network settings, package management, and access to thousands of FreeBSD application packages. Popular packages such as Apache, NGINX, LigHTTPD, MySQL, and PHP can be found and installed with the pkg search and pkg install commands.
Err codemadness.org 70 i 20920 Err codemadness.org 70 i 20921This example shows creating a jail, installing an Apache web server, and setting up a simple web page.
Err codemadness.org 70 i 20922 Err codemadness.org 70 i 20923NOTE: Do not directly attach FreeNAS to an external network (WAN). Use port forwarding, proper firewalls and DDoS protections when using FreeNAS for external web sites. This example demonstrates expanding the functionality of FreeNAS in an isolated LAN environment.
Err codemadness.org 70 i 20924
Err codemadness.org 70 i 20933Err codemadness.org 70 i 20939 Err codemadness.org 70 i 20940Last week, I needed to pick a BSD Operating System which supports NUMA to do some testing, so I decided to give Dragonfly BSD a shot. Dragonfly BSDonly can run on X86_64 architecture, which reminds me of Arch Linux, and after some tweaking, I feel Dragonfly BSD may be a “developer-friendly” Operating System, at least for me.
Err codemadness.org 70 i 20934 Err codemadness.org 70 i 20935I mainly use Dragonfly BSD as a server, so I don’t care whether GUI is fancy or not. But I have high requirements of developer tools, i.e., compiler and debugger. The default compiler of Dragonfly BSD is gcc 8.3, and I can also install clang 8.0.0 from package. This means I can test state-of-the-art features of compilers, and it is really important for me. gdb‘s version is 7.6.1, a little lag behind, but still OK.
Err codemadness.org 70 i 20936 Err codemadness.org 70 i 20937Furthermore, the upgradation of Dragonfly BSD is pretty simple and straightforward. I followed document to upgrade my Operating System to 5.6.0 this morning, just copied and pasted, no single error, booted successfully.
Err codemadness.org 70 i 20938
Err codemadness.org 70 i 20945Err codemadness.org 70 i 20949 Err codemadness.org 70 i 20950Here's a step-by-step guide that allows streaming Netflix media on NetBSD using a intel-haxm accelerated QEMU vm.
Err codemadness.org 70 i 20946 Err codemadness.org 70 i 20947Heads-up! Sound doesn't work, but everything else is fine. Please read the rest of this thread for a solution to this!!
Err codemadness.org 70 i 20948
Err codemadness.org 70 i 20955Err codemadness.org 70 i 20959 Err codemadness.org 70 i 20960I’m about halfway through the new edition of Sudo Mastery. Assuming nothing terrible happens, should have a complete first draft in four to six weeks. Enough stuff has changed in sudo that I need to carefully double-check every single feature. (I’m also horrified by the painfully obsolete versions of sudo shipped in the latest versions of CentOS and Debian, but people running those operating systems are already accustomed to their creaky obsolescence.)
Err codemadness.org 70 i 20956 Err codemadness.org 70 i 20957But the reason for this blog post? I have Eddie Sharam’s glorious cover art. My Patronizers saw it last month, so now the rest of you get a turn.
Err codemadness.org 70 i 20958
Err codemadness.org 70 i 20965Err codemadness.org 70 i 20969 Err codemadness.org 70 i 20970I'm a big fan of NetBSD. I've run it since 2000 on a Mac IIci (of course it's still running it) and I ran it for several years on a Power Mac 7300 with a G3 card which was the second incarnation of the Floodgap gopher server. Today I also still run it on a MIPS-based Cobalt RaQ 2 and an HP Jornada 690. I think NetBSD is a better match for smaller or underpowered systems than current-day Linux, and is fairly easy to harden and keep secure even though none of these systems are exposed to the outside world.
Err codemadness.org 70 i 20966 Err codemadness.org 70 i 20967Recently I had a need to set up a bridge system that would be fast enough to connect two networks and I happened to have two of the "secret" last-of-the-line 1.5GHz G4 Mac minis sitting on the shelf doing nothing. Yes, they're probably outclassed by later Raspberry Pi models, but I don't have to buy anything and I like putting old hardware to good use.
Err codemadness.org 70 i 20968
Err codemadness.org 70 i 20975Err codemadness.org 70 i 20981 Err codemadness.org 70 i 20982With the newly released DragonFlyBSD 5.6 there are improvements to its original HAMMER2 file-system to the extent that it's now selected by its installer as the default file-system choice for new installations. Curious how the performance now compares between HAMMER and HAMMER2, here are some initial benchmarks on an NVMe solid-state drive using DragonFlyBSD 5.6.0.
Err codemadness.org 70 i 20976 Err codemadness.org 70 i 20977With a 120GB Toshiba NVMe SSD on an Intel Core i7 8700K system, I ran some benchmarks of DragonFlyBSD 5.6.0 freshly installed with HAMMER2 and then again when returning to the original HAMMER file-system that remains available via its installer. No other changes were made to the setup during testing.
Err codemadness.org 70 i 20978 Err codemadness.org 70 i 20979And then for the more synthetic workloads it was just a mix. But overall HAMMER2 was performing well during the initial testing and great to see it continuing to offer noticeable leads in real-world workloads compared to the aging HAMMER file-system. HAMMER2 also offers better clustering, online deduplication, snapshots, compression, encryption, and many other modern file-system features.
Err codemadness.org 70 i 20980
Err codemadness.org 70 i 21028Err codemadness.org 70 i 21040 Err codemadness.org 70 i 21041I have recently acquired an Am5x86 computer, in a surprisingly good condition. This is an ongoing project, check this page often for updates!
Err codemadness.org 70 i 21029 Err codemadness.org 70 i 21030I began by connecting a front panel. The panel came from a different chassis and is slightly too wide, so I had to attach it with a couple of zip-ties. However, that makes it stick out from the PC front at an angle, allowing easy access when the computer sits at the floor - and thats where it is most of the time. It's not that bad, to be honest, and its way easier to access than it would be, if mounted vertically
Err codemadness.org 70 i 21031 Err codemadness.org 70 i 21032There is a mains switch on the front panel because the computer uses an older style power supply. Those power supplies instead of relying on a PSON signal, like modern ATX supplies, run a 4 wire cable to a mains switch. The cable carries live and neutral both ways, and the switch keys in or out the power. The system powers on as soon as the switch is enabled.
Err codemadness.org 70 i 21033 Err codemadness.org 70 i 21034Originally there was no graphics card in it. Since a PC will not boot with out a GPU, I had to find one. The mainboard only has PCI and ISA slots, and all the GPUs I had were AGP. Fortunately, I bought a PCI GPU hoping it would solve my issue...
Err codemadness.org 70 i 21035 Err codemadness.org 70 i 21036However the GPU turned out to be faulty. It took me some time to repair it. I had to repair a broken trace leading to one of the EEPROM pins, and replace a contact in the EEPROM's socket. Then I replaced all the electrolytic capacitors on it, and that fixed it for good.
Err codemadness.org 70 i 21037 Err codemadness.org 70 i 21038Having used up only one of the three PCI slots, I populated the remaining pair with two ethernet cards. I still have a bunch of ISA slots available, but I have nothing to install there. Yet.
Err codemadness.org 70 i 21039
Err codemadness.org 70 i 21050Err codemadness.org 70 i 21056 Err codemadness.org 70 i 21057This piece demonstrates the setup of a server service in a FreeNAS jail and how to share files with a jail using Apache 2.4 as an example. Jails are powerful, self-contained FreeBSD environments with separate network settings, package management, and access to thousands of FreeBSD application packages. Popular packages such as Apache, NGINX, LigHTTPD, MySQL, and PHP can be found and installed with the pkg search and pkg install commands.
Err codemadness.org 70 i 21051 Err codemadness.org 70 i 21052This example shows creating a jail, installing an Apache web server, and setting up a simple web page.
Err codemadness.org 70 i 21053 Err codemadness.org 70 i 21054NOTE: Do not directly attach FreeNAS to an external network (WAN). Use port forwarding, proper firewalls and DDoS protections when using FreeNAS for external web sites. This example demonstrates expanding the functionality of FreeNAS in an isolated LAN environment.
Err codemadness.org 70 i 21055
Err codemadness.org 70 i 21064Err codemadness.org 70 i 21070 Err codemadness.org 70 i 21071Last week, I needed to pick a BSD Operating System which supports NUMA to do some testing, so I decided to give Dragonfly BSD a shot. Dragonfly BSDonly can run on X86_64 architecture, which reminds me of Arch Linux, and after some tweaking, I feel Dragonfly BSD may be a “developer-friendly” Operating System, at least for me.
Err codemadness.org 70 i 21065 Err codemadness.org 70 i 21066I mainly use Dragonfly BSD as a server, so I don’t care whether GUI is fancy or not. But I have high requirements of developer tools, i.e., compiler and debugger. The default compiler of Dragonfly BSD is gcc 8.3, and I can also install clang 8.0.0 from package. This means I can test state-of-the-art features of compilers, and it is really important for me. gdb‘s version is 7.6.1, a little lag behind, but still OK.
Err codemadness.org 70 i 21067 Err codemadness.org 70 i 21068Furthermore, the upgradation of Dragonfly BSD is pretty simple and straightforward. I followed document to upgrade my Operating System to 5.6.0 this morning, just copied and pasted, no single error, booted successfully.
Err codemadness.org 70 i 21069
Err codemadness.org 70 i 21076Err codemadness.org 70 i 21080 Err codemadness.org 70 i 21081Here's a step-by-step guide that allows streaming Netflix media on NetBSD using a intel-haxm accelerated QEMU vm.
Err codemadness.org 70 i 21077 Err codemadness.org 70 i 21078Heads-up! Sound doesn't work, but everything else is fine. Please read the rest of this thread for a solution to this!!
Err codemadness.org 70 i 21079
Err codemadness.org 70 i 21086Err codemadness.org 70 i 21090 Err codemadness.org 70 i 21091I’m about halfway through the new edition of Sudo Mastery. Assuming nothing terrible happens, should have a complete first draft in four to six weeks. Enough stuff has changed in sudo that I need to carefully double-check every single feature. (I’m also horrified by the painfully obsolete versions of sudo shipped in the latest versions of CentOS and Debian, but people running those operating systems are already accustomed to their creaky obsolescence.)
Err codemadness.org 70 i 21087 Err codemadness.org 70 i 21088But the reason for this blog post? I have Eddie Sharam’s glorious cover art. My Patronizers saw it last month, so now the rest of you get a turn.
Err codemadness.org 70 i 21089
Err codemadness.org 70 i 21096Err codemadness.org 70 i 21100 Err codemadness.org 70 i 21101I'm a big fan of NetBSD. I've run it since 2000 on a Mac IIci (of course it's still running it) and I ran it for several years on a Power Mac 7300 with a G3 card which was the second incarnation of the Floodgap gopher server. Today I also still run it on a MIPS-based Cobalt RaQ 2 and an HP Jornada 690. I think NetBSD is a better match for smaller or underpowered systems than current-day Linux, and is fairly easy to harden and keep secure even though none of these systems are exposed to the outside world.
Err codemadness.org 70 i 21097 Err codemadness.org 70 i 21098Recently I had a need to set up a bridge system that would be fast enough to connect two networks and I happened to have two of the "secret" last-of-the-line 1.5GHz G4 Mac minis sitting on the shelf doing nothing. Yes, they're probably outclassed by later Raspberry Pi models, but I don't have to buy anything and I like putting old hardware to good use.
Err codemadness.org 70 i 21099
Err codemadness.org 70 i 21106Err codemadness.org 70 i 21112 Err codemadness.org 70 i 21113With the newly released DragonFlyBSD 5.6 there are improvements to its original HAMMER2 file-system to the extent that it's now selected by its installer as the default file-system choice for new installations. Curious how the performance now compares between HAMMER and HAMMER2, here are some initial benchmarks on an NVMe solid-state drive using DragonFlyBSD 5.6.0.
Err codemadness.org 70 i 21107 Err codemadness.org 70 i 21108With a 120GB Toshiba NVMe SSD on an Intel Core i7 8700K system, I ran some benchmarks of DragonFlyBSD 5.6.0 freshly installed with HAMMER2 and then again when returning to the original HAMMER file-system that remains available via its installer. No other changes were made to the setup during testing.
Err codemadness.org 70 i 21109 Err codemadness.org 70 i 21110And then for the more synthetic workloads it was just a mix. But overall HAMMER2 was performing well during the initial testing and great to see it continuing to offer noticeable leads in real-world workloads compared to the aging HAMMER file-system. HAMMER2 also offers better clustering, online deduplication, snapshots, compression, encryption, and many other modern file-system features.
Err codemadness.org 70 i 21111
Err codemadness.org 70 i 21236Err codemadness.org 70 i 21243 Err codemadness.org 70 i 21244The OPNsense security platform can help you to protect your network and your webservers with the nginx plugin addition.
Err codemadness.org 70 i 21238 Err codemadness.org 70 i 21239
Err codemadness.org 70 i 21237 In old days, install an open source firewall was a very trick task, but today it can be done with few clicks (or key strokes). In this article I'll not describe the detailed OPNsense installation process, but you can watch this video that was extracted from my OPNsense course available in Udemy. The video is in portuguese language, but with the translation CC Youtube feature you may be able to follow it without problems (if you don't are a portuguese speaker ofcourse) :-)Err codemadness.org 70 i 21240
Err codemadness.org 70 i 21242- See the article for the rest of the writeup
Err codemadness.org 70 i 21241
Err codemadness.org 70 i 21271Err codemadness.org 70 i 21275 Err codemadness.org 70 i 21276UNIX-like systems have dominated computing for decades, and with the rise of the internet and mobile devices their reach has become even larger. True, most systems now use more modern OSs like Linux, but how much has the UNIX-like landscape changed since the early days?
Err codemadness.org 70 i 21274
Err codemadness.org 70 i 21272 So, my question was this: how close is a modern *NIX userland to some of the earliest UNIX releases? To do this I'm going to compare a few key points of a modern Linux system with the earliest UNIX documentation I can get my hands on. The doc I am going to be covering(https://www.tuhs.org/Archive/Distributions/Research/Dennis_v1/UNIX_ProgrammersManual_Nov71.pdf) is from November 1971, predating v1 of the system.
Err codemadness.org 70 i 21273 I think the best place to start this comparison is to look at one of the highest-profile parts of the OS, that being the file system. Under the hood modern EXT file systems are completely different from the early UNIX file systems. However, they are still presented in basically the same way, as a heirerarchicat structure of directories with device files. So paths still look identical, and navigating the file system still functions the same. Often used commands likels,cp,mv,du, anddffunction the same. So aremountandumount. But, there are some key differences. For instance,cddidn't exist, yet insteadchdirfilled its place. Also,chmodis somewhat different. Instead of the usual 3-digit octal codes for permissions, this older version only uses 2 digits. Really, that difference is due to the underlying file system using a different permission set than modern systems. For the most part, all the file handling is actually pretty close to a Linux system from 2019.
Err codemadness.org 70 i 21285Err codemadness.org 70 i 21293 Err codemadness.org 70 i 21294I have been working on porting Wine to amd64 on NetBSD as a GSoC 2019 project. Wine is a compatibility layer which allows running Microsoft Windows applications on POSIX-complaint operating systems. This report provides an overview of the progress of the project during the first coding period.
Err codemadness.org 70 i 21288 Err codemadness.org 70 i 21289
Err codemadness.org 70 i 21286 Initially, when I started working on getting Wine-4.4 to build and run on NetBSD i386 the primary issue that I faced was Wine displaying black windows instead of UI, and this applied to any graphical program I tried running with Wine.
Err codemadness.org 70 i 21287 I suspected it , as it is related to graphics, to be an issue with the graphics driver or Xorg. Subsequently, I tried building modular Xorg, and I tried running Wine on it only to realize that Xorg being modular didn't affect it in the least. After having tried a couple of configurations, I realized that trying to hazard out every other probability is going to take an awful lot of time that I didn't have. This motivated me to bisect the repo using git, and find the first version of Wine which failed on NetBSD.Err codemadness.org 70 i 21290
Err codemadness.org 70 i 21292- See the article for the rest of the writeup
Err codemadness.org 70 i 21291
Err codemadness.org 70 i 21299Err codemadness.org 70 i 21303 Err codemadness.org 70 i 21304Today FreeBSD operating system turns 26 years old. 19 June is an International FreeBSD Day. This is why I got something special today :). How about using FreeBSD as an Enterprise Storage solution on real hardware? This where FreeBSD shines with all its storage features ZFS included.
Err codemadness.org 70 i 21302
Err codemadness.org 70 i 21300 Today I will show you how I have built so called Enterprise Storage based on FreeBSD system along with more then 1 PB (Petabyte) of raw capacity.
Err codemadness.org 70 i 21301 This project is different. How much storage space can you squeeze from a single 4U system? It turns out a lot! Definitely more then 1 PB (1024 TB) of raw storage space.
Err codemadness.org 70 i 21313Err codemadness.org 70 i 21316 Err codemadness.org 70 i 21317Once we are done with this we expect X.org to go into hard maintenance mode fairly quickly. The reality is that X.org is basically maintained by us and thus once we stop paying attention to it there is unlikely to be any major new releases coming out and there might even be some bitrot setting in over time. We will keep an eye on it as we will want to ensure X.org stays supportable until the end of the RHEL8 lifecycle at a minimum, but let this be a friendly notice for everyone who rely the work we do maintaining the Linux graphics stack, get onto Wayland, that is where the future is.
Err codemadness.org 70 i 21315
Err codemadness.org 70 i 21314 I have no idea how true this is about X.org X server maintenance, either now or in the future, but I definitely think it's a sign that developers have started saying this. If Gnome developers feel that X.org is going to be in hard maintenance mode almost immediately, they're probably pretty likely to also put the Gnome code that deals with X into hard maintenance mode. And public Gnome statements about this (and public action or lack of it) provide implicit support for KDE and any other desktop to move in this direction if they want to (and probably create some pressure to do so). I've known that Wayland was the future for some time, but I would still like it to not arrive any time soon.
Err codemadness.org 70 i 21364Err codemadness.org 70 i 21371 Err codemadness.org 70 i 21372The OPNsense security platform can help you to protect your network and your webservers with the nginx plugin addition.
Err codemadness.org 70 i 21366 Err codemadness.org 70 i 21367
Err codemadness.org 70 i 21365 In old days, install an open source firewall was a very trick task, but today it can be done with few clicks (or key strokes). In this article I'll not describe the detailed OPNsense installation process, but you can watch this video that was extracted from my OPNsense course available in Udemy. The video is in portuguese language, but with the translation CC Youtube feature you may be able to follow it without problems (if you don't are a portuguese speaker ofcourse) :-)Err codemadness.org 70 i 21368
Err codemadness.org 70 i 21370- See the article for the rest of the writeup
Err codemadness.org 70 i 21369
Err codemadness.org 70 i 21399Err codemadness.org 70 i 21403 Err codemadness.org 70 i 21404UNIX-like systems have dominated computing for decades, and with the rise of the internet and mobile devices their reach has become even larger. True, most systems now use more modern OSs like Linux, but how much has the UNIX-like landscape changed since the early days?
Err codemadness.org 70 i 21402
Err codemadness.org 70 i 21400 So, my question was this: how close is a modern *NIX userland to some of the earliest UNIX releases? To do this I'm going to compare a few key points of a modern Linux system with the earliest UNIX documentation I can get my hands on. The doc I am going to be covering(https://www.tuhs.org/Archive/Distributions/Research/Dennis_v1/UNIX_ProgrammersManual_Nov71.pdf) is from November 1971, predating v1 of the system.
Err codemadness.org 70 i 21401 I think the best place to start this comparison is to look at one of the highest-profile parts of the OS, that being the file system. Under the hood modern EXT file systems are completely different from the early UNIX file systems. However, they are still presented in basically the same way, as a heirerarchicat structure of directories with device files. So paths still look identical, and navigating the file system still functions the same. Often used commands likels,cp,mv,du, anddffunction the same. So aremountandumount. But, there are some key differences. For instance,cddidn't exist, yet insteadchdirfilled its place. Also,chmodis somewhat different. Instead of the usual 3-digit octal codes for permissions, this older version only uses 2 digits. Really, that difference is due to the underlying file system using a different permission set than modern systems. For the most part, all the file handling is actually pretty close to a Linux system from 2019.
Err codemadness.org 70 i 21413Err codemadness.org 70 i 21421 Err codemadness.org 70 i 21422I have been working on porting Wine to amd64 on NetBSD as a GSoC 2019 project. Wine is a compatibility layer which allows running Microsoft Windows applications on POSIX-complaint operating systems. This report provides an overview of the progress of the project during the first coding period.
Err codemadness.org 70 i 21416 Err codemadness.org 70 i 21417
Err codemadness.org 70 i 21414 Initially, when I started working on getting Wine-4.4 to build and run on NetBSD i386 the primary issue that I faced was Wine displaying black windows instead of UI, and this applied to any graphical program I tried running with Wine.
Err codemadness.org 70 i 21415 I suspected it , as it is related to graphics, to be an issue with the graphics driver or Xorg. Subsequently, I tried building modular Xorg, and I tried running Wine on it only to realize that Xorg being modular didn't affect it in the least. After having tried a couple of configurations, I realized that trying to hazard out every other probability is going to take an awful lot of time that I didn't have. This motivated me to bisect the repo using git, and find the first version of Wine which failed on NetBSD.Err codemadness.org 70 i 21418
Err codemadness.org 70 i 21420- See the article for the rest of the writeup
Err codemadness.org 70 i 21419
Err codemadness.org 70 i 21427Err codemadness.org 70 i 21431 Err codemadness.org 70 i 21432Today FreeBSD operating system turns 26 years old. 19 June is an International FreeBSD Day. This is why I got something special today :). How about using FreeBSD as an Enterprise Storage solution on real hardware? This where FreeBSD shines with all its storage features ZFS included.
Err codemadness.org 70 i 21430
Err codemadness.org 70 i 21428 Today I will show you how I have built so called Enterprise Storage based on FreeBSD system along with more then 1 PB (Petabyte) of raw capacity.
Err codemadness.org 70 i 21429 This project is different. How much storage space can you squeeze from a single 4U system? It turns out a lot! Definitely more then 1 PB (1024 TB) of raw storage space.
Err codemadness.org 70 i 21441Err codemadness.org 70 i 21444 Err codemadness.org 70 i 21445Once we are done with this we expect X.org to go into hard maintenance mode fairly quickly. The reality is that X.org is basically maintained by us and thus once we stop paying attention to it there is unlikely to be any major new releases coming out and there might even be some bitrot setting in over time. We will keep an eye on it as we will want to ensure X.org stays supportable until the end of the RHEL8 lifecycle at a minimum, but let this be a friendly notice for everyone who rely the work we do maintaining the Linux graphics stack, get onto Wayland, that is where the future is.
Err codemadness.org 70 i 21443
Err codemadness.org 70 i 21442 I have no idea how true this is about X.org X server maintenance, either now or in the future, but I definitely think it's a sign that developers have started saying this. If Gnome developers feel that X.org is going to be in hard maintenance mode almost immediately, they're probably pretty likely to also put the Gnome code that deals with X into hard maintenance mode. And public Gnome statements about this (and public action or lack of it) provide implicit support for KDE and any other desktop to move in this direction if they want to (and probably create some pressure to do so). I've known that Wayland was the future for some time, but I would still like it to not arrive any time soon.
Big-ticket items
Improved VM
Err codemadness.org 70 i 21594 Err codemadness.org 70 i 21595DRM
Err codemadness.org 70 i 21610 Err codemadness.org 70 i 21611HAMMER2
Err codemadness.org 70 i 21622 Err codemadness.org 70 i 21623Err codemadness.org 70 i 21641Err codemadness.org 70 i 21652 Err codemadness.org 70 i 21653Somewhat surprisingly, OpenBSD has added the Vulkan library and ICD loader support as their newest port.
Err codemadness.org 70 i 21644 Err codemadness.org 70 i 21645
Err codemadness.org 70 i 21642 This new graphics/vulkan-loader port provides the generic Vulkan library and ICD support that is the common code for Vulkan implementations on the system. This doesn't enable any Vulkan hardware drivers or provide something new not available elsewhere, but is rare seeing Vulkan work among the BSDs. There is also in ports the related components like the SPIR-V headers and tools, glsllang, and the Vulkan tools and validation layers.
Err codemadness.org 70 i 21643 This is of limited usefulness, at least for the time being considering OpenBSD like the other BSDs lag behind in their DRM kernel driver support that is ported over from the mainline Linux kernel tree but generally years behind the kernel upstream. Particularly with Vulkan, newer kernel releases are needed for some Vulkan features as well as achieving decent performance. The Vulkan drivers of relevance are the open-source Intel ANV Vulkan driver and Radeon RADV drivers, both of which are in Mesa though we haven't seen any testing results to know how well they would work if at all currently on OpenBSD, but they're at least in Mesa and obviously open-source.Err codemadness.org 70 i 21646
Err codemadness.org 70 i 21651- A note: The BSDs are no longer that far behind.
Err codemadness.org 70 i 21647- FreeBSD 12.0 uses DRM from Linux 4.16 (April 2018), and the drm-devel port is based on Linux 5.0 (March 2019)
Err codemadness.org 70 i 21648- OpenBSD -current as of April 2019 uses DRM from Linux 4.19.34 Err codemadness.org 70 i 21649 ***
Err codemadness.org 70 i 21650
Err codemadness.org 70 i 21658Err codemadness.org 70 i 21669 Err codemadness.org 70 i 21670I recently released another version – 0.5.0 – of Dinit, the service manager / init system. There were a number of minor improvements, including to the build system (just running “make” or “gmake” should be enough on any of the systems which have a pre-defined configuration, no need to edit mconfig by hand), but the main features of the release were S6-compatible readiness notification, and support for updating the utmp database.
Err codemadness.org 70 i 21662 Err codemadness.org 70 i 21663
Err codemadness.org 70 i 21659 In other words, utmp is a record of who is currently logged in to the system (another file, “wtmp”, records all logins and logouts, as well as, potentially, certain system events such as reboots and time updates). This is a hint at the main motivation for having utmp support in Dinit – I wanted the “who” command to correctly report current logins (and I wanted boot time to be correctly recorded in the wtmp file).
Err codemadness.org 70 i 21660 I wondered: If the files consist of fixed-sized records, and are readable by regular users, how is consistency maintained? That is – how can a process ensure that, when it updates the database, it doesn’t conflict with another process also attempting to update the database at the same time? Similarly, how can a process reading an entry from the database be sure that it receives a consistent, full record and not a record which has been partially updated? (after all, POSIX allows that a write(2) call can return without having written all the requested bytes, and I’m not aware of Linux or any of the *BSDs documenting that this cannot happen for regular files). Clearly, some kind of locking is needed; a process that wants to write to or read from the database locks it first, performs its operation, and then unlocks the database. Once again, this happens under the hood, in the implementation of the getutent/pututline functions or their equivalents.
Err codemadness.org 70 i 21661 Then I wondered: if a user process is able to lock the utmp file, and this prevents updates, what’s to stop a user process from manually acquiring and then holding such a lock for a long – even practically infinite – duration? This would prevent the database from being updated, and would perhaps even prevent logins/logouts from completing. Unfortunately, the answer is – nothing; and yes, it is possible on different systems to prevent the database from being correctly updated or even to prevent all other users – including root – from logging in to the system.Err codemadness.org 70 i 21664
Err codemadness.org 70 i 21668- A good find
Err codemadness.org 70 i 21665- On FreeBSD, even though write(2) can be asynchronous, once the write syscall returns, the data is in the buffer cache (or ARC), and any future read(2) will see that new data even if it has not yet been written to disk. Err codemadness.org 70 i 21666 ***
Err codemadness.org 70 i 21667
Err codemadness.org 70 i 21673Err codemadness.org 70 i 21678 Err codemadness.org 70 i 21679Last week, Damien Miller, a Google security researcher, and one of the popular OpenSSH and OpenBSD developers announced an update to the existing OpenSSH code that can help protect against the side-channel attacks that leak sensitive data from computer’s memory. This protection, Miller says, will protect the private keys residing in the RAM against Spectre, Meltdown, Rowhammer, and the latest RAMBleed attack.
Err codemadness.org 70 i 21677
Err codemadness.org 70 i 21674 SSH private keys can be used by malicious threat actors to connect to remote servers without the need of a password. According to CSO, “The approach used by OpenSSH could be copied by other software projects to protect their own keys and secrets in memory”.
Err codemadness.org 70 i 21675 However, if the attacker is successful in extracting the data from a computer or server’s RAM, they will only obtain an encrypted version of an SSH private key, rather than the cleartext version.
Err codemadness.org 70 i 21676 In an email to OpenBSD, Miller writes, “this change encrypts private keys when they are not in use with a symmetric key that is derived from a relatively large ‘prekey’ consisting of random data (currently 16KB).”
Err codemadness.org 70 i 21684Err codemadness.org 70 i 21693 Err codemadness.org 70 i 21694You’ve probably heard us say a mix of “ZFS” and “OpenZFS” and an explanation is long-overdue.
Err codemadness.org 70 i 21687 Err codemadness.org 70 i 21688
Err codemadness.org 70 i 21685 From its inception, “ZFS” has referred to the “Zettabyte File System” developed at Sun Microsystems and published under the CDDL Open Source license in 2005 as part of the OpenSolaris operating system. ZFS was revolutionary for completely decoupling the file system from specialized storage hardware and even a specific computer platform. The portable nature and advanced features of ZFS led FreeBSD, Linux, and even Apple developers to start porting ZFS to their operating systems and by 2008, FreeBSD shipped with ZFS in the 7.0 release. For the first time, ZFS empowered users of any budget with enterprise-class scalability and data integrity and management features like checksumming, compression and snapshotting, and those features remain unrivaled at any price to this day. On any ZFS platform, administrators use the zpool and zfs utilities to configure and manage their storage devices and file systems respectively. Both commands employ a user-friendly syntax such as‘zfs create mypool/mydataset’ and I welcome you to watch the appropriately-titled webinar “Why we love ZFS & you should too” or try a completely-graphical ZFS experience with FreeNAS.
Err codemadness.org 70 i 21686 Oracle has steadily continued to develop its own proprietary branch of ZFS and Matt Ahrens points out that over 50% of the original OpenSolaris ZFS code has been replaced in OpenZFS with community contributions. This means that there are, sadly, two politically and technologically-incompatible branches of “ZFS” but fortunately, OpenZFS is orders of magnitude more popular thanks to its open nature. The two projects should be referred to as “Oracle ZFS” and “OpenZFS” to distinguish them as development efforts, but the user still types the ‘zfs’ command, which on FreeBSD relies on the ‘zfs.ko’ kernel module. My impression is that the terms of the CDDL license under which the OpenZFS branch of ZFS is published protects its users from any patent and trademark risks. Hopefully, this all helps you distinguish the OpenZFS project from the ZFS technology.Err codemadness.org 70 i 21689
Err codemadness.org 70 i 21692- There was further discussion of how the ZFSOnLinux repo will become the OpenZFS repo in the future once it also contains the bits to build on FreeBSD as well during the June 25th ZFS Leadership Meeting. The videos for all of the meetings are available here Err codemadness.org 70 i 21690 ***
Err codemadness.org 70 i 21691
Big-ticket items
Improved VM
Err codemadness.org 70 i 21741 Err codemadness.org 70 i 21742DRM
Err codemadness.org 70 i 21757 Err codemadness.org 70 i 21758HAMMER2
Err codemadness.org 70 i 21769 Err codemadness.org 70 i 21770Err codemadness.org 70 i 21788Err codemadness.org 70 i 21799 Err codemadness.org 70 i 21800Somewhat surprisingly, OpenBSD has added the Vulkan library and ICD loader support as their newest port.
Err codemadness.org 70 i 21791 Err codemadness.org 70 i 21792
Err codemadness.org 70 i 21789 This new graphics/vulkan-loader port provides the generic Vulkan library and ICD support that is the common code for Vulkan implementations on the system. This doesn't enable any Vulkan hardware drivers or provide something new not available elsewhere, but is rare seeing Vulkan work among the BSDs. There is also in ports the related components like the SPIR-V headers and tools, glsllang, and the Vulkan tools and validation layers.
Err codemadness.org 70 i 21790 This is of limited usefulness, at least for the time being considering OpenBSD like the other BSDs lag behind in their DRM kernel driver support that is ported over from the mainline Linux kernel tree but generally years behind the kernel upstream. Particularly with Vulkan, newer kernel releases are needed for some Vulkan features as well as achieving decent performance. The Vulkan drivers of relevance are the open-source Intel ANV Vulkan driver and Radeon RADV drivers, both of which are in Mesa though we haven't seen any testing results to know how well they would work if at all currently on OpenBSD, but they're at least in Mesa and obviously open-source.Err codemadness.org 70 i 21793
Err codemadness.org 70 i 21798- A note: The BSDs are no longer that far behind.
Err codemadness.org 70 i 21794- FreeBSD 12.0 uses DRM from Linux 4.16 (April 2018), and the drm-devel port is based on Linux 5.0 (March 2019)
Err codemadness.org 70 i 21795- OpenBSD -current as of April 2019 uses DRM from Linux 4.19.34 Err codemadness.org 70 i 21796 ***
Err codemadness.org 70 i 21797
Err codemadness.org 70 i 21805Err codemadness.org 70 i 21816 Err codemadness.org 70 i 21817I recently released another version – 0.5.0 – of Dinit, the service manager / init system. There were a number of minor improvements, including to the build system (just running “make” or “gmake” should be enough on any of the systems which have a pre-defined configuration, no need to edit mconfig by hand), but the main features of the release were S6-compatible readiness notification, and support for updating the utmp database.
Err codemadness.org 70 i 21809 Err codemadness.org 70 i 21810
Err codemadness.org 70 i 21806 In other words, utmp is a record of who is currently logged in to the system (another file, “wtmp”, records all logins and logouts, as well as, potentially, certain system events such as reboots and time updates). This is a hint at the main motivation for having utmp support in Dinit – I wanted the “who” command to correctly report current logins (and I wanted boot time to be correctly recorded in the wtmp file).
Err codemadness.org 70 i 21807 I wondered: If the files consist of fixed-sized records, and are readable by regular users, how is consistency maintained? That is – how can a process ensure that, when it updates the database, it doesn’t conflict with another process also attempting to update the database at the same time? Similarly, how can a process reading an entry from the database be sure that it receives a consistent, full record and not a record which has been partially updated? (after all, POSIX allows that a write(2) call can return without having written all the requested bytes, and I’m not aware of Linux or any of the *BSDs documenting that this cannot happen for regular files). Clearly, some kind of locking is needed; a process that wants to write to or read from the database locks it first, performs its operation, and then unlocks the database. Once again, this happens under the hood, in the implementation of the getutent/pututline functions or their equivalents.
Err codemadness.org 70 i 21808 Then I wondered: if a user process is able to lock the utmp file, and this prevents updates, what’s to stop a user process from manually acquiring and then holding such a lock for a long – even practically infinite – duration? This would prevent the database from being updated, and would perhaps even prevent logins/logouts from completing. Unfortunately, the answer is – nothing; and yes, it is possible on different systems to prevent the database from being correctly updated or even to prevent all other users – including root – from logging in to the system.Err codemadness.org 70 i 21811
Err codemadness.org 70 i 21815- A good find
Err codemadness.org 70 i 21812- On FreeBSD, even though write(2) can be asynchronous, once the write syscall returns, the data is in the buffer cache (or ARC), and any future read(2) will see that new data even if it has not yet been written to disk. Err codemadness.org 70 i 21813 ***
Err codemadness.org 70 i 21814
Err codemadness.org 70 i 21820Err codemadness.org 70 i 21825 Err codemadness.org 70 i 21826Last week, Damien Miller, a Google security researcher, and one of the popular OpenSSH and OpenBSD developers announced an update to the existing OpenSSH code that can help protect against the side-channel attacks that leak sensitive data from computer’s memory. This protection, Miller says, will protect the private keys residing in the RAM against Spectre, Meltdown, Rowhammer, and the latest RAMBleed attack.
Err codemadness.org 70 i 21824
Err codemadness.org 70 i 21821 SSH private keys can be used by malicious threat actors to connect to remote servers without the need of a password. According to CSO, “The approach used by OpenSSH could be copied by other software projects to protect their own keys and secrets in memory”.
Err codemadness.org 70 i 21822 However, if the attacker is successful in extracting the data from a computer or server’s RAM, they will only obtain an encrypted version of an SSH private key, rather than the cleartext version.
Err codemadness.org 70 i 21823 In an email to OpenBSD, Miller writes, “this change encrypts private keys when they are not in use with a symmetric key that is derived from a relatively large ‘prekey’ consisting of random data (currently 16KB).”
Err codemadness.org 70 i 21831Err codemadness.org 70 i 21840 Err codemadness.org 70 i 21841You’ve probably heard us say a mix of “ZFS” and “OpenZFS” and an explanation is long-overdue.
Err codemadness.org 70 i 21834 Err codemadness.org 70 i 21835
Err codemadness.org 70 i 21832 From its inception, “ZFS” has referred to the “Zettabyte File System” developed at Sun Microsystems and published under the CDDL Open Source license in 2005 as part of the OpenSolaris operating system. ZFS was revolutionary for completely decoupling the file system from specialized storage hardware and even a specific computer platform. The portable nature and advanced features of ZFS led FreeBSD, Linux, and even Apple developers to start porting ZFS to their operating systems and by 2008, FreeBSD shipped with ZFS in the 7.0 release. For the first time, ZFS empowered users of any budget with enterprise-class scalability and data integrity and management features like checksumming, compression and snapshotting, and those features remain unrivaled at any price to this day. On any ZFS platform, administrators use the zpool and zfs utilities to configure and manage their storage devices and file systems respectively. Both commands employ a user-friendly syntax such as‘zfs create mypool/mydataset’ and I welcome you to watch the appropriately-titled webinar “Why we love ZFS & you should too” or try a completely-graphical ZFS experience with FreeNAS.
Err codemadness.org 70 i 21833 Oracle has steadily continued to develop its own proprietary branch of ZFS and Matt Ahrens points out that over 50% of the original OpenSolaris ZFS code has been replaced in OpenZFS with community contributions. This means that there are, sadly, two politically and technologically-incompatible branches of “ZFS” but fortunately, OpenZFS is orders of magnitude more popular thanks to its open nature. The two projects should be referred to as “Oracle ZFS” and “OpenZFS” to distinguish them as development efforts, but the user still types the ‘zfs’ command, which on FreeBSD relies on the ‘zfs.ko’ kernel module. My impression is that the terms of the CDDL license under which the OpenZFS branch of ZFS is published protects its users from any patent and trademark risks. Hopefully, this all helps you distinguish the OpenZFS project from the ZFS technology.Err codemadness.org 70 i 21836
Err codemadness.org 70 i 21839- There was further discussion of how the ZFSOnLinux repo will become the OpenZFS repo in the future once it also contains the bits to build on FreeBSD as well during the June 25th ZFS Leadership Meeting. The videos for all of the meetings are available here Err codemadness.org 70 i 21837 ***
Err codemadness.org 70 i 21838
Err codemadness.org 70 i 21983Err codemadness.org 70 i 21988 Err codemadness.org 70 i 21989blacklistd(8) provides an API that can be used by network daemons to communicate with a packet filter via a daemon to enforce opening and closing ports dynamically based on policy.
Err codemadness.org 70 i 21987
Err codemadness.org 70 i 21984 The interface to the packet filter is in /libexec/blacklistd-helper (this is currently designed for npf) and the configuration file (inspired from inetd.conf) is in etc/blacklistd.conf
Err codemadness.org 70 i 21985 Now, blacklistd(8) will require bpfjit(4) (Just-In-Time compiler for Berkeley Packet Filter) in order to properly work, in addition to, naturally, npf(7) as frontend and syslogd(8), as a backend to print diagnostic messages. Also remember npf shall rely on the npflog* virtual network interface to provide logging for tcpdump() to use.
Err codemadness.org 70 i 21986 Unfortunately (dont' ask me why :P) in 8.1 all the required kernel components are still not compiled by default in the GENERIC kernel (though they are in HEAD), and are rather provided as modules. Enabling NPF and blacklistd services would normally result in them being automatically loaded as root, but predictably on securelevel=1 this is not going to happen
Err codemadness.org 70 i 22006Err codemadness.org 70 i 22014 Err codemadness.org 70 i 22015A couple months ago I noticed that the monitor on my workstation never power off anymore. Screensaver would go on, but DPMs (to do the poweroff) never kicked in.
Err codemadness.org 70 i 22009 Err codemadness.org 70 i 22010
Err codemadness.org 70 i 22007 I grovels the output of various tools that display DPMS settings, which as usual in Xorg were useless. Everybody said DPMS is on with a timeout. I even wrote my own C program to use every available Xlib API call and even the xscreensaver library calls. (should make it available) No go, everybody says that DPMs is on, enabled and set on a timeout. Didn’t matter whether I let xscreeensaver do the job or just the X11 server.
Err codemadness.org 70 i 22008 After a while I noticed that DPMS actually worked between starting my X11 server and starting all my clients. I have a minimal .xinitrc and start the actual session from a script, that is how I could notice. If I used a regular desktop login I wouldn’t have noticed. A server state bug was much more likely than a client bug.Err codemadness.org 70 i 22011
Err codemadness.org 70 i 22013- See the article for the rest...
Err codemadness.org 70 i 22012
Err codemadness.org 70 i 22020Err codemadness.org 70 i 22024 Err codemadness.org 70 i 22025Upstream describes LLDB as a next generation, high-performance debugger. It is built on top of LLVM/Clang toolchain, and features great integration with it. At the moment, it primarily supports debugging C, C++ and ObjC code, and there is interest in extending it to more languages.
Err codemadness.org 70 i 22023
Err codemadness.org 70 i 22021 In February, I have started working on LLDB, as contracted by the NetBSD Foundation. So far I've been working on reenabling continuous integration, squashing bugs, improving NetBSD core file support and lately extending NetBSD's ptrace interface to cover more register types. You can read more about that in my Apr 2019 report.
Err codemadness.org 70 i 22022 In May, I was primarily continuing the work on new ptrace interface. Besides that, I've found and fixed a bug in ptrace() compat32 code, pushed LLVM buildbot to ‘green’ status and found some upstream LLVM regressions. More below.
Err codemadness.org 70 i 22030Err codemadness.org 70 i 22034 Err codemadness.org 70 i 22035If you have a traditional window manager like fvwm, one of the things it can do is iconify X windows so that they turn into icons on the root window (which would often be called the 'desktop'). Even modern desktop environments that don't iconify programs to the root window (or their desktop) may have per-program icons for running programs in their dock or taskbar. If your window manager or desktop environment can do this, you might reasonably wonder where those icons come from by default.
Err codemadness.org 70 i 22033
Err codemadness.org 70 i 22031 Although I don't know how it was done in the early days of X, the modern standard for this is part of the Extended Window Manager Hints. In EWMH, applications give the window manager a number of possible icons, generally in different sizes, as ARGB bitmaps (instead of, say, SVG format). The window manager or desktop environment can then pick whichever icon size it likes best, taking into account things like the display resolution and so on, and display it however it wants to (in its original size or scaled up or down).
Err codemadness.org 70 i 22032 How this is communicated in specific is through the only good interprocess communication method that X supplies, namely X properties. In the specific case of icons, the _NET_WM_ICON property is what is used, and xprop can display the size information and an ASCII art summary of what each icon looks like. It's also possible to use some additional magic to read out the raw data from _NET_WM_ICON in a useful format; see, for example, this Stackoverflow question and its answers.
Err codemadness.org 70 i 22102Err codemadness.org 70 i 22107 Err codemadness.org 70 i 22108blacklistd(8) provides an API that can be used by network daemons to communicate with a packet filter via a daemon to enforce opening and closing ports dynamically based on policy.
Err codemadness.org 70 i 22106
Err codemadness.org 70 i 22103 The interface to the packet filter is in /libexec/blacklistd-helper (this is currently designed for npf) and the configuration file (inspired from inetd.conf) is in etc/blacklistd.conf
Err codemadness.org 70 i 22104 Now, blacklistd(8) will require bpfjit(4) (Just-In-Time compiler for Berkeley Packet Filter) in order to properly work, in addition to, naturally, npf(7) as frontend and syslogd(8), as a backend to print diagnostic messages. Also remember npf shall rely on the npflog* virtual network interface to provide logging for tcpdump() to use.
Err codemadness.org 70 i 22105 Unfortunately (dont' ask me why :P) in 8.1 all the required kernel components are still not compiled by default in the GENERIC kernel (though they are in HEAD), and are rather provided as modules. Enabling NPF and blacklistd services would normally result in them being automatically loaded as root, but predictably on securelevel=1 this is not going to happen
Err codemadness.org 70 i 22125Err codemadness.org 70 i 22133 Err codemadness.org 70 i 22134A couple months ago I noticed that the monitor on my workstation never power off anymore. Screensaver would go on, but DPMs (to do the poweroff) never kicked in.
Err codemadness.org 70 i 22128 Err codemadness.org 70 i 22129
Err codemadness.org 70 i 22126 I grovels the output of various tools that display DPMS settings, which as usual in Xorg were useless. Everybody said DPMS is on with a timeout. I even wrote my own C program to use every available Xlib API call and even the xscreensaver library calls. (should make it available) No go, everybody says that DPMs is on, enabled and set on a timeout. Didn’t matter whether I let xscreeensaver do the job or just the X11 server.
Err codemadness.org 70 i 22127 After a while I noticed that DPMS actually worked between starting my X11 server and starting all my clients. I have a minimal .xinitrc and start the actual session from a script, that is how I could notice. If I used a regular desktop login I wouldn’t have noticed. A server state bug was much more likely than a client bug.Err codemadness.org 70 i 22130
Err codemadness.org 70 i 22132- See the article for the rest...
Err codemadness.org 70 i 22131
Err codemadness.org 70 i 22139Err codemadness.org 70 i 22143 Err codemadness.org 70 i 22144Upstream describes LLDB as a next generation, high-performance debugger. It is built on top of LLVM/Clang toolchain, and features great integration with it. At the moment, it primarily supports debugging C, C++ and ObjC code, and there is interest in extending it to more languages.
Err codemadness.org 70 i 22142
Err codemadness.org 70 i 22140 In February, I have started working on LLDB, as contracted by the NetBSD Foundation. So far I've been working on reenabling continuous integration, squashing bugs, improving NetBSD core file support and lately extending NetBSD's ptrace interface to cover more register types. You can read more about that in my Apr 2019 report.
Err codemadness.org 70 i 22141 In May, I was primarily continuing the work on new ptrace interface. Besides that, I've found and fixed a bug in ptrace() compat32 code, pushed LLVM buildbot to ‘green’ status and found some upstream LLVM regressions. More below.
Err codemadness.org 70 i 22149Err codemadness.org 70 i 22153 Err codemadness.org 70 i 22154If you have a traditional window manager like fvwm, one of the things it can do is iconify X windows so that they turn into icons on the root window (which would often be called the 'desktop'). Even modern desktop environments that don't iconify programs to the root window (or their desktop) may have per-program icons for running programs in their dock or taskbar. If your window manager or desktop environment can do this, you might reasonably wonder where those icons come from by default.
Err codemadness.org 70 i 22152
Err codemadness.org 70 i 22150 Although I don't know how it was done in the early days of X, the modern standard for this is part of the Extended Window Manager Hints. In EWMH, applications give the window manager a number of possible icons, generally in different sizes, as ARGB bitmaps (instead of, say, SVG format). The window manager or desktop environment can then pick whichever icon size it likes best, taking into account things like the display resolution and so on, and display it however it wants to (in its original size or scaled up or down).
Err codemadness.org 70 i 22151 How this is communicated in specific is through the only good interprocess communication method that X supplies, namely X properties. In the specific case of icons, the _NET_WM_ICON property is what is used, and xprop can display the size information and an ASCII art summary of what each icon looks like. It's also possible to use some additional magic to read out the raw data from _NET_WM_ICON in a useful format; see, for example, this Stackoverflow question and its answers.
Err codemadness.org 70 i 22289Err codemadness.org 70 i 22295 Err codemadness.org 70 i 22296DragonFlyBSD lead developer Matthew Dillon has been working on a big VM rework in the name of performance and other kernel improvements recently. Here is a look at how those DragonFlyBSD 5.5-DEVELOPMENT improvements are paying off compared to DragonFlyBSD 5.4 as well as FreeBSD 12 and five Linux distribution releases. With Dillon using an AMD Ryzen Threadripper system, we used that too for this round of BSD vs. Linux performance benchmarks.
Err codemadness.org 70 i 22292 Err codemadness.org 70 i 22293
Err codemadness.org 70 i 22290 The work by Dillon on the VM overhaul and other changes (including more HAMMER2 file-system work) will ultimately culminate with the DragonFlyBSD 5.6 release (well, unless he opts for DragonFlyBSD 6.0 or so). These are benchmarks of the latest DragonFlyBSD 5.5-DEVELOPMENT daily ISO as of this week benchmarked across DragonFlyBSD 5.4.3 stable, FreeBSD 12.0, Ubuntu 19.04, Red Hat Enterprise Linux 8.0, Debian 9.9, Debian Buster, and CentOS 7 1810 as a wide variety of reference points both from newer and older Linux distributions. (As for no Clear Linux reference point for a speedy reference point, it currently has a regression with AMD + Samsung NVMe SSD support on some hardware, including this box, prohibiting the drive from coming up due to a presumed power management issue that is still being resolved.)
Err codemadness.org 70 i 22291 With Matthew Dillon doing much of his development on an AMD Ryzen Threadripper system after he last year proclaimed the greatness of these AMD HEDT CPUs, for this round of testing I also used a Ryzen Threadripper 2990WX with 32 cores / 64 threads. Tests of other AMD/Intel hardware with DragonFlyBSD will come as the next stable release is near and all of the kernel work has settled down. For now it's mostly entertaining our own curiosity how well these DragonFlyBSD optimizations are paying off and how it's increasing the competition against FreeBSD 12 and Linux distributions.
Err codemadness.org 70 i 22294
Err codemadness.org 70 i 22299Err codemadness.org 70 i 22305 Err codemadness.org 70 i 22306Maybe you have been reading recently about the release of OpenBSD 6.5 and wonder, "What are the differences between Linux and OpenBSD?"
Err codemadness.org 70 i 22304
Err codemadness.org 70 i 22300 I've also been there at some point in the past and these are my conclusions.
Err codemadness.org 70 i 22301 They also apply, to some extent, to other BSDs. However, an important disclaimer applies to this article.
Err codemadness.org 70 i 22302 This list is aimed at people who are used to Linux and are curious about OpenBSD. It is written to highlight the most important changes from their perspective, not the absolute most important changes from a technical standpoint.
Err codemadness.org 70 i 22303 Please bear with me.
Err codemadness.org 70 i 22321Err codemadness.org 70 i 22323 Err codemadness.org 70 i 22324We are very happy to announce The NetBSD Foundation Google Summer of Code 2019 projects:
Err codemadness.org 70 i 22322
Err codemadness.org 70 i 22335Err codemadness.org 70 i 22338 Err codemadness.org 70 i 22339The communiting bonding period - where students get in touch with mentors and community - started yesterday. The coding period will start from May 27 until August 19.
Err codemadness.org 70 i 22337
Err codemadness.org 70 i 22336 Please welcome all our students and a big good luck to students and mentors! A big thank to Google and The NetBSD Foundation organization mentors and administrators! Looking forward to a great Google Summer of Code!
Err codemadness.org 70 i 22344Err codemadness.org 70 i 22346 Err codemadness.org 70 i 22347The opening keynote at EuroBSDCon 2016 predicted the future 10 years of BSDs. Amongst all the funny previsions, gnn@FreeBSD said that by 2026 OpenBSD will have its first implementation of SMP. Almost 3 years after this talk, that sounds like a plausible forecast... Why? Where are we? What can we do? Let's dive into the issue!
Err codemadness.org 70 i 22345
Err codemadness.org 70 i 22352Err codemadness.org 70 i 22355 Err codemadness.org 70 i 22356Most of OpenBSD's kernel still runs under a single lock, ze KERNEL_LOCK(). That includes most of the syscalls, most of the interrupt handlers and most of the fault handlers. Most of them, not all of them. Meaning we have collected & fixed bugs while setting up infrastructures and examples. Now this lock remains the principal responsible for the spin % you can observe in top(1) and systat(1).
Err codemadness.org 70 i 22354
Err codemadness.org 70 i 22353 I believe that we opted for a difficult hike when we decided to start removing this lock from the bottom. As a result many SCSI & Network interrupt handlers as well as all Audio & USB ones can be executed without big lock. On the other hand very few syscalls are already or almost ready to be unlocked, as we incorrectly say. This explains why basic primitives like tsleep(9), csignal() and selwakeup() are only receiving attention now that the top of the Network Stack is running (mostly) without big lock.
Err codemadness.org 70 i 22361Err codemadness.org 70 i 22363 Err codemadness.org 70 i 22364In the past years, most of our efforts have been invested into the Network Stack. As I already mentioned it should be ready to be parallelized. However think we should now concentrate on removing the KERNEL_LOCK(), even if the code paths aren't performance critical.
Err codemadness.org 70 i 22362
Err codemadness.org 70 i 22373Err codemadness.org 70 i 22379 Err codemadness.org 70 i 22380This release finally addresses some of the problems that prevent simple running of several games.
Err codemadness.org 70 i 22375 Err codemadness.org 70 i 22376
Err codemadness.org 70 i 22374 This happens for example when an old FNA.dll library comes with the games that doesn't match the API of our native libraries like SDL2, OpenAL, or MojoShader anymore. Some of those cases can be fixed by simply dropping in a newer FNA.dll. fnaify now asks if FNA 17.12 should be automatically added if a known incompatible FNA version is found. You simply answer yes or no.Another blocker happens when the game expects to check the SteamAPI - either from a running Steam process, or a bundled steam_api library. OpenBSD 6.5-current now has steamworks-nosteam in ports, a stub library for Steamworks.NET that prevents games from crashing simply because an API function isn't found. The repo is here. fnaify now finds this library in /usr/local/share/steamstubs and uses it instead of the bundled (full) Steamworks.NET.dll.
Err codemadness.org 70 i 22378
Err codemadness.org 70 i 22377 This may help with any games that use this layer to interact with the SteamAPI, mostly those that can only be obtained via Steam.
Err codemadness.org 70 i 22383Err codemadness.org 70 i 22386 Err codemadness.org 70 i 22387The order of the arguments in the create, start, and stop commands of vmctl(8) has been changed to match a commonly expected style. Manual usage or scripting with vmctl must be adjusted to use the new syntax.
Err codemadness.org 70 i 22385
Err codemadness.org 70 i 22384 For example, the old syntax looked like this:
# vmctl create disk.qcow2 -s 50G
Err codemadness.org 70 i 22390Err codemadness.org 70 i 22392 Err codemadness.org 70 i 22393The new syntax specifies the command options before the argument:
Err codemadness.org 70 i 22391
# vmctl create -s 50G disk.qcow2
Err codemadness.org 70 i 22400Err codemadness.org 70 i 22407 Err codemadness.org 70 i 22408Right now I am a bit unhappy at Fedora for a specific packaging situation, so let me tell you a little story of what I, as a system administrator, would really like distributions to not do.
Err codemadness.org 70 i 22404 Err codemadness.org 70 i 22405
Err codemadness.org 70 i 22401 For reasons beyond the scope of this blog entry, I run a Prometheus and Grafana setup on both my home and office Fedora Linux machines (among other things, it gives me a place to test out various things involving them). When I set this up, I used the official upstream versions of both, because I needed to match what we are running (or would soon be).
Err codemadness.org 70 i 22402 Recently, Fedora decided to package Grafana themselves (as a RPM), and they called this RPM package 'grafana'. Since the two different packages are different versions of the same thing as far as package management tools are concerned, Fedora basically took over the 'grafana' package name from Grafana. This caused my systems to offer to upgrade me from the Grafana.com 'grafana-6.1.5-1' package to the Fedora 'grafana-6.1.6-1.fc29' one, which I actually did after taking reasonable steps to make sure that the Fedora version of 6.1.6 was compatible with the file layouts and so on from the Grafana version of 6.1.5.
Err codemadness.org 70 i 22403 Why is this a problem? It's simple. If you're going to take over a package name from the upstream, you should keep up with the upstream releases. If you take over a package name and don't keep up to date or keep up to date only sporadically, you cause all sorts of heartburn for system administrators who use the package. The least annoying future of this situation is that Fedora has abandoned Grafana at 6.1.6 and I am going to 'upgrade' it with the upstream 6.2.1, which will hopefully be a transparent replacement and not blow up in my face. The most annoying future is that Fedora and Grafana keep ping-ponging versions back and forth, which will make 'dnf upgrade' into a minefield (because it will frequently try to give me a 'grafana' upgrade that I don't want and that would be dangerous to accept). And of course this situation turns Fedora version upgrades into their own minefield, since now I risk an upgrade to Fedora 30 actually reverting the 'grafana' package version on me.
Err codemadness.org 70 i 22406
Err codemadness.org 70 i 22448Err codemadness.org 70 i 22454 Err codemadness.org 70 i 22455DragonFlyBSD lead developer Matthew Dillon has been working on a big VM rework in the name of performance and other kernel improvements recently. Here is a look at how those DragonFlyBSD 5.5-DEVELOPMENT improvements are paying off compared to DragonFlyBSD 5.4 as well as FreeBSD 12 and five Linux distribution releases. With Dillon using an AMD Ryzen Threadripper system, we used that too for this round of BSD vs. Linux performance benchmarks.
Err codemadness.org 70 i 22451 Err codemadness.org 70 i 22452
Err codemadness.org 70 i 22449 The work by Dillon on the VM overhaul and other changes (including more HAMMER2 file-system work) will ultimately culminate with the DragonFlyBSD 5.6 release (well, unless he opts for DragonFlyBSD 6.0 or so). These are benchmarks of the latest DragonFlyBSD 5.5-DEVELOPMENT daily ISO as of this week benchmarked across DragonFlyBSD 5.4.3 stable, FreeBSD 12.0, Ubuntu 19.04, Red Hat Enterprise Linux 8.0, Debian 9.9, Debian Buster, and CentOS 7 1810 as a wide variety of reference points both from newer and older Linux distributions. (As for no Clear Linux reference point for a speedy reference point, it currently has a regression with AMD + Samsung NVMe SSD support on some hardware, including this box, prohibiting the drive from coming up due to a presumed power management issue that is still being resolved.)
Err codemadness.org 70 i 22450 With Matthew Dillon doing much of his development on an AMD Ryzen Threadripper system after he last year proclaimed the greatness of these AMD HEDT CPUs, for this round of testing I also used a Ryzen Threadripper 2990WX with 32 cores / 64 threads. Tests of other AMD/Intel hardware with DragonFlyBSD will come as the next stable release is near and all of the kernel work has settled down. For now it's mostly entertaining our own curiosity how well these DragonFlyBSD optimizations are paying off and how it's increasing the competition against FreeBSD 12 and Linux distributions.
Err codemadness.org 70 i 22453
Err codemadness.org 70 i 22458Err codemadness.org 70 i 22464 Err codemadness.org 70 i 22465Maybe you have been reading recently about the release of OpenBSD 6.5 and wonder, "What are the differences between Linux and OpenBSD?"
Err codemadness.org 70 i 22463
Err codemadness.org 70 i 22459 I've also been there at some point in the past and these are my conclusions.
Err codemadness.org 70 i 22460 They also apply, to some extent, to other BSDs. However, an important disclaimer applies to this article.
Err codemadness.org 70 i 22461 This list is aimed at people who are used to Linux and are curious about OpenBSD. It is written to highlight the most important changes from their perspective, not the absolute most important changes from a technical standpoint.
Err codemadness.org 70 i 22462 Please bear with me.
Err codemadness.org 70 i 22480Err codemadness.org 70 i 22482 Err codemadness.org 70 i 22483We are very happy to announce The NetBSD Foundation Google Summer of Code 2019 projects:
Err codemadness.org 70 i 22481
Err codemadness.org 70 i 22494Err codemadness.org 70 i 22497 Err codemadness.org 70 i 22498The communiting bonding period - where students get in touch with mentors and community - started yesterday. The coding period will start from May 27 until August 19.
Err codemadness.org 70 i 22496
Err codemadness.org 70 i 22495 Please welcome all our students and a big good luck to students and mentors! A big thank to Google and The NetBSD Foundation organization mentors and administrators! Looking forward to a great Google Summer of Code!
Err codemadness.org 70 i 22503Err codemadness.org 70 i 22505 Err codemadness.org 70 i 22506The opening keynote at EuroBSDCon 2016 predicted the future 10 years of BSDs. Amongst all the funny previsions, gnn@FreeBSD said that by 2026 OpenBSD will have its first implementation of SMP. Almost 3 years after this talk, that sounds like a plausible forecast... Why? Where are we? What can we do? Let's dive into the issue!
Err codemadness.org 70 i 22504
Err codemadness.org 70 i 22511Err codemadness.org 70 i 22514 Err codemadness.org 70 i 22515Most of OpenBSD's kernel still runs under a single lock, ze KERNEL_LOCK(). That includes most of the syscalls, most of the interrupt handlers and most of the fault handlers. Most of them, not all of them. Meaning we have collected & fixed bugs while setting up infrastructures and examples. Now this lock remains the principal responsible for the spin % you can observe in top(1) and systat(1).
Err codemadness.org 70 i 22513
Err codemadness.org 70 i 22512 I believe that we opted for a difficult hike when we decided to start removing this lock from the bottom. As a result many SCSI & Network interrupt handlers as well as all Audio & USB ones can be executed without big lock. On the other hand very few syscalls are already or almost ready to be unlocked, as we incorrectly say. This explains why basic primitives like tsleep(9), csignal() and selwakeup() are only receiving attention now that the top of the Network Stack is running (mostly) without big lock.
Err codemadness.org 70 i 22520Err codemadness.org 70 i 22522 Err codemadness.org 70 i 22523In the past years, most of our efforts have been invested into the Network Stack. As I already mentioned it should be ready to be parallelized. However think we should now concentrate on removing the KERNEL_LOCK(), even if the code paths aren't performance critical.
Err codemadness.org 70 i 22521
Err codemadness.org 70 i 22532Err codemadness.org 70 i 22538 Err codemadness.org 70 i 22539This release finally addresses some of the problems that prevent simple running of several games.
Err codemadness.org 70 i 22534 Err codemadness.org 70 i 22535
Err codemadness.org 70 i 22533 This happens for example when an old FNA.dll library comes with the games that doesn't match the API of our native libraries like SDL2, OpenAL, or MojoShader anymore. Some of those cases can be fixed by simply dropping in a newer FNA.dll. fnaify now asks if FNA 17.12 should be automatically added if a known incompatible FNA version is found. You simply answer yes or no.Another blocker happens when the game expects to check the SteamAPI - either from a running Steam process, or a bundled steam_api library. OpenBSD 6.5-current now has steamworks-nosteam in ports, a stub library for Steamworks.NET that prevents games from crashing simply because an API function isn't found. The repo is here. fnaify now finds this library in /usr/local/share/steamstubs and uses it instead of the bundled (full) Steamworks.NET.dll.
Err codemadness.org 70 i 22537
Err codemadness.org 70 i 22536 This may help with any games that use this layer to interact with the SteamAPI, mostly those that can only be obtained via Steam.
Err codemadness.org 70 i 22542Err codemadness.org 70 i 22545 Err codemadness.org 70 i 22546The order of the arguments in the create, start, and stop commands of vmctl(8) has been changed to match a commonly expected style. Manual usage or scripting with vmctl must be adjusted to use the new syntax.
Err codemadness.org 70 i 22544
Err codemadness.org 70 i 22543 For example, the old syntax looked like this:
# vmctl create disk.qcow2 -s 50G
Err codemadness.org 70 i 22549Err codemadness.org 70 i 22551 Err codemadness.org 70 i 22552The new syntax specifies the command options before the argument:
Err codemadness.org 70 i 22550
# vmctl create -s 50G disk.qcow2
Err codemadness.org 70 i 22559Err codemadness.org 70 i 22566 Err codemadness.org 70 i 22567Right now I am a bit unhappy at Fedora for a specific packaging situation, so let me tell you a little story of what I, as a system administrator, would really like distributions to not do.
Err codemadness.org 70 i 22563 Err codemadness.org 70 i 22564
Err codemadness.org 70 i 22560 For reasons beyond the scope of this blog entry, I run a Prometheus and Grafana setup on both my home and office Fedora Linux machines (among other things, it gives me a place to test out various things involving them). When I set this up, I used the official upstream versions of both, because I needed to match what we are running (or would soon be).
Err codemadness.org 70 i 22561 Recently, Fedora decided to package Grafana themselves (as a RPM), and they called this RPM package 'grafana'. Since the two different packages are different versions of the same thing as far as package management tools are concerned, Fedora basically took over the 'grafana' package name from Grafana. This caused my systems to offer to upgrade me from the Grafana.com 'grafana-6.1.5-1' package to the Fedora 'grafana-6.1.6-1.fc29' one, which I actually did after taking reasonable steps to make sure that the Fedora version of 6.1.6 was compatible with the file layouts and so on from the Grafana version of 6.1.5.
Err codemadness.org 70 i 22562 Why is this a problem? It's simple. If you're going to take over a package name from the upstream, you should keep up with the upstream releases. If you take over a package name and don't keep up to date or keep up to date only sporadically, you cause all sorts of heartburn for system administrators who use the package. The least annoying future of this situation is that Fedora has abandoned Grafana at 6.1.6 and I am going to 'upgrade' it with the upstream 6.2.1, which will hopefully be a transparent replacement and not blow up in my face. The most annoying future is that Fedora and Grafana keep ping-ponging versions back and forth, which will make 'dnf upgrade' into a minefield (because it will frequently try to give me a 'grafana' upgrade that I don't want and that would be dangerous to accept). And of course this situation turns Fedora version upgrades into their own minefield, since now I risk an upgrade to Fedora 30 actually reverting the 'grafana' package version on me.
Err codemadness.org 70 i 22565
Err codemadness.org 70 i 22776Err codemadness.org 70 i 22780 Err codemadness.org 70 i 22781Normally we cover news focused on KVM and sometimes Xen, but something very special has happened with their younger cousin in the BSD world, Bhyve. Err codemadness.org 70 i 22777 For those that don’t know, Bhyve (pronounced bee-hive) is the native hypervisor in FreeBSD. It has many powerful features, but one that’s been a pain point for some years now is VGA passthrough. Consumer GPUs have not been useable until very recently despite limited success with enterprise cards. Err codemadness.org 70 i 22778 However, Twitter user Michael Yuji found a workaround that enables passing through a consumer card to any *nix system configured to use X11:
Err codemadness.org 70 i 22779
Err codemadness.org 70 i 22786Err codemadness.org 70 i 22793 Err codemadness.org 70 i 22794All you have to do is add a line pointing the X server to the Bus ID of the passed card and the VM will boot, with acceleration and everything. He theorizes that this may not be possible on windows because of the way it looks for display devices, but it’s a solid start. Err codemadness.org 70 i 22787 As soon as development surrounding VGA passthrough matures on Bhyve, it will become a very attractive alternative to more common tools like Hyper-V and Qemu, because it makes many powerful features available in the host system like jails, boot environments, BSD networking, and tight ZFS integration. For example, you could potentially run your Router, NAS, preferred workstation OS and any number of other things in one box, and only have to spin up a single VM because of the flexibility afforded by jails over Linux-based containers. Err codemadness.org 70 i 22788 The user who found this workaround also announced they’d be writing it up at some point, so stay tuned for details on the process. Err codemadness.org 70 i 22789 It’s been slow going on Bhyve passthrough development for a while, but this new revelation is encouraging. We’ll be closely monitoring the situation and report on any other happenings.
Err codemadness.org 70 i 22790 Err codemadness.org 70 i 22791
Err codemadness.org 70 i 22792
Err codemadness.org 70 i 22797Err codemadness.org 70 i 22801 Err codemadness.org 70 i 22802I use ZFS extensively. ZFS is my favorite file system. I write articles and give lectures about it. I work with it every day. In traditional file systems we use df(1) to determine free space on partitions. We can also use du(1) to count the size of the files in the directory. But it’s different on ZFS and this is the most confusing thing EVER. I always forget which tool reports what disk space usage! Every time somebody asks me, I need to google it. For this reason I decided to document it here - for myself - because if I can’t remember it at least I will not need to google it, as it will be on my blog, but maybe you will also benefit from this blog post if you have the same problem or you are starting your journey with ZFS.
Err codemadness.org 70 i 22798 Err codemadness.org 70 i 22799The understanding of how ZFS is uses space and how to determine which value means what is a crucial thing. I hope thanks to this article I will finally remember it!
Err codemadness.org 70 i 22800
Err codemadness.org 70 i 22809Err codemadness.org 70 i 22815 Err codemadness.org 70 i 22816The OmniOS Community Edition Association is proud to announce the general availability of OmniOS - r151030. Err codemadness.org 70 i 22810 OmniOS is published according to a 6-month release cycle, r151030 LTS takes over from r151028, published in November 2018; and since it is a LTS release it also takes over from r151022. The r151030 LTS release will be supported for 3 Years. It is the first LTS release published by the OmniOS CE Association since taking over the reins from OmniTI in 2017. The next LTS release is scheduled for May 2021. The old stable r151026 release is now end-of-life. See the release schedule for further details. Err codemadness.org 70 i 22811 This is only a small selection of the new features, and bug fixes in the new release; review the release notes for full details. Err codemadness.org 70 i 22812 If you upgrade from r22 and want to see all new features added since then, make sure to also read the release notes for r24, r26 and r28. Err codemadness.org 70 i 22813 The OmniOS team and the illumos community have been very active in creating new features and improving existing ones over the last 6 months.
Err codemadness.org 70 i 22814
Err codemadness.org 70 i 22821Err codemadness.org 70 i 22827 Err codemadness.org 70 i 22828We are pleased to announce the release of pfSense® software version 2.4.4-p3, now available for new installations and upgrades! Err codemadness.org 70 i 22822 pfSense software version 2.4.4-p3 is a maintenance release, bringing a number of security enhancements as well as a handful of fixes for issues present in the 2.4.4-p2 release. Err codemadness.org 70 i 22823 pfSense 2.4.4-RELEASE-p3 updates and installation images are available now! Err codemadness.org 70 i 22824 To see a complete list of changes and find more detail, see the Release Notes. Err codemadness.org 70 i 22825 We had hoped to bring you this release a few days earlier, but given the announcement last Tuesday of the Intel Microarchitectural Data Sampling (MDS) issue, we did not have sufficient time to fully incorporate those corrections and properly test for release on Thursday. We felt that it was worth delaying for a few days, rather than making multiple releases within a week.
Err codemadness.org 70 i 22826
Err codemadness.org 70 i 22833Err codemadness.org 70 i 22839 Err codemadness.org 70 i 22840Due to the significant nature of the changes in 2.4.4 and later, Err codemadness.org 70 i 22834 warnings and error messages, particularly from PHP and package updates, are likely to occur during the upgrade process. In nearly all cases these errors are a harmless side effect of the changes between FreeBSD 11.1 and 11.2 and between PHP 5.6 and PHP 7.2. Err codemadness.org 70 i 22835 Always take a backup of the firewall configuration prior to any major change to the firewall, such as an upgrade. Err codemadness.org 70 i 22836 Do not update packages before upgrading pfSense! Either remove all packages or do not update packages before running the upgrade. Err codemadness.org 70 i 22837 The upgrade will take several minutes to complete. The exact time varies based on download speed, hardware speed, and other factors such installed packages. Be patient during the upgrade and allow the firewall enough time to complete the entire process. After the update packages finish downloading it could take 10-20 minutes or more until the upgrade process ends. The firewall may reboot several times during the upgrade process. Monitor the upgrade from the firewall console for the most accurate view.
Err codemadness.org 70 i 22838
Err codemadness.org 70 i 22845Err codemadness.org 70 i 22849 Err codemadness.org 70 i 22850The NetBSD Project is pleased to announce NetBSD 8.1, the first update of the NetBSD 8 release branch. It represents a selected subset of fixes deemed important for security or stability reasons, as well as new features and enhancements.
Err codemadness.org 70 i 22846 Err codemadness.org 70 i 22847Some highlights of the 8.1 release are:
Err codemadness.org 70 i 22848
Err codemadness.org 70 i 22883Err codemadness.org 70 i 22888 Err codemadness.org 70 i 22889What if you could have a server OS that had built in RAID, NAS and SAN functionality, and could manage packages, containers and VMs in a GUI? What if that server OS was also free to download and install? Wouldn’t that be kind of awesome? Wouldn’t that be FreeNAS? Err codemadness.org 70 i 22884 FreeNAS is the world’s number one, open source storage OS, but it also comes equipped with all the jails, plugins, and VMs you need to run additional server-level services for things like email and web site hosting. File, Block, and even Object storage is all built-in and can be enabled with a few clicks. The ZFS file system scales to more drives than you could ever buy, with no limits for dataset sizes, snapshots, and restores. Err codemadness.org 70 i 22885 FreeNAS is also 100% FreeBSD. This is the OS used in the Netflix CDN, your PS4, and the basis for iOS. Set up a jail and get started downloading packages like Apache or NGINX for web hosting or Postfix for email service. Err codemadness.org 70 i 22886 Just released, our new TrueCommand management platform also streamlines alerts and enables multi-system monitoring.
Err codemadness.org 70 i 22887
Err codemadness.org 70 i 22936Err codemadness.org 70 i 22940 Err codemadness.org 70 i 22941Normally we cover news focused on KVM and sometimes Xen, but something very special has happened with their younger cousin in the BSD world, Bhyve. Err codemadness.org 70 i 22937 For those that don’t know, Bhyve (pronounced bee-hive) is the native hypervisor in FreeBSD. It has many powerful features, but one that’s been a pain point for some years now is VGA passthrough. Consumer GPUs have not been useable until very recently despite limited success with enterprise cards. Err codemadness.org 70 i 22938 However, Twitter user Michael Yuji found a workaround that enables passing through a consumer card to any *nix system configured to use X11:
Err codemadness.org 70 i 22939
Err codemadness.org 70 i 22946Err codemadness.org 70 i 22953 Err codemadness.org 70 i 22954All you have to do is add a line pointing the X server to the Bus ID of the passed card and the VM will boot, with acceleration and everything. He theorizes that this may not be possible on windows because of the way it looks for display devices, but it’s a solid start. Err codemadness.org 70 i 22947 As soon as development surrounding VGA passthrough matures on Bhyve, it will become a very attractive alternative to more common tools like Hyper-V and Qemu, because it makes many powerful features available in the host system like jails, boot environments, BSD networking, and tight ZFS integration. For example, you could potentially run your Router, NAS, preferred workstation OS and any number of other things in one box, and only have to spin up a single VM because of the flexibility afforded by jails over Linux-based containers. Err codemadness.org 70 i 22948 The user who found this workaround also announced they’d be writing it up at some point, so stay tuned for details on the process. Err codemadness.org 70 i 22949 It’s been slow going on Bhyve passthrough development for a while, but this new revelation is encouraging. We’ll be closely monitoring the situation and report on any other happenings.
Err codemadness.org 70 i 22950 Err codemadness.org 70 i 22951
Err codemadness.org 70 i 22952
Err codemadness.org 70 i 22957Err codemadness.org 70 i 22961 Err codemadness.org 70 i 22962I use ZFS extensively. ZFS is my favorite file system. I write articles and give lectures about it. I work with it every day. In traditional file systems we use df(1) to determine free space on partitions. We can also use du(1) to count the size of the files in the directory. But it’s different on ZFS and this is the most confusing thing EVER. I always forget which tool reports what disk space usage! Every time somebody asks me, I need to google it. For this reason I decided to document it here - for myself - because if I can’t remember it at least I will not need to google it, as it will be on my blog, but maybe you will also benefit from this blog post if you have the same problem or you are starting your journey with ZFS.
Err codemadness.org 70 i 22958 Err codemadness.org 70 i 22959The understanding of how ZFS is uses space and how to determine which value means what is a crucial thing. I hope thanks to this article I will finally remember it!
Err codemadness.org 70 i 22960
Err codemadness.org 70 i 22969Err codemadness.org 70 i 22975 Err codemadness.org 70 i 22976The OmniOS Community Edition Association is proud to announce the general availability of OmniOS - r151030. Err codemadness.org 70 i 22970 OmniOS is published according to a 6-month release cycle, r151030 LTS takes over from r151028, published in November 2018; and since it is a LTS release it also takes over from r151022. The r151030 LTS release will be supported for 3 Years. It is the first LTS release published by the OmniOS CE Association since taking over the reins from OmniTI in 2017. The next LTS release is scheduled for May 2021. The old stable r151026 release is now end-of-life. See the release schedule for further details. Err codemadness.org 70 i 22971 This is only a small selection of the new features, and bug fixes in the new release; review the release notes for full details. Err codemadness.org 70 i 22972 If you upgrade from r22 and want to see all new features added since then, make sure to also read the release notes for r24, r26 and r28. Err codemadness.org 70 i 22973 The OmniOS team and the illumos community have been very active in creating new features and improving existing ones over the last 6 months.
Err codemadness.org 70 i 22974
Err codemadness.org 70 i 22981Err codemadness.org 70 i 22987 Err codemadness.org 70 i 22988We are pleased to announce the release of pfSense® software version 2.4.4-p3, now available for new installations and upgrades! Err codemadness.org 70 i 22982 pfSense software version 2.4.4-p3 is a maintenance release, bringing a number of security enhancements as well as a handful of fixes for issues present in the 2.4.4-p2 release. Err codemadness.org 70 i 22983 pfSense 2.4.4-RELEASE-p3 updates and installation images are available now! Err codemadness.org 70 i 22984 To see a complete list of changes and find more detail, see the Release Notes. Err codemadness.org 70 i 22985 We had hoped to bring you this release a few days earlier, but given the announcement last Tuesday of the Intel Microarchitectural Data Sampling (MDS) issue, we did not have sufficient time to fully incorporate those corrections and properly test for release on Thursday. We felt that it was worth delaying for a few days, rather than making multiple releases within a week.
Err codemadness.org 70 i 22986
Err codemadness.org 70 i 22993Err codemadness.org 70 i 22999 Err codemadness.org 70 i 23000Due to the significant nature of the changes in 2.4.4 and later, Err codemadness.org 70 i 22994 warnings and error messages, particularly from PHP and package updates, are likely to occur during the upgrade process. In nearly all cases these errors are a harmless side effect of the changes between FreeBSD 11.1 and 11.2 and between PHP 5.6 and PHP 7.2. Err codemadness.org 70 i 22995 Always take a backup of the firewall configuration prior to any major change to the firewall, such as an upgrade. Err codemadness.org 70 i 22996 Do not update packages before upgrading pfSense! Either remove all packages or do not update packages before running the upgrade. Err codemadness.org 70 i 22997 The upgrade will take several minutes to complete. The exact time varies based on download speed, hardware speed, and other factors such installed packages. Be patient during the upgrade and allow the firewall enough time to complete the entire process. After the update packages finish downloading it could take 10-20 minutes or more until the upgrade process ends. The firewall may reboot several times during the upgrade process. Monitor the upgrade from the firewall console for the most accurate view.
Err codemadness.org 70 i 22998
Err codemadness.org 70 i 23005Err codemadness.org 70 i 23009 Err codemadness.org 70 i 23010The NetBSD Project is pleased to announce NetBSD 8.1, the first update of the NetBSD 8 release branch. It represents a selected subset of fixes deemed important for security or stability reasons, as well as new features and enhancements.
Err codemadness.org 70 i 23006 Err codemadness.org 70 i 23007Some highlights of the 8.1 release are:
Err codemadness.org 70 i 23008
Err codemadness.org 70 i 23043Err codemadness.org 70 i 23048 Err codemadness.org 70 i 23049What if you could have a server OS that had built in RAID, NAS and SAN functionality, and could manage packages, containers and VMs in a GUI? What if that server OS was also free to download and install? Wouldn’t that be kind of awesome? Wouldn’t that be FreeNAS? Err codemadness.org 70 i 23044 FreeNAS is the world’s number one, open source storage OS, but it also comes equipped with all the jails, plugins, and VMs you need to run additional server-level services for things like email and web site hosting. File, Block, and even Object storage is all built-in and can be enabled with a few clicks. The ZFS file system scales to more drives than you could ever buy, with no limits for dataset sizes, snapshots, and restores. Err codemadness.org 70 i 23045 FreeNAS is also 100% FreeBSD. This is the OS used in the Netflix CDN, your PS4, and the basis for iOS. Set up a jail and get started downloading packages like Apache or NGINX for web hosting or Postfix for email service. Err codemadness.org 70 i 23046 Just released, our new TrueCommand management platform also streamlines alerts and enables multi-system monitoring.
Err codemadness.org 70 i 23047
Err codemadness.org 70 i 23367Err codemadness.org 70 i 23369 Err codemadness.org 70 i 23370We have released a new OpenIndiana Hipster snapshot 2019.04. The noticeable changes:
Err codemadness.org 70 i 23368
Firefox was updated to 60.6.3 ESR
Virtualbox packages were added (including guest additions)
Mate was updated to 1.22
IPS has received updates from OmniOS CE and Oracle IPS repos, including automatic boot environment naming
Some OI-specific applications have been ported from Python 2.7/GTK 2 to Python 3.5/GTK 3
Quick Demo Video: https://www.youtube.com/watch?v=tQ0-fo3XNrg
Err codemadness.org 70 i 23391Err codemadness.org 70 i 23395 Err codemadness.org 70 i 23396FreeNAS uses the OpenZFS (ZFS) file system, which handles both disk and volume management. ZFS offers RAID options mirror, stripe, and its own parity distribution called RAIDZ that functions like RAID5 on hardware RAID. The file system is extremely flexible and secure, with various drive combinations, checksums, snapshots, and replication all possible. For a deeper dive on ZFS technology, read the ZFS Primer section of the FreeNAS documentation.
Err codemadness.org 70 i 23392 Err codemadness.org 70 i 23393SUGGEST LAYOUT attempts to balance usable capacity and redundancy by automatically choosing an ideal vdev layout for the number of available disks.
Err codemadness.org 70 i 23394
Err codemadness.org 70 i 23422Err codemadness.org 70 i 23426 Err codemadness.org 70 i 23427The goal of the root of trust should be to verify that the software installed in every component of the hardware is the software that was intended. This way you can know without a doubt and verify if hardware has been hacked. Since we have very little to no visibility into the code running in a lot of places in our hardware it is hard to do this. How do we really know that the firmware in a component is not vulnerable or that is doesn’t have any backdoors? Well we can’t. Not unless it was all open source. Err codemadness.org 70 i 23423 Every cloud and vendor seems to have their own way of doing a root of trust. Microsoft has Cerberus, Google has Titan, and Amazon has Nitro. These seem to assume an explicit amount of trust in the proprietary code (the code we cannot see). This leaves me with not a great feeling. Wouldn’t it be better to be able to use all open source code? Then we could verify without a doubt that the code you can read and build yourself is the same code running on hardware for all the various places we have firmware. We could then verify that a machine was in a correct state without a doubt of it being vulnerable or with a backdoor. Err codemadness.org 70 i 23424 It makes me wonder what the smaller cloud providers like DigitalOcean or Packet have for a root of trust. Often times we only hear of these projects from the big three or five.
Err codemadness.org 70 i 23425
Err codemadness.org 70 i 23432Err codemadness.org 70 i 23434 Err codemadness.org 70 i 23435This update addresses several privilege escalation issues in the access control implementation and new memory disclosure issues in Intel CPUs. We would like to thank Arnaud Cordier and Bill Marquette for the top-notch reports and coordination.
Err codemadness.org 70 i 23433
Here are the full patch notes:
system: address CVE-2019-11816 privilege escalation bugs[1] (reported by Arnaud Cordier)
system: /etc/hosts generation without interfacehasgateway()
system: show correct timestamp in config restore save message (contributed by nhirokinet)
system: list the commands for the pluginctl utility when n+ argument is given
system: introduce and use userIsAdmin() helper function instead of checking for 'page-all' privilege directly
system: use absolute path in widget ACLs (reported by Netgate)
system: RRD-related cleanups for less code exposure
interfaces: add EN DUID Generation using OPNsense PEN (contributed by Team Rebellion)
interfaces: replace legacygetallinterface_addresses() usage
firewall: fix port validation in aliases with leading / trailing spaces
firewall: fix outbound NAT translation display in overview page
firewall: prevent CARP outgoing packets from using the configured gateway
firewall: use CARP net.inet.carp.demotion to control current demotion in status page
firewall: stop live log poller on error result
dhcpd: change rule priority to 1 to avoid bogon clash
dnsmasq: only admins may edit custom options field
firmware: use insecure mode for base and kernel sets when package fingerprints are disabled
firmware: add optional device support for base and kernel sets
firmware: add Hostcentral mirror (HTTP, Melbourne, Australia)
ipsec: always reset rightallowany to default when writing configuration
lang: say "hola" to Spanish as the newest available GUI language
lang: updates for Chinese, Czech, Japanese, German, French, Russian and Portuguese
network time: only admins may edit custom options field
openvpn: call openvpnrefreshcrls() indirectly via plugin_configure() for less code exposure
openvpn: only admins may edit custom options field to prevent privilege escalation (reported by Bill Marquette)
openvpn: remove custom options field from wizard
unbound: only admins may edit custom options field
wizard: translate typehint as well
plugins: os-freeradius 1.9.3 fixes string interpolation in LDAP filters (contributed by theq86)
plugins: os-nginx 1.12[2]
plugins: os-theme-cicada 1.17 (contributed by Team Rebellion)
plugins: os-theme-tukan 1.17 (contributed by Team Rebellion)
src: timezone database information update[3]
src: install(1) broken with partially matching relative paths[4]
src: microarchitectural Data Sampling (MDS) mitigation[5]
ports: carootnss 3.44
ports: php 7.2.18[6]
ports: sqlite 3.28.0[7]
ports: strongswan custom XAuth generic patch removed
Err codemadness.org 70 i 23522Err codemadness.org 70 i 23526 Err codemadness.org 70 i 23527Earlier this week I imported a port for WireGuard into the OpenBSD ports tree. At the moment we have the userland daemon and the tools available. The in-kernel implementation is only available for Linux. At the time of writing there are packages available for -current. Err codemadness.org 70 i 23523 Jason A. Donenfeld (WireGuard author) has worked to support OpenBSD in WireGuard and as such his post on ports@ last year got me interested in WireGuard, since then others have toyed with WireGuard on OpenBSD before and as such I've used Ted's article as a reference. Note however that some of the options mentioned there are no longer valid. Also, I'll be using two OpenBSD peers here. Err codemadness.org 70 i 23524 The setup will be as follows: two OpenBSD peers, of which we'll dub wg1 the server and wg2 the client. The WireGuard service on wg1 is listening on 100.64.4.3:51820.
Err codemadness.org 70 i 23525
Err codemadness.org 70 i 23532Err codemadness.org 70 i 23534 Err codemadness.org 70 i 23535WireGuard (cl)aims to be easier to setup and faster than OpenVPN and while I haven't been able to verify the latter, the first is certainly true...once you've figured it out. Most documentation out there is for Linux so I had to figure out the wireguardgo service and the tun parameters. But all in all, sure, it's easier. Especially the client configuration on iOS which I didn't cover here because it's essentially pkgadd libqrencode ; cat client.conf | qrencode -t ansiutf8, scan the code with the WireGuard app and you're good to go. What is particularly neat is that WireGuard on iOS supports Always-on.
Err codemadness.org 70 i 23533
Err codemadness.org 70 i 23608Err codemadness.org 70 i 23610 Err codemadness.org 70 i 23611We have released a new OpenIndiana Hipster snapshot 2019.04. The noticeable changes:
Err codemadness.org 70 i 23609
Firefox was updated to 60.6.3 ESR
Virtualbox packages were added (including guest additions)
Mate was updated to 1.22
IPS has received updates from OmniOS CE and Oracle IPS repos, including automatic boot environment naming
Some OI-specific applications have been ported from Python 2.7/GTK 2 to Python 3.5/GTK 3
Quick Demo Video: https://www.youtube.com/watch?v=tQ0-fo3XNrg
Err codemadness.org 70 i 23632Err codemadness.org 70 i 23636 Err codemadness.org 70 i 23637FreeNAS uses the OpenZFS (ZFS) file system, which handles both disk and volume management. ZFS offers RAID options mirror, stripe, and its own parity distribution called RAIDZ that functions like RAID5 on hardware RAID. The file system is extremely flexible and secure, with various drive combinations, checksums, snapshots, and replication all possible. For a deeper dive on ZFS technology, read the ZFS Primer section of the FreeNAS documentation.
Err codemadness.org 70 i 23633 Err codemadness.org 70 i 23634SUGGEST LAYOUT attempts to balance usable capacity and redundancy by automatically choosing an ideal vdev layout for the number of available disks.
Err codemadness.org 70 i 23635
Err codemadness.org 70 i 23663Err codemadness.org 70 i 23667 Err codemadness.org 70 i 23668The goal of the root of trust should be to verify that the software installed in every component of the hardware is the software that was intended. This way you can know without a doubt and verify if hardware has been hacked. Since we have very little to no visibility into the code running in a lot of places in our hardware it is hard to do this. How do we really know that the firmware in a component is not vulnerable or that is doesn’t have any backdoors? Well we can’t. Not unless it was all open source. Err codemadness.org 70 i 23664 Every cloud and vendor seems to have their own way of doing a root of trust. Microsoft has Cerberus, Google has Titan, and Amazon has Nitro. These seem to assume an explicit amount of trust in the proprietary code (the code we cannot see). This leaves me with not a great feeling. Wouldn’t it be better to be able to use all open source code? Then we could verify without a doubt that the code you can read and build yourself is the same code running on hardware for all the various places we have firmware. We could then verify that a machine was in a correct state without a doubt of it being vulnerable or with a backdoor. Err codemadness.org 70 i 23665 It makes me wonder what the smaller cloud providers like DigitalOcean or Packet have for a root of trust. Often times we only hear of these projects from the big three or five.
Err codemadness.org 70 i 23666
Err codemadness.org 70 i 23673Err codemadness.org 70 i 23675 Err codemadness.org 70 i 23676This update addresses several privilege escalation issues in the access control implementation and new memory disclosure issues in Intel CPUs. We would like to thank Arnaud Cordier and Bill Marquette for the top-notch reports and coordination.
Err codemadness.org 70 i 23674
Here are the full patch notes:
system: address CVE-2019-11816 privilege escalation bugs[1] (reported by Arnaud Cordier)
system: /etc/hosts generation without interfacehasgateway()
system: show correct timestamp in config restore save message (contributed by nhirokinet)
system: list the commands for the pluginctl utility when n+ argument is given
system: introduce and use userIsAdmin() helper function instead of checking for 'page-all' privilege directly
system: use absolute path in widget ACLs (reported by Netgate)
system: RRD-related cleanups for less code exposure
interfaces: add EN DUID Generation using OPNsense PEN (contributed by Team Rebellion)
interfaces: replace legacygetallinterface_addresses() usage
firewall: fix port validation in aliases with leading / trailing spaces
firewall: fix outbound NAT translation display in overview page
firewall: prevent CARP outgoing packets from using the configured gateway
firewall: use CARP net.inet.carp.demotion to control current demotion in status page
firewall: stop live log poller on error result
dhcpd: change rule priority to 1 to avoid bogon clash
dnsmasq: only admins may edit custom options field
firmware: use insecure mode for base and kernel sets when package fingerprints are disabled
firmware: add optional device support for base and kernel sets
firmware: add Hostcentral mirror (HTTP, Melbourne, Australia)
ipsec: always reset rightallowany to default when writing configuration
lang: say "hola" to Spanish as the newest available GUI language
lang: updates for Chinese, Czech, Japanese, German, French, Russian and Portuguese
network time: only admins may edit custom options field
openvpn: call openvpnrefreshcrls() indirectly via plugin_configure() for less code exposure
openvpn: only admins may edit custom options field to prevent privilege escalation (reported by Bill Marquette)
openvpn: remove custom options field from wizard
unbound: only admins may edit custom options field
wizard: translate typehint as well
plugins: os-freeradius 1.9.3 fixes string interpolation in LDAP filters (contributed by theq86)
plugins: os-nginx 1.12[2]
plugins: os-theme-cicada 1.17 (contributed by Team Rebellion)
plugins: os-theme-tukan 1.17 (contributed by Team Rebellion)
src: timezone database information update[3]
src: install(1) broken with partially matching relative paths[4]
src: microarchitectural Data Sampling (MDS) mitigation[5]
ports: carootnss 3.44
ports: php 7.2.18[6]
ports: sqlite 3.28.0[7]
ports: strongswan custom XAuth generic patch removed
Err codemadness.org 70 i 23763Err codemadness.org 70 i 23767 Err codemadness.org 70 i 23768Earlier this week I imported a port for WireGuard into the OpenBSD ports tree. At the moment we have the userland daemon and the tools available. The in-kernel implementation is only available for Linux. At the time of writing there are packages available for -current. Err codemadness.org 70 i 23764 Jason A. Donenfeld (WireGuard author) has worked to support OpenBSD in WireGuard and as such his post on ports@ last year got me interested in WireGuard, since then others have toyed with WireGuard on OpenBSD before and as such I've used Ted's article as a reference. Note however that some of the options mentioned there are no longer valid. Also, I'll be using two OpenBSD peers here. Err codemadness.org 70 i 23765 The setup will be as follows: two OpenBSD peers, of which we'll dub wg1 the server and wg2 the client. The WireGuard service on wg1 is listening on 100.64.4.3:51820.
Err codemadness.org 70 i 23766
Err codemadness.org 70 i 23773Err codemadness.org 70 i 23775 Err codemadness.org 70 i 23776WireGuard (cl)aims to be easier to setup and faster than OpenVPN and while I haven't been able to verify the latter, the first is certainly true...once you've figured it out. Most documentation out there is for Linux so I had to figure out the wireguardgo service and the tun parameters. But all in all, sure, it's easier. Especially the client configuration on iOS which I didn't cover here because it's essentially pkgadd libqrencode ; cat client.conf | qrencode -t ansiutf8, scan the code with the WireGuard app and you're good to go. What is particularly neat is that WireGuard on iOS supports Always-on.
Err codemadness.org 70 i 23774
Err codemadness.org 70 i 23982Err codemadness.org 70 i 23991 Err codemadness.org 70 i 23992YES it’s real! Err codemadness.org 70 i 23983 I’m using the Linux subsystem on Windows, as it’s easier to build this Qemu tree from source. I’m using Debian, but these steps will work on other systems that use Debian as a base. Err codemadness.org 70 i 23984 first thing first, you need to get your system with the needed pre-requisites to compile Err codemadness.org 70 i 23985 Great with those in place, now clone Artyom Tarasenko’s source repository Err codemadness.org 70 i 23986 Since the frame buffer apparently isn’t quite working just yet, I configure for something more like a text mode build. Err codemadness.org 70 i 23987 Now for me, GCC 7 didn’t build the source cleanly. I had to make a change to the file config-host.mak and remove all references to -Werror. Also I removed the sound hooks, as we won’t need them. Err codemadness.org 70 i 23988 Now you can build Qemu. Err codemadness.org 70 i 23989 Okay, all being well you now have a Qemu. Now following the steps from Artyom Tarasenko’s blog post, we can get started on the install!
Err codemadness.org 70 i 23990
Err codemadness.org 70 i 24001Err codemadness.org 70 i 24006 Err codemadness.org 70 i 24007Hundreds of thousands of FreeNAS and TrueNAS systems are deployed around the world, with many sites having dozens of systems. Managing multiple systems individually can be time-consuming. iXsystems has responded to the challenge by creating a “single pane of glass” application to simplify the scaling of data, drive management, and administration of iXsystems NAS platforms. We are proud to introduce TrueCommand. Err codemadness.org 70 i 24002 TrueCommand is a ZFS-aware management application that manages TrueNAS and FreeNAS systems. Err codemadness.org 70 i 24003 The public Beta of TrueCommand is available for download now. TrueCommand can be used with small iXsystems NAS fleets for free. Licenses can be purchased for large-scale deployments and enterprise support. Err codemadness.org 70 i 24004 TrueCommand expands on the ease of use and power of TrueNAS and FreeNAS systems with multi-system management and reporting.
Err codemadness.org 70 i 24005
Err codemadness.org 70 i 24014Err codemadness.org 70 i 24022 Err codemadness.org 70 i 24023This is the fourth release of Unleashed - an operating system fork of illumos. For more information about Unleashed itself and the download links, see our website. Err codemadness.org 70 i 24015 As one might expect, this release removes a few things. Err codemadness.org 70 i 24016 The most notable being the removal of ksh93 along with all its libs. Err codemadness.org 70 i 24017 As far as libc interfaces are concerned, a number of non-standard functions were removed. In general, they have been replaced by the standards-compliant versions. (getgrentr, fgetgrentr, getgrgidr, getgrnamr, ttynamer, getloginr, shmdt, sigwait, gethostname, putmsg, putpmsg, and getaddrinfo) Err codemadness.org 70 i 24018 Additionally, wordexp and wordfree have been removed from libc. Even though they are technically required by POSIX, software doesn't seem to use them. Because of the fragile implementation (shelling out), we took the OpenBSD approach and just removed them. Err codemadness.org 70 i 24019 The default compilation environment now includes XOPENSOURCE=700 and EXTENSIONS. Additionally, all applications now use 64-bit file offsets, making use of LARGEFILESOURCE, LARGEFILE64SOURCE, and FILEOFFSET_BITS unnecessary. Err codemadness.org 70 i 24020 Last but not least, nightly.sh is no more. In short, to build one simply runs 'make'. (See README for detailed build instructions.)
Err codemadness.org 70 i 24021
Err codemadness.org 70 i 24028Err codemadness.org 70 i 24030 Err codemadness.org 70 i 24031Why did we decide to fork illumos? After all, there are already many illumos distributions available to choose from. We felt we could do better than any of them by taking a more aggressive stance toward compatibility and reducing cruft from code and community interactions alike.
Err codemadness.org 70 i 24029
Err codemadness.org 70 i 24036Err codemadness.org 70 i 24040 Err codemadness.org 70 i 24041Upstream describes LLDB as a next generation, high-performance debugger. It is built on top of LLVM/Clang toolchain, and features great integration with it. At the moment, it primarily supports debugging C, C++ and ObjC code, and there is interest in extending it to more languages. Err codemadness.org 70 i 24037 In February, I have started working on LLDB, as contracted by the NetBSD Foundation. So far I've been working on reenabling continuous integration, squashing bugs, improving NetBSD core file support and updating NetBSD distribution to LLVM 8 (which is still stalled by unresolved regressions in inline assembly syntax). You can read more about that in my Mar 2019 report. Err codemadness.org 70 i 24038 In April, my main focus was on fixing and enhancing the support for reading and writing CPU registers. In this report, I'd like to shortly summarize what I have done, what I have learned in the process and what I still need to do.
Err codemadness.org 70 i 24039
Err codemadness.org 70 i 24046Err codemadness.org 70 i 24053 Err codemadness.org 70 i 24054My work continues with the two milestones from last month, plus a third that's closely related: Err codemadness.org 70 i 24047 Add support for FPU registers support for NetBSD/i386 and NetBSD/amd64. Err codemadness.org 70 i 24048 Support XSAVE, XSAVEOPT, ... registers in core(5) files on NetBSD/amd64. Err codemadness.org 70 i 24049 Add support for Debug Registers support for NetBSD/i386 and NetBSD/amd64. Err codemadness.org 70 i 24050 The most important point right now is deciding on the format for passing the remaining registers, and implementing the missing ptrace interface kernel-side. The support for core files should follow using the same format then. Err codemadness.org 70 i 24051 Userland-side, I will work on adding matching ATF tests for ptrace features and implement LLDB side of support for the new ptrace interface and core file notes. Afterwards, I will start working on improving support for the same things on 32-bit (i386) executables.
Err codemadness.org 70 i 24052
Err codemadness.org 70 i 24059Err codemadness.org 70 i 24061 Err codemadness.org 70 i 24062Yesterday I wrote that V7 ed read its terminal input in cooked mode a line at a time, which was an efficient, low-CPU design that was important on V7's small and low-power hardware. Then in comments, frankg pointed out that I was wrong about part of that, namely about how ed read its input.
Err codemadness.org 70 i 24060
Err codemadness.org 70 i 24067Err codemadness.org 70 i 24077 Err codemadness.org 70 i 24078Reading this section of the source code for ed taught me that it has an interesting, undocumented, and entirely characteristic little behavior. Officially, ed commands that have you enter new text have that new text terminate by a . on a line by itself:
Err codemadness.org 70 i 24068 Err codemadness.org 70 i 24069In other words, it turns a single line with '.' into an EOF. The consequence of this is that if you type a real EOF at the start of a line, you get the same result, thus saving you one character (you use Control-D instead of '.' plus newline). This is very V7 Unix behavior, including the lack of documentation.
Err codemadness.org 70 i 24070 Err codemadness.org 70 i 24071This is also a natural behavior in one sense. A proper program has to react to EOF here in some way, and it might as well do so by ending the input mode. It's also natural to go on to try reading from the terminal again for subsequent commands; if this was a real and persistent EOF, for example because the pty closed, you'll just get EOF again and eventually quit. V7 ed is slightly unusual here in that it deliberately converts '.' by itself to EOF, instead of signaling this in a different way, but in a way that's also the simplest approach; if you have to have some signal for each case and you're going to treat them the same, you might as well have the same signal for both cases.
Err codemadness.org 70 i 24072 Err codemadness.org 70 i 24073Modern versions of ed appear to faithfully reimplement this convenient behavior, although they don't appear to document it. I haven't checked OpenBSD, but both FreeBSD ed and GNU ed work like this in a quick test. I haven't checked their source code to see if they implement it the same way.
Err codemadness.org 70 i 24074 Err codemadness.org 70 i 24075
Err codemadness.org 70 i 24076
Err codemadness.org 70 i 24127Err codemadness.org 70 i 24136 Err codemadness.org 70 i 24137YES it’s real! Err codemadness.org 70 i 24128 I’m using the Linux subsystem on Windows, as it’s easier to build this Qemu tree from source. I’m using Debian, but these steps will work on other systems that use Debian as a base. Err codemadness.org 70 i 24129 first thing first, you need to get your system with the needed pre-requisites to compile Err codemadness.org 70 i 24130 Great with those in place, now clone Artyom Tarasenko’s source repository Err codemadness.org 70 i 24131 Since the frame buffer apparently isn’t quite working just yet, I configure for something more like a text mode build. Err codemadness.org 70 i 24132 Now for me, GCC 7 didn’t build the source cleanly. I had to make a change to the file config-host.mak and remove all references to -Werror. Also I removed the sound hooks, as we won’t need them. Err codemadness.org 70 i 24133 Now you can build Qemu. Err codemadness.org 70 i 24134 Okay, all being well you now have a Qemu. Now following the steps from Artyom Tarasenko’s blog post, we can get started on the install!
Err codemadness.org 70 i 24135
Err codemadness.org 70 i 24146Err codemadness.org 70 i 24151 Err codemadness.org 70 i 24152Hundreds of thousands of FreeNAS and TrueNAS systems are deployed around the world, with many sites having dozens of systems. Managing multiple systems individually can be time-consuming. iXsystems has responded to the challenge by creating a “single pane of glass” application to simplify the scaling of data, drive management, and administration of iXsystems NAS platforms. We are proud to introduce TrueCommand. Err codemadness.org 70 i 24147 TrueCommand is a ZFS-aware management application that manages TrueNAS and FreeNAS systems. Err codemadness.org 70 i 24148 The public Beta of TrueCommand is available for download now. TrueCommand can be used with small iXsystems NAS fleets for free. Licenses can be purchased for large-scale deployments and enterprise support. Err codemadness.org 70 i 24149 TrueCommand expands on the ease of use and power of TrueNAS and FreeNAS systems with multi-system management and reporting.
Err codemadness.org 70 i 24150
Err codemadness.org 70 i 24159Err codemadness.org 70 i 24167 Err codemadness.org 70 i 24168This is the fourth release of Unleashed - an operating system fork of illumos. For more information about Unleashed itself and the download links, see our website. Err codemadness.org 70 i 24160 As one might expect, this release removes a few things. Err codemadness.org 70 i 24161 The most notable being the removal of ksh93 along with all its libs. Err codemadness.org 70 i 24162 As far as libc interfaces are concerned, a number of non-standard functions were removed. In general, they have been replaced by the standards-compliant versions. (getgrentr, fgetgrentr, getgrgidr, getgrnamr, ttynamer, getloginr, shmdt, sigwait, gethostname, putmsg, putpmsg, and getaddrinfo) Err codemadness.org 70 i 24163 Additionally, wordexp and wordfree have been removed from libc. Even though they are technically required by POSIX, software doesn't seem to use them. Because of the fragile implementation (shelling out), we took the OpenBSD approach and just removed them. Err codemadness.org 70 i 24164 The default compilation environment now includes XOPENSOURCE=700 and EXTENSIONS. Additionally, all applications now use 64-bit file offsets, making use of LARGEFILESOURCE, LARGEFILE64SOURCE, and FILEOFFSET_BITS unnecessary. Err codemadness.org 70 i 24165 Last but not least, nightly.sh is no more. In short, to build one simply runs 'make'. (See README for detailed build instructions.)
Err codemadness.org 70 i 24166
Err codemadness.org 70 i 24173Err codemadness.org 70 i 24175 Err codemadness.org 70 i 24176Why did we decide to fork illumos? After all, there are already many illumos distributions available to choose from. We felt we could do better than any of them by taking a more aggressive stance toward compatibility and reducing cruft from code and community interactions alike.
Err codemadness.org 70 i 24174
Err codemadness.org 70 i 24181Err codemadness.org 70 i 24185 Err codemadness.org 70 i 24186Upstream describes LLDB as a next generation, high-performance debugger. It is built on top of LLVM/Clang toolchain, and features great integration with it. At the moment, it primarily supports debugging C, C++ and ObjC code, and there is interest in extending it to more languages. Err codemadness.org 70 i 24182 In February, I have started working on LLDB, as contracted by the NetBSD Foundation. So far I've been working on reenabling continuous integration, squashing bugs, improving NetBSD core file support and updating NetBSD distribution to LLVM 8 (which is still stalled by unresolved regressions in inline assembly syntax). You can read more about that in my Mar 2019 report. Err codemadness.org 70 i 24183 In April, my main focus was on fixing and enhancing the support for reading and writing CPU registers. In this report, I'd like to shortly summarize what I have done, what I have learned in the process and what I still need to do.
Err codemadness.org 70 i 24184
Err codemadness.org 70 i 24191Err codemadness.org 70 i 24198 Err codemadness.org 70 i 24199My work continues with the two milestones from last month, plus a third that's closely related: Err codemadness.org 70 i 24192 Add support for FPU registers support for NetBSD/i386 and NetBSD/amd64. Err codemadness.org 70 i 24193 Support XSAVE, XSAVEOPT, ... registers in core(5) files on NetBSD/amd64. Err codemadness.org 70 i 24194 Add support for Debug Registers support for NetBSD/i386 and NetBSD/amd64. Err codemadness.org 70 i 24195 The most important point right now is deciding on the format for passing the remaining registers, and implementing the missing ptrace interface kernel-side. The support for core files should follow using the same format then. Err codemadness.org 70 i 24196 Userland-side, I will work on adding matching ATF tests for ptrace features and implement LLDB side of support for the new ptrace interface and core file notes. Afterwards, I will start working on improving support for the same things on 32-bit (i386) executables.
Err codemadness.org 70 i 24197
Err codemadness.org 70 i 24204Err codemadness.org 70 i 24206 Err codemadness.org 70 i 24207Yesterday I wrote that V7 ed read its terminal input in cooked mode a line at a time, which was an efficient, low-CPU design that was important on V7's small and low-power hardware. Then in comments, frankg pointed out that I was wrong about part of that, namely about how ed read its input.
Err codemadness.org 70 i 24205
Err codemadness.org 70 i 24212Err codemadness.org 70 i 24222 Err codemadness.org 70 i 24223Reading this section of the source code for ed taught me that it has an interesting, undocumented, and entirely characteristic little behavior. Officially, ed commands that have you enter new text have that new text terminate by a . on a line by itself:
Err codemadness.org 70 i 24213 Err codemadness.org 70 i 24214In other words, it turns a single line with '.' into an EOF. The consequence of this is that if you type a real EOF at the start of a line, you get the same result, thus saving you one character (you use Control-D instead of '.' plus newline). This is very V7 Unix behavior, including the lack of documentation.
Err codemadness.org 70 i 24215 Err codemadness.org 70 i 24216This is also a natural behavior in one sense. A proper program has to react to EOF here in some way, and it might as well do so by ending the input mode. It's also natural to go on to try reading from the terminal again for subsequent commands; if this was a real and persistent EOF, for example because the pty closed, you'll just get EOF again and eventually quit. V7 ed is slightly unusual here in that it deliberately converts '.' by itself to EOF, instead of signaling this in a different way, but in a way that's also the simplest approach; if you have to have some signal for each case and you're going to treat them the same, you might as well have the same signal for both cases.
Err codemadness.org 70 i 24217 Err codemadness.org 70 i 24218Modern versions of ed appear to faithfully reimplement this convenient behavior, although they don't appear to document it. I haven't checked OpenBSD, but both FreeBSD ed and GNU ed work like this in a quick test. I haven't checked their source code to see if they implement it the same way.
Err codemadness.org 70 i 24219 Err codemadness.org 70 i 24220
Err codemadness.org 70 i 24221
Err codemadness.org 70 i 24480Err codemadness.org 70 i 24502 Err codemadness.org 70 i 24503This update eliminates a kernel stack disclosure bug in UFS/FFS directory entries that is caused by uninitialized directory entry padding written to the disk.
Err codemadness.org 70 i 24481 Err codemadness.org 70 i 24482Err codemadness.org 70 i 24483
Err codemadness.org 70 i 24499 Err codemadness.org 70 i 24500- When the directory entry is written to disk, it is written as a full 32bit entry, and the unused bytes were not initialized, so could possibly contain sensitive data from the kernel stack Err codemadness.org 70 i 24484 It can be viewed by any user with read access to that directory. Up to 3 bytes of kernel stack are disclosed per file entry, depending on the the amount of padding the kernel needs to pad out the entry to a 32 bit boundary. The offset in the kernel stack that is disclosed is a function of the filename size. Furthermore, if the user can create files in a directory, this 3 byte window can be expanded 3 bytes at a time to a 254 byte window with 75% of the data in that window exposed. The additional exposure is done by removing the entry, creating a new entry with a 4-byte longer name, extracting 3 more bytes by reading the directory, and repeating until a 252 byte name is created. Err codemadness.org 70 i 24485 This exploit works in part because the area of the kernel stack that is being disclosed is in an area that typically doesn't change that often (perhaps a few times a second on a lightly loaded system), and these file creates and unlinks themselves don't overwrite the area of kernel stack being disclosed. Err codemadness.org 70 i 24486 It appears that this bug originated with the creation of the Fast File System in 4.1b-BSD (Circa 1982, more than 36 years ago!), and is likely present in every Unix or Unix-like system that uses UFS/FFS. Amazingly, nobody noticed until now. Err codemadness.org 70 i 24487 This update also adds the -z flag to fsck_ffs to have it scrub the leaked information in the name padding of existing directories. It only needs to be run once on each UFS/FFS filesystem after a patched kernel is installed and running. Err codemadness.org 70 i 24488 Submitted by: David G. Lawrence dg@dglawrence.com
Err codemadness.org 70 i 24489 Err codemadness.org 70 i 24490- So a patched kernel will no longer leak this data, and running the
Err codemadness.org 70 i 24491 Err codemadness.org 70 i 24492fsck_ffs -zcommand will erase any leaked data that may exist on your system- OpenBSD commit with additional detail on mitigations Err codemadness.org 70 i 24493 The impact on OpenBSD is very limited: Err codemadness.org 70 i 24494 1 - such stack bytes can be found in raw-device reads, from group operator. If you can read the raw disks you can undertake other more powerful actions. Err codemadness.org 70 i 24495 2 - read(2) upon directory fd was disabled July 1997 because I didn't like how grep * would display garbage and mess up the tty, and applying vis(3) for just directory reads seemed silly. read(2) was changed to return 0 (EOF). Sep 2016 this was further changed to EISDIR, so you still cannot see the bad bytes. Err codemadness.org 70 i 24496 3 - In 2013 when guenther adapted the getdents(2) directory-reading system call to 64-bit ino_t, the userland data format changed to 8-byte-alignment, making it incompatible with the 4-byte-alignment UFS on-disk format. As a result of code refactoring the bad bytes were not copied to userland. Bad bytes will remain in old directories on old filesystems, but nothing makes those bytes user visible. Err codemadness.org 70 i 24497 There will be no errata or syspatch issued. I urge other systems which do expose the information to userland to issue errata quickly, since this is a 254 byte infoleak of the stack which is great for ROP-chain building to attack some other bug. Especially if the kernel has no layout/link-order randomization ...
Err codemadness.org 70 i 24498
Err codemadness.org 70 i 24501
Err codemadness.org 70 i 24506Err codemadness.org 70 i 24511 Err codemadness.org 70 i 24512As regular It’s FOSS readers should know, I like diving into the world of BSDs. Recently, I came across an interesting BSD that is designed to live on a thumb drive. Let’s take a look at NomadBSD. Err codemadness.org 70 i 24507 NomadBSD is different than most available BSDs. NomadBSD is a live system based on FreeBSD. It comes with automatic hardware detection and an initial config tool. NomadBSD is designed to “be used as a desktop system that works out of the box, but can also be used for data recovery, for educational purposes, or to test FreeBSD’s hardware compatibility.” Err codemadness.org 70 i 24508 This German BSD comes with an OpenBox-based desktop with the Plank application dock. NomadBSD makes use of the DSB project. DSB stands for “Desktop Suite (for) (Free)BSD” and consists of a collection of programs designed to create a simple and working environment without needing a ton of dependencies to use one tool. DSB is created by Marcel Kaiser one of the lead devs of NomadBSD. Err codemadness.org 70 i 24509 Just like the original BSD projects, you can contact the NomadBSD developers via a mailing list.
Err codemadness.org 70 i 24510
Err codemadness.org 70 i 24517Err codemadness.org 70 i 24519 Err codemadness.org 70 i 24520NomadBSD recently released version 1.2 on April 21, 2019. This means that NomadBSD is now based on FreeBSD 12.0-p3. TRIM is now enabled by default. One of the biggest changes is that the initial command-line setup was replaced with a Qt graphical interface. They also added a Qt5 tool to install NomadBSD to your hard drive. A number of fixes were included to improve graphics support. They also added support for creating 32-bit images.
Err codemadness.org 70 i 24518
Err codemadness.org 70 i 24525Err codemadness.org 70 i 24530 Err codemadness.org 70 i 24531I first discovered NomadBSD back in January when they released 1.2-RC1. At the time, I had been unable to install Project Trident on my laptop and was very frustrated with BSDs. I downloaded NomadBSD and tried it out. I initially ran into issues reaching the desktop, but RC2 fixed that issue. However, I was unable to get on the internet, even though I had an Ethernet cable plugged in. Luckily, I found the wifi manager in the menu and was able to connect to my wifi. Err codemadness.org 70 i 24526 Overall, my experience with NomadBSD was pleasant. Once I figured out a few things, I was good to go. I hope that NomadBSD is the first of a new generation of BSDs that focus on mobility and ease of use. BSD has conquered the server world, it’s about time they figured out how to be more user-friendly.
Err codemadness.org 70 i 24527 Err codemadness.org 70 i 24528
Err codemadness.org 70 i 24529
upgrade](https://www.tumfatig.net/20190426/openbsd-automatic-upgrade/)
Err codemadness.org 70 i 24536 Err codemadness.org 70 i 24537Err codemadness.org 70 i 24538Err codemadness.org 70 i 24541 Err codemadness.org 70 i 24542OpenBSD 6.5 advertises for an installer improvement: rdsetroot(8) (a build-time tool) is now available for general use. Used in combination with autoinstall.8, it is now really easy to do automatic upgrades of your OpenBSD instances. Err codemadness.org 70 i 24539 I first manually upgraded my OpenBSD sandbox to 6.5. Once that was done, I could use the stock rdsetroot(8) tool. The plan is quite simple: write an unattended installation response file, insert it to a bsd.rd 6.5 installation image and reboot my other OpenBSD instances using that image.
Err codemadness.org 70 i 24540
Err codemadness.org 70 i 24547Err codemadness.org 70 i 24551 Err codemadness.org 70 i 24552There must be a way to run onetime commands (in the manner of fw_update) to automatically run sysmerge and packages upgrades. As for now, I’d rather do it manually. Err codemadness.org 70 i 24548 This worked like a charm on two Synology KVM instances using a single sd0 disk, on my Thinkpad X260 using Encrypted root with Keydisk and on a Vultr instance using Encrypted root with passphrase. And BTW, the upgrade on the X260 used the (iwn0) wireless connection. Err codemadness.org 70 i 24549 I just read that florian@ has released the sysupgrade(8) utility which should be released with OpenBSD 6.6. That will make upgrades even easier! Until then, happy upgrading.
Err codemadness.org 70 i 24550
Which logs were replaced by dtrace-probes:
Err codemadness.org 70 i 24558 Err codemadness.org 70 i 24559The only debug macro, which was leaved is EXT2FSPRINTEXTENTS.
It is impossible to replace it by dtrace-probes, because the additional logic is required to walk thru file extents.
The user still be able to see mount errors in the dmesg in case of:
Err codemadness.org 70 i 24571 Err codemadness.org 70 i 24572Err codemadness.org 70 i 24585Err codemadness.org 70 i 24593 Err codemadness.org 70 i 24594I use ssh tunneling A LOT, for everything. Yesterday, I removed the public access of my IMAP server, it’s now only available through ssh tunneling to access the daemon listening on localhost. I have plenty of daemons listening only on localhost that I can only reach through a ssh tunnel. If you don’t want to bother with ssh and redirect ports you need, you can also make a VPN (using ssh, openvpn, iked, tinc…) between your system and your server. I tend to avoid setting up VPN for the current use case as it requires more work and more maintenance than running ssh server and a ssh client. Err codemadness.org 70 i 24586 The last change, for my IMAP server, added an issue. I want my phone to access the IMAP server but I don’t want to connect to my main account from my phone for security reasons. So, I need a dedicated user that will only be allowed to forward ports. Err codemadness.org 70 i 24587 This is done very easily on OpenBSD. Err codemadness.org 70 i 24588 The steps are: 1. generate ssh keys for the new user 2. add an user with no password 3. allow public key for port forwarding Err codemadness.org 70 i 24589 Obviously, you must allow users (or only this one) to make port forwarding in your sshd_config.
Err codemadness.org 70 i 24590 Err codemadness.org 70 i 24591
Err codemadness.org 70 i 24592
Err codemadness.org 70 i 24597Err codemadness.org 70 i 24601 Err codemadness.org 70 i 24602We're running dedicated vmm(4)/vmd(8) servers to host opinionated VMs. Err codemadness.org 70 i 24598 OpenBSD 6.5 is released! There are two ways you can upgrade your VM. Err codemadness.org 70 i 24599 Either do a manual upgrade or leverage autoinstall(8). You can take care of it via the console with vmctl(8).
Err codemadness.org 70 i 24600
Err codemadness.org 70 i 24607Err codemadness.org 70 i 24610 Err codemadness.org 70 i 24611To get connected to the console you need to have access to the host your VM is running on. The same username and public SSH key, as provided for the VM, are used to create a local user on the host. Err codemadness.org 70 i 24608 When this is done you can use vmctl(8) to manage your VM. The options you have are:
Err codemadness.org 70 i 24609
```$ vmctl start id [-c]``` Err codemadness.org 70
i 24612 Err codemadness.org 70
i 24613 Err codemadness.org 70
i 24614 $ vmctl stop id [-fw]```
Err codemadness.org 70 i 24615 Err codemadness.org 70 i 24616```-w Wait until the VM has been terminated.``` Err codemadness.org 70
i 24617 Err codemadness.org 70
i 24618 Err codemadness.org 70
i 24619 -c Automatically connect to the VM console.```
Err codemadness.org 70 i 24620 Err codemadness.org 70 i 24621Err codemadness.org 70 i 24676Err codemadness.org 70 i 24698 Err codemadness.org 70 i 24699This update eliminates a kernel stack disclosure bug in UFS/FFS directory entries that is caused by uninitialized directory entry padding written to the disk.
Err codemadness.org 70 i 24677 Err codemadness.org 70 i 24678Err codemadness.org 70 i 24679
Err codemadness.org 70 i 24695 Err codemadness.org 70 i 24696- When the directory entry is written to disk, it is written as a full 32bit entry, and the unused bytes were not initialized, so could possibly contain sensitive data from the kernel stack Err codemadness.org 70 i 24680 It can be viewed by any user with read access to that directory. Up to 3 bytes of kernel stack are disclosed per file entry, depending on the the amount of padding the kernel needs to pad out the entry to a 32 bit boundary. The offset in the kernel stack that is disclosed is a function of the filename size. Furthermore, if the user can create files in a directory, this 3 byte window can be expanded 3 bytes at a time to a 254 byte window with 75% of the data in that window exposed. The additional exposure is done by removing the entry, creating a new entry with a 4-byte longer name, extracting 3 more bytes by reading the directory, and repeating until a 252 byte name is created. Err codemadness.org 70 i 24681 This exploit works in part because the area of the kernel stack that is being disclosed is in an area that typically doesn't change that often (perhaps a few times a second on a lightly loaded system), and these file creates and unlinks themselves don't overwrite the area of kernel stack being disclosed. Err codemadness.org 70 i 24682 It appears that this bug originated with the creation of the Fast File System in 4.1b-BSD (Circa 1982, more than 36 years ago!), and is likely present in every Unix or Unix-like system that uses UFS/FFS. Amazingly, nobody noticed until now. Err codemadness.org 70 i 24683 This update also adds the -z flag to fsck_ffs to have it scrub the leaked information in the name padding of existing directories. It only needs to be run once on each UFS/FFS filesystem after a patched kernel is installed and running. Err codemadness.org 70 i 24684 Submitted by: David G. Lawrence dg@dglawrence.com
Err codemadness.org 70 i 24685 Err codemadness.org 70 i 24686- So a patched kernel will no longer leak this data, and running the
Err codemadness.org 70 i 24687 Err codemadness.org 70 i 24688fsck_ffs -zcommand will erase any leaked data that may exist on your system- OpenBSD commit with additional detail on mitigations Err codemadness.org 70 i 24689 The impact on OpenBSD is very limited: Err codemadness.org 70 i 24690 1 - such stack bytes can be found in raw-device reads, from group operator. If you can read the raw disks you can undertake other more powerful actions. Err codemadness.org 70 i 24691 2 - read(2) upon directory fd was disabled July 1997 because I didn't like how grep * would display garbage and mess up the tty, and applying vis(3) for just directory reads seemed silly. read(2) was changed to return 0 (EOF). Sep 2016 this was further changed to EISDIR, so you still cannot see the bad bytes. Err codemadness.org 70 i 24692 3 - In 2013 when guenther adapted the getdents(2) directory-reading system call to 64-bit ino_t, the userland data format changed to 8-byte-alignment, making it incompatible with the 4-byte-alignment UFS on-disk format. As a result of code refactoring the bad bytes were not copied to userland. Bad bytes will remain in old directories on old filesystems, but nothing makes those bytes user visible. Err codemadness.org 70 i 24693 There will be no errata or syspatch issued. I urge other systems which do expose the information to userland to issue errata quickly, since this is a 254 byte infoleak of the stack which is great for ROP-chain building to attack some other bug. Especially if the kernel has no layout/link-order randomization ...
Err codemadness.org 70 i 24694
Err codemadness.org 70 i 24697
Err codemadness.org 70 i 24702Err codemadness.org 70 i 24707 Err codemadness.org 70 i 24708As regular It’s FOSS readers should know, I like diving into the world of BSDs. Recently, I came across an interesting BSD that is designed to live on a thumb drive. Let’s take a look at NomadBSD. Err codemadness.org 70 i 24703 NomadBSD is different than most available BSDs. NomadBSD is a live system based on FreeBSD. It comes with automatic hardware detection and an initial config tool. NomadBSD is designed to “be used as a desktop system that works out of the box, but can also be used for data recovery, for educational purposes, or to test FreeBSD’s hardware compatibility.” Err codemadness.org 70 i 24704 This German BSD comes with an OpenBox-based desktop with the Plank application dock. NomadBSD makes use of the DSB project. DSB stands for “Desktop Suite (for) (Free)BSD” and consists of a collection of programs designed to create a simple and working environment without needing a ton of dependencies to use one tool. DSB is created by Marcel Kaiser one of the lead devs of NomadBSD. Err codemadness.org 70 i 24705 Just like the original BSD projects, you can contact the NomadBSD developers via a mailing list.
Err codemadness.org 70 i 24706
Err codemadness.org 70 i 24713Err codemadness.org 70 i 24715 Err codemadness.org 70 i 24716NomadBSD recently released version 1.2 on April 21, 2019. This means that NomadBSD is now based on FreeBSD 12.0-p3. TRIM is now enabled by default. One of the biggest changes is that the initial command-line setup was replaced with a Qt graphical interface. They also added a Qt5 tool to install NomadBSD to your hard drive. A number of fixes were included to improve graphics support. They also added support for creating 32-bit images.
Err codemadness.org 70 i 24714
Err codemadness.org 70 i 24721Err codemadness.org 70 i 24726 Err codemadness.org 70 i 24727I first discovered NomadBSD back in January when they released 1.2-RC1. At the time, I had been unable to install Project Trident on my laptop and was very frustrated with BSDs. I downloaded NomadBSD and tried it out. I initially ran into issues reaching the desktop, but RC2 fixed that issue. However, I was unable to get on the internet, even though I had an Ethernet cable plugged in. Luckily, I found the wifi manager in the menu and was able to connect to my wifi. Err codemadness.org 70 i 24722 Overall, my experience with NomadBSD was pleasant. Once I figured out a few things, I was good to go. I hope that NomadBSD is the first of a new generation of BSDs that focus on mobility and ease of use. BSD has conquered the server world, it’s about time they figured out how to be more user-friendly.
Err codemadness.org 70 i 24723 Err codemadness.org 70 i 24724
Err codemadness.org 70 i 24725
upgrade](https://www.tumfatig.net/20190426/openbsd-automatic-upgrade/)
Err codemadness.org 70 i 24732 Err codemadness.org 70 i 24733Err codemadness.org 70 i 24734Err codemadness.org 70 i 24737 Err codemadness.org 70 i 24738OpenBSD 6.5 advertises for an installer improvement: rdsetroot(8) (a build-time tool) is now available for general use. Used in combination with autoinstall.8, it is now really easy to do automatic upgrades of your OpenBSD instances. Err codemadness.org 70 i 24735 I first manually upgraded my OpenBSD sandbox to 6.5. Once that was done, I could use the stock rdsetroot(8) tool. The plan is quite simple: write an unattended installation response file, insert it to a bsd.rd 6.5 installation image and reboot my other OpenBSD instances using that image.
Err codemadness.org 70 i 24736
Err codemadness.org 70 i 24743Err codemadness.org 70 i 24747 Err codemadness.org 70 i 24748There must be a way to run onetime commands (in the manner of fw_update) to automatically run sysmerge and packages upgrades. As for now, I’d rather do it manually. Err codemadness.org 70 i 24744 This worked like a charm on two Synology KVM instances using a single sd0 disk, on my Thinkpad X260 using Encrypted root with Keydisk and on a Vultr instance using Encrypted root with passphrase. And BTW, the upgrade on the X260 used the (iwn0) wireless connection. Err codemadness.org 70 i 24745 I just read that florian@ has released the sysupgrade(8) utility which should be released with OpenBSD 6.6. That will make upgrades even easier! Until then, happy upgrading.
Err codemadness.org 70 i 24746
Which logs were replaced by dtrace-probes:
Err codemadness.org 70 i 24754 Err codemadness.org 70 i 24755The only debug macro, which was leaved is EXT2FSPRINTEXTENTS.
It is impossible to replace it by dtrace-probes, because the additional logic is required to walk thru file extents.
The user still be able to see mount errors in the dmesg in case of:
Err codemadness.org 70 i 24767 Err codemadness.org 70 i 24768Err codemadness.org 70 i 24781Err codemadness.org 70 i 24789 Err codemadness.org 70 i 24790I use ssh tunneling A LOT, for everything. Yesterday, I removed the public access of my IMAP server, it’s now only available through ssh tunneling to access the daemon listening on localhost. I have plenty of daemons listening only on localhost that I can only reach through a ssh tunnel. If you don’t want to bother with ssh and redirect ports you need, you can also make a VPN (using ssh, openvpn, iked, tinc…) between your system and your server. I tend to avoid setting up VPN for the current use case as it requires more work and more maintenance than running ssh server and a ssh client. Err codemadness.org 70 i 24782 The last change, for my IMAP server, added an issue. I want my phone to access the IMAP server but I don’t want to connect to my main account from my phone for security reasons. So, I need a dedicated user that will only be allowed to forward ports. Err codemadness.org 70 i 24783 This is done very easily on OpenBSD. Err codemadness.org 70 i 24784 The steps are: 1. generate ssh keys for the new user 2. add an user with no password 3. allow public key for port forwarding Err codemadness.org 70 i 24785 Obviously, you must allow users (or only this one) to make port forwarding in your sshd_config.
Err codemadness.org 70 i 24786 Err codemadness.org 70 i 24787
Err codemadness.org 70 i 24788
Err codemadness.org 70 i 24793Err codemadness.org 70 i 24797 Err codemadness.org 70 i 24798We're running dedicated vmm(4)/vmd(8) servers to host opinionated VMs. Err codemadness.org 70 i 24794 OpenBSD 6.5 is released! There are two ways you can upgrade your VM. Err codemadness.org 70 i 24795 Either do a manual upgrade or leverage autoinstall(8). You can take care of it via the console with vmctl(8).
Err codemadness.org 70 i 24796
Err codemadness.org 70 i 24803Err codemadness.org 70 i 24806 Err codemadness.org 70 i 24807To get connected to the console you need to have access to the host your VM is running on. The same username and public SSH key, as provided for the VM, are used to create a local user on the host. Err codemadness.org 70 i 24804 When this is done you can use vmctl(8) to manage your VM. The options you have are:
Err codemadness.org 70 i 24805
```$ vmctl start id [-c]``` Err codemadness.org 70
i 24808 Err codemadness.org 70
i 24809 Err codemadness.org 70
i 24810 $ vmctl stop id [-fw]```
Err codemadness.org 70 i 24811 Err codemadness.org 70 i 24812```-w Wait until the VM has been terminated.``` Err codemadness.org 70
i 24813 Err codemadness.org 70
i 24814 Err codemadness.org 70
i 24815 -c Automatically connect to the VM console.```
Err codemadness.org 70 i 24816 Err codemadness.org 70 i 24817Err codemadness.org 70 i 25101Err codemadness.org 70 i 25106 Err codemadness.org 70 i 25107With iX Systems having released new images of FreeBSD reworked with their ZFS On Linux code that is in development to ultimately replace their existing FreeBSD ZFS support derived from the code originally found in the Illumos source tree, here are some fresh benchmarks looking at the FreeBSD 12 performance of ZFS vs. ZoL vs. UFS and compared to Ubuntu Linux on the same system with EXT4 and ZFS. Err codemadness.org 70 i 25102 Using an Intel Xeon E3-1275 v6 with ASUS P10S-M WS motherboard, 2 x 8GB DDR4-2400 ECC UDIMMs, and Samsung 970 EVO Plus 500GB NVMe solid-state drive was used for all of this round of testing. Just a single modern NVMe SSD was used for this round of ZFS testing while as the FreeBSD ZoL code matures I'll test on multiple systems using a more diverse range of storage devices. Err codemadness.org 70 i 25103 FreeBSD 12 ZoL was tested using the iX Systems image and then fresh installs done of FreeBSD 12.0-RELEASE when defaulting to the existing ZFS root file-system support and again when using the aging UFS file-system. Ubuntu 18.04.2 LTS with the Linux 4.18 kernel was used when testing its default EXT4 file-system and then again when using the Ubuntu-ZFS ZoL support. Via the Phoronix Test Suite various BSD/Linux I/O benchmarks were carried out. Err codemadness.org 70 i 25104 Overall, the FreeBSD ZFS On Linux port is looking good so far and we are looking forward to it hopefully maturing in time for FreeBSD 13.0. Nice job to iX Systems and all of those involved, especially the ZFS On Linux project. Those wanting to help in testing can try the FreeBSD ZoL spins. Stay tuned for more benchmarks and on more diverse hardware as time allows and the FreeBSD ZoL support further matures, but so far at least the performance numbers are in good shape.
Err codemadness.org 70 i 25105
Err codemadness.org 70 i 25114Err codemadness.org 70 i 25118 Err codemadness.org 70 i 25119Here's the tag commit, for what has changed from 5.4.1 to 5.4.2 Err codemadness.org 70 i 25115 The normal ISO and IMG files are available for download and install, plus an uncompressed ISO image for those installing remotely. I uploaded them to mirror-master.dragonflybsd.org last night so they should be at your local mirror or will be soon. This version includes Matt's fix for the HAMMER2 corruption bug he identified recently. Err codemadness.org 70 i 25116 If you have an existing 5.4 system and are running a generic kernel, the normal upgrade process will work.
Err codemadness.org 70 i 25117
> cd /usr/src Err codemadness.org 70
i 25120 > git pull Err codemadness.org 70
i 25121 > make buildworld. Err codemadness.org 70
i 25122 > make buildkernel. Err codemadness.org 70
i 25123 > make installkernel. Err codemadness.org 70
i 25124 > make installworld Err codemadness.org 70
i 25125 > make upgrade Err codemadness.org 70
i 25126 Err codemadness.org 70
i 25127 Err codemadness.org 70
i 25128 Err codemadness.org 70 i 25129Err codemadness.org 70 i 25131 Err codemadness.org 70 i 25132After your next reboot, you can optionally update your rescue system:
Err codemadness.org 70 i 25130
> cd /usr/src Err codemadness.org 70
i 25133 > make initrd Err codemadness.org 70
i 25134 Err codemadness.org 70
i 25135 Err codemadness.org 70
i 25136 Err codemadness.org 70 i 25137Err codemadness.org 70 i 25139 Err codemadness.org 70 i 25140As always, make sure your packages are up to date:
Err codemadness.org 70 i 25138
> pkg update Err codemadness.org 70
i 25141 > pkg upgrade Err codemadness.org 70
i 25142 Err codemadness.org 70
i 25143 Err codemadness.org 70
i 25144 Err codemadness.org 70 i 25151Err codemadness.org 70 i 25154 Err codemadness.org 70 i 25155I'm a huge fan of the FreeBSD jails feature. It is a great system for splitting services into logical units with all the performance of the bare metal system. In fact, this very site runs in its own jail! If this is starting to sound like LXC or Docker, it might surprise you to learn that OS-level virtualization has existed for quite some time. Kudos to the Linux folks for finally getting around to it. 😛 Err codemadness.org 70 i 25152 If you're interested in the history behind Jails, there is an excellent talk from Papers We Love on the subject: https://www.youtube.com/watch?v=hgN8pCMLI2U
Err codemadness.org 70 i 25153
Err codemadness.org 70 i 25160Err codemadness.org 70 i 25162 Err codemadness.org 70 i 25163There are plenty of options when it comes to setting up the jail system. Ezjail and Iocage seem popular, or you could do things manually. Iocage was recently rewritten in python, but was originally a set of shell scripts. That version has since been forked under the name Iocell, and I think it's pretty neat, so this tutorial will be using Iocell.
Err codemadness.org 70 i 25161
Err codemadness.org 70 i 25177Err codemadness.org 70 i 25181 Err codemadness.org 70 i 25182Once you have installed iocell and configured your ZFS pool, you'll need to run a few commands before creating your first jail. First, tell iocell which ZFS pool to use by issuing iocell activate $POOLNAME. Iocell will create a few datasets.
Err codemadness.org 70 i 25178 Err codemadness.org 70 i 25179As you can imagine, your jails are contained within the /iocell/jails dataset. The /iocell/releases dataset is used for storing the next command we need to run, iocell fetch. Iocell will ask you which release you'd like to pull down. Since we're running 11.0 on the host, pick 11.0-RELEASE. Iocell will download the necessary txz files and unpack them in /iocell/releases.
Err codemadness.org 70 i 25180
Err codemadness.org 70 i 25191Err codemadness.org 70 i 25208 Err codemadness.org 70 i 25209Today we are releasing the SRU 8 for Oracle Solaris 11.4. It is available via 'pkg update' from the support repository or by downloading the SRU from My Oracle Support Doc ID 2433412.1.
Err codemadness.org 70 i 25192 Err codemadness.org 70 i 25193Err codemadness.org 70 i 25194
Err codemadness.org 70 i 25207- This SRU introduces the following enhancements: Err codemadness.org 70 i 25195 Err codemadness.org 70 i 25196 Err codemadness.org 70 i 25197
Err codemadness.org 70 i 25206Err codemadness.org 70 i 25198
Err codemadness.org 70 i 25205- Integration of 28060039 introduced an issue where any firmware update/query commands will log eereports and repeated execution of such commands led to faulty/degraded NIC. The issue has been addressed in this SRU.
Err codemadness.org 70 i 25199 Err codemadness.org 70 i 25200- UCB (libucb, librpcsoc, libdbm, libtermcap, and libcurses) libraries have been reinstated for Oracle Solaris 11.4
Err codemadness.org 70 i 25201 Err codemadness.org 70 i 25202- Re-introduction of the service fc-fabric.
Err codemadness.org 70 i 25203 Err codemadness.org 70 i 25204- ibus has been updated to 1.5.19
Err codemadness.org 70 i 25245Err codemadness.org 70 i 25250 Err codemadness.org 70 i 25251After hacking the matrix.org website today, the attacker opened a series of GitHub issues mentioning the flaws he discovered. In one of those issues, he mentions that “complete compromise could have been avoided if developers were prohibited from using [SSH agent forwarding].” Err codemadness.org 70 i 25246 Here’s what man ssh_config has to say about ForwardAgent: "Agent forwarding should be enabled with caution. Users with the ability to bypass file permissions on the remote host (for the agent’s Unix-domain socket) can access the local agent through the forwarded connection. An attacker cannot obtain key material from the agent, however they can perform operations on the keys that enable them to authenticate using the identities loaded into the agent."" Err codemadness.org 70 i 25247 Simply put: if your jump box is compromised and you use SSH agent forwarding to connect to another machine through it, then you risk also compromising the target machine! Err codemadness.org 70 i 25248 Instead, you should use either ProxyCommand or ProxyJump (added in OpenSSH 7.3). That way, ssh will forward the TCP connection to the target host via the jump box and the actual connection will be made on your workstation. If someone on the jump box tries to MITM your connection, then you will be warned by ssh.
Err codemadness.org 70 i 25249
Err codemadness.org 70 i 25256Err codemadness.org 70 i 25260 Err codemadness.org 70 i 25261Start by performing the pre-upgrade steps. Next, boot from the install kernel, bsd.rd: use bootable install media, or place the 6.5 version of bsd.rd in the root of your filesystem and instruct the boot loader to boot this kernel. Once this kernel is booted, choose the (U)pgrade option and follow the prompts. Apply the configuration changes and remove the old files. Finish up by upgrading the packages: pkg_add -u. Err codemadness.org 70 i 25257 Alternatively, you can use the manual upgrade process. Err codemadness.org 70 i 25258 You may wish to check the errata page or upgrade to the stable branch to get any post-release fixes.
Err codemadness.org 70 i 25259
Err codemadness.org 70 i 25322Err codemadness.org 70 i 25327 Err codemadness.org 70 i 25328With iX Systems having released new images of FreeBSD reworked with their ZFS On Linux code that is in development to ultimately replace their existing FreeBSD ZFS support derived from the code originally found in the Illumos source tree, here are some fresh benchmarks looking at the FreeBSD 12 performance of ZFS vs. ZoL vs. UFS and compared to Ubuntu Linux on the same system with EXT4 and ZFS. Err codemadness.org 70 i 25323 Using an Intel Xeon E3-1275 v6 with ASUS P10S-M WS motherboard, 2 x 8GB DDR4-2400 ECC UDIMMs, and Samsung 970 EVO Plus 500GB NVMe solid-state drive was used for all of this round of testing. Just a single modern NVMe SSD was used for this round of ZFS testing while as the FreeBSD ZoL code matures I'll test on multiple systems using a more diverse range of storage devices. Err codemadness.org 70 i 25324 FreeBSD 12 ZoL was tested using the iX Systems image and then fresh installs done of FreeBSD 12.0-RELEASE when defaulting to the existing ZFS root file-system support and again when using the aging UFS file-system. Ubuntu 18.04.2 LTS with the Linux 4.18 kernel was used when testing its default EXT4 file-system and then again when using the Ubuntu-ZFS ZoL support. Via the Phoronix Test Suite various BSD/Linux I/O benchmarks were carried out. Err codemadness.org 70 i 25325 Overall, the FreeBSD ZFS On Linux port is looking good so far and we are looking forward to it hopefully maturing in time for FreeBSD 13.0. Nice job to iX Systems and all of those involved, especially the ZFS On Linux project. Those wanting to help in testing can try the FreeBSD ZoL spins. Stay tuned for more benchmarks and on more diverse hardware as time allows and the FreeBSD ZoL support further matures, but so far at least the performance numbers are in good shape.
Err codemadness.org 70 i 25326
Err codemadness.org 70 i 25335Err codemadness.org 70 i 25339 Err codemadness.org 70 i 25340Here's the tag commit, for what has changed from 5.4.1 to 5.4.2 Err codemadness.org 70 i 25336 The normal ISO and IMG files are available for download and install, plus an uncompressed ISO image for those installing remotely. I uploaded them to mirror-master.dragonflybsd.org last night so they should be at your local mirror or will be soon. This version includes Matt's fix for the HAMMER2 corruption bug he identified recently. Err codemadness.org 70 i 25337 If you have an existing 5.4 system and are running a generic kernel, the normal upgrade process will work.
Err codemadness.org 70 i 25338
> cd /usr/src Err codemadness.org 70
i 25341 > git pull Err codemadness.org 70
i 25342 > make buildworld. Err codemadness.org 70
i 25343 > make buildkernel. Err codemadness.org 70
i 25344 > make installkernel. Err codemadness.org 70
i 25345 > make installworld Err codemadness.org 70
i 25346 > make upgrade Err codemadness.org 70
i 25347 Err codemadness.org 70
i 25348 Err codemadness.org 70
i 25349 Err codemadness.org 70 i 25350Err codemadness.org 70 i 25352 Err codemadness.org 70 i 25353After your next reboot, you can optionally update your rescue system:
Err codemadness.org 70 i 25351
> cd /usr/src Err codemadness.org 70
i 25354 > make initrd Err codemadness.org 70
i 25355 Err codemadness.org 70
i 25356 Err codemadness.org 70
i 25357 Err codemadness.org 70 i 25358Err codemadness.org 70 i 25360 Err codemadness.org 70 i 25361As always, make sure your packages are up to date:
Err codemadness.org 70 i 25359
> pkg update Err codemadness.org 70
i 25362 > pkg upgrade Err codemadness.org 70
i 25363 Err codemadness.org 70
i 25364 Err codemadness.org 70
i 25365 Err codemadness.org 70 i 25372Err codemadness.org 70 i 25375 Err codemadness.org 70 i 25376I'm a huge fan of the FreeBSD jails feature. It is a great system for splitting services into logical units with all the performance of the bare metal system. In fact, this very site runs in its own jail! If this is starting to sound like LXC or Docker, it might surprise you to learn that OS-level virtualization has existed for quite some time. Kudos to the Linux folks for finally getting around to it. 😛 Err codemadness.org 70 i 25373 If you're interested in the history behind Jails, there is an excellent talk from Papers We Love on the subject: https://www.youtube.com/watch?v=hgN8pCMLI2U
Err codemadness.org 70 i 25374
Err codemadness.org 70 i 25381Err codemadness.org 70 i 25383 Err codemadness.org 70 i 25384There are plenty of options when it comes to setting up the jail system. Ezjail and Iocage seem popular, or you could do things manually. Iocage was recently rewritten in python, but was originally a set of shell scripts. That version has since been forked under the name Iocell, and I think it's pretty neat, so this tutorial will be using Iocell.
Err codemadness.org 70 i 25382
Err codemadness.org 70 i 25398Err codemadness.org 70 i 25402 Err codemadness.org 70 i 25403Once you have installed iocell and configured your ZFS pool, you'll need to run a few commands before creating your first jail. First, tell iocell which ZFS pool to use by issuing iocell activate $POOLNAME. Iocell will create a few datasets.
Err codemadness.org 70 i 25399 Err codemadness.org 70 i 25400As you can imagine, your jails are contained within the /iocell/jails dataset. The /iocell/releases dataset is used for storing the next command we need to run, iocell fetch. Iocell will ask you which release you'd like to pull down. Since we're running 11.0 on the host, pick 11.0-RELEASE. Iocell will download the necessary txz files and unpack them in /iocell/releases.
Err codemadness.org 70 i 25401
Err codemadness.org 70 i 25412Err codemadness.org 70 i 25429 Err codemadness.org 70 i 25430Today we are releasing the SRU 8 for Oracle Solaris 11.4. It is available via 'pkg update' from the support repository or by downloading the SRU from My Oracle Support Doc ID 2433412.1.
Err codemadness.org 70 i 25413 Err codemadness.org 70 i 25414Err codemadness.org 70 i 25415
Err codemadness.org 70 i 25428- This SRU introduces the following enhancements: Err codemadness.org 70 i 25416 Err codemadness.org 70 i 25417 Err codemadness.org 70 i 25418
Err codemadness.org 70 i 25427Err codemadness.org 70 i 25419
Err codemadness.org 70 i 25426- Integration of 28060039 introduced an issue where any firmware update/query commands will log eereports and repeated execution of such commands led to faulty/degraded NIC. The issue has been addressed in this SRU.
Err codemadness.org 70 i 25420 Err codemadness.org 70 i 25421- UCB (libucb, librpcsoc, libdbm, libtermcap, and libcurses) libraries have been reinstated for Oracle Solaris 11.4
Err codemadness.org 70 i 25422 Err codemadness.org 70 i 25423- Re-introduction of the service fc-fabric.
Err codemadness.org 70 i 25424 Err codemadness.org 70 i 25425- ibus has been updated to 1.5.19
Err codemadness.org 70 i 25466Err codemadness.org 70 i 25471 Err codemadness.org 70 i 25472After hacking the matrix.org website today, the attacker opened a series of GitHub issues mentioning the flaws he discovered. In one of those issues, he mentions that “complete compromise could have been avoided if developers were prohibited from using [SSH agent forwarding].” Err codemadness.org 70 i 25467 Here’s what man ssh_config has to say about ForwardAgent: "Agent forwarding should be enabled with caution. Users with the ability to bypass file permissions on the remote host (for the agent’s Unix-domain socket) can access the local agent through the forwarded connection. An attacker cannot obtain key material from the agent, however they can perform operations on the keys that enable them to authenticate using the identities loaded into the agent."" Err codemadness.org 70 i 25468 Simply put: if your jump box is compromised and you use SSH agent forwarding to connect to another machine through it, then you risk also compromising the target machine! Err codemadness.org 70 i 25469 Instead, you should use either ProxyCommand or ProxyJump (added in OpenSSH 7.3). That way, ssh will forward the TCP connection to the target host via the jump box and the actual connection will be made on your workstation. If someone on the jump box tries to MITM your connection, then you will be warned by ssh.
Err codemadness.org 70 i 25470
Err codemadness.org 70 i 25477Err codemadness.org 70 i 25481 Err codemadness.org 70 i 25482Start by performing the pre-upgrade steps. Next, boot from the install kernel, bsd.rd: use bootable install media, or place the 6.5 version of bsd.rd in the root of your filesystem and instruct the boot loader to boot this kernel. Once this kernel is booted, choose the (U)pgrade option and follow the prompts. Apply the configuration changes and remove the old files. Finish up by upgrading the packages: pkg_add -u. Err codemadness.org 70 i 25478 Alternatively, you can use the manual upgrade process. Err codemadness.org 70 i 25479 You may wish to check the errata page or upgrade to the stable branch to get any post-release fixes.
Err codemadness.org 70 i 25480
Err codemadness.org 70 i 25868Err codemadness.org 70 i 25872 Err codemadness.org 70 i 25873ZFS is very flexible about mountpoints, and there are many features available to provide great flexibility. Err codemadness.org 70 i 25869 When you create zpool maintank, the default mountpoint is /maintank. Err codemadness.org 70 i 25870 You might be happy with that, but you don’t have to be content. You can do magical things.
Err codemadness.org 70 i 25871
Err codemadness.org 70 i 25895Err codemadness.org 70 i 25916 Err codemadness.org 70 i 25917Folks, Err codemadness.org 70 i 25896 once again we are quite late for branching the next NetBSD release (NetBSD 9). Err codemadness.org 70 i 25897 Initially planned to happen early in February 2019, we are now approaching May and it is unlikely that the branch will happen before that. Err codemadness.org 70 i 25898 On the positive side, lots of good things landed in -current in between, like new Mesa, new jemalloc, lots of ZFS improvements - and some of those would be hard to pull up to the branch later. Err codemadness.org 70 i 25899 On the bad side we saw lots of churn in -current recently, and there is quite some fallout where we not even have a good overview right now. And this is where you can help:
Err codemadness.org 70 i 25900 Err codemadness.org 70 i 25901Err codemadness.org 70 i 25902
Err codemadness.org 70 i 25913 Err codemadness.org 70 i 25914- please test -current, on all the various machines you have
Err codemadness.org 70 i 25903 Err codemadness.org 70 i 25904- especially interesting would be test results from uncommon architectures Err codemadness.org 70 i 25905 or strange combinations (like the sparc userland on sparc64 kernel issue Err codemadness.org 70 i 25906 I ran in yesterday) Err codemadness.org 70 i 25907 Please test, report success, and file PRs for failures! Err codemadness.org 70 i 25908 We will likely announce the real branch date on quite short notice, the likely next candidates would be mid may or end of may. Err codemadness.org 70 i 25909 We may need to do extra steps after the branch (like switch some architectures back to old jemalloc on the branch). However, the less difference between -current and the branch, the easier will the release cycle go. Err codemadness.org 70 i 25910 Our goal is to have an unprecedented short release cycle this time. But.. Err codemadness.org 70 i 25911 we always say that upfront.
Err codemadness.org 70 i 25912
Err codemadness.org 70 i 25915
Err codemadness.org 70 i 25920Err codemadness.org 70 i 25926 Err codemadness.org 70 i 25927We have released LibreSSL 2.9.1, which will be arriving in the LibreSSL Err codemadness.org 70 i 25921 directory of your local OpenBSD mirror soon. This is the first stable release Err codemadness.org 70 i 25922 from the 2.9 series, which is also included with OpenBSD 6.5
Err codemadness.org 70 i 25923 Err codemadness.org 70 i 25924It includes the following changes and improvements from LibreSSL 2.8.x:
Err codemadness.org 70 i 25925
API and Documentation Enhancements
Err codemadness.org 70 i 25929 Err codemadness.org 70 i 25930Compatibility Changes
Err codemadness.org 70 i 25949 Err codemadness.org 70 i 25950Testing and Proactive Security
Err codemadness.org 70 i 25962 Err codemadness.org 70 i 25963Internal Improvements
Err codemadness.org 70 i 25970 Err codemadness.org 70 i 25971Portable Improvements
Err codemadness.org 70 i 25994 Err codemadness.org 70 i 25995Bug Fixes
Err codemadness.org 70 i 26003 Err codemadness.org 70 i 26004Err codemadness.org 70 i 26018Err codemadness.org 70 i 26025 Err codemadness.org 70 i 26026The LibreSSL project continues improvement of the codebase to reflect modern, Err codemadness.org 70 i 26019 safe programming practices. We welcome feedback and improvements from the Err codemadness.org 70 i 26020 broader community. Thanks to all of the contributors who helped make this Err codemadness.org 70 i 26021 release possible.
Err codemadness.org 70 i 26022 Err codemadness.org 70 i 26023
Err codemadness.org 70 i 26024
Err codemadness.org 70 i 26029Err codemadness.org 70 i 26039 Err codemadness.org 70 i 26040I had a brilliant, hideous idea: to produce a charity edition of FreeBSD Mastery: Jails featuring the cover art I would use if I was imprisoned and did not have access to a real cover artist. (Never mind that I wouldn’t be permitted to release books while in jail: we creative sorts scoff at mere legal and cultural details.) Err codemadness.org 70 i 26030 I originally wanted to produce my own take on the book’s cover art. My first attempt failed spectacularly. Err codemadness.org 70 i 26031 I downgraded my expectations and tried again. And again. And again. Err codemadness.org 70 i 26032 I’m pleased to reveal the final cover for FreeBSD Mastery: Jails–Bail Bond Edition! Err codemadness.org 70 i 26033 This cover represents the very pinnacle of my artistic talents, and is the result of literally hours of effort. Err codemadness.org 70 i 26034 But, as this book is available only to the winner of charity fund-raisers, purchase of this tome represents moral supremacy. I recommend flaunting it to your family, coworkers, and all those of lesser character. Err codemadness.org 70 i 26035 Get your copy by winning the BSDCan 2019 charity auction… or any other other auction-type event I deem worthwhile. Err codemadness.org 70 i 26036 As far as my moral fiber goes: I have learned that art is hard, and that artists are not paid enough. Err codemadness.org 70 i 26037 And if I am ever imprisoned, I do hope that you’ll contribute to my bail fund. Otherwise, you’ll get more covers like this one.
Err codemadness.org 70 i 26038
Err codemadness.org 70 i 26045Err codemadness.org 70 i 26049 Err codemadness.org 70 i 26050It is common to describe ed(1) as being line oriented, as opposed to screen oriented editors like vi. This is completely accurate but it is perhaps not a complete enough description for today, because ed is line oriented in a way that is now uncommon. After all, you could say that your shell is line oriented too, and very few people use shells that work and feel the same way ed does. Err codemadness.org 70 i 26046 The surface difference between most people's shells and ed is that most people's shells have some version of cursor based interactive editing. The deeper difference is that this requires the shell to run in character by character TTY input mode, also called raw mode. By contrast, ed runs in what Unix usually calls cooked mode, where it reads whole lines from the kernel and the kernel handles things like backspace. All of ed's commands are designed so that they work in this line focused way (including being terminated by the end of the line), and as a whole ed's interface makes this whole line input approach natural. In fact I think ed makes it so natural that it's hard to think of things as being any other way. Ed was designed for line at a time input, not just to not be screen oriented. Err codemadness.org 70 i 26047 This input mode difference is not very important today, but in the days of V7 and serial terminals it made a real difference. In cooked mode, V7 ran very little code when you entered each character; almost everything was deferred until it could be processed in bulk by the kernel, and then handed to ed all in a single line which ed could also process all at once. A version of ed that tried to work in raw mode would have been much more resource intensive, even if it still operated on single lines at a time.
Err codemadness.org 70 i 26048
Err codemadness.org 70 i 26141Err codemadness.org 70 i 26145 Err codemadness.org 70 i 26146ZFS is very flexible about mountpoints, and there are many features available to provide great flexibility. Err codemadness.org 70 i 26142 When you create zpool maintank, the default mountpoint is /maintank. Err codemadness.org 70 i 26143 You might be happy with that, but you don’t have to be content. You can do magical things.
Err codemadness.org 70 i 26144
Err codemadness.org 70 i 26168Err codemadness.org 70 i 26189 Err codemadness.org 70 i 26190Folks, Err codemadness.org 70 i 26169 once again we are quite late for branching the next NetBSD release (NetBSD 9). Err codemadness.org 70 i 26170 Initially planned to happen early in February 2019, we are now approaching May and it is unlikely that the branch will happen before that. Err codemadness.org 70 i 26171 On the positive side, lots of good things landed in -current in between, like new Mesa, new jemalloc, lots of ZFS improvements - and some of those would be hard to pull up to the branch later. Err codemadness.org 70 i 26172 On the bad side we saw lots of churn in -current recently, and there is quite some fallout where we not even have a good overview right now. And this is where you can help:
Err codemadness.org 70 i 26173 Err codemadness.org 70 i 26174Err codemadness.org 70 i 26175
Err codemadness.org 70 i 26186 Err codemadness.org 70 i 26187- please test -current, on all the various machines you have
Err codemadness.org 70 i 26176 Err codemadness.org 70 i 26177- especially interesting would be test results from uncommon architectures Err codemadness.org 70 i 26178 or strange combinations (like the sparc userland on sparc64 kernel issue Err codemadness.org 70 i 26179 I ran in yesterday) Err codemadness.org 70 i 26180 Please test, report success, and file PRs for failures! Err codemadness.org 70 i 26181 We will likely announce the real branch date on quite short notice, the likely next candidates would be mid may or end of may. Err codemadness.org 70 i 26182 We may need to do extra steps after the branch (like switch some architectures back to old jemalloc on the branch). However, the less difference between -current and the branch, the easier will the release cycle go. Err codemadness.org 70 i 26183 Our goal is to have an unprecedented short release cycle this time. But.. Err codemadness.org 70 i 26184 we always say that upfront.
Err codemadness.org 70 i 26185
Err codemadness.org 70 i 26188
Err codemadness.org 70 i 26193Err codemadness.org 70 i 26199 Err codemadness.org 70 i 26200We have released LibreSSL 2.9.1, which will be arriving in the LibreSSL Err codemadness.org 70 i 26194 directory of your local OpenBSD mirror soon. This is the first stable release Err codemadness.org 70 i 26195 from the 2.9 series, which is also included with OpenBSD 6.5
Err codemadness.org 70 i 26196 Err codemadness.org 70 i 26197It includes the following changes and improvements from LibreSSL 2.8.x:
Err codemadness.org 70 i 26198
API and Documentation Enhancements
Err codemadness.org 70 i 26202 Err codemadness.org 70 i 26203Compatibility Changes
Err codemadness.org 70 i 26222 Err codemadness.org 70 i 26223Testing and Proactive Security
Err codemadness.org 70 i 26235 Err codemadness.org 70 i 26236Internal Improvements
Err codemadness.org 70 i 26243 Err codemadness.org 70 i 26244Portable Improvements
Err codemadness.org 70 i 26267 Err codemadness.org 70 i 26268Bug Fixes
Err codemadness.org 70 i 26276 Err codemadness.org 70 i 26277Err codemadness.org 70 i 26291Err codemadness.org 70 i 26298 Err codemadness.org 70 i 26299The LibreSSL project continues improvement of the codebase to reflect modern, Err codemadness.org 70 i 26292 safe programming practices. We welcome feedback and improvements from the Err codemadness.org 70 i 26293 broader community. Thanks to all of the contributors who helped make this Err codemadness.org 70 i 26294 release possible.
Err codemadness.org 70 i 26295 Err codemadness.org 70 i 26296
Err codemadness.org 70 i 26297
Err codemadness.org 70 i 26302Err codemadness.org 70 i 26312 Err codemadness.org 70 i 26313I had a brilliant, hideous idea: to produce a charity edition of FreeBSD Mastery: Jails featuring the cover art I would use if I was imprisoned and did not have access to a real cover artist. (Never mind that I wouldn’t be permitted to release books while in jail: we creative sorts scoff at mere legal and cultural details.) Err codemadness.org 70 i 26303 I originally wanted to produce my own take on the book’s cover art. My first attempt failed spectacularly. Err codemadness.org 70 i 26304 I downgraded my expectations and tried again. And again. And again. Err codemadness.org 70 i 26305 I’m pleased to reveal the final cover for FreeBSD Mastery: Jails–Bail Bond Edition! Err codemadness.org 70 i 26306 This cover represents the very pinnacle of my artistic talents, and is the result of literally hours of effort. Err codemadness.org 70 i 26307 But, as this book is available only to the winner of charity fund-raisers, purchase of this tome represents moral supremacy. I recommend flaunting it to your family, coworkers, and all those of lesser character. Err codemadness.org 70 i 26308 Get your copy by winning the BSDCan 2019 charity auction… or any other other auction-type event I deem worthwhile. Err codemadness.org 70 i 26309 As far as my moral fiber goes: I have learned that art is hard, and that artists are not paid enough. Err codemadness.org 70 i 26310 And if I am ever imprisoned, I do hope that you’ll contribute to my bail fund. Otherwise, you’ll get more covers like this one.
Err codemadness.org 70 i 26311
Err codemadness.org 70 i 26318Err codemadness.org 70 i 26322 Err codemadness.org 70 i 26323It is common to describe ed(1) as being line oriented, as opposed to screen oriented editors like vi. This is completely accurate but it is perhaps not a complete enough description for today, because ed is line oriented in a way that is now uncommon. After all, you could say that your shell is line oriented too, and very few people use shells that work and feel the same way ed does. Err codemadness.org 70 i 26319 The surface difference between most people's shells and ed is that most people's shells have some version of cursor based interactive editing. The deeper difference is that this requires the shell to run in character by character TTY input mode, also called raw mode. By contrast, ed runs in what Unix usually calls cooked mode, where it reads whole lines from the kernel and the kernel handles things like backspace. All of ed's commands are designed so that they work in this line focused way (including being terminated by the end of the line), and as a whole ed's interface makes this whole line input approach natural. In fact I think ed makes it so natural that it's hard to think of things as being any other way. Ed was designed for line at a time input, not just to not be screen oriented. Err codemadness.org 70 i 26320 This input mode difference is not very important today, but in the days of V7 and serial terminals it made a real difference. In cooked mode, V7 ran very little code when you entered each character; almost everything was deferred until it could be processed in bulk by the kernel, and then handed to ed all in a single line which ed could also process all at once. A version of ed that tried to work in raw mode would have been much more resource intensive, even if it still operated on single lines at a time.
Err codemadness.org 70 i 26321
Err codemadness.org 70 i 26527Err codemadness.org 70 i 26559 Err codemadness.org 70 i 26560One of the first syscalls which was created in Unix-like systems is unlink. In FreeBSD this syscall is number 10 (source) and in Linux, the number is dependent on the architecture but for most of them is also the tenth syscall (source). This indicated that this is one of the primary syscalls. The unlink syscall is very simple and we provide one single path to the file that we want to remove. Err codemadness.org 70 i 26528 The “removing file” process itself is very interesting so let’s spend a moment to understand the it. First, by removing the file we are removing a link from the directory to it. In Unix-like systems we can have many links to a single file (hard links). When we remove all links to the file, the file system will mark the blocks used by the file as free (a different file system will behave differently but let’s not jump into a second digression). This is why the process is called unlinking and not “removing file”. While we unlink the file two or three things will happen:
Err codemadness.org 70 i 26529 Err codemadness.org 70 i 26530Err codemadness.org 70 i 26531
Err codemadness.org 70 i 26556 Err codemadness.org 70 i 26557- We will remove an entry in the directory with the filename.
Err codemadness.org 70 i 26532 Err codemadness.org 70 i 26533- We will decrease a file reference count (in inode).
Err codemadness.org 70 i 26534 Err codemadness.org 70 i 26535- If links go to zero - the file will be removed from the disk (again this doesn't mean that the blocks from the disk will be filled with zeros, though this may happen depending on the file system and configuration. However, in most cases this means that the file system will mark those blocks to as free and use them to write new data later Err codemadness.org 70 i 26536 This mostly means that “removing file” from a directory is an operation on the directory and not on the file (inode) itself. Err codemadness.org 70 i 26537 Another interesting subject is what happens if our system will perform only first or second step from the list. This depends on the file system and this is also something we will leave for another time. Err codemadness.org 70 i 26538 The problem with the unlink and even unlinkat function is that we don’t have any guarantee of which file we really are unlinking. Err codemadness.org 70 i 26539 Err codemadness.org 70 i 26540 Err codemadness.org 70 i 26541
Err codemadness.org 70 i 26555Err codemadness.org 70 i 26542
Err codemadness.org 70 i 26554- When you delete a file using its name, you have no guarantee that someone has not already deleted the file, or renamed it, and created a new file with the name you are about to delete. Err codemadness.org 70 i 26543 We have some stats about the file that we want to unlink. We performed some tests. In the same time another process removed our file and recreated it. When we finally try to remove our file it is no longer the same file. It’s a classic race condition.
Err codemadness.org 70 i 26544 Err codemadness.org 70 i 26545- Many programs will perform checks before trying to remove a file, to make sure it is the correct file, that you have the correct permissions etc. However this exposes the ‘Time-of-Check / Time-of-Use’ class of bugs. I check if the file I am about to remove is the one I created yesterday, it is, so I call unlink() on it. However, between when I checked the date on the file, and when I call unlink, I, some program I am running, might have updated the file. Or a malicious user might have put some other file at that name, so I would be the one who deleted it. Err codemadness.org 70 i 26546 In Unix-like operating systems we can get a handle for our file called file - a descriptor. File descriptors guarantee us that all the operations that we will be performing on it are done on the same file (inode). Even if someone was to unlink a number of directories entries, the operating system will not free the structures behind the file descriptor, and we can detect the file that was removed by someone and recreated (or just unlinked). So, for example, we have an alternative functions fstat which allows us to get file status of the given descriptor Err codemadness.org 70 i 26547 We already know that the file may have many links on the disk which point to the single inode. What happens when we open the file? Simplifying: kernel creates a memory representation of the inode (the inode itself is stored on the disk) called vnode. This single representation is used by all processes to refer the inode to the disk. If in a process we open the same file (inode) using different names (for example through hard links) all those files will be linked to the single vnode. That means that the pathname is not stored in the kernel. Err codemadness.org 70 i 26548 This is basically the reason why we don’t have a funlink function so that instead of the path we are providing just the file descriptor to the file. If we performed the fdunlink syscall, the kernel wouldn’t know which directory entry you would like to remove. Another problem is more architectural: as we discussed earlier unlinking is really an operation on the directory not on the file (inode) itself, so using funlink(fd) may create some confusion because we are not removing the inode corresponding to the file descriptor, we are performing action on the directory which points to the file. Err codemadness.org 70 i 26549 After some discussion we decided that the only sensible option for FreeBSD would be to create a funlinkat() function. This syscall would only performs additional sanitary checks if we are removing a directory entry which corresponds to the inode stored which refers to the file descriptor. Err codemadness.org 70 i 26550 int funlinkat(int dfd, const char *path, int fd, int flags); Err codemadness.org 70 i 26551 The API above will check if the path opened relative to the dfd points to the same vnode. Thanks to that we removed a race condition because all those sanitary checks are performed in the kernel mode while the file system is locked and there is no possibility to change it. Err codemadness.org 70 i 26552 The fd parameter may be set to the FD_NONE value which will mean that the sanitary check should not be performed and funlinkat will behave just like unlinkat. Err codemadness.org 70 i 26553 As you can notice I often refer to the unlink syscall but at the end the APIs looks like unlinkat syscall. It is true that the unlink syscall is very old and kind of deprecated. That said I referred to unlink because it’s just simpler. These days unlink simply uses the same code as unlinkat.
Err codemadness.org 70 i 26558
Err codemadness.org 70 i 26563Err codemadness.org 70 i 26568 Err codemadness.org 70 i 26569I upgraded to AT&T's U-verse Gigabit internet service in 2017 and it came with an Arris BGW-210 as the WiFi AP and router. The BGW-210 is not a terrible device, but I already had my own Airport Extreme APs wired throughout my house and an OpenBSD router configured with various things, so I had no use for this device. It's also a potentially-insecure device that I can't upgrade or fully disable remote control over. Err codemadness.org 70 i 26564 Fully removing the BGW-210 is not possible as we'll see later, but it is possible to remove it from the routing path. This is how I did it with OpenBSD.
Err codemadness.org 70 i 26565 Err codemadness.org 70 i 26566
Err codemadness.org 70 i 26567
Err codemadness.org 70 i 26574Err codemadness.org 70 i 26580 Err codemadness.org 70 i 26581Do you have an old Raspberry Pi lying around gathering dust, maybe after a recent Pi upgrade? Are you curious about BSD Unix? If you answered "yes" to both of these questions, you'll be pleased to know that the first is the solution to the second, because you can run NetBSD, as far back as the very first release, on a Raspberry Pi. Err codemadness.org 70 i 26575 BSD is the Berkley Software Distribution of Unix. In fact, it's the only open source Unix with direct lineage back to the original source code written by Dennis Ritchie and Ken Thompson at Bell Labs. Other modern versions are either proprietary (such as AIX and Solaris) or clever re-implementations (such as Minix and GNU/Linux). If you're used to Linux, you'll feel mostly right at home with BSD, but there are plenty of new commands and conventions to discover. If you're still relatively new to open source, trying BSD is a good way to experience a traditional Unix. Err codemadness.org 70 i 26576 Admittedly, NetBSD isn't an operating system that's perfectly suited for the Pi. It's a minimal install compared to many Linux distributions designed specifically for the Pi, and not all components of recent Pi models are functional under NetBSD yet. However, it's arguably an ideal OS for the older Pi models, since it's lightweight and lovingly maintained. And if nothing else, it's a lot of fun for any die-hard Unix geek to experience another side of the POSIX world.
Err codemadness.org 70 i 26577 Err codemadness.org 70 i 26578
Err codemadness.org 70 i 26579
Err codemadness.org 70 i 26584Err codemadness.org 70 i 26592 Err codemadness.org 70 i 26593One of the big upcoming features that a bunch of people are looking forward to in ZFS is natively encrypted filesystems. This is already in the main development tree of ZFS On Linux, will likely propagate to FreeBSD (since FreeBSD ZFS will be based on ZoL), and will make it to Illumos if the Illumos people want to pull it in. People are looking forward to native encryption so much, in fact, that some of them have started using it in ZFS On Linux already, using either the development tip or one of the 0.8.0 release candidate pre-releases (ZoL is up to 0.8.0-rc3 as of now). People either doing this or planning to do this show up on the ZoL mailing list every so often.
Err codemadness.org 70 i 26585 Err codemadness.org 70 i 26586Err codemadness.org 70 i 26587
Err codemadness.org 70 i 26589 Err codemadness.org 70 i 26590- CFT for FreeBSD + ZoL
Err codemadness.org 70 i 26588
Err codemadness.org 70 i 26591
Err codemadness.org 70 i 26596Err codemadness.org 70 i 26601 Err codemadness.org 70 i 26602The rump anykernel architecture allows to run highly componentized kernel code configurations in userspace processes. Coupled with the rump sysproxy facility it is possible to run loosely distributed client-server "mini-operating systems". Since there is minimum configuration and the bootstrap time is measured in milliseconds, these environments are very cheap to set up, use, and tear down on-demand. Err codemadness.org 70 i 26597 This document acts as a tutorial on how to configure and use unmodified NetBSD kernel drivers as userspace services with utilities available from the NetBSD base system. As part of this, it presents various use cases. One uses the kernel cryptographic disk driver (cgd) to encrypt a partition. Another one demonstrates how to operate an FFS server for editing the contents of a file system even though your user account does not have privileges to use the host's mount() system call. Additionally, using a userspace TCP/IP server with an unmodified web browser is detailed.
Err codemadness.org 70 i 26598 Err codemadness.org 70 i 26599
Err codemadness.org 70 i 26600
Err codemadness.org 70 i 26605Err codemadness.org 70 i 26610 Err codemadness.org 70 i 26611As you may recall from previous posts, I am running an OpenBSD server on an APU2 air-cooled 3 Intel NIC box as my router/firewall for my secure home network. Given that all of my Internet traffic flows through this box, I thought it would be a cool idea to run an Intrusion Detection System (IDS) on it. Snort is the big hog of the open source world so I took a peek in the packages directory on one of the mirrors and lo and behold we have the latest & greatest version of Snort available! Thanks devs!!! Err codemadness.org 70 i 26606 I did some quick Googling and didn’t find much “modern” howto help out there so, after some trial and error, I have it up and running. I thought I’d give back in a small way and share a quickie howto for other Googlers out there who are looking for guidance. Here’s hoping that my title is good enough “SEO” to get you here!
Err codemadness.org 70 i 26607 Err codemadness.org 70 i 26608
Err codemadness.org 70 i 26609
Err codemadness.org 70 i 26662Err codemadness.org 70 i 26694 Err codemadness.org 70 i 26695One of the first syscalls which was created in Unix-like systems is unlink. In FreeBSD this syscall is number 10 (source) and in Linux, the number is dependent on the architecture but for most of them is also the tenth syscall (source). This indicated that this is one of the primary syscalls. The unlink syscall is very simple and we provide one single path to the file that we want to remove. Err codemadness.org 70 i 26663 The “removing file” process itself is very interesting so let’s spend a moment to understand the it. First, by removing the file we are removing a link from the directory to it. In Unix-like systems we can have many links to a single file (hard links). When we remove all links to the file, the file system will mark the blocks used by the file as free (a different file system will behave differently but let’s not jump into a second digression). This is why the process is called unlinking and not “removing file”. While we unlink the file two or three things will happen:
Err codemadness.org 70 i 26664 Err codemadness.org 70 i 26665Err codemadness.org 70 i 26666
Err codemadness.org 70 i 26691 Err codemadness.org 70 i 26692- We will remove an entry in the directory with the filename.
Err codemadness.org 70 i 26667 Err codemadness.org 70 i 26668- We will decrease a file reference count (in inode).
Err codemadness.org 70 i 26669 Err codemadness.org 70 i 26670- If links go to zero - the file will be removed from the disk (again this doesn't mean that the blocks from the disk will be filled with zeros, though this may happen depending on the file system and configuration. However, in most cases this means that the file system will mark those blocks to as free and use them to write new data later Err codemadness.org 70 i 26671 This mostly means that “removing file” from a directory is an operation on the directory and not on the file (inode) itself. Err codemadness.org 70 i 26672 Another interesting subject is what happens if our system will perform only first or second step from the list. This depends on the file system and this is also something we will leave for another time. Err codemadness.org 70 i 26673 The problem with the unlink and even unlinkat function is that we don’t have any guarantee of which file we really are unlinking. Err codemadness.org 70 i 26674 Err codemadness.org 70 i 26675 Err codemadness.org 70 i 26676
Err codemadness.org 70 i 26690Err codemadness.org 70 i 26677
Err codemadness.org 70 i 26689- When you delete a file using its name, you have no guarantee that someone has not already deleted the file, or renamed it, and created a new file with the name you are about to delete. Err codemadness.org 70 i 26678 We have some stats about the file that we want to unlink. We performed some tests. In the same time another process removed our file and recreated it. When we finally try to remove our file it is no longer the same file. It’s a classic race condition.
Err codemadness.org 70 i 26679 Err codemadness.org 70 i 26680- Many programs will perform checks before trying to remove a file, to make sure it is the correct file, that you have the correct permissions etc. However this exposes the ‘Time-of-Check / Time-of-Use’ class of bugs. I check if the file I am about to remove is the one I created yesterday, it is, so I call unlink() on it. However, between when I checked the date on the file, and when I call unlink, I, some program I am running, might have updated the file. Or a malicious user might have put some other file at that name, so I would be the one who deleted it. Err codemadness.org 70 i 26681 In Unix-like operating systems we can get a handle for our file called file - a descriptor. File descriptors guarantee us that all the operations that we will be performing on it are done on the same file (inode). Even if someone was to unlink a number of directories entries, the operating system will not free the structures behind the file descriptor, and we can detect the file that was removed by someone and recreated (or just unlinked). So, for example, we have an alternative functions fstat which allows us to get file status of the given descriptor Err codemadness.org 70 i 26682 We already know that the file may have many links on the disk which point to the single inode. What happens when we open the file? Simplifying: kernel creates a memory representation of the inode (the inode itself is stored on the disk) called vnode. This single representation is used by all processes to refer the inode to the disk. If in a process we open the same file (inode) using different names (for example through hard links) all those files will be linked to the single vnode. That means that the pathname is not stored in the kernel. Err codemadness.org 70 i 26683 This is basically the reason why we don’t have a funlink function so that instead of the path we are providing just the file descriptor to the file. If we performed the fdunlink syscall, the kernel wouldn’t know which directory entry you would like to remove. Another problem is more architectural: as we discussed earlier unlinking is really an operation on the directory not on the file (inode) itself, so using funlink(fd) may create some confusion because we are not removing the inode corresponding to the file descriptor, we are performing action on the directory which points to the file. Err codemadness.org 70 i 26684 After some discussion we decided that the only sensible option for FreeBSD would be to create a funlinkat() function. This syscall would only performs additional sanitary checks if we are removing a directory entry which corresponds to the inode stored which refers to the file descriptor. Err codemadness.org 70 i 26685 int funlinkat(int dfd, const char *path, int fd, int flags); Err codemadness.org 70 i 26686 The API above will check if the path opened relative to the dfd points to the same vnode. Thanks to that we removed a race condition because all those sanitary checks are performed in the kernel mode while the file system is locked and there is no possibility to change it. Err codemadness.org 70 i 26687 The fd parameter may be set to the FD_NONE value which will mean that the sanitary check should not be performed and funlinkat will behave just like unlinkat. Err codemadness.org 70 i 26688 As you can notice I often refer to the unlink syscall but at the end the APIs looks like unlinkat syscall. It is true that the unlink syscall is very old and kind of deprecated. That said I referred to unlink because it’s just simpler. These days unlink simply uses the same code as unlinkat.
Err codemadness.org 70 i 26693
Err codemadness.org 70 i 26698Err codemadness.org 70 i 26703 Err codemadness.org 70 i 26704I upgraded to AT&T's U-verse Gigabit internet service in 2017 and it came with an Arris BGW-210 as the WiFi AP and router. The BGW-210 is not a terrible device, but I already had my own Airport Extreme APs wired throughout my house and an OpenBSD router configured with various things, so I had no use for this device. It's also a potentially-insecure device that I can't upgrade or fully disable remote control over. Err codemadness.org 70 i 26699 Fully removing the BGW-210 is not possible as we'll see later, but it is possible to remove it from the routing path. This is how I did it with OpenBSD.
Err codemadness.org 70 i 26700 Err codemadness.org 70 i 26701
Err codemadness.org 70 i 26702
Err codemadness.org 70 i 26709Err codemadness.org 70 i 26715 Err codemadness.org 70 i 26716Do you have an old Raspberry Pi lying around gathering dust, maybe after a recent Pi upgrade? Are you curious about BSD Unix? If you answered "yes" to both of these questions, you'll be pleased to know that the first is the solution to the second, because you can run NetBSD, as far back as the very first release, on a Raspberry Pi. Err codemadness.org 70 i 26710 BSD is the Berkley Software Distribution of Unix. In fact, it's the only open source Unix with direct lineage back to the original source code written by Dennis Ritchie and Ken Thompson at Bell Labs. Other modern versions are either proprietary (such as AIX and Solaris) or clever re-implementations (such as Minix and GNU/Linux). If you're used to Linux, you'll feel mostly right at home with BSD, but there are plenty of new commands and conventions to discover. If you're still relatively new to open source, trying BSD is a good way to experience a traditional Unix. Err codemadness.org 70 i 26711 Admittedly, NetBSD isn't an operating system that's perfectly suited for the Pi. It's a minimal install compared to many Linux distributions designed specifically for the Pi, and not all components of recent Pi models are functional under NetBSD yet. However, it's arguably an ideal OS for the older Pi models, since it's lightweight and lovingly maintained. And if nothing else, it's a lot of fun for any die-hard Unix geek to experience another side of the POSIX world.
Err codemadness.org 70 i 26712 Err codemadness.org 70 i 26713
Err codemadness.org 70 i 26714
Err codemadness.org 70 i 26719Err codemadness.org 70 i 26727 Err codemadness.org 70 i 26728One of the big upcoming features that a bunch of people are looking forward to in ZFS is natively encrypted filesystems. This is already in the main development tree of ZFS On Linux, will likely propagate to FreeBSD (since FreeBSD ZFS will be based on ZoL), and will make it to Illumos if the Illumos people want to pull it in. People are looking forward to native encryption so much, in fact, that some of them have started using it in ZFS On Linux already, using either the development tip or one of the 0.8.0 release candidate pre-releases (ZoL is up to 0.8.0-rc3 as of now). People either doing this or planning to do this show up on the ZoL mailing list every so often.
Err codemadness.org 70 i 26720 Err codemadness.org 70 i 26721Err codemadness.org 70 i 26722
Err codemadness.org 70 i 26724 Err codemadness.org 70 i 26725- CFT for FreeBSD + ZoL
Err codemadness.org 70 i 26723
Err codemadness.org 70 i 26726
Err codemadness.org 70 i 26731Err codemadness.org 70 i 26736 Err codemadness.org 70 i 26737The rump anykernel architecture allows to run highly componentized kernel code configurations in userspace processes. Coupled with the rump sysproxy facility it is possible to run loosely distributed client-server "mini-operating systems". Since there is minimum configuration and the bootstrap time is measured in milliseconds, these environments are very cheap to set up, use, and tear down on-demand. Err codemadness.org 70 i 26732 This document acts as a tutorial on how to configure and use unmodified NetBSD kernel drivers as userspace services with utilities available from the NetBSD base system. As part of this, it presents various use cases. One uses the kernel cryptographic disk driver (cgd) to encrypt a partition. Another one demonstrates how to operate an FFS server for editing the contents of a file system even though your user account does not have privileges to use the host's mount() system call. Additionally, using a userspace TCP/IP server with an unmodified web browser is detailed.
Err codemadness.org 70 i 26733 Err codemadness.org 70 i 26734
Err codemadness.org 70 i 26735
Err codemadness.org 70 i 26740Err codemadness.org 70 i 26745 Err codemadness.org 70 i 26746As you may recall from previous posts, I am running an OpenBSD server on an APU2 air-cooled 3 Intel NIC box as my router/firewall for my secure home network. Given that all of my Internet traffic flows through this box, I thought it would be a cool idea to run an Intrusion Detection System (IDS) on it. Snort is the big hog of the open source world so I took a peek in the packages directory on one of the mirrors and lo and behold we have the latest & greatest version of Snort available! Thanks devs!!! Err codemadness.org 70 i 26741 I did some quick Googling and didn’t find much “modern” howto help out there so, after some trial and error, I have it up and running. I thought I’d give back in a small way and share a quickie howto for other Googlers out there who are looking for guidance. Here’s hoping that my title is good enough “SEO” to get you here!
Err codemadness.org 70 i 26742 Err codemadness.org 70 i 26743
Err codemadness.org 70 i 26744
Err codemadness.org 70 i 26911Err codemadness.org 70 i 26916 Err codemadness.org 70 i 26917Plan 9 from Bell Labs comes from the same stable as the UNIX operating system, which of course Linux was designed after, and Apple’s OS X runs on top of a certified UNIX operating system. Just like UNIX, Plan 9 was developed as a research O/S — a vehicle for trying out new concepts — with it building on key UNIX principles and taking the idea of devices are just files even further. Err codemadness.org 70 i 26912 In this post, we take a quick look at the Plan 9 O/S and some of the notable features, before moving on to the construction of a self-contained 4-node Raspberry Pi cluster that will provide a compact platform for experimentation.
Err codemadness.org 70 i 26913 Err codemadness.org 70 i 26914
Err codemadness.org 70 i 26915
Err codemadness.org 70 i 26920Err codemadness.org 70 i 26925 Err codemadness.org 70 i 26926I’m a big fan of tarpits: a network service that intentionally inserts delays in its protocol, slowing down clients by forcing them to wait. This arrests the speed at which a bad actor can attack or probe the host system, and it ties up some of the attacker’s resources that might otherwise be spent attacking another host. When done well, a tarpit imposes more cost on the attacker than the defender. Err codemadness.org 70 i 26921 The Internet is a very hostile place, and anyone who’s ever stood up an Internet-facing IPv4 host has witnessed the immediate and continuous attacks against their server. I’ve maintained such a server for nearly six years now, and more than 99% of my incoming traffic has ill intent. One part of my defenses has been tarpits in various forms.
Err codemadness.org 70 i 26922 Err codemadness.org 70 i 26923
Err codemadness.org 70 i 26924
Err codemadness.org 70 i 26931Err codemadness.org 70 i 26938 Err codemadness.org 70 i 26939The post written about rdist(1) on johan.huldtgren.com sparked Err codemadness.org 70 i 26932 us to write one as well. It's a great, underappreciated, tool. And we wanted to show how we wrapped doas(1) around it. Err codemadness.org 70 i 26933 There are two services in our infrastructure for which we were looking to keep the configuration in sync and to reload the process when the configuration had indeed changed. There is a pair of nsd(8)/unbound(8) hosts and a pair of hosts running relayd(8)/httpd(8) with carp(4) between them. Err codemadness.org 70 i 26934 We didn't have a requirement to go full configuration management with tools like Ansible or Salt Stack. And there wasn't any interest in building additional logic on top of rsync or repositories. > Enter rdist(1), rdist is a program to maintain identical copies of files over multiple hosts. It preserves the owner, group, mode, and mtime of files if possible and can update programs that are executing.
Err codemadness.org 70 i 26935 Err codemadness.org 70 i 26936
Err codemadness.org 70 i 26937
Err codemadness.org 70 i 26942Err codemadness.org 70 i 26948 Err codemadness.org 70 i 26949I was checking the other day and was appalled at how long it has been since I posted here. I had been working a job during 2018 that had me traveling 3,600 miles by air every week so that is at least a viable excuse. Err codemadness.org 70 i 26943 So what is my latest project? I wanted to get something better than the clunky old T500 “freedom laptop” that I could use as my daily driver. Some background here. My first paid gig as a programmer was on SunOS 4 (predecessor to Solaris) and Ultrix (on a DEC MicroVAX). I went from there to a Commodore Amiga (preemptive multitasking in 1985!). I went from there to OS/2 (I know, patron saint of lost causes) and then finally decided to “sell out” and move to Windows as the path of least resistance in the mid 90’s. Err codemadness.org 70 i 26944 My wife bought me an iPod literally just as they started working with computers other than Macs and I watched with fascination as Apple made the big gamble and moved away from PowerPC chips to Intel. That was the beginning of the Apple Fan Boi years for me. My gateway drug was a G4 MacMini and I managed somehow to get in on the pre-production, developer build of an Intel-based Mac. I was quite happy on the platform until about three years ago.
Err codemadness.org 70 i 26945 Err codemadness.org 70 i 26946
Err codemadness.org 70 i 26947
Err codemadness.org 70 i 26952Err codemadness.org 70 i 26956 Err codemadness.org 70 i 26957I created my first FreeBSD port recently. I found that FreeBSD didn't have a port for GoCD, which is a continuous integration and continuous deployment (CI/CD) system. This was a great opportunity to learn how to build a FreeBSD port while also contributing back to the community
Err codemadness.org 70 i 26953 Err codemadness.org 70 i 26954
Err codemadness.org 70 i 26955
Err codemadness.org 70 i 26960Err codemadness.org 70 i 26964 Err codemadness.org 70 i 26965Welcome to tilde.institute! This is an OpenBSD machine whose purpose is to provide a space in the tildeverse for experimentation with and education of the OpenBSD operating system. A variety of editors, shells, and compilers are installed to allow for development in a native OpenBSD environment. OpenBSD's httpd(8) is configured with slowcgi(8) as the fastcgi provider and sqlite3 available. This allows users to experiment with web development using compiled CGI in C, aka the BCHS Stack. In addition to php7.0 and mysql (mariadb) by request, this provides an environment where the development of complex web apps is possible.
Err codemadness.org 70 i 26961 Err codemadness.org 70 i 26962
Err codemadness.org 70 i 26963
Err codemadness.org 70 i 27015Err codemadness.org 70 i 27020 Err codemadness.org 70 i 27021Plan 9 from Bell Labs comes from the same stable as the UNIX operating system, which of course Linux was designed after, and Apple’s OS X runs on top of a certified UNIX operating system. Just like UNIX, Plan 9 was developed as a research O/S — a vehicle for trying out new concepts — with it building on key UNIX principles and taking the idea of devices are just files even further. Err codemadness.org 70 i 27016 In this post, we take a quick look at the Plan 9 O/S and some of the notable features, before moving on to the construction of a self-contained 4-node Raspberry Pi cluster that will provide a compact platform for experimentation.
Err codemadness.org 70 i 27017 Err codemadness.org 70 i 27018
Err codemadness.org 70 i 27019
Err codemadness.org 70 i 27024Err codemadness.org 70 i 27029 Err codemadness.org 70 i 27030I’m a big fan of tarpits: a network service that intentionally inserts delays in its protocol, slowing down clients by forcing them to wait. This arrests the speed at which a bad actor can attack or probe the host system, and it ties up some of the attacker’s resources that might otherwise be spent attacking another host. When done well, a tarpit imposes more cost on the attacker than the defender. Err codemadness.org 70 i 27025 The Internet is a very hostile place, and anyone who’s ever stood up an Internet-facing IPv4 host has witnessed the immediate and continuous attacks against their server. I’ve maintained such a server for nearly six years now, and more than 99% of my incoming traffic has ill intent. One part of my defenses has been tarpits in various forms.
Err codemadness.org 70 i 27026 Err codemadness.org 70 i 27027
Err codemadness.org 70 i 27028
Err codemadness.org 70 i 27035Err codemadness.org 70 i 27042 Err codemadness.org 70 i 27043The post written about rdist(1) on johan.huldtgren.com sparked Err codemadness.org 70 i 27036 us to write one as well. It's a great, underappreciated, tool. And we wanted to show how we wrapped doas(1) around it. Err codemadness.org 70 i 27037 There are two services in our infrastructure for which we were looking to keep the configuration in sync and to reload the process when the configuration had indeed changed. There is a pair of nsd(8)/unbound(8) hosts and a pair of hosts running relayd(8)/httpd(8) with carp(4) between them. Err codemadness.org 70 i 27038 We didn't have a requirement to go full configuration management with tools like Ansible or Salt Stack. And there wasn't any interest in building additional logic on top of rsync or repositories. > Enter rdist(1), rdist is a program to maintain identical copies of files over multiple hosts. It preserves the owner, group, mode, and mtime of files if possible and can update programs that are executing.
Err codemadness.org 70 i 27039 Err codemadness.org 70 i 27040
Err codemadness.org 70 i 27041
Err codemadness.org 70 i 27046Err codemadness.org 70 i 27052 Err codemadness.org 70 i 27053I was checking the other day and was appalled at how long it has been since I posted here. I had been working a job during 2018 that had me traveling 3,600 miles by air every week so that is at least a viable excuse. Err codemadness.org 70 i 27047 So what is my latest project? I wanted to get something better than the clunky old T500 “freedom laptop” that I could use as my daily driver. Some background here. My first paid gig as a programmer was on SunOS 4 (predecessor to Solaris) and Ultrix (on a DEC MicroVAX). I went from there to a Commodore Amiga (preemptive multitasking in 1985!). I went from there to OS/2 (I know, patron saint of lost causes) and then finally decided to “sell out” and move to Windows as the path of least resistance in the mid 90’s. Err codemadness.org 70 i 27048 My wife bought me an iPod literally just as they started working with computers other than Macs and I watched with fascination as Apple made the big gamble and moved away from PowerPC chips to Intel. That was the beginning of the Apple Fan Boi years for me. My gateway drug was a G4 MacMini and I managed somehow to get in on the pre-production, developer build of an Intel-based Mac. I was quite happy on the platform until about three years ago.
Err codemadness.org 70 i 27049 Err codemadness.org 70 i 27050
Err codemadness.org 70 i 27051
Err codemadness.org 70 i 27056Err codemadness.org 70 i 27060 Err codemadness.org 70 i 27061I created my first FreeBSD port recently. I found that FreeBSD didn't have a port for GoCD, which is a continuous integration and continuous deployment (CI/CD) system. This was a great opportunity to learn how to build a FreeBSD port while also contributing back to the community
Err codemadness.org 70 i 27057 Err codemadness.org 70 i 27058
Err codemadness.org 70 i 27059
Err codemadness.org 70 i 27064Err codemadness.org 70 i 27068 Err codemadness.org 70 i 27069Welcome to tilde.institute! This is an OpenBSD machine whose purpose is to provide a space in the tildeverse for experimentation with and education of the OpenBSD operating system. A variety of editors, shells, and compilers are installed to allow for development in a native OpenBSD environment. OpenBSD's httpd(8) is configured with slowcgi(8) as the fastcgi provider and sqlite3 available. This allows users to experiment with web development using compiled CGI in C, aka the BCHS Stack. In addition to php7.0 and mysql (mariadb) by request, this provides an environment where the development of complex web apps is possible.
Err codemadness.org 70 i 27065 Err codemadness.org 70 i 27066
Err codemadness.org 70 i 27067
###Interview - Michael W. Lucas - mwl@mwl.io / @mwlauthor
Err codemadness.org 70
i 27159 FreeBSD Mastery: Jails
###Interview - Michael W. Lucas - mwl@mwl.io / @mwlauthor
Err codemadness.org 70
i 27191 FreeBSD Mastery: Jails
##Headlines
Err codemadness.org 70
i 27362 ###AsiaBSDcon 2019 recap
Err codemadness.org 70 i 27371Err codemadness.org 70 i 27374Adventure in DRMland - Or how to write a FreeBSD ARM64 DRM driver by Emmanuel
Err codemadness.org 70 i 27373
Err codemadness.org 70 i 27372 Vadot
Err codemadness.org 70 i 27378Err codemadness.org 70 i 27386 Err codemadness.org 70 i 27387powerpc64 architecture support in FreeBSD ports by Piotr Kubaj
Err codemadness.org 70 i 27385
Err codemadness.org 70 i 27379 Managing System Images with ZFS by Allan Jude
Err codemadness.org 70 i 27380 FreeBSD - Improving block I/O compatibility in bhyve by Sergiu Weisz
Err codemadness.org 70 i 27381 Security Fantasies and Realities for the BSDs by George V.
Err codemadness.org 70 i 27382 Neville-Neil
Err codemadness.org 70 i 27383 ZRouter: Remote update of firmware by Hiroki Mori
Err codemadness.org 70 i 27384 Improving security of the FreeBSD boot process by Marcin Wojtas
Err codemadness.org 70 i 27390Err codemadness.org 70 i 27396Adventures in DRMland by Emmanuel Vadot
Err codemadness.org 70 i 27395
Err codemadness.org 70 i 27391 Intel HAXM by Kamil Rytarowski
Err codemadness.org 70 i 27392 BSD Solutions in Australian NGOs
Err codemadness.org 70 i 27393 Container Migration on FreeBSD by Yuhei Takagawa
Err codemadness.org 70 i 27394 Security Fantasies and Realities for the BSDs by George Neville-Neil
Err codemadness.org 70 i 27400Err codemadness.org 70 i 27403 Err codemadness.org 70 i 27404ZRouter: Remote update of firmware by Hiroki Mori
Err codemadness.org 70 i 27402
Err codemadness.org 70 i 27401 Improving security of the FreeBSD boot process by Marcin Wojtas
###FreeBSD Quarterly Status Report - Fourth Quarter 2018
Err codemadness.org 70 i 27410 Err codemadness.org 70 i 27411Err codemadness.org 70 i 27412Err codemadness.org 70 i 27417 Err codemadness.org 70 i 27418Since we are still on this island among many in this vast ocean of the Internet, we write this message in a bottle to inform you of the work we have finished and what lies ahead of us. These deeds that we have wrought with our minds and hands, they are for all to partake of - in the hopes that anyone of their free will, will join us in making improvements. In todays message the following by no means complete or ordered set of improvements and additions will be covered:
Err codemadness.org 70 i 27416
Err codemadness.org 70 i 27413 i386 PAE Pagetables for up to 24GB memory support, Continuous Integration efforts, driver updates to ENA and graphics, ARM enhancements such as RochChip, Marvell 8K, and Broadcom support as well as more DTS files, more Capsicum possibilities, as well as pfsync improvements, and many more things that you can read about for yourselves.
Err codemadness.org 70 i 27414 Additionally, we bring news from some islands further down stream, namely the nosh project, HardenedBSD, ClonOS, and the Polish BSD User-Group.
Err codemadness.org 70 i 27415 We would, selfishly, encourage those of you who give us the good word to please send in your submissions sooner than just before the deadline, and also encourage anyone willing to share the good word to please read the section on which submissions we’re also interested in having.
###GhostBSD: A Solid Linux-Like Open Source Alternative
Err codemadness.org 70 i 27421 Err codemadness.org 70 i 27422Err codemadness.org 70 i 27423Err codemadness.org 70 i 27430 Err codemadness.org 70 i 27431The subject of this week’s Linux Picks and Pans is a representative of a less well-known computing platform that coexists with Linux as an open source operating system. If you thought that the Linux kernel was the only open source engine for a free OS, think again. BSD (Berkeley Software Distribution) shares many of the same features that make Linux OSes viable alternatives to proprietary computing platforms.
Err codemadness.org 70 i 27429
Err codemadness.org 70 i 27424 GhostBSD is a user-friendly Linux-like desktop operating system based on TrueOS. TrueOS is, in turn, based on FreeBSD’s development branch. TrueOS’ goal is to combine the stability and security of FreeBSD with a preinstalled GNOME, MATE, Xfce, LXDE or Openbox graphical user interface.
Err codemadness.org 70 i 27425 I stumbled on TrueOS while checking out new desktop environments and features in recent new releases of a few obscure Linux distros. Along the way, I discovered that today’s BSD computing family is not the closed source Unix platform the “BSD” name might suggest.
Err codemadness.org 70 i 27426 In last week’s Redcore Linux review, I mentioned that the Lumina desktop environment was under development for an upcoming Redcore Linux release. Lumina is being developed primarily for BSD OSes. That led me to circle back to a review I wrote two years ago on Lumina being developed for Linux.
Err codemadness.org 70 i 27427 GhostBSD is a pleasant discovery. It has nothing to do with being spooky, either. That goes for both the distro and the open source computing family it exposes.
Err codemadness.org 70 i 27428 Keep reading to find out what piqued my excitement about Linux-like GhostBSD.
##News Roundup
Err codemadness.org 70
i 27434 ###SPARCbook 3000ST - The coolest 90s laptop
Err codemadness.org 70 i 27437Err codemadness.org 70 i 27440 Err codemadness.org 70 i 27441A few weeks back I managed to pick up an incredibly rare laptop in immaculate condition for $50 on Kijiji: a Tadpole Technologies SPARCbook 3000ST from 1997 (it also came with two other working Pentium laptops from the 1990s).
Err codemadness.org 70 i 27439
Err codemadness.org 70 i 27438 Sun computers were an expensive desire for many computer geeks in the 1990s, and running UNIX on a SPARC-based laptop was, well, just as cool as it gets. SPARC was an open hardware platform that anyone could make, and Tadpole licensed the Solaris UNIX operating system from Sun for their SPARCbooks. Tadpole essentially made high-end UNIX/VAX workstations on costly, unusual platforms (PowerPC, DEC Alpha, SPARC) but only their SPARCbooks were popular in the high-end UNIX market of the 1990s.
###OpenSSH 8.0 Releasing With Quantum Computing Resistant Keys
Err codemadness.org 70 i 27444 Err codemadness.org 70 i 27445Err codemadness.org 70 i 27446Err codemadness.org 70 i 27448 Err codemadness.org 70 i 27449OpenSSH 7.9 came out with a host of bug fixes last year with few new features, as is to be expected in minor releases. However, recently, Damien Miller has announced that OpenSSH 8.0 is nearly ready to be released. Currently, it’s undergoing testing to ensure compatibility across supported systems.
Err codemadness.org 70 i 27447
Err codemadness.org 70 i 27454Err codemadness.org 70 i 27458 Err codemadness.org 70 i 27459Better Security
Err codemadness.org 70 i 27457
Err codemadness.org 70 i 27455 Copying filenames with scp will be more secure in OpenSSH 8.0 due to the fact that copying filenames from a remote to local directory will prompt scp to check if the files sent from the server match your request. Otherwise, an attack server would theoretically be able to intercept the request by serving malicious files in place of the ones originally requested. Knowing this, you’re probably better off never using scp anyway. OpenSSH advises against it:
Err codemadness.org 70 i 27456 “The scp protocol is outdated, inflexible and not readily fixed. We recommend the use of more modern protocols like sftp and rsync for file transfer instead.”
Err codemadness.org 70 i 27464Err codemadness.org 70 i 27466 Err codemadness.org 70 i 27467ssh(1): When prompting whether to record a new host key, accept the key fingerprint as a synonym for “yes”. This allows the user to paste a fingerprint obtained out of band at the prompt and have the client do the comparison for you.
Err codemadness.org 70 i 27465
###Project Trident : 18.12-U8 Available
Err codemadness.org 70 i 27470 Err codemadness.org 70 i 27471Err codemadness.org 70 i 27472Err codemadness.org 70 i 27475 Err codemadness.org 70 i 27476Thank you all for your patience! Project Trident has finally finished some significant infrastructure updates over the last 2 weeks, and we are pleased to announce that package update 8 for 18.12-RELEASE is now available.
Err codemadness.org 70 i 27474
Err codemadness.org 70 i 27473 To switch to the new update, you will need to open the “Configuration” tab in the update manager and switch to the new “Trident-release” package repository. You can also perform this transition via the command line by running: sudo sysup --change-train Trident-release
##Beastie Bits
Err codemadness.org 70 i 27479 Err codemadness.org 70 i 27480##Feedback/Questions
Err codemadness.org 70 i 27493 Err codemadness.org 70 i 27494##Headlines
Err codemadness.org 70
i 27517 ###AsiaBSDcon 2019 recap
Err codemadness.org 70 i 27526Err codemadness.org 70 i 27529Adventure in DRMland - Or how to write a FreeBSD ARM64 DRM driver by Emmanuel
Err codemadness.org 70 i 27528
Err codemadness.org 70 i 27527 Vadot
Err codemadness.org 70 i 27533Err codemadness.org 70 i 27541 Err codemadness.org 70 i 27542powerpc64 architecture support in FreeBSD ports by Piotr Kubaj
Err codemadness.org 70 i 27540
Err codemadness.org 70 i 27534 Managing System Images with ZFS by Allan Jude
Err codemadness.org 70 i 27535 FreeBSD - Improving block I/O compatibility in bhyve by Sergiu Weisz
Err codemadness.org 70 i 27536 Security Fantasies and Realities for the BSDs by George V.
Err codemadness.org 70 i 27537 Neville-Neil
Err codemadness.org 70 i 27538 ZRouter: Remote update of firmware by Hiroki Mori
Err codemadness.org 70 i 27539 Improving security of the FreeBSD boot process by Marcin Wojtas
Err codemadness.org 70 i 27545Err codemadness.org 70 i 27551Adventures in DRMland by Emmanuel Vadot
Err codemadness.org 70 i 27550
Err codemadness.org 70 i 27546 Intel HAXM by Kamil Rytarowski
Err codemadness.org 70 i 27547 BSD Solutions in Australian NGOs
Err codemadness.org 70 i 27548 Container Migration on FreeBSD by Yuhei Takagawa
Err codemadness.org 70 i 27549 Security Fantasies and Realities for the BSDs by George Neville-Neil
Err codemadness.org 70 i 27555Err codemadness.org 70 i 27558 Err codemadness.org 70 i 27559ZRouter: Remote update of firmware by Hiroki Mori
Err codemadness.org 70 i 27557
Err codemadness.org 70 i 27556 Improving security of the FreeBSD boot process by Marcin Wojtas
###FreeBSD Quarterly Status Report - Fourth Quarter 2018
Err codemadness.org 70 i 27565 Err codemadness.org 70 i 27566Err codemadness.org 70 i 27567Err codemadness.org 70 i 27572 Err codemadness.org 70 i 27573Since we are still on this island among many in this vast ocean of the Internet, we write this message in a bottle to inform you of the work we have finished and what lies ahead of us. These deeds that we have wrought with our minds and hands, they are for all to partake of - in the hopes that anyone of their free will, will join us in making improvements. In todays message the following by no means complete or ordered set of improvements and additions will be covered:
Err codemadness.org 70 i 27571
Err codemadness.org 70 i 27568 i386 PAE Pagetables for up to 24GB memory support, Continuous Integration efforts, driver updates to ENA and graphics, ARM enhancements such as RochChip, Marvell 8K, and Broadcom support as well as more DTS files, more Capsicum possibilities, as well as pfsync improvements, and many more things that you can read about for yourselves.
Err codemadness.org 70 i 27569 Additionally, we bring news from some islands further down stream, namely the nosh project, HardenedBSD, ClonOS, and the Polish BSD User-Group.
Err codemadness.org 70 i 27570 We would, selfishly, encourage those of you who give us the good word to please send in your submissions sooner than just before the deadline, and also encourage anyone willing to share the good word to please read the section on which submissions we’re also interested in having.
###GhostBSD: A Solid Linux-Like Open Source Alternative
Err codemadness.org 70 i 27576 Err codemadness.org 70 i 27577Err codemadness.org 70 i 27578Err codemadness.org 70 i 27585 Err codemadness.org 70 i 27586The subject of this week’s Linux Picks and Pans is a representative of a less well-known computing platform that coexists with Linux as an open source operating system. If you thought that the Linux kernel was the only open source engine for a free OS, think again. BSD (Berkeley Software Distribution) shares many of the same features that make Linux OSes viable alternatives to proprietary computing platforms.
Err codemadness.org 70 i 27584
Err codemadness.org 70 i 27579 GhostBSD is a user-friendly Linux-like desktop operating system based on TrueOS. TrueOS is, in turn, based on FreeBSD’s development branch. TrueOS’ goal is to combine the stability and security of FreeBSD with a preinstalled GNOME, MATE, Xfce, LXDE or Openbox graphical user interface.
Err codemadness.org 70 i 27580 I stumbled on TrueOS while checking out new desktop environments and features in recent new releases of a few obscure Linux distros. Along the way, I discovered that today’s BSD computing family is not the closed source Unix platform the “BSD” name might suggest.
Err codemadness.org 70 i 27581 In last week’s Redcore Linux review, I mentioned that the Lumina desktop environment was under development for an upcoming Redcore Linux release. Lumina is being developed primarily for BSD OSes. That led me to circle back to a review I wrote two years ago on Lumina being developed for Linux.
Err codemadness.org 70 i 27582 GhostBSD is a pleasant discovery. It has nothing to do with being spooky, either. That goes for both the distro and the open source computing family it exposes.
Err codemadness.org 70 i 27583 Keep reading to find out what piqued my excitement about Linux-like GhostBSD.
##News Roundup
Err codemadness.org 70
i 27589 ###SPARCbook 3000ST - The coolest 90s laptop
Err codemadness.org 70 i 27592Err codemadness.org 70 i 27595 Err codemadness.org 70 i 27596A few weeks back I managed to pick up an incredibly rare laptop in immaculate condition for $50 on Kijiji: a Tadpole Technologies SPARCbook 3000ST from 1997 (it also came with two other working Pentium laptops from the 1990s).
Err codemadness.org 70 i 27594
Err codemadness.org 70 i 27593 Sun computers were an expensive desire for many computer geeks in the 1990s, and running UNIX on a SPARC-based laptop was, well, just as cool as it gets. SPARC was an open hardware platform that anyone could make, and Tadpole licensed the Solaris UNIX operating system from Sun for their SPARCbooks. Tadpole essentially made high-end UNIX/VAX workstations on costly, unusual platforms (PowerPC, DEC Alpha, SPARC) but only their SPARCbooks were popular in the high-end UNIX market of the 1990s.
###OpenSSH 8.0 Releasing With Quantum Computing Resistant Keys
Err codemadness.org 70 i 27599 Err codemadness.org 70 i 27600Err codemadness.org 70 i 27601Err codemadness.org 70 i 27603 Err codemadness.org 70 i 27604OpenSSH 7.9 came out with a host of bug fixes last year with few new features, as is to be expected in minor releases. However, recently, Damien Miller has announced that OpenSSH 8.0 is nearly ready to be released. Currently, it’s undergoing testing to ensure compatibility across supported systems.
Err codemadness.org 70 i 27602
Err codemadness.org 70 i 27609Err codemadness.org 70 i 27613 Err codemadness.org 70 i 27614Better Security
Err codemadness.org 70 i 27612
Err codemadness.org 70 i 27610 Copying filenames with scp will be more secure in OpenSSH 8.0 due to the fact that copying filenames from a remote to local directory will prompt scp to check if the files sent from the server match your request. Otherwise, an attack server would theoretically be able to intercept the request by serving malicious files in place of the ones originally requested. Knowing this, you’re probably better off never using scp anyway. OpenSSH advises against it:
Err codemadness.org 70 i 27611 “The scp protocol is outdated, inflexible and not readily fixed. We recommend the use of more modern protocols like sftp and rsync for file transfer instead.”
Err codemadness.org 70 i 27619Err codemadness.org 70 i 27621 Err codemadness.org 70 i 27622ssh(1): When prompting whether to record a new host key, accept the key fingerprint as a synonym for “yes”. This allows the user to paste a fingerprint obtained out of band at the prompt and have the client do the comparison for you.
Err codemadness.org 70 i 27620
###Project Trident : 18.12-U8 Available
Err codemadness.org 70 i 27625 Err codemadness.org 70 i 27626Err codemadness.org 70 i 27627Err codemadness.org 70 i 27630 Err codemadness.org 70 i 27631Thank you all for your patience! Project Trident has finally finished some significant infrastructure updates over the last 2 weeks, and we are pleased to announce that package update 8 for 18.12-RELEASE is now available.
Err codemadness.org 70 i 27629
Err codemadness.org 70 i 27628 To switch to the new update, you will need to open the “Configuration” tab in the update manager and switch to the new “Trident-release” package repository. You can also perform this transition via the command line by running: sudo sysup --change-train Trident-release
##Beastie Bits
Err codemadness.org 70 i 27634 Err codemadness.org 70 i 27635##Feedback/Questions
Err codemadness.org 70 i 27648 Err codemadness.org 70 i 27649##Headlines
Err codemadness.org 70 i 27800 Err codemadness.org 70 i 27801###Tracking a storage issue led to software change
Err codemadness.org 70 i 27802 Err codemadness.org 70 i 27803Err codemadness.org 70 i 27804Err codemadness.org 70 i 27808 Err codemadness.org 70 i 27809Early last year we completed a massive migration that moved our customers’ hosting data off of a legacy datacenter (that we called FR-SD2) onto several new datacenters (that we call FR-SD3, FR-SD5, and FR-SD6) with much more modern, up-to-date infrastructure.
Err codemadness.org 70 i 27807
Err codemadness.org 70 i 27805 This migration required several changes in both the software and hardware we use, including switching the operating system on our storage units to FreeBSD.
Err codemadness.org 70 i 27806 Currently, we use the NFS protocol to provide storage and export the filesystems on Simple Hosting, our web hosting service, and the FreeBSD kernel includes an NFS server for just this purpose.
Err codemadness.org 70 i 27814Err codemadness.org 70 i 27816 Err codemadness.org 70 i 27817While migrating virtual disks of Simple Hosting instances from FR-SD2, we noticed high CPU load spikes on the new storage units.
Err codemadness.org 70 i 27815
Err codemadness.org 70 i 27822Err codemadness.org 70 i 27824 Err codemadness.org 70 i 27825Ever since Unix burst onto the scene within the early '70s, observers within the pc world have been fast to put in writing it off as a unusual working system designed by and for knowledgeable programmers. Regardless of their proclamations, Unix refuses to die. Means again in 1985, Stewart Cheifet puzzled if Unix would turn out to be the usual working system of the longer term on the PBS present “The Laptop Chronicles,” though MS-DOS was effectively in its heyday. In 2018, it is clear that Unix actually is the usual working system, not on desktop PCs, however on smartphones and tablets.
Err codemadness.org 70 i 27823
Err codemadness.org 70 i 27830Err codemadness.org 70 i 27833 Err codemadness.org 70 i 27834It is also the usual system for net servers. The actual fact is, hundreds of thousands of individuals all over the world have interacted with Linux and Unix programs daily, most of whom have by no means written a line of code of their lives.
Err codemadness.org 70 i 27832
Err codemadness.org 70 i 27831 So what makes Unix so beloved by programmers and different techie sorts? Let’s check out a few of issues this working system has going for it. (For some background on Unix, try The Historical past of Unix: From Bell Labs to the iPhone.)
##News Roundup
Err codemadness.org 70
i 27837 ###What you need may be “pipeline +Unix commands” only
Err codemadness.org 70 i 27840Err codemadness.org 70 i 27844 Err codemadness.org 70 i 27845I came across Taco Bell Programming recently, and think this article is worthy to read for every software engineer. The post mentions a scenario which you may consider to use Hadoop to solve but actually xargs may be a simpler and better choice. This reminds me a similar experience: last year a client wanted me to process a data file which has 5 million records. After some investigations, no novel technologies, a concise awk script (less than 10 lines) worked like a charm! What surprised me more is that awk is just a single-thread program, no nifty concurrency involved.
Err codemadness.org 70 i 27843
Err codemadness.org 70 i 27841 The IT field never lacks “new” technologies: cloud computing, big data, high concurrency, etc. However, the thinkings behind these “fancy” words may date back to the era when Unix arose. Unix command line tools are invaluable treasure. In many cases, picking the right components and using pipeline to glue them can satisfy your requirement perfectly. So spending some time in reviewing Unixcommand line manual instead of chasing state-of-the-art techniques exhaustedly, you may gain more.
Err codemadness.org 70 i 27842 BTW, if your data set can be disposed by an awk script, it should not be called “big data”.
###Running a bakery on Emacs and PostgreSQL
Err codemadness.org 70 i 27852 Err codemadness.org 70 i 27853Err codemadness.org 70 i 27854Err codemadness.org 70 i 27858 Err codemadness.org 70 i 27859Just over a year ago now, I finally opened the bakery I’d been dreaming of for years. It’s been a big change in my life, from spending all my time sat in front of a computer, to spending most of it making actual stuff. And stuff that makes people happy, at that. It’s been a huge change, but I can’t think of a single job change that’s ever made me as happy as this one.
Err codemadness.org 70 i 27857
Err codemadness.org 70 i 27855 One of the big changes that came with going pro was that suddenly I was having to work out how much stuff I needed to mix to fill the orders I needed. On the face of it, this is really simple, just work out how much dough you need, then work out what quantities to mix to make that much dough. Easy. You can do it with a pencil and paper. Or, in traditional bakers’ fashion, by scrawling with your finger on a floured work bench.
Err codemadness.org 70 i 27856 And that’s how I coped for a few weeks early on. But I kept making mistakes, which makes for an inconsistent product (bread is very forgiving, you have to work quite hard to make something that isn’t bread, but consistency matters). I needed to automate.
###The Ultimate Guide To Memorable Tech Talks
Err codemadness.org 70 i 27862 Err codemadness.org 70 i 27863Err codemadness.org 70 i 27864Err codemadness.org 70 i 27868 Err codemadness.org 70 i 27869Imagine this. You’re a woman in a male-dominated field. English is not your first language. Even though you’re confident in your engineering work, the thought of public speaking and being recorded for the world to see absolutely terrifies you.
Err codemadness.org 70 i 27867
Err codemadness.org 70 i 27865 That was me, five years ago. Since then, I’ve moved into a successful career in Developer Advocacy and spoken at dozens of technical events in the U.S. and worldwide.
Err codemadness.org 70 i 27866 I think everyone has the ability to deliver stellar conference talks, which is why I took the time to write this post.
###Light-weight Contexts: An OS Abstraction for Safety and Performance (2016)
Err codemadness.org 70 i 27883 Err codemadness.org 70 i 27884Err codemadness.org 70 i 27885Err codemadness.org 70 i 27888 Err codemadness.org 70 i 27889Abstract: “We introduce a new OS abstraction—light-weight con-texts (lwCs)—that provides independent units of protection, privilege, and execution state within a process. A process may include several lwCs, each with possibly different views of memory, file descriptors, and access capabilities. lwCs can be used to efficiently implement roll-back (process can return to a prior recorded state),isolated address spaces (lwCs within the process may have different views of memory, e.g., isolating sensitive data from network-facing components or isolating different user sessions), and privilege separation (in-process reference monitors can arbitrate and control access).
Err codemadness.org 70 i 27887
Err codemadness.org 70 i 27886 lwCs can be implemented efficiently: the overhead of a lwC is proportional to the amount of memory exclusive to the lwC; switching lwCs is quicker than switching kernel threads within the same process. We describe the lwC abstraction and API, and an implementation of lwCs within the FreeBSD 11.0 kernel. Finally, we present an evaluation of common usage patterns, including fast roll-back, session isolation, sensitive data isolation, and in-process reference monitoring, using Apache, nginx, PHP,and OpenSSL.”
##Beastie Bits
Err codemadness.org 70 i 27892 Err codemadness.org 70 i 27893##Feedback/Questions
Err codemadness.org 70 i 27911 Err codemadness.org 70 i 27912Charles - Volunteer work
Err codemadness.org 70 i 27918Jake - Bhyve Front Ends
Err codemadness.org 70 i 27921We’ve hit that point where we are running low on your questions, so if you have any questions rolling around in your head that you’ve not thought of to ask yet… send them in!
Err codemadness.org 70 i 27924##Headlines
Err codemadness.org 70 i 27944 Err codemadness.org 70 i 27945###Tracking a storage issue led to software change
Err codemadness.org 70 i 27946 Err codemadness.org 70 i 27947Err codemadness.org 70 i 27948Err codemadness.org 70 i 27952 Err codemadness.org 70 i 27953Early last year we completed a massive migration that moved our customers’ hosting data off of a legacy datacenter (that we called FR-SD2) onto several new datacenters (that we call FR-SD3, FR-SD5, and FR-SD6) with much more modern, up-to-date infrastructure.
Err codemadness.org 70 i 27951
Err codemadness.org 70 i 27949 This migration required several changes in both the software and hardware we use, including switching the operating system on our storage units to FreeBSD.
Err codemadness.org 70 i 27950 Currently, we use the NFS protocol to provide storage and export the filesystems on Simple Hosting, our web hosting service, and the FreeBSD kernel includes an NFS server for just this purpose.
Err codemadness.org 70 i 27958Err codemadness.org 70 i 27960 Err codemadness.org 70 i 27961While migrating virtual disks of Simple Hosting instances from FR-SD2, we noticed high CPU load spikes on the new storage units.
Err codemadness.org 70 i 27959
Err codemadness.org 70 i 27966Err codemadness.org 70 i 27968 Err codemadness.org 70 i 27969Ever since Unix burst onto the scene within the early '70s, observers within the pc world have been fast to put in writing it off as a unusual working system designed by and for knowledgeable programmers. Regardless of their proclamations, Unix refuses to die. Means again in 1985, Stewart Cheifet puzzled if Unix would turn out to be the usual working system of the longer term on the PBS present “The Laptop Chronicles,” though MS-DOS was effectively in its heyday. In 2018, it is clear that Unix actually is the usual working system, not on desktop PCs, however on smartphones and tablets.
Err codemadness.org 70 i 27967
Err codemadness.org 70 i 27974Err codemadness.org 70 i 27977 Err codemadness.org 70 i 27978It is also the usual system for net servers. The actual fact is, hundreds of thousands of individuals all over the world have interacted with Linux and Unix programs daily, most of whom have by no means written a line of code of their lives.
Err codemadness.org 70 i 27976
Err codemadness.org 70 i 27975 So what makes Unix so beloved by programmers and different techie sorts? Let’s check out a few of issues this working system has going for it. (For some background on Unix, try The Historical past of Unix: From Bell Labs to the iPhone.)
##News Roundup
Err codemadness.org 70
i 27981 ###What you need may be “pipeline +Unix commands” only
Err codemadness.org 70 i 27984Err codemadness.org 70 i 27988 Err codemadness.org 70 i 27989I came across Taco Bell Programming recently, and think this article is worthy to read for every software engineer. The post mentions a scenario which you may consider to use Hadoop to solve but actually xargs may be a simpler and better choice. This reminds me a similar experience: last year a client wanted me to process a data file which has 5 million records. After some investigations, no novel technologies, a concise awk script (less than 10 lines) worked like a charm! What surprised me more is that awk is just a single-thread program, no nifty concurrency involved.
Err codemadness.org 70 i 27987
Err codemadness.org 70 i 27985 The IT field never lacks “new” technologies: cloud computing, big data, high concurrency, etc. However, the thinkings behind these “fancy” words may date back to the era when Unix arose. Unix command line tools are invaluable treasure. In many cases, picking the right components and using pipeline to glue them can satisfy your requirement perfectly. So spending some time in reviewing Unixcommand line manual instead of chasing state-of-the-art techniques exhaustedly, you may gain more.
Err codemadness.org 70 i 27986 BTW, if your data set can be disposed by an awk script, it should not be called “big data”.
###Running a bakery on Emacs and PostgreSQL
Err codemadness.org 70 i 27996 Err codemadness.org 70 i 27997Err codemadness.org 70 i 27998Err codemadness.org 70 i 28002 Err codemadness.org 70 i 28003Just over a year ago now, I finally opened the bakery I’d been dreaming of for years. It’s been a big change in my life, from spending all my time sat in front of a computer, to spending most of it making actual stuff. And stuff that makes people happy, at that. It’s been a huge change, but I can’t think of a single job change that’s ever made me as happy as this one.
Err codemadness.org 70 i 28001
Err codemadness.org 70 i 27999 One of the big changes that came with going pro was that suddenly I was having to work out how much stuff I needed to mix to fill the orders I needed. On the face of it, this is really simple, just work out how much dough you need, then work out what quantities to mix to make that much dough. Easy. You can do it with a pencil and paper. Or, in traditional bakers’ fashion, by scrawling with your finger on a floured work bench.
Err codemadness.org 70 i 28000 And that’s how I coped for a few weeks early on. But I kept making mistakes, which makes for an inconsistent product (bread is very forgiving, you have to work quite hard to make something that isn’t bread, but consistency matters). I needed to automate.
###The Ultimate Guide To Memorable Tech Talks
Err codemadness.org 70 i 28006 Err codemadness.org 70 i 28007Err codemadness.org 70 i 28008Err codemadness.org 70 i 28012 Err codemadness.org 70 i 28013Imagine this. You’re a woman in a male-dominated field. English is not your first language. Even though you’re confident in your engineering work, the thought of public speaking and being recorded for the world to see absolutely terrifies you.
Err codemadness.org 70 i 28011
Err codemadness.org 70 i 28009 That was me, five years ago. Since then, I’ve moved into a successful career in Developer Advocacy and spoken at dozens of technical events in the U.S. and worldwide.
Err codemadness.org 70 i 28010 I think everyone has the ability to deliver stellar conference talks, which is why I took the time to write this post.
###Light-weight Contexts: An OS Abstraction for Safety and Performance (2016)
Err codemadness.org 70 i 28027 Err codemadness.org 70 i 28028Err codemadness.org 70 i 28029Err codemadness.org 70 i 28032 Err codemadness.org 70 i 28033Abstract: “We introduce a new OS abstraction—light-weight con-texts (lwCs)—that provides independent units of protection, privilege, and execution state within a process. A process may include several lwCs, each with possibly different views of memory, file descriptors, and access capabilities. lwCs can be used to efficiently implement roll-back (process can return to a prior recorded state),isolated address spaces (lwCs within the process may have different views of memory, e.g., isolating sensitive data from network-facing components or isolating different user sessions), and privilege separation (in-process reference monitors can arbitrate and control access).
Err codemadness.org 70 i 28031
Err codemadness.org 70 i 28030 lwCs can be implemented efficiently: the overhead of a lwC is proportional to the amount of memory exclusive to the lwC; switching lwCs is quicker than switching kernel threads within the same process. We describe the lwC abstraction and API, and an implementation of lwCs within the FreeBSD 11.0 kernel. Finally, we present an evaluation of common usage patterns, including fast roll-back, session isolation, sensitive data isolation, and in-process reference monitoring, using Apache, nginx, PHP,and OpenSSL.”
##Beastie Bits
Err codemadness.org 70 i 28036 Err codemadness.org 70 i 28037##Feedback/Questions
Err codemadness.org 70 i 28055 Err codemadness.org 70 i 28056Charles - Volunteer work
Err codemadness.org 70 i 28062Jake - Bhyve Front Ends
Err codemadness.org 70 i 28065We’ve hit that point where we are running low on your questions, so if you have any questions rolling around in your head that you’ve not thought of to ask yet… send them in!
Err codemadness.org 70 i 28068##Headlines
Err codemadness.org 70
i 28201 ###ARM’d and dangerous: FreeBSD on Cavium ThunderX (aarch64)
Err codemadness.org 70 i 28204Err codemadness.org 70 i 28207 Err codemadness.org 70 i 28208While I don’t remember for how many years I’ve had an interest in CPU architectures that could be an alternative to AMD64, I know pretty well when I started proposing to test 64-bit ARM at work. It was shortly after the disaster named Spectre / Meltdown that I first dug out server-class ARM hardware and asked whether we should get one such server and run some tests with it.
Err codemadness.org 70 i 28206
Err codemadness.org 70 i 28205 While the answer wasn’t a clear “no” it also wasn’t exactly “yes”. I tried again a few times over the course of 2018 and each time I presented some more points why I thought it might be a good thing to test this. But still I wasn’t able to get a positive answer. Finally in January 2019 year I got a definitive answer – and it was “yes, go ahead”! The fact that Amazon had just presented their Graviton ARM Processor may have helped the decision.
###Looking at NetBSD from an OpenBSD user perspective
Err codemadness.org 70 i 28211 Err codemadness.org 70 i 28212Err codemadness.org 70 i 28213Err codemadness.org 70 i 28215 Err codemadness.org 70 i 28216I use to use NetBSD quite a lot. From 2.0 to 6.99. But for some reasons, I stopped using it about 2012, in favor of OpenBSD. Reading on the new 8 release, I wanted to see if all the things I didn’t like on NetBSD were gone. Here is a personal Pros / Cons list. No Troll, hopefully. Just trying to be objective.
Err codemadness.org 70 i 28214
Err codemadness.org 70 i 28223Err codemadness.org 70 i 28226 Err codemadness.org 70 i 28227So that was it. I didn’t spend more than 30 minutes of it. But I didn’t want to spend more time on it. I did stop using NetBSD because of the need to compile each and every packages ; it was in the early days of pkgin. I also didn’t like the way system maintenance was to be done. OpenBSD’s 6-months release seemed far more easy to manage. I still think NetBSD is a great OS. But I believe you have to spent more time on it than you would have to do with OpenBSD.
Err codemadness.org 70 i 28225
Err codemadness.org 70 i 28224 That said, I’ll keep using my Puffy OS.
##News Roundup
Err codemadness.org 70
i 28230 ###Using Vim to take time-stamped notes
Err codemadness.org 70 i 28233Err codemadness.org 70 i 28237 Err codemadness.org 70 i 28238I frequently find myself needing to take time-stamped notes. Specifically, I’ll be in a call, meeting, or interview and need to take notes that show how long it’s been since the meeting started.
Err codemadness.org 70 i 28236
Err codemadness.org 70 i 28234 My first thought was that there’s be a plugin to add time stamps, but a quick search didn’t turn anything up. However, I little digging did turn up the fact that vim has the built-in ability to tell time.
Err codemadness.org 70 i 28235 This means that writing a bit of vimscript to insert a time stamp is pretty easy. After a bit of fiddling, I came up with something that serves my needs, and I decided it might be useful enough to others to be worth sharing.
###OpenBSD 6.5-beta has been tagged
Err codemadness.org 70 i 28245 Err codemadness.org 70 i 28246Err codemadness.org 70 i 28247Err codemadness.org 70 i 28249 Err codemadness.org 70 i 28250It’s that time of year again; Theo (deraadt@) has just tagged 6.5-beta. A good reminder for us all run an extra test install and see if your favorite port still works as you expect.
Err codemadness.org 70 i 28248
CVSROOT: /cvs
Err codemadness.org 70
i 28251 Module name: src
Err codemadness.org 70
i 28252 Changes by: deraadt@cvs.openbsd.org 2019/02/26 15:24:41
Err codemadness.org 70
i 28253
Err codemadness.org 70
i 28254 Modified files:
Err codemadness.org 70
i 28255 etc/root : root.mail
Err codemadness.org 70
i 28256 share/mk : sys.mk
Err codemadness.org 70
i 28257 sys/conf : newvers.sh
Err codemadness.org 70
i 28258 sys/sys : ktrace.h param.h
Err codemadness.org 70
i 28259 usr.bin/signify: signify.1
Err codemadness.org 70
i 28260 sys/arch/macppc/stand/tbxidata: bsd.tbxi
Err codemadness.org 70
i 28261
Err codemadness.org 70
i 28262 Log message:
Err codemadness.org 70
i 28263 crank to 6.5-beta
Err codemadness.org 70
i 28264
###The NetBSD Foundation participating in Google Summer of Code 2019
Err codemadness.org 70 i 28269 Err codemadness.org 70 i 28270Err codemadness.org 70 i 28271Err codemadness.org 70 i 28276 Err codemadness.org 70 i 28277For the 4th year in a row and for the 13th time The NetBSD Foundation will participate in Google Summer of Code 2019!
Err codemadness.org 70 i 28275
Err codemadness.org 70 i 28272 If you are a student and would like to learn more about Google Summer of Code please go to the Google Summer of Code homepage.
Err codemadness.org 70 i 28273 You can find a list of projects in Google Summer of Code project proposals in the wiki.
Err codemadness.org 70 i 28274 Do not hesitate to get in touch with us via #netbsd-code IRC channel on Freenode and via NetBSD mailing lists!
###SecBSD: an UNIX-like OS for Hackers
Err codemadness.org 70 i 28280 Err codemadness.org 70 i 28281Err codemadness.org 70 i 28282Err codemadness.org 70 i 28285 Err codemadness.org 70 i 28286SecBSD is an UNIX-like operating system focused on computer security based on OpenBSD. Designed for security testing, hacking and vulnerability assessment, it uses full disk encryption and ProtonVPN + OpenVPN by default.
Err codemadness.org 70 i 28284
Err codemadness.org 70 i 28283 A security BSD enviroment for security researchers, penetration testers, bug hunters and cybersecurity experts. Developed by Dark Intelligence Team for private use and will be public release coming soon.
##Beastie Bits
Err codemadness.org 70 i 28289 Err codemadness.org 70 i 28290##Feedback/Questions
Err codemadness.org 70 i 28303 Err codemadness.org 70 i 28304##Headlines
Err codemadness.org 70
i 28327 ###ARM’d and dangerous: FreeBSD on Cavium ThunderX (aarch64)
Err codemadness.org 70 i 28330Err codemadness.org 70 i 28333 Err codemadness.org 70 i 28334While I don’t remember for how many years I’ve had an interest in CPU architectures that could be an alternative to AMD64, I know pretty well when I started proposing to test 64-bit ARM at work. It was shortly after the disaster named Spectre / Meltdown that I first dug out server-class ARM hardware and asked whether we should get one such server and run some tests with it.
Err codemadness.org 70 i 28332
Err codemadness.org 70 i 28331 While the answer wasn’t a clear “no” it also wasn’t exactly “yes”. I tried again a few times over the course of 2018 and each time I presented some more points why I thought it might be a good thing to test this. But still I wasn’t able to get a positive answer. Finally in January 2019 year I got a definitive answer – and it was “yes, go ahead”! The fact that Amazon had just presented their Graviton ARM Processor may have helped the decision.
###Looking at NetBSD from an OpenBSD user perspective
Err codemadness.org 70 i 28337 Err codemadness.org 70 i 28338Err codemadness.org 70 i 28339Err codemadness.org 70 i 28341 Err codemadness.org 70 i 28342I use to use NetBSD quite a lot. From 2.0 to 6.99. But for some reasons, I stopped using it about 2012, in favor of OpenBSD. Reading on the new 8 release, I wanted to see if all the things I didn’t like on NetBSD were gone. Here is a personal Pros / Cons list. No Troll, hopefully. Just trying to be objective.
Err codemadness.org 70 i 28340
Err codemadness.org 70 i 28349Err codemadness.org 70 i 28352 Err codemadness.org 70 i 28353So that was it. I didn’t spend more than 30 minutes of it. But I didn’t want to spend more time on it. I did stop using NetBSD because of the need to compile each and every packages ; it was in the early days of pkgin. I also didn’t like the way system maintenance was to be done. OpenBSD’s 6-months release seemed far more easy to manage. I still think NetBSD is a great OS. But I believe you have to spent more time on it than you would have to do with OpenBSD.
Err codemadness.org 70 i 28351
Err codemadness.org 70 i 28350 That said, I’ll keep using my Puffy OS.
##News Roundup
Err codemadness.org 70
i 28356 ###Using Vim to take time-stamped notes
Err codemadness.org 70 i 28359Err codemadness.org 70 i 28363 Err codemadness.org 70 i 28364I frequently find myself needing to take time-stamped notes. Specifically, I’ll be in a call, meeting, or interview and need to take notes that show how long it’s been since the meeting started.
Err codemadness.org 70 i 28362
Err codemadness.org 70 i 28360 My first thought was that there’s be a plugin to add time stamps, but a quick search didn’t turn anything up. However, I little digging did turn up the fact that vim has the built-in ability to tell time.
Err codemadness.org 70 i 28361 This means that writing a bit of vimscript to insert a time stamp is pretty easy. After a bit of fiddling, I came up with something that serves my needs, and I decided it might be useful enough to others to be worth sharing.
###OpenBSD 6.5-beta has been tagged
Err codemadness.org 70 i 28371 Err codemadness.org 70 i 28372Err codemadness.org 70 i 28373Err codemadness.org 70 i 28375 Err codemadness.org 70 i 28376It’s that time of year again; Theo (deraadt@) has just tagged 6.5-beta. A good reminder for us all run an extra test install and see if your favorite port still works as you expect.
Err codemadness.org 70 i 28374
CVSROOT: /cvs
Err codemadness.org 70
i 28377 Module name: src
Err codemadness.org 70
i 28378 Changes by: deraadt@cvs.openbsd.org 2019/02/26 15:24:41
Err codemadness.org 70
i 28379
Err codemadness.org 70
i 28380 Modified files:
Err codemadness.org 70
i 28381 etc/root : root.mail
Err codemadness.org 70
i 28382 share/mk : sys.mk
Err codemadness.org 70
i 28383 sys/conf : newvers.sh
Err codemadness.org 70
i 28384 sys/sys : ktrace.h param.h
Err codemadness.org 70
i 28385 usr.bin/signify: signify.1
Err codemadness.org 70
i 28386 sys/arch/macppc/stand/tbxidata: bsd.tbxi
Err codemadness.org 70
i 28387
Err codemadness.org 70
i 28388 Log message:
Err codemadness.org 70
i 28389 crank to 6.5-beta
Err codemadness.org 70
i 28390
###The NetBSD Foundation participating in Google Summer of Code 2019
Err codemadness.org 70 i 28395 Err codemadness.org 70 i 28396Err codemadness.org 70 i 28397Err codemadness.org 70 i 28402 Err codemadness.org 70 i 28403For the 4th year in a row and for the 13th time The NetBSD Foundation will participate in Google Summer of Code 2019!
Err codemadness.org 70 i 28401
Err codemadness.org 70 i 28398 If you are a student and would like to learn more about Google Summer of Code please go to the Google Summer of Code homepage.
Err codemadness.org 70 i 28399 You can find a list of projects in Google Summer of Code project proposals in the wiki.
Err codemadness.org 70 i 28400 Do not hesitate to get in touch with us via #netbsd-code IRC channel on Freenode and via NetBSD mailing lists!
###SecBSD: an UNIX-like OS for Hackers
Err codemadness.org 70 i 28406 Err codemadness.org 70 i 28407Err codemadness.org 70 i 28408Err codemadness.org 70 i 28411 Err codemadness.org 70 i 28412SecBSD is an UNIX-like operating system focused on computer security based on OpenBSD. Designed for security testing, hacking and vulnerability assessment, it uses full disk encryption and ProtonVPN + OpenVPN by default.
Err codemadness.org 70 i 28410
Err codemadness.org 70 i 28409 A security BSD enviroment for security researchers, penetration testers, bug hunters and cybersecurity experts. Developed by Dark Intelligence Team for private use and will be public release coming soon.
##Beastie Bits
Err codemadness.org 70 i 28415 Err codemadness.org 70 i 28416##Feedback/Questions
Err codemadness.org 70 i 28429 Err codemadness.org 70 i 28430##Headlines
Err codemadness.org 70 i 28567 Err codemadness.org 70 i 28568 Err codemadness.org 70 i 28570 Err codemadness.org 70 i 28571Err codemadness.org 70 i 28572Err codemadness.org 70 i 28574 Err codemadness.org 70 i 28575Today in Tedium: In the early 1990s, we had no idea where the computer industry was going, what the next generation would look like, or even what the driving factor would be. All the developers back then knew is that the operating systems available in server rooms or on desktop computers simply weren’t good enough, and that the next generation needed to be better—a lot better. This was easier said than done, but this problem for some reason seemed to rack the brains of one company more than any other: IBM. Throughout the decade, the company was associated with more overwrought thinking about operating systems than any other, with little to show for it in the end. The problem? It might have gotten caught up in kernel madness. Today’s Tedium explains IBM’s odd operating system fixation, and the belly flops it created.
Err codemadness.org 70 i 28573
###CVE-2019-5597IPv6 fragmentation vulnerability in OpenBSD Packet Filter
Err codemadness.org 70 i 28578 Err codemadness.org 70 i 28579Err codemadness.org 70 i 28580Err codemadness.org 70 i 28583 Err codemadness.org 70 i 28584Packet Filter is OpenBSD’s service for filtering network traffic and performing Network Address Translation. Packet Filter is also capable of normalizing and conditioning TCP/IP traffic, as well as providing bandwidth control and packet prioritization.
Err codemadness.org 70 i 28582
Err codemadness.org 70 i 28581 Packet Filter has been a part of the GENERIC kernel since OpenBSD 5.0.Because other BSD variants import part of OpenBSD code, Packet Filter is also shipped with at least the following distributions that are affected in a lesser extent: FreeBSD, pfSense, OPNSense, Solaris.
Err codemadness.org 70 i 28585Err codemadness.org 70 i 28587 Err codemadness.org 70 i 28588Note that other distributions may also contain Packet Filter but due to the imported version they might not be vulnerable. This advisory covers the latest OpenBSD’s Packet Filter. For specific details about other distributions, please refer to the advisory of the affected product.
Err codemadness.org 70 i 28586
##News Roundup
Err codemadness.org 70
i 28595 ###How I’m still not using GUIs in 2019: A guide to the terminal
Err codemadness.org 70 i 28598Err codemadness.org 70 i 28600 Err codemadness.org 70 i 28601TL;DR: Here are my dotfiles. Use them and have fun.
Err codemadness.org 70 i 28599
Err codemadness.org 70 i 28602Err codemadness.org 70 i 28606 Err codemadness.org 70 i 28607GUIs are bloatware. I’ve said it before. However, rather than just complaining about IDEs I’d like to provide an understandable guide to a much better alternative: the terminal.
Err codemadness.org 70 i 28605
Err codemadness.org 70 i 28603 IDE stands for Integrated Development Environment. This might be an accurate term, but when it comes to a real integrated development environment, the terminal is a lot better.
Err codemadness.org 70 i 28604 In this post, I’ll walk you through everything you need to start making your terminal a complete development environment: how to edit text efficiently, configure its appearance, run and combine a myriad of programs, and dynamically create, resize and close tabs and windows.
Err codemadness.org 70 i 28612Err codemadness.org 70 i 28614 Err codemadness.org 70 i 28615Whenever in doubt, read the manual.
Err codemadness.org 70 i 28613
###Using a Yubikey as smartcard for SSH public key authentication
Err codemadness.org 70 i 28618 Err codemadness.org 70 i 28619Err codemadness.org 70 i 28620Err codemadness.org 70 i 28625 Err codemadness.org 70 i 28626SSH is an awesome tool. Logging into other machines securely is so pervasive to us sysadmins nowadays that few of us think about what’s going on underneath. Even more so once you start using the more advanced features such as the ssh-agent, agent-forwarding and ProxyJump. When doing so, care must be taken in order to not compromise one’s logins or ssh keys.
Err codemadness.org 70 i 28624
Err codemadness.org 70 i 28621 You might have heard of Yubikeys.
Err codemadness.org 70 i 28622 These are USB authentication devices that support several different modes: they can be used for OTP (One Time Password) authentication, they can store OpenPGP keys, be a 2-factor authentication token and they can act as a SmartCard.
Err codemadness.org 70 i 28623 In OpenBSD, you can use them for Login (with login_yubikey(8)) with OTP since 2012, and there are many descriptions available(1) how to set this up.
###The 18 Part FreeBSD Desktop Series by Vermaden
Err codemadness.org 70 i 28629 Err codemadness.org 70 i 28630##Beastie Bits
Err codemadness.org 70 i 28654 Err codemadness.org 70 i 28655##Feedback/Questions
Err codemadness.org 70 i 28669 Err codemadness.org 70 i 28670##Headlines
Err codemadness.org 70 i 28693 Err codemadness.org 70 i 28694 Err codemadness.org 70 i 28696 Err codemadness.org 70 i 28697Err codemadness.org 70 i 28698Err codemadness.org 70 i 28700 Err codemadness.org 70 i 28701Today in Tedium: In the early 1990s, we had no idea where the computer industry was going, what the next generation would look like, or even what the driving factor would be. All the developers back then knew is that the operating systems available in server rooms or on desktop computers simply weren’t good enough, and that the next generation needed to be better—a lot better. This was easier said than done, but this problem for some reason seemed to rack the brains of one company more than any other: IBM. Throughout the decade, the company was associated with more overwrought thinking about operating systems than any other, with little to show for it in the end. The problem? It might have gotten caught up in kernel madness. Today’s Tedium explains IBM’s odd operating system fixation, and the belly flops it created.
Err codemadness.org 70 i 28699
###CVE-2019-5597IPv6 fragmentation vulnerability in OpenBSD Packet Filter
Err codemadness.org 70 i 28704 Err codemadness.org 70 i 28705Err codemadness.org 70 i 28706Err codemadness.org 70 i 28709 Err codemadness.org 70 i 28710Packet Filter is OpenBSD’s service for filtering network traffic and performing Network Address Translation. Packet Filter is also capable of normalizing and conditioning TCP/IP traffic, as well as providing bandwidth control and packet prioritization.
Err codemadness.org 70 i 28708
Err codemadness.org 70 i 28707 Packet Filter has been a part of the GENERIC kernel since OpenBSD 5.0.Because other BSD variants import part of OpenBSD code, Packet Filter is also shipped with at least the following distributions that are affected in a lesser extent: FreeBSD, pfSense, OPNSense, Solaris.
Err codemadness.org 70 i 28711Err codemadness.org 70 i 28713 Err codemadness.org 70 i 28714Note that other distributions may also contain Packet Filter but due to the imported version they might not be vulnerable. This advisory covers the latest OpenBSD’s Packet Filter. For specific details about other distributions, please refer to the advisory of the affected product.
Err codemadness.org 70 i 28712
##News Roundup
Err codemadness.org 70
i 28721 ###How I’m still not using GUIs in 2019: A guide to the terminal
Err codemadness.org 70 i 28724Err codemadness.org 70 i 28726 Err codemadness.org 70 i 28727TL;DR: Here are my dotfiles. Use them and have fun.
Err codemadness.org 70 i 28725
Err codemadness.org 70 i 28728Err codemadness.org 70 i 28732 Err codemadness.org 70 i 28733GUIs are bloatware. I’ve said it before. However, rather than just complaining about IDEs I’d like to provide an understandable guide to a much better alternative: the terminal.
Err codemadness.org 70 i 28731
Err codemadness.org 70 i 28729 IDE stands for Integrated Development Environment. This might be an accurate term, but when it comes to a real integrated development environment, the terminal is a lot better.
Err codemadness.org 70 i 28730 In this post, I’ll walk you through everything you need to start making your terminal a complete development environment: how to edit text efficiently, configure its appearance, run and combine a myriad of programs, and dynamically create, resize and close tabs and windows.
Err codemadness.org 70 i 28738Err codemadness.org 70 i 28740 Err codemadness.org 70 i 28741Whenever in doubt, read the manual.
Err codemadness.org 70 i 28739
###Using a Yubikey as smartcard for SSH public key authentication
Err codemadness.org 70 i 28744 Err codemadness.org 70 i 28745Err codemadness.org 70 i 28746Err codemadness.org 70 i 28751 Err codemadness.org 70 i 28752SSH is an awesome tool. Logging into other machines securely is so pervasive to us sysadmins nowadays that few of us think about what’s going on underneath. Even more so once you start using the more advanced features such as the ssh-agent, agent-forwarding and ProxyJump. When doing so, care must be taken in order to not compromise one’s logins or ssh keys.
Err codemadness.org 70 i 28750
Err codemadness.org 70 i 28747 You might have heard of Yubikeys.
Err codemadness.org 70 i 28748 These are USB authentication devices that support several different modes: they can be used for OTP (One Time Password) authentication, they can store OpenPGP keys, be a 2-factor authentication token and they can act as a SmartCard.
Err codemadness.org 70 i 28749 In OpenBSD, you can use them for Login (with login_yubikey(8)) with OTP since 2012, and there are many descriptions available(1) how to set this up.
###The 18 Part FreeBSD Desktop Series by Vermaden
Err codemadness.org 70 i 28755 Err codemadness.org 70 i 28756##Beastie Bits
Err codemadness.org 70 i 28780 Err codemadness.org 70 i 28781##Feedback/Questions
Err codemadness.org 70 i 28795 Err codemadness.org 70 i 28796##Headlines
Err codemadness.org 70
i 28929 ###Google: Software is never going to be able to fix Spectre-type bugs
Err codemadness.org 70 i 28936Err codemadness.org 70 i 28940 Err codemadness.org 70 i 28941Researchers from Google investigating the scope and impact of the Spectre attack have published a paper asserting that Spectre-like vulnerabilities are likely to be a continued feature of processors and, further, that software-based techniques for protecting against them will impose a high performance cost. And whatever the cost, the researchers continue, the software will be inadequate—some Spectre flaws don’t appear to have any effective software-based defense. As such, Spectre is going to be a continued feature of the computing landscape, with no straightforward resolution.
Err codemadness.org 70 i 28939
Err codemadness.org 70 i 28937 The discovery and development of the Meltdown and Spectre attacks was undoubtedly the big security story of 2018. First revealed last January, new variants and related discoveries were made throughout the rest of the year. Both attacks rely on discrepancies between the theoretical architectural behavior of a processor—the documented behavior that programmers depend on and write their programs against—and the real behavior of implementations.
Err codemadness.org 70 i 28938 Specifically, modern processors all perform speculative execution; they make assumptions about, for example, a value being read from memory or whether an if condition is true or false, and they allow their execution to run ahead based on these assumptions. If the assumptions are correct, the speculated results are kept; if it isn’t, the speculated results are discarded and the processor redoes the calculation. Speculative execution is not an architectural feature of the processor; it’s a feature of implementations, and so it’s supposed to be entirely invisible to running programs. When the processor discards the bad speculation, it should be as if the speculation never even happened.
###A proof that Unix utility sed is Turing complete
Err codemadness.org 70 i 28944 Err codemadness.org 70 i 28945Err codemadness.org 70 i 28946Err codemadness.org 70 i 28950 Err codemadness.org 70 i 28951Many people are surprised when they hear that sed is Turing complete. How come a text filtering program is Turing complete, they wonder. Turns out sed is a tiny assembly language that has a comparison operation, a branching operation and a temporary buffer. These operations make sed Turing complete.
Err codemadness.org 70 i 28949
Err codemadness.org 70 i 28947 I first learned about this from Christophe Blaess. His proof is by construction – he wrote a Turing machine in sed (download turing.sed). As any programming language that can implement a Turing machine is Turing complete we must conclude that sed is also Turing complete.
Err codemadness.org 70 i 28948 Christophe offers his own introduction to Turing machines and a description of how his sed implementation works in his article Implementation of a Turing Machine as a sed Script.
Err codemadness.org 70 i 28952Err codemadness.org 70 i 28954 Err codemadness.org 70 i 28955Christophe isn’t the first person to realize that sed is almost a general purpose programming language. People have written tetris, sokoban and many other programs in sed. Take a look at these:
Err codemadness.org 70 i 28953
##News Roundup
Err codemadness.org 70
i 28964 ###Bastille helps you quickly create and manage FreeBSD Jails.
Err codemadness.org 70 i 28967Err codemadness.org 70 i 28971 Err codemadness.org 70 i 28972Bastille helps you quickly create and manage FreeBSD Jails.
Err codemadness.org 70 i 28970
Err codemadness.org 70 i 28968 Jails are extremely lightweight containers that provide a full-featured UNIX-like operating system inside. These containers can be used for software development, rapid testing, and secure production Internet services.
Err codemadness.org 70 i 28969 Bastille provides an interface to create, manage and destroy these secure virtualized environments.
Err codemadness.org 70 i 28982Err codemadness.org 70 i 28986 Err codemadness.org 70 i 28987Netdata is distributed, real-time, performance and health monitoring for systems and applications. It is a highly optimized monitoring agent you install on all your systems and containers.
Err codemadness.org 70 i 28985
Err codemadness.org 70 i 28983 Netdata provides unparalleled insights, in real-time, of everything happening on the systems it runs (including web servers, databases, applications), using highly interactive web dashboards. It can run autonomously, without any third party components, or it can be integrated to existing monitoring tool chains (Prometheus, Graphite, OpenTSDB, Kafka, Grafana, etc).
Err codemadness.org 70 i 28984 Netdata is fast and efficient, designed to permanently run on all systems (physical & virtual servers, containers, IoT devices), without disrupting their core function.
###Using grep with /dev/null, an old Unix trick
Err codemadness.org 70 i 28994 Err codemadness.org 70 i 28995Err codemadness.org 70 i 28996Err codemadness.org 70 i 28998 Err codemadness.org 70 i 28999Every so often I will find myself writing a grep invocation like this:
Err codemadness.org 70 i 28997
find .... -exec grep <something> /dev/null '{}' '+'
Err codemadness.org 70 i 29002Err codemadness.org 70 i 29004 Err codemadness.org 70 i 29005The peculiar presence of /dev/null here is an old Unix trick that is designed to force grep to always print out file names, even if your find only matches one file, by always insuring that grep has at least two files as arguments. You can wind up wanting to do the same thing with a direct use of grep if you’re not certain how many files your wildcard may match.
Err codemadness.org 70 i 29003
Err codemadness.org 70 i 29010Err codemadness.org 70 i 29014 Err codemadness.org 70 i 29015I recently switched to using mutt for email and while setting up mutt to use imap is pretty straightforward, this tutorial will also document some advanced concepts such as encrypting your account password and sending emails from a different From address.
Err codemadness.org 70 i 29013
Err codemadness.org 70 i 29011 This tutorial assumes that you have some familiarity with using mutt and have installed it with sidebar support (sudo apt-get install mutt-patched for the ubuntu folks) and are comfortable with editing your muttrc.
Err codemadness.org 70 i 29012 If you would just like to skip to the end, my mutt configuration file can be found here.
##Beastie Bits
Err codemadness.org 70 i 29018 Err codemadness.org 70 i 29019##Feedback/Questions
Err codemadness.org 70 i 29031 Err codemadness.org 70 i 29032##Headlines
Err codemadness.org 70
i 29055 ###Google: Software is never going to be able to fix Spectre-type bugs
Err codemadness.org 70 i 29062Err codemadness.org 70 i 29066 Err codemadness.org 70 i 29067Researchers from Google investigating the scope and impact of the Spectre attack have published a paper asserting that Spectre-like vulnerabilities are likely to be a continued feature of processors and, further, that software-based techniques for protecting against them will impose a high performance cost. And whatever the cost, the researchers continue, the software will be inadequate—some Spectre flaws don’t appear to have any effective software-based defense. As such, Spectre is going to be a continued feature of the computing landscape, with no straightforward resolution.
Err codemadness.org 70 i 29065
Err codemadness.org 70 i 29063 The discovery and development of the Meltdown and Spectre attacks was undoubtedly the big security story of 2018. First revealed last January, new variants and related discoveries were made throughout the rest of the year. Both attacks rely on discrepancies between the theoretical architectural behavior of a processor—the documented behavior that programmers depend on and write their programs against—and the real behavior of implementations.
Err codemadness.org 70 i 29064 Specifically, modern processors all perform speculative execution; they make assumptions about, for example, a value being read from memory or whether an if condition is true or false, and they allow their execution to run ahead based on these assumptions. If the assumptions are correct, the speculated results are kept; if it isn’t, the speculated results are discarded and the processor redoes the calculation. Speculative execution is not an architectural feature of the processor; it’s a feature of implementations, and so it’s supposed to be entirely invisible to running programs. When the processor discards the bad speculation, it should be as if the speculation never even happened.
###A proof that Unix utility sed is Turing complete
Err codemadness.org 70 i 29070 Err codemadness.org 70 i 29071Err codemadness.org 70 i 29072Err codemadness.org 70 i 29076 Err codemadness.org 70 i 29077Many people are surprised when they hear that sed is Turing complete. How come a text filtering program is Turing complete, they wonder. Turns out sed is a tiny assembly language that has a comparison operation, a branching operation and a temporary buffer. These operations make sed Turing complete.
Err codemadness.org 70 i 29075
Err codemadness.org 70 i 29073 I first learned about this from Christophe Blaess. His proof is by construction – he wrote a Turing machine in sed (download turing.sed). As any programming language that can implement a Turing machine is Turing complete we must conclude that sed is also Turing complete.
Err codemadness.org 70 i 29074 Christophe offers his own introduction to Turing machines and a description of how his sed implementation works in his article Implementation of a Turing Machine as a sed Script.
Err codemadness.org 70 i 29078Err codemadness.org 70 i 29080 Err codemadness.org 70 i 29081Christophe isn’t the first person to realize that sed is almost a general purpose programming language. People have written tetris, sokoban and many other programs in sed. Take a look at these:
Err codemadness.org 70 i 29079
##News Roundup
Err codemadness.org 70
i 29090 ###Bastille helps you quickly create and manage FreeBSD Jails.
Err codemadness.org 70 i 29093Err codemadness.org 70 i 29097 Err codemadness.org 70 i 29098Bastille helps you quickly create and manage FreeBSD Jails.
Err codemadness.org 70 i 29096
Err codemadness.org 70 i 29094 Jails are extremely lightweight containers that provide a full-featured UNIX-like operating system inside. These containers can be used for software development, rapid testing, and secure production Internet services.
Err codemadness.org 70 i 29095 Bastille provides an interface to create, manage and destroy these secure virtualized environments.
Err codemadness.org 70 i 29108Err codemadness.org 70 i 29112 Err codemadness.org 70 i 29113Netdata is distributed, real-time, performance and health monitoring for systems and applications. It is a highly optimized monitoring agent you install on all your systems and containers.
Err codemadness.org 70 i 29111
Err codemadness.org 70 i 29109 Netdata provides unparalleled insights, in real-time, of everything happening on the systems it runs (including web servers, databases, applications), using highly interactive web dashboards. It can run autonomously, without any third party components, or it can be integrated to existing monitoring tool chains (Prometheus, Graphite, OpenTSDB, Kafka, Grafana, etc).
Err codemadness.org 70 i 29110 Netdata is fast and efficient, designed to permanently run on all systems (physical & virtual servers, containers, IoT devices), without disrupting their core function.
###Using grep with /dev/null, an old Unix trick
Err codemadness.org 70 i 29120 Err codemadness.org 70 i 29121Err codemadness.org 70 i 29122Err codemadness.org 70 i 29124 Err codemadness.org 70 i 29125Every so often I will find myself writing a grep invocation like this:
Err codemadness.org 70 i 29123
find .... -exec grep <something> /dev/null '{}' '+'
Err codemadness.org 70 i 29128Err codemadness.org 70 i 29130 Err codemadness.org 70 i 29131The peculiar presence of /dev/null here is an old Unix trick that is designed to force grep to always print out file names, even if your find only matches one file, by always insuring that grep has at least two files as arguments. You can wind up wanting to do the same thing with a direct use of grep if you’re not certain how many files your wildcard may match.
Err codemadness.org 70 i 29129
Err codemadness.org 70 i 29136Err codemadness.org 70 i 29140 Err codemadness.org 70 i 29141I recently switched to using mutt for email and while setting up mutt to use imap is pretty straightforward, this tutorial will also document some advanced concepts such as encrypting your account password and sending emails from a different From address.
Err codemadness.org 70 i 29139
Err codemadness.org 70 i 29137 This tutorial assumes that you have some familiarity with using mutt and have installed it with sidebar support (sudo apt-get install mutt-patched for the ubuntu folks) and are comfortable with editing your muttrc.
Err codemadness.org 70 i 29138 If you would just like to skip to the end, my mutt configuration file can be found here.
##Beastie Bits
Err codemadness.org 70 i 29144 Err codemadness.org 70 i 29145##Feedback/Questions
Err codemadness.org 70 i 29157 Err codemadness.org 70 i 29158##Headlines
Err codemadness.org 70
i 29304 ###The Design and Implementation of the NetBSD rc.d system
Err codemadness.org 70 i 29311Err codemadness.org 70 i 29313 Err codemadness.org 70 i 29314In this paper I cover the design and implementation of the rc.d system start-up mechanism in NetBSD 1.5, which replaced the monolithic /etc/rc start-up file inherited from 4.4BSD. Topics covered include a history of various UNIX start-up mechanisms (including NetBSD prior to 1.5), design considerations that evolved over six years of discussions, implementation details, an examination of the human issues that occurred during the design and implementation, as well as future directions for the system.
Err codemadness.org 70 i 29312
Err codemadness.org 70 i 29319Err codemadness.org 70 i 29323 Err codemadness.org 70 i 29324NetBSD recently converted from the traditional 4.4BSD monolithic /etc/rc start-up script to an /etc/rc.d mechanism, where there is a separate script to manage each service or daemon, and these scripts are executed in a specific order at system boot.
Err codemadness.org 70 i 29322
Err codemadness.org 70 i 29320 This paper covers the motivation, design and implementation of the rc.d system; from the history of what NetBSD had before to the system that NetBSD 1.5 shipped with in December 2000, as well as future directions.
Err codemadness.org 70 i 29321 The changes were contentious and generated some of the liveliest discussions about any feature change ever made in NetBSD. Parts of those discussions will be covered to provide insight into some of the design and implementation decisions.
Err codemadness.org 70 i 29329Err codemadness.org 70 i 29331 Err codemadness.org 70 i 29332There is great diversity in the system start-up mechanisms used by various UNIX variants. A few of the more pertinent schemes are detailed below. As NetBSD is derived from 4.4BSD, it follows that a description of the latter’s method is relevant. Solaris’ start-up method is also detailed, as it is the most common System V UNIX variant.
Err codemadness.org 70 i 29330
###First impressions of Project Trident 18.12
Err codemadness.org 70 i 29335 Err codemadness.org 70 i 29336Err codemadness.org 70 i 29337Err codemadness.org 70 i 29339 Err codemadness.org 70 i 29340Project Trident (hereafter referred to as Trident) is a desktop operating system based on TrueOS. Trident takes the rolling base platform of TrueOS, which is in turn based on FreeBSD’s development branch, and combines it with the Lumina desktop environment.
Err codemadness.org 70 i 29338
+Installing
Err codemadness.org 70 i 29341 Err codemadness.org 70 i 29342Err codemadness.org 70 i 29343Err codemadness.org 70 i 29345 Err codemadness.org 70 i 29346The debut release of Trident is available as a 4.1GB download that can be burned to a disc or transferred to a USB thumb drive. Booting from the Trident media brings up a graphical interface and automatically launches the project’s system installer. Down the left side of the display there are buttons we can click to show hardware information and configuration options. These buttons let us know if our wireless card and video card are compatible with Trident and give us a chance to change our preferred language and keyboard layout. At the bottom of the screen we find buttons that will open a terminal or shutdown the computer.
Err codemadness.org 70 i 29344
Err codemadness.org 70 i 29351Err codemadness.org 70 i 29355 Err codemadness.org 70 i 29356Trident boots to a graphical login screen where we can sign into the Lumina desktop or a minimal Fluxbox session. Lumina, by default, uses Fluxbox as its window manager. The Lumina desktop places its panel along the bottom of the screen and an application menu sits in the bottom-left corner. On the desktop we find icons for opening the software manager, launching the Falkon web browser, running the VLC media player, opening the Control Panel and adjusting the Lumina theme.
Err codemadness.org 70 i 29354
Err codemadness.org 70 i 29352 The application menu has an unusual and compact layout. The menu shows just a search box and buttons for browsing applications, opening a file manager, accessing desktop settings and signing out. To see what applications are available we can click the Browse Applications entry, which opens a window in the menu where we can scroll through installed programs. This is a bit awkward since the display window is small and only shows a few items at a time.
Err codemadness.org 70 i 29353 Early on I found it is possible to swap out the default “Start menu” with an alternative “Application menu” through the Panels configuration tool. This alternative menu offers a classic tree-style application menu. I found the latter menu easier to navigate as it expands to show all the applications in a selected category.
Err codemadness.org 70 i 29361Err codemadness.org 70 i 29363 Err codemadness.org 70 i 29364I have a lot of mixed feelings and impressions when it comes to Trident. On the one hand, the operating system has some great technology under the hook. It has cutting edge packages from the FreeBSD ecosystem, we have easy access to ZFS, boot environments, and lots of open source packages. Hardware support, at least on my physical workstation, was solid and the Lumina desktop is flexible.
Err codemadness.org 70 i 29362
##News Roundup
Err codemadness.org 70
i 29367 ###PXE booting of a FreeBSD disk image
Err codemadness.org 70 i 29370Err codemadness.org 70 i 29373 Err codemadness.org 70 i 29374I had to set up a regression and network performance lab. This lab will be managed by a Jenkins, but the first step is to understand how to boot a FreeBSD disk by PXE. This article explains a simple way of doing it.
Err codemadness.org 70 i 29372
Err codemadness.org 70 i 29371 For information, all these steps were done using 2 PC Engines APU2 (upgraded with latest BIOS for iPXE support), so it’s a headless (serial port only, this can be IPMI SoL with different hardware) .
Err codemadness.org 70 i 29379Err codemadness.org 70 i 29381 Err codemadness.org 70 i 29382Before explaining all steps and command line, here is the full big picture of the final process.
Err codemadness.org 70 i 29380
###Why I like middle mouse button paste in xterm so much
Err codemadness.org 70 i 29385 Err codemadness.org 70 i 29386Err codemadness.org 70 i 29387Err codemadness.org 70 i 29392 Err codemadness.org 70 i 29393In my entry about how touchpads are not mice, I mused that one of the things I should do on my laptop was insure that I had a keyboard binding for paste, since middle mouse button is one of the harder multi-finger gestures to land on a touchpad. Kurt Mosiejczuk recently left a comment there where they said:
Err codemadness.org 70 i 29391
Err codemadness.org 70 i 29388 Shift-Insert is a keyboard equivalent for paste that is in default xterm (at least OpenBSD xterm, and putty on Windows too). I use that most of the time now as it seems less… trigger-happy than right click paste.
Err codemadness.org 70 i 29389 This sparked some thoughts, because I can’t imagine giving up middle mouse paste if I have a real choice. I had earlier seen shift-insert mentioned in other commentary on my entry and so have tried a bit to use it on my laptop, and it hasn’t really felt great even there; on my desktops, it’s even less appealing (I tried shift-insert out there to confirm that it did work in my set of wacky X resources).
Err codemadness.org 70 i 29390 In thinking about why this is, I came to the obvious realization about why all of this is so. I like middle mouse button paste in normal usage because it’s so convenient, because almost all of the time my hand is already on the mouse. And the reason my hand is already on the mouse is because I’ve just used the mouse to shift focus to the window I want to paste into. Even on my laptop, my right hand is usually away from the keyboard as I move the mouse pointer on the touchpad, making shift-Insert at least somewhat awkward.
###NetBSD Gains Hardware Accelerated Virtualization
Err codemadness.org 70 i 29396 Err codemadness.org 70 i 29397Err codemadness.org 70 i 29402Err codemadness.org 70 i 29404 Err codemadness.org 70 i 29405NVMM provides hardware-accelerated virtualization support for NetBSD. It is made of an ~MI frontend, to which MD backends can be plugged. A virtualization API is shipped via libnvmm, that allows to easily create and manage virtual machines via NVMM. Two additional components are shipped as demonstrators, toyvirt and smallkern: the former is a toy virtualizer, that executes in a VM the 64bit ELF binary given as argument, the latter is an example of such binary.
Err codemadness.org 70 i 29403
##Beastie Bits
Err codemadness.org 70 i 29408 Err codemadness.org 70 i 29409##Feedback/Questions
Err codemadness.org 70 i 29423 Err codemadness.org 70 i 29424##Headlines
Err codemadness.org 70
i 29447 ###The Design and Implementation of the NetBSD rc.d system
Err codemadness.org 70 i 29454Err codemadness.org 70 i 29456 Err codemadness.org 70 i 29457In this paper I cover the design and implementation of the rc.d system start-up mechanism in NetBSD 1.5, which replaced the monolithic /etc/rc start-up file inherited from 4.4BSD. Topics covered include a history of various UNIX start-up mechanisms (including NetBSD prior to 1.5), design considerations that evolved over six years of discussions, implementation details, an examination of the human issues that occurred during the design and implementation, as well as future directions for the system.
Err codemadness.org 70 i 29455
Err codemadness.org 70 i 29462Err codemadness.org 70 i 29466 Err codemadness.org 70 i 29467NetBSD recently converted from the traditional 4.4BSD monolithic /etc/rc start-up script to an /etc/rc.d mechanism, where there is a separate script to manage each service or daemon, and these scripts are executed in a specific order at system boot.
Err codemadness.org 70 i 29465
Err codemadness.org 70 i 29463 This paper covers the motivation, design and implementation of the rc.d system; from the history of what NetBSD had before to the system that NetBSD 1.5 shipped with in December 2000, as well as future directions.
Err codemadness.org 70 i 29464 The changes were contentious and generated some of the liveliest discussions about any feature change ever made in NetBSD. Parts of those discussions will be covered to provide insight into some of the design and implementation decisions.
Err codemadness.org 70 i 29472Err codemadness.org 70 i 29474 Err codemadness.org 70 i 29475There is great diversity in the system start-up mechanisms used by various UNIX variants. A few of the more pertinent schemes are detailed below. As NetBSD is derived from 4.4BSD, it follows that a description of the latter’s method is relevant. Solaris’ start-up method is also detailed, as it is the most common System V UNIX variant.
Err codemadness.org 70 i 29473
###First impressions of Project Trident 18.12
Err codemadness.org 70 i 29478 Err codemadness.org 70 i 29479Err codemadness.org 70 i 29480Err codemadness.org 70 i 29482 Err codemadness.org 70 i 29483Project Trident (hereafter referred to as Trident) is a desktop operating system based on TrueOS. Trident takes the rolling base platform of TrueOS, which is in turn based on FreeBSD’s development branch, and combines it with the Lumina desktop environment.
Err codemadness.org 70 i 29481
+Installing
Err codemadness.org 70 i 29484 Err codemadness.org 70 i 29485Err codemadness.org 70 i 29486Err codemadness.org 70 i 29488 Err codemadness.org 70 i 29489The debut release of Trident is available as a 4.1GB download that can be burned to a disc or transferred to a USB thumb drive. Booting from the Trident media brings up a graphical interface and automatically launches the project’s system installer. Down the left side of the display there are buttons we can click to show hardware information and configuration options. These buttons let us know if our wireless card and video card are compatible with Trident and give us a chance to change our preferred language and keyboard layout. At the bottom of the screen we find buttons that will open a terminal or shutdown the computer.
Err codemadness.org 70 i 29487
Err codemadness.org 70 i 29494Err codemadness.org 70 i 29498 Err codemadness.org 70 i 29499Trident boots to a graphical login screen where we can sign into the Lumina desktop or a minimal Fluxbox session. Lumina, by default, uses Fluxbox as its window manager. The Lumina desktop places its panel along the bottom of the screen and an application menu sits in the bottom-left corner. On the desktop we find icons for opening the software manager, launching the Falkon web browser, running the VLC media player, opening the Control Panel and adjusting the Lumina theme.
Err codemadness.org 70 i 29497
Err codemadness.org 70 i 29495 The application menu has an unusual and compact layout. The menu shows just a search box and buttons for browsing applications, opening a file manager, accessing desktop settings and signing out. To see what applications are available we can click the Browse Applications entry, which opens a window in the menu where we can scroll through installed programs. This is a bit awkward since the display window is small and only shows a few items at a time.
Err codemadness.org 70 i 29496 Early on I found it is possible to swap out the default “Start menu” with an alternative “Application menu” through the Panels configuration tool. This alternative menu offers a classic tree-style application menu. I found the latter menu easier to navigate as it expands to show all the applications in a selected category.
Err codemadness.org 70 i 29504Err codemadness.org 70 i 29506 Err codemadness.org 70 i 29507I have a lot of mixed feelings and impressions when it comes to Trident. On the one hand, the operating system has some great technology under the hook. It has cutting edge packages from the FreeBSD ecosystem, we have easy access to ZFS, boot environments, and lots of open source packages. Hardware support, at least on my physical workstation, was solid and the Lumina desktop is flexible.
Err codemadness.org 70 i 29505
##News Roundup
Err codemadness.org 70
i 29510 ###PXE booting of a FreeBSD disk image
Err codemadness.org 70 i 29513Err codemadness.org 70 i 29516 Err codemadness.org 70 i 29517I had to set up a regression and network performance lab. This lab will be managed by a Jenkins, but the first step is to understand how to boot a FreeBSD disk by PXE. This article explains a simple way of doing it.
Err codemadness.org 70 i 29515
Err codemadness.org 70 i 29514 For information, all these steps were done using 2 PC Engines APU2 (upgraded with latest BIOS for iPXE support), so it’s a headless (serial port only, this can be IPMI SoL with different hardware) .
Err codemadness.org 70 i 29522Err codemadness.org 70 i 29524 Err codemadness.org 70 i 29525Before explaining all steps and command line, here is the full big picture of the final process.
Err codemadness.org 70 i 29523
###Why I like middle mouse button paste in xterm so much
Err codemadness.org 70 i 29528 Err codemadness.org 70 i 29529Err codemadness.org 70 i 29530Err codemadness.org 70 i 29535 Err codemadness.org 70 i 29536In my entry about how touchpads are not mice, I mused that one of the things I should do on my laptop was insure that I had a keyboard binding for paste, since middle mouse button is one of the harder multi-finger gestures to land on a touchpad. Kurt Mosiejczuk recently left a comment there where they said:
Err codemadness.org 70 i 29534
Err codemadness.org 70 i 29531 Shift-Insert is a keyboard equivalent for paste that is in default xterm (at least OpenBSD xterm, and putty on Windows too). I use that most of the time now as it seems less… trigger-happy than right click paste.
Err codemadness.org 70 i 29532 This sparked some thoughts, because I can’t imagine giving up middle mouse paste if I have a real choice. I had earlier seen shift-insert mentioned in other commentary on my entry and so have tried a bit to use it on my laptop, and it hasn’t really felt great even there; on my desktops, it’s even less appealing (I tried shift-insert out there to confirm that it did work in my set of wacky X resources).
Err codemadness.org 70 i 29533 In thinking about why this is, I came to the obvious realization about why all of this is so. I like middle mouse button paste in normal usage because it’s so convenient, because almost all of the time my hand is already on the mouse. And the reason my hand is already on the mouse is because I’ve just used the mouse to shift focus to the window I want to paste into. Even on my laptop, my right hand is usually away from the keyboard as I move the mouse pointer on the touchpad, making shift-Insert at least somewhat awkward.
###NetBSD Gains Hardware Accelerated Virtualization
Err codemadness.org 70 i 29539 Err codemadness.org 70 i 29540Err codemadness.org 70 i 29545Err codemadness.org 70 i 29547 Err codemadness.org 70 i 29548NVMM provides hardware-accelerated virtualization support for NetBSD. It is made of an ~MI frontend, to which MD backends can be plugged. A virtualization API is shipped via libnvmm, that allows to easily create and manage virtual machines via NVMM. Two additional components are shipped as demonstrators, toyvirt and smallkern: the former is a toy virtualizer, that executes in a VM the 64bit ELF binary given as argument, the latter is an example of such binary.
Err codemadness.org 70 i 29546
##Beastie Bits
Err codemadness.org 70 i 29551 Err codemadness.org 70 i 29552##Feedback/Questions
Err codemadness.org 70 i 29566 Err codemadness.org 70 i 29567##Headlines
Err codemadness.org 70
i 29709 ###Adding Glue To a Desktop Environment
Err codemadness.org 70 i 29712Err codemadness.org 70 i 29715 Err codemadness.org 70 i 29716In this article we will put some light on a lot of tools used in the world of Unix desktop environment customization, particularly regarding wmctrl, wmutils, xev, xtruss, xwininfo, xprop, xdotools, xdo, sxhkd, xbindkeys, speckeysd, xchainkeys, alttab, triggerhappy, gTile, gidmgr, keynav, and more. If those don’t make sense then this article will help. Let’s hope this can open your mind to new possibilities.
Err codemadness.org 70 i 29714
Err codemadness.org 70 i 29713 With that in mind we can wonder if what’s actually needed from a window manager, presentation and operation, can be split up and complemented with other tools. We can also start thinking laterally, the communication and interaction between the different components of the environment. We have the freedom to do so because the X protocol is transparent and components usually implement many standards for interfacing between windows. It’s like gluing parts together to create a desktop environment.
###Flashing the BIOS on the PC Engines APU4c4
Err codemadness.org 70 i 29729 Err codemadness.org 70 i 29730Err codemadness.org 70 i 29731Err codemadness.org 70 i 29738 Err codemadness.org 70 i 29739I absolutely love the PC Engines APU devices. I use them for testing HardenedBSD experimental features in more constrained 64-bit environments and firewalls. Their USB and mSATA ports have a few quirks, and I bumped up against a major quirk that required flashing a different BIOS as a workaround. This article details the hacky way in which I went about doing that.
Err codemadness.org 70 i 29737
Err codemadness.org 70 i 29732 What prompted this article is that something in either the CAM or GEOM layer in FreeBSD 11.2 caused the mSATA to hang, preventing file writes. OPNsense 18.7 uses FreeBSD 11.1 whereas the recently-released OPNsense 19.1 uses HardenedBSD 11.2 (based on FreeBSD 11.2). I reached out to PC Engines directly, and they let me know that the issue is a known BIOS issue. Flashing the “legacy” BIOS series would provide me with a working system.
Err codemadness.org 70 i 29733 It also just so happens that a new “legacy” BIOS version was just released which turns on ECC mode for the RAM. So, I get a working OPNsense install AND ECC RAM! I’ll have one bird for dinner, the other for dessert.
Err codemadness.org 70 i 29734 Though I’m using an APU4, these instructions should work for the other APU devices. The BIOS ROM download URLs should be changed to reflect the device you’re targeting along with the BIOS version you wish to deploy.
Err codemadness.org 70 i 29735 SPECIAL NOTE: There be dragons! I’m primarily writing this article to document the procedure for my own purposes. My memory tends to be pretty faulty these days. So, if something goes wrong, please do not hold me responsible. You’re the one at the keyboard. ;)
Err codemadness.org 70 i 29736 VERY SPECIAL NOTE: We’ll use the mSATA drive for swap space, just in case. Should the swap space be used, it will destroy whatever is on the disk.
##News Roundup
Err codemadness.org 70
i 29742 ###Revive a Cisco IDS into a capable OpenBSD computer!
Err codemadness.org 70 i 29745Err codemadness.org 70 i 29749 Err codemadness.org 70 i 29750Even though Cisco equipment is very capable, it tends to become End-of-Life before you can say “planned obsolescence”. Websites become bigger, bandwidths increase, and as a side effect of those “improvements”, routers, firewalls, and in this case, intrusion prevention systems get old quicker and quicker.
Err codemadness.org 70 i 29748
Err codemadness.org 70 i 29746 Apparently, this was also the case for the Cisco IDS-4215 Intrusion Detection Sensor that I was given a few months ago.
Err codemadness.org 70 i 29747 I’m not too proud to admit that at first, I didn’t care about the machine itself, but rather about the add-on PCI network card with 4 Fast Ethernet interfaces. The sensor has obviously seen better days, as it had a broken front panel and needed some cleaning, but upon a closer inspection under the hood (which is held closed by the 4 screws on top), this IDS consists of an embedded Celeron PC with two onboard Ethernet cards, a 2.5″ IDE hard disk, a CF card, and 2 PCI expansion slots (more on them later). Oh, and don’t forget the nasty server-grade fan, which pushed very little air for the noise it was making.
###An OpenBSD desktop using WindowMaker
Err codemadness.org 70 i 29753 Err codemadness.org 70 i 29754Err codemadness.org 70 i 29755Err codemadness.org 70 i 29759 Err codemadness.org 70 i 29760Since I started using *N?X, I’ve regularly used WindowMaker. I’ve always liked the look and feel, the dock system and the dockapps. It may look a bit oldish nowadays. And that’s enough to try to change this. So here it is, a 2019 flavored WindowMaker Desktop, running on OpenBSD 6.4/amd64.
Err codemadness.org 70 i 29758
Err codemadness.org 70 i 29756 This configuration uses the Nord color-scheme, the Adapta-Nokto-Eta GTK theme and the Moblin Unofficial Icons icon set. I did remove applications icons. I just don’t need them on the bottom of the screen as I heavily use “F11” to pop-up the windows list. To be able to do that and keep the dockapps, I tweaked my ~/GNUstep/Defaults/WMWindowAttributes and created a ~/GNUstep/Library/WindowMaker/Themes/Nord.themed/style.
Err codemadness.org 70 i 29757 And here it is, the NeXT OpenBSD Desktop!
Err codemadness.org 70 i 29765Err codemadness.org 70 i 29772 Err codemadness.org 70 i 29773In a previous episode, we’ve seen that it is possible to create opaque types. However, creation and destruction of such type must be delegated to some dedicated functions, which themselves rely on dynamic allocation mechanisms.
Err codemadness.org 70 i 29771
Err codemadness.org 70 i 29766 Sometimes, it can be convenient to bypass the heap, and all its malloc() / free() shenanigans. Pushing a structure onto the stack, or within thread-local storage, are natural capabilities offered by a normal struct. It can be desirable at times.
Err codemadness.org 70 i 29767 The previously described opaque type is so secret that it has no size, hence is not suitable for such scenario.
Err codemadness.org 70 i 29768 Fortunately, static opaque types are possible.
Err codemadness.org 70 i 29769 The main idea is to create a “shell type”, with a known size and an alignment, able to host the target (private) structure.
Err codemadness.org 70 i 29770 For safer maintenance, the shell type and the target structure must be kept in sync, by using typically a static assert. It will ensure that the shell type is always large enough to host the target structure. This check is important to automatically detect future evolution of the target structure.
Err codemadness.org 70 i 29778Err codemadness.org 70 i 29782 Err codemadness.org 70 i 29783My top used shell command is |. This is called a pipe.
Err codemadness.org 70 i 29781
Err codemadness.org 70 i 29779 In brief, the | allows for the output of one program (on the left) to become the input of another program (on the right). It is a way of connecting two commands together.
Err codemadness.org 70 i 29780 According to doc.cat-v.org/unix/pipes/, the origin of pipes came long before Unix. Pipes can be traced back to this note from Doug McIlroy in 1964
##Beastie Bits
Err codemadness.org 70 i 29786 Err codemadness.org 70 i 29787##BUG Calendar
Err codemadness.org 70 i 29804 Err codemadness.org 70 i 29805##Feedback/Questions
Err codemadness.org 70 i 29817 Err codemadness.org 70 i 29818##Headlines
Err codemadness.org 70
i 29841 ###Adding Glue To a Desktop Environment
Err codemadness.org 70 i 29844Err codemadness.org 70 i 29847 Err codemadness.org 70 i 29848In this article we will put some light on a lot of tools used in the world of Unix desktop environment customization, particularly regarding wmctrl, wmutils, xev, xtruss, xwininfo, xprop, xdotools, xdo, sxhkd, xbindkeys, speckeysd, xchainkeys, alttab, triggerhappy, gTile, gidmgr, keynav, and more. If those don’t make sense then this article will help. Let’s hope this can open your mind to new possibilities.
Err codemadness.org 70 i 29846
Err codemadness.org 70 i 29845 With that in mind we can wonder if what’s actually needed from a window manager, presentation and operation, can be split up and complemented with other tools. We can also start thinking laterally, the communication and interaction between the different components of the environment. We have the freedom to do so because the X protocol is transparent and components usually implement many standards for interfacing between windows. It’s like gluing parts together to create a desktop environment.
###Flashing the BIOS on the PC Engines APU4c4
Err codemadness.org 70 i 29861 Err codemadness.org 70 i 29862Err codemadness.org 70 i 29863Err codemadness.org 70 i 29870 Err codemadness.org 70 i 29871I absolutely love the PC Engines APU devices. I use them for testing HardenedBSD experimental features in more constrained 64-bit environments and firewalls. Their USB and mSATA ports have a few quirks, and I bumped up against a major quirk that required flashing a different BIOS as a workaround. This article details the hacky way in which I went about doing that.
Err codemadness.org 70 i 29869
Err codemadness.org 70 i 29864 What prompted this article is that something in either the CAM or GEOM layer in FreeBSD 11.2 caused the mSATA to hang, preventing file writes. OPNsense 18.7 uses FreeBSD 11.1 whereas the recently-released OPNsense 19.1 uses HardenedBSD 11.2 (based on FreeBSD 11.2). I reached out to PC Engines directly, and they let me know that the issue is a known BIOS issue. Flashing the “legacy” BIOS series would provide me with a working system.
Err codemadness.org 70 i 29865 It also just so happens that a new “legacy” BIOS version was just released which turns on ECC mode for the RAM. So, I get a working OPNsense install AND ECC RAM! I’ll have one bird for dinner, the other for dessert.
Err codemadness.org 70 i 29866 Though I’m using an APU4, these instructions should work for the other APU devices. The BIOS ROM download URLs should be changed to reflect the device you’re targeting along with the BIOS version you wish to deploy.
Err codemadness.org 70 i 29867 SPECIAL NOTE: There be dragons! I’m primarily writing this article to document the procedure for my own purposes. My memory tends to be pretty faulty these days. So, if something goes wrong, please do not hold me responsible. You’re the one at the keyboard. ;)
Err codemadness.org 70 i 29868 VERY SPECIAL NOTE: We’ll use the mSATA drive for swap space, just in case. Should the swap space be used, it will destroy whatever is on the disk.
##News Roundup
Err codemadness.org 70
i 29874 ###Revive a Cisco IDS into a capable OpenBSD computer!
Err codemadness.org 70 i 29877Err codemadness.org 70 i 29881 Err codemadness.org 70 i 29882Even though Cisco equipment is very capable, it tends to become End-of-Life before you can say “planned obsolescence”. Websites become bigger, bandwidths increase, and as a side effect of those “improvements”, routers, firewalls, and in this case, intrusion prevention systems get old quicker and quicker.
Err codemadness.org 70 i 29880
Err codemadness.org 70 i 29878 Apparently, this was also the case for the Cisco IDS-4215 Intrusion Detection Sensor that I was given a few months ago.
Err codemadness.org 70 i 29879 I’m not too proud to admit that at first, I didn’t care about the machine itself, but rather about the add-on PCI network card with 4 Fast Ethernet interfaces. The sensor has obviously seen better days, as it had a broken front panel and needed some cleaning, but upon a closer inspection under the hood (which is held closed by the 4 screws on top), this IDS consists of an embedded Celeron PC with two onboard Ethernet cards, a 2.5″ IDE hard disk, a CF card, and 2 PCI expansion slots (more on them later). Oh, and don’t forget the nasty server-grade fan, which pushed very little air for the noise it was making.
###An OpenBSD desktop using WindowMaker
Err codemadness.org 70 i 29885 Err codemadness.org 70 i 29886Err codemadness.org 70 i 29887Err codemadness.org 70 i 29891 Err codemadness.org 70 i 29892Since I started using *N?X, I’ve regularly used WindowMaker. I’ve always liked the look and feel, the dock system and the dockapps. It may look a bit oldish nowadays. And that’s enough to try to change this. So here it is, a 2019 flavored WindowMaker Desktop, running on OpenBSD 6.4/amd64.
Err codemadness.org 70 i 29890
Err codemadness.org 70 i 29888 This configuration uses the Nord color-scheme, the Adapta-Nokto-Eta GTK theme and the Moblin Unofficial Icons icon set. I did remove applications icons. I just don’t need them on the bottom of the screen as I heavily use “F11” to pop-up the windows list. To be able to do that and keep the dockapps, I tweaked my ~/GNUstep/Defaults/WMWindowAttributes and created a ~/GNUstep/Library/WindowMaker/Themes/Nord.themed/style.
Err codemadness.org 70 i 29889 And here it is, the NeXT OpenBSD Desktop!
Err codemadness.org 70 i 29897Err codemadness.org 70 i 29904 Err codemadness.org 70 i 29905In a previous episode, we’ve seen that it is possible to create opaque types. However, creation and destruction of such type must be delegated to some dedicated functions, which themselves rely on dynamic allocation mechanisms.
Err codemadness.org 70 i 29903
Err codemadness.org 70 i 29898 Sometimes, it can be convenient to bypass the heap, and all its malloc() / free() shenanigans. Pushing a structure onto the stack, or within thread-local storage, are natural capabilities offered by a normal struct. It can be desirable at times.
Err codemadness.org 70 i 29899 The previously described opaque type is so secret that it has no size, hence is not suitable for such scenario.
Err codemadness.org 70 i 29900 Fortunately, static opaque types are possible.
Err codemadness.org 70 i 29901 The main idea is to create a “shell type”, with a known size and an alignment, able to host the target (private) structure.
Err codemadness.org 70 i 29902 For safer maintenance, the shell type and the target structure must be kept in sync, by using typically a static assert. It will ensure that the shell type is always large enough to host the target structure. This check is important to automatically detect future evolution of the target structure.
Err codemadness.org 70 i 29910Err codemadness.org 70 i 29914 Err codemadness.org 70 i 29915My top used shell command is |. This is called a pipe.
Err codemadness.org 70 i 29913
Err codemadness.org 70 i 29911 In brief, the | allows for the output of one program (on the left) to become the input of another program (on the right). It is a way of connecting two commands together.
Err codemadness.org 70 i 29912 According to doc.cat-v.org/unix/pipes/, the origin of pipes came long before Unix. Pipes can be traced back to this note from Doug McIlroy in 1964
##Beastie Bits
Err codemadness.org 70 i 29918 Err codemadness.org 70 i 29919##BUG Calendar
Err codemadness.org 70 i 29936 Err codemadness.org 70 i 29937##Feedback/Questions
Err codemadness.org 70 i 29949 Err codemadness.org 70 i 29950##Headlines
Err codemadness.org 70
i 30058 ###Strategic thinking, or what I think what we need to do to keep FreeBSD relevant
Err codemadness.org 70 i 30061Err codemadness.org 70 i 30067 Err codemadness.org 70 i 30068Since I participate in the FreeBSD project there are from time to time some voices which say FreeBSD is dead, Linux is the way to go. Most of the time those voices are trolls, or people which do not really know what FreeBSD has to offer. Sometimes those voices wear blinders, they only see their own little world (were Linux just works fine) and do not see the big picture (like e.g. competition stimulates business, …) or even dare to look what FreeBSD has to offer.
Err codemadness.org 70 i 30066
Err codemadness.org 70 i 30062 Sometimes those voices raise a valid concern, and it is up to the FreeBSD project to filter out what would be beneficial. Recently there were some mails on the FreeBSD lists in the sense of “What about going into direction X?”. Some people just had the opinion that we should stay where we are. In my opinion this is similarly bad to blindly saying FreeBSD is dead and following the masses. It would mean stagnation. We should not hold people back in exploring new / different directions. Someone wants to write a kernel module in (a subset of) C++ or in Rust… well, go ahead, give it a try, we can put it into the Ports Collection and let people get experience with it.
Err codemadness.org 70 i 30063 This discussion on the mailinglists also triggered some kind of “where do we see us in the next years” / strategic thinking reflection. What I present here, is my very own opinion about things we in the FreeBSD project should look at, to stay relevant in the long term. To be able to put that into scope, I need to clarify what “relevant” means in this case.
Err codemadness.org 70 i 30064 FreeBSD is currently used by companies like Netflix, NetApp, Cisco, Juniper, and many others as a base for products or services. It is also used by end‐users as a work‐horse (e.g. mailservers, webservers, …). Staying relevant means in this context, to provide something which the user base is interested in to use and which makes it more easy / fast for the user base to deliver whatever they want or need to deliver than with another kind of system. And this in terms of time to market of a solution (time to deliver a service like a web‐/mail‐/whatever‐server or product), and in terms of performance (which not only means speed, but also security and reliability and …) of the solution.
Err codemadness.org 70 i 30065 I have categorized the list of items I think are important into (new) code/features, docs, polishing and project infrastructure. Links in the following usually point to documentation/HOWTOs/experiences for/with FreeBSD, and not to the canonical entry points of the projects or technologies. In a few cases the links point to an explanation in the wikipedia or to the website of the topic in question.
###Reflecting on The Soul of a New Machine
Err codemadness.org 70 i 30071 Err codemadness.org 70 i 30072Err codemadness.org 70 i 30073Err codemadness.org 70 i 30077 Err codemadness.org 70 i 30078Long ago as an undergraduate, I found myself back home on a break from school, bored and with eyes wandering idly across a family bookshelf. At school, I had started to find a calling in computing systems, and now in the den, an old book suddenly caught my eye: Tracy Kidder’s The Soul of a New Machine. Taking it off the shelf, the book grabbed me from its first descriptions of Tom West, captivating me with the epic tale of the development of the Eagle at Data General. I — like so many before and after me — found the book to be life changing: by telling the stories of the people behind the machine, the book showed the creative passion among engineers that might otherwise appear anodyne, inspiring me to chart a course that might one day allow me to make a similar mark.
Err codemadness.org 70 i 30076
Err codemadness.org 70 i 30074 Since reading it over two decades ago, I have recommended The Soul of a Machine at essentially every opportunity, believing that it is a part of computing’s literary foundation — that it should be considered our Odyssey. Recently, I suggested it as beach reading to Jess Frazelle, and apparently with perfect timing: when I saw the book at the top of her vacation pile, I knew a fuse had been lit. I was delighted (though not at all surprised) to see Jess livetweet her admiration of the book, starting with the compelling prose, the lucid technical explanations and the visceral anecdotes — but then moving on to the deeper technical inspiration she found in the book. And as she reached the book’s crescendo, Jess felt its full power, causing her to reflect on the nature of engineering motivation.
Err codemadness.org 70 i 30075 Excited to see the effect of the book on Jess, I experienced a kind of reflected recommendation: I was inspired to (re-)read my own recommendation! Shortly after I started reading, I began to realize that (contrary to what I had been telling myself over the years!) I had not re-read the book in full since that first reading so many years ago. Rather, over the years I had merely revisited those sections that I remembered fondly. On the one hand, these sections are singular: the saga of engineers debugging a nasty I-cache data corruption issue; the young engineer who implements the simulator in an impossibly short amount of time because no one wanted to tell him that he was being impossibly ambitious; the engineer who, frustrated with a nanosecond-scale timing problem in the ALU that he designed, moved to a commune in Vermont, claiming a desire to deal with “no unit of time shorter than a season”. But by limiting myself to these passages, I was succumbing to the selection bias of my much younger self; re-reading the book now from start to finish has given new parts depth and meaning. Aspects that were more abstract to me as an undergraduate — from the organizational rivalries and absurdities of the industry to the complexities of West’s character and the tribulations of the team down the stretch — are now deeply evocative of concrete episodes of my own career.
##News Roundup
Err codemadness.org 70 i 30085 Err codemadness.org 70 i 30086###Out-Of-The-Box 10GbE Network Benchmarks On Nine Linux Distributions Plus FreeBSD 12
Err codemadness.org 70 i 30087 Err codemadness.org 70 i 30088Err codemadness.org 70 i 30089Err codemadness.org 70 i 30094 Err codemadness.org 70 i 30095Last week I started running some fresh 10GbE Linux networking performance benchmarks across a few different Linux distributions. That testing has now been extended to cover nine Linux distributions plus FreeBSD 12.0 to compare the out-of-the-box networking performance.
Err codemadness.org 70 i 30093
Err codemadness.org 70 i 30090 Tested this round alongside FreeBSD 12.0 was Antergos 19.1, CentOS 7, Clear Linux, Debian 9.6, Fedora Server 29, openSUSE Leap 15.0, openSUSE Tumbleweed, Ubuntu 18.04.1 LTS, and Ubuntu 18.10.
Err codemadness.org 70 i 30091 All of the tests were done with a Tyan S7106 1U server featuring two Intel Xeon Gold 6138 CPUs, 96GB of DDR4 system memory, and Samsung 970 EVO SSD. For the 10GbE connectivity on this server was an add-in HP NC523SFP PCIe adapter providing two 10Gb SPF+ ports using a QLogic 8214 controller.
Err codemadness.org 70 i 30092 Originally the plan as well was to include Windows Server 2016/2019. Unfortunately the QLogic driver download site was malfunctioning since Cavium’s acquisition of the company and the other Windows Server 2016 driver options not panning out and there not being a Windows Server 2019 option. So sadly that Windows testing was thwarted so I since started testing over with a Mellanox Connectx-2 10GbE NIC, which is well supported on Windows Server and so that testing is ongoing for the next article of Windows vs. Linux 10 Gigabit network performance plus some “tuned” Linux networking results too.
###Integration of the LLVM sanitizers with the NetBSD base system
Err codemadness.org 70 i 30098 Err codemadness.org 70 i 30099Err codemadness.org 70 i 30100Err codemadness.org 70 i 30104 Err codemadness.org 70 i 30105Over the past month I’ve merged the LLVM compiler-rt sanitizers (LLVM svn r350590) with the base system. I’ve also managed to get a functional set of Makefile rules to build all of them, namely:
Err codemadness.org 70 i 30103
Err codemadness.org 70 i 30101 ASan, UBSan, TSan, MSan, libFuzzer, SafeStack, XRay.
Err codemadness.org 70 i 30102 In all supported variations and modes that are supported by the original LLVM compiler-rt package.
###Distrowatch FreeNAS 11.2 review
Err codemadness.org 70 i 30108 Err codemadness.org 70 i 30109Err codemadness.org 70 i 30110Err codemadness.org 70 i 30112 Err codemadness.org 70 i 30113The project’s latest release is FreeNAS 11.2 and, at first, I nearly overlooked the new version because it appeared to be a minor point release. However, a lot of work went into the new version and 11.2 offers a lot of changes when compared next to 11.1, “including a major revamp of the web interface, support for self-encrypting drives, and new, backwards-compatible REST and WebSocket APIs. This update also introduces iocage for improved plugins and jails management and simplified plugin development.”
Err codemadness.org 70 i 30111
##Beastie Bits
Err codemadness.org 70 i 30116 Err codemadness.org 70 i 30117##Feedback/Questions
Err codemadness.org 70 i 30131 Err codemadness.org 70 i 30132##Headlines
Err codemadness.org 70
i 30150 ###Strategic thinking, or what I think what we need to do to keep FreeBSD relevant
Err codemadness.org 70 i 30153Err codemadness.org 70 i 30159 Err codemadness.org 70 i 30160Since I participate in the FreeBSD project there are from time to time some voices which say FreeBSD is dead, Linux is the way to go. Most of the time those voices are trolls, or people which do not really know what FreeBSD has to offer. Sometimes those voices wear blinders, they only see their own little world (were Linux just works fine) and do not see the big picture (like e.g. competition stimulates business, …) or even dare to look what FreeBSD has to offer.
Err codemadness.org 70 i 30158
Err codemadness.org 70 i 30154 Sometimes those voices raise a valid concern, and it is up to the FreeBSD project to filter out what would be beneficial. Recently there were some mails on the FreeBSD lists in the sense of “What about going into direction X?”. Some people just had the opinion that we should stay where we are. In my opinion this is similarly bad to blindly saying FreeBSD is dead and following the masses. It would mean stagnation. We should not hold people back in exploring new / different directions. Someone wants to write a kernel module in (a subset of) C++ or in Rust… well, go ahead, give it a try, we can put it into the Ports Collection and let people get experience with it.
Err codemadness.org 70 i 30155 This discussion on the mailinglists also triggered some kind of “where do we see us in the next years” / strategic thinking reflection. What I present here, is my very own opinion about things we in the FreeBSD project should look at, to stay relevant in the long term. To be able to put that into scope, I need to clarify what “relevant” means in this case.
Err codemadness.org 70 i 30156 FreeBSD is currently used by companies like Netflix, NetApp, Cisco, Juniper, and many others as a base for products or services. It is also used by end‐users as a work‐horse (e.g. mailservers, webservers, …). Staying relevant means in this context, to provide something which the user base is interested in to use and which makes it more easy / fast for the user base to deliver whatever they want or need to deliver than with another kind of system. And this in terms of time to market of a solution (time to deliver a service like a web‐/mail‐/whatever‐server or product), and in terms of performance (which not only means speed, but also security and reliability and …) of the solution.
Err codemadness.org 70 i 30157 I have categorized the list of items I think are important into (new) code/features, docs, polishing and project infrastructure. Links in the following usually point to documentation/HOWTOs/experiences for/with FreeBSD, and not to the canonical entry points of the projects or technologies. In a few cases the links point to an explanation in the wikipedia or to the website of the topic in question.
###Reflecting on The Soul of a New Machine
Err codemadness.org 70 i 30163 Err codemadness.org 70 i 30164Err codemadness.org 70 i 30165Err codemadness.org 70 i 30169 Err codemadness.org 70 i 30170Long ago as an undergraduate, I found myself back home on a break from school, bored and with eyes wandering idly across a family bookshelf. At school, I had started to find a calling in computing systems, and now in the den, an old book suddenly caught my eye: Tracy Kidder’s The Soul of a New Machine. Taking it off the shelf, the book grabbed me from its first descriptions of Tom West, captivating me with the epic tale of the development of the Eagle at Data General. I — like so many before and after me — found the book to be life changing: by telling the stories of the people behind the machine, the book showed the creative passion among engineers that might otherwise appear anodyne, inspiring me to chart a course that might one day allow me to make a similar mark.
Err codemadness.org 70 i 30168
Err codemadness.org 70 i 30166 Since reading it over two decades ago, I have recommended The Soul of a Machine at essentially every opportunity, believing that it is a part of computing’s literary foundation — that it should be considered our Odyssey. Recently, I suggested it as beach reading to Jess Frazelle, and apparently with perfect timing: when I saw the book at the top of her vacation pile, I knew a fuse had been lit. I was delighted (though not at all surprised) to see Jess livetweet her admiration of the book, starting with the compelling prose, the lucid technical explanations and the visceral anecdotes — but then moving on to the deeper technical inspiration she found in the book. And as she reached the book’s crescendo, Jess felt its full power, causing her to reflect on the nature of engineering motivation.
Err codemadness.org 70 i 30167 Excited to see the effect of the book on Jess, I experienced a kind of reflected recommendation: I was inspired to (re-)read my own recommendation! Shortly after I started reading, I began to realize that (contrary to what I had been telling myself over the years!) I had not re-read the book in full since that first reading so many years ago. Rather, over the years I had merely revisited those sections that I remembered fondly. On the one hand, these sections are singular: the saga of engineers debugging a nasty I-cache data corruption issue; the young engineer who implements the simulator in an impossibly short amount of time because no one wanted to tell him that he was being impossibly ambitious; the engineer who, frustrated with a nanosecond-scale timing problem in the ALU that he designed, moved to a commune in Vermont, claiming a desire to deal with “no unit of time shorter than a season”. But by limiting myself to these passages, I was succumbing to the selection bias of my much younger self; re-reading the book now from start to finish has given new parts depth and meaning. Aspects that were more abstract to me as an undergraduate — from the organizational rivalries and absurdities of the industry to the complexities of West’s character and the tribulations of the team down the stretch — are now deeply evocative of concrete episodes of my own career.
##News Roundup
Err codemadness.org 70 i 30177 Err codemadness.org 70 i 30178###Out-Of-The-Box 10GbE Network Benchmarks On Nine Linux Distributions Plus FreeBSD 12
Err codemadness.org 70 i 30179 Err codemadness.org 70 i 30180Err codemadness.org 70 i 30181Err codemadness.org 70 i 30186 Err codemadness.org 70 i 30187Last week I started running some fresh 10GbE Linux networking performance benchmarks across a few different Linux distributions. That testing has now been extended to cover nine Linux distributions plus FreeBSD 12.0 to compare the out-of-the-box networking performance.
Err codemadness.org 70 i 30185
Err codemadness.org 70 i 30182 Tested this round alongside FreeBSD 12.0 was Antergos 19.1, CentOS 7, Clear Linux, Debian 9.6, Fedora Server 29, openSUSE Leap 15.0, openSUSE Tumbleweed, Ubuntu 18.04.1 LTS, and Ubuntu 18.10.
Err codemadness.org 70 i 30183 All of the tests were done with a Tyan S7106 1U server featuring two Intel Xeon Gold 6138 CPUs, 96GB of DDR4 system memory, and Samsung 970 EVO SSD. For the 10GbE connectivity on this server was an add-in HP NC523SFP PCIe adapter providing two 10Gb SPF+ ports using a QLogic 8214 controller.
Err codemadness.org 70 i 30184 Originally the plan as well was to include Windows Server 2016/2019. Unfortunately the QLogic driver download site was malfunctioning since Cavium’s acquisition of the company and the other Windows Server 2016 driver options not panning out and there not being a Windows Server 2019 option. So sadly that Windows testing was thwarted so I since started testing over with a Mellanox Connectx-2 10GbE NIC, which is well supported on Windows Server and so that testing is ongoing for the next article of Windows vs. Linux 10 Gigabit network performance plus some “tuned” Linux networking results too.
###Integration of the LLVM sanitizers with the NetBSD base system
Err codemadness.org 70 i 30190 Err codemadness.org 70 i 30191Err codemadness.org 70 i 30192Err codemadness.org 70 i 30196 Err codemadness.org 70 i 30197Over the past month I’ve merged the LLVM compiler-rt sanitizers (LLVM svn r350590) with the base system. I’ve also managed to get a functional set of Makefile rules to build all of them, namely:
Err codemadness.org 70 i 30195
Err codemadness.org 70 i 30193 ASan, UBSan, TSan, MSan, libFuzzer, SafeStack, XRay.
Err codemadness.org 70 i 30194 In all supported variations and modes that are supported by the original LLVM compiler-rt package.
###Distrowatch FreeNAS 11.2 review
Err codemadness.org 70 i 30200 Err codemadness.org 70 i 30201Err codemadness.org 70 i 30202Err codemadness.org 70 i 30204 Err codemadness.org 70 i 30205The project’s latest release is FreeNAS 11.2 and, at first, I nearly overlooked the new version because it appeared to be a minor point release. However, a lot of work went into the new version and 11.2 offers a lot of changes when compared next to 11.1, “including a major revamp of the web interface, support for self-encrypting drives, and new, backwards-compatible REST and WebSocket APIs. This update also introduces iocage for improved plugins and jails management and simplified plugin development.”
Err codemadness.org 70 i 30203
##Beastie Bits
Err codemadness.org 70 i 30208 Err codemadness.org 70 i 30209##Feedback/Questions
Err codemadness.org 70 i 30223 Err codemadness.org 70 i 30224Err codemadness.org 70 i 30529Err codemadness.org 70 i 30535 Err codemadness.org 70 i 30536Dear FreeBSD Community Member,
Err codemadness.org 70 i 30534
Err codemadness.org 70 i 30530 Happy New Year! It’s always exciting starting the new year with ambitious plans to support FreeBSD in new and existing areas. We achieved our fundraising goal for 2018, so we plan on funding a lot of work this year! Though it’s the new year, this newsletter highlights some of the work we accomplished in December. We also put together a list of technologies and features we are considering supporting, and are looking for feedback on what users want to help inform our 2019 development plans. Our advocacy and education efforts are in full swing as we prepare for upcoming conferences including FOSDEM, SANOG33, and SCaLE.
Err codemadness.org 70 i 30531 Finally, we created a year-end video to talk about the work we did in 2018. That in itself was an endeavor, so please take a few minutes to watch it! We’re working on improving the methods we use to inform the community on the work we are doing to support the Project, and are always open to feedback. Now, sit back, grab a refreshing beverage, and enjoy our newsletter!
Err codemadness.org 70 i 30532 Happy reading!!
Err codemadness.org 70 i 30533 Deb
Err codemadness.org 70 i 30541Err codemadness.org 70 i 30544 Err codemadness.org 70 i 30545For more than four years now, OPNsense is driving innovation through modularising and hardening the open source firewall, with simple and reliable firmware upgrades, multi-language support, HardenedBSD security, fast adoption of upstream software updates as well as clear and stable 2-Clause BSD licensing.
Err codemadness.org 70 i 30543
Err codemadness.org 70 i 30542 The 19.1 release, nicknamed “Inspiring Iguana”, consists of a total of 620 individual changes since 18.7 came out 6 months ago, spread out over 12 intermediate releases including the recent release candidates. That is the average of 2 stable releases per month, security updates and important bug fixes included! If we had to pick a few highlights it would be: The firewall alias API is finally in place. The migration to HardenedBSD 11.2 has been completed. 2FA now works with a remote LDAP / local TOTP combination. And the OpenVPN client export was rewritten for full API support as well.
These are the most prominent changes since version 18.7:
Err codemadness.org 70 i 30548fully functional firewall alias API
Err codemadness.org 70 i 30551PIE firewall shaper support
Err codemadness.org 70 i 30554firewall NAT rule logging support
Err codemadness.org 70 i 305572FA via LDAP-TOTP combination
Err codemadness.org 70 i 30560WPAD / PAC and parent proxy support in the web proxy
Err codemadness.org 70 i 30563P12 certificate export with custom passwords
Err codemadness.org 70 i 30566Dpinger is now the default gateway monitor
Err codemadness.org 70 i 30569ET Pro Telemetry edition plugin[2]
Err codemadness.org 70 i 30572extended IPv6 DUID support
Err codemadness.org 70 i 30575Dnsmasq DNSSEC support
Err codemadness.org 70 i 30578OpenVPN client export API
Err codemadness.org 70 i 30581Realtek NIC driver version 1.95
Err codemadness.org 70 i 30584HardenedBSD 11.2, LibreSSL 2.7
Err codemadness.org 70 i 30587Unbound 1.8, Suricata 4.1
Err codemadness.org 70 i 30590Phalcon 3.4, Perl 5.28
Err codemadness.org 70 i 30593firmware health check extended to cover all OS files, HTTPS mirror default
Err codemadness.org 70 i 30596updates are browser cache-safe regarding CSS and JavaScript assets
Err codemadness.org 70 i 30599collapsible side bar menu in the default theme
Err codemadness.org 70 i 30602language updates for Chinese, Czech, French, German, Japanese, Portuguese and Russian
Err codemadness.org 70 i 30605API backup export, Bind, Hardware widget, Nginx, Ntopng, VnStat and Dnscrypt-proxy plugins
Err codemadness.org 70 i 30608Here are the full changes against version 19.1-RC2:
Err codemadness.org 70 i 30611ipsec: add firewall interface as soon as phase 1 is enabled
Err codemadness.org 70 i 30614ipsec: phase 1 selection GUI JavaScript compatibility fix
Err codemadness.org 70 i 30617monit: widget improvements and bug fix (contributed by Frank Brendel)
Err codemadness.org 70 i 30620ui: fix regression in single host or network subnet select in static pages
Err codemadness.org 70 i 30623plugins: os-frr 1.7 updates OSFP outbound rules (contributed by Fabian Franz)
Err codemadness.org 70 i 30626plugins: os-telegraf 1.7.4 fixes packet filter input
Err codemadness.org 70 i 30629plugins: os-theme-rebellion 1.8.2 adds image colour invert
Err codemadness.org 70 i 30632plugins: os-vnstat 1.1[3]
Err codemadness.org 70 i 30635plugins: os-zabbix-agent now uses Zabbix version 4.0
Err codemadness.org 70 i 30638src: revert mmc_calculate_clock() as HS200/HS400 support breaks legacy support
Err codemadness.org 70 i 30641src: update sqlite3-3.20.0 to sqlite3-3.26.0[4]
Err codemadness.org 70 i 30644src: import tzdata 2018h, 2018i[5]
Err codemadness.org 70 i 30647src: avoid unsynchronized updates to kn_status[6]
Err codemadness.org 70 i 30650ports: ca_root_nss 3.42
Err codemadness.org 70 i 30653ports: dhcp6c 20190128 prevent rawops double-free (contributed by Team Rebellion)
Err codemadness.org 70 i 30656ports: sudo patch to fix listpw=never[7]
Err codemadness.org 70 i 30659Err codemadness.org 70 i 30669Err codemadness.org 70 i 30673 Err codemadness.org 70 i 30674Over two years ago, I made a pledge to use NetBSD as my sole OS and only operating system, and to resist booting into any other OS until I had implemented hardware-accelerated virtualization in the NetBSD kernel (the equivalent of Linux’ KVM, or Hyper-V).
Err codemadness.org 70 i 30672
Err codemadness.org 70 i 30670 Today, I am here to report: Mission Accomplished!
Err codemadness.org 70 i 30671 It’s been a long road, but we now have hardware-accelerated virtualization in the kernel! And while I had only initially planned to get Oracle VirtualBox working, I have with the help of the Intel HAXM engine (the same backend used for virtualization in Android Studio) and a qemu frontend, successfully managed to boot a range of mainstream operating systems.
Err codemadness.org 70 i 30683Err codemadness.org 70 i 30688 Err codemadness.org 70 i 30689ZFS is todays most advanced filesystem. It originated on the Solaris operating system and thanks to Sun’s decision to open it up, we have it available on quite a number of Unix-like operating systems. That’s just great! Great for everyone.
Err codemadness.org 70 i 30687
Err codemadness.org 70 i 30684 For everyone? Nope. There are people out there who don’t like ZFS. Which is totally fine, they don’t need to use it after all. But worse: There are people who actively hate ZFS and think that others should not use it. Ok, it’s nothing new that some random guys on the net are acting like assholes, trying to tell you what you must not do, right? Whoever has been online for more than a couple of days probably already got used to it. Unfortunately its still worse: One such spoilsport is Greg Kroah-Hartman, Linux guru and informal second-in-command after Linus Torvalds.
Err codemadness.org 70 i 30685 There have been some attempts to defend the stance of this kernel developer. One was to point at the fact that the “ZFS on Linux” (ZoL) port uses two kernel functions, __kernel_fpu_begin() and __kernel_fpu_end(), which have been deprecated for a very long time and that it makes sense to finally get rid of them since nothing in-kernel uses it anymore. Nobody is going to argue against that. The problem becomes clear by looking at the bigger picture, though:
Err codemadness.org 70 i 30686 The need for functions doing just what the old ones did has of course not vanished. The functions have been replaced with other ones. And those ones are deliberately made GPL-only. Yes, that’s right: There’s no technical reason whatsoever! It’s purely ideology – and it’s a terrible one.
Err codemadness.org 70 i 30694Err codemadness.org 70 i 30697 Err codemadness.org 70 i 30698ClonOS is a turnkey Open Source platform based on FreeBSD and the CBSD framework. ClonOS offers a complete web UI for easily controlling, deploying and managing FreeBSD jails containers and Bhyve/Xen hyperviser virtual environments.
Err codemadness.org 70 i 30696
Err codemadness.org 70 i 30695 ClonOS is currently the only platform available which allow both Xen and Bhyve hypervisor to coexist on the same host. Being a FreeBSD base platform, ClonOS ability to create and manage jails allows you to run FreeBSD applications without losing performance.
Features:
Err codemadness.org 70 i 30701easy management via web UI interface
Err codemadness.org 70 i 30704live Bhyve migration [coming soon, roadmap]
Err codemadness.org 70 i 30707Bhyve management (create, delete VM)
Err codemadness.org 70 i 30710Xen management (create, delete VM) [coming soon, roadmap]
Err codemadness.org 70 i 30713connection to the “physical” guest console via VNC from the browser or directly
Err codemadness.org 70 i 30716Real time system monitoring
Err codemadness.org 70 i 30719access to load statistics through SQLite3 and beanstalkd
Err codemadness.org 70 i 30722support for ZFS features (cloning, snapshots)
Err codemadness.org 70 i 30725import/export of virtual environments
Err codemadness.org 70 i 30728public repository with virtual machine templates
Err codemadness.org 70 i 30731puppet-based helpers for configuring popular services
Err codemadness.org 70 i 30734ClonOS is a free open-source FreeBSD-based platform for virtual environments creation and management. In the core:
Err codemadness.org 70 i 30737FreeBSD OS as hoster platform
Err codemadness.org 70 i 30740bhyve(8) as hypervisor engine
Err codemadness.org 70 i 30743Xen as hypervisor engine
Err codemadness.org 70 i 30746vale(4) as Virtual Ethernet Switch
Err codemadness.org 70 i 30749jail(8) as container engine
Err codemadness.org 70 i 30752CBSD Project as management tools
Err codemadness.org 70 i 30755Puppet as configuration management
Err codemadness.org 70 i 30758Err codemadness.org 70 i 30813Err codemadness.org 70 i 30819 Err codemadness.org 70 i 30820Dear FreeBSD Community Member,
Err codemadness.org 70 i 30818
Err codemadness.org 70 i 30814 Happy New Year! It’s always exciting starting the new year with ambitious plans to support FreeBSD in new and existing areas. We achieved our fundraising goal for 2018, so we plan on funding a lot of work this year! Though it’s the new year, this newsletter highlights some of the work we accomplished in December. We also put together a list of technologies and features we are considering supporting, and are looking for feedback on what users want to help inform our 2019 development plans. Our advocacy and education efforts are in full swing as we prepare for upcoming conferences including FOSDEM, SANOG33, and SCaLE.
Err codemadness.org 70 i 30815 Finally, we created a year-end video to talk about the work we did in 2018. That in itself was an endeavor, so please take a few minutes to watch it! We’re working on improving the methods we use to inform the community on the work we are doing to support the Project, and are always open to feedback. Now, sit back, grab a refreshing beverage, and enjoy our newsletter!
Err codemadness.org 70 i 30816 Happy reading!!
Err codemadness.org 70 i 30817 Deb
Err codemadness.org 70 i 30825Err codemadness.org 70 i 30828 Err codemadness.org 70 i 30829For more than four years now, OPNsense is driving innovation through modularising and hardening the open source firewall, with simple and reliable firmware upgrades, multi-language support, HardenedBSD security, fast adoption of upstream software updates as well as clear and stable 2-Clause BSD licensing.
Err codemadness.org 70 i 30827
Err codemadness.org 70 i 30826 The 19.1 release, nicknamed “Inspiring Iguana”, consists of a total of 620 individual changes since 18.7 came out 6 months ago, spread out over 12 intermediate releases including the recent release candidates. That is the average of 2 stable releases per month, security updates and important bug fixes included! If we had to pick a few highlights it would be: The firewall alias API is finally in place. The migration to HardenedBSD 11.2 has been completed. 2FA now works with a remote LDAP / local TOTP combination. And the OpenVPN client export was rewritten for full API support as well.
These are the most prominent changes since version 18.7:
Err codemadness.org 70 i 30832fully functional firewall alias API
Err codemadness.org 70 i 30835PIE firewall shaper support
Err codemadness.org 70 i 30838firewall NAT rule logging support
Err codemadness.org 70 i 308412FA via LDAP-TOTP combination
Err codemadness.org 70 i 30844WPAD / PAC and parent proxy support in the web proxy
Err codemadness.org 70 i 30847P12 certificate export with custom passwords
Err codemadness.org 70 i 30850Dpinger is now the default gateway monitor
Err codemadness.org 70 i 30853ET Pro Telemetry edition plugin[2]
Err codemadness.org 70 i 30856extended IPv6 DUID support
Err codemadness.org 70 i 30859Dnsmasq DNSSEC support
Err codemadness.org 70 i 30862OpenVPN client export API
Err codemadness.org 70 i 30865Realtek NIC driver version 1.95
Err codemadness.org 70 i 30868HardenedBSD 11.2, LibreSSL 2.7
Err codemadness.org 70 i 30871Unbound 1.8, Suricata 4.1
Err codemadness.org 70 i 30874Phalcon 3.4, Perl 5.28
Err codemadness.org 70 i 30877firmware health check extended to cover all OS files, HTTPS mirror default
Err codemadness.org 70 i 30880updates are browser cache-safe regarding CSS and JavaScript assets
Err codemadness.org 70 i 30883collapsible side bar menu in the default theme
Err codemadness.org 70 i 30886language updates for Chinese, Czech, French, German, Japanese, Portuguese and Russian
Err codemadness.org 70 i 30889API backup export, Bind, Hardware widget, Nginx, Ntopng, VnStat and Dnscrypt-proxy plugins
Err codemadness.org 70 i 30892Here are the full changes against version 19.1-RC2:
Err codemadness.org 70 i 30895ipsec: add firewall interface as soon as phase 1 is enabled
Err codemadness.org 70 i 30898ipsec: phase 1 selection GUI JavaScript compatibility fix
Err codemadness.org 70 i 30901monit: widget improvements and bug fix (contributed by Frank Brendel)
Err codemadness.org 70 i 30904ui: fix regression in single host or network subnet select in static pages
Err codemadness.org 70 i 30907plugins: os-frr 1.7 updates OSFP outbound rules (contributed by Fabian Franz)
Err codemadness.org 70 i 30910plugins: os-telegraf 1.7.4 fixes packet filter input
Err codemadness.org 70 i 30913plugins: os-theme-rebellion 1.8.2 adds image colour invert
Err codemadness.org 70 i 30916plugins: os-vnstat 1.1[3]
Err codemadness.org 70 i 30919plugins: os-zabbix-agent now uses Zabbix version 4.0
Err codemadness.org 70 i 30922src: revert mmc_calculate_clock() as HS200/HS400 support breaks legacy support
Err codemadness.org 70 i 30925src: update sqlite3-3.20.0 to sqlite3-3.26.0[4]
Err codemadness.org 70 i 30928src: import tzdata 2018h, 2018i[5]
Err codemadness.org 70 i 30931src: avoid unsynchronized updates to kn_status[6]
Err codemadness.org 70 i 30934ports: ca_root_nss 3.42
Err codemadness.org 70 i 30937ports: dhcp6c 20190128 prevent rawops double-free (contributed by Team Rebellion)
Err codemadness.org 70 i 30940ports: sudo patch to fix listpw=never[7]
Err codemadness.org 70 i 30943Err codemadness.org 70 i 30953Err codemadness.org 70 i 30957 Err codemadness.org 70 i 30958Over two years ago, I made a pledge to use NetBSD as my sole OS and only operating system, and to resist booting into any other OS until I had implemented hardware-accelerated virtualization in the NetBSD kernel (the equivalent of Linux’ KVM, or Hyper-V).
Err codemadness.org 70 i 30956
Err codemadness.org 70 i 30954 Today, I am here to report: Mission Accomplished!
Err codemadness.org 70 i 30955 It’s been a long road, but we now have hardware-accelerated virtualization in the kernel! And while I had only initially planned to get Oracle VirtualBox working, I have with the help of the Intel HAXM engine (the same backend used for virtualization in Android Studio) and a qemu frontend, successfully managed to boot a range of mainstream operating systems.
Err codemadness.org 70 i 30967Err codemadness.org 70 i 30972 Err codemadness.org 70 i 30973ZFS is todays most advanced filesystem. It originated on the Solaris operating system and thanks to Sun’s decision to open it up, we have it available on quite a number of Unix-like operating systems. That’s just great! Great for everyone.
Err codemadness.org 70 i 30971
Err codemadness.org 70 i 30968 For everyone? Nope. There are people out there who don’t like ZFS. Which is totally fine, they don’t need to use it after all. But worse: There are people who actively hate ZFS and think that others should not use it. Ok, it’s nothing new that some random guys on the net are acting like assholes, trying to tell you what you must not do, right? Whoever has been online for more than a couple of days probably already got used to it. Unfortunately its still worse: One such spoilsport is Greg Kroah-Hartman, Linux guru and informal second-in-command after Linus Torvalds.
Err codemadness.org 70 i 30969 There have been some attempts to defend the stance of this kernel developer. One was to point at the fact that the “ZFS on Linux” (ZoL) port uses two kernel functions, __kernel_fpu_begin() and __kernel_fpu_end(), which have been deprecated for a very long time and that it makes sense to finally get rid of them since nothing in-kernel uses it anymore. Nobody is going to argue against that. The problem becomes clear by looking at the bigger picture, though:
Err codemadness.org 70 i 30970 The need for functions doing just what the old ones did has of course not vanished. The functions have been replaced with other ones. And those ones are deliberately made GPL-only. Yes, that’s right: There’s no technical reason whatsoever! It’s purely ideology – and it’s a terrible one.
Err codemadness.org 70 i 30978Err codemadness.org 70 i 30981 Err codemadness.org 70 i 30982ClonOS is a turnkey Open Source platform based on FreeBSD and the CBSD framework. ClonOS offers a complete web UI for easily controlling, deploying and managing FreeBSD jails containers and Bhyve/Xen hyperviser virtual environments.
Err codemadness.org 70 i 30980
Err codemadness.org 70 i 30979 ClonOS is currently the only platform available which allow both Xen and Bhyve hypervisor to coexist on the same host. Being a FreeBSD base platform, ClonOS ability to create and manage jails allows you to run FreeBSD applications without losing performance.
Features:
Err codemadness.org 70 i 30985easy management via web UI interface
Err codemadness.org 70 i 30988live Bhyve migration [coming soon, roadmap]
Err codemadness.org 70 i 30991Bhyve management (create, delete VM)
Err codemadness.org 70 i 30994Xen management (create, delete VM) [coming soon, roadmap]
Err codemadness.org 70 i 30997connection to the “physical” guest console via VNC from the browser or directly
Err codemadness.org 70 i 31000Real time system monitoring
Err codemadness.org 70 i 31003access to load statistics through SQLite3 and beanstalkd
Err codemadness.org 70 i 31006support for ZFS features (cloning, snapshots)
Err codemadness.org 70 i 31009import/export of virtual environments
Err codemadness.org 70 i 31012public repository with virtual machine templates
Err codemadness.org 70 i 31015puppet-based helpers for configuring popular services
Err codemadness.org 70 i 31018ClonOS is a free open-source FreeBSD-based platform for virtual environments creation and management. In the core:
Err codemadness.org 70 i 31021FreeBSD OS as hoster platform
Err codemadness.org 70 i 31024bhyve(8) as hypervisor engine
Err codemadness.org 70 i 31027Xen as hypervisor engine
Err codemadness.org 70 i 31030vale(4) as Virtual Ethernet Switch
Err codemadness.org 70 i 31033jail(8) as container engine
Err codemadness.org 70 i 31036CBSD Project as management tools
Err codemadness.org 70 i 31039Puppet as configuration management
Err codemadness.org 70 i 31042##Interview - Niclas Zeising - zeising@FreeBSD.org / @niclaszeising
Err codemadness.org 70
i 31128 Interview topic: FreeBSD Graphics Stack
##Feedback/Questions
Err codemadness.org 70 i 31145 Err codemadness.org 70 i 31146##Interview - Niclas Zeising - zeising@FreeBSD.org / @niclaszeising
Err codemadness.org 70
i 31164 Interview topic: FreeBSD Graphics Stack
##Feedback/Questions
Err codemadness.org 70 i 31181 Err codemadness.org 70 i 31182##Headlines
Err codemadness.org 70 i 31320 Err codemadness.org 70 i 31321###AsiaBSDCon 2019 Call for Papers
Err codemadness.org 70 i 31322 Err codemadness.org 70 i 31323###Project Trident 18.12 Released
Err codemadness.org 70 i 31335 Err codemadness.org 70 i 31336###Building Spotifyd on NetBSD
Err codemadness.org 70 i 31348 Err codemadness.org 70 i 31349Err codemadness.org 70 i 31350Err codemadness.org 70 i 31352 Err codemadness.org 70 i 31353These are the steps I went through to build and run Spotifyd (this commit at the time of writing) on NetBSD AMD64. It’s a Spotify Connect client so it means I still need to control Spotify from another device (typically my phone), but the audio is played through my desktop… which is where my speakers and headphones are plugged in - it means I don’t have to unplug stuff and re-plug into my phone, work laptop, etc. This is 100% a “good enough for now solution” for me; I have had a quick play with the Go based microcontroller from spotcontrol and that allows a completely NetBSD only experience (although it is just an example application so doesn’t provide many features - great as a basis to build on though).
Err codemadness.org 70 i 31351
##News Roundup
Err codemadness.org 70 i 31356 Err codemadness.org 70 i 31357 Err codemadness.org 70 i 31358 Err codemadness.org 70 i 31359Err codemadness.org 70 i 31360Err codemadness.org 70 i 31367 Err codemadness.org 70 i 313682019 means 19.1 is almost here. In the meantime accept this small
Err codemadness.org 70 i 31366
Err codemadness.org 70 i 31361 incremental update with goodies such as Suricata 4.1, custom passwords
Err codemadness.org 70 i 31362 for P12 certificate export as well as fresh fixes in the FreeBSD base.
Err codemadness.org 70 i 31363 A lot of cleanups went into this update to make sure there will be a
Err codemadness.org 70 i 31364 smooth transition to 19.1-RC for you early birds. We expect RC1 in 1-2
Err codemadness.org 70 i 31365 weeks and the final 19.1 on January 29.
###Introducing the Ultra EPYC AMD Powered Sun Ultra 24 Workstation
Err codemadness.org 70 i 31371 Err codemadness.org 70 i 31372Err codemadness.org 70 i 31373Err codemadness.org 70 i 31375 Err codemadness.org 70 i 31376A few weeks ago, I got an itch to build a workstation with AMD EPYC. There are a few constraints. First, I needed a higher-clock part. Second, I knew the whole build would be focused more on being an ultra high-end workstation rather than simply utilizing gaming components. With that, I decided it was time to hit on a bit of nostalgia for our readers. Mainly, I wanted to do an homage to Sun Microsystems. Sun made the server gear that the industry ran on for years, and as a fun fact, if you go behind the 1 Hacker Way sign at Facebook’s campus, they left the Sun Microsystems logo. Seeing that made me wonder if we could do an ultimate AMD EPYC build in a Sun Microsystems workstation.
Err codemadness.org 70 i 31374
###OpenRsync
Err codemadness.org 70 i 31379 Err codemadness.org 70 i 31380Err codemadness.org 70 i 31381Err codemadness.org 70 i 31386 Err codemadness.org 70 i 31387This is a clean-room implementation of rsync with a BSD (ISC) license. It is designed to be compatible with a modern rsync (3.1.3 is used for testing). It currently compiles and runs only on OpenBSD.
Err codemadness.org 70 i 31385
Err codemadness.org 70 i 31382 This project is still very new and very fast-moving.
Err codemadness.org 70 i 31383 It’s not ready for wide-spread testing. Or even narrow-spread beyond getting all of the bits to work. It’s not ready for strong attention. Or really any attention but by careful programming.
Err codemadness.org 70 i 31384 Many have asked about portability. We’re just not there yet, folks. But don’t worry, the system is easily portable. The hard part for porters is matching OpenBSD’s pledge and unveil.
###The first report on LLD porting
Err codemadness.org 70 i 31390 Err codemadness.org 70 i 31391Err codemadness.org 70 i 31392Err codemadness.org 70 i 31396 Err codemadness.org 70 i 31397LLD is the link editor (linker) component of Clang toolchain. Its main advantage over GNU ld is much lower memory footprint, and linking speed. It is of specific interest to me since currently 8 GiB of memory are insufficient to link LLVM statically (which is the upstream default).
Err codemadness.org 70 i 31395
Err codemadness.org 70 i 31393 The first goal of LLD porting is to ensure that LLD can produce working NetBSD executables, and be used to build LLVM itself. Then, it is desirable to look into trying to build additional NetBSD components, and eventually into replacing /usr/bin/ld entirely with lld.
Err codemadness.org 70 i 31394 In this report, I would like to shortly summarize the issues I have found so far trying to use LLD on NetBSD.
Err codemadness.org 70 i 31402Err codemadness.org 70 i 31405 Err codemadness.org 70 i 31406It’s the second week of 2019 already, which means I’m curious what Nate is going to do with his series This week in usability … reset the numbering from week 1? That series is a great read, to keep up with all the little things that change in KDE source each week — aside from the release notes.
Err codemadness.org 70 i 31404
Err codemadness.org 70 i 31403 For the big ticket items of KDE on FreeBSD, you should read this blog instead.
##Beastie Bits
Err codemadness.org 70 i 31419 Err codemadness.org 70 i 31420##Feedback/Questions
Err codemadness.org 70 i 31438 Err codemadness.org 70 i 31439##Headlines
Err codemadness.org 70 i 31457 Err codemadness.org 70 i 31458###AsiaBSDCon 2019 Call for Papers
Err codemadness.org 70 i 31459 Err codemadness.org 70 i 31460###Project Trident 18.12 Released
Err codemadness.org 70 i 31472 Err codemadness.org 70 i 31473###Building Spotifyd on NetBSD
Err codemadness.org 70 i 31485 Err codemadness.org 70 i 31486Err codemadness.org 70 i 31487Err codemadness.org 70 i 31489 Err codemadness.org 70 i 31490These are the steps I went through to build and run Spotifyd (this commit at the time of writing) on NetBSD AMD64. It’s a Spotify Connect client so it means I still need to control Spotify from another device (typically my phone), but the audio is played through my desktop… which is where my speakers and headphones are plugged in - it means I don’t have to unplug stuff and re-plug into my phone, work laptop, etc. This is 100% a “good enough for now solution” for me; I have had a quick play with the Go based microcontroller from spotcontrol and that allows a completely NetBSD only experience (although it is just an example application so doesn’t provide many features - great as a basis to build on though).
Err codemadness.org 70 i 31488
##News Roundup
Err codemadness.org 70 i 31493 Err codemadness.org 70 i 31494 Err codemadness.org 70 i 31495 Err codemadness.org 70 i 31496Err codemadness.org 70 i 31497Err codemadness.org 70 i 31504 Err codemadness.org 70 i 315052019 means 19.1 is almost here. In the meantime accept this small
Err codemadness.org 70 i 31503
Err codemadness.org 70 i 31498 incremental update with goodies such as Suricata 4.1, custom passwords
Err codemadness.org 70 i 31499 for P12 certificate export as well as fresh fixes in the FreeBSD base.
Err codemadness.org 70 i 31500 A lot of cleanups went into this update to make sure there will be a
Err codemadness.org 70 i 31501 smooth transition to 19.1-RC for you early birds. We expect RC1 in 1-2
Err codemadness.org 70 i 31502 weeks and the final 19.1 on January 29.
###Introducing the Ultra EPYC AMD Powered Sun Ultra 24 Workstation
Err codemadness.org 70 i 31508 Err codemadness.org 70 i 31509Err codemadness.org 70 i 31510Err codemadness.org 70 i 31512 Err codemadness.org 70 i 31513A few weeks ago, I got an itch to build a workstation with AMD EPYC. There are a few constraints. First, I needed a higher-clock part. Second, I knew the whole build would be focused more on being an ultra high-end workstation rather than simply utilizing gaming components. With that, I decided it was time to hit on a bit of nostalgia for our readers. Mainly, I wanted to do an homage to Sun Microsystems. Sun made the server gear that the industry ran on for years, and as a fun fact, if you go behind the 1 Hacker Way sign at Facebook’s campus, they left the Sun Microsystems logo. Seeing that made me wonder if we could do an ultimate AMD EPYC build in a Sun Microsystems workstation.
Err codemadness.org 70 i 31511
###OpenRsync
Err codemadness.org 70 i 31516 Err codemadness.org 70 i 31517Err codemadness.org 70 i 31518Err codemadness.org 70 i 31523 Err codemadness.org 70 i 31524This is a clean-room implementation of rsync with a BSD (ISC) license. It is designed to be compatible with a modern rsync (3.1.3 is used for testing). It currently compiles and runs only on OpenBSD.
Err codemadness.org 70 i 31522
Err codemadness.org 70 i 31519 This project is still very new and very fast-moving.
Err codemadness.org 70 i 31520 It’s not ready for wide-spread testing. Or even narrow-spread beyond getting all of the bits to work. It’s not ready for strong attention. Or really any attention but by careful programming.
Err codemadness.org 70 i 31521 Many have asked about portability. We’re just not there yet, folks. But don’t worry, the system is easily portable. The hard part for porters is matching OpenBSD’s pledge and unveil.
###The first report on LLD porting
Err codemadness.org 70 i 31527 Err codemadness.org 70 i 31528Err codemadness.org 70 i 31529Err codemadness.org 70 i 31533 Err codemadness.org 70 i 31534LLD is the link editor (linker) component of Clang toolchain. Its main advantage over GNU ld is much lower memory footprint, and linking speed. It is of specific interest to me since currently 8 GiB of memory are insufficient to link LLVM statically (which is the upstream default).
Err codemadness.org 70 i 31532
Err codemadness.org 70 i 31530 The first goal of LLD porting is to ensure that LLD can produce working NetBSD executables, and be used to build LLVM itself. Then, it is desirable to look into trying to build additional NetBSD components, and eventually into replacing /usr/bin/ld entirely with lld.
Err codemadness.org 70 i 31531 In this report, I would like to shortly summarize the issues I have found so far trying to use LLD on NetBSD.
Err codemadness.org 70 i 31539Err codemadness.org 70 i 31542 Err codemadness.org 70 i 31543It’s the second week of 2019 already, which means I’m curious what Nate is going to do with his series This week in usability … reset the numbering from week 1? That series is a great read, to keep up with all the little things that change in KDE source each week — aside from the release notes.
Err codemadness.org 70 i 31541
Err codemadness.org 70 i 31540 For the big ticket items of KDE on FreeBSD, you should read this blog instead.
##Beastie Bits
Err codemadness.org 70 i 31556 Err codemadness.org 70 i 31557##Feedback/Questions
Err codemadness.org 70 i 31575 Err codemadness.org 70 i 31576##Headlines
Err codemadness.org 70
i 31759 ###scp client multiple vulnerabilities
Err codemadness.org 70 i 31777Err codemadness.org 70 i 31780 Err codemadness.org 70 i 31781The discovered vulnerabilities, described in more detail below, enables the attack
Err codemadness.org 70 i 31779
Err codemadness.org 70 i 31778 described here in brief.
user@local:~$ scp user@remote:readme.txt .
Err codemadness.org 70
i 31790 readme.txt 100% 494 1.6KB/s 00:00
Err codemadness.org 70
i 31791 user@local:~$
###FreeBSD 12.0 vs. DragonFlyBSD 5.4 vs. TrueOS 18.12 vs. Linux On A Tyan EPYC Server
Err codemadness.org 70 i 31805 Err codemadness.org 70 i 31806Err codemadness.org 70 i 31807Err codemadness.org 70 i 31809 Err codemadness.org 70 i 31810Last month when running FreeBSD 12.0 benchmarks on a 2P EPYC server I wasn’t able to run any side-by-side benchmarks with the new DragonFlyBSD 5.4 as this BSD was crashing during the boot process on that board. But fortunately on another AMD EPYC server available, the EPYC 1P TYAN Transport SX TN70A-B8026, DragonFlyBSD 5.4.1 runs fine. So for this first round of BSD benchmarking in 2019 are tests of FreeBSD 11.2, FreeBSD 12.0, DragonFlyBSD 5.4.1, the new TrueOS 18.12, and a few Linux distributions (CentOS 7, Ubuntu 18.04.1 LTS, and Clear Linux) on this EPYC 7601 server in a variety of workloads.
Err codemadness.org 70 i 31808
Err codemadness.org 70 i 31811Err codemadness.org 70 i 31813 Err codemadness.org 70 i 31814DragonFlyBSD 5.4.1 ran fine on this Tyan server and could boot fine unlike the issue encountered on the Dell PowerEdge R7425 for this particular BSD. But on the Tyan server, DragonFlyBSD 5.2.2 wouldn’t boot so only this latest DragonFlyBSD release series was used as part of the comparison.
Err codemadness.org 70 i 31812
A summary of the operating systems tested for this EPYC 7601 OS benchmark comparison included:
Err codemadness.org 70 i 31817DragonFlyBSD 5.4.1 - The latest release of Matthew Dillon’s operating system while using the HAMMER2 file-system and GCC 8.1 compiler that is now the default system compiler for this BSD.
Err codemadness.org 70 i 31820FreeBSD 11.2 - The previous stable release of FreeBSD. Installed with a ZFS file-system.
Err codemadness.org 70 i 31823FreeBSD 12.0 - The latest stable release of FreeBSD and installed with its ZFS option.
Err codemadness.org 70 i 31826TrueOS 18.12 - The latest release of the iX systems’ FreeBSD derivative. TrueOS 18.12 is based on FreeBSD 13.0-CURRENT and uses ZFS by default and was using the Clang 7.0.1 compiler compared to Clang 6.0.1 on FreeBSD 12.0.
Err codemadness.org 70 i 31829CentOS Linux 7 - The latest EL7 operating system performance.
Err codemadness.org 70 i 31832Ubuntu 18.04.1 LTS - The latest Ubuntu Long Term Support release.
Err codemadness.org 70 i 31835Clear Linux 27120 - The latest rolling release as of testing out of Intel’s Open-Source Technology Center. Clear Linux often reflects as close to the gold standard for performance as possible with its insanely tuned software stack for offering optimal performance on x86_64 performance for generally showing best what the hardware is capable of.
Err codemadness.org 70 i 31838Err codemadness.org 70 i 31842Err codemadness.org 70 i 31844 Err codemadness.org 70 i 31845Throughout all of this testing, the Tyan 2U server was kept to its same configuration of an AMD EPYC 7601 (32 cores / 64 threads) at stock speeds, 8 x 16GB DDR4-2666 ECC memory, and 280GB Intel Optane 900p SSD benchmarks.
Err codemadness.org 70 i 31843
##News Roundup
Err codemadness.org 70
i 31848 ###National Inventors Hall of Fame honors creators of Unix
Err codemadness.org 70 i 31851Err codemadness.org 70 i 31854 Err codemadness.org 70 i 31855Dennis Ritchie (Posthumous) and Ken Thompson: UNIX Operating System
Err codemadness.org 70 i 31853
Err codemadness.org 70 i 31852 Thompson and Ritchie’s creation of the UNIX operating system and the C programming language were pivotal developments in the progress of computer science. Today, 50 years after its beginnings, UNIX and UNIX-like systems continue to run machinery from supercomputers to smartphones. The UNIX operating system remains the basis of much of the world’s computing infrastructure, and C language – written to simplify the development of UNIX – is one of the most widely used languages today.
Err codemadness.org 70 i 31860Err codemadness.org 70 i 31862 Err codemadness.org 70 i 31863Imagine, it is 2019. Easy, ha? Imagine, it is 2019 and you want to turn off IPv4. Like, off off. Really off. Not disabling IPv6, but disabling IPv4.
Err codemadness.org 70 i 31861
Err codemadness.org 70 i 31868Err codemadness.org 70 i 31871 Err codemadness.org 70 i 31872You might be coming here wondering, why would anybody want to do what we are asking to be done. Well, it is dead simple: We are running data centers (like Data Center Light) with a lot of IPv6 only equipment. There simply is no need for IPv4. So why would we want to have it enabled?
Err codemadness.org 70 i 31870
Err codemadness.org 70 i 31869 Also, here at ungleich, we defined 2019 as the year to move away from IPv4.
Err codemadness.org 70 i 31877Err codemadness.org 70 i 31880 Err codemadness.org 70 i 31881Do you like puzzles? Competitions? Challenges? Hacking? Well. If ANY of this is of your interest, here is a real challenge for you:
Err codemadness.org 70 i 31879
Err codemadness.org 70 i 31878 We offer a 100 CHF (roughly 100 USD) for anyone who can give us a detailed description of how to turn IPv4 completely off in an operating system and allowing it to communicate with IPv6 only. This should obviously include a tiny proof that your operating system is really unable to use IPv4 at all. Just flushing IPv4 addresses and keeping the IPv4 stack loaded, does not count.
Err codemadness.org 70 i 31886Err codemadness.org 70 i 31888 Err codemadness.org 70 i 31889GhostBSD 18.12 is an updated iso of GhostBSD 18.10 with some little changes to the live DVD/USB and with updated packages.
Err codemadness.org 70 i 31887
###And Now for a laugh : #unixinpictures
Err codemadness.org 70 i 31901 Err codemadness.org 70 i 31902##Beastie Bits
Err codemadness.org 70 i 31905 Err codemadness.org 70 i 31906##Feedback/Questions
Err codemadness.org 70 i 31925 Err codemadness.org 70 i 31926##Headlines
Err codemadness.org 70
i 31944 ###scp client multiple vulnerabilities
Err codemadness.org 70 i 31962Err codemadness.org 70 i 31965 Err codemadness.org 70 i 31966The discovered vulnerabilities, described in more detail below, enables the attack
Err codemadness.org 70 i 31964
Err codemadness.org 70 i 31963 described here in brief.
user@local:~$ scp user@remote:readme.txt .
Err codemadness.org 70
i 31975 readme.txt 100% 494 1.6KB/s 00:00
Err codemadness.org 70
i 31976 user@local:~$
###FreeBSD 12.0 vs. DragonFlyBSD 5.4 vs. TrueOS 18.12 vs. Linux On A Tyan EPYC Server
Err codemadness.org 70 i 31990 Err codemadness.org 70 i 31991Err codemadness.org 70 i 31992Err codemadness.org 70 i 31994 Err codemadness.org 70 i 31995Last month when running FreeBSD 12.0 benchmarks on a 2P EPYC server I wasn’t able to run any side-by-side benchmarks with the new DragonFlyBSD 5.4 as this BSD was crashing during the boot process on that board. But fortunately on another AMD EPYC server available, the EPYC 1P TYAN Transport SX TN70A-B8026, DragonFlyBSD 5.4.1 runs fine. So for this first round of BSD benchmarking in 2019 are tests of FreeBSD 11.2, FreeBSD 12.0, DragonFlyBSD 5.4.1, the new TrueOS 18.12, and a few Linux distributions (CentOS 7, Ubuntu 18.04.1 LTS, and Clear Linux) on this EPYC 7601 server in a variety of workloads.
Err codemadness.org 70 i 31993
Err codemadness.org 70 i 31996Err codemadness.org 70 i 31998 Err codemadness.org 70 i 31999DragonFlyBSD 5.4.1 ran fine on this Tyan server and could boot fine unlike the issue encountered on the Dell PowerEdge R7425 for this particular BSD. But on the Tyan server, DragonFlyBSD 5.2.2 wouldn’t boot so only this latest DragonFlyBSD release series was used as part of the comparison.
Err codemadness.org 70 i 31997
A summary of the operating systems tested for this EPYC 7601 OS benchmark comparison included:
Err codemadness.org 70 i 32002DragonFlyBSD 5.4.1 - The latest release of Matthew Dillon’s operating system while using the HAMMER2 file-system and GCC 8.1 compiler that is now the default system compiler for this BSD.
Err codemadness.org 70 i 32005FreeBSD 11.2 - The previous stable release of FreeBSD. Installed with a ZFS file-system.
Err codemadness.org 70 i 32008FreeBSD 12.0 - The latest stable release of FreeBSD and installed with its ZFS option.
Err codemadness.org 70 i 32011TrueOS 18.12 - The latest release of the iX systems’ FreeBSD derivative. TrueOS 18.12 is based on FreeBSD 13.0-CURRENT and uses ZFS by default and was using the Clang 7.0.1 compiler compared to Clang 6.0.1 on FreeBSD 12.0.
Err codemadness.org 70 i 32014CentOS Linux 7 - The latest EL7 operating system performance.
Err codemadness.org 70 i 32017Ubuntu 18.04.1 LTS - The latest Ubuntu Long Term Support release.
Err codemadness.org 70 i 32020Clear Linux 27120 - The latest rolling release as of testing out of Intel’s Open-Source Technology Center. Clear Linux often reflects as close to the gold standard for performance as possible with its insanely tuned software stack for offering optimal performance on x86_64 performance for generally showing best what the hardware is capable of.
Err codemadness.org 70 i 32023Err codemadness.org 70 i 32027Err codemadness.org 70 i 32029 Err codemadness.org 70 i 32030Throughout all of this testing, the Tyan 2U server was kept to its same configuration of an AMD EPYC 7601 (32 cores / 64 threads) at stock speeds, 8 x 16GB DDR4-2666 ECC memory, and 280GB Intel Optane 900p SSD benchmarks.
Err codemadness.org 70 i 32028
##News Roundup
Err codemadness.org 70
i 32033 ###National Inventors Hall of Fame honors creators of Unix
Err codemadness.org 70 i 32036Err codemadness.org 70 i 32039 Err codemadness.org 70 i 32040Dennis Ritchie (Posthumous) and Ken Thompson: UNIX Operating System
Err codemadness.org 70 i 32038
Err codemadness.org 70 i 32037 Thompson and Ritchie’s creation of the UNIX operating system and the C programming language were pivotal developments in the progress of computer science. Today, 50 years after its beginnings, UNIX and UNIX-like systems continue to run machinery from supercomputers to smartphones. The UNIX operating system remains the basis of much of the world’s computing infrastructure, and C language – written to simplify the development of UNIX – is one of the most widely used languages today.
Err codemadness.org 70 i 32045Err codemadness.org 70 i 32047 Err codemadness.org 70 i 32048Imagine, it is 2019. Easy, ha? Imagine, it is 2019 and you want to turn off IPv4. Like, off off. Really off. Not disabling IPv6, but disabling IPv4.
Err codemadness.org 70 i 32046
Err codemadness.org 70 i 32053Err codemadness.org 70 i 32056 Err codemadness.org 70 i 32057You might be coming here wondering, why would anybody want to do what we are asking to be done. Well, it is dead simple: We are running data centers (like Data Center Light) with a lot of IPv6 only equipment. There simply is no need for IPv4. So why would we want to have it enabled?
Err codemadness.org 70 i 32055
Err codemadness.org 70 i 32054 Also, here at ungleich, we defined 2019 as the year to move away from IPv4.
Err codemadness.org 70 i 32062Err codemadness.org 70 i 32065 Err codemadness.org 70 i 32066Do you like puzzles? Competitions? Challenges? Hacking? Well. If ANY of this is of your interest, here is a real challenge for you:
Err codemadness.org 70 i 32064
Err codemadness.org 70 i 32063 We offer a 100 CHF (roughly 100 USD) for anyone who can give us a detailed description of how to turn IPv4 completely off in an operating system and allowing it to communicate with IPv6 only. This should obviously include a tiny proof that your operating system is really unable to use IPv4 at all. Just flushing IPv4 addresses and keeping the IPv4 stack loaded, does not count.
Err codemadness.org 70 i 32071Err codemadness.org 70 i 32073 Err codemadness.org 70 i 32074GhostBSD 18.12 is an updated iso of GhostBSD 18.10 with some little changes to the live DVD/USB and with updated packages.
Err codemadness.org 70 i 32072
###And Now for a laugh : #unixinpictures
Err codemadness.org 70 i 32086 Err codemadness.org 70 i 32087##Beastie Bits
Err codemadness.org 70 i 32090 Err codemadness.org 70 i 32091##Feedback/Questions
Err codemadness.org 70 i 32110 Err codemadness.org 70 i 32111There was a tremendous amount of reaction to and discussion about my blog entry on the midlife crisis in open source. As part of this discussion on HN, Jay Kreps of Confluent took the time to write a detailed response — which he shortly thereafter elevated into a blog entry.Err codemadness.org 70 i 32219 Err codemadness.org 70 i 32220
Let me be clear that I hold Jay in high regard, as both a software engineer and an entrepreneur — and I appreciate the time he took to write a thoughtful response. That said, there are aspects of his response that I found troubling enough to closely re-read the Confluent Community License — and that in turn has led me to a deeply disturbing realization about what is potentially going on here.Err codemadness.org 70 i 32221 Err codemadness.org 70 i 32222
To GitHub: Assuming that this is in fact a EULA, I think it is perilous to allow EULAs to sit in public repositories. It’s one thing to have one click through to accept a license (though again, that itself is dubious), but to say that a git clone is an implicit acceptance of a contract that happens to be sitting somewhere in the repository beggars belief. With efforts like choosealicense.com, GitHub has been a model in guiding projects with respect to licensing; it would be helpful for GitHub’s counsel to weigh in on their view of this new strain of source-available proprietary software and the degree to which it comes into conflict with GitHub’s own terms of service.Err codemadness.org 70 i 32223 Err codemadness.org 70 i 32224
To foundations concerned with software liberties, including the Apache Foundation, the Linux Foundation, the Free Software Foundation, the Electronic Frontier Foundation, the Open Source Initiative, and the Software Freedom Conservancy: the open source community needs your legal review on this! I don’t think I’m being too alarmist when I say that this is potentially a dangerous new precedent being set; it would be very helpful to have your lawyers offer their perspectives on this, even if they disagree with one another. We seem to be in some terrible new era of frankenlicenses, where the worst of proprietary licenses are bolted on to the goodwill created by open source licenses; we need your legal voices before these creatures destroy the village!Err codemadness.org 70 i 32225 Err codemadness.org 70 i 32226
NetBSD entering 2019 with more complete LLVM support
Err codemadness.org 70 i 32231 Err codemadness.org 70 i 32232I’m recently helping the NetBSD developers to improve the support for this operating system in various LLVM components. As you can read in my previous report, I’ve been focusing on fixing build and test failures for the purpose of improving the buildbot coverage. Err codemadness.org 70 i 32233 Previously, I’ve resolved test failures in LLVM, Clang, LLD, libunwind, openmp and partially libc++. During the remainder of the month, I’ve been working on the remaining libc++ test failures, improving the NetBSD clang driver and helping Kamil Rytarowski with compiler-rt.Err codemadness.org 70 i 32234 Err codemadness.org 70 i 32235
The process of upstreaming support to LLVM sanitizers has been finalized
Err codemadness.org 70 i 32236 Err codemadness.org 70 i 32237I’ve finished the process of upstreaming patches to LLVM sanitizers (almost 2000LOC of local code) and submitted to upstream new improvements for the NetBSD support. Today out of the box (in unpatched version) we have support for a variety of compiler-rt LLVM features: ASan (finds unauthorized memory access), UBSan (finds unspecified code semantics), TSan (finds threading bugs), MSan (finds uninitialized memory use), SafeStack (double stack hardening), Profile (code coverage), XRay (dynamic code tracing); while other ones such as Scudo (hardened allocator) or DFSan (generic data flow sanitizer) are not far away from completeness. Err codemadness.org 70 i 32238 The NetBSD support is no longer visibly lacking behind Linux in sanitizers, although there are still failing tests on NetBSD that are not observed on Linux. On the other hand there are features working on NetBSD that are not functional on Linux, like sanitizing programs during early initialization process of OS (this is caused by /proc dependency on Linux that is mounted by startup programs, while NetBSD relies on sysctl(3) interfaces that is always available).Err codemadness.org 70 i 32239 Err codemadness.org 70 i 32240
Playing with FreeBSD with past week I don’t feel as though there were any big surprises or changes in this release compared to FreeBSD 11. In typical FreeBSD fashion, progress tends to be evolutionary rather than revolutionary, and this release feels like a polished and improved incremental step forward. I like that the installer handles both UFS and ZFS guided partitioning now and in a friendly manner. In the past I had trouble getting FreeBSD’s boot menu to work with boot environments, but that has been fixed for this release. Err codemadness.org 70 i 32247 I like the security options in the installer too. These are not new, but I think worth mentioning. FreeBSD, unlike most Linux distributions, offers several low-level security options (like hiding other users’ processes and randomizing PIDs) and I like having these presented at install time. It’s harder for people to attack what they cannot see, or predict, and FreeBSD optionally makes these little adjustment for us. Err codemadness.org 70 i 32248 Something which stands out about FreeBSD, compared to most Linux distributions I run, is that FreeBSD rarely holds the user’s hand, but also rarely surprises the user. This means there is more reading to do up front and new users may struggle to get used to editing configuration files in a text editor. But FreeBSD rarely does anything unless told to do it. Updates rarely change the system’s behaviour, working technology rarely gets swapped out for something new, the system and its applications never crashed during my trial. Everything was rock solid. The operating system may seem like a minimal, blank slate to new users, but it’s wonderfully dependable and predictable in my experience. Err codemadness.org 70 i 32249 I probably wouldn’t recommend FreeBSD for desktop use. It’s close relative, GhostBSD, ships with a friendly desktop and does special work to make end user applications run smoothly. But for people who want to run servers, possible for years without change or issues, FreeBSD is a great option. It’s also an attractive choice, in my opinion, for people who like to build their system from the ground up, like you would with Debian’s server install or Arch Linux. Apart from the base tools and documentation, there is nothing on a FreeBSD system apart from what we put on it.Err codemadness.org 70 i 32250 Err codemadness.org 70 i 32251
Last week I posted benchmarks of Windows Server 2019 against various Linux distributions using a Tyan dual socket Intel Xeon server. In this article are some complementary results when adding in the performance of FreeBSD 11.2 against the new FreeBSD 12.0 stable release for this leading BSD operating system. As some fun benchmarks to end out 2018, here are the results of FreeBSD 11.2/12.0 (including an additional run when using GCC rather than Clang) up against Windows Server and several enterprise-ready Linux distributions. Err codemadness.org 70 i 32256 While FreeBSD 12.0 had picked up just one win of the Windows/Linux comparisons run, the FreeBSD performance is moving in the right direction. FreeBSD 12.0 was certainly faster than FreeBSD 11.2 on this dual Intel Xeon Scalable server based on a Tyan 1U platform. Meanwhile, to no surprise given the data last week, Clear Linux was by far the fastest out-of-the-box operating system tested. Err codemadness.org 70 i 32257 I did run some extra benchmarks on FreeBSD 11.2/12.0 with this hardware: in total I ran 120 benchmarks for these BSD tests. Of the 120 tests, there were just 15 cases where FreeBSD 11.2 was faster than 12.0. Seeing FreeBSD 12.0 faster than 11.2 nearly 90% of the time is an accomplishment and usually with other operating systems we see more of a mixed bag on new releases with not such solidly better performance. It was also great seeing the competitive performance out of FreeBSD when using the Clang compiler for the source-based tests compared to the GCC8 performance. Additional data available via this OpenBenchmarking.org result file.Err codemadness.org 70 i 32258 Err codemadness.org 70 i 32259
Google cache in case the site is down
Err codemadness.org 70 i 32264 Err codemadness.org 70 i 32265In 2000, Joe Britt, Matt Hershenson and Andy Rubin formed Danger Incorporated. Danger developed the world’s first recognizable smartphone, the Danger HipTop. T-Mobile sold the first HipTop under the brand name Sidekick in October of 2002. Err codemadness.org 70 i 32266 Danger had a well developed kernel that had been designed and built in house. The kernel came to be viewed as not a core intellectual property and Danger started a search for a replacement. For business reasons, mostly to do with legal concerns over the Gnu Public License, Danger rejected Linux and began to consider BSD Unix as a replacement for the kernel. Err codemadness.org 70 i 32267 In 2006 I was hired by Mike Chen, the manager of the kernel development group to investigate the feasibility of replacing the Danger kernel with a BSD kernel, to select the version of BSD to use, to develop a prototype and to develop the plan for adapting BSD to Danger’s requirements. Err codemadness.org 70 i 32268 NetBSD was easily the best choice among the BSD variations at the time because it had well developed cross development tools. It was easy to use a NetBSD desktop running an Intel release to cross compile a NetBSD kernel and runtime for a device running an ARM processor. (Those interested in mailing list archaeology might be amused to investigate NetBSD technical mailing list for mail from picovex, particularly from Bucky Katz at picovex.) Err codemadness.org 70 i 32269 We began product development on the specific prototype of the phone that would become the Sidekick LX2009 in 2007 and contracts for the phone were written with T-Mobile. We were about half way through the two year development cycle when Microsoft purchased Danger in 2008. Err codemadness.org 70 i 32270 Microsoft would have preferred to ship the Sidekick running Windows/CE rather than NetBSD, but a schedule analysis performed by me, and another by an independent outside contractor, indicated that doing so would result in unacceptable delay.Err codemadness.org 70 i 32271 Err codemadness.org 70 i 32272
There was a tremendous amount of reaction to and discussion about my blog entry on the midlife crisis in open source. As part of this discussion on HN, Jay Kreps of Confluent took the time to write a detailed response — which he shortly thereafter elevated into a blog entry.Err codemadness.org 70 i 32313 Err codemadness.org 70 i 32314
Let me be clear that I hold Jay in high regard, as both a software engineer and an entrepreneur — and I appreciate the time he took to write a thoughtful response. That said, there are aspects of his response that I found troubling enough to closely re-read the Confluent Community License — and that in turn has led me to a deeply disturbing realization about what is potentially going on here.Err codemadness.org 70 i 32315 Err codemadness.org 70 i 32316
To GitHub: Assuming that this is in fact a EULA, I think it is perilous to allow EULAs to sit in public repositories. It’s one thing to have one click through to accept a license (though again, that itself is dubious), but to say that a git clone is an implicit acceptance of a contract that happens to be sitting somewhere in the repository beggars belief. With efforts like choosealicense.com, GitHub has been a model in guiding projects with respect to licensing; it would be helpful for GitHub’s counsel to weigh in on their view of this new strain of source-available proprietary software and the degree to which it comes into conflict with GitHub’s own terms of service.Err codemadness.org 70 i 32317 Err codemadness.org 70 i 32318
To foundations concerned with software liberties, including the Apache Foundation, the Linux Foundation, the Free Software Foundation, the Electronic Frontier Foundation, the Open Source Initiative, and the Software Freedom Conservancy: the open source community needs your legal review on this! I don’t think I’m being too alarmist when I say that this is potentially a dangerous new precedent being set; it would be very helpful to have your lawyers offer their perspectives on this, even if they disagree with one another. We seem to be in some terrible new era of frankenlicenses, where the worst of proprietary licenses are bolted on to the goodwill created by open source licenses; we need your legal voices before these creatures destroy the village!Err codemadness.org 70 i 32319 Err codemadness.org 70 i 32320
NetBSD entering 2019 with more complete LLVM support
Err codemadness.org 70 i 32325 Err codemadness.org 70 i 32326I’m recently helping the NetBSD developers to improve the support for this operating system in various LLVM components. As you can read in my previous report, I’ve been focusing on fixing build and test failures for the purpose of improving the buildbot coverage. Err codemadness.org 70 i 32327 Previously, I’ve resolved test failures in LLVM, Clang, LLD, libunwind, openmp and partially libc++. During the remainder of the month, I’ve been working on the remaining libc++ test failures, improving the NetBSD clang driver and helping Kamil Rytarowski with compiler-rt.Err codemadness.org 70 i 32328 Err codemadness.org 70 i 32329
The process of upstreaming support to LLVM sanitizers has been finalized
Err codemadness.org 70 i 32330 Err codemadness.org 70 i 32331I’ve finished the process of upstreaming patches to LLVM sanitizers (almost 2000LOC of local code) and submitted to upstream new improvements for the NetBSD support. Today out of the box (in unpatched version) we have support for a variety of compiler-rt LLVM features: ASan (finds unauthorized memory access), UBSan (finds unspecified code semantics), TSan (finds threading bugs), MSan (finds uninitialized memory use), SafeStack (double stack hardening), Profile (code coverage), XRay (dynamic code tracing); while other ones such as Scudo (hardened allocator) or DFSan (generic data flow sanitizer) are not far away from completeness. Err codemadness.org 70 i 32332 The NetBSD support is no longer visibly lacking behind Linux in sanitizers, although there are still failing tests on NetBSD that are not observed on Linux. On the other hand there are features working on NetBSD that are not functional on Linux, like sanitizing programs during early initialization process of OS (this is caused by /proc dependency on Linux that is mounted by startup programs, while NetBSD relies on sysctl(3) interfaces that is always available).Err codemadness.org 70 i 32333 Err codemadness.org 70 i 32334
Playing with FreeBSD with past week I don’t feel as though there were any big surprises or changes in this release compared to FreeBSD 11. In typical FreeBSD fashion, progress tends to be evolutionary rather than revolutionary, and this release feels like a polished and improved incremental step forward. I like that the installer handles both UFS and ZFS guided partitioning now and in a friendly manner. In the past I had trouble getting FreeBSD’s boot menu to work with boot environments, but that has been fixed for this release. Err codemadness.org 70 i 32341 I like the security options in the installer too. These are not new, but I think worth mentioning. FreeBSD, unlike most Linux distributions, offers several low-level security options (like hiding other users’ processes and randomizing PIDs) and I like having these presented at install time. It’s harder for people to attack what they cannot see, or predict, and FreeBSD optionally makes these little adjustment for us. Err codemadness.org 70 i 32342 Something which stands out about FreeBSD, compared to most Linux distributions I run, is that FreeBSD rarely holds the user’s hand, but also rarely surprises the user. This means there is more reading to do up front and new users may struggle to get used to editing configuration files in a text editor. But FreeBSD rarely does anything unless told to do it. Updates rarely change the system’s behaviour, working technology rarely gets swapped out for something new, the system and its applications never crashed during my trial. Everything was rock solid. The operating system may seem like a minimal, blank slate to new users, but it’s wonderfully dependable and predictable in my experience. Err codemadness.org 70 i 32343 I probably wouldn’t recommend FreeBSD for desktop use. It’s close relative, GhostBSD, ships with a friendly desktop and does special work to make end user applications run smoothly. But for people who want to run servers, possible for years without change or issues, FreeBSD is a great option. It’s also an attractive choice, in my opinion, for people who like to build their system from the ground up, like you would with Debian’s server install or Arch Linux. Apart from the base tools and documentation, there is nothing on a FreeBSD system apart from what we put on it.Err codemadness.org 70 i 32344 Err codemadness.org 70 i 32345
Last week I posted benchmarks of Windows Server 2019 against various Linux distributions using a Tyan dual socket Intel Xeon server. In this article are some complementary results when adding in the performance of FreeBSD 11.2 against the new FreeBSD 12.0 stable release for this leading BSD operating system. As some fun benchmarks to end out 2018, here are the results of FreeBSD 11.2/12.0 (including an additional run when using GCC rather than Clang) up against Windows Server and several enterprise-ready Linux distributions. Err codemadness.org 70 i 32350 While FreeBSD 12.0 had picked up just one win of the Windows/Linux comparisons run, the FreeBSD performance is moving in the right direction. FreeBSD 12.0 was certainly faster than FreeBSD 11.2 on this dual Intel Xeon Scalable server based on a Tyan 1U platform. Meanwhile, to no surprise given the data last week, Clear Linux was by far the fastest out-of-the-box operating system tested. Err codemadness.org 70 i 32351 I did run some extra benchmarks on FreeBSD 11.2/12.0 with this hardware: in total I ran 120 benchmarks for these BSD tests. Of the 120 tests, there were just 15 cases where FreeBSD 11.2 was faster than 12.0. Seeing FreeBSD 12.0 faster than 11.2 nearly 90% of the time is an accomplishment and usually with other operating systems we see more of a mixed bag on new releases with not such solidly better performance. It was also great seeing the competitive performance out of FreeBSD when using the Clang compiler for the source-based tests compared to the GCC8 performance. Additional data available via this OpenBenchmarking.org result file.Err codemadness.org 70 i 32352 Err codemadness.org 70 i 32353
Google cache in case the site is down
Err codemadness.org 70 i 32358 Err codemadness.org 70 i 32359In 2000, Joe Britt, Matt Hershenson and Andy Rubin formed Danger Incorporated. Danger developed the world’s first recognizable smartphone, the Danger HipTop. T-Mobile sold the first HipTop under the brand name Sidekick in October of 2002. Err codemadness.org 70 i 32360 Danger had a well developed kernel that had been designed and built in house. The kernel came to be viewed as not a core intellectual property and Danger started a search for a replacement. For business reasons, mostly to do with legal concerns over the Gnu Public License, Danger rejected Linux and began to consider BSD Unix as a replacement for the kernel. Err codemadness.org 70 i 32361 In 2006 I was hired by Mike Chen, the manager of the kernel development group to investigate the feasibility of replacing the Danger kernel with a BSD kernel, to select the version of BSD to use, to develop a prototype and to develop the plan for adapting BSD to Danger’s requirements. Err codemadness.org 70 i 32362 NetBSD was easily the best choice among the BSD variations at the time because it had well developed cross development tools. It was easy to use a NetBSD desktop running an Intel release to cross compile a NetBSD kernel and runtime for a device running an ARM processor. (Those interested in mailing list archaeology might be amused to investigate NetBSD technical mailing list for mail from picovex, particularly from Bucky Katz at picovex.) Err codemadness.org 70 i 32363 We began product development on the specific prototype of the phone that would become the Sidekick LX2009 in 2007 and contracts for the phone were written with T-Mobile. We were about half way through the two year development cycle when Microsoft purchased Danger in 2008. Err codemadness.org 70 i 32364 Microsoft would have preferred to ship the Sidekick running Windows/CE rather than NetBSD, but a schedule analysis performed by me, and another by an independent outside contractor, indicated that doing so would result in unacceptable delay.Err codemadness.org 70 i 32365 Err codemadness.org 70 i 32366
The sources for FreeBSD’s ZFS support are currently taken directly from Illumos with local ifdefs to support the peculiarities of FreeBSD where the Solaris Portability Layer (SPL) shims fall short. FreeBSD has regularly pulled changes from Illumos and tried to push back any bug fixes and new features done in the context of FreeBSD. In the past few years the vast majority of new development in ZFS has taken place in DelphixOS and zfsonlinux (ZoL). Earlier this year Delphix announced that they will be moving to ZoL: https://www.delphix.com/blog/kickoff-future-eko-2018 This shift means that there will be little to no net new development of Illumos. While working through the git history of ZoL I have also discovered that many races and locking bugs have been fixed in ZoL and never made it back to Illumos and thus FreeBSD. This state of affairs has led to a general agreement among the stakeholders that I have spoken to that it makes sense to rebase FreeBSD’s ZFS on ZoL. Brian Behlendorf has graciously encouraged me to add FreeBSD support directly to ZoL https://github.com/zfsonfreebsd/ZoF so that we might all have a single shared code base. Err codemadness.org 70 i 32514 A port for ZoF can be found at https://github.com/miwi-fbsd/zof-port Before it can be committed some additional functionality needs to be added to the FreeBSD opencrypto framework. These can be found at https://reviews.freebsd.org/D18520 Err codemadness.org 70 i 32515 This port will provide FreeBSD users with multi modifier protection, project quotas, encrypted datasets, allocation classes, vectorized raidz, vectorized checksums, and various command line improvements.Err codemadness.org 70 i 32516 Err codemadness.org 70 i 32517
With FreeBSD having gone all the way to 12, it is perhaps useful to take a look back at all the things that have been accomplished, in terms of many visible changes, as well as all the things that happen behind the scenes to ensure that FreeBSD continues to offer an alternative in both design, implementation, and execution. Err codemadness.org 70 i 32522 The things you can look forward to reading about are too numerous to summarize, but cover just about everything from finalizing releases, administrative work, optimizations and depessimizations, features added and fixed, and many areas of improvement that might just surprise you a little. Err codemadness.org 70 i 32523 Please have a cup of coffee, tea, hot cocoa, or other beverage of choice, and enjoy this culmulative set of reports covering everything that’s been done since October, 2017. Err codemadness.org 70 i 32524 —Daniel EbdrupErr codemadness.org 70 i 32525 Err codemadness.org 70 i 32526
It has been a little over one year now that I’m with the Ravenports project. Time to reflect my involvement, my expectations and hopes.Err codemadness.org 70 i 32533 Err codemadness.org 70 i 32534
Ravenports is a universal packaging framework for *nix operating systems. For the user it provides easy access to binary packages of common software for multiple platforms. It has been the long-lasting champion on Repology’s top 10 repositories regarding package freshness (rarely dropping below 96 percent while all other projects keep below 90!).Err codemadness.org 70 i 32539 Err codemadness.org 70 i 32540
For the porter it offers a well-designed and elegant means of writing cross-platform buildsheets that allow building the same version of the software with (completely or mostly) the same compile-time configuration on different operating systems or distributions.Err codemadness.org 70 i 32541 Err codemadness.org 70 i 32542
And for the developer it means a real-world project that’s written in modern Ada (ravenadm) and C (pkg) – as well as some Perl for support scripts and make. Things feel very optimized and fast. Not being a programmer though, I cannot really say anything about the actual code and thus leave it to the interested reader’s judgement.Err codemadness.org 70 i 32543 Err codemadness.org 70 i 32544
New stuff in the official FreeBSD repositories! The X11 team has landed a newer version of libinput, opening up the way for KDE Plasma 5.14 in ports. That’s a pretty big update and it may frighten people with a new wallpaper. Err codemadness.org 70 i 32549 What this means is that the graphical stack is once again on-par with what Plasma upstream expects, and we can get back to chasing releases as soon as they happen, rather than gnashing our teeth at missing dependencies. The KDE-FreeBSD CI servers are in the process of being upgraded to 12-STABLE, and we’re integrating with the new experimental CI systems as well. This means we are chasing sensibly-modern systems (13-CURRENT is out of scope).Err codemadness.org 70 i 32550 Err codemadness.org 70 i 32551
Talking to FreeBSD users recently, I became aware that while I’ve created a lot of tools, I haven’t done a very good job of explaining how, and more importantly when to use them. So for all of the EC2-curious FreeBSD users out there: Here are the many ways to launch and configure FreeBSD in EC2 — ranging from the simplest to the most complicated (but most powerful):Err codemadness.org 70 i 32556 Err codemadness.org 70 i 32557
I hope I’ve provided tools which help you to run FreeBSD in EC2, no matter how common or unusual your needs are. If you find my work useful, please consider supporting my work in this area; while this is both something I enjoy working on and something which is useful for my day job (Tarsnap, my online backup service), having support would make it easier for me to prioritize FreeBSD/EC2 issues over other projects.Err codemadness.org 70 i 32566 Err codemadness.org 70 i 32567
GOG.com prefers that you use their GOG Galaxy desktop app to download, install and manage all of your GOG games. But customers always have the option to install the game on their own terms, with a platform-specific installer. Err codemadness.org 70 i 32572 GOG offers these installers for Mac, Windows and/or Linux, depending on which platforms the game is available for.Err codemadness.org 70 i 32573 Err codemadness.org 70 i 32574
Of course, none of those are NetBSD. So, if I wanted to even attempt to play a game distributed by GOG.com on NetBSD, which one should I pick? The obvious choice is the Linux installer, since Linux is the most similar to NetBSD, right? Au contraire! In practice, I found that it is easier to download the Windows installer.Err codemadness.org 70 i 32582 Err codemadness.org 70 i 32583
Here’s what I mean. For example, I ported the open source version of Aquaria to pkgsrc, but that package is only the game’s engine, not the multimedia data. The multimedia data is still copyrighted. Therefore, you need to get it from somewhere else. GOG is usually a good choice, because they distribute their games without DRM. And as mentioned earlier, picking the Linux installer seemed like a natural choice.Err codemadness.org 70 i 32584 Err codemadness.org 70 i 32585
Now, actually PLAYING the games on NetBSD is a separate matter entirely. The game I’ve got here, though, my current obsession Pyre, is built with MonoGame and therefore could theoretically work on NetBSD, too, with the help of a library called FNA and a script for OpenBSD called fnaify. I do hope to create a pkgsrc package for FNA and port the fnaify script to NetBSD at some point.Err codemadness.org 70 i 32586 Err codemadness.org 70 i 32587
The sources for FreeBSD’s ZFS support are currently taken directly from Illumos with local ifdefs to support the peculiarities of FreeBSD where the Solaris Portability Layer (SPL) shims fall short. FreeBSD has regularly pulled changes from Illumos and tried to push back any bug fixes and new features done in the context of FreeBSD. In the past few years the vast majority of new development in ZFS has taken place in DelphixOS and zfsonlinux (ZoL). Earlier this year Delphix announced that they will be moving to ZoL: https://www.delphix.com/blog/kickoff-future-eko-2018 This shift means that there will be little to no net new development of Illumos. While working through the git history of ZoL I have also discovered that many races and locking bugs have been fixed in ZoL and never made it back to Illumos and thus FreeBSD. This state of affairs has led to a general agreement among the stakeholders that I have spoken to that it makes sense to rebase FreeBSD’s ZFS on ZoL. Brian Behlendorf has graciously encouraged me to add FreeBSD support directly to ZoL https://github.com/zfsonfreebsd/ZoF so that we might all have a single shared code base. Err codemadness.org 70 i 32632 A port for ZoF can be found at https://github.com/miwi-fbsd/zof-port Before it can be committed some additional functionality needs to be added to the FreeBSD opencrypto framework. These can be found at https://reviews.freebsd.org/D18520 Err codemadness.org 70 i 32633 This port will provide FreeBSD users with multi modifier protection, project quotas, encrypted datasets, allocation classes, vectorized raidz, vectorized checksums, and various command line improvements.Err codemadness.org 70 i 32634 Err codemadness.org 70 i 32635
With FreeBSD having gone all the way to 12, it is perhaps useful to take a look back at all the things that have been accomplished, in terms of many visible changes, as well as all the things that happen behind the scenes to ensure that FreeBSD continues to offer an alternative in both design, implementation, and execution. Err codemadness.org 70 i 32640 The things you can look forward to reading about are too numerous to summarize, but cover just about everything from finalizing releases, administrative work, optimizations and depessimizations, features added and fixed, and many areas of improvement that might just surprise you a little. Err codemadness.org 70 i 32641 Please have a cup of coffee, tea, hot cocoa, or other beverage of choice, and enjoy this culmulative set of reports covering everything that’s been done since October, 2017. Err codemadness.org 70 i 32642 —Daniel EbdrupErr codemadness.org 70 i 32643 Err codemadness.org 70 i 32644
It has been a little over one year now that I’m with the Ravenports project. Time to reflect my involvement, my expectations and hopes.Err codemadness.org 70 i 32651 Err codemadness.org 70 i 32652
Ravenports is a universal packaging framework for *nix operating systems. For the user it provides easy access to binary packages of common software for multiple platforms. It has been the long-lasting champion on Repology’s top 10 repositories regarding package freshness (rarely dropping below 96 percent while all other projects keep below 90!).Err codemadness.org 70 i 32657 Err codemadness.org 70 i 32658
For the porter it offers a well-designed and elegant means of writing cross-platform buildsheets that allow building the same version of the software with (completely or mostly) the same compile-time configuration on different operating systems or distributions.Err codemadness.org 70 i 32659 Err codemadness.org 70 i 32660
And for the developer it means a real-world project that’s written in modern Ada (ravenadm) and C (pkg) – as well as some Perl for support scripts and make. Things feel very optimized and fast. Not being a programmer though, I cannot really say anything about the actual code and thus leave it to the interested reader’s judgement.Err codemadness.org 70 i 32661 Err codemadness.org 70 i 32662
New stuff in the official FreeBSD repositories! The X11 team has landed a newer version of libinput, opening up the way for KDE Plasma 5.14 in ports. That’s a pretty big update and it may frighten people with a new wallpaper. Err codemadness.org 70 i 32667 What this means is that the graphical stack is once again on-par with what Plasma upstream expects, and we can get back to chasing releases as soon as they happen, rather than gnashing our teeth at missing dependencies. The KDE-FreeBSD CI servers are in the process of being upgraded to 12-STABLE, and we’re integrating with the new experimental CI systems as well. This means we are chasing sensibly-modern systems (13-CURRENT is out of scope).Err codemadness.org 70 i 32668 Err codemadness.org 70 i 32669
Talking to FreeBSD users recently, I became aware that while I’ve created a lot of tools, I haven’t done a very good job of explaining how, and more importantly when to use them. So for all of the EC2-curious FreeBSD users out there: Here are the many ways to launch and configure FreeBSD in EC2 — ranging from the simplest to the most complicated (but most powerful):Err codemadness.org 70 i 32674 Err codemadness.org 70 i 32675
I hope I’ve provided tools which help you to run FreeBSD in EC2, no matter how common or unusual your needs are. If you find my work useful, please consider supporting my work in this area; while this is both something I enjoy working on and something which is useful for my day job (Tarsnap, my online backup service), having support would make it easier for me to prioritize FreeBSD/EC2 issues over other projects.Err codemadness.org 70 i 32684 Err codemadness.org 70 i 32685
GOG.com prefers that you use their GOG Galaxy desktop app to download, install and manage all of your GOG games. But customers always have the option to install the game on their own terms, with a platform-specific installer. Err codemadness.org 70 i 32690 GOG offers these installers for Mac, Windows and/or Linux, depending on which platforms the game is available for.Err codemadness.org 70 i 32691 Err codemadness.org 70 i 32692
Of course, none of those are NetBSD. So, if I wanted to even attempt to play a game distributed by GOG.com on NetBSD, which one should I pick? The obvious choice is the Linux installer, since Linux is the most similar to NetBSD, right? Au contraire! In practice, I found that it is easier to download the Windows installer.Err codemadness.org 70 i 32700 Err codemadness.org 70 i 32701
Here’s what I mean. For example, I ported the open source version of Aquaria to pkgsrc, but that package is only the game’s engine, not the multimedia data. The multimedia data is still copyrighted. Therefore, you need to get it from somewhere else. GOG is usually a good choice, because they distribute their games without DRM. And as mentioned earlier, picking the Linux installer seemed like a natural choice.Err codemadness.org 70 i 32702 Err codemadness.org 70 i 32703
Now, actually PLAYING the games on NetBSD is a separate matter entirely. The game I’ve got here, though, my current obsession Pyre, is built with MonoGame and therefore could theoretically work on NetBSD, too, with the help of a library called FNA and a script for OpenBSD called fnaify. I do hope to create a pkgsrc package for FNA and port the fnaify script to NetBSD at some point.Err codemadness.org 70 i 32704 Err codemadness.org 70 i 32705
##Interview - Kirk McKusick - mckusick@mckusick.com
Err codemadness.org 70
i 32785 25 years of FreeBSD
We want to extend a big thank you to the entire BSD community for making this show possible, and to all of our viewers for watching and providing the feedback that makes this show successful. We wish you all a happy and prosperous new year, and we’ll see you next week.
Err codemadness.org 70 i 32801 Err codemadness.org 70 i 32802##Interview - Kirk McKusick - mckusick@mckusick.com
Err codemadness.org 70
i 32812 25 years of FreeBSD
We want to extend a big thank you to the entire BSD community for making this show possible, and to all of our viewers for watching and providing the feedback that makes this show successful. We wish you all a happy and prosperous new year, and we’ll see you next week.
Err codemadness.org 70 i 32828 Err codemadness.org 70 i 32829##Headlines
Err codemadness.org 70
i 33051 ###Open Source Confronts its midlife crisis
Err codemadness.org 70 i 33054Err codemadness.org 70 i 33062 Err codemadness.org 70 i 33063Midlife is tough: the idealism of youth has faded, as has inevitably some of its fitness and vigor. At the same time, the responsibilities of adulthood have grown. Making things more challenging, while you are navigating the turbulence of teenagers, your own parents are likely entering life’s twilight, needing help in new ways from their adult children. By midlife, in addition to the singular joys of life, you have also likely experienced its terrible sorrows: death, heartbreak, betrayal. Taken together, the fading of youth, the growth in responsibility and the endurance of misfortune can lead to cynicism or (worse) drastic and poorly thought-out choices. Add in a little fear of mortality and some existential dread, and you have the stuff of which midlife crises are made…
Err codemadness.org 70 i 33061
Err codemadness.org 70 i 33055 I raise this not because of my own adventures at midlife, but because it is clear to me that open source — now several decades old and fully adult — is going through its own midlife crisis. This has long been in the making: for years, I (and others) have been critical of service providers’ parasitic relationship with open source, as cloud service providers turn open source software into a service offering without giving back to the communities upon which they implicitly depend. At the same time, open source has been (rightfully) entirely unsympathetic to the proprietary software models that have been burned to the ground — but also seemingly oblivious as to the larger economic waves that have buoyed them.
Err codemadness.org 70 i 33056 So it seemed like only a matter of time before the companies built around open source software would have to confront their own crisis of confidence: open source business models are really tough, selling software-as-a-service is one of the most natural of them, the cloud service providers are really good at it — and their commercial appetites seem boundless. And, like a new cherry red two-seater sports car next to a minivan in a suburban driveway, some open source companies are dealing with this crisis exceptionally poorly: they are trying to restrict the way that their open source software can be used. These companies want it both ways: they want the advantages of open source — the community, the positivity, the energy, the adoption, the downloads — but they also want to enjoy the fruits of proprietary software companies in software lock-in and its monopolistic rents. If this were entirely transparent (that is, if some bits were merely being made explicitly proprietary), it would be fine: we could accept these companies as essentially proprietary software companies, albeit with an open source loss-leader. But instead, these companies are trying to license their way into this self-contradictory world: continuing to claim to be entirely open source, but perverting the license under which portions of that source are available. Most gallingly, they are doing this by hijacking open source nomenclature. Of these, the laughably named commons clause is the worst offender (it is plainly designed to be confused with the purely virtuous creative commons), but others (including CockroachDB’s Community License, MongoDB’s Server Side Public License, and Confluent’s Community License) are little better. And in particular, as it apparently needs to be said: no, “community” is not the opposite of “open source” — please stop sullying its good name by attaching it to licenses that are deliberately not open source! But even if they were more aptly named (e.g. “the restricted clause” or “the controlled use license” or — perhaps most honest of all — “the please-don’t-put-me-out-of-business-during-the-next-reInvent-keynote clause”), these licenses suffer from a serious problem: they are almost certainly asserting rights that the copyright holder doesn’t in fact have.
Err codemadness.org 70 i 33057 If I sell you a book that I wrote, I can restrict your right to read it aloud for an audience, or sell a translation, or write a sequel; these restrictions are rights afforded the copyright holder. I cannot, however, tell you that you can’t put the book on the same bookshelf as that of my rival, or that you can’t read the book while flying a particular airline I dislike, or that you aren’t allowed to read the book and also work for a company that competes with mine. (Lest you think that last example absurd, that’s almost verbatim the language in the new Confluent Community (sic) License.) I personally think that none of these licenses would withstand a court challenge, but I also don’t think it will come to that: because the vendors behind these licenses will surely fear that they wouldn’t survive litigation, they will deliberately avoid inviting such challenges. In some ways, this netherworld is even worse, as the license becomes a vessel for unverifiable fear of arbitrary liability.
Err codemadness.org 70 i 33058 let me put this to you as directly as possible: cloud services providers are emphatically not going to license your proprietary software. I mean, you knew that, right? The whole premise with your proprietary license is that you are finding that there is no way to compete with the operational dominance of the cloud services providers; did you really believe that those same dominant cloud services providers can’t simply reimplement your LDAP integration or whatever? The cloud services providers are currently reproprietarizing all of computing — they are making their own CPUs for crying out loud! — reimplementing the bits of your software that they need in the name of the service that their customers want (and will pay for!) won’t even move the needle in terms of their effort.
Err codemadness.org 70 i 33059 Worse than all of this (and the reason why this madness needs to stop): licenses that are vague with respect to permitted use are corporate toxin. Any company that has been through an acquisition can speak of the peril of the due diligence license audit: the acquiring entity is almost always deep pocketed and (not unrelatedly) risk averse; the last thing that any company wants is for a deal to go sideways because of concern over unbounded liability to some third-party knuckle-head. So companies that engage in license tomfoolery are doing worse than merely not solving their own problem: they are potentially poisoning the wellspring of their own community.
Err codemadness.org 70 i 33060 in the end, open source will survive its midlife questioning just as people in midlife get through theirs: by returning to its core values and by finding rejuvenation in its communities. Indeed, we can all find solace in the fact that while life is finite, our values and our communities survive us — and that our engagement with them is our most important legacy.
###Donald Knuth - The Yoda of Silicon Valley
Err codemadness.org 70 i 33070 Err codemadness.org 70 i 33071Err codemadness.org 70 i 33072Err codemadness.org 70 i 33077 Err codemadness.org 70 i 33078For half a century, the Stanford computer scientist Donald Knuth, who bears a slight resemblance to Yoda — albeit standing 6-foot-4 and wearing glasses — has reigned as the spirit-guide of the algorithmic realm.
Err codemadness.org 70 i 33076
Err codemadness.org 70 i 33073 He is the author of “The Art of Computer Programming,” a continuing four-volume opus that is his life’s work. The first volume debuted in 1968, and the collected volumes (sold as a boxed set for about $250) were included by American Scientist in 2013 on its list of books that shaped the last century of science — alongside a special edition of “The Autobiography of Charles Darwin,” Tom Wolfe’s “The Right Stuff,” Rachel Carson’s “Silent Spring” and monographs by Albert Einstein, John von Neumann and Richard Feynman.
Err codemadness.org 70 i 33074 With more than one million copies in print, “The Art of Computer Programming” is the Bible of its field. “Like an actual bible, it is long and comprehensive; no other book is as comprehensive,” said Peter Norvig, a director of research at Google. After 652 pages, volume one closes with a blurb on the back cover from Bill Gates: “You should definitely send me a résumé if you can read the whole thing.”
Err codemadness.org 70 i 33075 The volume opens with an excerpt from “McCall’s Cookbook”:
Here is your book, the one your thousands of letters have asked us to publish. It has taken us years to do, checking and rechecking countless recipes to bring you only the best, only the interesting, only the perfect.
Err codemadness.org 70 i 33081Err codemadness.org 70 i 33084 Err codemadness.org 70 i 33085Inside are algorithms, the recipes that feed the digital age — although, as Dr. Knuth likes to point out, algorithms can also be found on Babylonian tablets from 3,800 years ago. He is an esteemed algorithmist; his name is attached to some of the field’s most important specimens, such as the Knuth-Morris-Pratt string-searching algorithm. Devised in 1970, it finds all occurrences of a given word or pattern of letters in a text — for instance, when you hit Command+F to search for a keyword in a document.
Err codemadness.org 70 i 33083
Err codemadness.org 70 i 33082 Now 80, Dr. Knuth usually dresses like the youthful geek he was when he embarked on this odyssey: long-sleeved T-shirt under a short-sleeved T-shirt, with jeans, at least at this time of year. In those early days, he worked close to the machine, writing “in the raw,” tinkering with the zeros and ones.
##News Roundup
Err codemadness.org 70
i 33092 ###Let’s Encrypt: Certbot For OpenBSD’s httpd
Err codemadness.org 70 i 33099Err codemadness.org 70 i 33106 Err codemadness.org 70 i 33107Let’s Encrypt is “a free, automated, and open Certificate Authority”.
Err codemadness.org 70 i 33105
Err codemadness.org 70 i 33100 Certbot is “an easy-to-use automatic client that fetches and deploys SSL/TLS certificates for your web server”, well known as “the official Let’s Encrypt client”.
Err codemadness.org 70 i 33101 I remember well how excited I felt when I read Let’s Encrypt’s “Our First Certificate Is Now Live” in 2015.
Err codemadness.org 70 i 33102 How wonderful the goal of them is; it’s to “give people the digital certificates they need in order to enable HTTPS (SSL/TLS) for websites, for free” “to create a more secure and privacy-respecting Web”!
Err codemadness.org 70 i 33103 Since this year, they have begun to support even ACME v2 and Wildcard Certificate!
Err codemadness.org 70 i 33104 Well, in OpenBSD as well as other operating systems, it’s easy and comfortable to have their big help 😊
###FreeBSD 12 released: Here is how to upgrade FreeBSD 11 to 12
Err codemadness.org 70 i 33118 Err codemadness.org 70 i 33119Err codemadness.org 70 i 33120Err codemadness.org 70 i 33122 Err codemadness.org 70 i 33123The FreeBSD project announces the availability of FreeBSD 12.0-RELEASE. It is the first release of the stable/12 branch. The new version comes with updated software and features for a wild variety of architectures. The latest release provides performance improvements and better support for FreeBSD jails and more. One can benefit greatly using an upgraded version of FreeBSD.
Err codemadness.org 70 i 33121
Err codemadness.org 70 i 33124Err codemadness.org 70 i 33126 Err codemadness.org 70 i 33127FreeBSD 12.0 supports amd64, i386, powerpc, powerpc64, powerpcspe, sparc64, armv6, armv7, and aarch64 architectures. One can run it on a standalone server or desktop system. Another option is to run it on Raspberry PI computer. FreeBSD 12 also runs on popular cloud service providers such as AWS EC2/Lightsail or Google compute VM.
Err codemadness.org 70 i 33125
New features and highlights:
Err codemadness.org 70 i 33130OpenSSL version 1.1.1a (LTS)
Err codemadness.org 70 i 33133OpenSSH server 7.8p1
Err codemadness.org 70 i 33136Unbound server 1.8.1
Err codemadness.org 70 i 33139Clang and co 6.0.1
Err codemadness.org 70 i 33142The FreeBSD installer supports EFI+GELI as an installation option
Err codemadness.org 70 i 33145VIMAGE FreeBSD kernel configuration option has been enabled by default. VIMAGE was the main reason I custom compiled FreeBSD for the last few years. No more custom compile for me.
Err codemadness.org 70 i 33148Graphics drivers for modern ATI/AMD and Intel graphics cards are now available in the FreeBSD ports collection
Err codemadness.org 70 i 33151ZFS has been updated to include new sysctl(s), vfs.zfs.arc_min_prefetch_ms and vfs.zfs.arc_min_prescient_prefetch_ms, which improve performance of the zpool scrub subcommand
Err codemadness.org 70 i 33154The pf packet filter is now usable within a jail using vnet
Err codemadness.org 70 i 33157KDE updated to version 5.12.5
Err codemadness.org 70 i 33160The NFS version 4.1 includes pNFS server support
Err codemadness.org 70 i 33163Perl 5.26.2
Err codemadness.org 70 i 33166The default PAGER now defaults to less for most commands
Err codemadness.org 70 i 33169The dd utility has been updated to add the status=progress option to match GNU/Linux dd command to show progress bar while running dd
Err codemadness.org 70 i 33172FreeBSD now supports ext4 for read/write operation
Err codemadness.org 70 i 33175Python 2.7
Err codemadness.org 70 i 33178much more
Err codemadness.org 70 i 33181###Six Ways to Level Up Your nmap Game
Err codemadness.org 70 i 33187 Err codemadness.org 70 i 33188Err codemadness.org 70 i 33189Err codemadness.org 70 i 33194 Err codemadness.org 70 i 33195nmap is a network exploration tool and security / port scanner.
Err codemadness.org 70 i 33193
Err codemadness.org 70 i 33190 If you’ve heard of it, and you’re like me, you’ve most likely used it like this:
Err codemadness.org 70 i 33191 ie, you’ve pointed it at an IP address and observed the output which tells you the open ports on a host.
Err codemadness.org 70 i 33192 I used nmap like this for years, but only recently grokked the manual to see what else it could do. Here’s a quick look and some of the more useful things I found out.
###[NetBSD Desktop]
Err codemadness.org 70 i 33231 Err codemadness.org 70 i 33232##Beastie Bits
Err codemadness.org 70 i 33243 Err codemadness.org 70 i 33244##Feedback/Questions
Err codemadness.org 70 i 33261 Err codemadness.org 70 i 33262##Headlines
Err codemadness.org 70
i 33280 ###Open Source Confronts its midlife crisis
Err codemadness.org 70 i 33283Err codemadness.org 70 i 33291 Err codemadness.org 70 i 33292Midlife is tough: the idealism of youth has faded, as has inevitably some of its fitness and vigor. At the same time, the responsibilities of adulthood have grown. Making things more challenging, while you are navigating the turbulence of teenagers, your own parents are likely entering life’s twilight, needing help in new ways from their adult children. By midlife, in addition to the singular joys of life, you have also likely experienced its terrible sorrows: death, heartbreak, betrayal. Taken together, the fading of youth, the growth in responsibility and the endurance of misfortune can lead to cynicism or (worse) drastic and poorly thought-out choices. Add in a little fear of mortality and some existential dread, and you have the stuff of which midlife crises are made…
Err codemadness.org 70 i 33290
Err codemadness.org 70 i 33284 I raise this not because of my own adventures at midlife, but because it is clear to me that open source — now several decades old and fully adult — is going through its own midlife crisis. This has long been in the making: for years, I (and others) have been critical of service providers’ parasitic relationship with open source, as cloud service providers turn open source software into a service offering without giving back to the communities upon which they implicitly depend. At the same time, open source has been (rightfully) entirely unsympathetic to the proprietary software models that have been burned to the ground — but also seemingly oblivious as to the larger economic waves that have buoyed them.
Err codemadness.org 70 i 33285 So it seemed like only a matter of time before the companies built around open source software would have to confront their own crisis of confidence: open source business models are really tough, selling software-as-a-service is one of the most natural of them, the cloud service providers are really good at it — and their commercial appetites seem boundless. And, like a new cherry red two-seater sports car next to a minivan in a suburban driveway, some open source companies are dealing with this crisis exceptionally poorly: they are trying to restrict the way that their open source software can be used. These companies want it both ways: they want the advantages of open source — the community, the positivity, the energy, the adoption, the downloads — but they also want to enjoy the fruits of proprietary software companies in software lock-in and its monopolistic rents. If this were entirely transparent (that is, if some bits were merely being made explicitly proprietary), it would be fine: we could accept these companies as essentially proprietary software companies, albeit with an open source loss-leader. But instead, these companies are trying to license their way into this self-contradictory world: continuing to claim to be entirely open source, but perverting the license under which portions of that source are available. Most gallingly, they are doing this by hijacking open source nomenclature. Of these, the laughably named commons clause is the worst offender (it is plainly designed to be confused with the purely virtuous creative commons), but others (including CockroachDB’s Community License, MongoDB’s Server Side Public License, and Confluent’s Community License) are little better. And in particular, as it apparently needs to be said: no, “community” is not the opposite of “open source” — please stop sullying its good name by attaching it to licenses that are deliberately not open source! But even if they were more aptly named (e.g. “the restricted clause” or “the controlled use license” or — perhaps most honest of all — “the please-don’t-put-me-out-of-business-during-the-next-reInvent-keynote clause”), these licenses suffer from a serious problem: they are almost certainly asserting rights that the copyright holder doesn’t in fact have.
Err codemadness.org 70 i 33286 If I sell you a book that I wrote, I can restrict your right to read it aloud for an audience, or sell a translation, or write a sequel; these restrictions are rights afforded the copyright holder. I cannot, however, tell you that you can’t put the book on the same bookshelf as that of my rival, or that you can’t read the book while flying a particular airline I dislike, or that you aren’t allowed to read the book and also work for a company that competes with mine. (Lest you think that last example absurd, that’s almost verbatim the language in the new Confluent Community (sic) License.) I personally think that none of these licenses would withstand a court challenge, but I also don’t think it will come to that: because the vendors behind these licenses will surely fear that they wouldn’t survive litigation, they will deliberately avoid inviting such challenges. In some ways, this netherworld is even worse, as the license becomes a vessel for unverifiable fear of arbitrary liability.
Err codemadness.org 70 i 33287 let me put this to you as directly as possible: cloud services providers are emphatically not going to license your proprietary software. I mean, you knew that, right? The whole premise with your proprietary license is that you are finding that there is no way to compete with the operational dominance of the cloud services providers; did you really believe that those same dominant cloud services providers can’t simply reimplement your LDAP integration or whatever? The cloud services providers are currently reproprietarizing all of computing — they are making their own CPUs for crying out loud! — reimplementing the bits of your software that they need in the name of the service that their customers want (and will pay for!) won’t even move the needle in terms of their effort.
Err codemadness.org 70 i 33288 Worse than all of this (and the reason why this madness needs to stop): licenses that are vague with respect to permitted use are corporate toxin. Any company that has been through an acquisition can speak of the peril of the due diligence license audit: the acquiring entity is almost always deep pocketed and (not unrelatedly) risk averse; the last thing that any company wants is for a deal to go sideways because of concern over unbounded liability to some third-party knuckle-head. So companies that engage in license tomfoolery are doing worse than merely not solving their own problem: they are potentially poisoning the wellspring of their own community.
Err codemadness.org 70 i 33289 in the end, open source will survive its midlife questioning just as people in midlife get through theirs: by returning to its core values and by finding rejuvenation in its communities. Indeed, we can all find solace in the fact that while life is finite, our values and our communities survive us — and that our engagement with them is our most important legacy.
###Donald Knuth - The Yoda of Silicon Valley
Err codemadness.org 70 i 33299 Err codemadness.org 70 i 33300Err codemadness.org 70 i 33301Err codemadness.org 70 i 33306 Err codemadness.org 70 i 33307For half a century, the Stanford computer scientist Donald Knuth, who bears a slight resemblance to Yoda — albeit standing 6-foot-4 and wearing glasses — has reigned as the spirit-guide of the algorithmic realm.
Err codemadness.org 70 i 33305
Err codemadness.org 70 i 33302 He is the author of “The Art of Computer Programming,” a continuing four-volume opus that is his life’s work. The first volume debuted in 1968, and the collected volumes (sold as a boxed set for about $250) were included by American Scientist in 2013 on its list of books that shaped the last century of science — alongside a special edition of “The Autobiography of Charles Darwin,” Tom Wolfe’s “The Right Stuff,” Rachel Carson’s “Silent Spring” and monographs by Albert Einstein, John von Neumann and Richard Feynman.
Err codemadness.org 70 i 33303 With more than one million copies in print, “The Art of Computer Programming” is the Bible of its field. “Like an actual bible, it is long and comprehensive; no other book is as comprehensive,” said Peter Norvig, a director of research at Google. After 652 pages, volume one closes with a blurb on the back cover from Bill Gates: “You should definitely send me a résumé if you can read the whole thing.”
Err codemadness.org 70 i 33304 The volume opens with an excerpt from “McCall’s Cookbook”:
Here is your book, the one your thousands of letters have asked us to publish. It has taken us years to do, checking and rechecking countless recipes to bring you only the best, only the interesting, only the perfect.
Err codemadness.org 70 i 33310Err codemadness.org 70 i 33313 Err codemadness.org 70 i 33314Inside are algorithms, the recipes that feed the digital age — although, as Dr. Knuth likes to point out, algorithms can also be found on Babylonian tablets from 3,800 years ago. He is an esteemed algorithmist; his name is attached to some of the field’s most important specimens, such as the Knuth-Morris-Pratt string-searching algorithm. Devised in 1970, it finds all occurrences of a given word or pattern of letters in a text — for instance, when you hit Command+F to search for a keyword in a document.
Err codemadness.org 70 i 33312
Err codemadness.org 70 i 33311 Now 80, Dr. Knuth usually dresses like the youthful geek he was when he embarked on this odyssey: long-sleeved T-shirt under a short-sleeved T-shirt, with jeans, at least at this time of year. In those early days, he worked close to the machine, writing “in the raw,” tinkering with the zeros and ones.
##News Roundup
Err codemadness.org 70
i 33321 ###Let’s Encrypt: Certbot For OpenBSD’s httpd
Err codemadness.org 70 i 33328Err codemadness.org 70 i 33335 Err codemadness.org 70 i 33336Let’s Encrypt is “a free, automated, and open Certificate Authority”.
Err codemadness.org 70 i 33334
Err codemadness.org 70 i 33329 Certbot is “an easy-to-use automatic client that fetches and deploys SSL/TLS certificates for your web server”, well known as “the official Let’s Encrypt client”.
Err codemadness.org 70 i 33330 I remember well how excited I felt when I read Let’s Encrypt’s “Our First Certificate Is Now Live” in 2015.
Err codemadness.org 70 i 33331 How wonderful the goal of them is; it’s to “give people the digital certificates they need in order to enable HTTPS (SSL/TLS) for websites, for free” “to create a more secure and privacy-respecting Web”!
Err codemadness.org 70 i 33332 Since this year, they have begun to support even ACME v2 and Wildcard Certificate!
Err codemadness.org 70 i 33333 Well, in OpenBSD as well as other operating systems, it’s easy and comfortable to have their big help 😊
###FreeBSD 12 released: Here is how to upgrade FreeBSD 11 to 12
Err codemadness.org 70 i 33347 Err codemadness.org 70 i 33348Err codemadness.org 70 i 33349Err codemadness.org 70 i 33351 Err codemadness.org 70 i 33352The FreeBSD project announces the availability of FreeBSD 12.0-RELEASE. It is the first release of the stable/12 branch. The new version comes with updated software and features for a wild variety of architectures. The latest release provides performance improvements and better support for FreeBSD jails and more. One can benefit greatly using an upgraded version of FreeBSD.
Err codemadness.org 70 i 33350
Err codemadness.org 70 i 33353Err codemadness.org 70 i 33355 Err codemadness.org 70 i 33356FreeBSD 12.0 supports amd64, i386, powerpc, powerpc64, powerpcspe, sparc64, armv6, armv7, and aarch64 architectures. One can run it on a standalone server or desktop system. Another option is to run it on Raspberry PI computer. FreeBSD 12 also runs on popular cloud service providers such as AWS EC2/Lightsail or Google compute VM.
Err codemadness.org 70 i 33354
New features and highlights:
Err codemadness.org 70 i 33359OpenSSL version 1.1.1a (LTS)
Err codemadness.org 70 i 33362OpenSSH server 7.8p1
Err codemadness.org 70 i 33365Unbound server 1.8.1
Err codemadness.org 70 i 33368Clang and co 6.0.1
Err codemadness.org 70 i 33371The FreeBSD installer supports EFI+GELI as an installation option
Err codemadness.org 70 i 33374VIMAGE FreeBSD kernel configuration option has been enabled by default. VIMAGE was the main reason I custom compiled FreeBSD for the last few years. No more custom compile for me.
Err codemadness.org 70 i 33377Graphics drivers for modern ATI/AMD and Intel graphics cards are now available in the FreeBSD ports collection
Err codemadness.org 70 i 33380ZFS has been updated to include new sysctl(s), vfs.zfs.arc_min_prefetch_ms and vfs.zfs.arc_min_prescient_prefetch_ms, which improve performance of the zpool scrub subcommand
Err codemadness.org 70 i 33383The pf packet filter is now usable within a jail using vnet
Err codemadness.org 70 i 33386KDE updated to version 5.12.5
Err codemadness.org 70 i 33389The NFS version 4.1 includes pNFS server support
Err codemadness.org 70 i 33392Perl 5.26.2
Err codemadness.org 70 i 33395The default PAGER now defaults to less for most commands
Err codemadness.org 70 i 33398The dd utility has been updated to add the status=progress option to match GNU/Linux dd command to show progress bar while running dd
Err codemadness.org 70 i 33401FreeBSD now supports ext4 for read/write operation
Err codemadness.org 70 i 33404Python 2.7
Err codemadness.org 70 i 33407much more
Err codemadness.org 70 i 33410###Six Ways to Level Up Your nmap Game
Err codemadness.org 70 i 33416 Err codemadness.org 70 i 33417Err codemadness.org 70 i 33418Err codemadness.org 70 i 33423 Err codemadness.org 70 i 33424nmap is a network exploration tool and security / port scanner.
Err codemadness.org 70 i 33422
Err codemadness.org 70 i 33419 If you’ve heard of it, and you’re like me, you’ve most likely used it like this:
Err codemadness.org 70 i 33420 ie, you’ve pointed it at an IP address and observed the output which tells you the open ports on a host.
Err codemadness.org 70 i 33421 I used nmap like this for years, but only recently grokked the manual to see what else it could do. Here’s a quick look and some of the more useful things I found out.
###[NetBSD Desktop]
Err codemadness.org 70 i 33460 Err codemadness.org 70 i 33461##Beastie Bits
Err codemadness.org 70 i 33472 Err codemadness.org 70 i 33473##Feedback/Questions
Err codemadness.org 70 i 33490 Err codemadness.org 70 i 33491##Headlines
Err codemadness.org 70
i 33798 ###FreeBSD 12.0 is available
Err codemadness.org 70 i 33806Err codemadness.org 70 i 33864 Err codemadness.org 70 i 33865Userland:
Err codemadness.org 70 i 33859
Err codemadness.org 70 i 33807 Group permissions on /dev/acpi have been changed to allow users in the operator GID to invoke acpiconf(8) to suspend the system.
Err codemadness.org 70 i 33808 The default devfs.rules(5) configuration has been updated to allow mount_fusefs(8) with jail(8).
Err codemadness.org 70 i 33809 The default PAGER now defaults to less(1) for most commands.
Err codemadness.org 70 i 33810 The newsyslog(8) utility has been updated to reject configuration entries that specify setuid(2) or executable log files.
Err codemadness.org 70 i 33811 The WITH_REPRODUCIBLE_BUILD src.conf(5) knob has been enabled by default.
Err codemadness.org 70 i 33812 A new src.conf(5) knob, WITH_RETPOLINE, has been added to enable the retpoline mitigation for userland builds.
Err codemadness.org 70 i 33813 Userland applications:
Err codemadness.org 70 i 33814 The dtrace(1) utility has been updated to support if and else statements.
Err codemadness.org 70 i 33815 The legacy gdb(1) utility included in the base system is now installed to /usr/libexec for use with crashinfo(8). The gdbserver and gdbtui utilities are no longer installed. For interactive debugging, lldb(1) or a modern version of gdb(1) from devel/gdb should be used. A new src.conf(5) knob, WITHOUT_GDB_LIBEXEC has been added to disable building gdb(1). The gdb(1) utility is still installed in /usr/bin on sparc64.
Err codemadness.org 70 i 33816 The setfacl(1) utility has been updated to include a new flag, -R, used to operate recursively on directories.
Err codemadness.org 70 i 33817 The geli(8) utility has been updated to provide support for initializing multiple providers at once when they use the same passphrase and/or key.
Err codemadness.org 70 i 33818 The dd(1) utility has been updated to add the status=progress option, which prints the status of its operation on a single line once per second, similar to GNU dd(1).
Err codemadness.org 70 i 33819 The date(1) utility has been updated to include a new flag, -I, which prints its output in ISO 8601 formatting.
Err codemadness.org 70 i 33820 The bectl(8) utility has been added, providing an administrative interface for managing ZFS boot environments, similar to sysutils/beadm.
Err codemadness.org 70 i 33821 The bhyve(8) utility has been updated to add a new subcommand to the -l and -s flags, help, which when used, prints a list of supported LPC and PCI devices, respectively.
Err codemadness.org 70 i 33822 The tftp(1) utility has been updated to change the default transfer mode from ASCII to binary.
Err codemadness.org 70 i 33823 The chown(8) utility has been updated to prevent overflow of UID or GID arguments where the argument exceeded UID_MAX or GID_MAX, respectively.
Err codemadness.org 70 i 33824 Kernel:
Err codemadness.org 70 i 33825 The ACPI subsystem has been updated to implement Device object types for ACPI 6.0 support, required for some Dell, Inc. Poweredge™ AMD® Epyc™ systems.
Err codemadness.org 70 i 33826 The amdsmn(4) and amdtemp(4) drivers have been updated to attach to AMD® Ryzen 2™ host bridges.
Err codemadness.org 70 i 33827 The amdtemp(4) driver has been updated to fix temperature reporting for AMD® 2990WX CPUs.
Err codemadness.org 70 i 33828 Kernel Configuration:
Err codemadness.org 70 i 33829 The VIMAGE kernel configuration option has been enabled by default.
Err codemadness.org 70 i 33830 The dumpon(8) utility has been updated to add support for compressed kernel crash dumps when the kernel configuration file includes the GZIO option. See rc.conf(5) and dumpon(8) for additional information.
Err codemadness.org 70 i 33831 The NUMA option has been enabled by default in the amd64 GENERIC and MINIMAL kernel configurations.
Err codemadness.org 70 i 33832 Device Drivers:
Err codemadness.org 70 i 33833 The random(4) driver has been updated to remove the Yarrow algorithm. The Fortuna algorithm remains the default, and now only, available algorithm.
Err codemadness.org 70 i 33834 The vt(4) driver has been updated with performance improvements, drawing text at rates ranging from 2- to 6-times faster.
Err codemadness.org 70 i 33835 Deprecated Drivers:
Err codemadness.org 70 i 33836 The lmc(4) driver has been removed.
Err codemadness.org 70 i 33837 The ixgb(4) driver has been removed.
Err codemadness.org 70 i 33838 The nxge(4) driver has been removed.
Err codemadness.org 70 i 33839 The vxge(4) driver has been removed.
Err codemadness.org 70 i 33840 The jedec_ts(4) driver has been removed in 12.0-RELEASE, and its functionality replaced by jedec_dimm(4).
Err codemadness.org 70 i 33841 The DRM driver for modern graphics chipsets has been marked deprecated and marked for removal in FreeBSD 13. The DRM kernel modules are available from graphics/drm-stable-kmod or graphics/drm-legacy-kmod in the Ports Collection as well as via pkg(8). Additionally, the kernel modules have been added to the lua loader.conf(5) module_blacklist, as installation from the Ports Collection or pkg(8) is strongly recommended.
Err codemadness.org 70 i 33842 The following drivers have been deprecated in FreeBSD 12.0, and not present in FreeBSD 13.0: ae(4), de(4), ed(4), ep(4), ex(4), fe(4), pcn(4), sf(4), sn(4), tl(4), tx(4), txp(4), vx(4), wb(4), xe(4)
Err codemadness.org 70 i 33843 Storage:
Err codemadness.org 70 i 33844 The UFS/FFS filesystem has been updated to support check hashes to cylinder-group maps. Support for check hashes is available only for UFS2.
Err codemadness.org 70 i 33845 The UFS/FFS filesystem has been updated to consolidate TRIM/BIO_DELETE commands, reducing read/write requests due to fewer TRIM messages being sent simultaneously.
Err codemadness.org 70 i 33846 TRIM consolidation support has been enabled by default in the UFS/FFS filesystem. TRIM consolidation can be disabled by setting the vfs.ffs.dotrimcons sysctl(8) to 0, or adding vfs.ffs.dotrimcons=0 to sysctl.conf(5).
Err codemadness.org 70 i 33847 NFS:
Err codemadness.org 70 i 33848 The NFS version 4.1 server has been updated to include pNFS server support.
Err codemadness.org 70 i 33849 ZFS:
Err codemadness.org 70 i 33850 ZFS has been updated to include new sysctl(8)s, vfs.zfs.arc_min_prefetch_ms and vfs.zfs.arc_min_prescient_prefetch_ms, which improve performance of the zpool(8) scrub subcommand.
Err codemadness.org 70 i 33851 The new spacemap_v2 zpool feature has been added. This provides more efficient encoding of spacemaps, especially for full vdev spacemaps.
Err codemadness.org 70 i 33852 The large_dnode zpool feature been imported, allowing better compatibility with pools created under ZFS-on-Linux 0.7.x
Err codemadness.org 70 i 33853 Many bug fixes have been applied to the device removal feature. This feature allows you to remove a non-redundant or mirror vdev from a pool by relocating its data to other vdevs.
Err codemadness.org 70 i 33854 Includes the fix for PR 229614 that could cause processes to hang in zil_commit()
Err codemadness.org 70 i 33855 Boot Loader Changes:
Err codemadness.org 70 i 33856 The lua loader(8) has been updated to detect a list of installed kernels to boot.
Err codemadness.org 70 i 33857 The loader(8) has been updated to support geli(8) for all architectures and all disk-like devices.
Err codemadness.org 70 i 33858 The loader(8) has been updated to add support for loading Intel® microcode updates early during the boot process.Networking:
Err codemadness.org 70 i 33863
Err codemadness.org 70 i 33860 The pf(4) packet filter is now usable within a jail(8) using vnet(9).
Err codemadness.org 70 i 33861 The pf(4) packet filter has been updated to use rmlock(9) instead of rwlock(9), resulting in significant performance improvements.
Err codemadness.org 70 i 33862 The SO_REUSEPORT_LB option has been added to the network stack, allowing multiple programs or threads to bind to the same port, and incoming connections load balanced using a hash function.
###Abandon Linux. Move to FreeBSD or Illumos
Err codemadness.org 70 i 33872 Err codemadness.org 70 i 33873Err codemadness.org 70 i 33874Err codemadness.org 70 i 33897 Err codemadness.org 70 i 33898If you use GNU/Linux and you are only on opensource, you may be doing it wrong. Here’s why.
Err codemadness.org 70 i 33896
Err codemadness.org 70 i 33875 Is your company based on opensource based software only? Do you have a bunch of developers hitting some kind of server you have installed for them to “do their thing”? Being it for economical reasons (remember to donate), being it for philosophycal ones, you may have skipped good alternatives. The BSD’s and Illumos.
Err codemadness.org 70 i 33876 I bet you are running some sort of Debian, openSuSE or CentOS. It’s very discouraging having entered into the IT field recently and discover many of the people you meet do not even recognise the name BSD. Naming Solaris seems like naming the evil itself. The problem being many do not know why. They can’t point anything specific other than it’s fading out. This has recently shown strong when Oracle officials have stated development for new features has ceased and almost 90 % of developers for Solaris have been layed off. AIX seems alien to almost everybody unless you have a white beard. And all this is silly.
Err codemadness.org 70 i 33877 And here’s why. You are certainly missing two important features that FreeBSD and Illumos derivatives are enjoying. A full virtualization technology, much better and fully developed compared to the LXC containers in the Linux world, such as Jails on BSD, Zones in Solaris/Illumos, and the great ZFS file system which both share.
Err codemadness.org 70 i 33878 You have probably heard of a new Linux filesystem named Btrfs, which by the way, development has been dropped from the Red Hat side. Trying to emulate ZFS, Oracle started developing Btrfs file system before they acquired Sun (the original developer of ZFS), and SuSE joined the effort as well as Red Hat. It is not as well developed as ZFS and it hasn’t been tested in production environments as extensively as the former has. That leaves some uncertainty on using it or not. Red Hat leaving it aside does add some more. Although some organizations have used it with various grades of success.
Err codemadness.org 70 i 33879 But why is this anyhow interesting for a sysadmin or any organization? Well… FreeBSD (descendant of Berkeley UNIX) and SmartOS (based on Illumos) aglutinate some features that make administration easier, safer, faster and more reliable. The dream of any systems administrator.
Err codemadness.org 70 i 33880 To start, the ZFS filesystem combines the typical filesystem with a volume manager. It includes protection against corruption, snapshots and copy-on-write clones, as well as volume manager.
Err codemadness.org 70 i 33881 Jails is another interesting piece of technology. Linux folks usually associate this as a sort of chroot. It isn’t. It is somehow inspired by it but as you may know you can escape from a chroot environment with a blink of an eye. Jails are not called jails casually. The name has a purpose. Contain processes and programs within a defined and totally controlled environment. Jails appeared first in FreeBSD in the year 2000. Solaris Zones debuted on 2005 (now called containers) are the now proprietary version of those.
Err codemadness.org 70 i 33882 There are some other technologies on Linux such as Btrfs or Docker. But they have some caveats. Btrfs hasn’t been fully developed yet and it’s hasn’t been proved as much in production environments as ZFS has. And some problems have arisen recently although the developers are pushing the envelope. At some time they will match ZFS capabilities for sure. Docker is growing exponentially and it’s one of the cool technologies of modern times. The caveat is, as before, the development of this technology hasn’t been fully developed. Unlike other virtualization technologies this is not a kernel playing on top of another kernel. This is virtualization at the OS level, meaning differentiated environments can coexist on a single host, “hitting” the same unique kernel which controls and shares the resources. The problem comes when you put Docker on top of any other virtualization technology such as KVM or Xen. It breaks the purpose of it and has a performance penalty.
Err codemadness.org 70 i 33883 I have arrived into the IT field with very little knowledge, that is true. But what I see strikes me. Working in a bank has allowed me to see a big production environment that needs the highest of the availability and reliability. This is, sometimes, achieved by bruteforce. And it’s legitime and adequate. Redundancy has a reason and a purpose for example. But some other times it looks, it feels, like killing flies with cannons. More hardware, more virtual machines, more people, more of this, more of that. They can afford it, so they try to maintain the cost low but at the end of the day there is a chunky budget to back operations.
Err codemadness.org 70 i 33884 But here comes reality. You’re not a bank and you need to squeeze your investment as much as possible. By using FreeBSD jails you can avoid the performance penalty of KVM or Xen virtualization. Do you use VMWare or Hyper-V? You can avoid both and gain in performance. Not only that, control and manageability are equal as before, and sometimes easier to administer. There are four ways to operate them which can be divided in two categories. Hardcore and Human Being. For the Hardcore use the FreeBSD handbook and investigate as much as you can. For the Human Being way there are three options to use. Ezjail, Iocage and CBSD which are frameworks or programs as you may call to manage jails. I personally use Iocage but I have also used Ezjail.
Err codemadness.org 70 i 33885 How can you use jails on your benefit? Ever tried to configure some new software and failed miserably? You can have three different jails running at the same time with different configurations. Want to try a new configuration in a production piece of hardware without applying it on the final users? You can do that with a small jail while the production environment is on in another bigger, chunkier jail.
Err codemadness.org 70 i 33886 Want to divide the hardware as a replica of the division of the team/s you are working with? Want to sell virtual machines with bare metal performance? Do you want to isolate some piece of critical software or even data in a more controlled environment? Do you have different clients and you want to use the same hardware but you want to avoid them seeing each other at the same time you maintain performance and reliability?
Err codemadness.org 70 i 33887 Are you a developer and you have to have reliable and portable snapshots of your work? Do you want to try new options-designs without breaking your previous work, in a timeless fashion? You can work on something, clone the jail and apply the new ideas on the project in a matter of seconds. You can stop there, export the filesystem snapshot containing all the environment and all your work and place it on a thumbdrive to later import it on a big production system. Want to change that image properties such as the network stack interface and ip? This is just one command away from you.
Err codemadness.org 70 i 33888 But what properties can you assign to a jail and how can I manage them you may be wondering. Hostname, disk quota, i/o, memory, cpu limits, network isolation, network virtualization, snapshots and the manage of those, migration and root privilege isolation to name a few. You can also clone them and import and export them between different systems. Some of these things because of ZFS. Iocage is a python program to manage jails and it takes profit from ZFS advantages.
Err codemadness.org 70 i 33889 But FreeBSD is not Linux you may say. No it is not. There are no run levels. The systemd factor is out of this equation. This is so since the begginning. Ever wondered where did vi come from? The TCP/IP stack? Your beloved macOS from Apple? All this is coming from the FreeBSD project. If you are used to Linux your adaptation period with any BSD will be short, very short. You will almost feel at home. Used to packaged software using yum or apt-get? No worries. With pkgng, the package management tool used in FreeBSD has almost 27.000 compiled packages for you to use. Almost all software found on any of the important GNU/Linux distros can be found here. Java, Python, C, C++, Clang, GCC, Javascript frameworks, Ruby, PHP, MySQL and the major forks, etc. All this opensource software, and much more, is available at your fingertips.
Err codemadness.org 70 i 33890 I am a developer and… frankly my time is money and I appreciate both much more than dealing with systems configuration, etc. You can set a VM using VMWare or VirtualBox and play with barebones FreeBSD or you can use TrueOS (a derivative) which comes in a server version and a desktop oriented one. The latter will be easier for you to play with. You may be doing this already with Linux. There is a third and very sensible option. FreeNAS, developed by iXSystems. It is FreeBSD based and offers all these technologies with a GUI. VMWare, Hyper-V? Nowadays you can get your hands off the CLI and get a decent, usable, nice GUI.
Err codemadness.org 70 i 33891 You say you play on the cloud. The major players already include FreeBSD in their offerings. You can find it in Amazon AWS or Azure (with official Microsoft support contracts too!). You can also find it in DigitalOcean and other hosting providers. There is no excuse. You can use it at home, at the office, with old or new hardware and in the cloud as well. You can even pay for a support contract to use it. Joyent, the developers of SmartOS have their own cloud with different locations around the globe. Have a look on them too.
Err codemadness.org 70 i 33892 If you want the original of ZFS and zones you may think of Solaris. But it’s fading away. But it really isn’t. When Oracle bouth Sun many people ran away in an stampide fashion. Some of the good folks working at Sun founded new projects. One of these is Illumos. Joyent is a company formed by people who developed these technologies. They are a cloud operator, have been recently bought by Samsung and have a very competent team of people providing great tech solutions. They have developed an OS, called SmartOS (based on Illumos) with all these features. The source from this goes back to the early days of UNIX. Do you remember the days of OpenSolaris when Sun opensourced the crown jewels? There you have it. A modern opensource UNIX operating system with the roots in their original place and the head planted on today’s needs.
Err codemadness.org 70 i 33893 In conclusion. If you are on GNU/Linux and you only use opensource software you may be doing it wrong. And missing goodies you may need and like. Once you put your hands on them, trust me, you won’t look back. And if you have some “old fashioned” admins who know Solaris, you can bring them to a new profitable and exciting life with both systems.
Err codemadness.org 70 i 33894 Still not convinced? Would you have ever imagined Microsoft supporting Linux? Even loving it? They do love now FreeBSD. And not only that, they provide their own image in the Azure Cloud and you can get Microsoft support, payed support if you want to use the platform on Azure. Ain’t it… surprising? Convincing at all?
Err codemadness.org 70 i 33895 PS: I haven’t mentioned both softwares, FreeBSD and SmartOS do have a Linux translation layer. This means you can run Linux binaries on them and the program won’t cough at all. Since the ABI stays stable the only thing you need to run a Linux binary is a translation between the different system calls and the libraries. Remember POSIX? Choose your poison and enjoy it.
Err codemadness.org 70 i 33907Err codemadness.org 70 i 33909 Err codemadness.org 70 i 33910I’m assuming that readers have at least a basic knowledge of TCP/IP networking and some UNIX or UNIX-like systems, but not necessarily OpenBSD or FreeBSD. This post will therefore be light on details that aren’t OS specific and are likely to be encountered in normal use (e.g., how to use vi or another text editor.) For more information on these topics, read Absolute FreeBSD (3ed.) by Michael W. Lucas.
Err codemadness.org 70 i 33908
Err codemadness.org 70 i 33915Err codemadness.org 70 i 33917 Err codemadness.org 70 i 33918I’m redoing my DigitalOcean virtual machines (which they call droplets). My requirements are:
Err codemadness.org 70 i 33916
Err codemadness.org 70 i 33927Err codemadness.org 70 i 33932 Err codemadness.org 70 i 33933The last item is on the list because I don’t actually have a public IP address at home; my firewall’s external address is in the RFC 1918 space, and the entire apartment building shares a single public IPv4 address.1 (IPv6? Don’t I wish.) The end-state network will include one OpenBSD droplet providing firewall, router, and VPN services; and one FreeBSD droplet hosting multiple jailed services.
Err codemadness.org 70 i 33931
Err codemadness.org 70 i 33928 I’ll be providing access via these droplets to a NextCloud instance at home. A simple NAT on the DO router droplet isn’t going to work, because packets going from home to the internet would exit through the apartment building’s connection and not through the VPN. It’s possible that I could do work around this issue with packet tagging using the pf firewall, but HAProxy is simple to configure and unlikely to result in hard-to-debug problems. relayd is also an option, but doesn’t have the TLS parsing abilities of HAProxy, which I’ll be using later on.
Err codemadness.org 70 i 33929 Since this system includes jails running on a VPS, and they’ve got RFC 1918 addresses, I want them reachable from my home network. Once that’s done, I can access the private address space from anywhere through a VPN connection to the cloudy router.
Err codemadness.org 70 i 33930 The VPN itself will be of the IPsec variety. IPsec is the traditional enterprise VPN standard, and is even used for classified applications, but has a (somewhat-deserved) reputation for complexity, but recent versions of OpenBSD turn down the difficulty by quite a bit.
Err codemadness.org 70 i 33938Err codemadness.org 70 i 33941 Err codemadness.org 70 i 33942This VPN both separates internal network traffic from public traffic and uses encryption to prevent interception or tampering.
Err codemadness.org 70 i 33940
Err codemadness.org 70 i 33939 Once traffic has been encrypted, decrypting it without the key would, as Bruce Schneier once put it, require a computer built from something other than matter that occupies something other than space. Dyson spheres and a frakton of causality violation would possibly work, as would mathemagical technology that alters the local calendar such that P=NP.2 Black-bag jobs and/or suborning cloud provider employees doesn’t quite have that guarantee of impossibility, however. If you have serious security requirements, you’ll need to do better than a random blog entry.
##News Roundup
Err codemadness.org 70
i 33945 ###KLEAK: Practical Kernel Memory Disclosure Detection
Err codemadness.org 70 i 33948Err codemadness.org 70 i 33953 Err codemadness.org 70 i 33954Modern operating systems such as NetBSD, macOS, and Windows isolate their kernel from userspace programs to increase fault tolerance and to protect against malicious manipulations [10]. User space programs have to call into the kernel to request resources, via system calls or ioctls. This communication between user space and kernel space crosses a security boundary. Kernel memory disclosures - also known as kernel information leaks - denote the inadvertent copying of uninitialized bytes from kernel space to user space. Such disclosed memory may contain cryptographic keys, information about the kernel memory layout, or other forms of secret data. Even though kernel memory disclosures do not allow direct exploitation of a system, they lay the ground for it.
Err codemadness.org 70 i 33952
Err codemadness.org 70 i 33949 We introduce KLEAK, a simple approach to dynamically detect kernel information leaks. Simply said, KLEAK utilizes a rudimentary form of taint tracking: it taints kernel memory with marker values, lets the data travel through the kernel and scans the buffers exchanged between the kernel and the user space for these marker values. By using compiler instrumentation and rotating the markers at regular intervals, KLEAK significantly reduces the number of false positives, and is able to yield relevant results with little effort.
Err codemadness.org 70 i 33950 Our approach is practically feasible as we prove with an implementation for the NetBSD kernel. A small performance penalty is introduced, but the system remains usable. In addition to implementing KLEAK in the NetBSD kernel, we applied our approach to FreeBSD 11.2. In total, we detected 21 previously unknown kernel memory disclosures in NetBSD-current and FreeBSD 11.2, which were fixed subsequently. As a follow-up, the projects’ developers manually audited related kernel areas and identified dozens of other kernel memory disclosures.
Err codemadness.org 70 i 33951 The remainder of this paper is structured as follows. Section II discusses the bug class of kernel memory disclosures. Section III presents KLEAK to dynamically detect instances of this bug class. Section IV discusses the results of applying KLEAK to NetBSD-current and FreeBSD 11.2. Section V reviews prior research. Finally, Section VI concludes this paper.
###How To Create Official Synth Repo
Err codemadness.org 70 i 33957 Err codemadness.org 70 i 33958System Environment
Err codemadness.org 70 i 33961Make sure /usr/dports is updated and that it contains no cruft (git pull; git status). Remove any cruft.
Err codemadness.org 70 i 33964Make sure your ‘synth’ is up-to-date ‘pkg upgrade synth’. If you already updated your system you may have to build synth from scratch, from /usr/dports/ports-mgmt/synth.
Err codemadness.org 70 i 33967Make sure /etc/make.conf is clean.
Err codemadness.org 70 i 33970Update /usr/src to the current master, make sure there is no cruft in it
Err codemadness.org 70 i 33973Do a full buildworld, buildkernel, installkernel and installworld
Err codemadness.org 70 i 33976Reboot
Err codemadness.org 70 i 33979After the reboot, before proceeding, run ‘uname -a’ and make sure you are now on the desired release or development kernel.
Err codemadness.org 70 i 33982Synth Environment
Err codemadness.org 70 i 33985/usr/local/etc/synth/ contains the synth configuration. It should contain a synth.ini file (you may have to rename the template), and you will have to create or edit a LiveSystem-make.conf file.
Err codemadness.org 70 i 33988System requirements are hefty. Just linking chromium alone eats at least 30GB, for example. Concurrent c++ compiles can eat up to 2GB per process. We recommend at least 100GB of SSD based swap space and 300GB of free space on the filesystem.
Err codemadness.org 70 i 33991synth.ini should contain this. Plus modify the builders and jobs to suit your system. With 128G of ram, 30/30 or 40/25 works well. If you have 32G of ram, maybe 8/8 or less.
Err codemadness.org 70 i 33994; Take care when hand editing!
Err codemadness.org 70
i 33998
Err codemadness.org 70
i 33999 [Global Configuration]
Err codemadness.org 70
i 34000 profile_selected= LiveSystem
Err codemadness.org 70
i 34001
Err codemadness.org 70
i 34002 [LiveSystem]
Err codemadness.org 70
i 34003 Operating_system= DragonFly
Err codemadness.org 70
i 34004 Directory_packages= /build/synth/live_packages
Err codemadness.org 70
i 34005 Directory_repository= /build/synth/live_packages/All
Err codemadness.org 70
i 34006 Directory_portsdir= /build/synth/dports
Err codemadness.org 70
i 34007 Directory_options= /build/synth/options
Err codemadness.org 70
i 34008 Directory_distfiles= /usr/distfiles
Err codemadness.org 70
i 34009 Directory_buildbase= /build/synth/build
Err codemadness.org 70
i 34010 Directory_logs= /build/synth/logs
Err codemadness.org 70
i 34011 Directory_ccache= disabled
Err codemadness.org 70
i 34012 Directory_system= /
Err codemadness.org 70
i 34013 Number_of_builders= 30
Err codemadness.org 70
i 34014 Max_jobs_per_builder= 30
Err codemadness.org 70
i 34015 Tmpfs_workdir= true
Err codemadness.org 70
i 34016 Tmpfs_localbase= true
Err codemadness.org 70
i 34017 Display_with_ncurses= true
Err codemadness.org 70
i 34018 leverage_prebuilt= false
LICENSES_ACCEPTED= NONE
Make sure there is no other cruft in /usr/local/etc/synth/
Err codemadness.org 70 i 34029In the example above, the synth working dirs are in “/build/synth”. Make sure the base directories exist. Clean out any cruft for a fresh build from-scratch:
Err codemadness.org 70 i 34032rm -rf /build/synth/live_packages/*
Err codemadness.org 70
i 34036 rm -rf /build/synth/logs
Err codemadness.org 70
i 34037 mkdir /build/synth/logs
(optionally start a screen session)
Err codemadness.org 70
i 34044 synth everything
###Interview with founder and maintainer of GhostBSD, Eric Turgeon
Err codemadness.org 70 i 34055 Err codemadness.org 70 i 34056##Beastie Bits
Err codemadness.org 70 i 34079 Err codemadness.org 70 i 34080##Feedback/Questions
Err codemadness.org 70 i 34093 Err codemadness.org 70 i 34094##Headlines
Err codemadness.org 70
i 34112 ###FreeBSD 12.0 is available
Err codemadness.org 70 i 34120Err codemadness.org 70 i 34178 Err codemadness.org 70 i 34179Userland:
Err codemadness.org 70 i 34173
Err codemadness.org 70 i 34121 Group permissions on /dev/acpi have been changed to allow users in the operator GID to invoke acpiconf(8) to suspend the system.
Err codemadness.org 70 i 34122 The default devfs.rules(5) configuration has been updated to allow mount_fusefs(8) with jail(8).
Err codemadness.org 70 i 34123 The default PAGER now defaults to less(1) for most commands.
Err codemadness.org 70 i 34124 The newsyslog(8) utility has been updated to reject configuration entries that specify setuid(2) or executable log files.
Err codemadness.org 70 i 34125 The WITH_REPRODUCIBLE_BUILD src.conf(5) knob has been enabled by default.
Err codemadness.org 70 i 34126 A new src.conf(5) knob, WITH_RETPOLINE, has been added to enable the retpoline mitigation for userland builds.
Err codemadness.org 70 i 34127 Userland applications:
Err codemadness.org 70 i 34128 The dtrace(1) utility has been updated to support if and else statements.
Err codemadness.org 70 i 34129 The legacy gdb(1) utility included in the base system is now installed to /usr/libexec for use with crashinfo(8). The gdbserver and gdbtui utilities are no longer installed. For interactive debugging, lldb(1) or a modern version of gdb(1) from devel/gdb should be used. A new src.conf(5) knob, WITHOUT_GDB_LIBEXEC has been added to disable building gdb(1). The gdb(1) utility is still installed in /usr/bin on sparc64.
Err codemadness.org 70 i 34130 The setfacl(1) utility has been updated to include a new flag, -R, used to operate recursively on directories.
Err codemadness.org 70 i 34131 The geli(8) utility has been updated to provide support for initializing multiple providers at once when they use the same passphrase and/or key.
Err codemadness.org 70 i 34132 The dd(1) utility has been updated to add the status=progress option, which prints the status of its operation on a single line once per second, similar to GNU dd(1).
Err codemadness.org 70 i 34133 The date(1) utility has been updated to include a new flag, -I, which prints its output in ISO 8601 formatting.
Err codemadness.org 70 i 34134 The bectl(8) utility has been added, providing an administrative interface for managing ZFS boot environments, similar to sysutils/beadm.
Err codemadness.org 70 i 34135 The bhyve(8) utility has been updated to add a new subcommand to the -l and -s flags, help, which when used, prints a list of supported LPC and PCI devices, respectively.
Err codemadness.org 70 i 34136 The tftp(1) utility has been updated to change the default transfer mode from ASCII to binary.
Err codemadness.org 70 i 34137 The chown(8) utility has been updated to prevent overflow of UID or GID arguments where the argument exceeded UID_MAX or GID_MAX, respectively.
Err codemadness.org 70 i 34138 Kernel:
Err codemadness.org 70 i 34139 The ACPI subsystem has been updated to implement Device object types for ACPI 6.0 support, required for some Dell, Inc. Poweredge™ AMD® Epyc™ systems.
Err codemadness.org 70 i 34140 The amdsmn(4) and amdtemp(4) drivers have been updated to attach to AMD® Ryzen 2™ host bridges.
Err codemadness.org 70 i 34141 The amdtemp(4) driver has been updated to fix temperature reporting for AMD® 2990WX CPUs.
Err codemadness.org 70 i 34142 Kernel Configuration:
Err codemadness.org 70 i 34143 The VIMAGE kernel configuration option has been enabled by default.
Err codemadness.org 70 i 34144 The dumpon(8) utility has been updated to add support for compressed kernel crash dumps when the kernel configuration file includes the GZIO option. See rc.conf(5) and dumpon(8) for additional information.
Err codemadness.org 70 i 34145 The NUMA option has been enabled by default in the amd64 GENERIC and MINIMAL kernel configurations.
Err codemadness.org 70 i 34146 Device Drivers:
Err codemadness.org 70 i 34147 The random(4) driver has been updated to remove the Yarrow algorithm. The Fortuna algorithm remains the default, and now only, available algorithm.
Err codemadness.org 70 i 34148 The vt(4) driver has been updated with performance improvements, drawing text at rates ranging from 2- to 6-times faster.
Err codemadness.org 70 i 34149 Deprecated Drivers:
Err codemadness.org 70 i 34150 The lmc(4) driver has been removed.
Err codemadness.org 70 i 34151 The ixgb(4) driver has been removed.
Err codemadness.org 70 i 34152 The nxge(4) driver has been removed.
Err codemadness.org 70 i 34153 The vxge(4) driver has been removed.
Err codemadness.org 70 i 34154 The jedec_ts(4) driver has been removed in 12.0-RELEASE, and its functionality replaced by jedec_dimm(4).
Err codemadness.org 70 i 34155 The DRM driver for modern graphics chipsets has been marked deprecated and marked for removal in FreeBSD 13. The DRM kernel modules are available from graphics/drm-stable-kmod or graphics/drm-legacy-kmod in the Ports Collection as well as via pkg(8). Additionally, the kernel modules have been added to the lua loader.conf(5) module_blacklist, as installation from the Ports Collection or pkg(8) is strongly recommended.
Err codemadness.org 70 i 34156 The following drivers have been deprecated in FreeBSD 12.0, and not present in FreeBSD 13.0: ae(4), de(4), ed(4), ep(4), ex(4), fe(4), pcn(4), sf(4), sn(4), tl(4), tx(4), txp(4), vx(4), wb(4), xe(4)
Err codemadness.org 70 i 34157 Storage:
Err codemadness.org 70 i 34158 The UFS/FFS filesystem has been updated to support check hashes to cylinder-group maps. Support for check hashes is available only for UFS2.
Err codemadness.org 70 i 34159 The UFS/FFS filesystem has been updated to consolidate TRIM/BIO_DELETE commands, reducing read/write requests due to fewer TRIM messages being sent simultaneously.
Err codemadness.org 70 i 34160 TRIM consolidation support has been enabled by default in the UFS/FFS filesystem. TRIM consolidation can be disabled by setting the vfs.ffs.dotrimcons sysctl(8) to 0, or adding vfs.ffs.dotrimcons=0 to sysctl.conf(5).
Err codemadness.org 70 i 34161 NFS:
Err codemadness.org 70 i 34162 The NFS version 4.1 server has been updated to include pNFS server support.
Err codemadness.org 70 i 34163 ZFS:
Err codemadness.org 70 i 34164 ZFS has been updated to include new sysctl(8)s, vfs.zfs.arc_min_prefetch_ms and vfs.zfs.arc_min_prescient_prefetch_ms, which improve performance of the zpool(8) scrub subcommand.
Err codemadness.org 70 i 34165 The new spacemap_v2 zpool feature has been added. This provides more efficient encoding of spacemaps, especially for full vdev spacemaps.
Err codemadness.org 70 i 34166 The large_dnode zpool feature been imported, allowing better compatibility with pools created under ZFS-on-Linux 0.7.x
Err codemadness.org 70 i 34167 Many bug fixes have been applied to the device removal feature. This feature allows you to remove a non-redundant or mirror vdev from a pool by relocating its data to other vdevs.
Err codemadness.org 70 i 34168 Includes the fix for PR 229614 that could cause processes to hang in zil_commit()
Err codemadness.org 70 i 34169 Boot Loader Changes:
Err codemadness.org 70 i 34170 The lua loader(8) has been updated to detect a list of installed kernels to boot.
Err codemadness.org 70 i 34171 The loader(8) has been updated to support geli(8) for all architectures and all disk-like devices.
Err codemadness.org 70 i 34172 The loader(8) has been updated to add support for loading Intel® microcode updates early during the boot process.Networking:
Err codemadness.org 70 i 34177
Err codemadness.org 70 i 34174 The pf(4) packet filter is now usable within a jail(8) using vnet(9).
Err codemadness.org 70 i 34175 The pf(4) packet filter has been updated to use rmlock(9) instead of rwlock(9), resulting in significant performance improvements.
Err codemadness.org 70 i 34176 The SO_REUSEPORT_LB option has been added to the network stack, allowing multiple programs or threads to bind to the same port, and incoming connections load balanced using a hash function.
###Abandon Linux. Move to FreeBSD or Illumos
Err codemadness.org 70 i 34186 Err codemadness.org 70 i 34187Err codemadness.org 70 i 34188Err codemadness.org 70 i 34211 Err codemadness.org 70 i 34212If you use GNU/Linux and you are only on opensource, you may be doing it wrong. Here’s why.
Err codemadness.org 70 i 34210
Err codemadness.org 70 i 34189 Is your company based on opensource based software only? Do you have a bunch of developers hitting some kind of server you have installed for them to “do their thing”? Being it for economical reasons (remember to donate), being it for philosophycal ones, you may have skipped good alternatives. The BSD’s and Illumos.
Err codemadness.org 70 i 34190 I bet you are running some sort of Debian, openSuSE or CentOS. It’s very discouraging having entered into the IT field recently and discover many of the people you meet do not even recognise the name BSD. Naming Solaris seems like naming the evil itself. The problem being many do not know why. They can’t point anything specific other than it’s fading out. This has recently shown strong when Oracle officials have stated development for new features has ceased and almost 90 % of developers for Solaris have been layed off. AIX seems alien to almost everybody unless you have a white beard. And all this is silly.
Err codemadness.org 70 i 34191 And here’s why. You are certainly missing two important features that FreeBSD and Illumos derivatives are enjoying. A full virtualization technology, much better and fully developed compared to the LXC containers in the Linux world, such as Jails on BSD, Zones in Solaris/Illumos, and the great ZFS file system which both share.
Err codemadness.org 70 i 34192 You have probably heard of a new Linux filesystem named Btrfs, which by the way, development has been dropped from the Red Hat side. Trying to emulate ZFS, Oracle started developing Btrfs file system before they acquired Sun (the original developer of ZFS), and SuSE joined the effort as well as Red Hat. It is not as well developed as ZFS and it hasn’t been tested in production environments as extensively as the former has. That leaves some uncertainty on using it or not. Red Hat leaving it aside does add some more. Although some organizations have used it with various grades of success.
Err codemadness.org 70 i 34193 But why is this anyhow interesting for a sysadmin or any organization? Well… FreeBSD (descendant of Berkeley UNIX) and SmartOS (based on Illumos) aglutinate some features that make administration easier, safer, faster and more reliable. The dream of any systems administrator.
Err codemadness.org 70 i 34194 To start, the ZFS filesystem combines the typical filesystem with a volume manager. It includes protection against corruption, snapshots and copy-on-write clones, as well as volume manager.
Err codemadness.org 70 i 34195 Jails is another interesting piece of technology. Linux folks usually associate this as a sort of chroot. It isn’t. It is somehow inspired by it but as you may know you can escape from a chroot environment with a blink of an eye. Jails are not called jails casually. The name has a purpose. Contain processes and programs within a defined and totally controlled environment. Jails appeared first in FreeBSD in the year 2000. Solaris Zones debuted on 2005 (now called containers) are the now proprietary version of those.
Err codemadness.org 70 i 34196 There are some other technologies on Linux such as Btrfs or Docker. But they have some caveats. Btrfs hasn’t been fully developed yet and it’s hasn’t been proved as much in production environments as ZFS has. And some problems have arisen recently although the developers are pushing the envelope. At some time they will match ZFS capabilities for sure. Docker is growing exponentially and it’s one of the cool technologies of modern times. The caveat is, as before, the development of this technology hasn’t been fully developed. Unlike other virtualization technologies this is not a kernel playing on top of another kernel. This is virtualization at the OS level, meaning differentiated environments can coexist on a single host, “hitting” the same unique kernel which controls and shares the resources. The problem comes when you put Docker on top of any other virtualization technology such as KVM or Xen. It breaks the purpose of it and has a performance penalty.
Err codemadness.org 70 i 34197 I have arrived into the IT field with very little knowledge, that is true. But what I see strikes me. Working in a bank has allowed me to see a big production environment that needs the highest of the availability and reliability. This is, sometimes, achieved by bruteforce. And it’s legitime and adequate. Redundancy has a reason and a purpose for example. But some other times it looks, it feels, like killing flies with cannons. More hardware, more virtual machines, more people, more of this, more of that. They can afford it, so they try to maintain the cost low but at the end of the day there is a chunky budget to back operations.
Err codemadness.org 70 i 34198 But here comes reality. You’re not a bank and you need to squeeze your investment as much as possible. By using FreeBSD jails you can avoid the performance penalty of KVM or Xen virtualization. Do you use VMWare or Hyper-V? You can avoid both and gain in performance. Not only that, control and manageability are equal as before, and sometimes easier to administer. There are four ways to operate them which can be divided in two categories. Hardcore and Human Being. For the Hardcore use the FreeBSD handbook and investigate as much as you can. For the Human Being way there are three options to use. Ezjail, Iocage and CBSD which are frameworks or programs as you may call to manage jails. I personally use Iocage but I have also used Ezjail.
Err codemadness.org 70 i 34199 How can you use jails on your benefit? Ever tried to configure some new software and failed miserably? You can have three different jails running at the same time with different configurations. Want to try a new configuration in a production piece of hardware without applying it on the final users? You can do that with a small jail while the production environment is on in another bigger, chunkier jail.
Err codemadness.org 70 i 34200 Want to divide the hardware as a replica of the division of the team/s you are working with? Want to sell virtual machines with bare metal performance? Do you want to isolate some piece of critical software or even data in a more controlled environment? Do you have different clients and you want to use the same hardware but you want to avoid them seeing each other at the same time you maintain performance and reliability?
Err codemadness.org 70 i 34201 Are you a developer and you have to have reliable and portable snapshots of your work? Do you want to try new options-designs without breaking your previous work, in a timeless fashion? You can work on something, clone the jail and apply the new ideas on the project in a matter of seconds. You can stop there, export the filesystem snapshot containing all the environment and all your work and place it on a thumbdrive to later import it on a big production system. Want to change that image properties such as the network stack interface and ip? This is just one command away from you.
Err codemadness.org 70 i 34202 But what properties can you assign to a jail and how can I manage them you may be wondering. Hostname, disk quota, i/o, memory, cpu limits, network isolation, network virtualization, snapshots and the manage of those, migration and root privilege isolation to name a few. You can also clone them and import and export them between different systems. Some of these things because of ZFS. Iocage is a python program to manage jails and it takes profit from ZFS advantages.
Err codemadness.org 70 i 34203 But FreeBSD is not Linux you may say. No it is not. There are no run levels. The systemd factor is out of this equation. This is so since the begginning. Ever wondered where did vi come from? The TCP/IP stack? Your beloved macOS from Apple? All this is coming from the FreeBSD project. If you are used to Linux your adaptation period with any BSD will be short, very short. You will almost feel at home. Used to packaged software using yum or apt-get? No worries. With pkgng, the package management tool used in FreeBSD has almost 27.000 compiled packages for you to use. Almost all software found on any of the important GNU/Linux distros can be found here. Java, Python, C, C++, Clang, GCC, Javascript frameworks, Ruby, PHP, MySQL and the major forks, etc. All this opensource software, and much more, is available at your fingertips.
Err codemadness.org 70 i 34204 I am a developer and… frankly my time is money and I appreciate both much more than dealing with systems configuration, etc. You can set a VM using VMWare or VirtualBox and play with barebones FreeBSD or you can use TrueOS (a derivative) which comes in a server version and a desktop oriented one. The latter will be easier for you to play with. You may be doing this already with Linux. There is a third and very sensible option. FreeNAS, developed by iXSystems. It is FreeBSD based and offers all these technologies with a GUI. VMWare, Hyper-V? Nowadays you can get your hands off the CLI and get a decent, usable, nice GUI.
Err codemadness.org 70 i 34205 You say you play on the cloud. The major players already include FreeBSD in their offerings. You can find it in Amazon AWS or Azure (with official Microsoft support contracts too!). You can also find it in DigitalOcean and other hosting providers. There is no excuse. You can use it at home, at the office, with old or new hardware and in the cloud as well. You can even pay for a support contract to use it. Joyent, the developers of SmartOS have their own cloud with different locations around the globe. Have a look on them too.
Err codemadness.org 70 i 34206 If you want the original of ZFS and zones you may think of Solaris. But it’s fading away. But it really isn’t. When Oracle bouth Sun many people ran away in an stampide fashion. Some of the good folks working at Sun founded new projects. One of these is Illumos. Joyent is a company formed by people who developed these technologies. They are a cloud operator, have been recently bought by Samsung and have a very competent team of people providing great tech solutions. They have developed an OS, called SmartOS (based on Illumos) with all these features. The source from this goes back to the early days of UNIX. Do you remember the days of OpenSolaris when Sun opensourced the crown jewels? There you have it. A modern opensource UNIX operating system with the roots in their original place and the head planted on today’s needs.
Err codemadness.org 70 i 34207 In conclusion. If you are on GNU/Linux and you only use opensource software you may be doing it wrong. And missing goodies you may need and like. Once you put your hands on them, trust me, you won’t look back. And if you have some “old fashioned” admins who know Solaris, you can bring them to a new profitable and exciting life with both systems.
Err codemadness.org 70 i 34208 Still not convinced? Would you have ever imagined Microsoft supporting Linux? Even loving it? They do love now FreeBSD. And not only that, they provide their own image in the Azure Cloud and you can get Microsoft support, payed support if you want to use the platform on Azure. Ain’t it… surprising? Convincing at all?
Err codemadness.org 70 i 34209 PS: I haven’t mentioned both softwares, FreeBSD and SmartOS do have a Linux translation layer. This means you can run Linux binaries on them and the program won’t cough at all. Since the ABI stays stable the only thing you need to run a Linux binary is a translation between the different system calls and the libraries. Remember POSIX? Choose your poison and enjoy it.
Err codemadness.org 70 i 34221Err codemadness.org 70 i 34223 Err codemadness.org 70 i 34224I’m assuming that readers have at least a basic knowledge of TCP/IP networking and some UNIX or UNIX-like systems, but not necessarily OpenBSD or FreeBSD. This post will therefore be light on details that aren’t OS specific and are likely to be encountered in normal use (e.g., how to use vi or another text editor.) For more information on these topics, read Absolute FreeBSD (3ed.) by Michael W. Lucas.
Err codemadness.org 70 i 34222
Err codemadness.org 70 i 34229Err codemadness.org 70 i 34231 Err codemadness.org 70 i 34232I’m redoing my DigitalOcean virtual machines (which they call droplets). My requirements are:
Err codemadness.org 70 i 34230
Err codemadness.org 70 i 34241Err codemadness.org 70 i 34246 Err codemadness.org 70 i 34247The last item is on the list because I don’t actually have a public IP address at home; my firewall’s external address is in the RFC 1918 space, and the entire apartment building shares a single public IPv4 address.1 (IPv6? Don’t I wish.) The end-state network will include one OpenBSD droplet providing firewall, router, and VPN services; and one FreeBSD droplet hosting multiple jailed services.
Err codemadness.org 70 i 34245
Err codemadness.org 70 i 34242 I’ll be providing access via these droplets to a NextCloud instance at home. A simple NAT on the DO router droplet isn’t going to work, because packets going from home to the internet would exit through the apartment building’s connection and not through the VPN. It’s possible that I could do work around this issue with packet tagging using the pf firewall, but HAProxy is simple to configure and unlikely to result in hard-to-debug problems. relayd is also an option, but doesn’t have the TLS parsing abilities of HAProxy, which I’ll be using later on.
Err codemadness.org 70 i 34243 Since this system includes jails running on a VPS, and they’ve got RFC 1918 addresses, I want them reachable from my home network. Once that’s done, I can access the private address space from anywhere through a VPN connection to the cloudy router.
Err codemadness.org 70 i 34244 The VPN itself will be of the IPsec variety. IPsec is the traditional enterprise VPN standard, and is even used for classified applications, but has a (somewhat-deserved) reputation for complexity, but recent versions of OpenBSD turn down the difficulty by quite a bit.
Err codemadness.org 70 i 34252Err codemadness.org 70 i 34255 Err codemadness.org 70 i 34256This VPN both separates internal network traffic from public traffic and uses encryption to prevent interception or tampering.
Err codemadness.org 70 i 34254
Err codemadness.org 70 i 34253 Once traffic has been encrypted, decrypting it without the key would, as Bruce Schneier once put it, require a computer built from something other than matter that occupies something other than space. Dyson spheres and a frakton of causality violation would possibly work, as would mathemagical technology that alters the local calendar such that P=NP.2 Black-bag jobs and/or suborning cloud provider employees doesn’t quite have that guarantee of impossibility, however. If you have serious security requirements, you’ll need to do better than a random blog entry.
##News Roundup
Err codemadness.org 70
i 34259 ###KLEAK: Practical Kernel Memory Disclosure Detection
Err codemadness.org 70 i 34262Err codemadness.org 70 i 34267 Err codemadness.org 70 i 34268Modern operating systems such as NetBSD, macOS, and Windows isolate their kernel from userspace programs to increase fault tolerance and to protect against malicious manipulations [10]. User space programs have to call into the kernel to request resources, via system calls or ioctls. This communication between user space and kernel space crosses a security boundary. Kernel memory disclosures - also known as kernel information leaks - denote the inadvertent copying of uninitialized bytes from kernel space to user space. Such disclosed memory may contain cryptographic keys, information about the kernel memory layout, or other forms of secret data. Even though kernel memory disclosures do not allow direct exploitation of a system, they lay the ground for it.
Err codemadness.org 70 i 34266
Err codemadness.org 70 i 34263 We introduce KLEAK, a simple approach to dynamically detect kernel information leaks. Simply said, KLEAK utilizes a rudimentary form of taint tracking: it taints kernel memory with marker values, lets the data travel through the kernel and scans the buffers exchanged between the kernel and the user space for these marker values. By using compiler instrumentation and rotating the markers at regular intervals, KLEAK significantly reduces the number of false positives, and is able to yield relevant results with little effort.
Err codemadness.org 70 i 34264 Our approach is practically feasible as we prove with an implementation for the NetBSD kernel. A small performance penalty is introduced, but the system remains usable. In addition to implementing KLEAK in the NetBSD kernel, we applied our approach to FreeBSD 11.2. In total, we detected 21 previously unknown kernel memory disclosures in NetBSD-current and FreeBSD 11.2, which were fixed subsequently. As a follow-up, the projects’ developers manually audited related kernel areas and identified dozens of other kernel memory disclosures.
Err codemadness.org 70 i 34265 The remainder of this paper is structured as follows. Section II discusses the bug class of kernel memory disclosures. Section III presents KLEAK to dynamically detect instances of this bug class. Section IV discusses the results of applying KLEAK to NetBSD-current and FreeBSD 11.2. Section V reviews prior research. Finally, Section VI concludes this paper.
###How To Create Official Synth Repo
Err codemadness.org 70 i 34271 Err codemadness.org 70 i 34272System Environment
Err codemadness.org 70 i 34275Make sure /usr/dports is updated and that it contains no cruft (git pull; git status). Remove any cruft.
Err codemadness.org 70 i 34278Make sure your ‘synth’ is up-to-date ‘pkg upgrade synth’. If you already updated your system you may have to build synth from scratch, from /usr/dports/ports-mgmt/synth.
Err codemadness.org 70 i 34281Make sure /etc/make.conf is clean.
Err codemadness.org 70 i 34284Update /usr/src to the current master, make sure there is no cruft in it
Err codemadness.org 70 i 34287Do a full buildworld, buildkernel, installkernel and installworld
Err codemadness.org 70 i 34290Reboot
Err codemadness.org 70 i 34293After the reboot, before proceeding, run ‘uname -a’ and make sure you are now on the desired release or development kernel.
Err codemadness.org 70 i 34296Synth Environment
Err codemadness.org 70 i 34299/usr/local/etc/synth/ contains the synth configuration. It should contain a synth.ini file (you may have to rename the template), and you will have to create or edit a LiveSystem-make.conf file.
Err codemadness.org 70 i 34302System requirements are hefty. Just linking chromium alone eats at least 30GB, for example. Concurrent c++ compiles can eat up to 2GB per process. We recommend at least 100GB of SSD based swap space and 300GB of free space on the filesystem.
Err codemadness.org 70 i 34305synth.ini should contain this. Plus modify the builders and jobs to suit your system. With 128G of ram, 30/30 or 40/25 works well. If you have 32G of ram, maybe 8/8 or less.
Err codemadness.org 70 i 34308; Take care when hand editing!
Err codemadness.org 70
i 34312
Err codemadness.org 70
i 34313 [Global Configuration]
Err codemadness.org 70
i 34314 profile_selected= LiveSystem
Err codemadness.org 70
i 34315
Err codemadness.org 70
i 34316 [LiveSystem]
Err codemadness.org 70
i 34317 Operating_system= DragonFly
Err codemadness.org 70
i 34318 Directory_packages= /build/synth/live_packages
Err codemadness.org 70
i 34319 Directory_repository= /build/synth/live_packages/All
Err codemadness.org 70
i 34320 Directory_portsdir= /build/synth/dports
Err codemadness.org 70
i 34321 Directory_options= /build/synth/options
Err codemadness.org 70
i 34322 Directory_distfiles= /usr/distfiles
Err codemadness.org 70
i 34323 Directory_buildbase= /build/synth/build
Err codemadness.org 70
i 34324 Directory_logs= /build/synth/logs
Err codemadness.org 70
i 34325 Directory_ccache= disabled
Err codemadness.org 70
i 34326 Directory_system= /
Err codemadness.org 70
i 34327 Number_of_builders= 30
Err codemadness.org 70
i 34328 Max_jobs_per_builder= 30
Err codemadness.org 70
i 34329 Tmpfs_workdir= true
Err codemadness.org 70
i 34330 Tmpfs_localbase= true
Err codemadness.org 70
i 34331 Display_with_ncurses= true
Err codemadness.org 70
i 34332 leverage_prebuilt= false
LICENSES_ACCEPTED= NONE
Make sure there is no other cruft in /usr/local/etc/synth/
Err codemadness.org 70 i 34343In the example above, the synth working dirs are in “/build/synth”. Make sure the base directories exist. Clean out any cruft for a fresh build from-scratch:
Err codemadness.org 70 i 34346rm -rf /build/synth/live_packages/*
Err codemadness.org 70
i 34350 rm -rf /build/synth/logs
Err codemadness.org 70
i 34351 mkdir /build/synth/logs
(optionally start a screen session)
Err codemadness.org 70
i 34358 synth everything
###Interview with founder and maintainer of GhostBSD, Eric Turgeon
Err codemadness.org 70 i 34369 Err codemadness.org 70 i 34370##Beastie Bits
Err codemadness.org 70 i 34393 Err codemadness.org 70 i 34394##Feedback/Questions
Err codemadness.org 70 i 34407 Err codemadness.org 70 i 34408DragonFly version 5.4 brings a new system compiler in GCC 8, improved NUMA support, a large of number network and virtual machine driver updates, and updates to video support. This release is 64-bit only, as with previous releases. Err codemadness.org 70 i 34698 The details of all commits between the 5.2 and 5.4 branches are available in the associated commit messages for 5.4.0rc and 5.4.0.Err codemadness.org 70 i 34699 Err codemadness.org 70 i 34700
MD5 (dfly-x86_64-5.4.0_REL.img) = 7277d7cffc92837c7d1c5dd11a11b98f Err codemadness.org 70
i 34720 MD5 (dfly-x86_64-5.4.0_REL.iso) = 6da7abf036fe9267479837b3c3078408 Err codemadness.org 70
i 34721 MD5 (dfly-x86_64-5.4.0_REL.img.bz2) = a77a072c864f4b72fd56b4250c983ff1 Err codemadness.org 70
i 34722 MD5 (dfly-x86_64-5.4.0_REL.iso.bz2) = 4dbfec6ccfc1d59c5049455db914d499DragonFly BSD is 64-bit only, as announced during the 3.8 release.Err codemadness.org 70 i 34727 Err codemadness.org 70 i 34728
In the early 2000s I thought I had seen the worst of the web - Java applets, Macromedia (>Adobe) Flash, animated GIFs, javascript snow that kept you warm in the winter by burning out your CPU, and so on. For a time we learned from these mistakes, and started putting the burden on the server-side - then with improvements in javascript engines we started abusing it again with JSON/AJAX and it all went down hill from there.Err codemadness.org 70 i 34739 Err codemadness.org 70 i 34740
Like cloud computing, blockchains, machine learning and a tonne of other a la mode technologies around today - most users and service providers don’t need websites that consume 1GB of memory processing JS and downloading 50MB of compressed data just to read Alice’s one-page travel blog or Bob’s notes on porting NetBSD to his blood-pressure monitor.Err codemadness.org 70 i 34741 Err codemadness.org 70 i 34742
Before the HTTP web we relied on Prestel/Minitel style systems, BBS systems, and arguably the most accessible of all - Gopher! Gopher was similar to the locally accessed AmigaGuide format, in that it allowed users to search and retrieve documents interactively, with links and cross-references. Its efficiency and distraction-free nature make it attractive to those who are tired of the invasive, clickbait, ad-filled, javascript-laden web2/3.x. But enough complaining and evangelism - here’s how to get your own Gopher Hole!Err codemadness.org 70 i 34743 Err codemadness.org 70 i 34744
Gophernicus is a modern gopher daemon which aims to be secure (although it still uses inetd -_-); it’s even in OpenBSD ports so at least we can rely on it to be reasonably audited.Err codemadness.org 70 i 34745 Err codemadness.org 70 i 34746
If you need a starting point with Gopher, SDF-EU’s wiki has a good article here.Err codemadness.org 70 i 34747 Err codemadness.org 70 i 34748
Finally, if you don’t like gopher(1) - there’s always lynx(1) or NCSA Mosaic!Err codemadness.org 70 i 34753 Err codemadness.org 70 i 34754
I’ve added TLS support to Gophernicus so you don’t need to use stunnel anymore. The code is ugly and unpolished though so I wouldn’t recommend for production use.Err codemadness.org 70 i 34759 Err codemadness.org 70 i 34760
I use a Huawei Matebook X as my primary OpenBSD laptop and one aspect of its hardware support has always been lacking: audio never played out of the right-side speaker. The speaker did actually work, but only in Windows and only after the Realtek Dolby Atmos audio driver from Huawei was installed. Under OpenBSD and Linux, and even Windows with the default Intel sound driver, audio only ever played out of the left speaker. Err codemadness.org 70 i 34772 Now, after some extensive reverse engineering and debugging with the help of VFIO on Linux, I finally have audio playing out of both speakers on OpenBSD.Err codemadness.org 70 i 34773 Err codemadness.org 70 i 34774
The Linux kernel has functionality called VFIO which enables direct access to a physical device (like a PCI card) from userspace, usually passing it to an emulator like QEMU. Err codemadness.org 70 i 34779 To my surprise, these days, it seems to be primarily by gamers who boot Linux, then use QEMU to run a game in Windows and use VFIO to pass the computer’s GPU device through to Windows. Err codemadness.org 70 i 34780 By using Linux and VFIO, I was able to boot Windows 10 inside of QEMU and pass my laptop’s PCI audio device through to Windows, allowing the Realtek audio drivers to natively control the audio device. Combined with QEMU’s tracing functionality, I was able to get a log of all PCI I/O between Windows and the PCI audio device.Err codemadness.org 70 i 34781 Err codemadness.org 70 i 34782
To use VFIO to pass-through a PCI device, it first needs to be stubbed out so the Linux kernel’s default drivers don’t attach to it. GRUB can be configured to instruct the kernel to ignore the PCI audio device (8086:9d71) and explicitly enable the Intel IOMMU driver by adding the following to /etc/default/grub and running update-grub Err codemadness.org 70 i 34787 With the audio device stubbed out, a new VFIO device can be created from it Err codemadness.org 70 i 34788 Then the VFIO device (00:1f.3) can be passed to QEMU Err codemadness.org 70 i 34789 I was using my own build of QEMU for this, due to some custom logging I needed (more on that later), but the default QEMU package should work fine. The events.txt was a file of all VFIO events I wanted logged (which was all of them). Err codemadness.org 70 i 34790 Since I was frequently killing QEMU and restarting it, Windows 10 wanted to go through its unexpected shutdown routine each time (and would sometimes just fail to boot again). To avoid this and to get a consistent set of logs each time, I used qemu-img to take a snapshot of a base image first, then boot QEMU with that snapshot. The snapshot just gets thrown away the next time qemu-img is run and Windows always starts from a consistent state. Err codemadness.org 70 i 34791 QEMU will now log each VFIO event which gets saved to a debug-output file. Err codemadness.org 70 i 34792 With a full log of all PCI I/O activity from Windows, I compared it to the output from OpenBSD and tried to find the magic register writes that enabled the second speaker. After days of combing through the logs and annotating them by looking up hex values in the documentation, diffing runtime register values, and even brute-forcing it by mechanically duplicating all PCI I/O activity in the OpenBSD driver, nothing would activate the right speaker. Err codemadness.org 70 i 34793 One strange thing that I noticed was if I booted Windows 10 in QEMU and it activated the speaker, then booted OpenBSD in QEMU without resetting the PCI device’s power in-between (as a normal system reboot would do), both speakers worked in OpenBSD and the configuration that the HDA controller presented was different, even without any changes in OpenBSD.Err codemadness.org 70 i 34794 Err codemadness.org 70 i 34795
A Primer on Intel HDA Err codemadness.org 70 i 34796 Most modern computers with integrated sound chips use an Intel High Definition Audio (HDA) Controller device, with one or more codecs (like the Realtek ALC269) hanging off of it. These codecs do the actual audio processing and communicate with DACs and ADCs to send digital audio to the connected speakers, or read analog audio from a microphone and convert it to a digital input stream. In my Huawei Matebook X, this is done through a Realtek ALC298 codec. Err codemadness.org 70 i 34797 On OpenBSD, these HDA controllers are supported by the azalia(4) driver, with all of the per-codec details in the lengthy azalia_codec.c file. This file has grown quite large with lots of codec- and machine-specific quirks to route things properly, toggle various GPIO pins, and unmute speakers that are for some reason muted by default. Err codemadness.org 70 i 34798 The azalia driver talks to the HDA controller and sets up various buffers and then walks the list of codecs. Each codec supports a number of widget nodes which can be interconnected in various ways. Some of these nodes can be reconfigured on the fly to do things like turning a microphone port into a headphone port. Err codemadness.org 70 i 34799 The newer Huawei Matebook X Pro released a few months ago is also plagued with this speaker problem, although it has four speakers and only two work by default. A fix is being proposed for the Linux kernel which just reconfigures those widget pins in the Intel HDA driver. Unfortunately no pin reconfiguration is enough to fix my Matebook X with its two speakers. Err codemadness.org 70 i 34800 While reading more documentation on the HDA, I realized there was a lot more activity going on than I was able to see through the PCI tracing. Err codemadness.org 70 i 34801 For speed and efficiency, HDA controllers use a DMA engine to transfer audio streams as well as the commands from the OS driver to the codecs. In the output above, the CORBWP=0; size=256 and RIRBRP=0, size=256 indicate the setup of the CORB (Command Output Ring Buffer) and RIRB (Response Input Ring Buffer) each with 256 entries. The HDA driver allocates a DMA address and then writes it to the two CORBLBASE and CORBUBASE registers, and again for the RIRB. Err codemadness.org 70 i 34802 When the driver wants to send a command to a codec, such as CORB_GET_PARAMETER with a parameter of COP_VOLUME_KNOB_CAPABILITIES, it encodes the codec address, the node index, the command verb, and the parameter, and then writes that value to the CORB ring at the address it set up with the controller at initialization time (CORBLBASE/CORBUBASE) plus the offset of the ring index. Once the command is on the ring, it does a PCI write to the CORBWP register, advancing it by one. This lets the controller know a new command is queued, which it then acts on and writes the response value on the RIRB ring at the same position as the command (but at the RIRB’s DMA address). It then generates an interrupt, telling the driver to read the new RIRBWP value and process the new results. Err codemadness.org 70 i 34803 Since the actual command contents and responses are handled through DMA writes and reads, these important values weren’t showing up in the VFIO PCI trace output that I had gathered. Time to hack QEMU.Err codemadness.org 70 i 34804 Err codemadness.org 70 i 34805
Since DMA activity wouldn’t show up through QEMU’s VFIO tracing and I obviously couldn’t get Windows to dump these values like I could in OpenBSD, I could make QEMU recognize the PCI write to the CORBWP register as an indication that a command has just been written to the CORB ring. Err codemadness.org 70 i 34810 My custom hack in QEMU adds some HDA awareness to remember the CORB and RIRB DMA addresses as they get programmed in the controller. Then any time a PCI write to the CORBWP register is done, QEMU fetches the new CORB command from DMA memory, decodes it into the codec address, node address, command, and parameter, and prints it out. When a PCI read of the RIRBWP register is requested, QEMU reads the response and prints the corresponding CORB command that it stored earlier. Err codemadness.org 70 i 34811 With this hack in place, I now had a full log of all CORB commands and RIRB responses sent to and read from the codec: Err codemadness.org 70 i 34812 An early version of this patch left me stumped for a few days because, even after submitting all of the same CORB commands in OpenBSD, the second speaker still didn’t work. It wasn’t until re-reading the HDA spec that I realized the Windows driver was submitting more than one command at a time, writing multiple CORB entries and writing a CORBWP value that was advanced by two. This required turning my CORB/RIRB reading into a for loop, reading each new command and response between the new CORBWP/RIRBWP value and the one previously seen. Err codemadness.org 70 i 34813 Sure enough, the magic commands to enable the second speaker were sent in these periods where it submitted more than one command at a time.Err codemadness.org 70 i 34814 Err codemadness.org 70 i 34815
The full log of VFIO PCI activity from the Windows driver was over 65,000 lines and contained 3,150 CORB commands, which is a lot to sort through. It took me a couple more days to reduce that down to a small subset that was actually required to activate the second speaker, and that could only be done through trial and error:Err codemadness.org 70 i 34820 Err codemadness.org 70 i 34821
This required a dozen or so iterations because sometimes I’d comment out too many commands and the right speaker would stop working. Other times the combination of commands would hang the controller and it wouldn’t process any further commands. At one point the combination of commands actually flipped the channels around so the right channel audio was playing through the left speaker.Err codemadness.org 70 i 34831 Err codemadness.org 70 i 34832
After about a week of this routine, I ended up with a list of 662 CORB commands that are needed to get the second speaker working. Based on the number of repeated-but-slightly-different values written with the 0x500 and 0x400 commands, I’m guessing this is some kind of training data and that this is doing the full Dolby/Atmos system initialization, not just turning on the second speaker, but I could be completely wrong. Err codemadness.org 70 i 34837 In any case, the stereo sound from OpenBSD is wonderful now and I can finally stop downmixing everything to mono to play from the left speaker. In case you ever need to do this, sndiod can be run with -c 0:0 to reduce the channels to one. Err codemadness.org 70 i 34838 Due to the massive size of the code needed for this quirk, I’m not sure if I’ll be committing it upstream in OpenBSD or just saving it for my own tree. But at least now the hardware support chart for my Matebook is all yeses for the things I care about. Err codemadness.org 70 i 34839 I’ve also updated the Linux bug report that I opened before venturing down this path, hoping one of the maintainers of that HDA code that works at Intel or Realtek knew of a solution I could just port to OpenBSD. I’m curious to see what they’ll do with it.Err codemadness.org 70 i 34840 Err codemadness.org 70 i 34841
The UNIX® system is an old operating system, possibly older than many of the readers of this post. However, despite its age, it still has not been open sourced completely. In this post, I will try to detail which parts of which UNIX systems have not yet been open sourced. I will focus on the legal situation in Germany in particular, taking it representative of European law in general – albeit that is a stretch, knowing the diversity of European jurisdictions. Please note that familiarity with basic terms of copyright law is assumed.Err codemadness.org 70 i 34850 Err codemadness.org 70 i 34851
The term “Ancient UNIX” refers to the versions of UNIX up to and including Seventh Edition UNIX (1979) including the 32V port to the VAX. Ancient UNIX was created at Bell Laboratories, a subsidiary of AT&T at the time. It was later transferred of the AT&T UNIX Support Group, then AT&T Information Systems and finally the AT&T subsidiary UNIX System Laboratories, Inc. (USL). The legal situation differs between the United States of America and Germany. Err codemadness.org 70 i 34856 In a ruling as part of the UNIX System Laboratories, Inc. v. Berkeley Software Design, Inc. (USL v. BSDi) case, a U.S. court found that USL had no copyright to the Seventh Edition UNIX system and 32V – arguably, by extension, all earlier versions of Ancient UNIX as well – because USL/AT&T had failed to affix copyright notices and could not demonstrate a trade secret. Due to the obsessive tendency of U.S. courts to consider themselves bound to precedents (cf. the infamous Pierson v. Post case), it can be reasonably expected that this ruling would be honored and applied in subsequent cases. Thus under U.S. law, Ancient UNIX can be safely assumed to belong in the public domain. Err codemadness.org 70 i 34857 The situation differs in Germany. Unlike the U.S., copyright never needed registration in order to exist. Computer programs are works in the sense of the German 1965 Act on Copyright and Related Rights (Copyright Act, henceforth CopyA) as per CopyA § 2(1) no. 1. Even prior to the amendment of CopyA § 2(1) to include computer programs, computer programs have been recognized as copyrightable works by the German Supreme Court (BGHZ 112, 264 Betriebssystem, no. 19); CopyA § 137d(1) rightly clarifies that. The copyright holder at 1979 would still have been USL via Bell Labs and AT&T. Copyright of computer programs is transferred to the employer upon creation under CopyA § 69(1). Err codemadness.org 70 i 34858 Note that this does not affect expiry (Daniel Kaboth/Benjamin Spies, commentary on CopyA §§ 69a‒69g, in: Hartwig Ahlberg/Horst-Peter Götting (eds.), Urheberrecht: UrhG, KUG, VerlG, VGG, Kommentar, 4th ed., C. H. Beck, 2018, no. 16 ad CopyA § 69b; cf. Bundestag-Drucksache [BT-Drs.] 12/4022, p. 10). Expiry occurs 70 years after the death of the (co-)author that died most recently as per CopyA § 65(1) and 64; this has been the case since at least the 1960s, meaning there is no way for copyright to have expired already (old version, as per Bundesgesetzblatt Part I No. 51 of September 16, 1965, pp. 1273‒1294). Err codemadness.org 70 i 34859 In Germany, private international law applies the so-called “Territorialitätsprinzip” for intellectual property rights. This means that the effect of an intellectual property right is limited to the territory of a state (Anne Lauber-Rönsberg, KollisionsR, in: Hartwig Ahlberg/Horst-Peter Götting (eds.), ibid., pp. 2241 et seqq., no. 4). Additionally, the “Schutzlandprinzip” applies; this means that protection of intellectual property follows the lex loci protectionis, i.e. the law of the country for which protection is sought (BGH GRUR 2015, 264 HiHotel II, no. 25; BGH GRUR 2003, 328 Sender Felsberg, no. 24), albeit this is criticized in parts of doctrine (Lauber-Rönsberg, ibid., no. 10). The “Schutzlandprinzip” requires that the existence of an intellectual property right be verified as well (BGH ZUM 2016, 522 Wagenfeld-Leuchte II, no. 19). Err codemadness.org 70 i 34860 Thus, in Germany, copyright on Ancient UNIX is still alive and well. Who has it, though? A ruling by the U.S. Court of Appeals, Tenth Circuit, in the case of The SCO Group, Inc. v. Novell, Inc. (SCO v. Novell) in the U.S. made clear that Novell owns the rights to System V – thus presumably UNIX System III as well – and Ancient UNIX, though SCO acquired enough rights to develop UnixWare/OpenServer (Ruling 10-4122 [D.C. No. 2:04-CV-00139-TS], pp. 19 et seq.). Novell itself was purchased by the Attachmate Group, which was in turn acquired by the COBOL vendor Micro Focus. Therefore, the rights to SVRX and – outside the U.S. – are with Micro Focus right now. If all you care about is the U.S., you can stop reading about Ancient UNIX here. Err codemadness.org 70 i 34861 So how does the Caldera license factor into all of this? For some context, the license was issued January 23, 2002 and covers Ancient UNIX (V1 through V7 including 32V), specifically excluding System III and System V. Caldera, Inc. was founded in 1994. The Santa Cruz Operation, Inc. sold its rights to UNIX to Caldera in 2001, renamed itself to Tarantella Inc. and Caldera renamed itself The SCO Group. Nemo plus iuris ad alium transferre potest quam ipse habet; no one can transfer more rights than he has. The question now becomes whether Caldera had the rights to issue the Caldera license. Err codemadness.org 70 i 34862 I’ve noted it above but it needs restating: Foreign decisions are not necessarily accepted in Germany due to the “Territorialitätsprinzip” and “Schutzlandprinzip” – however, I will be citing a U.S. ruling for its assessment of the facts for the sake of simplicity. As per ruling 10-4122, “The district court found the parties intended for SCO to serve as Novell’s agent with respect to the old SVRX licenses and the only portion of the UNIX business transferred outright under the APA [asset purchase agreement] was the ability to exploit and further develop the newer UnixWare system. SCO was able to protect that business because it was able to copyright its own improvements to the system. The only reason to protect the earlier UNIX code would be to protect the existing SVRX licenses, and the court concluded Novell retained ultimate control over that portion of the business under the APA.” The relevant agreements consist of multiple pieces: Err codemadness.org 70 i 34863 the base Asset Purchase Agreement “APA” (Part I) Err codemadness.org 70 i 34864 the base Asset Purchase Agreement “APA” (Part II) Err codemadness.org 70 i 34865 the Operating Agremeent and Amendment 1 to the APA Err codemadness.org 70 i 34866 the Amendment 2 to the APA Err codemadness.org 70 i 34867 The APA dates September 19, 1995, from before the Caldera license. Caldera cannot possibly have acquired rights that The Santa Cruz Operation, Inc. itself never had. Furthermore, I’ve failed to find any mention of Ancient UNIX; all that is transferred is rights to SVRX. Overall, I believe that the U.S. courts’ assesment of the facts represents the situation accurately. Thus for all intents and purposes, UNIX up to and including System V remained with Novell/Attachmate/Micro Focus. Caldera therefore never had any rights to Ancient UNIX, which means it never had the rights to issue the Caldera license. The Caldera license is null and void – in the U.S. because the copyright has been lost due to formalities, everywhere else because Caldera never had the rights to issue it. Err codemadness.org 70 i 34868 The first step to truly freeing UNIX would this be to get Micro Focus to re-issue the Caldera license for Ancient UNIX, ideally it would now also include System III and System V.Err codemadness.org 70 i 34869 Err codemadness.org 70 i 34870
Another operating system near UNIX is of interest. The USL v. BSDi lawsuit includes two parties: USL, which we have seen above, and Berkeley Software Design, Inc. BSDi sold BSD/386 (later BSD/OS), which was a derivative of 4.4BSD. The software parts of the BSDi company were acquired by Wind River Systems, whereas the hardware parts went to iXsystems. Copyright is not disputed there, though Wind River Systems ceased selling BSD/OS products 15 years ago, in 2003. In addition, Wind River System let their trademark on BSD expire, though this is without consequence for copyright. Err codemadness.org 70 i 34875 BSD/OS is notable in the sense that it powered much of early internet infrastructure. Traces of its legacy can still be found on Richard Stevens’ FAQ. Err codemadness.org 70 i 34876 To truly make UNIX history free, BSD/OS would arguably also need to see a source code release. BSD/OS at least in its earliest releases under BSDi would ship with source code, though under a non-free license, far from BSD or even GPL licensing.Err codemadness.org 70 i 34877 Err codemadness.org 70 i 34878
The fate of System V as a whole is difficult to determine. Various licenses have been granted to a number of vendors (Dell UNIX comes to mind; HP for HP-UX, IBM for AIX, SGI UNIX, etc.). Sun released OpenSolaris – notoriously, Oracle closed the source to Solaris again after its release –, which is a System V Release 4 descendant. However, this means nothing for the copyright or licensing status of System V itself. Presumably, the rights with System V still remain with Novell (now Micro Focus): SCO managed to sublicense rights to develop and sell UnixWare/OpenServer, themselves System V/III descendants, to unXis, Inc. (now known as Xinuos, Inc.), which implies that Xinuos is not the copyright holder of System V. Err codemadness.org 70 i 34883 Obviously, to free UNIX, System V and its entire family of descendants would also need to be open sourced. However, I expect tremendous resistance on part of all the companies mentioned. As noted in the “Ancient UNIX” section, Micro Focus alone would probably be sufficient to release System V, though this would mean nothing for the other commercial System V derivatives.Err codemadness.org 70 i 34884 Err codemadness.org 70 i 34885
The fate of Bell Labs would be a different one; it would go on to be purchased by Lucent, now part of Nokia. After commercial UNIX got separated out to USL, Research UNIX would continue to exist inside of Bell Labs. Research UNIX V8, V9 and V10 were not quite released by Alcatel-Lucent USA Inc. and Nokia in 2017. Err codemadness.org 70 i 34890 However, this is merely a notice that the companies involved will not assert their copyrights only with respect to any non-commercial usage of the code. It is still not possible, over 30 years later, to freely use the V8 code.Err codemadness.org 70 i 34891 Err codemadness.org 70 i 34892
A small note about patents: Some technologies used in newer iterations of the UNIX system (in particular the System V derivatives) may be encumbered with software patents. An open source license will not help against patent infringement claims. However, the patents on anything used in the historical operating systems will certainly have expired by now. In addition, European readers can ignore this entirely – software patents just aren’t a thing.Err codemadness.org 70 i 34898 Err codemadness.org 70 i 34899
As of last year, there was effectively only a single solution in the Route Server vendor market: the BIRD Internet routing daemon. NIC.CZ (the organisation developing BIRD) has done fantastic work on maintaining their BGP-4 implementation, however, it’s not healthy to have virtually every Internet Exchange Point (IXP) in the RIPE NCC service region depend on a single open source project. The current situation can be compared to the state of the DNS root nameservers back in 2002 - their dependence on the BIND nameserver daemon and the resulting development of NSD as an alternative by NLnet, in cooperation with the RIPE NCC. Err codemadness.org 70 i 34908 OpenBGPD used to be one of the most popular Route Server implementations until the early 2010s. OpenBGPD’s main problem was that its performance couldn’t keep up with the Internet’s growth, so it lost market share. An analysis by Job Snijders suggested that a modernised OpenBGPD distribution would be a most viable option to regain diversity on the Route Server level.Err codemadness.org 70 i 34909 Err codemadness.org 70 i 34910
The following main missing features were identified in OpenBGPD:Err codemadness.org 70 i 34915 Err codemadness.org 70 i 34916
In previous versions of OpenBGPD, the filtering performance didn’t allow proper filtering of all EBGP sessions. Current best practice at IXP Route Servers is to carefully evaluate and validate of all routes learned from EBGP peers. The OpenBGPD ruleset required to do correct filtering (in many deployment scenarios) was simply too lengthy - and negatively impacted service performance during configuration reloads. While filtering performance is the biggest bottleneck, general improvements to the Routing Information Base were also made to improve scalability. IXP Route Servers with a few hundred peering sessions are commonplace and adding new sessions shouldn’t impact the Route Servers’ service to other peers. We found that performance was the most pressing issue that needed to be tackled.Err codemadness.org 70 i 34921 Err codemadness.org 70 i 34922
As we’ve seen, Internet operators are moving to adopt RPKI based BGP Origin Validation. While it was theoretically possible to emulate RFC 6811-style Origin Validation in previous versions of OpenBGPD, the required configuration wasn’t optimised for performance and wasn’t user friendly. We believe that BGP Origin Validation should be as easy as possible - this requires BGP-4 vendors to implement native, optimised routines for Origin Validation. Of course, enabling Origin Validation shouldn’t have an impact on performance either when processing BGP updates or when updating the Route Origin Authorisation (ROA) table itself.Err codemadness.org 70 i 34927 Err codemadness.org 70 i 34928
OpenBGPD is an integral part of OpenBSD, but IXPs may prefer to run their services infrastructure on an operating system of their choice. Making sure that there’s a portable OpenBGPD version which follows the OpenBSD project release cycle will give IXPs this option.Err codemadness.org 70 i 34933 Err codemadness.org 70 i 34934
By addressing the issues mentioned above, we could bring back OpenBGPD as a viable Route Server implementation. Err codemadness.org 70 i 34939 Since I was one of the core OpenBGPD developers, I was asked if I wanted to pick up this project again. Thanks to the funding from the RIPE NCC Project Fund, this was possible. Starting in June 2018, I worked full time on this important community project. Over the last few months, many of the problems are already addressed and are now part of the OpenBSD 6.4 release. So far, 154 commits were made to OpenBGPD during the 6.4 development cycle - around 8% of all commits ever to OpenBGPD! This shows that due to funding and dedicated resources, a lot of work could be pushed into the latest release of OpenBGPD.Err codemadness.org 70 i 34940 Err codemadness.org 70 i 34941
The OpenBGPD version, as part of OpenBSD 6.4 release, demonstrates great progress. Even though there have been many changes to the core of OpenBGPD, the released version is as solid and reliable as previous releases and the many bug fixes and improvements make this the best OpenBGPD release so far. The changes in the filter language allow users to write more efficient rulesets while the introduction of RPKI origination validation fixes an important missing feature. For IXPs, OpenBGPD now is an alternative again. There are still open issues, but the gap is closing!Err codemadness.org 70 i 34946 Err codemadness.org 70 i 34947
The following changes should be highlighted:Err codemadness.org 70 i 34952 Err codemadness.org 70 i 34953
Users can only benefit from the changes introduced in OpenBGPD 6.4 when the surrounding 3rd party tools are adjusted accordingly. Two opensource projects such as bgpq3 and arouteserver are frequently used by network operators and IXPs to generate BGP configurations. Thanks to our contributions to those projects, we were able to get them ready for all the new features in OpenBGPD.Err codemadness.org 70 i 34964 Err codemadness.org 70 i 34965
A sizeable chunk of work still left on the table is the rework of the RIB data structures in OpenBGPD - these haven’t been changed since the initial design of OpenBGPD in 2003. There’s currently ongoing work (in small steps, to avoid jeopardising the stability of OpenBGPD) to modernise these data-structures. The goal is to provide better decoupling of the filter step from storing RIB database changes, to pave the way to multi-threaded operations at a later point.Err codemadness.org 70 i 34972 Err codemadness.org 70 i 34973
It’s been incredibly productive to create an environment where a core developer is allowed to work full time on the OpenBGPD code base. However, it’s important to note there still is room for a number of new features to help improve its operational capabilities (such as BMP, RFC 7313, ADD_PATH, etc). It’d be beneficial to the Internet community at large if we can extend Claudio Jeker’s involvement for another year. Open source software doesn’t grow on trees! Strategic investments are the only way to keep OpenBGPD’s roadmap aligned with Internet growth and operator requirements.Err codemadness.org 70 i 34979 Err codemadness.org 70 i 34980
DragonFly version 5.4 brings a new system compiler in GCC 8, improved NUMA support, a large of number network and virtual machine driver updates, and updates to video support. This release is 64-bit only, as with previous releases. Err codemadness.org 70 i 35022 The details of all commits between the 5.2 and 5.4 branches are available in the associated commit messages for 5.4.0rc and 5.4.0.Err codemadness.org 70 i 35023 Err codemadness.org 70 i 35024
MD5 (dfly-x86_64-5.4.0_REL.img) = 7277d7cffc92837c7d1c5dd11a11b98f Err codemadness.org 70
i 35044 MD5 (dfly-x86_64-5.4.0_REL.iso) = 6da7abf036fe9267479837b3c3078408 Err codemadness.org 70
i 35045 MD5 (dfly-x86_64-5.4.0_REL.img.bz2) = a77a072c864f4b72fd56b4250c983ff1 Err codemadness.org 70
i 35046 MD5 (dfly-x86_64-5.4.0_REL.iso.bz2) = 4dbfec6ccfc1d59c5049455db914d499DragonFly BSD is 64-bit only, as announced during the 3.8 release.Err codemadness.org 70 i 35051 Err codemadness.org 70 i 35052
In the early 2000s I thought I had seen the worst of the web - Java applets, Macromedia (>Adobe) Flash, animated GIFs, javascript snow that kept you warm in the winter by burning out your CPU, and so on. For a time we learned from these mistakes, and started putting the burden on the server-side - then with improvements in javascript engines we started abusing it again with JSON/AJAX and it all went down hill from there.Err codemadness.org 70 i 35063 Err codemadness.org 70 i 35064
Like cloud computing, blockchains, machine learning and a tonne of other a la mode technologies around today - most users and service providers don’t need websites that consume 1GB of memory processing JS and downloading 50MB of compressed data just to read Alice’s one-page travel blog or Bob’s notes on porting NetBSD to his blood-pressure monitor.Err codemadness.org 70 i 35065 Err codemadness.org 70 i 35066
Before the HTTP web we relied on Prestel/Minitel style systems, BBS systems, and arguably the most accessible of all - Gopher! Gopher was similar to the locally accessed AmigaGuide format, in that it allowed users to search and retrieve documents interactively, with links and cross-references. Its efficiency and distraction-free nature make it attractive to those who are tired of the invasive, clickbait, ad-filled, javascript-laden web2/3.x. But enough complaining and evangelism - here’s how to get your own Gopher Hole!Err codemadness.org 70 i 35067 Err codemadness.org 70 i 35068
Gophernicus is a modern gopher daemon which aims to be secure (although it still uses inetd -_-); it’s even in OpenBSD ports so at least we can rely on it to be reasonably audited.Err codemadness.org 70 i 35069 Err codemadness.org 70 i 35070
If you need a starting point with Gopher, SDF-EU’s wiki has a good article here.Err codemadness.org 70 i 35071 Err codemadness.org 70 i 35072
Finally, if you don’t like gopher(1) - there’s always lynx(1) or NCSA Mosaic!Err codemadness.org 70 i 35077 Err codemadness.org 70 i 35078
I’ve added TLS support to Gophernicus so you don’t need to use stunnel anymore. The code is ugly and unpolished though so I wouldn’t recommend for production use.Err codemadness.org 70 i 35083 Err codemadness.org 70 i 35084
I use a Huawei Matebook X as my primary OpenBSD laptop and one aspect of its hardware support has always been lacking: audio never played out of the right-side speaker. The speaker did actually work, but only in Windows and only after the Realtek Dolby Atmos audio driver from Huawei was installed. Under OpenBSD and Linux, and even Windows with the default Intel sound driver, audio only ever played out of the left speaker. Err codemadness.org 70 i 35096 Now, after some extensive reverse engineering and debugging with the help of VFIO on Linux, I finally have audio playing out of both speakers on OpenBSD.Err codemadness.org 70 i 35097 Err codemadness.org 70 i 35098
The Linux kernel has functionality called VFIO which enables direct access to a physical device (like a PCI card) from userspace, usually passing it to an emulator like QEMU. Err codemadness.org 70 i 35103 To my surprise, these days, it seems to be primarily by gamers who boot Linux, then use QEMU to run a game in Windows and use VFIO to pass the computer’s GPU device through to Windows. Err codemadness.org 70 i 35104 By using Linux and VFIO, I was able to boot Windows 10 inside of QEMU and pass my laptop’s PCI audio device through to Windows, allowing the Realtek audio drivers to natively control the audio device. Combined with QEMU’s tracing functionality, I was able to get a log of all PCI I/O between Windows and the PCI audio device.Err codemadness.org 70 i 35105 Err codemadness.org 70 i 35106
To use VFIO to pass-through a PCI device, it first needs to be stubbed out so the Linux kernel’s default drivers don’t attach to it. GRUB can be configured to instruct the kernel to ignore the PCI audio device (8086:9d71) and explicitly enable the Intel IOMMU driver by adding the following to /etc/default/grub and running update-grub Err codemadness.org 70 i 35111 With the audio device stubbed out, a new VFIO device can be created from it Err codemadness.org 70 i 35112 Then the VFIO device (00:1f.3) can be passed to QEMU Err codemadness.org 70 i 35113 I was using my own build of QEMU for this, due to some custom logging I needed (more on that later), but the default QEMU package should work fine. The events.txt was a file of all VFIO events I wanted logged (which was all of them). Err codemadness.org 70 i 35114 Since I was frequently killing QEMU and restarting it, Windows 10 wanted to go through its unexpected shutdown routine each time (and would sometimes just fail to boot again). To avoid this and to get a consistent set of logs each time, I used qemu-img to take a snapshot of a base image first, then boot QEMU with that snapshot. The snapshot just gets thrown away the next time qemu-img is run and Windows always starts from a consistent state. Err codemadness.org 70 i 35115 QEMU will now log each VFIO event which gets saved to a debug-output file. Err codemadness.org 70 i 35116 With a full log of all PCI I/O activity from Windows, I compared it to the output from OpenBSD and tried to find the magic register writes that enabled the second speaker. After days of combing through the logs and annotating them by looking up hex values in the documentation, diffing runtime register values, and even brute-forcing it by mechanically duplicating all PCI I/O activity in the OpenBSD driver, nothing would activate the right speaker. Err codemadness.org 70 i 35117 One strange thing that I noticed was if I booted Windows 10 in QEMU and it activated the speaker, then booted OpenBSD in QEMU without resetting the PCI device’s power in-between (as a normal system reboot would do), both speakers worked in OpenBSD and the configuration that the HDA controller presented was different, even without any changes in OpenBSD.Err codemadness.org 70 i 35118 Err codemadness.org 70 i 35119
A Primer on Intel HDA Err codemadness.org 70 i 35120 Most modern computers with integrated sound chips use an Intel High Definition Audio (HDA) Controller device, with one or more codecs (like the Realtek ALC269) hanging off of it. These codecs do the actual audio processing and communicate with DACs and ADCs to send digital audio to the connected speakers, or read analog audio from a microphone and convert it to a digital input stream. In my Huawei Matebook X, this is done through a Realtek ALC298 codec. Err codemadness.org 70 i 35121 On OpenBSD, these HDA controllers are supported by the azalia(4) driver, with all of the per-codec details in the lengthy azalia_codec.c file. This file has grown quite large with lots of codec- and machine-specific quirks to route things properly, toggle various GPIO pins, and unmute speakers that are for some reason muted by default. Err codemadness.org 70 i 35122 The azalia driver talks to the HDA controller and sets up various buffers and then walks the list of codecs. Each codec supports a number of widget nodes which can be interconnected in various ways. Some of these nodes can be reconfigured on the fly to do things like turning a microphone port into a headphone port. Err codemadness.org 70 i 35123 The newer Huawei Matebook X Pro released a few months ago is also plagued with this speaker problem, although it has four speakers and only two work by default. A fix is being proposed for the Linux kernel which just reconfigures those widget pins in the Intel HDA driver. Unfortunately no pin reconfiguration is enough to fix my Matebook X with its two speakers. Err codemadness.org 70 i 35124 While reading more documentation on the HDA, I realized there was a lot more activity going on than I was able to see through the PCI tracing. Err codemadness.org 70 i 35125 For speed and efficiency, HDA controllers use a DMA engine to transfer audio streams as well as the commands from the OS driver to the codecs. In the output above, the CORBWP=0; size=256 and RIRBRP=0, size=256 indicate the setup of the CORB (Command Output Ring Buffer) and RIRB (Response Input Ring Buffer) each with 256 entries. The HDA driver allocates a DMA address and then writes it to the two CORBLBASE and CORBUBASE registers, and again for the RIRB. Err codemadness.org 70 i 35126 When the driver wants to send a command to a codec, such as CORB_GET_PARAMETER with a parameter of COP_VOLUME_KNOB_CAPABILITIES, it encodes the codec address, the node index, the command verb, and the parameter, and then writes that value to the CORB ring at the address it set up with the controller at initialization time (CORBLBASE/CORBUBASE) plus the offset of the ring index. Once the command is on the ring, it does a PCI write to the CORBWP register, advancing it by one. This lets the controller know a new command is queued, which it then acts on and writes the response value on the RIRB ring at the same position as the command (but at the RIRB’s DMA address). It then generates an interrupt, telling the driver to read the new RIRBWP value and process the new results. Err codemadness.org 70 i 35127 Since the actual command contents and responses are handled through DMA writes and reads, these important values weren’t showing up in the VFIO PCI trace output that I had gathered. Time to hack QEMU.Err codemadness.org 70 i 35128 Err codemadness.org 70 i 35129
Since DMA activity wouldn’t show up through QEMU’s VFIO tracing and I obviously couldn’t get Windows to dump these values like I could in OpenBSD, I could make QEMU recognize the PCI write to the CORBWP register as an indication that a command has just been written to the CORB ring. Err codemadness.org 70 i 35134 My custom hack in QEMU adds some HDA awareness to remember the CORB and RIRB DMA addresses as they get programmed in the controller. Then any time a PCI write to the CORBWP register is done, QEMU fetches the new CORB command from DMA memory, decodes it into the codec address, node address, command, and parameter, and prints it out. When a PCI read of the RIRBWP register is requested, QEMU reads the response and prints the corresponding CORB command that it stored earlier. Err codemadness.org 70 i 35135 With this hack in place, I now had a full log of all CORB commands and RIRB responses sent to and read from the codec: Err codemadness.org 70 i 35136 An early version of this patch left me stumped for a few days because, even after submitting all of the same CORB commands in OpenBSD, the second speaker still didn’t work. It wasn’t until re-reading the HDA spec that I realized the Windows driver was submitting more than one command at a time, writing multiple CORB entries and writing a CORBWP value that was advanced by two. This required turning my CORB/RIRB reading into a for loop, reading each new command and response between the new CORBWP/RIRBWP value and the one previously seen. Err codemadness.org 70 i 35137 Sure enough, the magic commands to enable the second speaker were sent in these periods where it submitted more than one command at a time.Err codemadness.org 70 i 35138 Err codemadness.org 70 i 35139
The full log of VFIO PCI activity from the Windows driver was over 65,000 lines and contained 3,150 CORB commands, which is a lot to sort through. It took me a couple more days to reduce that down to a small subset that was actually required to activate the second speaker, and that could only be done through trial and error:Err codemadness.org 70 i 35144 Err codemadness.org 70 i 35145
This required a dozen or so iterations because sometimes I’d comment out too many commands and the right speaker would stop working. Other times the combination of commands would hang the controller and it wouldn’t process any further commands. At one point the combination of commands actually flipped the channels around so the right channel audio was playing through the left speaker.Err codemadness.org 70 i 35155 Err codemadness.org 70 i 35156
After about a week of this routine, I ended up with a list of 662 CORB commands that are needed to get the second speaker working. Based on the number of repeated-but-slightly-different values written with the 0x500 and 0x400 commands, I’m guessing this is some kind of training data and that this is doing the full Dolby/Atmos system initialization, not just turning on the second speaker, but I could be completely wrong. Err codemadness.org 70 i 35161 In any case, the stereo sound from OpenBSD is wonderful now and I can finally stop downmixing everything to mono to play from the left speaker. In case you ever need to do this, sndiod can be run with -c 0:0 to reduce the channels to one. Err codemadness.org 70 i 35162 Due to the massive size of the code needed for this quirk, I’m not sure if I’ll be committing it upstream in OpenBSD or just saving it for my own tree. But at least now the hardware support chart for my Matebook is all yeses for the things I care about. Err codemadness.org 70 i 35163 I’ve also updated the Linux bug report that I opened before venturing down this path, hoping one of the maintainers of that HDA code that works at Intel or Realtek knew of a solution I could just port to OpenBSD. I’m curious to see what they’ll do with it.Err codemadness.org 70 i 35164 Err codemadness.org 70 i 35165
The UNIX® system is an old operating system, possibly older than many of the readers of this post. However, despite its age, it still has not been open sourced completely. In this post, I will try to detail which parts of which UNIX systems have not yet been open sourced. I will focus on the legal situation in Germany in particular, taking it representative of European law in general – albeit that is a stretch, knowing the diversity of European jurisdictions. Please note that familiarity with basic terms of copyright law is assumed.Err codemadness.org 70 i 35174 Err codemadness.org 70 i 35175
The term “Ancient UNIX” refers to the versions of UNIX up to and including Seventh Edition UNIX (1979) including the 32V port to the VAX. Ancient UNIX was created at Bell Laboratories, a subsidiary of AT&T at the time. It was later transferred of the AT&T UNIX Support Group, then AT&T Information Systems and finally the AT&T subsidiary UNIX System Laboratories, Inc. (USL). The legal situation differs between the United States of America and Germany. Err codemadness.org 70 i 35180 In a ruling as part of the UNIX System Laboratories, Inc. v. Berkeley Software Design, Inc. (USL v. BSDi) case, a U.S. court found that USL had no copyright to the Seventh Edition UNIX system and 32V – arguably, by extension, all earlier versions of Ancient UNIX as well – because USL/AT&T had failed to affix copyright notices and could not demonstrate a trade secret. Due to the obsessive tendency of U.S. courts to consider themselves bound to precedents (cf. the infamous Pierson v. Post case), it can be reasonably expected that this ruling would be honored and applied in subsequent cases. Thus under U.S. law, Ancient UNIX can be safely assumed to belong in the public domain. Err codemadness.org 70 i 35181 The situation differs in Germany. Unlike the U.S., copyright never needed registration in order to exist. Computer programs are works in the sense of the German 1965 Act on Copyright and Related Rights (Copyright Act, henceforth CopyA) as per CopyA § 2(1) no. 1. Even prior to the amendment of CopyA § 2(1) to include computer programs, computer programs have been recognized as copyrightable works by the German Supreme Court (BGHZ 112, 264 Betriebssystem, no. 19); CopyA § 137d(1) rightly clarifies that. The copyright holder at 1979 would still have been USL via Bell Labs and AT&T. Copyright of computer programs is transferred to the employer upon creation under CopyA § 69(1). Err codemadness.org 70 i 35182 Note that this does not affect expiry (Daniel Kaboth/Benjamin Spies, commentary on CopyA §§ 69a‒69g, in: Hartwig Ahlberg/Horst-Peter Götting (eds.), Urheberrecht: UrhG, KUG, VerlG, VGG, Kommentar, 4th ed., C. H. Beck, 2018, no. 16 ad CopyA § 69b; cf. Bundestag-Drucksache [BT-Drs.] 12/4022, p. 10). Expiry occurs 70 years after the death of the (co-)author that died most recently as per CopyA § 65(1) and 64; this has been the case since at least the 1960s, meaning there is no way for copyright to have expired already (old version, as per Bundesgesetzblatt Part I No. 51 of September 16, 1965, pp. 1273‒1294). Err codemadness.org 70 i 35183 In Germany, private international law applies the so-called “Territorialitätsprinzip” for intellectual property rights. This means that the effect of an intellectual property right is limited to the territory of a state (Anne Lauber-Rönsberg, KollisionsR, in: Hartwig Ahlberg/Horst-Peter Götting (eds.), ibid., pp. 2241 et seqq., no. 4). Additionally, the “Schutzlandprinzip” applies; this means that protection of intellectual property follows the lex loci protectionis, i.e. the law of the country for which protection is sought (BGH GRUR 2015, 264 HiHotel II, no. 25; BGH GRUR 2003, 328 Sender Felsberg, no. 24), albeit this is criticized in parts of doctrine (Lauber-Rönsberg, ibid., no. 10). The “Schutzlandprinzip” requires that the existence of an intellectual property right be verified as well (BGH ZUM 2016, 522 Wagenfeld-Leuchte II, no. 19). Err codemadness.org 70 i 35184 Thus, in Germany, copyright on Ancient UNIX is still alive and well. Who has it, though? A ruling by the U.S. Court of Appeals, Tenth Circuit, in the case of The SCO Group, Inc. v. Novell, Inc. (SCO v. Novell) in the U.S. made clear that Novell owns the rights to System V – thus presumably UNIX System III as well – and Ancient UNIX, though SCO acquired enough rights to develop UnixWare/OpenServer (Ruling 10-4122 [D.C. No. 2:04-CV-00139-TS], pp. 19 et seq.). Novell itself was purchased by the Attachmate Group, which was in turn acquired by the COBOL vendor Micro Focus. Therefore, the rights to SVRX and – outside the U.S. – are with Micro Focus right now. If all you care about is the U.S., you can stop reading about Ancient UNIX here. Err codemadness.org 70 i 35185 So how does the Caldera license factor into all of this? For some context, the license was issued January 23, 2002 and covers Ancient UNIX (V1 through V7 including 32V), specifically excluding System III and System V. Caldera, Inc. was founded in 1994. The Santa Cruz Operation, Inc. sold its rights to UNIX to Caldera in 2001, renamed itself to Tarantella Inc. and Caldera renamed itself The SCO Group. Nemo plus iuris ad alium transferre potest quam ipse habet; no one can transfer more rights than he has. The question now becomes whether Caldera had the rights to issue the Caldera license. Err codemadness.org 70 i 35186 I’ve noted it above but it needs restating: Foreign decisions are not necessarily accepted in Germany due to the “Territorialitätsprinzip” and “Schutzlandprinzip” – however, I will be citing a U.S. ruling for its assessment of the facts for the sake of simplicity. As per ruling 10-4122, “The district court found the parties intended for SCO to serve as Novell’s agent with respect to the old SVRX licenses and the only portion of the UNIX business transferred outright under the APA [asset purchase agreement] was the ability to exploit and further develop the newer UnixWare system. SCO was able to protect that business because it was able to copyright its own improvements to the system. The only reason to protect the earlier UNIX code would be to protect the existing SVRX licenses, and the court concluded Novell retained ultimate control over that portion of the business under the APA.” The relevant agreements consist of multiple pieces: Err codemadness.org 70 i 35187 the base Asset Purchase Agreement “APA” (Part I) Err codemadness.org 70 i 35188 the base Asset Purchase Agreement “APA” (Part II) Err codemadness.org 70 i 35189 the Operating Agremeent and Amendment 1 to the APA Err codemadness.org 70 i 35190 the Amendment 2 to the APA Err codemadness.org 70 i 35191 The APA dates September 19, 1995, from before the Caldera license. Caldera cannot possibly have acquired rights that The Santa Cruz Operation, Inc. itself never had. Furthermore, I’ve failed to find any mention of Ancient UNIX; all that is transferred is rights to SVRX. Overall, I believe that the U.S. courts’ assesment of the facts represents the situation accurately. Thus for all intents and purposes, UNIX up to and including System V remained with Novell/Attachmate/Micro Focus. Caldera therefore never had any rights to Ancient UNIX, which means it never had the rights to issue the Caldera license. The Caldera license is null and void – in the U.S. because the copyright has been lost due to formalities, everywhere else because Caldera never had the rights to issue it. Err codemadness.org 70 i 35192 The first step to truly freeing UNIX would this be to get Micro Focus to re-issue the Caldera license for Ancient UNIX, ideally it would now also include System III and System V.Err codemadness.org 70 i 35193 Err codemadness.org 70 i 35194
Another operating system near UNIX is of interest. The USL v. BSDi lawsuit includes two parties: USL, which we have seen above, and Berkeley Software Design, Inc. BSDi sold BSD/386 (later BSD/OS), which was a derivative of 4.4BSD. The software parts of the BSDi company were acquired by Wind River Systems, whereas the hardware parts went to iXsystems. Copyright is not disputed there, though Wind River Systems ceased selling BSD/OS products 15 years ago, in 2003. In addition, Wind River System let their trademark on BSD expire, though this is without consequence for copyright. Err codemadness.org 70 i 35199 BSD/OS is notable in the sense that it powered much of early internet infrastructure. Traces of its legacy can still be found on Richard Stevens’ FAQ. Err codemadness.org 70 i 35200 To truly make UNIX history free, BSD/OS would arguably also need to see a source code release. BSD/OS at least in its earliest releases under BSDi would ship with source code, though under a non-free license, far from BSD or even GPL licensing.Err codemadness.org 70 i 35201 Err codemadness.org 70 i 35202
The fate of System V as a whole is difficult to determine. Various licenses have been granted to a number of vendors (Dell UNIX comes to mind; HP for HP-UX, IBM for AIX, SGI UNIX, etc.). Sun released OpenSolaris – notoriously, Oracle closed the source to Solaris again after its release –, which is a System V Release 4 descendant. However, this means nothing for the copyright or licensing status of System V itself. Presumably, the rights with System V still remain with Novell (now Micro Focus): SCO managed to sublicense rights to develop and sell UnixWare/OpenServer, themselves System V/III descendants, to unXis, Inc. (now known as Xinuos, Inc.), which implies that Xinuos is not the copyright holder of System V. Err codemadness.org 70 i 35207 Obviously, to free UNIX, System V and its entire family of descendants would also need to be open sourced. However, I expect tremendous resistance on part of all the companies mentioned. As noted in the “Ancient UNIX” section, Micro Focus alone would probably be sufficient to release System V, though this would mean nothing for the other commercial System V derivatives.Err codemadness.org 70 i 35208 Err codemadness.org 70 i 35209
The fate of Bell Labs would be a different one; it would go on to be purchased by Lucent, now part of Nokia. After commercial UNIX got separated out to USL, Research UNIX would continue to exist inside of Bell Labs. Research UNIX V8, V9 and V10 were not quite released by Alcatel-Lucent USA Inc. and Nokia in 2017. Err codemadness.org 70 i 35214 However, this is merely a notice that the companies involved will not assert their copyrights only with respect to any non-commercial usage of the code. It is still not possible, over 30 years later, to freely use the V8 code.Err codemadness.org 70 i 35215 Err codemadness.org 70 i 35216
A small note about patents: Some technologies used in newer iterations of the UNIX system (in particular the System V derivatives) may be encumbered with software patents. An open source license will not help against patent infringement claims. However, the patents on anything used in the historical operating systems will certainly have expired by now. In addition, European readers can ignore this entirely – software patents just aren’t a thing.Err codemadness.org 70 i 35222 Err codemadness.org 70 i 35223
As of last year, there was effectively only a single solution in the Route Server vendor market: the BIRD Internet routing daemon. NIC.CZ (the organisation developing BIRD) has done fantastic work on maintaining their BGP-4 implementation, however, it’s not healthy to have virtually every Internet Exchange Point (IXP) in the RIPE NCC service region depend on a single open source project. The current situation can be compared to the state of the DNS root nameservers back in 2002 - their dependence on the BIND nameserver daemon and the resulting development of NSD as an alternative by NLnet, in cooperation with the RIPE NCC. Err codemadness.org 70 i 35232 OpenBGPD used to be one of the most popular Route Server implementations until the early 2010s. OpenBGPD’s main problem was that its performance couldn’t keep up with the Internet’s growth, so it lost market share. An analysis by Job Snijders suggested that a modernised OpenBGPD distribution would be a most viable option to regain diversity on the Route Server level.Err codemadness.org 70 i 35233 Err codemadness.org 70 i 35234
The following main missing features were identified in OpenBGPD:Err codemadness.org 70 i 35239 Err codemadness.org 70 i 35240
In previous versions of OpenBGPD, the filtering performance didn’t allow proper filtering of all EBGP sessions. Current best practice at IXP Route Servers is to carefully evaluate and validate of all routes learned from EBGP peers. The OpenBGPD ruleset required to do correct filtering (in many deployment scenarios) was simply too lengthy - and negatively impacted service performance during configuration reloads. While filtering performance is the biggest bottleneck, general improvements to the Routing Information Base were also made to improve scalability. IXP Route Servers with a few hundred peering sessions are commonplace and adding new sessions shouldn’t impact the Route Servers’ service to other peers. We found that performance was the most pressing issue that needed to be tackled.Err codemadness.org 70 i 35245 Err codemadness.org 70 i 35246
As we’ve seen, Internet operators are moving to adopt RPKI based BGP Origin Validation. While it was theoretically possible to emulate RFC 6811-style Origin Validation in previous versions of OpenBGPD, the required configuration wasn’t optimised for performance and wasn’t user friendly. We believe that BGP Origin Validation should be as easy as possible - this requires BGP-4 vendors to implement native, optimised routines for Origin Validation. Of course, enabling Origin Validation shouldn’t have an impact on performance either when processing BGP updates or when updating the Route Origin Authorisation (ROA) table itself.Err codemadness.org 70 i 35251 Err codemadness.org 70 i 35252
OpenBGPD is an integral part of OpenBSD, but IXPs may prefer to run their services infrastructure on an operating system of their choice. Making sure that there’s a portable OpenBGPD version which follows the OpenBSD project release cycle will give IXPs this option.Err codemadness.org 70 i 35257 Err codemadness.org 70 i 35258
By addressing the issues mentioned above, we could bring back OpenBGPD as a viable Route Server implementation. Err codemadness.org 70 i 35263 Since I was one of the core OpenBGPD developers, I was asked if I wanted to pick up this project again. Thanks to the funding from the RIPE NCC Project Fund, this was possible. Starting in June 2018, I worked full time on this important community project. Over the last few months, many of the problems are already addressed and are now part of the OpenBSD 6.4 release. So far, 154 commits were made to OpenBGPD during the 6.4 development cycle - around 8% of all commits ever to OpenBGPD! This shows that due to funding and dedicated resources, a lot of work could be pushed into the latest release of OpenBGPD.Err codemadness.org 70 i 35264 Err codemadness.org 70 i 35265
The OpenBGPD version, as part of OpenBSD 6.4 release, demonstrates great progress. Even though there have been many changes to the core of OpenBGPD, the released version is as solid and reliable as previous releases and the many bug fixes and improvements make this the best OpenBGPD release so far. The changes in the filter language allow users to write more efficient rulesets while the introduction of RPKI origination validation fixes an important missing feature. For IXPs, OpenBGPD now is an alternative again. There are still open issues, but the gap is closing!Err codemadness.org 70 i 35270 Err codemadness.org 70 i 35271
The following changes should be highlighted:Err codemadness.org 70 i 35276 Err codemadness.org 70 i 35277
Users can only benefit from the changes introduced in OpenBGPD 6.4 when the surrounding 3rd party tools are adjusted accordingly. Two opensource projects such as bgpq3 and arouteserver are frequently used by network operators and IXPs to generate BGP configurations. Thanks to our contributions to those projects, we were able to get them ready for all the new features in OpenBGPD.Err codemadness.org 70 i 35288 Err codemadness.org 70 i 35289
A sizeable chunk of work still left on the table is the rework of the RIB data structures in OpenBGPD - these haven’t been changed since the initial design of OpenBGPD in 2003. There’s currently ongoing work (in small steps, to avoid jeopardising the stability of OpenBGPD) to modernise these data-structures. The goal is to provide better decoupling of the filter step from storing RIB database changes, to pave the way to multi-threaded operations at a later point.Err codemadness.org 70 i 35296 Err codemadness.org 70 i 35297
It’s been incredibly productive to create an environment where a core developer is allowed to work full time on the OpenBGPD code base. However, it’s important to note there still is room for a number of new features to help improve its operational capabilities (such as BMP, RFC 7313, ADD_PATH, etc). It’d be beneficial to the Internet community at large if we can extend Claudio Jeker’s involvement for another year. Open source software doesn’t grow on trees! Strategic investments are the only way to keep OpenBGPD’s roadmap aligned with Internet growth and operator requirements.Err codemadness.org 70 i 35303 Err codemadness.org 70 i 35304
##Headlines
Err codemadness.org 70
i 35577 ###Assembly language on OpenBSD amd64+arm64
Err codemadness.org 70 i 35580Err codemadness.org 70 i 35582 Err codemadness.org 70 i 35583This is a short introduction to assembly language programming on OpenBSD/amd64+arm64. Because of security features in the kernel, I have had to rethink a series of tutorials covering Aarch64 assembly language on OpenBSD, and therefore this will serve as a placeholder-cum-reminder.
Err codemadness.org 70 i 35581
Err codemadness.org 70 i 35584Err codemadness.org 70 i 35586 Err codemadness.org 70 i 35587OpenBSD, like many UNIX and unix-like operating systems, now uses the Executable and Linkable Format (ELF) for its binary libraries and executables. Although the structure of this format is beyond the scope of this short introduction, it is necessary for me to explain part of one of the headers.
Err codemadness.org 70 i 35585
Err codemadness.org 70 i 35588Err codemadness.org 70 i 35590 Err codemadness.org 70 i 35591Within the program header there are sections known as PT_NOTE that OpenBSD and other systems use to distinguish their ELF executables - OpenBSD looks for this section to check if it should attempt to execute the program or not.
Err codemadness.org 70 i 35589
Err codemadness.org 70 i 35596Err codemadness.org 70 i 35598 Err codemadness.org 70 i 35599It’s often a good idea to prototype your assembly programs in a high level language such as C - it can then double up as both a set of notes and a working program that you can debug and compile into assembly language to compare with your own asm code.
Err codemadness.org 70 i 35597
###Using bhyve for FreeBSD Development
Err codemadness.org 70 i 35610 Err codemadness.org 70 i 35611Err codemadness.org 70 i 35616Err codemadness.org 70 i 35624 Err codemadness.org 70 i 35625The bhyve hypervisor requires a 64-bit x86 processor with hardware support for virtualization. This requirement allows for a simple, clean hypervisor implementation, but it does require a fairly recent
Err codemadness.org 70 i 35623
Err codemadness.org 70 i 35617 processor. The current hypervisor requires an Intel processor, but there is an active development branch with support for AMD processors.
Err codemadness.org 70 i 35618 The hypervisor itself contains both user and kernel components. The kernel driver is contained in the vmm.ko module and can be loaded either at boot from the boot loader or at runtime. It must
Err codemadness.org 70 i 35619 be loaded before any guests can be created. When a guest is created, the kernel driver creates a device file in /dev/vmm which is used by the user programs to interact with the guest.
Err codemadness.org 70 i 35620 The primary user component is the bhyve(8) program. It constructs the emulated device tree in the guest and provides the implementation for most of the emulated devices. It also calls the kernel driver to execute the guest. Note that the guest always executes inside the driver itself, so guest execution time in the host is counted as system time in the bhyve process.
Err codemadness.org 70 i 35621 Currently, bhyve does not provide a system firmware interface to the guest (neither BIOS nor UEFI). Instead, a user program running on the host is used to perform boot time operations including loading the guest operating system kernel into the guest’s memory and setting the initial guest state so that the guest begins execution at the kernel’s entry point. For FreeBSD guests, the bhyveload(8) program can be used to load the kernel and prepare the guest for execution. Support for some other operating systems is available via the grub2-bhyve program which is available via the sysutils/grub2-bhyve port or as a prebuilt package.
Err codemadness.org 70 i 35622 The bhyveload(8) program in FreeBSD 10.0 only supports 64-bit guests. Support for 32-bit guests will be included in FreeBSD 10.1.
See the article for the very technical breakdown of the following:
Err codemadness.org 70 i 35628Network Setup
Err codemadness.org 70 i 35631Bridged Configuration
Err codemadness.org 70 i 35634Private Network with NAT
Err codemadness.org 70 i 35637Using dnsmasq with a Private Network
Err codemadness.org 70 i 35640Running Guests via vmrun.sh
Err codemadness.org 70 i 35643Configuring Guests
Err codemadness.org 70 i 35646Using a bhyve Guest as a Target
Err codemadness.org 70 i 35649Conclusion
Err codemadness.org 70 i 35652Err codemadness.org 70 i 35656Err codemadness.org 70 i 35658 Err codemadness.org 70 i 35659The bhyve hypervisor is a nice addition to a FreeBSD developer’s toolbox. Guests can be used both to develop new features and to test merges to stable branches. The hypervisor has a wide variety of uses beyond developing FreeBSD as well.
Err codemadness.org 70 i 35657
##News Roundup
Err codemadness.org 70
i 35662 ###Games on FreeBSD
Err codemadness.org 70 i 35665Err codemadness.org 70 i 35667 Err codemadness.org 70 i 35668What do all programmers like to do after work? Ok, what do most programers like to do after work? The answer is simple: play a good game! Recently at the Polish BSD User Group meetup mulander was telling us how you can play games on OpenBSD. Today let’s discuss how this looks in the FreeBSD world using the “server only” operating system.
Err codemadness.org 70 i 35666
Err codemadness.org 70 i 35673Err codemadness.org 70 i 35676 Err codemadness.org 70 i 35677One of the ways of playing natively is to play indie games which use XNA. XNA is a framework from Microsoft which uses .NET, for creating games. Fortunately, in the BSD world we have Mono, an open source implementation of Microsoft’s .NET Framework which you can use to run games. There is also FNA framework which is a reimplementation of XNA which allows you to run the games under Linux. Thomas Frohwein, from OpenBSD, prepared a script, fnaify. Fnaify translate all dependencies used by an FNA game to OpenBSD dependencies.
Err codemadness.org 70 i 35675
Err codemadness.org 70 i 35674 I decided to port the script to FreeBSD. The script is using /bin/sh which in the case of OpenBSD is a Korn Shell.
Err codemadness.org 70 i 35678Err codemadness.org 70 i 35680 Err codemadness.org 70 i 35681I didn’t test it with many games, but I don’t see any reason why it shouldn’t work with all the games tested by the OpenBSD guys. For example, with:
Err codemadness.org 70 i 35679
Cryptark
Err codemadness.org 70 i 35684Rouge Legacy
Err codemadness.org 70 i 35687Apotheon
Err codemadness.org 70 i 35690Escape Goat
Err codemadness.org 70 i 35693Bastion
Err codemadness.org 70 i 35696CrossCode
Err codemadness.org 70 i 35699Atom Zombie Smasher
Err codemadness.org 70 i 35702Open-Source games
Err codemadness.org 70 i 35705Err codemadness.org 70 i 35709Err codemadness.org 70 i 35711 Err codemadness.org 70 i 35712In FreeBSD and OpenBSD we also will find popular games which were open sourced. For example, I spend a lot of time playing in Quake 3 Arena on my FreeBSD machine. You can very simply install it using pkg:
Err codemadness.org 70 i 35710# pkg install ioquake3
Err codemadness.org 70 i 35713Err codemadness.org 70 i 35715 Err codemadness.org 70 i 35716Then move the files for the skins and maps to the .ioquake3 directory from your copy of Quake. In the past I also played UrbanTerror which is a fully open source shooter based on the Quake 3 Arena engine. It’s is also very easy to install it from ports:
Err codemadness.org 70 i 35714# pkg install iourbanterror
Err codemadness.org 70 i 35717Err codemadness.org 70 i 35719 Err codemadness.org 70 i 35720In the ports tree in the games directory you can find over 1000 directories, many of them with fully implemented games. I didn’t test many games in this category, but you can find some interesting titles like:
Err codemadness.org 70 i 35718
Err codemadness.org 70 i 35731Err codemadness.org 70 i 35733 Err codemadness.org 70 i 35734All those titles are simply installed through the packages. In that case I don’t think FreeBSD has any difference from OpenBSD.
Err codemadness.org 70 i 35732
Err codemadness.org 70 i 35739Err codemadness.org 70 i 35741 Err codemadness.org 70 i 35742One of the big advantages of FreeBSD over OpenBSD is that FreeBSD supports wine. Wine allows you to run Windows applications under other operating systems (including mac). If you are a FreeBSD 11 user, you can simply fetch wine from packages:
Err codemadness.org 70 i 35740# pkg install i386-wine
Err codemadness.org 70 i 35743Err codemadness.org 70 i 35745 Err codemadness.org 70 i 35746To run Windows games, you need to have a 32-bit wine because most of the games on Windows are built on 32-bits (maybe this has changed – I don’t play so much these days). In my case, because I run FreeBSD-CURRENT I needed to build wine from ports. It wasn’t nice, but it also wasn’t unpleasant. The whole step-by-step building process of a wine from ports can be found here.
Err codemadness.org 70 i 35744
Err codemadness.org 70 i 35751Err codemadness.org 70 i 35753 Err codemadness.org 70 i 35754As you can see there are many titles available for *BSDs. Thanks to the FNA and fnaify, OpenBSD and FreeBSD can work with indie games which use the XNA framework. There are many interesting games implemented using this framework. Open source is not only for big server machines, and there are many re-implementations of popular games like Theme Hospital or RollerCoaster Tycoon 2. The biggest market is still enabled through wine, although its creates a lot of problems to run the games. Also, if you are an OpenBSD user only this option is not available for you. Please also note that we didn’t discuss any other emulators besides wine. In OpenBSD and FreeBSD there are many of them for GameBoy, SNES, NeoGeo and other games consoles.
Err codemadness.org 70 i 35752
Err codemadness.org 70 i 35759Err codemadness.org 70 i 35767 Err codemadness.org 70 i 35768I’ve been working on FreeBSD for Intel for almost 6 months now. In the world of programmers, I am considered an old dog, and these 6 months have been all about learning new tricks. Luckily, I’ve found myself in a remarkably inclusive and receptive community whose patience seems plentiful. As I get ready to take some time off for the holidays, and move into that retrospective time of year, I thought I’d beat the rush a bit and update on the progress
Err codemadness.org 70 i 35766
Err codemadness.org 70 i 35760 Earlier this year, I decided to move from architect of the Linux graphics driver into a more nebulous role of FreeBSD enabling. I was excited, but also uncertain if I was making the right decision.
Err codemadness.org 70 i 35761 Earlier this half, I decided some general work in power management was highly important and began working there. I attended BSDCam (handsome guy on the right), and led a session on Power Management. I was honored to be able to lead this kind of effort.
Err codemadness.org 70 i 35762 Earlier this quarter, I put the first round of my patches up for review, implementing suspend-to-idle. I have some rougher patches to handle s0ix support when suspending-to-idle. I gave a talk MeetBSD about our team’s work.
Err codemadness.org 70 i 35763 Earlier this month, I noticed that FreeBSD doesn’t have an implementation for Intel Speed Shift (HWPstates), and I started working on that.
Err codemadness.org 70 i 35764 Earlier this week, I was promoted from a lowly mentee committer to a full src committer.
Err codemadness.org 70 i 35765 Earlier today, I decided to relegate my Linux laptop to the role of my backup machine, and I am writing this from my Dell XPS13 running FreeBSD
vandamme 13.0-CURRENT FreeBSD 13.0-CURRENT #45 881fee072ff(hwp)-dirty: Mon Nov 19 16:19:32 PST 2018 bwidawsk@vandamme:/usr/home/bwidawsk/usr/obj/usr/home/bwidawsk/usr/src/amd64.amd64/sys/DEVMACHINE amd64
Err codemadness.org 70 i 35771Err codemadness.org 70 i 35773 Err codemadness.org 70 i 357746 months later, I feel a lot less uncertain about making the right decision. In fact, I think both opportunities would be great, and I’m thankful this Thanksgiving that this is my life and career. I have more plans and things I want to get done. I’m looking forward to being thankful again next year.
Err codemadness.org 70 i 35772
###hammer2: no space left on device on Dragonfly BSD
Err codemadness.org 70 i 35777 Err codemadness.org 70 i 35778Err codemadness.org 70 i 35783Err codemadness.org 70 i 35786 Err codemadness.org 70 i 35787hammer2 does not actually delete a file when you rm or unlink it. Since recovery of the file is possible (this is the design of hammer2), there will still be an entry taking up data. It’s similar to how git works.
Err codemadness.org 70 i 35785
Err codemadness.org 70 i 35784 Even with 75% usage listed here, the filesystem could still have filled up. If you are using it as your root filesystem, then attempts to clean up data may fail. If the kernel panics over this, you will see something like this.
Err codemadness.org 70 i 35792Err codemadness.org 70 i 35794 Err codemadness.org 70 i 35795If you have a recent enough version of the rescue ramdisk installed, on bootup you can press ‘r’ and access the rescue ramdisk. Your provider will have to offer some sort of remote interface for interacting with the operating system before it boots, like VNC or IPMI. You can then mount your filesystem using:
Err codemadness.org 70 i 35793
[root@ ~]# mkdir /tmp/fs
Err codemadness.org 70
i 35796 [root@ ~]# mount_hammer2 -o local /dev/vbd0s1a /tmp/fs
Err codemadness.org 70 i 35799Err codemadness.org 70 i 35802 Err codemadness.org 70 i 35803If you receive an error that /sbin/hammer2 is not found, then your rescue ramdisk is not up to date enough. In that scenario, download the latest 5.2 iso from dragonflybsd.org and boot from the cd-rom on your virtual machine or physical device. Just login as root instead of installer.
Err codemadness.org 70 i 35801
Err codemadness.org 70 i 35800 If the mount does succeed, then all you have to do is run the following twice:
[root@ ~]# /sbin/hammer2 bulkfree /tmp/fs
Err codemadness.org 70 i 35806Err codemadness.org 70 i 35808 Err codemadness.org 70 i 35809If you do not have enough memory on your machine, you may need to mount swap. Add your swap partition to the /etc/fstab and then do:
Err codemadness.org 70 i 35807
[root@ ~]# swapon -a
Err codemadness.org 70 i 35812Err codemadness.org 70 i 35814 Err codemadness.org 70 i 35815Once you have ran the bulkfree command twice, the usage reported by df -h will be correct. However, there is a chance on reboot that a core dump will be placed in /var/crash/ so be prepared to have plenty of space free in case that happens. You should also delete any files you can and run the bulkfree operation twice afterwards to clear up additional space.
Err codemadness.org 70 i 35813
##Beastie Bits
Err codemadness.org 70 i 35818 Err codemadness.org 70 i 35819##Feedback/Questions
Err codemadness.org 70 i 35831 Err codemadness.org 70 i 35832##Headlines
Err codemadness.org 70
i 35850 ###Assembly language on OpenBSD amd64+arm64
Err codemadness.org 70 i 35853Err codemadness.org 70 i 35855 Err codemadness.org 70 i 35856This is a short introduction to assembly language programming on OpenBSD/amd64+arm64. Because of security features in the kernel, I have had to rethink a series of tutorials covering Aarch64 assembly language on OpenBSD, and therefore this will serve as a placeholder-cum-reminder.
Err codemadness.org 70 i 35854
Err codemadness.org 70 i 35857Err codemadness.org 70 i 35859 Err codemadness.org 70 i 35860OpenBSD, like many UNIX and unix-like operating systems, now uses the Executable and Linkable Format (ELF) for its binary libraries and executables. Although the structure of this format is beyond the scope of this short introduction, it is necessary for me to explain part of one of the headers.
Err codemadness.org 70 i 35858
Err codemadness.org 70 i 35861Err codemadness.org 70 i 35863 Err codemadness.org 70 i 35864Within the program header there are sections known as PT_NOTE that OpenBSD and other systems use to distinguish their ELF executables - OpenBSD looks for this section to check if it should attempt to execute the program or not.
Err codemadness.org 70 i 35862
Err codemadness.org 70 i 35869Err codemadness.org 70 i 35871 Err codemadness.org 70 i 35872It’s often a good idea to prototype your assembly programs in a high level language such as C - it can then double up as both a set of notes and a working program that you can debug and compile into assembly language to compare with your own asm code.
Err codemadness.org 70 i 35870
###Using bhyve for FreeBSD Development
Err codemadness.org 70 i 35883 Err codemadness.org 70 i 35884Err codemadness.org 70 i 35889Err codemadness.org 70 i 35897 Err codemadness.org 70 i 35898The bhyve hypervisor requires a 64-bit x86 processor with hardware support for virtualization. This requirement allows for a simple, clean hypervisor implementation, but it does require a fairly recent
Err codemadness.org 70 i 35896
Err codemadness.org 70 i 35890 processor. The current hypervisor requires an Intel processor, but there is an active development branch with support for AMD processors.
Err codemadness.org 70 i 35891 The hypervisor itself contains both user and kernel components. The kernel driver is contained in the vmm.ko module and can be loaded either at boot from the boot loader or at runtime. It must
Err codemadness.org 70 i 35892 be loaded before any guests can be created. When a guest is created, the kernel driver creates a device file in /dev/vmm which is used by the user programs to interact with the guest.
Err codemadness.org 70 i 35893 The primary user component is the bhyve(8) program. It constructs the emulated device tree in the guest and provides the implementation for most of the emulated devices. It also calls the kernel driver to execute the guest. Note that the guest always executes inside the driver itself, so guest execution time in the host is counted as system time in the bhyve process.
Err codemadness.org 70 i 35894 Currently, bhyve does not provide a system firmware interface to the guest (neither BIOS nor UEFI). Instead, a user program running on the host is used to perform boot time operations including loading the guest operating system kernel into the guest’s memory and setting the initial guest state so that the guest begins execution at the kernel’s entry point. For FreeBSD guests, the bhyveload(8) program can be used to load the kernel and prepare the guest for execution. Support for some other operating systems is available via the grub2-bhyve program which is available via the sysutils/grub2-bhyve port or as a prebuilt package.
Err codemadness.org 70 i 35895 The bhyveload(8) program in FreeBSD 10.0 only supports 64-bit guests. Support for 32-bit guests will be included in FreeBSD 10.1.
See the article for the very technical breakdown of the following:
Err codemadness.org 70 i 35901Network Setup
Err codemadness.org 70 i 35904Bridged Configuration
Err codemadness.org 70 i 35907Private Network with NAT
Err codemadness.org 70 i 35910Using dnsmasq with a Private Network
Err codemadness.org 70 i 35913Running Guests via vmrun.sh
Err codemadness.org 70 i 35916Configuring Guests
Err codemadness.org 70 i 35919Using a bhyve Guest as a Target
Err codemadness.org 70 i 35922Conclusion
Err codemadness.org 70 i 35925Err codemadness.org 70 i 35929Err codemadness.org 70 i 35931 Err codemadness.org 70 i 35932The bhyve hypervisor is a nice addition to a FreeBSD developer’s toolbox. Guests can be used both to develop new features and to test merges to stable branches. The hypervisor has a wide variety of uses beyond developing FreeBSD as well.
Err codemadness.org 70 i 35930
##News Roundup
Err codemadness.org 70
i 35935 ###Games on FreeBSD
Err codemadness.org 70 i 35938Err codemadness.org 70 i 35940 Err codemadness.org 70 i 35941What do all programmers like to do after work? Ok, what do most programers like to do after work? The answer is simple: play a good game! Recently at the Polish BSD User Group meetup mulander was telling us how you can play games on OpenBSD. Today let’s discuss how this looks in the FreeBSD world using the “server only” operating system.
Err codemadness.org 70 i 35939
Err codemadness.org 70 i 35946Err codemadness.org 70 i 35949 Err codemadness.org 70 i 35950One of the ways of playing natively is to play indie games which use XNA. XNA is a framework from Microsoft which uses .NET, for creating games. Fortunately, in the BSD world we have Mono, an open source implementation of Microsoft’s .NET Framework which you can use to run games. There is also FNA framework which is a reimplementation of XNA which allows you to run the games under Linux. Thomas Frohwein, from OpenBSD, prepared a script, fnaify. Fnaify translate all dependencies used by an FNA game to OpenBSD dependencies.
Err codemadness.org 70 i 35948
Err codemadness.org 70 i 35947 I decided to port the script to FreeBSD. The script is using /bin/sh which in the case of OpenBSD is a Korn Shell.
Err codemadness.org 70 i 35951Err codemadness.org 70 i 35953 Err codemadness.org 70 i 35954I didn’t test it with many games, but I don’t see any reason why it shouldn’t work with all the games tested by the OpenBSD guys. For example, with:
Err codemadness.org 70 i 35952
Cryptark
Err codemadness.org 70 i 35957Rouge Legacy
Err codemadness.org 70 i 35960Apotheon
Err codemadness.org 70 i 35963Escape Goat
Err codemadness.org 70 i 35966Bastion
Err codemadness.org 70 i 35969CrossCode
Err codemadness.org 70 i 35972Atom Zombie Smasher
Err codemadness.org 70 i 35975Open-Source games
Err codemadness.org 70 i 35978Err codemadness.org 70 i 35982Err codemadness.org 70 i 35984 Err codemadness.org 70 i 35985In FreeBSD and OpenBSD we also will find popular games which were open sourced. For example, I spend a lot of time playing in Quake 3 Arena on my FreeBSD machine. You can very simply install it using pkg:
Err codemadness.org 70 i 35983# pkg install ioquake3
Err codemadness.org 70 i 35986Err codemadness.org 70 i 35988 Err codemadness.org 70 i 35989Then move the files for the skins and maps to the .ioquake3 directory from your copy of Quake. In the past I also played UrbanTerror which is a fully open source shooter based on the Quake 3 Arena engine. It’s is also very easy to install it from ports:
Err codemadness.org 70 i 35987# pkg install iourbanterror
Err codemadness.org 70 i 35990Err codemadness.org 70 i 35992 Err codemadness.org 70 i 35993In the ports tree in the games directory you can find over 1000 directories, many of them with fully implemented games. I didn’t test many games in this category, but you can find some interesting titles like:
Err codemadness.org 70 i 35991
Err codemadness.org 70 i 36004Err codemadness.org 70 i 36006 Err codemadness.org 70 i 36007All those titles are simply installed through the packages. In that case I don’t think FreeBSD has any difference from OpenBSD.
Err codemadness.org 70 i 36005
Err codemadness.org 70 i 36012Err codemadness.org 70 i 36014 Err codemadness.org 70 i 36015One of the big advantages of FreeBSD over OpenBSD is that FreeBSD supports wine. Wine allows you to run Windows applications under other operating systems (including mac). If you are a FreeBSD 11 user, you can simply fetch wine from packages:
Err codemadness.org 70 i 36013# pkg install i386-wine
Err codemadness.org 70 i 36016Err codemadness.org 70 i 36018 Err codemadness.org 70 i 36019To run Windows games, you need to have a 32-bit wine because most of the games on Windows are built on 32-bits (maybe this has changed – I don’t play so much these days). In my case, because I run FreeBSD-CURRENT I needed to build wine from ports. It wasn’t nice, but it also wasn’t unpleasant. The whole step-by-step building process of a wine from ports can be found here.
Err codemadness.org 70 i 36017
Err codemadness.org 70 i 36024Err codemadness.org 70 i 36026 Err codemadness.org 70 i 36027As you can see there are many titles available for *BSDs. Thanks to the FNA and fnaify, OpenBSD and FreeBSD can work with indie games which use the XNA framework. There are many interesting games implemented using this framework. Open source is not only for big server machines, and there are many re-implementations of popular games like Theme Hospital or RollerCoaster Tycoon 2. The biggest market is still enabled through wine, although its creates a lot of problems to run the games. Also, if you are an OpenBSD user only this option is not available for you. Please also note that we didn’t discuss any other emulators besides wine. In OpenBSD and FreeBSD there are many of them for GameBoy, SNES, NeoGeo and other games consoles.
Err codemadness.org 70 i 36025
Err codemadness.org 70 i 36032Err codemadness.org 70 i 36040 Err codemadness.org 70 i 36041I’ve been working on FreeBSD for Intel for almost 6 months now. In the world of programmers, I am considered an old dog, and these 6 months have been all about learning new tricks. Luckily, I’ve found myself in a remarkably inclusive and receptive community whose patience seems plentiful. As I get ready to take some time off for the holidays, and move into that retrospective time of year, I thought I’d beat the rush a bit and update on the progress
Err codemadness.org 70 i 36039
Err codemadness.org 70 i 36033 Earlier this year, I decided to move from architect of the Linux graphics driver into a more nebulous role of FreeBSD enabling. I was excited, but also uncertain if I was making the right decision.
Err codemadness.org 70 i 36034 Earlier this half, I decided some general work in power management was highly important and began working there. I attended BSDCam (handsome guy on the right), and led a session on Power Management. I was honored to be able to lead this kind of effort.
Err codemadness.org 70 i 36035 Earlier this quarter, I put the first round of my patches up for review, implementing suspend-to-idle. I have some rougher patches to handle s0ix support when suspending-to-idle. I gave a talk MeetBSD about our team’s work.
Err codemadness.org 70 i 36036 Earlier this month, I noticed that FreeBSD doesn’t have an implementation for Intel Speed Shift (HWPstates), and I started working on that.
Err codemadness.org 70 i 36037 Earlier this week, I was promoted from a lowly mentee committer to a full src committer.
Err codemadness.org 70 i 36038 Earlier today, I decided to relegate my Linux laptop to the role of my backup machine, and I am writing this from my Dell XPS13 running FreeBSD
vandamme 13.0-CURRENT FreeBSD 13.0-CURRENT #45 881fee072ff(hwp)-dirty: Mon Nov 19 16:19:32 PST 2018 bwidawsk@vandamme:/usr/home/bwidawsk/usr/obj/usr/home/bwidawsk/usr/src/amd64.amd64/sys/DEVMACHINE amd64
Err codemadness.org 70 i 36044Err codemadness.org 70 i 36046 Err codemadness.org 70 i 360476 months later, I feel a lot less uncertain about making the right decision. In fact, I think both opportunities would be great, and I’m thankful this Thanksgiving that this is my life and career. I have more plans and things I want to get done. I’m looking forward to being thankful again next year.
Err codemadness.org 70 i 36045
###hammer2: no space left on device on Dragonfly BSD
Err codemadness.org 70 i 36050 Err codemadness.org 70 i 36051Err codemadness.org 70 i 36056Err codemadness.org 70 i 36059 Err codemadness.org 70 i 36060hammer2 does not actually delete a file when you rm or unlink it. Since recovery of the file is possible (this is the design of hammer2), there will still be an entry taking up data. It’s similar to how git works.
Err codemadness.org 70 i 36058
Err codemadness.org 70 i 36057 Even with 75% usage listed here, the filesystem could still have filled up. If you are using it as your root filesystem, then attempts to clean up data may fail. If the kernel panics over this, you will see something like this.
Err codemadness.org 70 i 36065Err codemadness.org 70 i 36067 Err codemadness.org 70 i 36068If you have a recent enough version of the rescue ramdisk installed, on bootup you can press ‘r’ and access the rescue ramdisk. Your provider will have to offer some sort of remote interface for interacting with the operating system before it boots, like VNC or IPMI. You can then mount your filesystem using:
Err codemadness.org 70 i 36066
[root@ ~]# mkdir /tmp/fs
Err codemadness.org 70
i 36069 [root@ ~]# mount_hammer2 -o local /dev/vbd0s1a /tmp/fs
Err codemadness.org 70 i 36072Err codemadness.org 70 i 36075 Err codemadness.org 70 i 36076If you receive an error that /sbin/hammer2 is not found, then your rescue ramdisk is not up to date enough. In that scenario, download the latest 5.2 iso from dragonflybsd.org and boot from the cd-rom on your virtual machine or physical device. Just login as root instead of installer.
Err codemadness.org 70 i 36074
Err codemadness.org 70 i 36073 If the mount does succeed, then all you have to do is run the following twice:
[root@ ~]# /sbin/hammer2 bulkfree /tmp/fs
Err codemadness.org 70 i 36079Err codemadness.org 70 i 36081 Err codemadness.org 70 i 36082If you do not have enough memory on your machine, you may need to mount swap. Add your swap partition to the /etc/fstab and then do:
Err codemadness.org 70 i 36080
[root@ ~]# swapon -a
Err codemadness.org 70 i 36085Err codemadness.org 70 i 36087 Err codemadness.org 70 i 36088Once you have ran the bulkfree command twice, the usage reported by df -h will be correct. However, there is a chance on reboot that a core dump will be placed in /var/crash/ so be prepared to have plenty of space free in case that happens. You should also delete any files you can and run the bulkfree operation twice afterwards to clear up additional space.
Err codemadness.org 70 i 36086
##Beastie Bits
Err codemadness.org 70 i 36091 Err codemadness.org 70 i 36092##Feedback/Questions
Err codemadness.org 70 i 36104 Err codemadness.org 70 i 36105##Headlines
Err codemadness.org 70
i 36399 ###Some thoughts on NetBSD 8.0
Err codemadness.org 70 i 36402Err codemadness.org 70 i 36405 Err codemadness.org 70 i 36406NetBSD is a highly portable operating system which can be run on dozens of different hardware architectures. The operating system’s clean and minimal design allow it to be run in all sorts of environments, ranging from embedded devices, to servers, to workstations. While the base operating system is minimal, NetBSD users have access to a large repository of binary packages and a ports tree which I will touch upon later.
Err codemadness.org 70 i 36404
Err codemadness.org 70 i 36403 I last tried NetBSD 7.0 about three years ago and decided it was time to test drive the operating system again. In the past three years NetBSD has introduced a few new features, many of them security enhancements. For example, NetBSD now supports write exclusive-or execute (W^X) protection and address space layout randomization (ASLR) to protect programs against common attacks. NetBSD 8.0 also includes USB3 support and the ability to work with ZFS storage volumes.
Err codemadness.org 70 i 36411Err codemadness.org 70 i 36413 Err codemadness.org 70 i 36414Since I had set up NetBSD with a Full install and enabled xdm during the setup process, the operating system booted to a graphical login screen. From here we can sign into our account. The login screen does not provide options to shut down or restart the computer. Logging into our account brings up the twm window manager and provides a virtual terminal, courtesy of xterm. There is a panel that provides a method for logging out of the window manager. The twm environment is sparse, fast and devoid of distractions.
Err codemadness.org 70 i 36412
Err codemadness.org 70 i 36419Err codemadness.org 70 i 36424 Err codemadness.org 70 i 36425NetBSD ships with a fairly standard collection of command line tools and manual pages, but otherwise it is a fairly minimal platform. If we want to run network services, have access to a web browser, or use a word processor we are going to need to install more software. There are two main approaches to installing new packages. The first, and easier approach, is to use the pkgin package manager. The pkgin utility works much the same way APT or DNF work in the Linux world, or as pkg works on FreeBSD. We can search for software by name, install or remove items. I found pkgin worked well, though its output can be terse. My only complaint with pkgin is that it does not handle “close enough” package names. For example, if I tried to run “pkgin install vlc” or “pkgin install firefox” I would quickly be told these items did not exist. But a more forgiving package manager will realize items like vlc2 or firefox45 are available and offer to install those.
Err codemadness.org 70 i 36423
Err codemadness.org 70 i 36420 The pkgin tool installs new programs in the /usr/pkg/bin directory. Depending on your configuration and shell, this location may not be in your user’s path, and it will be helpful to adjust your PATH variable accordingly.
Err codemadness.org 70 i 36421 The other common approach to acquiring new software is to use the pkgsrc framework. I have talked about using pkgsrc before and I will skip the details. Basically, we can download a collection of recipes for building popular open source software and run a command to download and install these items from their source code. Using pkgsrc basically gives us the same software as using pkgin would, but with some added flexibility on the options we use.
Err codemadness.org 70 i 36422 Once new software has been installed, it may need to be enabled and activated, particularly if it uses (or is) a background service. New items can be enabled in the /etc/rc.conf file and started or stopped using the service command. This works about the same as the service command on FreeBSD and most non-systemd Linux distributions.
Err codemadness.org 70 i 36430Err codemadness.org 70 i 36432 Err codemadness.org 70 i 36433I found that, when logged into the twm environment, NetBSD used about 130MB of RAM. This included kernel memory and all active memory. A fresh, Full install used up 1.5GB of disk space. I generally found NetBSD ran well in both VirtualBox and on my desktop computer. The system was quick and stable. I did have trouble getting a higher screen resolution in both environments. NetBSD does not offer VirtualBox add-on modules. There are NetBSD patches for VirtualBox out there, but there is some manual work involved in getting them working. When running on my desktop computer I think the resolution issue was one of finding and dealing with the correct video driver. Screen resolution aside, NetBSD performed well and detected all my hardware.
Err codemadness.org 70 i 36431
Err codemadness.org 70 i 36438Err codemadness.org 70 i 36444 Err codemadness.org 70 i 36445Since NetBSD provides users with a small, core operating system without many utilities if we want to use NetBSD for something we need to have a project in mind. I had four mini projects in mind I wanted to try this week: install a desktop environment, enable file sharing for computers on the local network, test multimedia (video, audio and YouTube capabilities), and set up a ZFS volume for storage.
Err codemadness.org 70 i 36443
Err codemadness.org 70 i 36439 I began with the desktop. Specifically, I followed the same tutorial I used three years ago to try to set up the Xfce desktop. While Xfce and its supporting services installed, I was unable to get a working desktop out of the experience. I could get the Xfce window manager working, but not the entire session. This tutorial worked beautifully with NetBSD 7.0, but not with version 8.0. Undeterred, I switched gears and installed Fluxbox instead. This gave me a slightly more powerful graphical environment than what I had before with twm while maintaining performance. Fluxbox ran without any problems, though its application menu was automatically populated with many programs which were not actually installed.
Err codemadness.org 70 i 36440 Next, I tried installing a few multimedia applications to play audio and video files. Here I ran into a couple of interesting problems. I found the music players I installed would play audio files, but the audio was quite slow. It always sounded like a cassette tape dragging. When I tried to play a video, the entire graphical session would crash, taking me back to the login screen. When I installed Firefox, I found I could play YouTube videos, and the video played smoothly, but again the audio was unusually slow.
Err codemadness.org 70 i 36441 I set up two methods of sharing files on the local network: OpenSSH and FTP. NetBSD basically gives us OpenSSH for free at install time and I added an FTP server through the pkgin package manager which worked beautifully with its default configuration.
Err codemadness.org 70 i 36442 I experimented with ZFS support a little, just enough to confirm I could create and access ZFS volumes. ZFS seems to work on NetBSD just as well, and with the same basic features, as it does on FreeBSD and mainstream Linux distributions. I think this is a good feature for the portable operating system to have since it means we can stick NetBSD on nearly any networked computer and use it as a NAS.
Err codemadness.org 70 i 36450Err codemadness.org 70 i 36458 Err codemadness.org 70 i 36459NetBSD, like its close cousins (FreeBSD and OpenBSD) does not do a lot of hand holding or automation. It offers a foundation that will run on most CPUs and we can choose to build on that foundation. I mention this because, on its own, NetBSD does not do much. If we want to get something out of it, we need to be willing to build on its foundation - we need a project. This is important to keep in mind as I think going into NetBSD and thinking, “Oh I’ll just explore around and expand on this as I go,” will likely lead to disappointment. I recommend figuring out what you want to do before installing NetBSD and making sure the required tools are available in the operating system’s repositories.
Err codemadness.org 70 i 36457
Err codemadness.org 70 i 36451 Some of the projects I embarked on this week (using ZFS and setting up file sharing) worked well. Others, like getting multimedia support and a full-featured desktop, did not. Given more time, I’m sure I could find a suitable desktop to install (along with the required documentation to get it and its services running), or customize one based on one of the available window managers. However, any full featured desktop is going to require some manual work. Media support was not great. The right players and codecs were there, but I was not able to get audio to play smoothly.
Err codemadness.org 70 i 36452 My main complaint with NetBSD relates to my struggle to get some features working to my satisfaction: the documentation is scattered. There are four different sections of the project’s website for documentation (FAQs, The Guide, manual pages and the wiki). Whatever we are looking for is likely to be in one of those, but which one? Or, just as likely, the tutorial we want is not there, but is on a forum or blog somewhere. I found that the documentation provided was often thin, more of a quick reference to remind people how something works rather than a full explanation.
Err codemadness.org 70 i 36453 As an example, I found a couple of documents relating to setting up a firewall. One dealt with networking NetBSD on a LAN, another explored IPv6 support, but neither gave an overview on syntax or a basic guide to blocking all but one or two ports. It seemed like that information should already be known, or picked up elsewhere.
Err codemadness.org 70 i 36454 Newcomers are likely to be a bit confused by software management guides for the same reason. Some pages refer to using a tool called pkg_add, others use pkgsrc and its make utility, others mention pkgin. Ultimately, these tools each give approximately the same result, but work differently and yet are mentioned almost interchangeably. I have used NetBSD before a few times and could stumble through these guides, but new users are likely to come away confused.
Err codemadness.org 70 i 36455 One quirk of NetBSD, which may be a security feature or an inconvenience, depending on one’s point of view, is super user programs are not included in regular users’ paths. This means we need to change our path if we want to be able to run programs typically used by root. For example, shutdown and mount are not in regular users’ paths by default. This made checking some things tricky for me.
Err codemadness.org 70 i 36456 Ultimately though, NetBSD is not famous for its convenience or features so much as its flexibility. The operating system will run on virtually any processor and should work almost identically across multiple platforms. That gives NetBSD users a good deal of consistency across a range of hardware and the chance to experiment with a member of the Unix family on hardware that might not be compatible with Linux or the other BSDs.
###Showing a Gigabit OpenBSD Firewall Some Monitoring Love
Err codemadness.org 70 i 36462 Err codemadness.org 70 i 36463Err codemadness.org 70 i 36464Err codemadness.org 70 i 36466 Err codemadness.org 70 i 36467I have a pretty long history of running my home servers or firewalls on “exotic” hardware. At first, it was Sun Microsystem hardware, then it moved to the excellent Soekris line, with some cool single board computers thrown in the mix. Recently I’ve been running OpenBSD Octeon on the Ubiquiti Edge Router Lite, an amazing little piece of kit at an amazing price point.
Err codemadness.org 70 i 36465
Err codemadness.org 70 i 36472Err codemadness.org 70 i 36476 Err codemadness.org 70 i 36477This setup has served me for some time and I’ve been extremely happy with it. But, in the #firstworldproblems category, I recently upgraded the household to the amazing Gigabit fibre offering from Sonic. A great problem to have, but also too much of a problem for the little Edge Router Lite (ERL).
Err codemadness.org 70 i 36475
Err codemadness.org 70 i 36473 The way the OpenBSD PF firewall works, it’s only able to process packets on a single core. Not a problem for the dual-core 500 MHz ERL when you’re pushing under ~200 Mbps, but more of a problem when you’re trying to push 1000 Mbps.
Err codemadness.org 70 i 36474 I needed something that was faster on a per core basis but still satisfied my usual firewall requirements. Loosely:
Err codemadness.org 70 i 36487Err codemadness.org 70 i 36490 Err codemadness.org 70 i 36491After evaluating a LOT of different options I settled on the Protectli Vault FW2B. With the specs required for the firewall (2 GB RAM and 8 GB drive) it comes in at a mere $239 USD! Installation of OpenBSD 6.4 was pretty straight forward, with the only problem I had was Etcher did not want to recognize the ‘.fs’ extension on the install image as bootable image. I quickly fixed this with good old Unix dd(1) on the Mac. Everything else was incredibly smooth.
Err codemadness.org 70 i 36489
Err codemadness.org 70 i 36488 After loading the same rulesets on my new install, the results were fantastic!
Err codemadness.org 70 i 36496Err codemadness.org 70 i 36504 Err codemadness.org 70 i 36505 Err codemadness.org 70 i 36506 Err codemadness.org 70 i 36507Now that the machine was up and running (and fast!), I wanted to know what it was doing. Over the years, I’ve always relied on the venerable pfstat software to give me an overview of my traffic, blocked packets, etc. It looks like this:
Err codemadness.org 70 i 36503
Err codemadness.org 70 i 36497 As you can see it’s based on RRDtool, which was simply incredible in its time. Having worked on monitoring almost continuously for almost the past decade, I wanted to see if we could re-implement the same functionality using more modern tools as RRDtool and pfstat definitely have their limitations. This might be an opportunity to learn some new things as well.
Err codemadness.org 70 i 36498 I came across pf-graphite which seemed to be a great start! He had everything I needed and I added a few more stats from the detailed interface statistics and the ability for the code to exit for running from cron(8), which is a bit more OpenBSD style. I added code for sending to some SaaS metrics platforms but ultimately stuck with straight Graphite. One important thing to note was to use the Graphite pickle port (2004) instead of the default plaintext port for submission. Also you will need to set a loginterface in your ‘pf.conf’.
Err codemadness.org 70 i 36499 A bit of tweaking with Graphite and Grafana, and I had a pretty darn good recreation of my original PF stats dashboard!
Err codemadness.org 70 i 36500 As you can see it’s based on RRDtool, which was simply incredible in its time. Having worked on monitoring almost continuously for almost the past decade, I wanted to see if we could re-implement the same functionality using more modern tools as RRDtool and pfstat definitely have their limitations. This might be an opportunity to learn some new things as well.
Err codemadness.org 70 i 36501 I came across pf-graphite which seemed to be a great start! He had everything I needed and I added a few more stats from the detailed interface statistics and the ability for the code to exit for running from cron(8), which is a bit more OpenBSD style. I added code for sending to some SaaS metrics platforms but ultimately stuck with straight Graphite. One important thing to note was to use the Graphite pickle port (2004) instead of the default plaintext port for submission. Also you will need to set a loginterface in your ‘pf.conf’.
Err codemadness.org 70 i 36502 A bit of tweaking with Graphite and Grafana, and I had a pretty darn good recreation of my original PF stats dashboard!
Err codemadness.org 70 i 36508Err codemadness.org 70 i 36514 Err codemadness.org 70 i 36515I once had a debate with members of my extended family about whether a computer science degree is a degree worth pursuing. I was in college at the time and trying to decide whether I should major in computer science. My aunt and a cousin of mine believed that I shouldn’t. They conceded that knowing how to program is of course a useful and lucrative thing, but they argued that the field of computer science advances so quickly that everything I learned would almost immediately be outdated. Better to pick up programming on the side and instead major in a field like economics or physics where the basic principles would be applicable throughout my lifetime.
Err codemadness.org 70 i 36513
Err codemadness.org 70 i 36509 I knew that my aunt and cousin were wrong and decided to major in computer science. (Sorry, aunt and cousin!) It is easy to see why the average person might believe that a field like computer science, or a profession like software engineering, completely reinvents itself every few years. We had personal computers, then the web, then phones, then machine learning… technology is always changing, so surely all the underlying principles and techniques change too. Of course, the amazing thing is how little actually changes. Most people, I’m sure, would be stunned to know just how old some of the important software on their computer really is. I’m not talking about flashy application software, admittedly—my copy of Firefox, the program I probably use the most on my computer, is not even two weeks old. But, if you pull up the manual page for something like grep, you will see that it has not been updated since 2010 (at least on MacOS). And the original version of grep was written in 1974, which in the computing world was back when dinosaurs roamed Silicon Valley. People (and programs) still depend on grep every day.
Err codemadness.org 70 i 36510 My aunt and cousin thought of computer technology as a series of increasingly elaborate sand castles supplanting one another after each high tide clears the beach. The reality, at least in many areas, is that we steadily accumulate programs that have solved problems. We might have to occasionally modify these programs to avoid software rot, but otherwise they can be left alone. grep is a simple program that solves a still-relevant problem, so it survives. Most application programming is done at a very high level, atop a pyramid of much older code solving much older problems. The ideas and concepts of 30 or 40 years ago, far from being obsolete today, have in many cases been embodied in software that you can still find installed on your laptop.
Err codemadness.org 70 i 36511 I thought it would be interesting to take a look at one such old program and see how much it had changed since it was first written. cat is maybe the simplest of all the Unix utilities, so I’m going to use it as my example. Ken Thompson wrote the original implementation of cat in 1969. If I were to tell somebody that I have a program on my computer from 1969, would that be accurate? How much has cat really evolved over the decades? How old is the software on our computers?
Err codemadness.org 70 i 36512 Thanks to repositories like this one, we can see exactly how cat has evolved since 1969. I’m going to focus on implementations of cat that are ancestors of the implementation I have on my Macbook. You will see, as we trace cat from the first versions of Unix down to the cat in MacOS today, that the program has been rewritten more times than you might expect—but it ultimately works more or less the same way it did fifty years ago.
Err codemadness.org 70 i 36520Err codemadness.org 70 i 36527 Err codemadness.org 70 i 36528Ken Thompson and Dennis Ritchie began writing Unix on a PDP 7. This was in 1969, before C, so all of the early Unix software was written in PDP 7 assembly. The exact flavor of assembly they used was unique to Unix, since Ken Thompson wrote his own assembler that added some features on top of the assembler provided by DEC, the PDP 7’s manufacturer. Thompson’s changes are all documented in the original Unix Programmer’s Manual under the entry for as, the assembler.
Err codemadness.org 70 i 36526
Err codemadness.org 70 i 36521 The first implementation of cat is thus in PDP 7 assembly. I’ve added comments that try to explain what each instruction is doing, but the program is still difficult to follow unless you understand some of the extensions Thompson made while writing his assembler. There are two important ones. First, the ; character can be used to separate multiple statements on the same line. It appears that this was used most often to put system call arguments on the same line as the sys instruction. Second, Thompson added support for “temporary labels” using the digits 0 through 9. These are labels that can be reused throughout a program, thus being, according to the Unix Programmer’s Manual, “less taxing both on the imagination of the programmer and on the symbol space of the assembler.” From any given instruction, you can refer to the next or most recent temporary label n using nf and nb respectively. For example, if you have some code in a block labeled 1:, you can jump back to that block from further down by using the instruction jmp 1b. (But you cannot jump forward to that block from above without using jmp 1f instead.)
Err codemadness.org 70 i 36522 The most interesting thing about this first version of cat is that it contains two names we should recognize. There is a block of instructions labeled getc and a block of instructions labeled putc, demonstrating that these names are older than the C standard library. The first version of cat actually contained implementations of both functions. The implementations buffered input so that reads and writes were not done a character at a time.
Err codemadness.org 70 i 36523 The first version of cat did not last long. Ken Thompson and Dennis Ritchie were able to persuade Bell Labs to buy them a PDP 11 so that they could continue to expand and improve Unix. The PDP 11 had a different instruction set, so cat had to be rewritten. I’ve marked up this second version of cat with comments as well. It uses new assembler mnemonics for the new instruction set and takes advantage of the PDP 11’s various addressing modes. (If you are confused by the parentheses and dollar signs in the source code, those are used to indicate different addressing modes.) But it also leverages the ; character and temporary labels just like the first version of cat, meaning that these features must have been retained when as was adapted for the PDP 11.
Err codemadness.org 70 i 36524 The second version of cat is significantly simpler than the first. It is also more “Unix-y” in that it doesn’t just expect a list of filename arguments—it will, when given no arguments, read from stdin, which is what cat still does today. You can also give this version of cat an argument of - to indicate that it should read from stdin.
Err codemadness.org 70 i 36525 In 1973, in preparation for the release of the Fourth Edition of Unix, much of Unix was rewritten in C. But cat does not seem to have been rewritten in C until a while after that. The first C implementation of cat only shows up in the Seventh Edition of Unix. This implementation is really fun to look through because it is so simple. Of all the implementations to follow, this one most resembles the idealized cat used as a pedagogic demonstration in K&R C. The heart of the program is the classic two-liner:
while ((c = getc(fi)) != EOF)
Err codemadness.org 70
i 36529 putchar(c);
Err codemadness.org 70 i 36532Err codemadness.org 70 i 36534 Err codemadness.org 70 i 36535There is of course quite a bit more code than that, but the extra code is mostly there to ensure that you aren’t reading and writing to the same file. The other interesting thing to note is that this implementation of cat only recognized one flag, -u. The -u flag could be used to avoid buffering input and output, which cat would otherwise do in blocks of 512 bytes.
Err codemadness.org 70 i 36533
Err codemadness.org 70 i 36540Err codemadness.org 70 i 36544 Err codemadness.org 70 i 36545After the Seventh Edition, Unix spawned all sorts of derivatives and offshoots. MacOS is built on top of Darwin, which in turn is derived from the Berkeley Software Distribution (BSD), so BSD is the Unix offshoot we are most interested in. BSD was originally just a collection of useful programs and add-ons for Unix, but it eventually became a complete operating system. BSD seems to have relied on the original cat implementation up until the fourth BSD release, known as 4BSD, when support was added for a whole slew of new flags. The 4BSD implementation of cat is clearly derived from the original implementation, though it adds a new function to implement the behavior triggered by the new flags. The naming conventions already used in the file were adhered to—the fflg variable, used to mark whether input was being read from stdin or a file, was joined by nflg, bflg, vflg, sflg, eflg, and tflg, all there to record whether or not each new flag was supplied in the invocation of the program. These were the last command-line flags added to cat; the man page for cat today lists these flags and no others, at least on Mac OS. 4BSD was released in 1980, so this set of flags is 38 years old.
Err codemadness.org 70 i 36543
Err codemadness.org 70 i 36541 cat would be entirely rewritten a final time for BSD Net/2, which was, among other things, an attempt to avoid licensing issues by replacing all AT&T Unix-derived code with new code. BSD Net/2 was released in 1991. This final rewrite of cat was done by Kevin Fall, who graduated from Berkeley in 1988 and spent the next year working as a staff member at the Computer Systems Research Group (CSRG). Fall told me that a list of Unix utilities still implemented using AT&T code was put up on a wall at CSRG and staff were told to pick the utilities they wanted to reimplement. Fall picked cat and mknod. The cat implementation bundled with MacOS today is built from a source file that still bears his name at the very top. His version of cat, even though it is a relatively trivial program, is today used by millions.
Err codemadness.org 70 i 36542 Fall’s original implementation of cat is much longer than anything we have seen so far. Other than support for a -? help flag, it adds nothing in the way of new functionality. Conceptually, it is very similar to the 4BSD implementation. It is only longer because Fall separates the implementation into a “raw” mode and a “cooked” mode. The “raw” mode is cat classic; it prints a file character for character. The “cooked” mode is cat with all the 4BSD command-line options. The distinction makes sense but it also pads out the implementation so that it seems more complex at first glance than it actually is. There is also a fancy error handling function at the end of the file that further adds to its length.
Err codemadness.org 70 i 36550Err codemadness.org 70 i 36556 Err codemadness.org 70 i 36557The very first release of Mac OS X thus includes an implementation of cat pulled from the NetBSD project. So the first Mac OS X implementation of cat is Kevin Fall’s cat. The only thing that had changed over the intervening decade was that Fall’s error-handling function err() was removed and the err() function made available by err.h was used in its place. err.h is a BSD extension to the C standard library.
Err codemadness.org 70 i 36555
Err codemadness.org 70 i 36551 The NetBSD implementation of cat was later swapped out for FreeBSD’s implementation of cat. According to Wikipedia, Apple began using FreeBSD instead of NetBSD in Mac OS X 10.3 (Panther). But the Mac OS X implementation of cat, according to Apple’s own open source releases, was not replaced until Mac OS X 10.5 (Leopard) was released in 2007. The FreeBSD implementation that Apple swapped in for the Leopard release is the same implementation on Apple computers today. As of 2018, the implementation has not been updated or changed at all since 2007.
Err codemadness.org 70 i 36552 So the Mac OS cat is old. As it happens, it is actually two years older than its 2007 appearance in MacOS X would suggest. This 2005 change, which is visible in FreeBSD’s Github mirror, was the last change made to FreeBSD’s cat before Apple pulled it into Mac OS X. So the Mac OS X cat implementation, which has not been kept in sync with FreeBSD’s cat implementation, is officially 13 years old. There’s a larger debate to be had about how much software can change before it really counts as the same software; in this case, the source file has not changed at all since 2005.
Err codemadness.org 70 i 36553 The cat implementation used by Mac OS today is not that different from the implementation that Fall wrote for the 1991 BSD Net/2 release. The biggest difference is that a whole new function was added to provide Unix domain socket support. At some point, a FreeBSD developer also seems to have decided that Fall’s raw_args() function and cook_args() should be combined into a single function called scanfiles(). Otherwise, the heart of the program is still Fall’s code.
Err codemadness.org 70 i 36554 I asked Fall how he felt about having written the cat implementation now used by millions of Apple users, either directly or indirectly through some program that relies on cat being present. Fall, who is now a consultant and a co-author of the most recent editions of TCP/IP Illustrated, says that he is surprised when people get such a thrill out of learning about his work on cat. Fall has had a long career in computing and has worked on many high-profile projects, but it seems that many people still get most excited about the six months of work he put into rewriting cat in 1989.
Err codemadness.org 70 i 36562Err codemadness.org 70 i 36566 Err codemadness.org 70 i 36567In the grand scheme of things, computers are not an old invention. We’re used to hundred-year-old photographs or even hundred-year-old camera footage. But computer programs are in a different category—they’re high-tech and new. At least, they are now. As the computing industry matures, will we someday find ourselves using programs that approach the hundred-year-old mark?
Err codemadness.org 70 i 36565
Err codemadness.org 70 i 36563 Computer hardware will presumably change enough that we won’t be able to take an executable compiled today and run it on hardware a century from now. Perhaps advances in programming language design will also mean that nobody will understand C in the future and cat will have long since been rewritten in another language. (Though C has already been around for fifty years, and it doesn’t look like it is about to be replaced any time soon.) But barring all that, why not just keep using the cat we have forever?
Err codemadness.org 70 i 36564 I think the history of cat shows that some ideas in computer science are in fact very durable. Indeed, with cat, both the idea and the program itself are old. It may not be accurate to say that the cat on my computer is from 1969. But I could make a case for saying that the cat on my computer is from 1989, when Fall wrote his implementation of cat. Lots of other software is just as ancient. So maybe we shouldn’t think of computer science and software development primarily as fields that disrupt the status quo and invent new things. Our computer systems are built out of historical artifacts. At some point, we may all spend more time trying to understand and maintain those historical artifacts than we spend writing new code.
##News Roundup
Err codemadness.org 70
i 36570 ###Trivial Bug in X.Org Gives Root Permission on Linux and BSD Systems
Err codemadness.org 70 i 36573Err codemadness.org 70 i 36576 Err codemadness.org 70 i 36577A vulnerability that is trivial to exploit allows privilege escalation to root level on Linux and BSD distributions using X.Org server, the open source implementation of the X Window System that offers the graphical environment.
Err codemadness.org 70 i 36575
Err codemadness.org 70 i 36574 The flaw is now identified as CVE-2018-14665 (credited to security researcher Narendra Shinde). It has been present in xorg-server for two years, since version 1.19.0 and is exploitable by a limited user as long as the X server runs with elevated permissions.
Err codemadness.org 70 i 36582Err codemadness.org 70 i 36585 Err codemadness.org 70 i 36586An advisory on Thursday describes the problem as an “incorrect command-line parameter validation” that also allows an attacker to overwrite arbitrary files.
Err codemadness.org 70 i 36584
Err codemadness.org 70 i 36583 Privilege escalation can be accomplished via the -modulepath argument by setting an insecure path to modules loaded by the X.org server. Arbitrary file overwrite is possible through the -logfile argument, because of improper verification when parsing the option.
Err codemadness.org 70 i 36591Err codemadness.org 70 i 36598 Err codemadness.org 70 i 36599OpenBSD, the free and open-source operating system with a strong focus on security, uses xorg. On October 18, the project released version 6.4 of the OS, affected by CVE-2018-14665. This could have been avoided, though.
Err codemadness.org 70 i 36597
Err codemadness.org 70 i 36592 Theo de Raadt, founder and leader of the OpenBSD project, says that X maintainer knew about the problem since at least October 11. For some reason, the OpenBSD developers received the message one hour before the public announcement this Thursday, a week after their new OS release.
Err codemadness.org 70 i 36593 “As yet we don’t have answers about why our X maintainer (on the X security team) and his team provided information to other projects (some who don’t even ship with this new X server) but chose to not give us a heads-up which could have saved all the new 6.4 users a lot of grief,” Raadt says.
Err codemadness.org 70 i 36594 Had OpenBSD developers known about the bug before the release, they could have taken steps to mitigate the problem or delay the launch for a week or two.
Err codemadness.org 70 i 36595 To remedy the problem, the OpenBSD project provides a source code patch, which requires compiling and rebuilding the X server.
Err codemadness.org 70 i 36596 As a temporary solution, users can disable the Xorg binary by running the following command:
chmod u-s /usr/X11R6/bin/Xorg
Err codemadness.org 70 i 36606Err codemadness.org 70 i 36611 Err codemadness.org 70 i 36612CVE-2018-14665 does not help compromise systems, but it is useful in the following stages of an attack.
Err codemadness.org 70 i 36610
Err codemadness.org 70 i 36607 Leveraging it after gaining access to a vulnerable machine is fairly easy. Matthew Hickey, co-founder, and head of Hacker House security outfit created and published an exploit, saying that it can be triggered from a remote SSH session.
Err codemadness.org 70 i 36608 Three hours after the public announcement of the security gap, Daemon Security CEO Michael Shirk replied with one line that overwrote shadow files on the system. Hickey did one better and fit the entire local privilege escalation exploit in one line.
Err codemadness.org 70 i 36609 Apart from OpenBSD, other operating systems affected by the bug include Debian and Ubuntu, Fedora and its downstream distro Red Hat Enterprise Linux along with its community-supported counterpart CentOS.
###OpenBSD on the Desktop: some thoughts
Err codemadness.org 70 i 36615 Err codemadness.org 70 i 36616Err codemadness.org 70 i 36617Err codemadness.org 70 i 36637 Err codemadness.org 70 i 36638I’ve been using OpenBSD on my ThinkPad X230 for some weeks now, and the experience has been peculiar in some ways.
Err codemadness.org 70 i 36636
Err codemadness.org 70 i 36618 The OS itself in my opinion is not ready for widespread desktop usage, and the development team is not trying to push it in the throat of anybody who wants a Windows or macOS alternative.
Err codemadness.org 70 i 36619 You need to understand a little bit of how *NIX systems work, because you’ll use CLI more than UI.
Err codemadness.org 70 i 36620 That’s not necessarily bad, and I’m sure I learned a trick or two that could translate easily to Linux or macOS.
Err codemadness.org 70 i 36621 Their development process is purely based on developers that love to contribute and hack around, just because it’s fun.
Err codemadness.org 70 i 36622 Even the mailing list is a cool place to hang on!
Err codemadness.org 70 i 36623 Code correctness and security are a must, nothing gets committed if it doesn’t get reviewed thoroughly first - nowadays the first two properties should be enforced in every major operating system.
Err codemadness.org 70 i 36624 I like the idea of a platform that continually evolves.
Err codemadness.org 70 i 36625 pledge(2) and unveil(2) are the proof that with a little effort, you can secure existing software better than ever.
Err codemadness.org 70 i 36626 I like the “sensible defaults” approach, having an OS ready to be used - UI included if you selected it during the setup process - is great.
Err codemadness.org 70 i 36627 Just install a browser and you’re ready to go.
Err codemadness.org 70 i 36628 Manual pages on OpenBSD are real manuals, not an extension of the “–help” command found in most CLI softwares.
Err codemadness.org 70 i 36629 They help you understand inner workings of the operating system, no internet connection needed.
Err codemadness.org 70 i 36630 There are some trade-offs, too.
Err codemadness.org 70 i 36631 Performance is not first-class, mostly because of all the security mitigations and checks done at runtime3.
Err codemadness.org 70 i 36632 I write Go code in neovim, and sometimes you can feel a slight slowdown when you’re compiling and editing multiple files at the same time, but usually I can’t notice any meaningful difference.
Err codemadness.org 70 i 36633 Browsers are a different matter though, you can definitely feel something differs from the experience you can have on mainstream operating systems.
Err codemadness.org 70 i 36634 But again, trade-offs.
Err codemadness.org 70 i 36635 To use OpenBSD on the desktop you must be ready to sacrifice some of the goodies of mainstream OSes, but if you’re searching for a zen place to do your computing stuff, it’s the best you can get right now.
Err codemadness.org 70 i 36643Err codemadness.org 70 i 36647 Err codemadness.org 70 i 36648One of the most recent additions to the DistroWatch database is NomadBSD. According to the NomadBSD website: “NomadBSD is a 64-bit live system for USB flash drives, based on FreeBSD. Together with automatic hardware detection and setup, it is configured to be used as a desktop system that works out of the box, but can also be used for data recovery.”
Err codemadness.org 70 i 36646
Err codemadness.org 70 i 36644 The latest release of NomadBSD (or simply “Nomad”, as I will refer to the project in this review) is version 1.1. It is based on FreeBSD 11.2 and is offered in two builds, one for generic personal computers and one for Macbooks. The release announcement mentions version 1.1 offers improved video driver support for Intel and AMD cards. The operating system ships with Octopkg for graphical package management and the system should automatically detect, and work with, VirtualBox environments.
Err codemadness.org 70 i 36645 Nomad 1.1 is available as a 2GB download, which we then decompress to produce a 4GB file which can be written to a USB thumb drive. There is no optical media build of Nomad as it is designed to be run entirely from the USB drive, and write data persistently to the drive, rather than simply being installed from the USB media.
Err codemadness.org 70 i 36653Err codemadness.org 70 i 36657 Err codemadness.org 70 i 36658Booting from the USB drive brings up a series of text-based menus which ask us to configure key parts of the operating system. We are asked to select our time zone, keyboard layout, keyboard model, keyboard mapping and our preferred language. While we can select options from a list, the options tend to be short and cryptic. Rather than “English (US)”, for example, we might be given “en_US”. We are also asked to create a password for the root user account and another one for a regular user which is called “nomad”. We can then select which shell nomad will use. The default is zsh, but there are plenty of other options, including csh and bash. We have the option of encrypting our user’s home directory.
Err codemadness.org 70 i 36656
Err codemadness.org 70 i 36654 I feel it is important to point out that these settings, and nomad’s home directory, are stored on the USB drive. The options and settings we select will not be saved to our local hard drive and our configuration choices will not affect other operating systems already installed on our computer. At the end, the configuration wizard asks if we want to run the BSDstats service. This option is not explained at all, but it contacts BSDstats to provide some basic statistics on BSD users.
Err codemadness.org 70 i 36655 The system then takes a few minutes to apply its changes to the USB drive and automatically reboots the computer. While running the initial setup wizard, I had nearly identical experiences when running Nomad on a physical computer and running the operating system in a VirtualBox virtual machine. However, after the initial setup process was over, I had quite different experiences depending on the environment so I want to divide my experiences into two different sections.
Err codemadness.org 70 i 36663Err codemadness.org 70 i 36668 Err codemadness.org 70 i 36669At first, Nomad failed to boot on my desktop computer. From the operating system’s boot loader, I enabled Safe Mode which allowed Nomad to boot. At that point, Nomad was able to start up, but would only display a text console. The desktop environment failed to start when running in Safe Mode.
Err codemadness.org 70 i 36667
Err codemadness.org 70 i 36664 Networking was also disabled by default and I had to enable a network interface and DHCP address assignment to connect to the Internet. Instructions for enabling networking can be found in FreeBSD’s Handbook. Once we are on-line we can use the pkg command line package manager to install and update software. Had the desktop environment worked then the Octopkg graphical package manager would also be available to make browsing and installing software a point-n-click experience.
Err codemadness.org 70 i 36665 Had I been able to run the desktop for prolonged amounts of time I could have made use of such pre-installed items as the Firefox web browser, the VLC media player, LibreOffice and Thunderbird. Nomad offers a fairly small collection of desktop applications, but what is there is mostly popular, capable software.
Err codemadness.org 70 i 36666 When running the operating system I noted that, with one user logged in, Nomad only runs 15 processes with the default configuration. These processes require less than 100MB of RAM, and the whole system fits comfortably on a 4GB USB drive.
Err codemadness.org 70 i 36674Err codemadness.org 70 i 36677 Err codemadness.org 70 i 36678Ultimately using Nomad was not a practical option for me. The operating system did not work well with my hardware, or the virtual environment. In the virtual machine, Nomad crashed consistently after just a few minutes of uptime. On the desktop computer, I could not get a desktop environment to run. The command line tools worked well, and the system performed tasks very quickly, but a command line only environment is not well suited to my workflow.
Err codemadness.org 70 i 36676
Err codemadness.org 70 i 36675 I like the idea of what NomadBSD is offering. There are not many live desktop flavours of FreeBSD, apart from GhostBSD. It was nice to see developers trying to make a FreeBSD-based, plug-and-go operating system that would offer a desktop and persistent storage. I suspect the system would work and perform its stated functions on different hardware, but in my case my experiment was necessarily short lived.
##Beastie Bits
Err codemadness.org 70 i 36681 Err codemadness.org 70 i 36682##Feedback/Questions
Err codemadness.org 70 i 36698 Err codemadness.org 70 i 36699##Headlines
Err codemadness.org 70
i 36721 ###Some thoughts on NetBSD 8.0
Err codemadness.org 70 i 36724Err codemadness.org 70 i 36727 Err codemadness.org 70 i 36728NetBSD is a highly portable operating system which can be run on dozens of different hardware architectures. The operating system’s clean and minimal design allow it to be run in all sorts of environments, ranging from embedded devices, to servers, to workstations. While the base operating system is minimal, NetBSD users have access to a large repository of binary packages and a ports tree which I will touch upon later.
Err codemadness.org 70 i 36726
Err codemadness.org 70 i 36725 I last tried NetBSD 7.0 about three years ago and decided it was time to test drive the operating system again. In the past three years NetBSD has introduced a few new features, many of them security enhancements. For example, NetBSD now supports write exclusive-or execute (W^X) protection and address space layout randomization (ASLR) to protect programs against common attacks. NetBSD 8.0 also includes USB3 support and the ability to work with ZFS storage volumes.
Err codemadness.org 70 i 36733Err codemadness.org 70 i 36735 Err codemadness.org 70 i 36736Since I had set up NetBSD with a Full install and enabled xdm during the setup process, the operating system booted to a graphical login screen. From here we can sign into our account. The login screen does not provide options to shut down or restart the computer. Logging into our account brings up the twm window manager and provides a virtual terminal, courtesy of xterm. There is a panel that provides a method for logging out of the window manager. The twm environment is sparse, fast and devoid of distractions.
Err codemadness.org 70 i 36734
Err codemadness.org 70 i 36741Err codemadness.org 70 i 36746 Err codemadness.org 70 i 36747NetBSD ships with a fairly standard collection of command line tools and manual pages, but otherwise it is a fairly minimal platform. If we want to run network services, have access to a web browser, or use a word processor we are going to need to install more software. There are two main approaches to installing new packages. The first, and easier approach, is to use the pkgin package manager. The pkgin utility works much the same way APT or DNF work in the Linux world, or as pkg works on FreeBSD. We can search for software by name, install or remove items. I found pkgin worked well, though its output can be terse. My only complaint with pkgin is that it does not handle “close enough” package names. For example, if I tried to run “pkgin install vlc” or “pkgin install firefox” I would quickly be told these items did not exist. But a more forgiving package manager will realize items like vlc2 or firefox45 are available and offer to install those.
Err codemadness.org 70 i 36745
Err codemadness.org 70 i 36742 The pkgin tool installs new programs in the /usr/pkg/bin directory. Depending on your configuration and shell, this location may not be in your user’s path, and it will be helpful to adjust your PATH variable accordingly.
Err codemadness.org 70 i 36743 The other common approach to acquiring new software is to use the pkgsrc framework. I have talked about using pkgsrc before and I will skip the details. Basically, we can download a collection of recipes for building popular open source software and run a command to download and install these items from their source code. Using pkgsrc basically gives us the same software as using pkgin would, but with some added flexibility on the options we use.
Err codemadness.org 70 i 36744 Once new software has been installed, it may need to be enabled and activated, particularly if it uses (or is) a background service. New items can be enabled in the /etc/rc.conf file and started or stopped using the service command. This works about the same as the service command on FreeBSD and most non-systemd Linux distributions.
Err codemadness.org 70 i 36752Err codemadness.org 70 i 36754 Err codemadness.org 70 i 36755I found that, when logged into the twm environment, NetBSD used about 130MB of RAM. This included kernel memory and all active memory. A fresh, Full install used up 1.5GB of disk space. I generally found NetBSD ran well in both VirtualBox and on my desktop computer. The system was quick and stable. I did have trouble getting a higher screen resolution in both environments. NetBSD does not offer VirtualBox add-on modules. There are NetBSD patches for VirtualBox out there, but there is some manual work involved in getting them working. When running on my desktop computer I think the resolution issue was one of finding and dealing with the correct video driver. Screen resolution aside, NetBSD performed well and detected all my hardware.
Err codemadness.org 70 i 36753
Err codemadness.org 70 i 36760Err codemadness.org 70 i 36766 Err codemadness.org 70 i 36767Since NetBSD provides users with a small, core operating system without many utilities if we want to use NetBSD for something we need to have a project in mind. I had four mini projects in mind I wanted to try this week: install a desktop environment, enable file sharing for computers on the local network, test multimedia (video, audio and YouTube capabilities), and set up a ZFS volume for storage.
Err codemadness.org 70 i 36765
Err codemadness.org 70 i 36761 I began with the desktop. Specifically, I followed the same tutorial I used three years ago to try to set up the Xfce desktop. While Xfce and its supporting services installed, I was unable to get a working desktop out of the experience. I could get the Xfce window manager working, but not the entire session. This tutorial worked beautifully with NetBSD 7.0, but not with version 8.0. Undeterred, I switched gears and installed Fluxbox instead. This gave me a slightly more powerful graphical environment than what I had before with twm while maintaining performance. Fluxbox ran without any problems, though its application menu was automatically populated with many programs which were not actually installed.
Err codemadness.org 70 i 36762 Next, I tried installing a few multimedia applications to play audio and video files. Here I ran into a couple of interesting problems. I found the music players I installed would play audio files, but the audio was quite slow. It always sounded like a cassette tape dragging. When I tried to play a video, the entire graphical session would crash, taking me back to the login screen. When I installed Firefox, I found I could play YouTube videos, and the video played smoothly, but again the audio was unusually slow.
Err codemadness.org 70 i 36763 I set up two methods of sharing files on the local network: OpenSSH and FTP. NetBSD basically gives us OpenSSH for free at install time and I added an FTP server through the pkgin package manager which worked beautifully with its default configuration.
Err codemadness.org 70 i 36764 I experimented with ZFS support a little, just enough to confirm I could create and access ZFS volumes. ZFS seems to work on NetBSD just as well, and with the same basic features, as it does on FreeBSD and mainstream Linux distributions. I think this is a good feature for the portable operating system to have since it means we can stick NetBSD on nearly any networked computer and use it as a NAS.
Err codemadness.org 70 i 36772Err codemadness.org 70 i 36780 Err codemadness.org 70 i 36781NetBSD, like its close cousins (FreeBSD and OpenBSD) does not do a lot of hand holding or automation. It offers a foundation that will run on most CPUs and we can choose to build on that foundation. I mention this because, on its own, NetBSD does not do much. If we want to get something out of it, we need to be willing to build on its foundation - we need a project. This is important to keep in mind as I think going into NetBSD and thinking, “Oh I’ll just explore around and expand on this as I go,” will likely lead to disappointment. I recommend figuring out what you want to do before installing NetBSD and making sure the required tools are available in the operating system’s repositories.
Err codemadness.org 70 i 36779
Err codemadness.org 70 i 36773 Some of the projects I embarked on this week (using ZFS and setting up file sharing) worked well. Others, like getting multimedia support and a full-featured desktop, did not. Given more time, I’m sure I could find a suitable desktop to install (along with the required documentation to get it and its services running), or customize one based on one of the available window managers. However, any full featured desktop is going to require some manual work. Media support was not great. The right players and codecs were there, but I was not able to get audio to play smoothly.
Err codemadness.org 70 i 36774 My main complaint with NetBSD relates to my struggle to get some features working to my satisfaction: the documentation is scattered. There are four different sections of the project’s website for documentation (FAQs, The Guide, manual pages and the wiki). Whatever we are looking for is likely to be in one of those, but which one? Or, just as likely, the tutorial we want is not there, but is on a forum or blog somewhere. I found that the documentation provided was often thin, more of a quick reference to remind people how something works rather than a full explanation.
Err codemadness.org 70 i 36775 As an example, I found a couple of documents relating to setting up a firewall. One dealt with networking NetBSD on a LAN, another explored IPv6 support, but neither gave an overview on syntax or a basic guide to blocking all but one or two ports. It seemed like that information should already be known, or picked up elsewhere.
Err codemadness.org 70 i 36776 Newcomers are likely to be a bit confused by software management guides for the same reason. Some pages refer to using a tool called pkg_add, others use pkgsrc and its make utility, others mention pkgin. Ultimately, these tools each give approximately the same result, but work differently and yet are mentioned almost interchangeably. I have used NetBSD before a few times and could stumble through these guides, but new users are likely to come away confused.
Err codemadness.org 70 i 36777 One quirk of NetBSD, which may be a security feature or an inconvenience, depending on one’s point of view, is super user programs are not included in regular users’ paths. This means we need to change our path if we want to be able to run programs typically used by root. For example, shutdown and mount are not in regular users’ paths by default. This made checking some things tricky for me.
Err codemadness.org 70 i 36778 Ultimately though, NetBSD is not famous for its convenience or features so much as its flexibility. The operating system will run on virtually any processor and should work almost identically across multiple platforms. That gives NetBSD users a good deal of consistency across a range of hardware and the chance to experiment with a member of the Unix family on hardware that might not be compatible with Linux or the other BSDs.
###Showing a Gigabit OpenBSD Firewall Some Monitoring Love
Err codemadness.org 70 i 36784 Err codemadness.org 70 i 36785Err codemadness.org 70 i 36786Err codemadness.org 70 i 36788 Err codemadness.org 70 i 36789I have a pretty long history of running my home servers or firewalls on “exotic” hardware. At first, it was Sun Microsystem hardware, then it moved to the excellent Soekris line, with some cool single board computers thrown in the mix. Recently I’ve been running OpenBSD Octeon on the Ubiquiti Edge Router Lite, an amazing little piece of kit at an amazing price point.
Err codemadness.org 70 i 36787
Err codemadness.org 70 i 36794Err codemadness.org 70 i 36798 Err codemadness.org 70 i 36799This setup has served me for some time and I’ve been extremely happy with it. But, in the #firstworldproblems category, I recently upgraded the household to the amazing Gigabit fibre offering from Sonic. A great problem to have, but also too much of a problem for the little Edge Router Lite (ERL).
Err codemadness.org 70 i 36797
Err codemadness.org 70 i 36795 The way the OpenBSD PF firewall works, it’s only able to process packets on a single core. Not a problem for the dual-core 500 MHz ERL when you’re pushing under ~200 Mbps, but more of a problem when you’re trying to push 1000 Mbps.
Err codemadness.org 70 i 36796 I needed something that was faster on a per core basis but still satisfied my usual firewall requirements. Loosely:
Err codemadness.org 70 i 36809Err codemadness.org 70 i 36812 Err codemadness.org 70 i 36813After evaluating a LOT of different options I settled on the Protectli Vault FW2B. With the specs required for the firewall (2 GB RAM and 8 GB drive) it comes in at a mere $239 USD! Installation of OpenBSD 6.4 was pretty straight forward, with the only problem I had was Etcher did not want to recognize the ‘.fs’ extension on the install image as bootable image. I quickly fixed this with good old Unix dd(1) on the Mac. Everything else was incredibly smooth.
Err codemadness.org 70 i 36811
Err codemadness.org 70 i 36810 After loading the same rulesets on my new install, the results were fantastic!
Err codemadness.org 70 i 36818Err codemadness.org 70 i 36826 Err codemadness.org 70 i 36827 Err codemadness.org 70 i 36828 Err codemadness.org 70 i 36829Now that the machine was up and running (and fast!), I wanted to know what it was doing. Over the years, I’ve always relied on the venerable pfstat software to give me an overview of my traffic, blocked packets, etc. It looks like this:
Err codemadness.org 70 i 36825
Err codemadness.org 70 i 36819 As you can see it’s based on RRDtool, which was simply incredible in its time. Having worked on monitoring almost continuously for almost the past decade, I wanted to see if we could re-implement the same functionality using more modern tools as RRDtool and pfstat definitely have their limitations. This might be an opportunity to learn some new things as well.
Err codemadness.org 70 i 36820 I came across pf-graphite which seemed to be a great start! He had everything I needed and I added a few more stats from the detailed interface statistics and the ability for the code to exit for running from cron(8), which is a bit more OpenBSD style. I added code for sending to some SaaS metrics platforms but ultimately stuck with straight Graphite. One important thing to note was to use the Graphite pickle port (2004) instead of the default plaintext port for submission. Also you will need to set a loginterface in your ‘pf.conf’.
Err codemadness.org 70 i 36821 A bit of tweaking with Graphite and Grafana, and I had a pretty darn good recreation of my original PF stats dashboard!
Err codemadness.org 70 i 36822 As you can see it’s based on RRDtool, which was simply incredible in its time. Having worked on monitoring almost continuously for almost the past decade, I wanted to see if we could re-implement the same functionality using more modern tools as RRDtool and pfstat definitely have their limitations. This might be an opportunity to learn some new things as well.
Err codemadness.org 70 i 36823 I came across pf-graphite which seemed to be a great start! He had everything I needed and I added a few more stats from the detailed interface statistics and the ability for the code to exit for running from cron(8), which is a bit more OpenBSD style. I added code for sending to some SaaS metrics platforms but ultimately stuck with straight Graphite. One important thing to note was to use the Graphite pickle port (2004) instead of the default plaintext port for submission. Also you will need to set a loginterface in your ‘pf.conf’.
Err codemadness.org 70 i 36824 A bit of tweaking with Graphite and Grafana, and I had a pretty darn good recreation of my original PF stats dashboard!
Err codemadness.org 70 i 36830Err codemadness.org 70 i 36836 Err codemadness.org 70 i 36837I once had a debate with members of my extended family about whether a computer science degree is a degree worth pursuing. I was in college at the time and trying to decide whether I should major in computer science. My aunt and a cousin of mine believed that I shouldn’t. They conceded that knowing how to program is of course a useful and lucrative thing, but they argued that the field of computer science advances so quickly that everything I learned would almost immediately be outdated. Better to pick up programming on the side and instead major in a field like economics or physics where the basic principles would be applicable throughout my lifetime.
Err codemadness.org 70 i 36835
Err codemadness.org 70 i 36831 I knew that my aunt and cousin were wrong and decided to major in computer science. (Sorry, aunt and cousin!) It is easy to see why the average person might believe that a field like computer science, or a profession like software engineering, completely reinvents itself every few years. We had personal computers, then the web, then phones, then machine learning… technology is always changing, so surely all the underlying principles and techniques change too. Of course, the amazing thing is how little actually changes. Most people, I’m sure, would be stunned to know just how old some of the important software on their computer really is. I’m not talking about flashy application software, admittedly—my copy of Firefox, the program I probably use the most on my computer, is not even two weeks old. But, if you pull up the manual page for something like grep, you will see that it has not been updated since 2010 (at least on MacOS). And the original version of grep was written in 1974, which in the computing world was back when dinosaurs roamed Silicon Valley. People (and programs) still depend on grep every day.
Err codemadness.org 70 i 36832 My aunt and cousin thought of computer technology as a series of increasingly elaborate sand castles supplanting one another after each high tide clears the beach. The reality, at least in many areas, is that we steadily accumulate programs that have solved problems. We might have to occasionally modify these programs to avoid software rot, but otherwise they can be left alone. grep is a simple program that solves a still-relevant problem, so it survives. Most application programming is done at a very high level, atop a pyramid of much older code solving much older problems. The ideas and concepts of 30 or 40 years ago, far from being obsolete today, have in many cases been embodied in software that you can still find installed on your laptop.
Err codemadness.org 70 i 36833 I thought it would be interesting to take a look at one such old program and see how much it had changed since it was first written. cat is maybe the simplest of all the Unix utilities, so I’m going to use it as my example. Ken Thompson wrote the original implementation of cat in 1969. If I were to tell somebody that I have a program on my computer from 1969, would that be accurate? How much has cat really evolved over the decades? How old is the software on our computers?
Err codemadness.org 70 i 36834 Thanks to repositories like this one, we can see exactly how cat has evolved since 1969. I’m going to focus on implementations of cat that are ancestors of the implementation I have on my Macbook. You will see, as we trace cat from the first versions of Unix down to the cat in MacOS today, that the program has been rewritten more times than you might expect—but it ultimately works more or less the same way it did fifty years ago.
Err codemadness.org 70 i 36842Err codemadness.org 70 i 36849 Err codemadness.org 70 i 36850Ken Thompson and Dennis Ritchie began writing Unix on a PDP 7. This was in 1969, before C, so all of the early Unix software was written in PDP 7 assembly. The exact flavor of assembly they used was unique to Unix, since Ken Thompson wrote his own assembler that added some features on top of the assembler provided by DEC, the PDP 7’s manufacturer. Thompson’s changes are all documented in the original Unix Programmer’s Manual under the entry for as, the assembler.
Err codemadness.org 70 i 36848
Err codemadness.org 70 i 36843 The first implementation of cat is thus in PDP 7 assembly. I’ve added comments that try to explain what each instruction is doing, but the program is still difficult to follow unless you understand some of the extensions Thompson made while writing his assembler. There are two important ones. First, the ; character can be used to separate multiple statements on the same line. It appears that this was used most often to put system call arguments on the same line as the sys instruction. Second, Thompson added support for “temporary labels” using the digits 0 through 9. These are labels that can be reused throughout a program, thus being, according to the Unix Programmer’s Manual, “less taxing both on the imagination of the programmer and on the symbol space of the assembler.” From any given instruction, you can refer to the next or most recent temporary label n using nf and nb respectively. For example, if you have some code in a block labeled 1:, you can jump back to that block from further down by using the instruction jmp 1b. (But you cannot jump forward to that block from above without using jmp 1f instead.)
Err codemadness.org 70 i 36844 The most interesting thing about this first version of cat is that it contains two names we should recognize. There is a block of instructions labeled getc and a block of instructions labeled putc, demonstrating that these names are older than the C standard library. The first version of cat actually contained implementations of both functions. The implementations buffered input so that reads and writes were not done a character at a time.
Err codemadness.org 70 i 36845 The first version of cat did not last long. Ken Thompson and Dennis Ritchie were able to persuade Bell Labs to buy them a PDP 11 so that they could continue to expand and improve Unix. The PDP 11 had a different instruction set, so cat had to be rewritten. I’ve marked up this second version of cat with comments as well. It uses new assembler mnemonics for the new instruction set and takes advantage of the PDP 11’s various addressing modes. (If you are confused by the parentheses and dollar signs in the source code, those are used to indicate different addressing modes.) But it also leverages the ; character and temporary labels just like the first version of cat, meaning that these features must have been retained when as was adapted for the PDP 11.
Err codemadness.org 70 i 36846 The second version of cat is significantly simpler than the first. It is also more “Unix-y” in that it doesn’t just expect a list of filename arguments—it will, when given no arguments, read from stdin, which is what cat still does today. You can also give this version of cat an argument of - to indicate that it should read from stdin.
Err codemadness.org 70 i 36847 In 1973, in preparation for the release of the Fourth Edition of Unix, much of Unix was rewritten in C. But cat does not seem to have been rewritten in C until a while after that. The first C implementation of cat only shows up in the Seventh Edition of Unix. This implementation is really fun to look through because it is so simple. Of all the implementations to follow, this one most resembles the idealized cat used as a pedagogic demonstration in K&R C. The heart of the program is the classic two-liner:
while ((c = getc(fi)) != EOF)
Err codemadness.org 70
i 36851 putchar(c);
Err codemadness.org 70 i 36854Err codemadness.org 70 i 36856 Err codemadness.org 70 i 36857There is of course quite a bit more code than that, but the extra code is mostly there to ensure that you aren’t reading and writing to the same file. The other interesting thing to note is that this implementation of cat only recognized one flag, -u. The -u flag could be used to avoid buffering input and output, which cat would otherwise do in blocks of 512 bytes.
Err codemadness.org 70 i 36855
Err codemadness.org 70 i 36862Err codemadness.org 70 i 36866 Err codemadness.org 70 i 36867After the Seventh Edition, Unix spawned all sorts of derivatives and offshoots. MacOS is built on top of Darwin, which in turn is derived from the Berkeley Software Distribution (BSD), so BSD is the Unix offshoot we are most interested in. BSD was originally just a collection of useful programs and add-ons for Unix, but it eventually became a complete operating system. BSD seems to have relied on the original cat implementation up until the fourth BSD release, known as 4BSD, when support was added for a whole slew of new flags. The 4BSD implementation of cat is clearly derived from the original implementation, though it adds a new function to implement the behavior triggered by the new flags. The naming conventions already used in the file were adhered to—the fflg variable, used to mark whether input was being read from stdin or a file, was joined by nflg, bflg, vflg, sflg, eflg, and tflg, all there to record whether or not each new flag was supplied in the invocation of the program. These were the last command-line flags added to cat; the man page for cat today lists these flags and no others, at least on Mac OS. 4BSD was released in 1980, so this set of flags is 38 years old.
Err codemadness.org 70 i 36865
Err codemadness.org 70 i 36863 cat would be entirely rewritten a final time for BSD Net/2, which was, among other things, an attempt to avoid licensing issues by replacing all AT&T Unix-derived code with new code. BSD Net/2 was released in 1991. This final rewrite of cat was done by Kevin Fall, who graduated from Berkeley in 1988 and spent the next year working as a staff member at the Computer Systems Research Group (CSRG). Fall told me that a list of Unix utilities still implemented using AT&T code was put up on a wall at CSRG and staff were told to pick the utilities they wanted to reimplement. Fall picked cat and mknod. The cat implementation bundled with MacOS today is built from a source file that still bears his name at the very top. His version of cat, even though it is a relatively trivial program, is today used by millions.
Err codemadness.org 70 i 36864 Fall’s original implementation of cat is much longer than anything we have seen so far. Other than support for a -? help flag, it adds nothing in the way of new functionality. Conceptually, it is very similar to the 4BSD implementation. It is only longer because Fall separates the implementation into a “raw” mode and a “cooked” mode. The “raw” mode is cat classic; it prints a file character for character. The “cooked” mode is cat with all the 4BSD command-line options. The distinction makes sense but it also pads out the implementation so that it seems more complex at first glance than it actually is. There is also a fancy error handling function at the end of the file that further adds to its length.
Err codemadness.org 70 i 36872Err codemadness.org 70 i 36878 Err codemadness.org 70 i 36879The very first release of Mac OS X thus includes an implementation of cat pulled from the NetBSD project. So the first Mac OS X implementation of cat is Kevin Fall’s cat. The only thing that had changed over the intervening decade was that Fall’s error-handling function err() was removed and the err() function made available by err.h was used in its place. err.h is a BSD extension to the C standard library.
Err codemadness.org 70 i 36877
Err codemadness.org 70 i 36873 The NetBSD implementation of cat was later swapped out for FreeBSD’s implementation of cat. According to Wikipedia, Apple began using FreeBSD instead of NetBSD in Mac OS X 10.3 (Panther). But the Mac OS X implementation of cat, according to Apple’s own open source releases, was not replaced until Mac OS X 10.5 (Leopard) was released in 2007. The FreeBSD implementation that Apple swapped in for the Leopard release is the same implementation on Apple computers today. As of 2018, the implementation has not been updated or changed at all since 2007.
Err codemadness.org 70 i 36874 So the Mac OS cat is old. As it happens, it is actually two years older than its 2007 appearance in MacOS X would suggest. This 2005 change, which is visible in FreeBSD’s Github mirror, was the last change made to FreeBSD’s cat before Apple pulled it into Mac OS X. So the Mac OS X cat implementation, which has not been kept in sync with FreeBSD’s cat implementation, is officially 13 years old. There’s a larger debate to be had about how much software can change before it really counts as the same software; in this case, the source file has not changed at all since 2005.
Err codemadness.org 70 i 36875 The cat implementation used by Mac OS today is not that different from the implementation that Fall wrote for the 1991 BSD Net/2 release. The biggest difference is that a whole new function was added to provide Unix domain socket support. At some point, a FreeBSD developer also seems to have decided that Fall’s raw_args() function and cook_args() should be combined into a single function called scanfiles(). Otherwise, the heart of the program is still Fall’s code.
Err codemadness.org 70 i 36876 I asked Fall how he felt about having written the cat implementation now used by millions of Apple users, either directly or indirectly through some program that relies on cat being present. Fall, who is now a consultant and a co-author of the most recent editions of TCP/IP Illustrated, says that he is surprised when people get such a thrill out of learning about his work on cat. Fall has had a long career in computing and has worked on many high-profile projects, but it seems that many people still get most excited about the six months of work he put into rewriting cat in 1989.
Err codemadness.org 70 i 36884Err codemadness.org 70 i 36888 Err codemadness.org 70 i 36889In the grand scheme of things, computers are not an old invention. We’re used to hundred-year-old photographs or even hundred-year-old camera footage. But computer programs are in a different category—they’re high-tech and new. At least, they are now. As the computing industry matures, will we someday find ourselves using programs that approach the hundred-year-old mark?
Err codemadness.org 70 i 36887
Err codemadness.org 70 i 36885 Computer hardware will presumably change enough that we won’t be able to take an executable compiled today and run it on hardware a century from now. Perhaps advances in programming language design will also mean that nobody will understand C in the future and cat will have long since been rewritten in another language. (Though C has already been around for fifty years, and it doesn’t look like it is about to be replaced any time soon.) But barring all that, why not just keep using the cat we have forever?
Err codemadness.org 70 i 36886 I think the history of cat shows that some ideas in computer science are in fact very durable. Indeed, with cat, both the idea and the program itself are old. It may not be accurate to say that the cat on my computer is from 1969. But I could make a case for saying that the cat on my computer is from 1989, when Fall wrote his implementation of cat. Lots of other software is just as ancient. So maybe we shouldn’t think of computer science and software development primarily as fields that disrupt the status quo and invent new things. Our computer systems are built out of historical artifacts. At some point, we may all spend more time trying to understand and maintain those historical artifacts than we spend writing new code.
##News Roundup
Err codemadness.org 70
i 36892 ###Trivial Bug in X.Org Gives Root Permission on Linux and BSD Systems
Err codemadness.org 70 i 36895Err codemadness.org 70 i 36898 Err codemadness.org 70 i 36899A vulnerability that is trivial to exploit allows privilege escalation to root level on Linux and BSD distributions using X.Org server, the open source implementation of the X Window System that offers the graphical environment.
Err codemadness.org 70 i 36897
Err codemadness.org 70 i 36896 The flaw is now identified as CVE-2018-14665 (credited to security researcher Narendra Shinde). It has been present in xorg-server for two years, since version 1.19.0 and is exploitable by a limited user as long as the X server runs with elevated permissions.
Err codemadness.org 70 i 36904Err codemadness.org 70 i 36907 Err codemadness.org 70 i 36908An advisory on Thursday describes the problem as an “incorrect command-line parameter validation” that also allows an attacker to overwrite arbitrary files.
Err codemadness.org 70 i 36906
Err codemadness.org 70 i 36905 Privilege escalation can be accomplished via the -modulepath argument by setting an insecure path to modules loaded by the X.org server. Arbitrary file overwrite is possible through the -logfile argument, because of improper verification when parsing the option.
Err codemadness.org 70 i 36913Err codemadness.org 70 i 36920 Err codemadness.org 70 i 36921OpenBSD, the free and open-source operating system with a strong focus on security, uses xorg. On October 18, the project released version 6.4 of the OS, affected by CVE-2018-14665. This could have been avoided, though.
Err codemadness.org 70 i 36919
Err codemadness.org 70 i 36914 Theo de Raadt, founder and leader of the OpenBSD project, says that X maintainer knew about the problem since at least October 11. For some reason, the OpenBSD developers received the message one hour before the public announcement this Thursday, a week after their new OS release.
Err codemadness.org 70 i 36915 “As yet we don’t have answers about why our X maintainer (on the X security team) and his team provided information to other projects (some who don’t even ship with this new X server) but chose to not give us a heads-up which could have saved all the new 6.4 users a lot of grief,” Raadt says.
Err codemadness.org 70 i 36916 Had OpenBSD developers known about the bug before the release, they could have taken steps to mitigate the problem or delay the launch for a week or two.
Err codemadness.org 70 i 36917 To remedy the problem, the OpenBSD project provides a source code patch, which requires compiling and rebuilding the X server.
Err codemadness.org 70 i 36918 As a temporary solution, users can disable the Xorg binary by running the following command:
chmod u-s /usr/X11R6/bin/Xorg
Err codemadness.org 70 i 36928Err codemadness.org 70 i 36933 Err codemadness.org 70 i 36934CVE-2018-14665 does not help compromise systems, but it is useful in the following stages of an attack.
Err codemadness.org 70 i 36932
Err codemadness.org 70 i 36929 Leveraging it after gaining access to a vulnerable machine is fairly easy. Matthew Hickey, co-founder, and head of Hacker House security outfit created and published an exploit, saying that it can be triggered from a remote SSH session.
Err codemadness.org 70 i 36930 Three hours after the public announcement of the security gap, Daemon Security CEO Michael Shirk replied with one line that overwrote shadow files on the system. Hickey did one better and fit the entire local privilege escalation exploit in one line.
Err codemadness.org 70 i 36931 Apart from OpenBSD, other operating systems affected by the bug include Debian and Ubuntu, Fedora and its downstream distro Red Hat Enterprise Linux along with its community-supported counterpart CentOS.
###OpenBSD on the Desktop: some thoughts
Err codemadness.org 70 i 36937 Err codemadness.org 70 i 36938Err codemadness.org 70 i 36939Err codemadness.org 70 i 36959 Err codemadness.org 70 i 36960I’ve been using OpenBSD on my ThinkPad X230 for some weeks now, and the experience has been peculiar in some ways.
Err codemadness.org 70 i 36958
Err codemadness.org 70 i 36940 The OS itself in my opinion is not ready for widespread desktop usage, and the development team is not trying to push it in the throat of anybody who wants a Windows or macOS alternative.
Err codemadness.org 70 i 36941 You need to understand a little bit of how *NIX systems work, because you’ll use CLI more than UI.
Err codemadness.org 70 i 36942 That’s not necessarily bad, and I’m sure I learned a trick or two that could translate easily to Linux or macOS.
Err codemadness.org 70 i 36943 Their development process is purely based on developers that love to contribute and hack around, just because it’s fun.
Err codemadness.org 70 i 36944 Even the mailing list is a cool place to hang on!
Err codemadness.org 70 i 36945 Code correctness and security are a must, nothing gets committed if it doesn’t get reviewed thoroughly first - nowadays the first two properties should be enforced in every major operating system.
Err codemadness.org 70 i 36946 I like the idea of a platform that continually evolves.
Err codemadness.org 70 i 36947 pledge(2) and unveil(2) are the proof that with a little effort, you can secure existing software better than ever.
Err codemadness.org 70 i 36948 I like the “sensible defaults” approach, having an OS ready to be used - UI included if you selected it during the setup process - is great.
Err codemadness.org 70 i 36949 Just install a browser and you’re ready to go.
Err codemadness.org 70 i 36950 Manual pages on OpenBSD are real manuals, not an extension of the “–help” command found in most CLI softwares.
Err codemadness.org 70 i 36951 They help you understand inner workings of the operating system, no internet connection needed.
Err codemadness.org 70 i 36952 There are some trade-offs, too.
Err codemadness.org 70 i 36953 Performance is not first-class, mostly because of all the security mitigations and checks done at runtime3.
Err codemadness.org 70 i 36954 I write Go code in neovim, and sometimes you can feel a slight slowdown when you’re compiling and editing multiple files at the same time, but usually I can’t notice any meaningful difference.
Err codemadness.org 70 i 36955 Browsers are a different matter though, you can definitely feel something differs from the experience you can have on mainstream operating systems.
Err codemadness.org 70 i 36956 But again, trade-offs.
Err codemadness.org 70 i 36957 To use OpenBSD on the desktop you must be ready to sacrifice some of the goodies of mainstream OSes, but if you’re searching for a zen place to do your computing stuff, it’s the best you can get right now.
Err codemadness.org 70 i 36965Err codemadness.org 70 i 36969 Err codemadness.org 70 i 36970One of the most recent additions to the DistroWatch database is NomadBSD. According to the NomadBSD website: “NomadBSD is a 64-bit live system for USB flash drives, based on FreeBSD. Together with automatic hardware detection and setup, it is configured to be used as a desktop system that works out of the box, but can also be used for data recovery.”
Err codemadness.org 70 i 36968
Err codemadness.org 70 i 36966 The latest release of NomadBSD (or simply “Nomad”, as I will refer to the project in this review) is version 1.1. It is based on FreeBSD 11.2 and is offered in two builds, one for generic personal computers and one for Macbooks. The release announcement mentions version 1.1 offers improved video driver support for Intel and AMD cards. The operating system ships with Octopkg for graphical package management and the system should automatically detect, and work with, VirtualBox environments.
Err codemadness.org 70 i 36967 Nomad 1.1 is available as a 2GB download, which we then decompress to produce a 4GB file which can be written to a USB thumb drive. There is no optical media build of Nomad as it is designed to be run entirely from the USB drive, and write data persistently to the drive, rather than simply being installed from the USB media.
Err codemadness.org 70 i 36975Err codemadness.org 70 i 36979 Err codemadness.org 70 i 36980Booting from the USB drive brings up a series of text-based menus which ask us to configure key parts of the operating system. We are asked to select our time zone, keyboard layout, keyboard model, keyboard mapping and our preferred language. While we can select options from a list, the options tend to be short and cryptic. Rather than “English (US)”, for example, we might be given “en_US”. We are also asked to create a password for the root user account and another one for a regular user which is called “nomad”. We can then select which shell nomad will use. The default is zsh, but there are plenty of other options, including csh and bash. We have the option of encrypting our user’s home directory.
Err codemadness.org 70 i 36978
Err codemadness.org 70 i 36976 I feel it is important to point out that these settings, and nomad’s home directory, are stored on the USB drive. The options and settings we select will not be saved to our local hard drive and our configuration choices will not affect other operating systems already installed on our computer. At the end, the configuration wizard asks if we want to run the BSDstats service. This option is not explained at all, but it contacts BSDstats to provide some basic statistics on BSD users.
Err codemadness.org 70 i 36977 The system then takes a few minutes to apply its changes to the USB drive and automatically reboots the computer. While running the initial setup wizard, I had nearly identical experiences when running Nomad on a physical computer and running the operating system in a VirtualBox virtual machine. However, after the initial setup process was over, I had quite different experiences depending on the environment so I want to divide my experiences into two different sections.
Err codemadness.org 70 i 36985Err codemadness.org 70 i 36990 Err codemadness.org 70 i 36991At first, Nomad failed to boot on my desktop computer. From the operating system’s boot loader, I enabled Safe Mode which allowed Nomad to boot. At that point, Nomad was able to start up, but would only display a text console. The desktop environment failed to start when running in Safe Mode.
Err codemadness.org 70 i 36989
Err codemadness.org 70 i 36986 Networking was also disabled by default and I had to enable a network interface and DHCP address assignment to connect to the Internet. Instructions for enabling networking can be found in FreeBSD’s Handbook. Once we are on-line we can use the pkg command line package manager to install and update software. Had the desktop environment worked then the Octopkg graphical package manager would also be available to make browsing and installing software a point-n-click experience.
Err codemadness.org 70 i 36987 Had I been able to run the desktop for prolonged amounts of time I could have made use of such pre-installed items as the Firefox web browser, the VLC media player, LibreOffice and Thunderbird. Nomad offers a fairly small collection of desktop applications, but what is there is mostly popular, capable software.
Err codemadness.org 70 i 36988 When running the operating system I noted that, with one user logged in, Nomad only runs 15 processes with the default configuration. These processes require less than 100MB of RAM, and the whole system fits comfortably on a 4GB USB drive.
Err codemadness.org 70 i 36996Err codemadness.org 70 i 36999 Err codemadness.org 70 i 37000Ultimately using Nomad was not a practical option for me. The operating system did not work well with my hardware, or the virtual environment. In the virtual machine, Nomad crashed consistently after just a few minutes of uptime. On the desktop computer, I could not get a desktop environment to run. The command line tools worked well, and the system performed tasks very quickly, but a command line only environment is not well suited to my workflow.
Err codemadness.org 70 i 36998
Err codemadness.org 70 i 36997 I like the idea of what NomadBSD is offering. There are not many live desktop flavours of FreeBSD, apart from GhostBSD. It was nice to see developers trying to make a FreeBSD-based, plug-and-go operating system that would offer a desktop and persistent storage. I suspect the system would work and perform its stated functions on different hardware, but in my case my experiment was necessarily short lived.
##Beastie Bits
Err codemadness.org 70 i 37003 Err codemadness.org 70 i 37004##Feedback/Questions
Err codemadness.org 70 i 37020 Err codemadness.org 70 i 37021##Headlines
###The byproducts of reading OpenBSD netcat code
When I took part in a training last year, I heard about netcat for the first time. During that class, the tutor showed some hacks and tricks of using netcat which appealed to me and motivated me to learn the guts of it. Fortunately, in the past 2 months, I was not so busy that I can spend my spare time to dive into OpenBSD‘s netcat source code, and got abundant byproducts during this process.
(1) Brush up socket programming. I wrote my first network application more than 10 years ago, and always think the socket APIs are marvelous. Just ~10 functions (socket, bind, listen, accept…) with some IO multiplexing buddies (select, poll, epoll…) connect the whole world, wonderful! From that time, I developed a habit that is when touching a new programming language, network programming is an essential exercise. Even though I don’t write socket related code now, reading netcat socket code indeed refresh my knowledge and teach me new stuff.
(2) Write a tutorial about netcat. I am mediocre programmer and will forget things when I don’t use it for a long time. So I just take notes of what I think is useful. IMHO, this “tutorial” doesn’t really mean teach others something, but just a journal which I can refer when I need in the future.
(3) Submit patches to netcat. During reading code, I also found bugs and some enhancements. Though trivial contributions to OpenBSD, I am still happy and enjoy it.
(4) Implement a C++ encapsulation of libtls. OpenBSD‘s netcat supports tls/ssl connection, but it needs you take full care of resource management (memory, socket, etc), otherwise a small mistake can lead to resource leak which is fatal for long-live applications (In fact, the two bugs I reported to OpenBSD are all related resource leak). Therefore I develop a simple C++ library which wraps the libtls and hope it can free developer from this troublesome problem and put more energy in application logic part.
Long story to short, reading classical source code is a rewarding process, and you can consider to try it yourself.
###What I learned from porting my projects to FreeBSD
I set up a local FreeBSD VirtualBox VM to test something, and it seems to work very well. Due to the novelty factor, I decided to get my software projects to build and pass the tests there.
The Projects
https://github.com/shlomif/shlomif-computer-settings/ (my dotfiles).
https://www.shlomifish.org/open-source/projects/black-hole-solitaire-solver/
Written using a mix of C, Perl 5, Python, Ruby, GNU Bash, XML, CMake, XSLT, XHTML5, XHTML1.1, Website META Language, JavaScript and more.
Work fine on several Linux distributions and have https://en.wikipedia.org/wiki/Travis_CI using Ubuntu 14.04 hosts
Some pass builds and tests on AppVeyor/Win64
What I Learned:
FreeBSD on VBox has become very reliable
Some executables on FreeBSD are in /usr/local/bin instead of /usr/bin
make on FreeBSD is not GNU make
m4 on FreeBSD is not compatible with GNU m4
Some CPAN Modules fail to install using local-lib there
DocBook/XSL Does Not Live Under /usr/share/sgml
FreeBSD’s grep does not have a “-P” flag by default
FreeBSD has no “nproc” command
Conclusion:
It is easier to port a shell than a shell script. — Larry Wall
I ran into some cases where my scriptology was lacking and suboptimal, even for my own personal use, and fixed them.
##News Roundup
###OpenBSD’s unveil()
One of the key aspects of hardening the user-space side of an operating system is to provide mechanisms for restricting which parts of the filesystem hierarchy a given process can access. Linux has a number of mechanisms of varying capability and complexity for this purpose, but other kernels have taken a different approach. Over the last few months, OpenBSD has inaugurated a new system call named unveil() for this type of hardening that differs significantly from the mechanisms found in Linux.
The value of restricting access to the filesystem, from a security point of view, is fairly obvious. A compromised process cannot exfiltrate data that it cannot read, and it cannot corrupt files that it cannot write. Preventing unwanted access is, of course, the purpose of the permissions bits attached to every file, but permissions fall short in an important way: just because a particular user has access to a given file does not necessarily imply that every program run by that user should also have access to that file. There is no reason why your PDF viewer should be able to read your SSH keys, for example. Relying on just the permission bits makes it easy for a compromised process to access files that have nothing to do with that process’s actual job.
In a Linux system, there are many ways of trying to restrict that access; that is one of the purposes behind the Linux security module (LSM) architecture, for example. The SELinux LSM uses a complex matrix of labels and roles to make access-control decisions. The AppArmor LSM, instead, uses a relatively simple table of permissible pathnames associated with each application; that approach was highly controversial when AppArmor was first merged, and is still looked down upon by some security developers. Mount namespaces can be used to create a special view of the filesystem hierarchy for a set of processes, rendering much of that hierarchy invisible and, thus, inaccessible. The seccomp mechanism can be used to make decisions on attempts by a process to access files, but that approach is complex and error-prone. Yet another approach can be seen in the Qubes OS distribution, which runs applications in virtual machines to strictly control what they can access.
Compared to many of the options found in Linux, unveil() is an exercise in simplicity. This system call, introduced in July, has this prototype:
int unveil(const char *path, const char *permissions);
A process that has never called unveil() has full access to the filesystem hierarchy, modulo the usual file permissions and any restrictions that may have been applied by calling pledge(). Calling unveil() for the first time will “drop a veil” across the entire filesystem, rendering the whole thing invisible to the process, with one exception: the file or directory hierarchy starting at path will be accessible with the given permissions. The permissions string can contain any of “r” for read access, “w” for write, “x” for execute, and “c” for the ability to create or remove the path.
Subsequent calls to unveil() will make other parts of the filesystem hierarchy accessible; the unveil() system call itself still has access to the entire hierarchy, so there is no problem with unveiling distinct subtrees that are, until the call is made, invisible to the process. If one unveil() call applies to a subtree of a hierarchy unveiled by another call, the permissions associated with the more specific call apply.
Calling unveil() with both arguments as null will block any further calls, setting the current view of the filesystem in stone. Calls to unveil() can also be blocked using pledge(). Either way, once the view of the filesystem has been set up appropriately, it is possible to lock it so that the process cannot expand its access in the future should it be taken over and turn hostile.
unveil() thus looks a bit like AppArmor, in that it is a path-based mechanism for restricting access to files. In either case, one must first study the program in question to gain a solid understanding of which files it needs to access before closing things down, or the program is likely to break. One significant difference (beyond the other sorts of behavior that AppArmor can control) is that AppArmor’s permissions are stored in an external policy file, while unveil() calls are made by the application itself. That approach keeps the access rules tightly tied to the application and easy for the developers to modify, but it also makes it harder for system administrators to change them without having to rebuild the application from source.
One can certainly aim a number of criticisms at unveil() — all of the complaints that have been leveled at path-based access control and more. But the simplicity of unveil() brings a certain kind of utility, as can be seen in the large number of OpenBSD applications that are being modified to use it. OpenBSD is gaining a base level of protection against unintended program behavior; while it is arguably possible to protect a Linux system to a much greater extent, the complexity of the mechanisms involved keeps that from happening in a lot of real-world deployments. There is a certain kind of virtue to simplicity in security mechanisms.
###NetBSD Virtual Machine Monitor (NVVM)
The NVMM driver provides hardware-accelerated virtualization support on NetBSD. It is made of an ~MI frontend, to which MD backends can be plugged. A virtualization API is provided in libnvmm, that allows to easily create and manage virtual machines via NVMM. Two additional components are shipped as demonstrators, toyvirt and smallkern: the former is a toy virtualizer, that executes in a VM the 64bit ELF binary given as argument, the latter is an example of such binary.
The source code of NVMM, plus the associated tools, can be downloaded here.
NVMM can support up to 128 virtual machines, each having a maximum of 256 VCPUs and 4GB of RAM.
Each virtual machine is granted access to most of the CPU registers: the GPRs (obviously), the Segment Registers, the Control Registers, the Debug Registers, the FPU (x87 and SSE), and several MSRs.
Events can be injected in the virtual machines, to emulate device interrupts. A delay mechanism is used, and allows VMM software to schedule the interrupt right when the VCPU can receive it. NMIs can be injected as well, and use a similar mechanism.
The host must always be x86_64, but the guest has no constraint on the mode, so it can be x86_32, PAE, real mode, and so on.
The TSC of each VCPU is always re-based on the host CPU it is executing on, and is therefore guaranteed to increase regardless of the host CPU. However, it may not increase monotonically, because it is not possible to fully hide the host effects on the guest during #VMEXITs.
When there are more VCPUs than the host TLB can deal with, NVMM uses a shared ASID, and flushes the shared-ASID VCPUs on each VM switch.
The different intercepts are configured in such a way that they cover everything that needs to be emulated. In particular, the LAPIC can be emulated by VMM software, by intercepting reads/writes to the LAPIC page in memory, and monitoring changes to CR8 in the exit state.
###What ‘dependency’ means in Unix init systems is underspecified (utoronto.ca)
I was reading Davin McCall’s On the vagaries of init systems (via) when I ran across the following, about the relationship between various daemons (services, etc):
I do not see any compelling reason for having ordering relationships without actual dependency, as both Nosh and Systemd provide for. In comparison, Dinit’s dependencies also imply an ordering, which obviates the need to list a dependency twice in the service description.
Well, this may be an easy one but it depends on what an init system means by ‘dependency’. Let’s consider ®syslog and the SSH daemon. I want the syslog daemon to be started before the SSH daemon is started, so that the SSH daemon can log things to it from the beginning. However, I very much do not want the SSH daemon to not be started (or to be shut down) if the syslog daemon fails to start or later fails. If syslog fails, I still want the SSH daemon to be there so that I can perhaps SSH in to the machine and fix the problem.
This is generally true of almost all daemons; I want them to start after syslog, so that they can syslog things, but I almost never want them to not be running if syslog failed. (And if for some reason syslog is not configured to start, I want enabling and starting, say, SSH, to also enable and start the syslog daemon.)
In general, there are three different relationships between services that I tend to encounter:
a hard requirement, where service B is useless or dangerous without service A. For instance, many NFS v2 and NFS v3 daemons basically don’t function without the RPC portmapper alive and active. On any number of systems, firewall rules being in place are a hard requirement to start most network services; you would rather your network services not start at all than that they start without your defenses in place.
a want, where service B wants service A to be running before B starts up, and service A should be started even if it wouldn’t otherwise be, but the failure of A still leaves B functional. Many daemons want the syslog daemon to be started before they start but will run without it, and often you want them to do so so that at least some of the system works even if there is, say, a corrupt syslog configuration file that causes the daemon to error out on start. (But some environments want to hard-fail if they can’t collect security related logging information, so they might make rsyslogd a requirement instead of a want.)
an ordering, where if service A is going to be started, B wants to start after it (or before it), but B isn’t otherwise calling for A to be started. We have some of these in our systems, where we need NFS mounts done before cron starts and runs people’s @reboot jobs but neither cron nor NFS mounts exactly or explicitly want each other. (The system as a whole wants both, but that’s a different thing.)
Given these different relationships and the implications for what the init system should do in different situations, talking about ‘dependency’ in it systems is kind of underspecified. What sort of dependency? What happens if one service doesn’t start or fails later?
My impression is that generally people pick a want relationship as the default meaning for init system ‘dependency’. Usually this is fine; most services aren’t actively dangerous if one of their declared dependencies fails to start, and it’s generally harmless on any particular system to force a want instead of an ordering relationship because you’re going to be starting everything anyway.
###Jailing The bhyve Hypervisor
As FreeBSD nears the final 12.0-RELEASE release engineering cycles, I’d like to take a moment to document a cool new feature coming in 12: jailed bhyve.
You may notice that I use HardenedBSD instead of FreeBSD in this article. There is no functional difference in bhyve on HardenedBSD versus bhyve on FreeBSD. The only difference between HardenedBSD and FreeBSD is the aditional security offered by HardenedBSD.
The steps I outline here work for both FreeBSD and HardenedBSD. These are the bare minimum steps, no extra work needed for either FreeBSD or HardenedBSD.
At work in my spare time, I’m helping develop a malware lab. Due to the nature of the beast, we would like to use bhyve on HardenedBSD. Starting with HardenedBSD 12, non-Cross-DSO CFI, SafeStack, Capsicum, ASLR, and strict WX are all applied to bhyve, making it an extremely hardened hypervisor.
So, the work to support jailed bhyve is sponsored by both HardenedBSD and my employer. We’ve also jointly worked on other bhyve hardening features, like protecting the VM’s address space using guard pages (mmap(…, MAP_GUARD, …)). Further work is being done in a project called “malhyve.” Only those modifications to bhyve/malhyve that make sense to upstream will be upstreamed.
We will not go through the process of creating the jail’s filesystem. That process is documented in the FreeBSD Handbook. For UEFI guests, you will need to install the uefi-edk2-bhyve package inside the jail.
I network these jails with traditional jail networking. I have tested vnet jails with this setup, and that works fine, too. However, there is no real need to hook the jail up to any network so long as bhyve can access the tap device. In some cases, the VM might not need networking, in which case you can use a network-less VM in a network-less jail.
By default, access to the kernel side of bhyve is disabled within jails. We need to set allow.vmm in our jail.conf entry for the bhyve jail.
We will use the following in our jail, so we will need to set up devfs(8) rules for them:
A ZFS volume
A null-modem device (nmdm(4))
UEFI GOP (no devfs rule, but IP assigned to the jail)
A tap device
Conclusion
The bhyve hypervisor works great within a jail. When combined with HardenedBSD, bhyve is extremely hardened:
Bad guys are going to have a hard time breaking out of the userland components of bhyve on HardenedBSD. :)
##Beastie Bits
##Feedback/Questions
##Headlines
###The byproducts of reading OpenBSD netcat code
When I took part in a training last year, I heard about netcat for the first time. During that class, the tutor showed some hacks and tricks of using netcat which appealed to me and motivated me to learn the guts of it. Fortunately, in the past 2 months, I was not so busy that I can spend my spare time to dive into OpenBSD‘s netcat source code, and got abundant byproducts during this process.
(1) Brush up socket programming. I wrote my first network application more than 10 years ago, and always think the socket APIs are marvelous. Just ~10 functions (socket, bind, listen, accept…) with some IO multiplexing buddies (select, poll, epoll…) connect the whole world, wonderful! From that time, I developed a habit that is when touching a new programming language, network programming is an essential exercise. Even though I don’t write socket related code now, reading netcat socket code indeed refresh my knowledge and teach me new stuff.
(2) Write a tutorial about netcat. I am mediocre programmer and will forget things when I don’t use it for a long time. So I just take notes of what I think is useful. IMHO, this “tutorial” doesn’t really mean teach others something, but just a journal which I can refer when I need in the future.
(3) Submit patches to netcat. During reading code, I also found bugs and some enhancements. Though trivial contributions to OpenBSD, I am still happy and enjoy it.
(4) Implement a C++ encapsulation of libtls. OpenBSD‘s netcat supports tls/ssl connection, but it needs you take full care of resource management (memory, socket, etc), otherwise a small mistake can lead to resource leak which is fatal for long-live applications (In fact, the two bugs I reported to OpenBSD are all related resource leak). Therefore I develop a simple C++ library which wraps the libtls and hope it can free developer from this troublesome problem and put more energy in application logic part.
Long story to short, reading classical source code is a rewarding process, and you can consider to try it yourself.
###What I learned from porting my projects to FreeBSD
I set up a local FreeBSD VirtualBox VM to test something, and it seems to work very well. Due to the novelty factor, I decided to get my software projects to build and pass the tests there.
The Projects
https://github.com/shlomif/shlomif-computer-settings/ (my dotfiles).
https://www.shlomifish.org/open-source/projects/black-hole-solitaire-solver/
Written using a mix of C, Perl 5, Python, Ruby, GNU Bash, XML, CMake, XSLT, XHTML5, XHTML1.1, Website META Language, JavaScript and more.
Work fine on several Linux distributions and have https://en.wikipedia.org/wiki/Travis_CI using Ubuntu 14.04 hosts
Some pass builds and tests on AppVeyor/Win64
What I Learned:
FreeBSD on VBox has become very reliable
Some executables on FreeBSD are in /usr/local/bin instead of /usr/bin
make on FreeBSD is not GNU make
m4 on FreeBSD is not compatible with GNU m4
Some CPAN Modules fail to install using local-lib there
DocBook/XSL Does Not Live Under /usr/share/sgml
FreeBSD’s grep does not have a “-P” flag by default
FreeBSD has no “nproc” command
Conclusion:
It is easier to port a shell than a shell script. — Larry Wall
I ran into some cases where my scriptology was lacking and suboptimal, even for my own personal use, and fixed them.
##News Roundup
###OpenBSD’s unveil()
One of the key aspects of hardening the user-space side of an operating system is to provide mechanisms for restricting which parts of the filesystem hierarchy a given process can access. Linux has a number of mechanisms of varying capability and complexity for this purpose, but other kernels have taken a different approach. Over the last few months, OpenBSD has inaugurated a new system call named unveil() for this type of hardening that differs significantly from the mechanisms found in Linux.
The value of restricting access to the filesystem, from a security point of view, is fairly obvious. A compromised process cannot exfiltrate data that it cannot read, and it cannot corrupt files that it cannot write. Preventing unwanted access is, of course, the purpose of the permissions bits attached to every file, but permissions fall short in an important way: just because a particular user has access to a given file does not necessarily imply that every program run by that user should also have access to that file. There is no reason why your PDF viewer should be able to read your SSH keys, for example. Relying on just the permission bits makes it easy for a compromised process to access files that have nothing to do with that process’s actual job.
In a Linux system, there are many ways of trying to restrict that access; that is one of the purposes behind the Linux security module (LSM) architecture, for example. The SELinux LSM uses a complex matrix of labels and roles to make access-control decisions. The AppArmor LSM, instead, uses a relatively simple table of permissible pathnames associated with each application; that approach was highly controversial when AppArmor was first merged, and is still looked down upon by some security developers. Mount namespaces can be used to create a special view of the filesystem hierarchy for a set of processes, rendering much of that hierarchy invisible and, thus, inaccessible. The seccomp mechanism can be used to make decisions on attempts by a process to access files, but that approach is complex and error-prone. Yet another approach can be seen in the Qubes OS distribution, which runs applications in virtual machines to strictly control what they can access.
Compared to many of the options found in Linux, unveil() is an exercise in simplicity. This system call, introduced in July, has this prototype:
int unveil(const char *path, const char *permissions);
A process that has never called unveil() has full access to the filesystem hierarchy, modulo the usual file permissions and any restrictions that may have been applied by calling pledge(). Calling unveil() for the first time will “drop a veil” across the entire filesystem, rendering the whole thing invisible to the process, with one exception: the file or directory hierarchy starting at path will be accessible with the given permissions. The permissions string can contain any of “r” for read access, “w” for write, “x” for execute, and “c” for the ability to create or remove the path.
Subsequent calls to unveil() will make other parts of the filesystem hierarchy accessible; the unveil() system call itself still has access to the entire hierarchy, so there is no problem with unveiling distinct subtrees that are, until the call is made, invisible to the process. If one unveil() call applies to a subtree of a hierarchy unveiled by another call, the permissions associated with the more specific call apply.
Calling unveil() with both arguments as null will block any further calls, setting the current view of the filesystem in stone. Calls to unveil() can also be blocked using pledge(). Either way, once the view of the filesystem has been set up appropriately, it is possible to lock it so that the process cannot expand its access in the future should it be taken over and turn hostile.
unveil() thus looks a bit like AppArmor, in that it is a path-based mechanism for restricting access to files. In either case, one must first study the program in question to gain a solid understanding of which files it needs to access before closing things down, or the program is likely to break. One significant difference (beyond the other sorts of behavior that AppArmor can control) is that AppArmor’s permissions are stored in an external policy file, while unveil() calls are made by the application itself. That approach keeps the access rules tightly tied to the application and easy for the developers to modify, but it also makes it harder for system administrators to change them without having to rebuild the application from source.
One can certainly aim a number of criticisms at unveil() — all of the complaints that have been leveled at path-based access control and more. But the simplicity of unveil() brings a certain kind of utility, as can be seen in the large number of OpenBSD applications that are being modified to use it. OpenBSD is gaining a base level of protection against unintended program behavior; while it is arguably possible to protect a Linux system to a much greater extent, the complexity of the mechanisms involved keeps that from happening in a lot of real-world deployments. There is a certain kind of virtue to simplicity in security mechanisms.
###NetBSD Virtual Machine Monitor (NVVM)
The NVMM driver provides hardware-accelerated virtualization support on NetBSD. It is made of an ~MI frontend, to which MD backends can be plugged. A virtualization API is provided in libnvmm, that allows to easily create and manage virtual machines via NVMM. Two additional components are shipped as demonstrators, toyvirt and smallkern: the former is a toy virtualizer, that executes in a VM the 64bit ELF binary given as argument, the latter is an example of such binary.
The source code of NVMM, plus the associated tools, can be downloaded here.
NVMM can support up to 128 virtual machines, each having a maximum of 256 VCPUs and 4GB of RAM.
Each virtual machine is granted access to most of the CPU registers: the GPRs (obviously), the Segment Registers, the Control Registers, the Debug Registers, the FPU (x87 and SSE), and several MSRs.
Events can be injected in the virtual machines, to emulate device interrupts. A delay mechanism is used, and allows VMM software to schedule the interrupt right when the VCPU can receive it. NMIs can be injected as well, and use a similar mechanism.
The host must always be x86_64, but the guest has no constraint on the mode, so it can be x86_32, PAE, real mode, and so on.
The TSC of each VCPU is always re-based on the host CPU it is executing on, and is therefore guaranteed to increase regardless of the host CPU. However, it may not increase monotonically, because it is not possible to fully hide the host effects on the guest during #VMEXITs.
When there are more VCPUs than the host TLB can deal with, NVMM uses a shared ASID, and flushes the shared-ASID VCPUs on each VM switch.
The different intercepts are configured in such a way that they cover everything that needs to be emulated. In particular, the LAPIC can be emulated by VMM software, by intercepting reads/writes to the LAPIC page in memory, and monitoring changes to CR8 in the exit state.
###What ‘dependency’ means in Unix init systems is underspecified (utoronto.ca)
I was reading Davin McCall’s On the vagaries of init systems (via) when I ran across the following, about the relationship between various daemons (services, etc):
I do not see any compelling reason for having ordering relationships without actual dependency, as both Nosh and Systemd provide for. In comparison, Dinit’s dependencies also imply an ordering, which obviates the need to list a dependency twice in the service description.
Well, this may be an easy one but it depends on what an init system means by ‘dependency’. Let’s consider ®syslog and the SSH daemon. I want the syslog daemon to be started before the SSH daemon is started, so that the SSH daemon can log things to it from the beginning. However, I very much do not want the SSH daemon to not be started (or to be shut down) if the syslog daemon fails to start or later fails. If syslog fails, I still want the SSH daemon to be there so that I can perhaps SSH in to the machine and fix the problem.
This is generally true of almost all daemons; I want them to start after syslog, so that they can syslog things, but I almost never want them to not be running if syslog failed. (And if for some reason syslog is not configured to start, I want enabling and starting, say, SSH, to also enable and start the syslog daemon.)
In general, there are three different relationships between services that I tend to encounter:
a hard requirement, where service B is useless or dangerous without service A. For instance, many NFS v2 and NFS v3 daemons basically don’t function without the RPC portmapper alive and active. On any number of systems, firewall rules being in place are a hard requirement to start most network services; you would rather your network services not start at all than that they start without your defenses in place.
a want, where service B wants service A to be running before B starts up, and service A should be started even if it wouldn’t otherwise be, but the failure of A still leaves B functional. Many daemons want the syslog daemon to be started before they start but will run without it, and often you want them to do so so that at least some of the system works even if there is, say, a corrupt syslog configuration file that causes the daemon to error out on start. (But some environments want to hard-fail if they can’t collect security related logging information, so they might make rsyslogd a requirement instead of a want.)
an ordering, where if service A is going to be started, B wants to start after it (or before it), but B isn’t otherwise calling for A to be started. We have some of these in our systems, where we need NFS mounts done before cron starts and runs people’s @reboot jobs but neither cron nor NFS mounts exactly or explicitly want each other. (The system as a whole wants both, but that’s a different thing.)
Given these different relationships and the implications for what the init system should do in different situations, talking about ‘dependency’ in it systems is kind of underspecified. What sort of dependency? What happens if one service doesn’t start or fails later?
My impression is that generally people pick a want relationship as the default meaning for init system ‘dependency’. Usually this is fine; most services aren’t actively dangerous if one of their declared dependencies fails to start, and it’s generally harmless on any particular system to force a want instead of an ordering relationship because you’re going to be starting everything anyway.
###Jailing The bhyve Hypervisor
As FreeBSD nears the final 12.0-RELEASE release engineering cycles, I’d like to take a moment to document a cool new feature coming in 12: jailed bhyve.
You may notice that I use HardenedBSD instead of FreeBSD in this article. There is no functional difference in bhyve on HardenedBSD versus bhyve on FreeBSD. The only difference between HardenedBSD and FreeBSD is the aditional security offered by HardenedBSD.
The steps I outline here work for both FreeBSD and HardenedBSD. These are the bare minimum steps, no extra work needed for either FreeBSD or HardenedBSD.
At work in my spare time, I’m helping develop a malware lab. Due to the nature of the beast, we would like to use bhyve on HardenedBSD. Starting with HardenedBSD 12, non-Cross-DSO CFI, SafeStack, Capsicum, ASLR, and strict WX are all applied to bhyve, making it an extremely hardened hypervisor.
So, the work to support jailed bhyve is sponsored by both HardenedBSD and my employer. We’ve also jointly worked on other bhyve hardening features, like protecting the VM’s address space using guard pages (mmap(…, MAP_GUARD, …)). Further work is being done in a project called “malhyve.” Only those modifications to bhyve/malhyve that make sense to upstream will be upstreamed.
We will not go through the process of creating the jail’s filesystem. That process is documented in the FreeBSD Handbook. For UEFI guests, you will need to install the uefi-edk2-bhyve package inside the jail.
I network these jails with traditional jail networking. I have tested vnet jails with this setup, and that works fine, too. However, there is no real need to hook the jail up to any network so long as bhyve can access the tap device. In some cases, the VM might not need networking, in which case you can use a network-less VM in a network-less jail.
By default, access to the kernel side of bhyve is disabled within jails. We need to set allow.vmm in our jail.conf entry for the bhyve jail.
We will use the following in our jail, so we will need to set up devfs(8) rules for them:
A ZFS volume
A null-modem device (nmdm(4))
UEFI GOP (no devfs rule, but IP assigned to the jail)
A tap device
Conclusion
The bhyve hypervisor works great within a jail. When combined with HardenedBSD, bhyve is extremely hardened:
Bad guys are going to have a hard time breaking out of the userland components of bhyve on HardenedBSD. :)
##Beastie Bits
##Feedback/Questions
##Headlines
Err codemadness.org 70
i 37230 ###MidnightBSD 1.0 now available
Err codemadness.org 70 i 37233Err codemadness.org 70 i 37237 Err codemadness.org 70 i 37238I’m happy to announce the availability of MidnightBSD 1.0 for amd64 and i386. Over the years, many ambitious goals were set for our 1.0 release. As it approached, it was clear we wouldn’t be able to accomplish all of them. This release is more of a natural progression rather than a groundbreaking event. It includes many updates to the base system, improvements to the package manager, an updated compiler, and tools.
Err codemadness.org 70 i 37236
Err codemadness.org 70 i 37234 Of particular note, you can now boot off of ZFS and use NVME SSDs and some AMD Radeon graphics cards support acceleration. AMD Ryzen support has greatly improved in this release. We also have added bhyve from FreeBSD.
Err codemadness.org 70 i 37235 The 1.0 release is finally available. Still building packages for i386 and plan to do an amd64 package build later in the week. The single largest issue with the release process has been the web server performance. The CPU is overloaded and has been at solid 100% for several days. The server has a core i7 7700 in it. I’m trying to figure out what to buy as an upgrade so that we don’t continue to have this issue going forward. As it’s actually blocked in multiple processes, a 6 or 8 core chip might be an improvement for the workload…
Err codemadness.org 70 i 37248Err codemadness.org 70 i 37250 Err codemadness.org 70 i 37251MeetBSD 2018 took place at the sprawling Intel Santa Clara campus. The venue itself felt more like an olive branch than a simple friendly gesture by Intel. In truth it felt like a bit of an apology. You get the subtle sense they feel bad about how the BSD’s were treated with the Meltdown and Specter flaws. In fact, you may be right to think they felt a bit sorry towards the entire open source community.
Err codemadness.org 70 i 37249
Err codemadness.org 70 i 37256Err codemadness.org 70 i 37261 Err codemadness.org 70 i 37262At most massive venues the parking is the first concern, not so here - in fact that was rather straightforward. No, the real challenge is navigating the buildings. Luckily I had help from navigator extraordinaire, Hadea, who located the correct building, SC12 quickly. Finding the entrance took a moment or two though. The lobby itself was converted by iXsystems efficiently into the MeetBSD expo hall, clean, efficient and roomy with registration, some seating, and an extra conference room for on-on-one sessions. On day two sponsor booths were also setup. All who showed up on day one were warmly greeted with badges, lanyards and goodies by Denise and her friendly team.
Err codemadness.org 70 i 37260
Err codemadness.org 70 i 37257 Like every great BSD event, plenty of food was made available. And as always they make it look effortless. These events showcase iXsystem’s inherent generosity toward its community; with breakfast items in the back of the main auditorium room in the morning, boxed lunches, fruit and cookies at lunch time, and snacks for the rest of the day. But just in case your still hungry, there is a pizza meetup in another Intel room after day one and two.
Err codemadness.org 70 i 37258 MeetBSD leverages it’s realistically small crowd size on day one. The morning starts off with introductions of the entire group, the mic is passed around the room.
Err codemadness.org 70 i 37259 The group is a good mix of pros in the industry (such as Juniper, Intel, Ebay, Groupon, Cisco, etc), iX staff, and a few enthusiast. Lots of people with a focus or passion for networking. And, of course, some friendly Linux bashing went down for good measure, always followed by a good natured chuckle.
Err codemadness.org 70 i 37267Err codemadness.org 70 i 37269 Err codemadness.org 70 i 37270I find that I am subtly unnerved at this venue, and at lunch I saw it clearly. I have always had a strong geek radar, allowing me to navigate a new area (like Berkeley for MeetBSD of 2016, or even SCALE earlier this year in Pasadena), and in a glance I can see who is from my conference and who isn’t. This means it is easy, nearly effortless to know who to greet with a smile and a wave. These are MY people. Here at the Intel campus though it is different. The drive in alone reveals behemoth complexes all with well known tech names prominently displayed. This is Silicon Valley, and all of these people look like MY people. So much for knowing who’s from my conference. Thank goodness for those infamous BSD horns. None-the-less I am struck by how massive these tech giants are. And Intel is one of the largest of those giants, and see the physical reminders of this fact brought home the significance that they had opened their doors, wifi, and bathrooms to the BSD community.
Err codemadness.org 70 i 37268
###[EuroBSDcon 2018 Trip Reports]
Err codemadness.org 70
i 37273 https://www.freebsdfoundation.org/blog/eurobsd-2018-trip-report-joseph-mingrone/
Err codemadness.org 70
i 37274 https://www.freebsdfoundation.org/blog/eurobsd-2018-trip-report-vinicius-zavam/
Err codemadness.org 70
i 37275 https://www.freebsdfoundation.org/blog/eurobsd-2018-trip-report-emmanuel-vadot/
##News Roundup
Err codemadness.org 70
i 37280 ###DNS over TLS in FreeBSD 12
Err codemadness.org 70 i 37283Err codemadness.org 70 i 37286 Err codemadness.org 70 i 37287With the arrival of OpenSSL 1.1.1, an upgraded Unbound, and some changes to the setup and init scripts, FreeBSD 12.0, currently in beta, now supports DNS over TLS out of the box.
Err codemadness.org 70 i 37285
Err codemadness.org 70 i 37284 DNS over TLS is just what it sounds like: DNS over TCP, but wrapped in a TLS session. It encrypts your requests and the server’s replies, and optionally allows you to verify the identity of the server. The advantages are protection against eavesdropping and manipulation of your DNS traffic; the drawbacks are a slight performance degradation and potential firewall traversal issues, as it runs over a non-standard port (TCP port 853) which may be blocked on some networks. Let’s take a look at how to set it up.
Err codemadness.org 70 i 37292Err codemadness.org 70 i 37295 Err codemadness.org 70 i 37296We’ve seen how to set up Unbound—specifically, the local_unbound service in FreeBSD 12.0—to use DNS over TLS instead of plain UDP or TCP, using Cloudflare’s public DNS service as an example. We’ve looked at the performance impact, and at how to ensure (and verify) that Unbound validates the server certificate to prevent man-in-the-middle attacks.
Err codemadness.org 70 i 37294
Err codemadness.org 70 i 37293 The question that remains is whether it is all worth it. There is undeniably a performance hit, though this may improve with TLS 1.3. More importantly, there are currently very few DNS-over-TLS providers—only one, really, since Quad9 filter their responses—and you have to weigh the advantage of encrypting your DNS traffic against the disadvantage of sending it all to a single organization. I can’t answer that question for you, but I can tell you that the parameters are evolving quickly, and if your answer is negative today, it may not remain so for long. More providers will appear. Performance will improve with TLS 1.3 and QUIC. Within a year or two, running DNS over TLS may very well become the rule rather than the experimental exception.
###Upgrading OpenBSD with Ansible
Err codemadness.org 70 i 37299 Err codemadness.org 70 i 37300Err codemadness.org 70 i 37305Err codemadness.org 70 i 37309 Err codemadness.org 70 i 37310A few months ago, I needed software that had just hit the ports tree. I didn’t want to wait for the next release, so I upgraded my router to use -current. Since then, I’ve continued running -current, which means upgrading to a newer snapshot every so often. Running -current is great, but the process of updating to a newer snapshot was cumbersome. Initially, I had to plug in a serial cable and then reboot into bsd.rd, hit enter ten times, then reboot, run sysmerge and update packages.
Err codemadness.org 70 i 37308
Err codemadness.org 70 i 37306 I eventually switched to upobsd to be able to upgrade without the need for a serial connection. The process was better, but still tiresome. Usually, I would prepare the special version of bsd.rd, boot on bsd.rd, and do something like wash the dishes in the meantime. After about ten minutes, I would dry my hands and then go back to my workstation to see whether the bsd.rd part had finished so I could run sysmerge and pkg_add, and then return to the dishes while it upgraded packages.
Err codemadness.org 70 i 37307 Out of laziness, I thought: “I should automate this,” but what happened instead is that I simply didn’t upgrade that machine very often. (Yes, laziness). With my router out of commission, life is very dull, because it is my gateway to the Internet. Even services hosted at my place (like my Mastodon instance) are not reachable when the router is down because I use multiple VLANs (so I need the router to jump across VLANs).
Err codemadness.org 70 i 37315Err codemadness.org 70 i 37321 Err codemadness.org 70 i 37322I recently got a new job, and one of my first tasks was auditing the Ansible roles written by my predecessors. In one role, the machine rebooted and they used the wait_for_connection module to wait for it to come back up. That sounded quite hackish to me, so out of curiosity, I tried to determine whether there was a better way. I also thought I might be able to use something similar to further automate my OpenBSD upgrades, and wanted to assess the cleanliness of this method. ;-)
Err codemadness.org 70 i 37320
Err codemadness.org 70 i 37316 I learned that with the then-upcoming 2.7 Ansible release, a proper reboot module would be included. I went to the docs, which stated that for a certain parameter:
Err codemadness.org 70 i 37317 I took this to mean that there was no support for OpenBSD. I looked at the code and, indeed, there was not. However, I believed that it wouldn’t be too hard to add it. I added the missing pieces for OpenBSD, tested it on my poor Pine64 and then submitted it upstream. After a quick back and forth, the module’s author merged it into devel (having a friend working at Red Hat helped the process, merci Cyril !) A couple days later, the release engineer merged it into stable-2.7.
Err codemadness.org 70 i 37318 I proceeded to actually write the playbook, and then I hit a bug. The parameter reboot_timeout was not recognized by Ansible. This feature would definitely be useful on a slow machine (such as the Pine64 and its dying SD card). Again, my fix was merged into master by the module’s author and then merged into stable-2.7. 2.7.1 will be the first release to feature these fixes, but if you use OpenBSD -current, you already have access to them. I backported the patches when I updated ansible.
Err codemadness.org 70 i 37319 Fun fact about Ansible and reboots: “The win_reboot module was […] included with Ansible 2.1,” while for unix systems it wasn’t added until 2.7. :D For more details, you can read the module’s author blog article.
Err codemadness.org 70 i 37327Err codemadness.org 70 i 37333 Err codemadness.org 70 i 37334Ansible runs my script on the remote host to fetch the sets. It creates an answer file from the template and then gives it to upobsd. Once upobsd has created the kernel, Ansible copies it in place of /bsd on the host. The router reboots and boots on /bsd, which is upobsd’s bsd.rd. The installer runs in auto_update mode. Once it comes back from bsd.rd land, it archives the kernel and finishes by upgrading all the packages.
Err codemadness.org 70 i 37332
Err codemadness.org 70 i 37328 It also supports upgrading without fetching the sets ahead of time. For instance, I upgrade this way on my Pine64 because if I cared about speed, I wouldn’t use this weak computer with its dying SD card. For this case, I just comment out the path_sets variable and Ansible instead creates an answer file that will instruct the installer to fetch the sets from the designated mirror.
Err codemadness.org 70 i 37329 I’ve been archiving my kernels for a few years. It’s a nice way to fill up / keep a history of my upgrades. If I spot a regression, I can try a previous kernel … which may not work with the then-desynchronized userland, but that’s another story.
Err codemadness.org 70 i 37330 sysmerge already runs with rc.sysmerge in batch mode and sends the result by email. I don’t think there’s merit to running it again in the playbook. The only perk would be discovering in the terminal whether any files need to be manually merged, rather than reading exactly the same output in the email.
Err codemadness.org 70 i 37331 Initially, I used the openbsd_pkg module, but it doesn’t work on -current just before a release because pkg_add automatically looks for pub/OpenBSD/${release}/packages/${arch} (which is empty). I wrote and tested this playbook while 6.4 was around the corner, so I switched to command to be able to pass the -Dsnap parameter.
Err codemadness.org 70 i 37339Err codemadness.org 70 i 37341 Err codemadness.org 70 i 37342I’m very happy with the playbook! It performs the upgrade with as little intervention as possible and minimal downtime. \o/
Err codemadness.org 70 i 37340
###Using smartd to automatically run tests on your drives
Err codemadness.org 70 i 37345 Err codemadness.org 70 i 37346Err codemadness.org 70 i 37347Err codemadness.org 70 i 37349 Err codemadness.org 70 i 37350Those programs can “control and monitor storage systems using the Self-Monitoring, Analysis and Reporting Technology System (SMART) built into most modern ATA/SATA, SCSI/SAS and NVMe disks. In many cases, these utilities will provide advanced warning of disk degradation and failure.” See the smartmontools website for more information.
Err codemadness.org 70 i 37348
Err codemadness.org 70 i 37351Err codemadness.org 70 i 37353 Err codemadness.org 70 i 37354NOTE: “Due to OS-specific issues and also depending on the different state of smartmontools development on the platforms, device support is not the same for all OS platforms.” – use the documentation for your OS.
Err codemadness.org 70 i 37352
Err codemadness.org 70 i 37355Err codemadness.org 70 i 37357 Err codemadness.org 70 i 37358I first started using smartd in March 2010 (according to that blog post, that’s when I still writing on both The FreeBSD Diary and this blog). Back then, and until recently, all I did was start smartd. As far as I can tell, all it did was send daily status messages via the FreeBSD periodic tools. I would set my drive devices via daily_status_smart_devices in /etc/periodic.conf and the daily status reports would include drive health information.
Err codemadness.org 70 i 37356
##Beastie Bits
Err codemadness.org 70 i 37371 Err codemadness.org 70 i 37372##Feedback/Questions
Err codemadness.org 70 i 37386 Err codemadness.org 70 i 37387##Headlines
Err codemadness.org 70
i 37411 ###MidnightBSD 1.0 now available
Err codemadness.org 70 i 37414Err codemadness.org 70 i 37418 Err codemadness.org 70 i 37419I’m happy to announce the availability of MidnightBSD 1.0 for amd64 and i386. Over the years, many ambitious goals were set for our 1.0 release. As it approached, it was clear we wouldn’t be able to accomplish all of them. This release is more of a natural progression rather than a groundbreaking event. It includes many updates to the base system, improvements to the package manager, an updated compiler, and tools.
Err codemadness.org 70 i 37417
Err codemadness.org 70 i 37415 Of particular note, you can now boot off of ZFS and use NVME SSDs and some AMD Radeon graphics cards support acceleration. AMD Ryzen support has greatly improved in this release. We also have added bhyve from FreeBSD.
Err codemadness.org 70 i 37416 The 1.0 release is finally available. Still building packages for i386 and plan to do an amd64 package build later in the week. The single largest issue with the release process has been the web server performance. The CPU is overloaded and has been at solid 100% for several days. The server has a core i7 7700 in it. I’m trying to figure out what to buy as an upgrade so that we don’t continue to have this issue going forward. As it’s actually blocked in multiple processes, a 6 or 8 core chip might be an improvement for the workload…
Err codemadness.org 70 i 37429Err codemadness.org 70 i 37431 Err codemadness.org 70 i 37432MeetBSD 2018 took place at the sprawling Intel Santa Clara campus. The venue itself felt more like an olive branch than a simple friendly gesture by Intel. In truth it felt like a bit of an apology. You get the subtle sense they feel bad about how the BSD’s were treated with the Meltdown and Specter flaws. In fact, you may be right to think they felt a bit sorry towards the entire open source community.
Err codemadness.org 70 i 37430
Err codemadness.org 70 i 37437Err codemadness.org 70 i 37442 Err codemadness.org 70 i 37443At most massive venues the parking is the first concern, not so here - in fact that was rather straightforward. No, the real challenge is navigating the buildings. Luckily I had help from navigator extraordinaire, Hadea, who located the correct building, SC12 quickly. Finding the entrance took a moment or two though. The lobby itself was converted by iXsystems efficiently into the MeetBSD expo hall, clean, efficient and roomy with registration, some seating, and an extra conference room for on-on-one sessions. On day two sponsor booths were also setup. All who showed up on day one were warmly greeted with badges, lanyards and goodies by Denise and her friendly team.
Err codemadness.org 70 i 37441
Err codemadness.org 70 i 37438 Like every great BSD event, plenty of food was made available. And as always they make it look effortless. These events showcase iXsystem’s inherent generosity toward its community; with breakfast items in the back of the main auditorium room in the morning, boxed lunches, fruit and cookies at lunch time, and snacks for the rest of the day. But just in case your still hungry, there is a pizza meetup in another Intel room after day one and two.
Err codemadness.org 70 i 37439 MeetBSD leverages it’s realistically small crowd size on day one. The morning starts off with introductions of the entire group, the mic is passed around the room.
Err codemadness.org 70 i 37440 The group is a good mix of pros in the industry (such as Juniper, Intel, Ebay, Groupon, Cisco, etc), iX staff, and a few enthusiast. Lots of people with a focus or passion for networking. And, of course, some friendly Linux bashing went down for good measure, always followed by a good natured chuckle.
Err codemadness.org 70 i 37448Err codemadness.org 70 i 37450 Err codemadness.org 70 i 37451I find that I am subtly unnerved at this venue, and at lunch I saw it clearly. I have always had a strong geek radar, allowing me to navigate a new area (like Berkeley for MeetBSD of 2016, or even SCALE earlier this year in Pasadena), and in a glance I can see who is from my conference and who isn’t. This means it is easy, nearly effortless to know who to greet with a smile and a wave. These are MY people. Here at the Intel campus though it is different. The drive in alone reveals behemoth complexes all with well known tech names prominently displayed. This is Silicon Valley, and all of these people look like MY people. So much for knowing who’s from my conference. Thank goodness for those infamous BSD horns. None-the-less I am struck by how massive these tech giants are. And Intel is one of the largest of those giants, and see the physical reminders of this fact brought home the significance that they had opened their doors, wifi, and bathrooms to the BSD community.
Err codemadness.org 70 i 37449
###[EuroBSDcon 2018 Trip Reports]
Err codemadness.org 70
i 37454 https://www.freebsdfoundation.org/blog/eurobsd-2018-trip-report-joseph-mingrone/
Err codemadness.org 70
i 37455 https://www.freebsdfoundation.org/blog/eurobsd-2018-trip-report-vinicius-zavam/
Err codemadness.org 70
i 37456 https://www.freebsdfoundation.org/blog/eurobsd-2018-trip-report-emmanuel-vadot/
##News Roundup
Err codemadness.org 70
i 37461 ###DNS over TLS in FreeBSD 12
Err codemadness.org 70 i 37464Err codemadness.org 70 i 37467 Err codemadness.org 70 i 37468With the arrival of OpenSSL 1.1.1, an upgraded Unbound, and some changes to the setup and init scripts, FreeBSD 12.0, currently in beta, now supports DNS over TLS out of the box.
Err codemadness.org 70 i 37466
Err codemadness.org 70 i 37465 DNS over TLS is just what it sounds like: DNS over TCP, but wrapped in a TLS session. It encrypts your requests and the server’s replies, and optionally allows you to verify the identity of the server. The advantages are protection against eavesdropping and manipulation of your DNS traffic; the drawbacks are a slight performance degradation and potential firewall traversal issues, as it runs over a non-standard port (TCP port 853) which may be blocked on some networks. Let’s take a look at how to set it up.
Err codemadness.org 70 i 37473Err codemadness.org 70 i 37476 Err codemadness.org 70 i 37477We’ve seen how to set up Unbound—specifically, the local_unbound service in FreeBSD 12.0—to use DNS over TLS instead of plain UDP or TCP, using Cloudflare’s public DNS service as an example. We’ve looked at the performance impact, and at how to ensure (and verify) that Unbound validates the server certificate to prevent man-in-the-middle attacks.
Err codemadness.org 70 i 37475
Err codemadness.org 70 i 37474 The question that remains is whether it is all worth it. There is undeniably a performance hit, though this may improve with TLS 1.3. More importantly, there are currently very few DNS-over-TLS providers—only one, really, since Quad9 filter their responses—and you have to weigh the advantage of encrypting your DNS traffic against the disadvantage of sending it all to a single organization. I can’t answer that question for you, but I can tell you that the parameters are evolving quickly, and if your answer is negative today, it may not remain so for long. More providers will appear. Performance will improve with TLS 1.3 and QUIC. Within a year or two, running DNS over TLS may very well become the rule rather than the experimental exception.
###Upgrading OpenBSD with Ansible
Err codemadness.org 70 i 37480 Err codemadness.org 70 i 37481Err codemadness.org 70 i 37486Err codemadness.org 70 i 37490 Err codemadness.org 70 i 37491A few months ago, I needed software that had just hit the ports tree. I didn’t want to wait for the next release, so I upgraded my router to use -current. Since then, I’ve continued running -current, which means upgrading to a newer snapshot every so often. Running -current is great, but the process of updating to a newer snapshot was cumbersome. Initially, I had to plug in a serial cable and then reboot into bsd.rd, hit enter ten times, then reboot, run sysmerge and update packages.
Err codemadness.org 70 i 37489
Err codemadness.org 70 i 37487 I eventually switched to upobsd to be able to upgrade without the need for a serial connection. The process was better, but still tiresome. Usually, I would prepare the special version of bsd.rd, boot on bsd.rd, and do something like wash the dishes in the meantime. After about ten minutes, I would dry my hands and then go back to my workstation to see whether the bsd.rd part had finished so I could run sysmerge and pkg_add, and then return to the dishes while it upgraded packages.
Err codemadness.org 70 i 37488 Out of laziness, I thought: “I should automate this,” but what happened instead is that I simply didn’t upgrade that machine very often. (Yes, laziness). With my router out of commission, life is very dull, because it is my gateway to the Internet. Even services hosted at my place (like my Mastodon instance) are not reachable when the router is down because I use multiple VLANs (so I need the router to jump across VLANs).
Err codemadness.org 70 i 37496Err codemadness.org 70 i 37502 Err codemadness.org 70 i 37503I recently got a new job, and one of my first tasks was auditing the Ansible roles written by my predecessors. In one role, the machine rebooted and they used the wait_for_connection module to wait for it to come back up. That sounded quite hackish to me, so out of curiosity, I tried to determine whether there was a better way. I also thought I might be able to use something similar to further automate my OpenBSD upgrades, and wanted to assess the cleanliness of this method. ;-)
Err codemadness.org 70 i 37501
Err codemadness.org 70 i 37497 I learned that with the then-upcoming 2.7 Ansible release, a proper reboot module would be included. I went to the docs, which stated that for a certain parameter:
Err codemadness.org 70 i 37498 I took this to mean that there was no support for OpenBSD. I looked at the code and, indeed, there was not. However, I believed that it wouldn’t be too hard to add it. I added the missing pieces for OpenBSD, tested it on my poor Pine64 and then submitted it upstream. After a quick back and forth, the module’s author merged it into devel (having a friend working at Red Hat helped the process, merci Cyril !) A couple days later, the release engineer merged it into stable-2.7.
Err codemadness.org 70 i 37499 I proceeded to actually write the playbook, and then I hit a bug. The parameter reboot_timeout was not recognized by Ansible. This feature would definitely be useful on a slow machine (such as the Pine64 and its dying SD card). Again, my fix was merged into master by the module’s author and then merged into stable-2.7. 2.7.1 will be the first release to feature these fixes, but if you use OpenBSD -current, you already have access to them. I backported the patches when I updated ansible.
Err codemadness.org 70 i 37500 Fun fact about Ansible and reboots: “The win_reboot module was […] included with Ansible 2.1,” while for unix systems it wasn’t added until 2.7. :D For more details, you can read the module’s author blog article.
Err codemadness.org 70 i 37508Err codemadness.org 70 i 37514 Err codemadness.org 70 i 37515Ansible runs my script on the remote host to fetch the sets. It creates an answer file from the template and then gives it to upobsd. Once upobsd has created the kernel, Ansible copies it in place of /bsd on the host. The router reboots and boots on /bsd, which is upobsd’s bsd.rd. The installer runs in auto_update mode. Once it comes back from bsd.rd land, it archives the kernel and finishes by upgrading all the packages.
Err codemadness.org 70 i 37513
Err codemadness.org 70 i 37509 It also supports upgrading without fetching the sets ahead of time. For instance, I upgrade this way on my Pine64 because if I cared about speed, I wouldn’t use this weak computer with its dying SD card. For this case, I just comment out the path_sets variable and Ansible instead creates an answer file that will instruct the installer to fetch the sets from the designated mirror.
Err codemadness.org 70 i 37510 I’ve been archiving my kernels for a few years. It’s a nice way to fill up / keep a history of my upgrades. If I spot a regression, I can try a previous kernel … which may not work with the then-desynchronized userland, but that’s another story.
Err codemadness.org 70 i 37511 sysmerge already runs with rc.sysmerge in batch mode and sends the result by email. I don’t think there’s merit to running it again in the playbook. The only perk would be discovering in the terminal whether any files need to be manually merged, rather than reading exactly the same output in the email.
Err codemadness.org 70 i 37512 Initially, I used the openbsd_pkg module, but it doesn’t work on -current just before a release because pkg_add automatically looks for pub/OpenBSD/${release}/packages/${arch} (which is empty). I wrote and tested this playbook while 6.4 was around the corner, so I switched to command to be able to pass the -Dsnap parameter.
Err codemadness.org 70 i 37520Err codemadness.org 70 i 37522 Err codemadness.org 70 i 37523I’m very happy with the playbook! It performs the upgrade with as little intervention as possible and minimal downtime. \o/
Err codemadness.org 70 i 37521
###Using smartd to automatically run tests on your drives
Err codemadness.org 70 i 37526 Err codemadness.org 70 i 37527Err codemadness.org 70 i 37528Err codemadness.org 70 i 37530 Err codemadness.org 70 i 37531Those programs can “control and monitor storage systems using the Self-Monitoring, Analysis and Reporting Technology System (SMART) built into most modern ATA/SATA, SCSI/SAS and NVMe disks. In many cases, these utilities will provide advanced warning of disk degradation and failure.” See the smartmontools website for more information.
Err codemadness.org 70 i 37529
Err codemadness.org 70 i 37532Err codemadness.org 70 i 37534 Err codemadness.org 70 i 37535NOTE: “Due to OS-specific issues and also depending on the different state of smartmontools development on the platforms, device support is not the same for all OS platforms.” – use the documentation for your OS.
Err codemadness.org 70 i 37533
Err codemadness.org 70 i 37536Err codemadness.org 70 i 37538 Err codemadness.org 70 i 37539I first started using smartd in March 2010 (according to that blog post, that’s when I still writing on both The FreeBSD Diary and this blog). Back then, and until recently, all I did was start smartd. As far as I can tell, all it did was send daily status messages via the FreeBSD periodic tools. I would set my drive devices via daily_status_smart_devices in /etc/periodic.conf and the daily status reports would include drive health information.
Err codemadness.org 70 i 37537
##Beastie Bits
Err codemadness.org 70 i 37552 Err codemadness.org 70 i 37553##Feedback/Questions
Err codemadness.org 70 i 37567 Err codemadness.org 70 i 37568##Headlines
Err codemadness.org 70
i 37960 ###OpenBSD 6.4 released
###GhostBSD 18.10 RC2 Announced
Err codemadness.org 70 i 37975 Err codemadness.org 70 i 37976Err codemadness.org 70 i 37977Err codemadness.org 70 i 37979 Err codemadness.org 70 i 37980This second release candidate of GhostBSD 18.10 is the second official release of GhostBSD with TrueOS under the hood. The official desktop of GhostBSD is MATE. However, in the future, there might be an XFCE community release, but for now, there is no community release yet.
Err codemadness.org 70 i 37978
What has changed since RC1
Err codemadness.org 70 i 37983Removed drm-stable-kmod and we will let users installed the propper drm-*-kmod
Err codemadness.org 70 i 37986Douglas Joachin added libva-intel-driver libva-vdpau-driver to supports accelerated some video driver for Intel
Err codemadness.org 70 i 37989Issues that got fixed
Err codemadness.org 70 i 37992Bug #70 Cannot run Octopi, missing libgksu error.
Err codemadness.org 70 i 37995Bug #71 LibreOffice doesn’t start because of missing libcurl.so.4
Err codemadness.org 70 i 37998Bug #72 libarchive is a missing dependency
Err codemadness.org 70 i 38001Err codemadness.org 70 i 38005Err codemadness.org 70 i 38007 Err codemadness.org 70 i 38008Again thanks to iXsystems, TrueOS, Joe Maloney, Kris Moore, Ken Moore, Martin Wilke, Neville Goddard, Vester “Vic” Thacker, Douglas Joachim, Alex Lyakhov, Yetkin Degirmenci and many more who helped to make the transition from FreeBSD to TrueOS smoother.
Err codemadness.org 70 i 38006
Updating from RC1 to RC2:
Err codemadness.org 70 i 38011sudo pkg update -f
Err codemadness.org 70 i 38014sudo pkg install -f libarchive curl libgksu
Err codemadness.org 70 i 38017sudo pkg upgrade
Err codemadness.org 70 i 38020Where to download:
Err codemadness.org 70 i 38023All images checksum, hybrid ISO(DVD, USB) and torrent are available here: https://www.ghostbsd.org/download
Err codemadness.org 70 i 38026[ScreenShots]
Err codemadness.org 70 i 38029https://www.ghostbsd.org/sites/default/files/Screenshot_at_2018-10-20_13-22-41.png
Err codemadness.org 70 i 38032https://www.ghostbsd.org/sites/default/files/Screenshot_at_2018-10-20_13-27-26.png
Err codemadness.org 70 i 38035###OpenSSH 7.9 has been released and it has support for OpenSSL 1.1
Err codemadness.org 70 i 38041 Err codemadness.org 70 i 38042Changes since OpenSSH 7.8 Err codemadness.org 70
i 38043 ========================= Err codemadness.org 70
i 38044 Err codemadness.org 70
i 38045 This is primarily a bugfix release. Err codemadness.org 70
i 38046 Err codemadness.org 70
i 38047 New Features Err codemadness.org 70
i 38048 ------------ Err codemadness.org 70
i 38049 * ssh(1), sshd(8): allow most port numbers to be specified using Err codemadness.org 70
i 38050 service names from getservbyname(3) (typically /etc/services). Err codemadness.org 70
i 38051 * ssh(1): allow the IdentityAgent configuration directive to accept Err codemadness.org 70
i 38052 environment variable names. This supports the use of multiple Err codemadness.org 70
i 38053 agent sockets without needing to use fixed paths. Err codemadness.org 70
i 38054 * sshd(8): support signalling sessions via the SSH protocol. Err codemadness.org 70
i 38055 A limited subset of signals is supported and only for login or Err codemadness.org 70
i 38056 command sessions (i.e. not subsystems) that were not subject to Err codemadness.org 70
i 38057 a forced command via authorized_keys or sshd_config. bz#1424 Err codemadness.org 70
i 38058 * ssh(1): support "ssh -Q sig" to list supported signature options. Err codemadness.org 70
i 38059 Also "ssh -Q help" to show the full set of supported queries. Err codemadness.org 70
i 38060 * ssh(1), sshd(8): add a CASignatureAlgorithms option for the Err codemadness.org 70
i 38061 client and server configs to allow control over which signature Err codemadness.org 70
i 38062 formats are allowed for CAs to sign certificates. For example, Err codemadness.org 70
i 38063 this allows banning CAs that sign certificates using the RSA-SHA1 Err codemadness.org 70
i 38064 signature algorithm. Err codemadness.org 70
i 38065 * sshd(8), ssh-keygen(1): allow key revocation lists (KRLs) to Err codemadness.org 70
i 38066 revoke keys specified by SHA256 hash. Err codemadness.org 70
i 38067 * ssh-keygen(1): allow creation of key revocation lists directly Err codemadness.org 70
i 38068 from base64-encoded SHA256 fingerprints. This supports revoking Err codemadness.org 70
i 38069 keys using only the information contained in sshd(8) Err codemadness.org 70
i 38070 authentication log messages. Err codemadness.org 70
i 38071 Err codemadness.org 70
i 38072 Bugfixes Err codemadness.org 70
i 38073 -------- Err codemadness.org 70
i 38074 Err codemadness.org 70
i 38075 * ssh(1), ssh-keygen(1): avoid spurious "invalid format" errors when Err codemadness.org 70
i 38076 attempting to load PEM private keys while using an incorrect Err codemadness.org 70
i 38077 passphrase. bz#2901 Err codemadness.org 70
i 38078 * sshd(8): when a channel closed message is received from a client, Err codemadness.org 70
i 38079 close the stderr file descriptor at the same time stdout is Err codemadness.org 70
i 38080 closed. This avoids stuck processes if they were waiting for Err codemadness.org 70
i 38081 stderr to close and were insensitive to stdin/out closing. bz#2863 Err codemadness.org 70
i 38082 * ssh(1): allow ForwardX11Timeout=0 to disable the untrusted X11 Err codemadness.org 70
i 38083 forwarding timeout and support X11 forwarding indefinitely. Err codemadness.org 70
i 38084 Previously the behaviour of ForwardX11Timeout=0 was undefined. Err codemadness.org 70
i 38085 * sshd(8): when compiled with GSSAPI support, cache supported method Err codemadness.org 70
i 38086 OIDs regardless of whether GSSAPI authentication is enabled in the Err codemadness.org 70
i 38087 main section of sshd_config. This avoids sandbox violations if Err codemadness.org 70
i 38088 GSSAPI authentication was later enabled in a Match block. bz#2107 Err codemadness.org 70
i 38089 * sshd(8): do not fail closed when configured with a text key Err codemadness.org 70
i 38090 revocation list that contains a too-short key. bz#2897 Err codemadness.org 70
i 38091 * ssh(1): treat connections with ProxyJump specified the same as Err codemadness.org 70
i 38092 ones with a ProxyCommand set with regards to hostname Err codemadness.org 70
i 38093 canonicalisation (i.e. don't try to canonicalise the hostname Err codemadness.org 70
i 38094 unless CanonicalizeHostname is set to 'always'). bz#2896 Err codemadness.org 70
i 38095 * ssh(1): fix regression in OpenSSH 7.8 that could prevent public- Err codemadness.org 70
i 38096 key authentication using certificates hosted in a ssh-agent(1) Err codemadness.org 70
i 38097 or against sshd(8) from OpenSSH <7.8. Err codemadness.org 70
i 38098 Err codemadness.org 70
i 38099 Portability Err codemadness.org 70
i 38100 ----------- Err codemadness.org 70
i 38101 Err codemadness.org 70
i 38102 * All: support building against the openssl-1.1 API (releases 1.1.0g Err codemadness.org 70
i 38103 and later). The openssl-1.0 API will remain supported at least Err codemadness.org 70
i 38104 until OpenSSL terminates security patch support for that API version. Err codemadness.org 70
i 38105 * sshd(8): allow the futex(2) syscall in the Linux seccomp sandbox; Err codemadness.org 70
i 38106 apparently required by some glibc/OpenSSL combinations. Err codemadness.org 70
i 38107 * sshd(8): handle getgrouplist(3) returning more than Err codemadness.org 70
i 38108 _SC_NGROUPS_MAX groups. Some platforms consider this limit more Err codemadness.org 70
i 38109 as a guideline. Err codemadness.org 70
i 38110 Err codemadness.org 70
i 38111 Err codemadness.org 70
i 38112 ##News Roundup
Err codemadness.org 70 i 38115 Err codemadness.org 70 i 38116###MeetBSD 2018: The Ultimate Hallway Track
Err codemadness.org 70 i 38117 Err codemadness.org 70 i 38118Err codemadness.org 70 i 38119Err codemadness.org 70 i 38121 Err codemadness.org 70 i 38122Founded in Poland in 2007 and first hosted in California in 2008, MeetBSD combines formal talks with UnConference activities to provide a level of interactivity not found at any other BSD conference. The character of each MeetBSD is determined largely by its venue, ranging from Hacker Dojo in 2010 to Intel’s Santa Clara headquarters this year. The Intel SC12 building provided a beautiful auditorium and sponsors’ room, plus a cafeteria for the Friday night social event and the Saturday night FreeBSD 25th Anniversary Celebration. The formal nature of the auditorium motivated the formation of MeetBSD’s first independent Program Committee and public Call for Participation. Together these resulted in a backbone of talks presented by speakers from the USA, Canada, and Poland, combined with UnConference activities tailored to the space.
Err codemadness.org 70 i 38120
Err codemadness.org 70 i 38127Err codemadness.org 70 i 38129 Err codemadness.org 70 i 38130Day Zero of MeetBSD was a FreeBSD Developer/Vendor Summit hosted in the same auditorium where the talks would take place. Like the conference itself, this event featured a mix of scheduled talks and interactive sessions. The scheduled talks were LWPMFS: LightWeight Persistent Memory Filesystem by Ravi Pokala, Evaluating GIT for FreeBSD by Ed Maste, and NUMA by Mark Johnston. Ed’s overview of the advantages and disadvantages of using Git for FreeBSD development was of the most interest to users and developers, and the discussion continued into the following two days.
Err codemadness.org 70 i 38128
Err codemadness.org 70 i 38135Err codemadness.org 70 i 38137 Err codemadness.org 70 i 38138The first official day of MeetBSD 2018 was kicked off with introductions led by emcee JT Pennington and a keynote, “Using TrueOS to boot-strap your FreeBSD-based project” by Kris Moore. Kris described a new JSON-based release infrastructure that he has exercised with FreeBSD, TrueOS, and FreeNAS. Kris’ talk was followed by “Intel & FreeBSD: Better Together” by Ben Widawsky, the FreeBSD program lead at Intel, who gave an overview of Intel’s past and current efforts supporting FreeBSD. Next came lunch, followed by Kamil Rytarowski’s “Bug detecting software in the NetBSD userland: MKSANITIZER”. This was followed by 5-Minute Lightning Talks, Andrew Fengler’s “FreeBSD: What to (Not) Monitor”, and an OpenZFS Panel Discussion featuring OpenZFS experts Michael W. Lucas, Allan Jude, Alexander Motin, Pawel Dawidek, and Dan Langille. Day one concluded with a social event at the Intel cafeteria where the discussions continued into the night.
Err codemadness.org 70 i 38136
Err codemadness.org 70 i 38143Err codemadness.org 70 i 38145 Err codemadness.org 70 i 38146Day Two of MeetBSD 2018 kicked off with a keynote by Michael W. Lucas entitled “Why BSD?”, where Michael detailed what makes the BSD community different and why it attracts us all. This was followed by Dr. Kirk McKusick’s “The Early Days of BSD” talk, which was followed by “DTrace/dwatch in Production” by Devin Teske. After lunch, we enjoyed “A Curmudgeon’s Language Selection Criteria: Why I Don’t Write Everything in Go, Rust, Elixir, etc” by G. Clifford Williams and, “Best practices of sandboxing applications with Capsicum” by Mariusz Zaborski. I then hosted a Virtualization Panel Discussion that featured eight developers from FreeBSD, OpenBSD, and NetBSD. We then split up for Breakout Sessions and the one on Bloomberg’s controversial article on backdoored Supermicro systems was fascinating given the experts present, all of whom were skeptical of the feasibility of the attack. The day wrapped up with a final talk, “Tales of a Daemontown Performance Peddler: Why ‘it depends’ and what you can do about it” by Nick Principe, followed by the FreeBSD 25th Anniversary Celebration.
Err codemadness.org 70 i 38144
Err codemadness.org 70 i 38151Err codemadness.org 70 i 38153 Err codemadness.org 70 i 38154I confess the other organizers and I were nervous about how well one large auditorium would suit a BSD event but the flexible personal space it gave everyone allowed for countless meetings and heated hacking that often brought about immediate results. I watched people take ideas through several iterations with the help and input of obvious and unexpected experts, all of whom were within reach. Not having to pick up and leave for a talk in another room organically resulted in essentially a series of mini hackathons that none of us anticipated but were delighted to witness, taking the “hallway track” to a whole new level. The mix of formal and UnConference activities at MeetBSD is certain to evolve. Thank you to everyone who participated with questions, Lightning Talks, and Panel participation. A huge thanks to our sponsors, including Intel for both hosting and sponsoring MeetBSD California 2018, Western Digital, Supermicro, Verisign, Jupiter Broadcasting, the FreeBSD Foundation, Bank of America Merrill Lynch, the NetBSD Foundation, and the team at iXsystems.
Err codemadness.org 70 i 38152
Err codemadness.org 70 i 38155Err codemadness.org 70 i 38157 Err codemadness.org 70 i 38158See you at MeetBSD 2020!
Err codemadness.org 70 i 38156
###Setup DragonflyBSD with a desktop on real hardware ThinkPad T410
Err codemadness.org 70
i 38161 +Video Demo
Err codemadness.org 70 i 38164Err codemadness.org 70 i 38168 Err codemadness.org 70 i 38169Linux has become too mainstream and standard BSD is a common thing now? How about DragonflyBSD which was created as a fork of FreeBSD 4.8 in conflict over system internals. This tutorial will show how to install it and set up a user-oriented desktop. It should work with DragonflyBSD, FreeBSD and probably all BSDs.
Err codemadness.org 70 i 38167
Err codemadness.org 70 i 38165 Some background: BSD was is ultimately derived from UNIX back in the days. It is not Linux even though it is similar in many ways because Linux was designed to follow UNIX principles. Seeing is believing, so check out the video of the install!
Err codemadness.org 70 i 38166 I did try two BSD distros before called GhostBSD and TrueOS and you can check out my short reviews. DragonflyBSD comes like FreeBSD bare bones and requires some work to get a desktop running.
Download image file and burn to USB drive or DVD
Err codemadness.org 70 i 38172First installation
Err codemadness.org 70 i 38175Setting up the system and installing a desktop
Err codemadness.org 70 i 38178Inside the desktop
Err codemadness.org 70 i 38181Install some more programs
Err codemadness.org 70 i 38184How to enable sound?
Err codemadness.org 70 i 38187Let’s play some free games
Err codemadness.org 70 i 38190Setup WiFi
Err codemadness.org 70 i 38193Power mode settings
Err codemadness.org 70 i 38196More to do?
Err codemadness.org 70 i 38199Err codemadness.org 70 i 38203Err codemadness.org 70 i 38205 Err codemadness.org 70 i 38206You can check out this blog post if you want a much more detailed tutorial. If you don’t mind standard BSD, get the GhostBSD distro instead which comes with a ready-made desktop xcfe or mate and many functional presets.
Err codemadness.org 70 i 38204
A small summary of what we got on the upside:
Err codemadness.org 70 i 38209Some downsides:
Err codemadness.org 70 i 38220 Err codemadness.org 70 i 38221Less driver and direct app support than Linux
Err codemadness.org 70 i 38225 Err codemadness.org 70 i 38226Installer and desktop have some traps and quirks and require work
Err codemadness.org 70 i 38230 Err codemadness.org 70 i 38231Err codemadness.org 70 i 38238Err codemadness.org 70 i 38245 Err codemadness.org 70 i 38246Keybase significantly simplifies the whole keypair/PGP thing and makes what is usually a confusing, difficult experience actually rather pleasant. At its heart is an open-source command line utility that does all of the heavy cryptographic lifting. But it’s also hooked up to the network of all other Keybase users, so you don’t have to work very hard to maintain big keychains. Pretty cool!
Err codemadness.org 70 i 38244
Err codemadness.org 70 i 38239 So, this evening, I tried to get it to all work on NetBSD.
Err codemadness.org 70 i 38240 The Keybase client code base is, in my opinion, not very well architected… there exist many different Keybase clients (command line apps, desktop apps, mobile apps) and for some reason the code for all of them are seemingly in this single repository, without even using Git submodules. Not sure what that’s about.
Err codemadness.org 70 i 38241 Anyway, “go build”-ing the command line program (it’s written in Go) failed immediately because there’s some platform-specific code that just does not seem to recognize that NetBSD exists (but they do for FreeBSD and OpenBSD). Looks like the Keybase developers maintain a Golang wrapper around struct proc, which of course is different from OS to OS. So I literally just copypasted the OpenBSD wrapper, renamed it to “NetBSD”, and the build basically succeeded from there! This is of course super janky and untrustworthy, but it seems to Mostly Just Work…
Err codemadness.org 70 i 38242 I forked the GitHub repo, you can see the diff on top of keybase 2.7.3 here: bccaaf3096a
Err codemadness.org 70 i 38243 Eventually I ended up with a ~/go/bin/keybase which launches just fine. Meaning, I can main() okay. But the moment you try to do anything interesting, it looks super scary:
charlotte@sakuracity:~/go/bin ./keybase login Err codemadness.org 70
i 38247 ▶ WARNING Running in devel mode Err codemadness.org 70
i 38248 ▶ INFO Forking background server with pid=12932 Err codemadness.org 70
i 38249 ▶ ERROR unexpected error in Login: API network error: doRetry failed, Err codemadness.org 70
i 38250 attempts: 1, timeout 5s, last err: Get Err codemadness.org 70
i 38251 http://localhost:3000/_/api/1.0/merkle/path.json?last=3784314&load_deleted=1&load_reset_chain=1&poll=10&sig_hints_low=3&uid=38ae1dfa49cd6831ea2fdade5c5d0519: Err codemadness.org 70
i 38252 dial tcp [::1]:3000: connect: connection refused Err codemadness.org 70
i 38253 Err codemadness.org 70
i 38254 Err codemadness.org 70
i 38255 Err codemadness.org 70 i 38256Err codemadness.org 70 i 38258 Err codemadness.org 70 i 38259There’s a few things about this error message that stuck out to me:
Err codemadness.org 70 i 38257
Err codemadness.org 70 i 38265Err codemadness.org 70 i 38267 Err codemadness.org 70 i 38268Unfortunately, this nonfunctional “background server” sticks around even when a command as simple as ‘login’ command just failed:
Err codemadness.org 70 i 38266
charlotte@sakuracity:~/go/bin ps 12932 Err codemadness.org 70
i 38269 PID TTY STAT TIME COMMAND Err codemadness.org 70
i 38270 12932 ? Ssl 0:00.21 ./keybase --debug --log-file Err codemadness.org 70
i 38271 /home/charlotte/.cache/keybase.devel/keybase.service.log service --chdir Err codemadness.org 70
i 38272 /home/charlotte/.config/keybase.devel --auto-forked Err codemadness.org 70
i 38273 Err codemadness.org 70
i 38274 Err codemadness.org 70
i 38275 Err codemadness.org 70 i 38276Err codemadness.org 70 i 38278 Err codemadness.org 70 i 38279I’m not exactly sure what the intended purpose of the “background server” even is, but fortunately we can kill it and even tell the keybase command to not even spawn one:
Err codemadness.org 70 i 38277
charlotte@sakuracity:~/go/bin ./keybase help advanced | grep -- --standalone Err codemadness.org 70
i 38280 --standalone Use the client without any daemon support. Err codemadness.org 70
i 38281 Err codemadness.org 70
i 38282 Err codemadness.org 70
i 38283 Err codemadness.org 70 i 38284Err codemadness.org 70 i 38286 Err codemadness.org 70 i 38287And then we can fix wanting to connect to localhost by specifying an expected Keybase API server – how about the one hosted at https://keybase.io?
Err codemadness.org 70 i 38285
charlotte@sakuracity:~/go/bin ./keybase help advanced | grep -- --server Err codemadness.org 70
i 38288 --server, -s Specify server API. Err codemadness.org 70
i 38289 Err codemadness.org 70
i 38290 Err codemadness.org 70
i 38291 Err codemadness.org 70 i 38292Err codemadness.org 70 i 38294 Err codemadness.org 70 i 38295Basically, what I’m trying to say is that if you specify both of these options, the keybase command does what I expect on NetBSD:
Err codemadness.org 70 i 38293
charlotte@sakuracity:~/go/bin ./keybase --standalone -s https://keybase.io login Err codemadness.org 70
i 38296 ▶ WARNING Running in devel mode Err codemadness.org 70
i 38297 Please enter the Keybase passphrase for dressupgeekout (6+ characters): Err codemadness.org 70
i 38298 Err codemadness.org 70
i 38299 charlotte@sakuracity:~/go/bin ./keybase --standalone -s https://keybase.io id dressupgeekout Err codemadness.org 70
i 38300 ▶ WARNING Running in devel mode Err codemadness.org 70
i 38301 ▶ INFO Identifying dressupgeekout Err codemadness.org 70
i 38302 ✔ public key fingerprint: 7873 DA50 A786 9A3F 1662 3A17 20BD 8739 E82C 7F2F Err codemadness.org 70
i 38303 ✔ "dressupgeekout" on github: Err codemadness.org 70
i 38304 https://gist.github.com/0471c7918d254425835bf5e1b4bcda00 [cached 2018-10-11 Err codemadness.org 70
i 38305 20:55:21 PDT] Err codemadness.org 70
i 38306 ✔ "dressupgeekout" on reddit: Err codemadness.org 70
i 38307 https://www.reddit.com/r/KeybaseProofs/comments/9ng5qm/my_keybase_proof_redditdressupgeekout/ Err codemadness.org 70
i 38308 [cached 2018-10-11 20:55:21 PDT] Err codemadness.org 70
i 38309 Err codemadness.org 70
i 38310 Err codemadness.org 70
i 38311 ###Initial implementation of draft-ietf-6man-ipv6only-flag
Err codemadness.org 70 i 38314 Err codemadness.org 70 i 38315This change defines the RA "6" (IPv6-Only) flag which routers Err codemadness.org 70
i 38316 may advertise, kernel logic to check if all routers on a link Err codemadness.org 70
i 38317 have the flag set and accordingly update a per-interface flag. Err codemadness.org 70
i 38318 Err codemadness.org 70
i 38319 If all routers agree that it is an IPv6-only link, ether_output_frame(), Err codemadness.org 70
i 38320 based on the interface flag, will filter out all ETHERTYPE_IP/ARP Err codemadness.org 70
i 38321 frames, drop them, and return EAFNOSUPPORT to upper layers. Err codemadness.org 70
i 38322 Err codemadness.org 70
i 38323 The change also updates ndp to show the "6" flag, ifconfig to Err codemadness.org 70
i 38324 display the IPV6_ONLY nd6 flag if set, and rtadvd to allow Err codemadness.org 70
i 38325 announcing the flag. Err codemadness.org 70
i 38326 Err codemadness.org 70
i 38327 Further changes to tcpdump (contrib code) are availble and will Err codemadness.org 70
i 38328 be upstreamed. Err codemadness.org 70
i 38329 Err codemadness.org 70
i 38330 Tested the code (slightly earlier version) with 2 FreeBSD Err codemadness.org 70
i 38331 IPv6 routers, a FreeBSD laptop on ethernet as well as wifi, Err codemadness.org 70
i 38332 and with Win10 and OSX clients (which did not fall over with Err codemadness.org 70
i 38333 the "6" flag set but not understood). Err codemadness.org 70
i 38334 Err codemadness.org 70
i 38335 We may also want to (a) implement and RX filter, and (b) over Err codemadness.org 70
i 38336 time enahnce user space to, say, stop dhclient from running Err codemadness.org 70
i 38337 when the interface flag is set. Also we might want to start Err codemadness.org 70
i 38338 IPv6 before IPv4 in the future. Err codemadness.org 70
i 38339 Err codemadness.org 70
i 38340 All the code is hidden under the EXPERIMENTAL option and not Err codemadness.org 70
i 38341 compiled by default as the draft is a work-in-progress and Err codemadness.org 70
i 38342 we cannot rely on the fact that IANA will assign the bits Err codemadness.org 70
i 38343 as requested by the draft and hence they may change. Err codemadness.org 70
i 38344 Err codemadness.org 70
i 38345 Dear 6man, you have running code. Err codemadness.org 70
i 38346 Err codemadness.org 70
i 38347 Discussed with: Bob Hinden, Brian E Carpenter Err codemadness.org 70
i 38348 Err codemadness.org 70
i 38349 Err codemadness.org 70
i 38350 ##Beastie Bits
Err codemadness.org 70 i 38351 Err codemadness.org 70 i 38352##Feedback/Questions
Err codemadness.org 70 i 38371 Err codemadness.org 70 i 38372##Headlines
Err codemadness.org 70
i 38390 ###OpenBSD 6.4 released
###GhostBSD 18.10 RC2 Announced
Err codemadness.org 70 i 38405 Err codemadness.org 70 i 38406Err codemadness.org 70 i 38407Err codemadness.org 70 i 38409 Err codemadness.org 70 i 38410This second release candidate of GhostBSD 18.10 is the second official release of GhostBSD with TrueOS under the hood. The official desktop of GhostBSD is MATE. However, in the future, there might be an XFCE community release, but for now, there is no community release yet.
Err codemadness.org 70 i 38408
What has changed since RC1
Err codemadness.org 70 i 38413Removed drm-stable-kmod and we will let users installed the propper drm-*-kmod
Err codemadness.org 70 i 38416Douglas Joachin added libva-intel-driver libva-vdpau-driver to supports accelerated some video driver for Intel
Err codemadness.org 70 i 38419Issues that got fixed
Err codemadness.org 70 i 38422Bug #70 Cannot run Octopi, missing libgksu error.
Err codemadness.org 70 i 38425Bug #71 LibreOffice doesn’t start because of missing libcurl.so.4
Err codemadness.org 70 i 38428Bug #72 libarchive is a missing dependency
Err codemadness.org 70 i 38431Err codemadness.org 70 i 38435Err codemadness.org 70 i 38437 Err codemadness.org 70 i 38438Again thanks to iXsystems, TrueOS, Joe Maloney, Kris Moore, Ken Moore, Martin Wilke, Neville Goddard, Vester “Vic” Thacker, Douglas Joachim, Alex Lyakhov, Yetkin Degirmenci and many more who helped to make the transition from FreeBSD to TrueOS smoother.
Err codemadness.org 70 i 38436
Updating from RC1 to RC2:
Err codemadness.org 70 i 38441sudo pkg update -f
Err codemadness.org 70 i 38444sudo pkg install -f libarchive curl libgksu
Err codemadness.org 70 i 38447sudo pkg upgrade
Err codemadness.org 70 i 38450Where to download:
Err codemadness.org 70 i 38453All images checksum, hybrid ISO(DVD, USB) and torrent are available here: https://www.ghostbsd.org/download
Err codemadness.org 70 i 38456[ScreenShots]
Err codemadness.org 70 i 38459https://www.ghostbsd.org/sites/default/files/Screenshot_at_2018-10-20_13-22-41.png
Err codemadness.org 70 i 38462https://www.ghostbsd.org/sites/default/files/Screenshot_at_2018-10-20_13-27-26.png
Err codemadness.org 70 i 38465###OpenSSH 7.9 has been released and it has support for OpenSSL 1.1
Err codemadness.org 70 i 38471 Err codemadness.org 70 i 38472Changes since OpenSSH 7.8 Err codemadness.org 70
i 38473 ========================= Err codemadness.org 70
i 38474 Err codemadness.org 70
i 38475 This is primarily a bugfix release. Err codemadness.org 70
i 38476 Err codemadness.org 70
i 38477 New Features Err codemadness.org 70
i 38478 ------------ Err codemadness.org 70
i 38479 * ssh(1), sshd(8): allow most port numbers to be specified using Err codemadness.org 70
i 38480 service names from getservbyname(3) (typically /etc/services). Err codemadness.org 70
i 38481 * ssh(1): allow the IdentityAgent configuration directive to accept Err codemadness.org 70
i 38482 environment variable names. This supports the use of multiple Err codemadness.org 70
i 38483 agent sockets without needing to use fixed paths. Err codemadness.org 70
i 38484 * sshd(8): support signalling sessions via the SSH protocol. Err codemadness.org 70
i 38485 A limited subset of signals is supported and only for login or Err codemadness.org 70
i 38486 command sessions (i.e. not subsystems) that were not subject to Err codemadness.org 70
i 38487 a forced command via authorized_keys or sshd_config. bz#1424 Err codemadness.org 70
i 38488 * ssh(1): support "ssh -Q sig" to list supported signature options. Err codemadness.org 70
i 38489 Also "ssh -Q help" to show the full set of supported queries. Err codemadness.org 70
i 38490 * ssh(1), sshd(8): add a CASignatureAlgorithms option for the Err codemadness.org 70
i 38491 client and server configs to allow control over which signature Err codemadness.org 70
i 38492 formats are allowed for CAs to sign certificates. For example, Err codemadness.org 70
i 38493 this allows banning CAs that sign certificates using the RSA-SHA1 Err codemadness.org 70
i 38494 signature algorithm. Err codemadness.org 70
i 38495 * sshd(8), ssh-keygen(1): allow key revocation lists (KRLs) to Err codemadness.org 70
i 38496 revoke keys specified by SHA256 hash. Err codemadness.org 70
i 38497 * ssh-keygen(1): allow creation of key revocation lists directly Err codemadness.org 70
i 38498 from base64-encoded SHA256 fingerprints. This supports revoking Err codemadness.org 70
i 38499 keys using only the information contained in sshd(8) Err codemadness.org 70
i 38500 authentication log messages. Err codemadness.org 70
i 38501 Err codemadness.org 70
i 38502 Bugfixes Err codemadness.org 70
i 38503 -------- Err codemadness.org 70
i 38504 Err codemadness.org 70
i 38505 * ssh(1), ssh-keygen(1): avoid spurious "invalid format" errors when Err codemadness.org 70
i 38506 attempting to load PEM private keys while using an incorrect Err codemadness.org 70
i 38507 passphrase. bz#2901 Err codemadness.org 70
i 38508 * sshd(8): when a channel closed message is received from a client, Err codemadness.org 70
i 38509 close the stderr file descriptor at the same time stdout is Err codemadness.org 70
i 38510 closed. This avoids stuck processes if they were waiting for Err codemadness.org 70
i 38511 stderr to close and were insensitive to stdin/out closing. bz#2863 Err codemadness.org 70
i 38512 * ssh(1): allow ForwardX11Timeout=0 to disable the untrusted X11 Err codemadness.org 70
i 38513 forwarding timeout and support X11 forwarding indefinitely. Err codemadness.org 70
i 38514 Previously the behaviour of ForwardX11Timeout=0 was undefined. Err codemadness.org 70
i 38515 * sshd(8): when compiled with GSSAPI support, cache supported method Err codemadness.org 70
i 38516 OIDs regardless of whether GSSAPI authentication is enabled in the Err codemadness.org 70
i 38517 main section of sshd_config. This avoids sandbox violations if Err codemadness.org 70
i 38518 GSSAPI authentication was later enabled in a Match block. bz#2107 Err codemadness.org 70
i 38519 * sshd(8): do not fail closed when configured with a text key Err codemadness.org 70
i 38520 revocation list that contains a too-short key. bz#2897 Err codemadness.org 70
i 38521 * ssh(1): treat connections with ProxyJump specified the same as Err codemadness.org 70
i 38522 ones with a ProxyCommand set with regards to hostname Err codemadness.org 70
i 38523 canonicalisation (i.e. don't try to canonicalise the hostname Err codemadness.org 70
i 38524 unless CanonicalizeHostname is set to 'always'). bz#2896 Err codemadness.org 70
i 38525 * ssh(1): fix regression in OpenSSH 7.8 that could prevent public- Err codemadness.org 70
i 38526 key authentication using certificates hosted in a ssh-agent(1) Err codemadness.org 70
i 38527 or against sshd(8) from OpenSSH <7.8. Err codemadness.org 70
i 38528 Err codemadness.org 70
i 38529 Portability Err codemadness.org 70
i 38530 ----------- Err codemadness.org 70
i 38531 Err codemadness.org 70
i 38532 * All: support building against the openssl-1.1 API (releases 1.1.0g Err codemadness.org 70
i 38533 and later). The openssl-1.0 API will remain supported at least Err codemadness.org 70
i 38534 until OpenSSL terminates security patch support for that API version. Err codemadness.org 70
i 38535 * sshd(8): allow the futex(2) syscall in the Linux seccomp sandbox; Err codemadness.org 70
i 38536 apparently required by some glibc/OpenSSL combinations. Err codemadness.org 70
i 38537 * sshd(8): handle getgrouplist(3) returning more than Err codemadness.org 70
i 38538 _SC_NGROUPS_MAX groups. Some platforms consider this limit more Err codemadness.org 70
i 38539 as a guideline. Err codemadness.org 70
i 38540 Err codemadness.org 70
i 38541 Err codemadness.org 70
i 38542 ##News Roundup
Err codemadness.org 70 i 38545 Err codemadness.org 70 i 38546###MeetBSD 2018: The Ultimate Hallway Track
Err codemadness.org 70 i 38547 Err codemadness.org 70 i 38548Err codemadness.org 70 i 38549Err codemadness.org 70 i 38551 Err codemadness.org 70 i 38552Founded in Poland in 2007 and first hosted in California in 2008, MeetBSD combines formal talks with UnConference activities to provide a level of interactivity not found at any other BSD conference. The character of each MeetBSD is determined largely by its venue, ranging from Hacker Dojo in 2010 to Intel’s Santa Clara headquarters this year. The Intel SC12 building provided a beautiful auditorium and sponsors’ room, plus a cafeteria for the Friday night social event and the Saturday night FreeBSD 25th Anniversary Celebration. The formal nature of the auditorium motivated the formation of MeetBSD’s first independent Program Committee and public Call for Participation. Together these resulted in a backbone of talks presented by speakers from the USA, Canada, and Poland, combined with UnConference activities tailored to the space.
Err codemadness.org 70 i 38550
Err codemadness.org 70 i 38557Err codemadness.org 70 i 38559 Err codemadness.org 70 i 38560Day Zero of MeetBSD was a FreeBSD Developer/Vendor Summit hosted in the same auditorium where the talks would take place. Like the conference itself, this event featured a mix of scheduled talks and interactive sessions. The scheduled talks were LWPMFS: LightWeight Persistent Memory Filesystem by Ravi Pokala, Evaluating GIT for FreeBSD by Ed Maste, and NUMA by Mark Johnston. Ed’s overview of the advantages and disadvantages of using Git for FreeBSD development was of the most interest to users and developers, and the discussion continued into the following two days.
Err codemadness.org 70 i 38558
Err codemadness.org 70 i 38565Err codemadness.org 70 i 38567 Err codemadness.org 70 i 38568The first official day of MeetBSD 2018 was kicked off with introductions led by emcee JT Pennington and a keynote, “Using TrueOS to boot-strap your FreeBSD-based project” by Kris Moore. Kris described a new JSON-based release infrastructure that he has exercised with FreeBSD, TrueOS, and FreeNAS. Kris’ talk was followed by “Intel & FreeBSD: Better Together” by Ben Widawsky, the FreeBSD program lead at Intel, who gave an overview of Intel’s past and current efforts supporting FreeBSD. Next came lunch, followed by Kamil Rytarowski’s “Bug detecting software in the NetBSD userland: MKSANITIZER”. This was followed by 5-Minute Lightning Talks, Andrew Fengler’s “FreeBSD: What to (Not) Monitor”, and an OpenZFS Panel Discussion featuring OpenZFS experts Michael W. Lucas, Allan Jude, Alexander Motin, Pawel Dawidek, and Dan Langille. Day one concluded with a social event at the Intel cafeteria where the discussions continued into the night.
Err codemadness.org 70 i 38566
Err codemadness.org 70 i 38573Err codemadness.org 70 i 38575 Err codemadness.org 70 i 38576Day Two of MeetBSD 2018 kicked off with a keynote by Michael W. Lucas entitled “Why BSD?”, where Michael detailed what makes the BSD community different and why it attracts us all. This was followed by Dr. Kirk McKusick’s “The Early Days of BSD” talk, which was followed by “DTrace/dwatch in Production” by Devin Teske. After lunch, we enjoyed “A Curmudgeon’s Language Selection Criteria: Why I Don’t Write Everything in Go, Rust, Elixir, etc” by G. Clifford Williams and, “Best practices of sandboxing applications with Capsicum” by Mariusz Zaborski. I then hosted a Virtualization Panel Discussion that featured eight developers from FreeBSD, OpenBSD, and NetBSD. We then split up for Breakout Sessions and the one on Bloomberg’s controversial article on backdoored Supermicro systems was fascinating given the experts present, all of whom were skeptical of the feasibility of the attack. The day wrapped up with a final talk, “Tales of a Daemontown Performance Peddler: Why ‘it depends’ and what you can do about it” by Nick Principe, followed by the FreeBSD 25th Anniversary Celebration.
Err codemadness.org 70 i 38574
Err codemadness.org 70 i 38581Err codemadness.org 70 i 38583 Err codemadness.org 70 i 38584I confess the other organizers and I were nervous about how well one large auditorium would suit a BSD event but the flexible personal space it gave everyone allowed for countless meetings and heated hacking that often brought about immediate results. I watched people take ideas through several iterations with the help and input of obvious and unexpected experts, all of whom were within reach. Not having to pick up and leave for a talk in another room organically resulted in essentially a series of mini hackathons that none of us anticipated but were delighted to witness, taking the “hallway track” to a whole new level. The mix of formal and UnConference activities at MeetBSD is certain to evolve. Thank you to everyone who participated with questions, Lightning Talks, and Panel participation. A huge thanks to our sponsors, including Intel for both hosting and sponsoring MeetBSD California 2018, Western Digital, Supermicro, Verisign, Jupiter Broadcasting, the FreeBSD Foundation, Bank of America Merrill Lynch, the NetBSD Foundation, and the team at iXsystems.
Err codemadness.org 70 i 38582
Err codemadness.org 70 i 38585Err codemadness.org 70 i 38587 Err codemadness.org 70 i 38588See you at MeetBSD 2020!
Err codemadness.org 70 i 38586
###Setup DragonflyBSD with a desktop on real hardware ThinkPad T410
Err codemadness.org 70
i 38591 +Video Demo
Err codemadness.org 70 i 38594Err codemadness.org 70 i 38598 Err codemadness.org 70 i 38599Linux has become too mainstream and standard BSD is a common thing now? How about DragonflyBSD which was created as a fork of FreeBSD 4.8 in conflict over system internals. This tutorial will show how to install it and set up a user-oriented desktop. It should work with DragonflyBSD, FreeBSD and probably all BSDs.
Err codemadness.org 70 i 38597
Err codemadness.org 70 i 38595 Some background: BSD was is ultimately derived from UNIX back in the days. It is not Linux even though it is similar in many ways because Linux was designed to follow UNIX principles. Seeing is believing, so check out the video of the install!
Err codemadness.org 70 i 38596 I did try two BSD distros before called GhostBSD and TrueOS and you can check out my short reviews. DragonflyBSD comes like FreeBSD bare bones and requires some work to get a desktop running.
Download image file and burn to USB drive or DVD
Err codemadness.org 70 i 38602First installation
Err codemadness.org 70 i 38605Setting up the system and installing a desktop
Err codemadness.org 70 i 38608Inside the desktop
Err codemadness.org 70 i 38611Install some more programs
Err codemadness.org 70 i 38614How to enable sound?
Err codemadness.org 70 i 38617Let’s play some free games
Err codemadness.org 70 i 38620Setup WiFi
Err codemadness.org 70 i 38623Power mode settings
Err codemadness.org 70 i 38626More to do?
Err codemadness.org 70 i 38629Err codemadness.org 70 i 38633Err codemadness.org 70 i 38635 Err codemadness.org 70 i 38636You can check out this blog post if you want a much more detailed tutorial. If you don’t mind standard BSD, get the GhostBSD distro instead which comes with a ready-made desktop xcfe or mate and many functional presets.
Err codemadness.org 70 i 38634
A small summary of what we got on the upside:
Err codemadness.org 70 i 38639Some downsides:
Err codemadness.org 70 i 38650 Err codemadness.org 70 i 38651Less driver and direct app support than Linux
Err codemadness.org 70 i 38655 Err codemadness.org 70 i 38656Installer and desktop have some traps and quirks and require work
Err codemadness.org 70 i 38660 Err codemadness.org 70 i 38661Err codemadness.org 70 i 38668Err codemadness.org 70 i 38675 Err codemadness.org 70 i 38676Keybase significantly simplifies the whole keypair/PGP thing and makes what is usually a confusing, difficult experience actually rather pleasant. At its heart is an open-source command line utility that does all of the heavy cryptographic lifting. But it’s also hooked up to the network of all other Keybase users, so you don’t have to work very hard to maintain big keychains. Pretty cool!
Err codemadness.org 70 i 38674
Err codemadness.org 70 i 38669 So, this evening, I tried to get it to all work on NetBSD.
Err codemadness.org 70 i 38670 The Keybase client code base is, in my opinion, not very well architected… there exist many different Keybase clients (command line apps, desktop apps, mobile apps) and for some reason the code for all of them are seemingly in this single repository, without even using Git submodules. Not sure what that’s about.
Err codemadness.org 70 i 38671 Anyway, “go build”-ing the command line program (it’s written in Go) failed immediately because there’s some platform-specific code that just does not seem to recognize that NetBSD exists (but they do for FreeBSD and OpenBSD). Looks like the Keybase developers maintain a Golang wrapper around struct proc, which of course is different from OS to OS. So I literally just copypasted the OpenBSD wrapper, renamed it to “NetBSD”, and the build basically succeeded from there! This is of course super janky and untrustworthy, but it seems to Mostly Just Work…
Err codemadness.org 70 i 38672 I forked the GitHub repo, you can see the diff on top of keybase 2.7.3 here: bccaaf3096a
Err codemadness.org 70 i 38673 Eventually I ended up with a ~/go/bin/keybase which launches just fine. Meaning, I can main() okay. But the moment you try to do anything interesting, it looks super scary:
charlotte@sakuracity:~/go/bin ./keybase login Err codemadness.org 70
i 38677 ▶ WARNING Running in devel mode Err codemadness.org 70
i 38678 ▶ INFO Forking background server with pid=12932 Err codemadness.org 70
i 38679 ▶ ERROR unexpected error in Login: API network error: doRetry failed, Err codemadness.org 70
i 38680 attempts: 1, timeout 5s, last err: Get Err codemadness.org 70
i 38681 http://localhost:3000/_/api/1.0/merkle/path.json?last=3784314&load_deleted=1&load_reset_chain=1&poll=10&sig_hints_low=3&uid=38ae1dfa49cd6831ea2fdade5c5d0519: Err codemadness.org 70
i 38682 dial tcp [::1]:3000: connect: connection refused Err codemadness.org 70
i 38683 Err codemadness.org 70
i 38684 Err codemadness.org 70
i 38685 Err codemadness.org 70 i 38686Err codemadness.org 70 i 38688 Err codemadness.org 70 i 38689There’s a few things about this error message that stuck out to me:
Err codemadness.org 70 i 38687
Err codemadness.org 70 i 38695Err codemadness.org 70 i 38697 Err codemadness.org 70 i 38698Unfortunately, this nonfunctional “background server” sticks around even when a command as simple as ‘login’ command just failed:
Err codemadness.org 70 i 38696
charlotte@sakuracity:~/go/bin ps 12932 Err codemadness.org 70
i 38699 PID TTY STAT TIME COMMAND Err codemadness.org 70
i 38700 12932 ? Ssl 0:00.21 ./keybase --debug --log-file Err codemadness.org 70
i 38701 /home/charlotte/.cache/keybase.devel/keybase.service.log service --chdir Err codemadness.org 70
i 38702 /home/charlotte/.config/keybase.devel --auto-forked Err codemadness.org 70
i 38703 Err codemadness.org 70
i 38704 Err codemadness.org 70
i 38705 Err codemadness.org 70 i 38706Err codemadness.org 70 i 38708 Err codemadness.org 70 i 38709I’m not exactly sure what the intended purpose of the “background server” even is, but fortunately we can kill it and even tell the keybase command to not even spawn one:
Err codemadness.org 70 i 38707
charlotte@sakuracity:~/go/bin ./keybase help advanced | grep -- --standalone Err codemadness.org 70
i 38710 --standalone Use the client without any daemon support. Err codemadness.org 70
i 38711 Err codemadness.org 70
i 38712 Err codemadness.org 70
i 38713 Err codemadness.org 70 i 38714Err codemadness.org 70 i 38716 Err codemadness.org 70 i 38717And then we can fix wanting to connect to localhost by specifying an expected Keybase API server – how about the one hosted at https://keybase.io?
Err codemadness.org 70 i 38715
charlotte@sakuracity:~/go/bin ./keybase help advanced | grep -- --server Err codemadness.org 70
i 38718 --server, -s Specify server API. Err codemadness.org 70
i 38719 Err codemadness.org 70
i 38720 Err codemadness.org 70
i 38721 Err codemadness.org 70 i 38722Err codemadness.org 70 i 38724 Err codemadness.org 70 i 38725Basically, what I’m trying to say is that if you specify both of these options, the keybase command does what I expect on NetBSD:
Err codemadness.org 70 i 38723
charlotte@sakuracity:~/go/bin ./keybase --standalone -s https://keybase.io login Err codemadness.org 70
i 38726 ▶ WARNING Running in devel mode Err codemadness.org 70
i 38727 Please enter the Keybase passphrase for dressupgeekout (6+ characters): Err codemadness.org 70
i 38728 Err codemadness.org 70
i 38729 charlotte@sakuracity:~/go/bin ./keybase --standalone -s https://keybase.io id dressupgeekout Err codemadness.org 70
i 38730 ▶ WARNING Running in devel mode Err codemadness.org 70
i 38731 ▶ INFO Identifying dressupgeekout Err codemadness.org 70
i 38732 ✔ public key fingerprint: 7873 DA50 A786 9A3F 1662 3A17 20BD 8739 E82C 7F2F Err codemadness.org 70
i 38733 ✔ "dressupgeekout" on github: Err codemadness.org 70
i 38734 https://gist.github.com/0471c7918d254425835bf5e1b4bcda00 [cached 2018-10-11 Err codemadness.org 70
i 38735 20:55:21 PDT] Err codemadness.org 70
i 38736 ✔ "dressupgeekout" on reddit: Err codemadness.org 70
i 38737 https://www.reddit.com/r/KeybaseProofs/comments/9ng5qm/my_keybase_proof_redditdressupgeekout/ Err codemadness.org 70
i 38738 [cached 2018-10-11 20:55:21 PDT] Err codemadness.org 70
i 38739 Err codemadness.org 70
i 38740 Err codemadness.org 70
i 38741 ###Initial implementation of draft-ietf-6man-ipv6only-flag
Err codemadness.org 70 i 38744 Err codemadness.org 70 i 38745This change defines the RA "6" (IPv6-Only) flag which routers Err codemadness.org 70
i 38746 may advertise, kernel logic to check if all routers on a link Err codemadness.org 70
i 38747 have the flag set and accordingly update a per-interface flag. Err codemadness.org 70
i 38748 Err codemadness.org 70
i 38749 If all routers agree that it is an IPv6-only link, ether_output_frame(), Err codemadness.org 70
i 38750 based on the interface flag, will filter out all ETHERTYPE_IP/ARP Err codemadness.org 70
i 38751 frames, drop them, and return EAFNOSUPPORT to upper layers. Err codemadness.org 70
i 38752 Err codemadness.org 70
i 38753 The change also updates ndp to show the "6" flag, ifconfig to Err codemadness.org 70
i 38754 display the IPV6_ONLY nd6 flag if set, and rtadvd to allow Err codemadness.org 70
i 38755 announcing the flag. Err codemadness.org 70
i 38756 Err codemadness.org 70
i 38757 Further changes to tcpdump (contrib code) are availble and will Err codemadness.org 70
i 38758 be upstreamed. Err codemadness.org 70
i 38759 Err codemadness.org 70
i 38760 Tested the code (slightly earlier version) with 2 FreeBSD Err codemadness.org 70
i 38761 IPv6 routers, a FreeBSD laptop on ethernet as well as wifi, Err codemadness.org 70
i 38762 and with Win10 and OSX clients (which did not fall over with Err codemadness.org 70
i 38763 the "6" flag set but not understood). Err codemadness.org 70
i 38764 Err codemadness.org 70
i 38765 We may also want to (a) implement and RX filter, and (b) over Err codemadness.org 70
i 38766 time enahnce user space to, say, stop dhclient from running Err codemadness.org 70
i 38767 when the interface flag is set. Also we might want to start Err codemadness.org 70
i 38768 IPv6 before IPv4 in the future. Err codemadness.org 70
i 38769 Err codemadness.org 70
i 38770 All the code is hidden under the EXPERIMENTAL option and not Err codemadness.org 70
i 38771 compiled by default as the draft is a work-in-progress and Err codemadness.org 70
i 38772 we cannot rely on the fact that IANA will assign the bits Err codemadness.org 70
i 38773 as requested by the draft and hence they may change. Err codemadness.org 70
i 38774 Err codemadness.org 70
i 38775 Dear 6man, you have running code. Err codemadness.org 70
i 38776 Err codemadness.org 70
i 38777 Discussed with: Bob Hinden, Brian E Carpenter Err codemadness.org 70
i 38778 Err codemadness.org 70
i 38779 Err codemadness.org 70
i 38780 ##Beastie Bits
Err codemadness.org 70 i 38781 Err codemadness.org 70 i 38782##Feedback/Questions
Err codemadness.org 70 i 38801 Err codemadness.org 70 i 38802##Headlines
Err codemadness.org 70
i 39105 ###FreeBSD Foundation Update, September 2018
Err codemadness.org 70 i 39112Err codemadness.org 70 i 39114 Err codemadness.org 70 i 39115Dear FreeBSD Community Member, It is hard to believe that September is over. The Foundation team had a busy month promoting FreeBSD all over the globe, bug fixing in preparation for 12.0, and setting plans in motion to kick off our 4th quarter fundraising and advocacy efforts. Take a minute to see what we’ve been up to and please consider making a donation to help us continue our efforts supporting FreeBSD!
Err codemadness.org 70 i 39113
Err codemadness.org 70 i 39120Err codemadness.org 70 i 39124 Err codemadness.org 70 i 39125In preparation for the release of FreeBSD 12.0, I have been working on investigating and fixing a backlog of kernel bug reports. Of course, this kind of work is never finished, and we will continue to make progress after the release. In the past couple of months I have fixed a combination of long-standing issues and recent regressions. Of note are a pair of UNIX domain socket bugs which had been affecting various applications for years. In particular, Chromium tabs would frequently hang unless a workaround was manually applied to the system, and the bug had started affecting recent versions of Firefox as well. Fixing these issues gave me an opportunity to revisit and extend our regression testing for UNIX sockets, which, in turn, resulted in some related bugs being identified and fixed.
Err codemadness.org 70 i 39123
Err codemadness.org 70 i 39121 Of late I have also been investigating reports of issues with ZFS, particularly, those reported on FreeBSD 11.2. A number of regressions, including a kernel memory leak and issues with ARC reclamation, have already been fixed for 12.0; investigation of other reports is ongoing. Those who closely follow FreeBSD-CURRENT know that some exciting work to improve memory usage on NUMA systems is now enabled by default. As is usually the case when new code is deployed in a diverse array of systems and workloads, a number of problems since have been identified. We are working on resolving them as soon as possible to ensure the quality of the release.
Err codemadness.org 70 i 39122 I’m passionate about maintaining FreeBSD’s stability and dependability as it continues to expand and grow new features, and I’m grateful to the FreeBSD Foundation for sponsoring this work. We depend on users to report problems to the mailing lists and via the bug tracker, so please try running the 12.0 candidate builds and help us make 12.0 a great release.
Err codemadness.org 70 i 39130Err codemadness.org 70 i 39133 Err codemadness.org 70 i 39134It’s officially Fall here at Foundation headquarters and we’re heading full-steam into our final fundraising campaign of the year. We couldn’t even have begun to reach our funding goal of $1.25 million dollars without the support from the companies who have partnered with us this year. Thank you to Verisign for becoming a Silver Partner. They now join a growing list of companies like Xiplink, NetApp, Microsoft, Tarsnap, VMware, and NeoSmart Technologies that are stepping up and showing their commitment to FreeBSD!
Err codemadness.org 70 i 39132
Err codemadness.org 70 i 39131 Funding from commercial users like these and individual users like yourself, help us continue our efforts of supporting critical areas of FreeBSD such as:
Err codemadness.org 70 i 39145Err codemadness.org 70 i 39149 Err codemadness.org 70 i 39150We can continue the above work, if we meet our goal this year!
Err codemadness.org 70 i 39148
Err codemadness.org 70 i 39146 If your company uses FreeBSD, please consider joining our growing list of 2018 partners. If you haven’t made your donation yet, please consider donating today. We are indebted to the individual donors, and companies listed above who have already shown their commitment to open source.
Err codemadness.org 70 i 39147 Thank you for supporting FreeBSD and the Foundation!
Err codemadness.org 70 i 39155Err codemadness.org 70 i 39161 Err codemadness.org 70 i 39162The FreeBSD Release Engineering team continued working on the upcoming 12.0 RELEASE. At present, the 12.0 schedule had been adjusted by one week to allow for necessary works-in-progress to be completed.
Err codemadness.org 70 i 39160
Err codemadness.org 70 i 39156 Of note, one of the works-in-progress includes updating OpenSSL from 1.0.2 to 1.1.1, in order to avoid breaking the application binary interface (ABI) on an established stable branch.
Err codemadness.org 70 i 39157 Due to the level of non-trivial intrusiveness that had already been discovered and addressed in a project branch of the repository, it is possible (but not yet definite) that the schedule will need to be adjusted by another week to allow more time for larger and related updates for this particular update.
Err codemadness.org 70 i 39158 Should the 12.0-RELEASE schedule need to be adjusted at any time during the release cycle, the schedule on the FreeBSD project website will be updated accordingly. The current schedule is available at:
Err codemadness.org 70 i 39159 https://www.freebsd.org/releases/12.0R/schedule.html
Err codemadness.org 70 i 39167Err codemadness.org 70 i 39170 Err codemadness.org 70 i 39171I’d like to start by thanking the FreeBSD Foundation for sponsoring my trip to BSDCam(bridge) 2018. I wouldn’t have managed to attend otherwise. I’ve used FreeBSD in both personal and professional deployments since the year 2000, and over the last few years I have become more involved with development and documentation.
Err codemadness.org 70 i 39169
Err codemadness.org 70 i 39168 I arrived in Gatwick, London at midnight. On Monday, August 13, I took the train to Cambridge, and decided to do some touristy activities as I walked from the train station to Churchill College. I ran into Allan outside the hotel right before the sky decided it was time for a heavy rainfall. Monday was mostly spent settling in, recouping after travel, and hanging out with Allan, Brad, Will and Andy later in the afternoon/evening. Read more…
Err codemadness.org 70 i 39176Err codemadness.org 70 i 39178 Err codemadness.org 70 i 39179The FreeBSD Foundation has sponsored the development of the Project’s continuous integration system, available at https://ci.FreeBSD.org, since June. Over the summer, we improved both the software and hardware infrastructure, and also added some new jobs for extending test coverage of the -CURRENT and -STABLE branches. Following are some highlights.
Err codemadness.org 70 i 39177
Err codemadness.org 70 i 39184Err codemadness.org 70 i 39186 Err codemadness.org 70 i 39187The Foundation purchased 4 new build machines for scaling up the computation power for the various test jobs. These newer, faster machines substantially speed up the time it takes to test amd64 builds, so that failing changes can be identified more quickly. Also, in August, we received a donation of 2 PINE A64-LTS boards from PINE64.org, which will be put in the hardware test lab as one part of the continuous tests.
Err codemadness.org 70 i 39185
Err codemadness.org 70 i 39192Err codemadness.org 70 i 39195 Err codemadness.org 70 i 39196We used hardware from a previous generation CI system to build a staging environment for the CI infrastructure, which is available at
Err codemadness.org 70 i 39194
Err codemadness.org 70 i 39193 https://ci-dev.freebsd.org. It executes the configurations and scripts from the “staging” branch of the FreeBSD-CI repository, and the development feature branches. We also use it to experiment with the new version of the jenkins server and plugins. Having a staging environment avoids affecting the production CI environment, reducing downtime.
Err codemadness.org 70 i 39201Err codemadness.org 70 i 39203 Err codemadness.org 70 i 39204In July, we turned on failure notification for all the kernel and world build jobs. Committers will receive email containing the build information and failure log to inform them of possible problems with their modification on certain architectures. For amd64 of the -CURRENT branch, we also enabled the notification on failing regression test cases. Currently mail is sent only to the individual committers, but with help from postmaster team, we have created a dev-ci mailing list and will soon be also sending notifications there.
Err codemadness.org 70 i 39202
Err codemadness.org 70 i 39209Err codemadness.org 70 i 39211 Err codemadness.org 70 i 39212In August, we updated the embedded script of the virtual machine image. Originally it only executed pre-defined tests, but now this behavior can be modified by the data on the attached disk. This mechanism is used for adding new ZFS tests jobs. We are also working on analyzing and fixing the failing and skipped test cases.
Err codemadness.org 70 i 39210
Err codemadness.org 70 i 39217Err codemadness.org 70 i 39219 Err codemadness.org 70 i 39220In August and September, we had two developer summits, one in Cambridge, UK and one in Bucharest, Romania. In these meetings, we discussed running special tests, such as ztest, which need a longer run time. We also planned the network testing for TCP/IP stack
Err codemadness.org 70 i 39218
###Daemonize - a Tiny C Library for Programming the UNIX Daemons
Err codemadness.org 70 i 39223 Err codemadness.org 70 i 39224Err codemadness.org 70 i 39225Err codemadness.org 70 i 39230 Err codemadness.org 70 i 39231Whatever they say, writing System-V style UNIX daemons is hard. One has to follow many rules to make a daemon process behave correctly on diverse UNIX flavours. Moreover, debugging such a code might be somewhat tricky. On the other hand, the process of daemon initialisation is rigid and well defined so the corresponding code has to be written and debugged once and later can be reused countless number of times.
Err codemadness.org 70 i 39229
Err codemadness.org 70 i 39226 Developers of BSD UNIX were very aware of this, as there a C library function daemon() was available starting from version 4.4. The function, although non-standard, is present on many UNIXes. Unfortunately, it does not follow all the required steps to reliably run a process in the background on systems which follow System-V semantics (e.g. Linux). The details are available at the corresponding Linux man page. The main problem here, as I understand it, is that daemon() does not use the double-forking technique to avoid the situation when zombie processes appear.
Err codemadness.org 70 i 39227 Whenever I encounter a problem like this one, I know it is time to write a tiny C library which solves it. This is exactly how ‘daemonize’ was born (GitHub mirror). The library consists of only two files which are meant to be integrated into the source tree of your project. Recently I have updated the library and realised that it would be good to describe how to use it on this site.
Err codemadness.org 70 i 39228 If for some reason you want to make a Windows service, I have a battle tested template code for you as well.
Err codemadness.org 70 i 39236Err codemadness.org 70 i 39238 Err codemadness.org 70 i 39239To make discussion clear we shall quote the steps which have to be performed during a daemon initialisation (according to daemon(7) manual page on Linux). I do it to demonstrate that this task is more tricky than one might expect.
Err codemadness.org 70 i 39237
So, here we go:
Err codemadness.org 70 i 39242Close all open file descriptors except standard input, output, and error (i.e. the first three file descriptors 0, 1, 2). This ensures that no accidentally passed file descriptor stays around in the daemon process. On Linux, this is best implemented by iterating through /proc/self/fd, with a fallback of iterating from file descriptor 3 to the value returned by getrlimit() for RLIMIT_NOFILE.
Err codemadness.org 70 i 39245Reset all signal handlers to their default. This is best done by iterating through the available signals up to the limit of _NSIG and resetting them to SIG_DFL.
Err codemadness.org 70 i 39248Reset the signal mask using sigprocmask().
Err codemadness.org 70 i 39251Sanitize the environment block, removing or resetting environment variables that might negatively impact daemon runtime.
Err codemadness.org 70 i 39254Call fork(), to create a background process.
Err codemadness.org 70 i 39257In the child, call setsid() to detach from any terminal and create an independent session.
Err codemadness.org 70 i 39260In the child, call fork() again, to ensure that the daemon can never re-acquire a terminal again.
Err codemadness.org 70 i 39263Call exit() in the first child, so that only the second child (the actual daemon process) stays around. This ensures that the daemon process is re-parented to init/PID 1, as all daemons should be.
Err codemadness.org 70 i 39266In the daemon process, connect /dev/null to standard input, output, and error.
Err codemadness.org 70 i 39269In the daemon process, reset the umask to 0, so that the file modes passed to open(), mkdir() and suchlike directly control the access mode of the created files and directories.
Err codemadness.org 70 i 39272In the daemon process, change the current directory to the root directory (/), in order to avoid that the daemon involuntarily blocks mount points from being unmounted.
Err codemadness.org 70 i 39275In the daemon process, write the daemon PID (as returned by getpid()) to a PID file, for example /run/foobar.pid (for a hypothetical daemon “foobar”) to ensure that the daemon cannot be started more than once. This must be implemented in race-free fashion so that the PID file is only updated when it is verified at the same time that the PID previously stored in the PID file no longer exists or belongs to a foreign process.
Err codemadness.org 70 i 39278In the daemon process, drop privileges, if possible and applicable.
Err codemadness.org 70 i 39281From the daemon process, notify the original process started that initialization is complete. This can be implemented via an unnamed pipe or similar communication channel that is created before the first fork() and hence available in both the original and the daemon process.
Err codemadness.org 70 i 39284Call exit() in the original process. The process that invoked the daemon must be able to rely on that this exit() happens after initialization is complete and all external communication channels are established and accessible.
Err codemadness.org 70 i 39287Err codemadness.org 70 i 39291Err codemadness.org 70 i 39293 Err codemadness.org 70 i 39294The discussed library does most of the above-mentioned initialisation steps as it becomes immediately evident that implementation details for some of them heavily dependent on the internal logic of an application itself, so it is not possible to implement them in a universal library. I believe it is not a flaw, though, as the missed parts are safe to implement in an application code.
Err codemadness.org 70 i 39292
Err codemadness.org 70 i 39299Err codemadness.org 70 i 39301 Err codemadness.org 70 i 39302The generic programming interface was loosely modelled after above-mentioned BSD’s daemon() function. The library provides two user available functions (one is, in fact, implemented on top of the other) as well as a set of flags to control a daemon creation behaviour.
Err codemadness.org 70 i 39300
Err codemadness.org 70 i 39307Err codemadness.org 70 i 39310 Err codemadness.org 70 i 39311The objective of the library is to hide all the trickery of programming a daemon so you could concentrate on the more creative parts of your application. I hope it does this well.
Err codemadness.org 70 i 39309
Err codemadness.org 70 i 39308 If you are not only interested in writing a daemon, but also want to make yourself familiar with the techniques which are used to accomplish that, the source code is available. Moreover, I would advise anyone, who starts developing for a UNIX environment to do that, as it shows many intricacies of programming for these platforms.
##News Roundup
Err codemadness.org 70
i 39314 ###EuroBSDCon 2018 travel report and obligatory pics
Err codemadness.org 70 i 39317Err codemadness.org 70 i 39330 Err codemadness.org 70 i 39331This was my first big BSD conference. We also planned - planned might be a big word - thought about doing a devsummit on Friday. Since the people who were in charge of that had a change of plans, I was sure it’d go horribly wrong.
Err codemadness.org 70 i 39329
Err codemadness.org 70 i 39318 The day before the devsummit and still in the wrong country, I mentioned the hours and venue on the wiki, and booked a reservation for a restaurant.
Err codemadness.org 70 i 39319 It turns out that everything was totally fine, and since the devsummit was at the conference venue (that was having tutorials that day), they even had signs pointing at the room we were given. Thanks EuroBSDCon conference organizers!
Err codemadness.org 70 i 39320 At the devsummit, we spent some time hacking. A few people came with “travel laptops” without access to anything, like Riastradh, so I gave him access to my own laptop. This didn’t hold very long and I kinda forgot about it, but for a few moments he had access to a NetBSD source tree and an 8 thread, 16GB RAM machine with which to build things.
Err codemadness.org 70 i 39321 We had a short introduction and I suggested we take some pictures, so here’s the ones we got. A few people were concerned about privacy, so they’re not pictured. We had small team to hold the camera :-)
Err codemadness.org 70 i 39322 At the actual conference days, I stayed at the speaker hotel with the other speakers. I’ve attempted to make conversation with some visibly FreeBSD/OpenBSD people, but didn’t have plans to talk about anything, so there was a lot of just following people silently.
Err codemadness.org 70 i 39323 Perhaps for the next conference I’ll prepare a list of questions to random BSD people and then very obviously grab a piece of paper and ask, “what was…”, read a bit from it, and say, “your latest kernel panic?”, I’m sure it’ll be a great conversation starter.
Err codemadness.org 70 i 39324 At the conference itself, was pretty cool to have folks like Kirk McKusick give first person accounts of some past events (Kirk gave a talk about governance at FreeBSD), or the second keynote by Ron Broersma.
Err codemadness.org 70 i 39325 My own talk was hastily prepared, it was difficult to bring the topic together into a coherent talk. Nevertheless, I managed to talk about stuff for a while 40 minutes, though usually I skip over so many details that I have trouble putting together a sufficiently long talk.
Err codemadness.org 70 i 39326 I mentioned some of my coolest bugs to solve (I should probably make a separate article about some!). A few people asked for the slides after the talk, so I guess it wasn’t totally incoherent.
Err codemadness.org 70 i 39327 It was really fun to meet some of my favourite NetBSD people. I got to show off my now fairly well working laptop (it took a lot of work by all of us!).
Err codemadness.org 70 i 39328 After the conference I came back with a conference cold, and it took a few days to recover from it. Hopefully I didn’t infect too many people on the way back.
###GhostBSD tested on real hardware T410 – better than TrueOS?
Err codemadness.org 70 i 39334 Err codemadness.org 70 i 39335Err codemadness.org 70 i 39336Err codemadness.org 70 i 39338 Err codemadness.org 70 i 39339You might have heard about FreeBSD which is ultimately derived from UNIX back in the days. It is not Linux even though it is similar in many ways because Linux was designed to follow UNIX principles. Seeing is believing, so check out the video of the install and some apps as well!
Err codemadness.org 70 i 39337
Err codemadness.org 70 i 39340Err codemadness.org 70 i 39342 Err codemadness.org 70 i 39343Nowadays if you want some of that BSD on your personal desktop how to go about? Well there is a full package or distro called GhostBSD which is based on FreeBSD current with a Mate or XFCE desktop preconfigured. I did try another package called TrueOS before and you can check out my blog post as well.
Err codemadness.org 70 i 39341
Err codemadness.org 70 i 39344Err codemadness.org 70 i 39346 Err codemadness.org 70 i 39347Let’s give it a try on my Lenovo ThinkPad T410. You can download the latest version from ghostbsd.org. Creating a bootable USB drive was surprisingly difficult as rufus did not work and created a corrupted drive. You have to follow this procedure under Windows: download the 2.5GB .iso file and rename the extension to .img. Download Win32 Disk imager and burn the img file to an USB drive and boot from it. You will be able to start a live session and use the onboard setup to install GhostBSD unto a disk.
Err codemadness.org 70 i 39345
Err codemadness.org 70 i 39348Err codemadness.org 70 i 39350 Err codemadness.org 70 i 39351I did encounter some bugs or quirks along the way. The installer failed the first time for some unknown reason but worked on the second attempt. The first boot stopped upon initialization of the USB3 ports (the T410 does not have USB3) but I could use some ‘exit’ command line magic to continue. The second boot worked fine. Audio was only available through headphones, not speakers but that could partially be fixed using the command line again. Lot’s of installed apps did not show up in the start menu and on goes the quirks list.
Err codemadness.org 70 i 39349
Err codemadness.org 70 i 39352Err codemadness.org 70 i 39354 Err codemadness.org 70 i 39355Overall it is still better than TrueOS for me because drivers did work very well and I could address most of the existing bugs.
Err codemadness.org 70 i 39353
On the upside:
Err codemadness.org 70 i 39358Free and open source FreeBSD package ready to go
Err codemadness.org 70 i 39361Mate or XFCE desktop (Mate is the only option for daily builds)
Err codemadness.org 70 i 39364Drivers work fine including LAN, WiFi, video 2D & 3D, audio, etc
Err codemadness.org 70 i 39367UFS or ZFS advanced file systems available
Err codemadness.org 70 i 39370Some downsides:
Err codemadness.org 70 i 39373Less driver and direct app support than Linux
Err codemadness.org 70 i 39376Installer and desktop have some quirks and bugs
Err codemadness.org 70 i 39379App-store is cumbersome, inferior to TrueOS
Err codemadness.org 70 i 39382##Beastie Bits
Err codemadness.org 70 i 39388 Err codemadness.org 70 i 39389##Feedback/Questions
Err codemadness.org 70 i 39409 Err codemadness.org 70 i 39410##Headlines
Err codemadness.org 70
i 39428 ###FreeBSD Foundation Update, September 2018
Err codemadness.org 70 i 39435Err codemadness.org 70 i 39437 Err codemadness.org 70 i 39438Dear FreeBSD Community Member, It is hard to believe that September is over. The Foundation team had a busy month promoting FreeBSD all over the globe, bug fixing in preparation for 12.0, and setting plans in motion to kick off our 4th quarter fundraising and advocacy efforts. Take a minute to see what we’ve been up to and please consider making a donation to help us continue our efforts supporting FreeBSD!
Err codemadness.org 70 i 39436
Err codemadness.org 70 i 39443Err codemadness.org 70 i 39447 Err codemadness.org 70 i 39448In preparation for the release of FreeBSD 12.0, I have been working on investigating and fixing a backlog of kernel bug reports. Of course, this kind of work is never finished, and we will continue to make progress after the release. In the past couple of months I have fixed a combination of long-standing issues and recent regressions. Of note are a pair of UNIX domain socket bugs which had been affecting various applications for years. In particular, Chromium tabs would frequently hang unless a workaround was manually applied to the system, and the bug had started affecting recent versions of Firefox as well. Fixing these issues gave me an opportunity to revisit and extend our regression testing for UNIX sockets, which, in turn, resulted in some related bugs being identified and fixed.
Err codemadness.org 70 i 39446
Err codemadness.org 70 i 39444 Of late I have also been investigating reports of issues with ZFS, particularly, those reported on FreeBSD 11.2. A number of regressions, including a kernel memory leak and issues with ARC reclamation, have already been fixed for 12.0; investigation of other reports is ongoing. Those who closely follow FreeBSD-CURRENT know that some exciting work to improve memory usage on NUMA systems is now enabled by default. As is usually the case when new code is deployed in a diverse array of systems and workloads, a number of problems since have been identified. We are working on resolving them as soon as possible to ensure the quality of the release.
Err codemadness.org 70 i 39445 I’m passionate about maintaining FreeBSD’s stability and dependability as it continues to expand and grow new features, and I’m grateful to the FreeBSD Foundation for sponsoring this work. We depend on users to report problems to the mailing lists and via the bug tracker, so please try running the 12.0 candidate builds and help us make 12.0 a great release.
Err codemadness.org 70 i 39453Err codemadness.org 70 i 39456 Err codemadness.org 70 i 39457It’s officially Fall here at Foundation headquarters and we’re heading full-steam into our final fundraising campaign of the year. We couldn’t even have begun to reach our funding goal of $1.25 million dollars without the support from the companies who have partnered with us this year. Thank you to Verisign for becoming a Silver Partner. They now join a growing list of companies like Xiplink, NetApp, Microsoft, Tarsnap, VMware, and NeoSmart Technologies that are stepping up and showing their commitment to FreeBSD!
Err codemadness.org 70 i 39455
Err codemadness.org 70 i 39454 Funding from commercial users like these and individual users like yourself, help us continue our efforts of supporting critical areas of FreeBSD such as:
Err codemadness.org 70 i 39468Err codemadness.org 70 i 39472 Err codemadness.org 70 i 39473We can continue the above work, if we meet our goal this year!
Err codemadness.org 70 i 39471
Err codemadness.org 70 i 39469 If your company uses FreeBSD, please consider joining our growing list of 2018 partners. If you haven’t made your donation yet, please consider donating today. We are indebted to the individual donors, and companies listed above who have already shown their commitment to open source.
Err codemadness.org 70 i 39470 Thank you for supporting FreeBSD and the Foundation!
Err codemadness.org 70 i 39478Err codemadness.org 70 i 39484 Err codemadness.org 70 i 39485The FreeBSD Release Engineering team continued working on the upcoming 12.0 RELEASE. At present, the 12.0 schedule had been adjusted by one week to allow for necessary works-in-progress to be completed.
Err codemadness.org 70 i 39483
Err codemadness.org 70 i 39479 Of note, one of the works-in-progress includes updating OpenSSL from 1.0.2 to 1.1.1, in order to avoid breaking the application binary interface (ABI) on an established stable branch.
Err codemadness.org 70 i 39480 Due to the level of non-trivial intrusiveness that had already been discovered and addressed in a project branch of the repository, it is possible (but not yet definite) that the schedule will need to be adjusted by another week to allow more time for larger and related updates for this particular update.
Err codemadness.org 70 i 39481 Should the 12.0-RELEASE schedule need to be adjusted at any time during the release cycle, the schedule on the FreeBSD project website will be updated accordingly. The current schedule is available at:
Err codemadness.org 70 i 39482 https://www.freebsd.org/releases/12.0R/schedule.html
Err codemadness.org 70 i 39490Err codemadness.org 70 i 39493 Err codemadness.org 70 i 39494I’d like to start by thanking the FreeBSD Foundation for sponsoring my trip to BSDCam(bridge) 2018. I wouldn’t have managed to attend otherwise. I’ve used FreeBSD in both personal and professional deployments since the year 2000, and over the last few years I have become more involved with development and documentation.
Err codemadness.org 70 i 39492
Err codemadness.org 70 i 39491 I arrived in Gatwick, London at midnight. On Monday, August 13, I took the train to Cambridge, and decided to do some touristy activities as I walked from the train station to Churchill College. I ran into Allan outside the hotel right before the sky decided it was time for a heavy rainfall. Monday was mostly spent settling in, recouping after travel, and hanging out with Allan, Brad, Will and Andy later in the afternoon/evening. Read more…
Err codemadness.org 70 i 39499Err codemadness.org 70 i 39501 Err codemadness.org 70 i 39502The FreeBSD Foundation has sponsored the development of the Project’s continuous integration system, available at https://ci.FreeBSD.org, since June. Over the summer, we improved both the software and hardware infrastructure, and also added some new jobs for extending test coverage of the -CURRENT and -STABLE branches. Following are some highlights.
Err codemadness.org 70 i 39500
Err codemadness.org 70 i 39507Err codemadness.org 70 i 39509 Err codemadness.org 70 i 39510The Foundation purchased 4 new build machines for scaling up the computation power for the various test jobs. These newer, faster machines substantially speed up the time it takes to test amd64 builds, so that failing changes can be identified more quickly. Also, in August, we received a donation of 2 PINE A64-LTS boards from PINE64.org, which will be put in the hardware test lab as one part of the continuous tests.
Err codemadness.org 70 i 39508
Err codemadness.org 70 i 39515Err codemadness.org 70 i 39518 Err codemadness.org 70 i 39519We used hardware from a previous generation CI system to build a staging environment for the CI infrastructure, which is available at
Err codemadness.org 70 i 39517
Err codemadness.org 70 i 39516 https://ci-dev.freebsd.org. It executes the configurations and scripts from the “staging” branch of the FreeBSD-CI repository, and the development feature branches. We also use it to experiment with the new version of the jenkins server and plugins. Having a staging environment avoids affecting the production CI environment, reducing downtime.
Err codemadness.org 70 i 39524Err codemadness.org 70 i 39526 Err codemadness.org 70 i 39527In July, we turned on failure notification for all the kernel and world build jobs. Committers will receive email containing the build information and failure log to inform them of possible problems with their modification on certain architectures. For amd64 of the -CURRENT branch, we also enabled the notification on failing regression test cases. Currently mail is sent only to the individual committers, but with help from postmaster team, we have created a dev-ci mailing list and will soon be also sending notifications there.
Err codemadness.org 70 i 39525
Err codemadness.org 70 i 39532Err codemadness.org 70 i 39534 Err codemadness.org 70 i 39535In August, we updated the embedded script of the virtual machine image. Originally it only executed pre-defined tests, but now this behavior can be modified by the data on the attached disk. This mechanism is used for adding new ZFS tests jobs. We are also working on analyzing and fixing the failing and skipped test cases.
Err codemadness.org 70 i 39533
Err codemadness.org 70 i 39540Err codemadness.org 70 i 39542 Err codemadness.org 70 i 39543In August and September, we had two developer summits, one in Cambridge, UK and one in Bucharest, Romania. In these meetings, we discussed running special tests, such as ztest, which need a longer run time. We also planned the network testing for TCP/IP stack
Err codemadness.org 70 i 39541
###Daemonize - a Tiny C Library for Programming the UNIX Daemons
Err codemadness.org 70 i 39546 Err codemadness.org 70 i 39547Err codemadness.org 70 i 39548Err codemadness.org 70 i 39553 Err codemadness.org 70 i 39554Whatever they say, writing System-V style UNIX daemons is hard. One has to follow many rules to make a daemon process behave correctly on diverse UNIX flavours. Moreover, debugging such a code might be somewhat tricky. On the other hand, the process of daemon initialisation is rigid and well defined so the corresponding code has to be written and debugged once and later can be reused countless number of times.
Err codemadness.org 70 i 39552
Err codemadness.org 70 i 39549 Developers of BSD UNIX were very aware of this, as there a C library function daemon() was available starting from version 4.4. The function, although non-standard, is present on many UNIXes. Unfortunately, it does not follow all the required steps to reliably run a process in the background on systems which follow System-V semantics (e.g. Linux). The details are available at the corresponding Linux man page. The main problem here, as I understand it, is that daemon() does not use the double-forking technique to avoid the situation when zombie processes appear.
Err codemadness.org 70 i 39550 Whenever I encounter a problem like this one, I know it is time to write a tiny C library which solves it. This is exactly how ‘daemonize’ was born (GitHub mirror). The library consists of only two files which are meant to be integrated into the source tree of your project. Recently I have updated the library and realised that it would be good to describe how to use it on this site.
Err codemadness.org 70 i 39551 If for some reason you want to make a Windows service, I have a battle tested template code for you as well.
Err codemadness.org 70 i 39559Err codemadness.org 70 i 39561 Err codemadness.org 70 i 39562To make discussion clear we shall quote the steps which have to be performed during a daemon initialisation (according to daemon(7) manual page on Linux). I do it to demonstrate that this task is more tricky than one might expect.
Err codemadness.org 70 i 39560
So, here we go:
Err codemadness.org 70 i 39565Close all open file descriptors except standard input, output, and error (i.e. the first three file descriptors 0, 1, 2). This ensures that no accidentally passed file descriptor stays around in the daemon process. On Linux, this is best implemented by iterating through /proc/self/fd, with a fallback of iterating from file descriptor 3 to the value returned by getrlimit() for RLIMIT_NOFILE.
Err codemadness.org 70 i 39568Reset all signal handlers to their default. This is best done by iterating through the available signals up to the limit of _NSIG and resetting them to SIG_DFL.
Err codemadness.org 70 i 39571Reset the signal mask using sigprocmask().
Err codemadness.org 70 i 39574Sanitize the environment block, removing or resetting environment variables that might negatively impact daemon runtime.
Err codemadness.org 70 i 39577Call fork(), to create a background process.
Err codemadness.org 70 i 39580In the child, call setsid() to detach from any terminal and create an independent session.
Err codemadness.org 70 i 39583In the child, call fork() again, to ensure that the daemon can never re-acquire a terminal again.
Err codemadness.org 70 i 39586Call exit() in the first child, so that only the second child (the actual daemon process) stays around. This ensures that the daemon process is re-parented to init/PID 1, as all daemons should be.
Err codemadness.org 70 i 39589In the daemon process, connect /dev/null to standard input, output, and error.
Err codemadness.org 70 i 39592In the daemon process, reset the umask to 0, so that the file modes passed to open(), mkdir() and suchlike directly control the access mode of the created files and directories.
Err codemadness.org 70 i 39595In the daemon process, change the current directory to the root directory (/), in order to avoid that the daemon involuntarily blocks mount points from being unmounted.
Err codemadness.org 70 i 39598In the daemon process, write the daemon PID (as returned by getpid()) to a PID file, for example /run/foobar.pid (for a hypothetical daemon “foobar”) to ensure that the daemon cannot be started more than once. This must be implemented in race-free fashion so that the PID file is only updated when it is verified at the same time that the PID previously stored in the PID file no longer exists or belongs to a foreign process.
Err codemadness.org 70 i 39601In the daemon process, drop privileges, if possible and applicable.
Err codemadness.org 70 i 39604From the daemon process, notify the original process started that initialization is complete. This can be implemented via an unnamed pipe or similar communication channel that is created before the first fork() and hence available in both the original and the daemon process.
Err codemadness.org 70 i 39607Call exit() in the original process. The process that invoked the daemon must be able to rely on that this exit() happens after initialization is complete and all external communication channels are established and accessible.
Err codemadness.org 70 i 39610Err codemadness.org 70 i 39614Err codemadness.org 70 i 39616 Err codemadness.org 70 i 39617The discussed library does most of the above-mentioned initialisation steps as it becomes immediately evident that implementation details for some of them heavily dependent on the internal logic of an application itself, so it is not possible to implement them in a universal library. I believe it is not a flaw, though, as the missed parts are safe to implement in an application code.
Err codemadness.org 70 i 39615
Err codemadness.org 70 i 39622Err codemadness.org 70 i 39624 Err codemadness.org 70 i 39625The generic programming interface was loosely modelled after above-mentioned BSD’s daemon() function. The library provides two user available functions (one is, in fact, implemented on top of the other) as well as a set of flags to control a daemon creation behaviour.
Err codemadness.org 70 i 39623
Err codemadness.org 70 i 39630Err codemadness.org 70 i 39633 Err codemadness.org 70 i 39634The objective of the library is to hide all the trickery of programming a daemon so you could concentrate on the more creative parts of your application. I hope it does this well.
Err codemadness.org 70 i 39632
Err codemadness.org 70 i 39631 If you are not only interested in writing a daemon, but also want to make yourself familiar with the techniques which are used to accomplish that, the source code is available. Moreover, I would advise anyone, who starts developing for a UNIX environment to do that, as it shows many intricacies of programming for these platforms.
##News Roundup
Err codemadness.org 70
i 39637 ###EuroBSDCon 2018 travel report and obligatory pics
Err codemadness.org 70 i 39640Err codemadness.org 70 i 39653 Err codemadness.org 70 i 39654This was my first big BSD conference. We also planned - planned might be a big word - thought about doing a devsummit on Friday. Since the people who were in charge of that had a change of plans, I was sure it’d go horribly wrong.
Err codemadness.org 70 i 39652
Err codemadness.org 70 i 39641 The day before the devsummit and still in the wrong country, I mentioned the hours and venue on the wiki, and booked a reservation for a restaurant.
Err codemadness.org 70 i 39642 It turns out that everything was totally fine, and since the devsummit was at the conference venue (that was having tutorials that day), they even had signs pointing at the room we were given. Thanks EuroBSDCon conference organizers!
Err codemadness.org 70 i 39643 At the devsummit, we spent some time hacking. A few people came with “travel laptops” without access to anything, like Riastradh, so I gave him access to my own laptop. This didn’t hold very long and I kinda forgot about it, but for a few moments he had access to a NetBSD source tree and an 8 thread, 16GB RAM machine with which to build things.
Err codemadness.org 70 i 39644 We had a short introduction and I suggested we take some pictures, so here’s the ones we got. A few people were concerned about privacy, so they’re not pictured. We had small team to hold the camera :-)
Err codemadness.org 70 i 39645 At the actual conference days, I stayed at the speaker hotel with the other speakers. I’ve attempted to make conversation with some visibly FreeBSD/OpenBSD people, but didn’t have plans to talk about anything, so there was a lot of just following people silently.
Err codemadness.org 70 i 39646 Perhaps for the next conference I’ll prepare a list of questions to random BSD people and then very obviously grab a piece of paper and ask, “what was…”, read a bit from it, and say, “your latest kernel panic?”, I’m sure it’ll be a great conversation starter.
Err codemadness.org 70 i 39647 At the conference itself, was pretty cool to have folks like Kirk McKusick give first person accounts of some past events (Kirk gave a talk about governance at FreeBSD), or the second keynote by Ron Broersma.
Err codemadness.org 70 i 39648 My own talk was hastily prepared, it was difficult to bring the topic together into a coherent talk. Nevertheless, I managed to talk about stuff for a while 40 minutes, though usually I skip over so many details that I have trouble putting together a sufficiently long talk.
Err codemadness.org 70 i 39649 I mentioned some of my coolest bugs to solve (I should probably make a separate article about some!). A few people asked for the slides after the talk, so I guess it wasn’t totally incoherent.
Err codemadness.org 70 i 39650 It was really fun to meet some of my favourite NetBSD people. I got to show off my now fairly well working laptop (it took a lot of work by all of us!).
Err codemadness.org 70 i 39651 After the conference I came back with a conference cold, and it took a few days to recover from it. Hopefully I didn’t infect too many people on the way back.
###GhostBSD tested on real hardware T410 – better than TrueOS?
Err codemadness.org 70 i 39657 Err codemadness.org 70 i 39658Err codemadness.org 70 i 39659Err codemadness.org 70 i 39661 Err codemadness.org 70 i 39662You might have heard about FreeBSD which is ultimately derived from UNIX back in the days. It is not Linux even though it is similar in many ways because Linux was designed to follow UNIX principles. Seeing is believing, so check out the video of the install and some apps as well!
Err codemadness.org 70 i 39660
Err codemadness.org 70 i 39663Err codemadness.org 70 i 39665 Err codemadness.org 70 i 39666Nowadays if you want some of that BSD on your personal desktop how to go about? Well there is a full package or distro called GhostBSD which is based on FreeBSD current with a Mate or XFCE desktop preconfigured. I did try another package called TrueOS before and you can check out my blog post as well.
Err codemadness.org 70 i 39664
Err codemadness.org 70 i 39667Err codemadness.org 70 i 39669 Err codemadness.org 70 i 39670Let’s give it a try on my Lenovo ThinkPad T410. You can download the latest version from ghostbsd.org. Creating a bootable USB drive was surprisingly difficult as rufus did not work and created a corrupted drive. You have to follow this procedure under Windows: download the 2.5GB .iso file and rename the extension to .img. Download Win32 Disk imager and burn the img file to an USB drive and boot from it. You will be able to start a live session and use the onboard setup to install GhostBSD unto a disk.
Err codemadness.org 70 i 39668
Err codemadness.org 70 i 39671Err codemadness.org 70 i 39673 Err codemadness.org 70 i 39674I did encounter some bugs or quirks along the way. The installer failed the first time for some unknown reason but worked on the second attempt. The first boot stopped upon initialization of the USB3 ports (the T410 does not have USB3) but I could use some ‘exit’ command line magic to continue. The second boot worked fine. Audio was only available through headphones, not speakers but that could partially be fixed using the command line again. Lot’s of installed apps did not show up in the start menu and on goes the quirks list.
Err codemadness.org 70 i 39672
Err codemadness.org 70 i 39675Err codemadness.org 70 i 39677 Err codemadness.org 70 i 39678Overall it is still better than TrueOS for me because drivers did work very well and I could address most of the existing bugs.
Err codemadness.org 70 i 39676
On the upside:
Err codemadness.org 70 i 39681Free and open source FreeBSD package ready to go
Err codemadness.org 70 i 39684Mate or XFCE desktop (Mate is the only option for daily builds)
Err codemadness.org 70 i 39687Drivers work fine including LAN, WiFi, video 2D & 3D, audio, etc
Err codemadness.org 70 i 39690UFS or ZFS advanced file systems available
Err codemadness.org 70 i 39693Some downsides:
Err codemadness.org 70 i 39696Less driver and direct app support than Linux
Err codemadness.org 70 i 39699Installer and desktop have some quirks and bugs
Err codemadness.org 70 i 39702App-store is cumbersome, inferior to TrueOS
Err codemadness.org 70 i 39705##Beastie Bits
Err codemadness.org 70 i 39711 Err codemadness.org 70 i 39712##Feedback/Questions
Err codemadness.org 70 i 39732 Err codemadness.org 70 i 39733##Headlines
Err codemadness.org 70
i 40094 ###Six Metrics for Measuring ZFS Pool Performance Part 1
Err codemadness.org 70 i 40097Err codemadness.org 70 i 40099 Err codemadness.org 70 i 40100The layout of a ZFS storage pool has a significant impact on system performance under various workloads. Given the importance of picking the right configuration for your workload and the fact that making changes to an in-use ZFS pool is far from trivial, it is important for an administrator to understand the mechanics of pool performance when designing a storage system.
Err codemadness.org 70 i 40098
Err codemadness.org 70 i 40112Err codemadness.org 70 i 40120 Err codemadness.org 70 i 40121Note that when we calculate data rates and IOPS values for the example system, they are only approximations. Many other factors can impact pool access speeds for better (compression, caching) or worse (poor CPU performance, not enough memory).
Err codemadness.org 70 i 40119
Err codemadness.org 70 i 40113 There is no single configuration that maximizes all six metrics. Like so many things in life, our objective is to find an appropriate balance of the metrics to match a target workload. For example, a cold-storage backup system will likely want a pool configuration that emphasizes usable storage space and fault tolerance over the other data-rate focused metrics.
Err codemadness.org 70 i 40114 Let’s start with a quick review of ZFS storage pools before diving into specific configuration options. ZFS storage pools are comprised of one or more virtual devices, or vdevs. Each vdev is comprised of one or more storage providers, typically physical hard disks. All disk-level redundancy is configured at the vdev level. That is, the RAID layout is set on each vdev as opposed to on the storage pool. Data written to the storage pool is then striped across all the vdevs. Because pool data is striped across the vdevs, the loss of any one vdev means total pool failure. This is perhaps the single most important fact to keep in mind when designing a ZFS storage system. We will circle back to this point in the next post, but keep it in mind as we go through the vdev configuration options.
Err codemadness.org 70 i 40115 Because storage pools are made up of one or more vdevs with the pool data striped over the top, we’ll take a look at pool configuration in terms of various vdev configurations. There are three basic vdev configurations: striping, mirroring, and RAIDZ (which itself has three different varieties). The first section will cover striped and mirrored vdevs in this post; the second post will cover RAIDZ and some example scenarios.
Err codemadness.org 70 i 40116 A striped vdev is the simplest configuration. Each vdev consists of a single disk with no redundancy. When several of these single-disk, striped vdevs are combined into a single storage pool, the total usable storage space would be the sum of all the drives. When you write data to a pool made of striped vdevs, the data is broken into small chunks called “blocks” and distributed across all the disks in the pool. The blocks are written in “round-robin” sequence, meaning after all the disks receive one row of blocks, called a stripe, it loops back around and writes another stripe under the first. A striped pool has excellent performance and storage space efficiency, but absolutely zero fault tolerance. If even a single drive in the pool fails, the entire pool will fail and all data stored on that pool will be lost.
Err codemadness.org 70 i 40117 The excellent performance of a striped pool comes from the fact that all of the disks can work independently for all read and write operations. If you have a bunch of small read or write operations (IOPS), each disk can work independently to fetch the next block. For streaming reads and writes, each disk can fetch the next block in line synchronized with its neighbors. For example, if a given disk is fetching block n, its neighbor to the left can be fetching block n-1, and its neighbor to the right can be fetching block n+1. Therefore, the speed of all read and write operations as well as the quantity of read and write operations (IOPS) on a striped pool will scale with the number of vdevs. Note here that I said the speeds and IOPS scale with the number of vdevs rather than the number of drives; there’s a reason for this and we’ll cover it in the next post when we discuss RAID-Z.
Err codemadness.org 70 i 40118 Here’s a summary of the total pool performance (where N is the number of disks in the pool):
Err codemadness.org 70 i 40132Err codemadness.org 70 i 40134 Err codemadness.org 70 i 40135Let’s apply this to our example system, configured with a 12-wide striped pool:
Err codemadness.org 70 i 40133
Err codemadness.org 70 i 40147Err codemadness.org 70 i 40151 Err codemadness.org 70 i 40152The blocks are simply striped across the 12 disks in the pool. The LBA column on the left stands for “Logical Block Address”. If we treat each disk as a column in an array, each LBA would be a row. It’s also easy to see that if any single disk fails, we would be missing a color in the rainbow and our data would be incomplete. While this configuration has fantastic read and write speeds and can handle a ton of IOPS, the data stored on the pool is very vulnerable. This configuration is not recommended unless you’re comfortable losing all of your pool’s data whenever any single drive fails.
Err codemadness.org 70 i 40150
Err codemadness.org 70 i 40148 A mirrored vdev consists of two or more disks. A mirrored vdev stores an exact copy of all the data written to it on each one of its drives. Traditional RAID-1 mirrors usually only support two drive mirrors, but ZFS allows for more drives per mirror to increase redundancy and fault tolerance. All disks in a mirrored vdev have to fail for the vdev, and thus the whole pool, to fail. Total storage space will be equal to the size of a single drive in the vdev. If you’re using mismatched drive sizes in your mirrors, the total size will be that of the smallest drive in the mirror.
Err codemadness.org 70 i 40149 Streaming read speeds and read IOPS on a mirrored vdev will be faster than write speeds and IOPS. When reading from a mirrored vdev, the drives can “divide and conquer” the operations, similar to what we saw above in the striped pool. This is because each drive in the mirror has an identical copy of the data. For write operations, all of the drives need to write a copy of the data, so the mirrored vdev will be limited to the streaming write speed and IOPS of a single disk.
Err codemadness.org 70 i 40153Err codemadness.org 70 i 40155 Err codemadness.org 70 i 40156Here’s a summary:
Err codemadness.org 70 i 40154
N-way mirror:
Err codemadness.org 70 i 40159Read IOPS: N * Read IOPS of a single drive
Err codemadness.org 70 i 40162Write IOPS: Write IOPS of a single drive
Err codemadness.org 70 i 40165Streaming read speed: N * Streaming read speed of a single drive
Err codemadness.org 70 i 40168Streaming write speed: Streaming write speed of a single drive
Err codemadness.org 70 i 40171Storage space efficiency: 50% for 2-way, 33% for 3-way, 25% for 4-way, etc. [(N-1)/N]
Err codemadness.org 70 i 40174Fault tolerance: 1 disk per vdev for 2-way, 2 for 3-way, 3 for 4-way, etc. [N-1]
Err codemadness.org 70 i 40177For our first example configuration, let’s do something ridiculous and create a 12-way mirror. ZFS supports this kind of thing, but your management probably will not.
Err codemadness.org 70 i 401801x 12-way mirror:
Err codemadness.org 70 i 40183Read IOPS: 3000
Err codemadness.org 70 i 40186Write IOPS: 250
Err codemadness.org 70 i 40189Streaming read speed: 1200 MB/s
Err codemadness.org 70 i 40192Streaming write speed: 100 MB/s
Err codemadness.org 70 i 40195Storage space efficiency: 8.3% (6 TB)
Err codemadness.org 70 i 40198Fault tolerance: 11
Err codemadness.org 70 i 40201Err codemadness.org 70 i 40205Err codemadness.org 70 i 40207 Err codemadness.org 70 i 40208As we can clearly see from the diagram, every single disk in the vdev gets a full copy of our rainbow data. The chainlink icons between the disk labels in the column headers indicate the disks are part of a single vdev. We can lose up to 11 disks in this vdev and still have a complete rainbow. Of course, the data takes up far too much room on the pool, occupying a full 12 LBAs in the data array.
Err codemadness.org 70 i 40206
Err codemadness.org 70 i 40209Err codemadness.org 70 i 40211 Err codemadness.org 70 i 40212Obviously, this is far from the best use of 12 drives. Let’s do something a little more practical and configure the pool with the ZFS equivalent of RAID-10. We’ll configure six 2-way mirror vdevs. ZFS will stripe the data across all 6 of the vdevs. We can use the work we did in the striped vdev section to determine how the pool as a whole will behave. Let’s first calculate the performance per vdev, then we can work on the full pool:
Err codemadness.org 70 i 40210
1x 2-way mirror:
Err codemadness.org 70 i 40215Read IOPS: 500
Err codemadness.org 70 i 40218Write IOPS: 250
Err codemadness.org 70 i 40221Streaming read speed: 200 MB/s
Err codemadness.org 70 i 40224Streaming write speed: 100 MB/s
Err codemadness.org 70 i 40227Storage space efficiency: 50% (6 TB)
Err codemadness.org 70 i 40230Fault tolerance: 1
Err codemadness.org 70 i 40233Now we can pretend we have 6 drives with the performance statistics listed above and run them through our striped vdev performance calculator to get the total pool’s performance:
Err codemadness.org 70 i 402366x 2-way mirror:
Err codemadness.org 70 i 40239Read IOPS: 3000
Err codemadness.org 70 i 40242Write IOPS: 1500
Err codemadness.org 70 i 40245Streaming read speed: 3000 MB/s
Err codemadness.org 70 i 40248Streaming write speed: 1500 MB/s
Err codemadness.org 70 i 40251Storage space efficiency: 50% (36 TB)
Err codemadness.org 70 i 40254Fault tolerance: 1 per vdev, 6 total
Err codemadness.org 70 i 40257Again, we will examine the configuration from a visual perspective:
Err codemadness.org 70 i 40260Err codemadness.org 70 i 40264Err codemadness.org 70 i 40266 Err codemadness.org 70 i 40267Each vdev gets a block of data and ZFS writes that data to all of (or in this case, both of) the disks in the mirror. As long as we have at least one functional disk in each vdev, we can retrieve our rainbow. As before, the chain link icons denote the disks are part of a single vdev. This configuration emphasizes performance over raw capacity but doesn’t totally disregard fault tolerance as our striped pool did. It’s a very popular configuration for systems that need a lot of fast I/O. Let’s look at one more example configuration using four 3-way mirrors. We’ll skip the individual vdev performance calculation and go straight to the full pool:
Err codemadness.org 70 i 40265
Err codemadness.org 70 i 40278Err codemadness.org 70 i 40281 Err codemadness.org 70 i 40282While we have sacrificed some write performance and capacity, the pool is now extremely fault tolerant. This configuration is probably not practical for most applications and it would make more sense to use lower fault tolerance and set up an offsite backup system.
Err codemadness.org 70 i 40280
Err codemadness.org 70 i 40279 Striped and mirrored vdevs are fantastic for access speed performance, but they either leave you with no redundancy whatsoever or impose at least a 50% penalty on the total usable space of your pool. In the next post, we will cover RAIDZ, which lets you keep data redundancy without sacrificing as much storage space efficiency. We’ll also look at some example workload scenarios and decide which layout would be the best fit for each.
Err codemadness.org 70 i 40287Err codemadness.org 70 i 40290 Err codemadness.org 70 i 40291Five years ago I wrote about using a yubikey on OpenBSD. The only problem with doing this is that there’s no validation server available on OpenBSD, so you need to use a different OTP slot for each machine. (You don’t want to risk a replay attack if someone succeeds in capturing an OTP on one machine, right?) Yubikey has two OTP slots per device, so you would need a yubikey for every two machines with which you’d like to use it. You could use a bastion—and use only one yubikey—but I don’t like the SPOF aspect of a bastion. YMMV.
Err codemadness.org 70 i 40289
Err codemadness.org 70 i 40288 After I played with TOTP, I wanted to use them as a 2FA for ssh. At the time of writing, we can’t do that using only the tools in base. This article focuses on OpenBSD; if you use another operating system, here are two handy links.
Err codemadness.org 70 i 40296Err codemadness.org 70 i 40298 Err codemadness.org 70 i 40299The first thing we need to do is to install the software which will be used to verify the OTPs we submit.
Err codemadness.org 70 i 40297
# pkg_add login_oath
Err codemadness.org 70 i 40302Err codemadness.org 70 i 40304 Err codemadness.org 70 i 40305We need to create a secret - aka, the seed - that will be used to calculate the Time-based One-Time Passwords. We should make sure no one can read or change it.
Err codemadness.org 70 i 40303
$ openssl rand -hex 20 > ~/.totp-key
Err codemadness.org 70
i 40306 $ chmod 400 ~/.totp-key
Err codemadness.org 70 i 40309Err codemadness.org 70 i 40313 Err codemadness.org 70 i 40314Now we have a hexadecimal key, but apps usually want a base32 secret. I initially wrote a small script to do the conversion.
Err codemadness.org 70 i 40312
Err codemadness.org 70 i 40310 While writing this article, I took the opportunity to improve it. When I initially wrote this utility for my use, python-qrcode hadn’t yet been imported to the OpenBSD ports/packages system. It’s easy to install now, so let’s use it.
Err codemadness.org 70 i 40311 Here’s the improved version. It will ask for the hex key and output the secret as a base32-encoded string, both with and without spacing so you can copy-paste it into your password manager or easily retype it. It will then ask for the information needed to generate a QR code. Adding our new OTP secret to any mobile app using the QR code will be super easy!
Err codemadness.org 70 i 40319Err codemadness.org 70 i 40322 Err codemadness.org 70 i 40323We can now move to the configuration of the system to put our new TOTP to use. As you might guess, it’s going to be quite close to what we did with the yubikey.
Err codemadness.org 70 i 40321
Err codemadness.org 70 i 40320 We need to tweak login.conf. Be careful and keep a root shell open at all times. The few times I broke my OpenBSD were because I messed with login.conf without showing enough care.
Err codemadness.org 70 i 40328Err codemadness.org 70 i 40334 Err codemadness.org 70 i 40335Again, keeping a root shell around decreases the risk of losing access to the system and being locked outside.
Err codemadness.org 70 i 40333
Err codemadness.org 70 i 40329 A good standard is to use PasswordAuthentication no and to use public key only. Except… have a guess what the P stands for in TOTP. Yes, congrats, you guessed it!
Err codemadness.org 70 i 40330 We need to switch to PasswordAuthentication yes. However, if we made this change alone, sshd would then accept a public key OR a password (which are TOTP because of our login.conf). 2FA uses both at the same time.
Err codemadness.org 70 i 40331 To inform sshd we intend to use both, we need to set AuthenticationMethods publickey,password. This way, the user trying to login will first need to perform the traditional publickey authentication. Once that’s done, ssh will prompt for a password and the user will need to submit a valid TOTP for the system.
Err codemadness.org 70 i 40332 We could do this the other way around, but I think bots could try passwords, wasting resources. Evaluated in this order, failing to provide a public key leads to sshd immediately declining your attempt.
Err codemadness.org 70 i 40340Err codemadness.org 70 i 40344 Err codemadness.org 70 i 40345My phone has a long enough password that most of the time, I fail to type it correctly on the first try. Of course, if I had to unlock my phone, launch my TOTP app and use my keyboard to enter what I see on my phone’s screen, I would quickly disable 2FA.
Err codemadness.org 70 i 40343
Err codemadness.org 70 i 40341 To find a balance, I have whitelisted certain IP addresses and users. If I connect from a particular IP address or as a specific user, I don’t want to go through 2FA. For some users, I might not even enable 2FA.
Err codemadness.org 70 i 40342 To sum up, we covered how to create a seed, how to perform a hexadecimal to base32 conversion and how to create a QR code for mobile applications. We configured the login system with login.conf so that ssh authentication uses the TOTP login system, and we told sshd to ask for both the public key and the Time-based One-Time Password. Now you should be all set to use two-factor ssh authentication on OpenBSD!
##News Roundup
Err codemadness.org 70
i 40348 ###How ZFS maintains file type information in directories
Err codemadness.org 70 i 40351Err codemadness.org 70 i 40354 Err codemadness.org 70 i 40355As an aside in yesterday’s history of file type information being available in Unix directories, I mentioned that it was possible for a filesystem to support this even though its Unix didn’t. By supporting it, I mean that the filesystem maintains this information in its on disk format for directories, even though the rest of the kernel will never ask for it. This is what ZFS does.
Err codemadness.org 70 i 40353
Err codemadness.org 70 i 40352 The easiest way to see that ZFS does this is to use zdb to dump a directory. I’m going to do this on an OmniOS machine, to make it more convincing, and it turns out that this has some interesting results. Since this is OmniOS, we don’t have the convenience of just naming a directory in zdb, so let’s find the root directory of a filesystem, starting from dnode 1 (as seen before).
# zdb -dddd fs3-corestaff-01/h/281 1
Err codemadness.org 70
i 40356 Dataset [....]
Err codemadness.org 70
i 40357 [...]
Err codemadness.org 70
i 40358 microzap: 512 bytes, 4 entries
Err codemadness.org 70
i 40359 [...]
Err codemadness.org 70
i 40360 ROOT = 3
Err codemadness.org 70
i 40361
Err codemadness.org 70
i 40362 # zdb -dddd fs3-corestaff-01/h/281 3
Err codemadness.org 70
i 40363 Object lvl iblk dblk dsize lsize %full type
Err codemadness.org 70
i 40364 3 1 16K 1K 8K 1K 100.00 ZFS directory
Err codemadness.org 70
i 40365 [...]
Err codemadness.org 70
i 40366 microzap: 1024 bytes, 8 entries
Err codemadness.org 70
i 40367
Err codemadness.org 70
i 40368 RESTORED = 4396504 (type: Directory)
Err codemadness.org 70
i 40369 ckstst = 12017 (type: not specified)
Err codemadness.org 70
i 40370 ckstst3 = 25069 (type: Directory)
Err codemadness.org 70
i 40371 .demo-file = 5832188 (type: Regular File)
Err codemadness.org 70
i 40372 .peergroup = 12590 (type: not specified)
Err codemadness.org 70
i 40373 cks = 5 (type: not specified)
Err codemadness.org 70
i 40374 cksimap1 = 5247832 (type: Directory)
Err codemadness.org 70
i 40375 .diskuse = 12016 (type: not specified)
Err codemadness.org 70
i 40376 ckstst2 = 12535 (type: not specified)
Err codemadness.org 70 i 40379Err codemadness.org 70 i 40383 Err codemadness.org 70 i 40384This is actually an old filesystem (it dates from Solaris 10 and has been transferred around with ‘zfs send | zfs recv’ since then), but various home directories for real and test users have been created in it over time (you can probably guess which one is the oldest one). Sufficiently old directories and files have no file type information, but more recent ones have this information, including .demo-file, which I made just now so this would have an entry that was a regular file with type information.
Err codemadness.org 70 i 40382
Err codemadness.org 70 i 40380 Once I dug into it, this turned out to be a change introduced (or activated) in ZFS filesystem version 2, which is described in ‘zfs upgrade -v’ as ‘enhanced directory entries’. As an actual change in (Open)Solaris, it dates from mid 2007, although I’m not sure what Solaris release it made it into. The upshot is that if you made your ZFS filesystem any time in the last decade, you’ll have this file type information in your directories.
Err codemadness.org 70 i 40381 How ZFS stores this file type information is interesting and clever, especially when it comes to backwards compatibility. I’ll start by quoting the comment from zfs_znode.h:
/*
Err codemadness.org 70
i 40385 * The directory entry has the type (currently unused on
Err codemadness.org 70
i 40386 * Solaris) in the top 4 bits, and the object number in
Err codemadness.org 70
i 40387 * the low 48 bits. The "middle" 12 bits are unused.
Err codemadness.org 70
i 40388 */
Err codemadness.org 70 i 40391Err codemadness.org 70 i 40394 Err codemadness.org 70 i 40395In yesterday’s entry I said that Unix directory entries need to store at least the filename and the inode number of the file. What ZFS is doing here is reusing the 64 bit field used for the ‘inode’ (the ZFS dnode number) to also store the file type, because it knows that object numbers have only a limited range. This also makes old directory entries compatible, by making type 0 (all 4 bits 0) mean ‘not specified’. Since old directory entries only stored the object number and the object number is 48 bits or less, the higher bits are guaranteed to be all zero.
Err codemadness.org 70 i 40393
Err codemadness.org 70 i 40392 The reason this needed a new ZFS filesystem version is now clear. If you tried to read directory entries with file type information on a version of ZFS that didn’t know about them, the old version would likely see crazy (and non-existent) object numbers and nothing would work. In order to even read a ‘file type in directory entries’ filesystem, you need to know to only look at the low 48 bits of the object number field in directory entries.
###Everything old is new again
Err codemadness.org 70 i 40398 Err codemadness.org 70 i 40399Err codemadness.org 70 i 40400Err codemadness.org 70 i 40405 Err codemadness.org 70 i 40406Just because KDE4-era software has been deprecated by the KDE-FreeBSD team in the official ports-repository, doesn’t mean we don’t care for it while we still need to. KDE4 was released on January 11th, 2008 — I still have the T-shirt — which was a very different C++ world than what we now live in. Much of the code pre-dates the availability of C11 — certainly the availability of compilers with C11 support. The language has changed a great deal in those ten years since the original release.
Err codemadness.org 70 i 40404
Err codemadness.org 70 i 40401 The platforms we run KDE code on have, too — FreeBSD 12 is a long way from the FreeBSD 6 or 7 that were current at release (although at the time, I was more into OpenSolaris). In particular, since then the FreeBSD world has switched over to Clang, and FreeBSD current is experimenting with Clang 7. So we’re seeing KDE4-era code being built, and running, on FreeBSD 12 with Clang 7. That’s a platform with a very different idea of what constitutes correct code, than what the code was originally written for. (Not quite as big a difference as Helio’s KDE1 efforts, though)
Err codemadness.org 70 i 40402 So, while we’re counting down to removing KDE4 from the FreeBSD ports tree, we’re also going through and fixing it to work with Clang 7, which defaults to a newer C++ standard and which is quite picky about some things. Some time in the distant past, when pointers were integers and NULL was zero, there was some confusion about booleans. So there’s lots of code that does list.contains(element) > 0 … this must have been a trick before booleans were a supported type in all our compilers. In any case it breaks with Clang 7, since contains() returns a QBool which converts to a nullptr (when false) which isn’t comparable to the integer 0. Suffice to say I’ve spent more time reading KDE4-era code this month, than in the past two years.
Err codemadness.org 70 i 40403 However, work is proceeding apace, so if you really really want to, you can still get your old-school kicks on a new platform. Because we care about packaging things right, even when we want to get rid of it.
Err codemadness.org 70 i 40411Err codemadness.org 70 i 40413 Err codemadness.org 70 i 40414Owing to its versatile functionalities, netcat earns the reputation as “TCP/IP Swiss army knife”. For example, you can create a simple chat app using netcat:
Err codemadness.org 70 i 40412
# nc -l 3003
Err codemadness.org 70 i 40421Err codemadness.org 70 i 40423 Err codemadness.org 70 i 40424This means a netcat process will listen on 3003 port in this machine (the IP address of current machine is 192.168.35.176).
Err codemadness.org 70 i 40422
# nc 192.168.35.176 3003
Err codemadness.org 70
i 40429 hello
Err codemadness.org 70 i 40432Err codemadness.org 70 i 40434 Err codemadness.org 70 i 40435Then in the first machine’s terminal, you will see the “hello” text:
Err codemadness.org 70 i 40433
# nc -l 3003
Err codemadness.org 70
i 40436 hello
Err codemadness.org 70 i 40439Err codemadness.org 70 i 40443 Err codemadness.org 70 i 40444A primitive chatroom is built successfully. Very cool! Isn’t it? I think many people can’t wait to explore more features of netcatnow. If you are among them, congratulations! This tutorial may be the correct place for you.
Err codemadness.org 70 i 40442
Err codemadness.org 70 i 40440 In the following parts, I will delve into OpenBSD’s netcatcode to give a detailed anatomy of it. The reason of picking OpenBSD’s netcat rather than others’ is because its code repository is small (~2000 lines of code) and neat. Furthermore, I also hope this little book can assist you learn more socket programming knowledge not just grasping usage of netcat.
Err codemadness.org 70 i 40441 We’re all set. Let’s go!
##Beastie Bits
Err codemadness.org 70 i 40447 Err codemadness.org 70 i 40448##Feedback/Questions
Err codemadness.org 70 i 40460 Err codemadness.org 70 i 40461##Headlines
Err codemadness.org 70
i 40480 ###Six Metrics for Measuring ZFS Pool Performance Part 1
Err codemadness.org 70 i 40483Err codemadness.org 70 i 40485 Err codemadness.org 70 i 40486The layout of a ZFS storage pool has a significant impact on system performance under various workloads. Given the importance of picking the right configuration for your workload and the fact that making changes to an in-use ZFS pool is far from trivial, it is important for an administrator to understand the mechanics of pool performance when designing a storage system.
Err codemadness.org 70 i 40484
Err codemadness.org 70 i 40498Err codemadness.org 70 i 40506 Err codemadness.org 70 i 40507Note that when we calculate data rates and IOPS values for the example system, they are only approximations. Many other factors can impact pool access speeds for better (compression, caching) or worse (poor CPU performance, not enough memory).
Err codemadness.org 70 i 40505
Err codemadness.org 70 i 40499 There is no single configuration that maximizes all six metrics. Like so many things in life, our objective is to find an appropriate balance of the metrics to match a target workload. For example, a cold-storage backup system will likely want a pool configuration that emphasizes usable storage space and fault tolerance over the other data-rate focused metrics.
Err codemadness.org 70 i 40500 Let’s start with a quick review of ZFS storage pools before diving into specific configuration options. ZFS storage pools are comprised of one or more virtual devices, or vdevs. Each vdev is comprised of one or more storage providers, typically physical hard disks. All disk-level redundancy is configured at the vdev level. That is, the RAID layout is set on each vdev as opposed to on the storage pool. Data written to the storage pool is then striped across all the vdevs. Because pool data is striped across the vdevs, the loss of any one vdev means total pool failure. This is perhaps the single most important fact to keep in mind when designing a ZFS storage system. We will circle back to this point in the next post, but keep it in mind as we go through the vdev configuration options.
Err codemadness.org 70 i 40501 Because storage pools are made up of one or more vdevs with the pool data striped over the top, we’ll take a look at pool configuration in terms of various vdev configurations. There are three basic vdev configurations: striping, mirroring, and RAIDZ (which itself has three different varieties). The first section will cover striped and mirrored vdevs in this post; the second post will cover RAIDZ and some example scenarios.
Err codemadness.org 70 i 40502 A striped vdev is the simplest configuration. Each vdev consists of a single disk with no redundancy. When several of these single-disk, striped vdevs are combined into a single storage pool, the total usable storage space would be the sum of all the drives. When you write data to a pool made of striped vdevs, the data is broken into small chunks called “blocks” and distributed across all the disks in the pool. The blocks are written in “round-robin” sequence, meaning after all the disks receive one row of blocks, called a stripe, it loops back around and writes another stripe under the first. A striped pool has excellent performance and storage space efficiency, but absolutely zero fault tolerance. If even a single drive in the pool fails, the entire pool will fail and all data stored on that pool will be lost.
Err codemadness.org 70 i 40503 The excellent performance of a striped pool comes from the fact that all of the disks can work independently for all read and write operations. If you have a bunch of small read or write operations (IOPS), each disk can work independently to fetch the next block. For streaming reads and writes, each disk can fetch the next block in line synchronized with its neighbors. For example, if a given disk is fetching block n, its neighbor to the left can be fetching block n-1, and its neighbor to the right can be fetching block n+1. Therefore, the speed of all read and write operations as well as the quantity of read and write operations (IOPS) on a striped pool will scale with the number of vdevs. Note here that I said the speeds and IOPS scale with the number of vdevs rather than the number of drives; there’s a reason for this and we’ll cover it in the next post when we discuss RAID-Z.
Err codemadness.org 70 i 40504 Here’s a summary of the total pool performance (where N is the number of disks in the pool):
Err codemadness.org 70 i 40518Err codemadness.org 70 i 40520 Err codemadness.org 70 i 40521Let’s apply this to our example system, configured with a 12-wide striped pool:
Err codemadness.org 70 i 40519
Err codemadness.org 70 i 40533Err codemadness.org 70 i 40537 Err codemadness.org 70 i 40538The blocks are simply striped across the 12 disks in the pool. The LBA column on the left stands for “Logical Block Address”. If we treat each disk as a column in an array, each LBA would be a row. It’s also easy to see that if any single disk fails, we would be missing a color in the rainbow and our data would be incomplete. While this configuration has fantastic read and write speeds and can handle a ton of IOPS, the data stored on the pool is very vulnerable. This configuration is not recommended unless you’re comfortable losing all of your pool’s data whenever any single drive fails.
Err codemadness.org 70 i 40536
Err codemadness.org 70 i 40534 A mirrored vdev consists of two or more disks. A mirrored vdev stores an exact copy of all the data written to it on each one of its drives. Traditional RAID-1 mirrors usually only support two drive mirrors, but ZFS allows for more drives per mirror to increase redundancy and fault tolerance. All disks in a mirrored vdev have to fail for the vdev, and thus the whole pool, to fail. Total storage space will be equal to the size of a single drive in the vdev. If you’re using mismatched drive sizes in your mirrors, the total size will be that of the smallest drive in the mirror.
Err codemadness.org 70 i 40535 Streaming read speeds and read IOPS on a mirrored vdev will be faster than write speeds and IOPS. When reading from a mirrored vdev, the drives can “divide and conquer” the operations, similar to what we saw above in the striped pool. This is because each drive in the mirror has an identical copy of the data. For write operations, all of the drives need to write a copy of the data, so the mirrored vdev will be limited to the streaming write speed and IOPS of a single disk.
Err codemadness.org 70 i 40539Err codemadness.org 70 i 40541 Err codemadness.org 70 i 40542Here’s a summary:
Err codemadness.org 70 i 40540
N-way mirror:
Err codemadness.org 70 i 40545Read IOPS: N * Read IOPS of a single drive
Err codemadness.org 70 i 40548Write IOPS: Write IOPS of a single drive
Err codemadness.org 70 i 40551Streaming read speed: N * Streaming read speed of a single drive
Err codemadness.org 70 i 40554Streaming write speed: Streaming write speed of a single drive
Err codemadness.org 70 i 40557Storage space efficiency: 50% for 2-way, 33% for 3-way, 25% for 4-way, etc. [(N-1)/N]
Err codemadness.org 70 i 40560Fault tolerance: 1 disk per vdev for 2-way, 2 for 3-way, 3 for 4-way, etc. [N-1]
Err codemadness.org 70 i 40563For our first example configuration, let’s do something ridiculous and create a 12-way mirror. ZFS supports this kind of thing, but your management probably will not.
Err codemadness.org 70 i 405661x 12-way mirror:
Err codemadness.org 70 i 40569Read IOPS: 3000
Err codemadness.org 70 i 40572Write IOPS: 250
Err codemadness.org 70 i 40575Streaming read speed: 1200 MB/s
Err codemadness.org 70 i 40578Streaming write speed: 100 MB/s
Err codemadness.org 70 i 40581Storage space efficiency: 8.3% (6 TB)
Err codemadness.org 70 i 40584Fault tolerance: 11
Err codemadness.org 70 i 40587Err codemadness.org 70 i 40591Err codemadness.org 70 i 40593 Err codemadness.org 70 i 40594As we can clearly see from the diagram, every single disk in the vdev gets a full copy of our rainbow data. The chainlink icons between the disk labels in the column headers indicate the disks are part of a single vdev. We can lose up to 11 disks in this vdev and still have a complete rainbow. Of course, the data takes up far too much room on the pool, occupying a full 12 LBAs in the data array.
Err codemadness.org 70 i 40592
Err codemadness.org 70 i 40595Err codemadness.org 70 i 40597 Err codemadness.org 70 i 40598Obviously, this is far from the best use of 12 drives. Let’s do something a little more practical and configure the pool with the ZFS equivalent of RAID-10. We’ll configure six 2-way mirror vdevs. ZFS will stripe the data across all 6 of the vdevs. We can use the work we did in the striped vdev section to determine how the pool as a whole will behave. Let’s first calculate the performance per vdev, then we can work on the full pool:
Err codemadness.org 70 i 40596
1x 2-way mirror:
Err codemadness.org 70 i 40601Read IOPS: 500
Err codemadness.org 70 i 40604Write IOPS: 250
Err codemadness.org 70 i 40607Streaming read speed: 200 MB/s
Err codemadness.org 70 i 40610Streaming write speed: 100 MB/s
Err codemadness.org 70 i 40613Storage space efficiency: 50% (6 TB)
Err codemadness.org 70 i 40616Fault tolerance: 1
Err codemadness.org 70 i 40619Now we can pretend we have 6 drives with the performance statistics listed above and run them through our striped vdev performance calculator to get the total pool’s performance:
Err codemadness.org 70 i 406226x 2-way mirror:
Err codemadness.org 70 i 40625Read IOPS: 3000
Err codemadness.org 70 i 40628Write IOPS: 1500
Err codemadness.org 70 i 40631Streaming read speed: 3000 MB/s
Err codemadness.org 70 i 40634Streaming write speed: 1500 MB/s
Err codemadness.org 70 i 40637Storage space efficiency: 50% (36 TB)
Err codemadness.org 70 i 40640Fault tolerance: 1 per vdev, 6 total
Err codemadness.org 70 i 40643Again, we will examine the configuration from a visual perspective:
Err codemadness.org 70 i 40646Err codemadness.org 70 i 40650Err codemadness.org 70 i 40652 Err codemadness.org 70 i 40653Each vdev gets a block of data and ZFS writes that data to all of (or in this case, both of) the disks in the mirror. As long as we have at least one functional disk in each vdev, we can retrieve our rainbow. As before, the chain link icons denote the disks are part of a single vdev. This configuration emphasizes performance over raw capacity but doesn’t totally disregard fault tolerance as our striped pool did. It’s a very popular configuration for systems that need a lot of fast I/O. Let’s look at one more example configuration using four 3-way mirrors. We’ll skip the individual vdev performance calculation and go straight to the full pool:
Err codemadness.org 70 i 40651
Err codemadness.org 70 i 40664Err codemadness.org 70 i 40667 Err codemadness.org 70 i 40668While we have sacrificed some write performance and capacity, the pool is now extremely fault tolerant. This configuration is probably not practical for most applications and it would make more sense to use lower fault tolerance and set up an offsite backup system.
Err codemadness.org 70 i 40666
Err codemadness.org 70 i 40665 Striped and mirrored vdevs are fantastic for access speed performance, but they either leave you with no redundancy whatsoever or impose at least a 50% penalty on the total usable space of your pool. In the next post, we will cover RAIDZ, which lets you keep data redundancy without sacrificing as much storage space efficiency. We’ll also look at some example workload scenarios and decide which layout would be the best fit for each.
Err codemadness.org 70 i 40673Err codemadness.org 70 i 40676 Err codemadness.org 70 i 40677Five years ago I wrote about using a yubikey on OpenBSD. The only problem with doing this is that there’s no validation server available on OpenBSD, so you need to use a different OTP slot for each machine. (You don’t want to risk a replay attack if someone succeeds in capturing an OTP on one machine, right?) Yubikey has two OTP slots per device, so you would need a yubikey for every two machines with which you’d like to use it. You could use a bastion—and use only one yubikey—but I don’t like the SPOF aspect of a bastion. YMMV.
Err codemadness.org 70 i 40675
Err codemadness.org 70 i 40674 After I played with TOTP, I wanted to use them as a 2FA for ssh. At the time of writing, we can’t do that using only the tools in base. This article focuses on OpenBSD; if you use another operating system, here are two handy links.
Err codemadness.org 70 i 40682Err codemadness.org 70 i 40684 Err codemadness.org 70 i 40685The first thing we need to do is to install the software which will be used to verify the OTPs we submit.
Err codemadness.org 70 i 40683
# pkg_add login_oath
Err codemadness.org 70 i 40688Err codemadness.org 70 i 40690 Err codemadness.org 70 i 40691We need to create a secret - aka, the seed - that will be used to calculate the Time-based One-Time Passwords. We should make sure no one can read or change it.
Err codemadness.org 70 i 40689
$ openssl rand -hex 20 > ~/.totp-key
Err codemadness.org 70
i 40692 $ chmod 400 ~/.totp-key
Err codemadness.org 70 i 40695Err codemadness.org 70 i 40699 Err codemadness.org 70 i 40700Now we have a hexadecimal key, but apps usually want a base32 secret. I initially wrote a small script to do the conversion.
Err codemadness.org 70 i 40698
Err codemadness.org 70 i 40696 While writing this article, I took the opportunity to improve it. When I initially wrote this utility for my use, python-qrcode hadn’t yet been imported to the OpenBSD ports/packages system. It’s easy to install now, so let’s use it.
Err codemadness.org 70 i 40697 Here’s the improved version. It will ask for the hex key and output the secret as a base32-encoded string, both with and without spacing so you can copy-paste it into your password manager or easily retype it. It will then ask for the information needed to generate a QR code. Adding our new OTP secret to any mobile app using the QR code will be super easy!
Err codemadness.org 70 i 40705Err codemadness.org 70 i 40708 Err codemadness.org 70 i 40709We can now move to the configuration of the system to put our new TOTP to use. As you might guess, it’s going to be quite close to what we did with the yubikey.
Err codemadness.org 70 i 40707
Err codemadness.org 70 i 40706 We need to tweak login.conf. Be careful and keep a root shell open at all times. The few times I broke my OpenBSD were because I messed with login.conf without showing enough care.
Err codemadness.org 70 i 40714Err codemadness.org 70 i 40720 Err codemadness.org 70 i 40721Again, keeping a root shell around decreases the risk of losing access to the system and being locked outside.
Err codemadness.org 70 i 40719
Err codemadness.org 70 i 40715 A good standard is to use PasswordAuthentication no and to use public key only. Except… have a guess what the P stands for in TOTP. Yes, congrats, you guessed it!
Err codemadness.org 70 i 40716 We need to switch to PasswordAuthentication yes. However, if we made this change alone, sshd would then accept a public key OR a password (which are TOTP because of our login.conf). 2FA uses both at the same time.
Err codemadness.org 70 i 40717 To inform sshd we intend to use both, we need to set AuthenticationMethods publickey,password. This way, the user trying to login will first need to perform the traditional publickey authentication. Once that’s done, ssh will prompt for a password and the user will need to submit a valid TOTP for the system.
Err codemadness.org 70 i 40718 We could do this the other way around, but I think bots could try passwords, wasting resources. Evaluated in this order, failing to provide a public key leads to sshd immediately declining your attempt.
Err codemadness.org 70 i 40726Err codemadness.org 70 i 40730 Err codemadness.org 70 i 40731My phone has a long enough password that most of the time, I fail to type it correctly on the first try. Of course, if I had to unlock my phone, launch my TOTP app and use my keyboard to enter what I see on my phone’s screen, I would quickly disable 2FA.
Err codemadness.org 70 i 40729
Err codemadness.org 70 i 40727 To find a balance, I have whitelisted certain IP addresses and users. If I connect from a particular IP address or as a specific user, I don’t want to go through 2FA. For some users, I might not even enable 2FA.
Err codemadness.org 70 i 40728 To sum up, we covered how to create a seed, how to perform a hexadecimal to base32 conversion and how to create a QR code for mobile applications. We configured the login system with login.conf so that ssh authentication uses the TOTP login system, and we told sshd to ask for both the public key and the Time-based One-Time Password. Now you should be all set to use two-factor ssh authentication on OpenBSD!
##News Roundup
Err codemadness.org 70
i 40734 ###How ZFS maintains file type information in directories
Err codemadness.org 70 i 40737Err codemadness.org 70 i 40740 Err codemadness.org 70 i 40741As an aside in yesterday’s history of file type information being available in Unix directories, I mentioned that it was possible for a filesystem to support this even though its Unix didn’t. By supporting it, I mean that the filesystem maintains this information in its on disk format for directories, even though the rest of the kernel will never ask for it. This is what ZFS does.
Err codemadness.org 70 i 40739
Err codemadness.org 70 i 40738 The easiest way to see that ZFS does this is to use zdb to dump a directory. I’m going to do this on an OmniOS machine, to make it more convincing, and it turns out that this has some interesting results. Since this is OmniOS, we don’t have the convenience of just naming a directory in zdb, so let’s find the root directory of a filesystem, starting from dnode 1 (as seen before).
# zdb -dddd fs3-corestaff-01/h/281 1
Err codemadness.org 70
i 40742 Dataset [....]
Err codemadness.org 70
i 40743 [...]
Err codemadness.org 70
i 40744 microzap: 512 bytes, 4 entries
Err codemadness.org 70
i 40745 [...]
Err codemadness.org 70
i 40746 ROOT = 3
Err codemadness.org 70
i 40747
Err codemadness.org 70
i 40748 # zdb -dddd fs3-corestaff-01/h/281 3
Err codemadness.org 70
i 40749 Object lvl iblk dblk dsize lsize %full type
Err codemadness.org 70
i 40750 3 1 16K 1K 8K 1K 100.00 ZFS directory
Err codemadness.org 70
i 40751 [...]
Err codemadness.org 70
i 40752 microzap: 1024 bytes, 8 entries
Err codemadness.org 70
i 40753
Err codemadness.org 70
i 40754 RESTORED = 4396504 (type: Directory)
Err codemadness.org 70
i 40755 ckstst = 12017 (type: not specified)
Err codemadness.org 70
i 40756 ckstst3 = 25069 (type: Directory)
Err codemadness.org 70
i 40757 .demo-file = 5832188 (type: Regular File)
Err codemadness.org 70
i 40758 .peergroup = 12590 (type: not specified)
Err codemadness.org 70
i 40759 cks = 5 (type: not specified)
Err codemadness.org 70
i 40760 cksimap1 = 5247832 (type: Directory)
Err codemadness.org 70
i 40761 .diskuse = 12016 (type: not specified)
Err codemadness.org 70
i 40762 ckstst2 = 12535 (type: not specified)
Err codemadness.org 70 i 40765Err codemadness.org 70 i 40769 Err codemadness.org 70 i 40770This is actually an old filesystem (it dates from Solaris 10 and has been transferred around with ‘zfs send | zfs recv’ since then), but various home directories for real and test users have been created in it over time (you can probably guess which one is the oldest one). Sufficiently old directories and files have no file type information, but more recent ones have this information, including .demo-file, which I made just now so this would have an entry that was a regular file with type information.
Err codemadness.org 70 i 40768
Err codemadness.org 70 i 40766 Once I dug into it, this turned out to be a change introduced (or activated) in ZFS filesystem version 2, which is described in ‘zfs upgrade -v’ as ‘enhanced directory entries’. As an actual change in (Open)Solaris, it dates from mid 2007, although I’m not sure what Solaris release it made it into. The upshot is that if you made your ZFS filesystem any time in the last decade, you’ll have this file type information in your directories.
Err codemadness.org 70 i 40767 How ZFS stores this file type information is interesting and clever, especially when it comes to backwards compatibility. I’ll start by quoting the comment from zfs_znode.h:
/*
Err codemadness.org 70
i 40771 * The directory entry has the type (currently unused on
Err codemadness.org 70
i 40772 * Solaris) in the top 4 bits, and the object number in
Err codemadness.org 70
i 40773 * the low 48 bits. The "middle" 12 bits are unused.
Err codemadness.org 70
i 40774 */
Err codemadness.org 70 i 40777Err codemadness.org 70 i 40780 Err codemadness.org 70 i 40781In yesterday’s entry I said that Unix directory entries need to store at least the filename and the inode number of the file. What ZFS is doing here is reusing the 64 bit field used for the ‘inode’ (the ZFS dnode number) to also store the file type, because it knows that object numbers have only a limited range. This also makes old directory entries compatible, by making type 0 (all 4 bits 0) mean ‘not specified’. Since old directory entries only stored the object number and the object number is 48 bits or less, the higher bits are guaranteed to be all zero.
Err codemadness.org 70 i 40779
Err codemadness.org 70 i 40778 The reason this needed a new ZFS filesystem version is now clear. If you tried to read directory entries with file type information on a version of ZFS that didn’t know about them, the old version would likely see crazy (and non-existent) object numbers and nothing would work. In order to even read a ‘file type in directory entries’ filesystem, you need to know to only look at the low 48 bits of the object number field in directory entries.
###Everything old is new again
Err codemadness.org 70 i 40784 Err codemadness.org 70 i 40785Err codemadness.org 70 i 40786Err codemadness.org 70 i 40791 Err codemadness.org 70 i 40792Just because KDE4-era software has been deprecated by the KDE-FreeBSD team in the official ports-repository, doesn’t mean we don’t care for it while we still need to. KDE4 was released on January 11th, 2008 — I still have the T-shirt — which was a very different C++ world than what we now live in. Much of the code pre-dates the availability of C11 — certainly the availability of compilers with C11 support. The language has changed a great deal in those ten years since the original release.
Err codemadness.org 70 i 40790
Err codemadness.org 70 i 40787 The platforms we run KDE code on have, too — FreeBSD 12 is a long way from the FreeBSD 6 or 7 that were current at release (although at the time, I was more into OpenSolaris). In particular, since then the FreeBSD world has switched over to Clang, and FreeBSD current is experimenting with Clang 7. So we’re seeing KDE4-era code being built, and running, on FreeBSD 12 with Clang 7. That’s a platform with a very different idea of what constitutes correct code, than what the code was originally written for. (Not quite as big a difference as Helio’s KDE1 efforts, though)
Err codemadness.org 70 i 40788 So, while we’re counting down to removing KDE4 from the FreeBSD ports tree, we’re also going through and fixing it to work with Clang 7, which defaults to a newer C++ standard and which is quite picky about some things. Some time in the distant past, when pointers were integers and NULL was zero, there was some confusion about booleans. So there’s lots of code that does list.contains(element) > 0 … this must have been a trick before booleans were a supported type in all our compilers. In any case it breaks with Clang 7, since contains() returns a QBool which converts to a nullptr (when false) which isn’t comparable to the integer 0. Suffice to say I’ve spent more time reading KDE4-era code this month, than in the past two years.
Err codemadness.org 70 i 40789 However, work is proceeding apace, so if you really really want to, you can still get your old-school kicks on a new platform. Because we care about packaging things right, even when we want to get rid of it.
Err codemadness.org 70 i 40797Err codemadness.org 70 i 40799 Err codemadness.org 70 i 40800Owing to its versatile functionalities, netcat earns the reputation as “TCP/IP Swiss army knife”. For example, you can create a simple chat app using netcat:
Err codemadness.org 70 i 40798
# nc -l 3003
Err codemadness.org 70 i 40807Err codemadness.org 70 i 40809 Err codemadness.org 70 i 40810This means a netcat process will listen on 3003 port in this machine (the IP address of current machine is 192.168.35.176).
Err codemadness.org 70 i 40808
# nc 192.168.35.176 3003
Err codemadness.org 70
i 40815 hello
Err codemadness.org 70 i 40818Err codemadness.org 70 i 40820 Err codemadness.org 70 i 40821Then in the first machine’s terminal, you will see the “hello” text:
Err codemadness.org 70 i 40819
# nc -l 3003
Err codemadness.org 70
i 40822 hello
Err codemadness.org 70 i 40825Err codemadness.org 70 i 40829 Err codemadness.org 70 i 40830A primitive chatroom is built successfully. Very cool! Isn’t it? I think many people can’t wait to explore more features of netcatnow. If you are among them, congratulations! This tutorial may be the correct place for you.
Err codemadness.org 70 i 40828
Err codemadness.org 70 i 40826 In the following parts, I will delve into OpenBSD’s netcatcode to give a detailed anatomy of it. The reason of picking OpenBSD’s netcat rather than others’ is because its code repository is small (~2000 lines of code) and neat. Furthermore, I also hope this little book can assist you learn more socket programming knowledge not just grasping usage of netcat.
Err codemadness.org 70 i 40827 We’re all set. Let’s go!
##Beastie Bits
Err codemadness.org 70 i 40833 Err codemadness.org 70 i 40834##Feedback/Questions
Err codemadness.org 70 i 40846 Err codemadness.org 70 i 40847##Headlines
Err codemadness.org 70
i 40913 ##Interview - Michael W. Lucas - mwlucas@michaelwlucas.com / @mwlauthor
Auction at https://mwl.io
Err codemadness.org 70
i 40927 Patreon Link:
##Feedback/Questions
Err codemadness.org 70 i 40932 Err codemadness.org 70 i 40933##Headlines
Err codemadness.org 70
i 40951 ##Interview - Michael W. Lucas - mwlucas@michaelwlucas.com / @mwlauthor
Auction at https://mwl.io
Err codemadness.org 70
i 40965 Patreon Link:
##Feedback/Questions
Err codemadness.org 70 i 40970 Err codemadness.org 70 i 40971##Headlines
Err codemadness.org 70
i 41168 ###OpenBSD/NetBSD on FreeBSD using grub2-bhyve
Err codemadness.org 70 i 41171Err codemadness.org 70 i 41174 Err codemadness.org 70 i 41175When I was writing a blog post about the process title, I needed a couple of virtual machines with OpenBSD, NetBSD, and Ubuntu. Before that day I mainly used FreeBSD and Windows with bhyve. I spent some time trying to set up an OpenBSD using bhyve and UEFI as described here. I had numerous problems trying to use it, and this was the day I discovered the grub2-bhyve tool, and I love it!
Err codemadness.org 70 i 41173
Err codemadness.org 70 i 41172 The grub2-bhyve allows you to load a kernel using GRUB bootloader. GRUB supports most of the operating systems with a standard configuration, so exactly the same method can be used to install NetBSD or Ubuntu. First, let’s install grub2-bhyve on our FreeBSD box:
# pkg install grub2-bhyve
Err codemadness.org 70 i 41178Err codemadness.org 70 i 41180 Err codemadness.org 70 i 41181To run grub2-bhyve we need to provide at least the name of the VM. In bhyve, if the memsize is not specified the default VM is created with 256MB of the memory.
Err codemadness.org 70 i 41179
# grub-bhyve test
Err codemadness.org 70
i 41182 GNU GRUB version 2.00
Err codemadness.org 70
i 41183 Minimal BASH-like line editing is supported. For the first word, TAB lists possible command
Err codemadness.org 70
i 41184 completions. Anywhere else TAB lists possible device or file completions.
Err codemadness.org 70
i 41185
Err codemadness.org 70
i 41186
Err codemadness.org 70
i 41187 grub>
Err codemadness.org 70 i 41190Err codemadness.org 70 i 41192 Err codemadness.org 70 i 41193After running grub-bhyve command we will enter the GRUB loader. If we type the ls command, we will see all the available devices. In the case of the grub2-bhyve there is one additional device called “(host)” that is always available and allows the host filesystem to be accessed. We can list files under that device.
Err codemadness.org 70 i 41191
grub> ls
Err codemadness.org 70
i 41194 (host)
Err codemadness.org 70
i 41195 grub> ls (host)/
Err codemadness.org 70
i 41196 libexec/ bin/ usr/ bhyve/ compat/ tank/ etc/ boot/ net/ entropy proc/ lib/ root/ sys/ mnt/ rescue/ tmp/ home/ sbin/ media/ jail/ COPYRIGHT var/ dev/
Err codemadness.org 70
i 41197 grub>
Err codemadness.org 70 i 41200Err codemadness.org 70 i 41202 Err codemadness.org 70 i 41203To exit console simply type ‘reboot’. I would like to install my new operating system under a ZVOL
Err codemadness.org 70 i 41201ztank/bhyve/post. On another terminal, we create:
# zfs create -V 10G ztank/bhyve/post
Err codemadness.org 70 i 41206Err codemadness.org 70 i 41208 Err codemadness.org 70 i 41209If you don’t use ZFS for some crazy reason you can also create a raw blob using the truncate(1) command.
Err codemadness.org 70 i 41207
# truncate -s 10G post.img
Err codemadness.org 70 i 41212Err codemadness.org 70 i 41214 Err codemadness.org 70 i 41215I recommend installing an operating system from the disk image (installXX.fs for OpenBSD and NetBSD-X.X-amd64-install.img for NetBSD). Now we need to create a device map for a GRUB.
Err codemadness.org 70 i 41213
cat > /tmp/post.map << EOF
Err codemadness.org 70
i 41216 (hd0) /directory/to/disk/image
Err codemadness.org 70
i 41217 (hd1) /dev/zvol/ztank/bhyve/post
Err codemadness.org 70
i 41218 EOF
Err codemadness.org 70 i 41221Err codemadness.org 70 i 41223 Err codemadness.org 70 i 41224The mapping files describe the names for files in the GRUB. In our case under hd0 we will have an installation image and in hd1 we will have our ZVOL/blob. You can also try to use an ISO image then instead of using hd0 device name use a cd0. When we will run the grub-bhyve command we will see two additional devices.
Err codemadness.org 70 i 41222
# grub-bhyve -m /tmp/post.map post
Err codemadness.org 70
i 41225 grub> ls
Err codemadness.org 70
i 41226 (hd0) (hd0,msdos4) (hd0,msdos1) (hd0,openbsd9) (hd0,openbsd1) (hd1) (host)
Err codemadness.org 70 i 41229Err codemadness.org 70 i 41231 Err codemadness.org 70 i 41232The hd0 (in this example OpenBSD image) contains multiple partitions. We can check what is on it.
Err codemadness.org 70 i 41230
grub> ls (hd0,msdos4)/
Err codemadness.org 70
i 41233 boot bsd 6.4/ etc/
Err codemadness.org 70 i 41236Err codemadness.org 70 i 41238 Err codemadness.org 70 i 41239And this is the partition that contains a kernel. Now we can set a root device, load an OpenBSD kernel and boot:
Err codemadness.org 70 i 41237
grub> set root=(hd0,msdos4)
Err codemadness.org 70
i 41240 grub> kopenbsd -h com0 -r sd0a /bsd
Err codemadness.org 70
i 41241 grub> boot
Err codemadness.org 70 i 41244Err codemadness.org 70 i 41246 Err codemadness.org 70 i 41247After that, we can run bhyve virtual machine. In my case it is:
Err codemadness.org 70 i 41245
# bhyve -c 1 -w -u -H \
Err codemadness.org 70
i 41248 -s 0,amd_hostbridge \
Err codemadness.org 70
i 41249 -s 3,ahci-hd,/directory/to/disk/image \
Err codemadness.org 70
i 41250 -s 4,ahci-hd,/dev/zvol/ztank/bhyve/post \
Err codemadness.org 70
i 41251 -s 31,lpc -l com1,stdio \
Err codemadness.org 70
i 41252 post
Err codemadness.org 70 i 41255Err codemadness.org 70 i 41257 Err codemadness.org 70 i 41258Unfortunately explaining the whole bhyve(8) command line is beyond this article. After installing the operating system remove hd0 from the mapping file and the image from the bhyve(8) command. If you don’t want to type all those GRUB commands, you can simply redirect them to the standard input.
Err codemadness.org 70 i 41256
cat << EOF | grub-bhyve -m /tmp/post.map -M 512 post
Err codemadness.org 70
i 41259 set root=(hd0,4)
Err codemadness.org 70
i 41260 kopenbsd -h com0 -r sd0a /bsd
Err codemadness.org 70
i 41261 boot
Err codemadness.org 70
i 41262 EOF
Err codemadness.org 70 i 41269Err codemadness.org 70 i 41283 Err codemadness.org 70 i 41284My first devices/computers/consoles (not at the same time) that I remember were Atari 2600 and Pegasus console which was hardware clone of the Nintendo NES.
Err codemadness.org 70 i 41282
Err codemadness.org 70 i 41270 Back then I did not even knew that it was Atari 2600 as I referred to it as Video Computer System … and I did not even knew any english by then. It took me about two decades to get to know (by accident) that this Video Computer System was Atari 2600
Err codemadness.org 70 i 41271 Then I got AMIGA 600 computer (or should I say my parents bought it for me) which served both for playing computer games and also other activities for the first time. AMIGA is the computer that had the greatest influence on me, as it was the first time I studied the books about Amiga Workbench operating system and learned commands from Amiga Shell terminal. I loved the idea of Ram Disk icon/directory on the desktop that allowed me to transparently put any things in system memory. I still miss that concept on today’s desktop systems … and I still remember how dismal I was when I watched Amiga Deathbed Vigil movie.
Err codemadness.org 70 i 41272 At the end of 1998 I got my first PC that of course came with Windows and that computer served both as gaming machine and as well as typical tool. One time I dig into the internals with Windows Registry (which left me disgusted by its concepts and implementation) and its limited command line interface provided by CMD.EXE executable. I remember that the heart of this box was not the CPU or the motherboard but the graphics accelerator – the legendary 3Dfx Voodoo card. This company (3Dfx) – their attitude and philosophy – also left solid fingerprint on my way. Like AMIGA did.
Err codemadness.org 70 i 41273 After ‘migration’ from AMIGA to PC it never again ‘felt right’. The games were cool but the Windows system was horrible. Time has passed and different Windows versions and hardware modifications took place. Windows XP felt really heavy at that time, not to mention Windows 2000 for example with even bigger hardware requirements. I also do not understand all the hate about Windows ME. It crashed with the same frequency as Windows 98 or later Windows 98 Second Edition but maybe my hardware was different ??
Err codemadness.org 70 i 41274 I do not have any ‘mine’ screenshots from that period as I lost all my 40 GB (huge then) drive of data when I moved/resized the partition with Partition Magic to get some more space from the less filled C: drive. That day I learned hard that “there are people who do backups and people who will do backups”. I never lost data again as I had multiple copies of my data, but the same as Netheril fall the lost data was was gone forever.
Err codemadness.org 70 i 41275 I always followed various alternatives which led me to try Linux in 2003, after reading about various distributions philosophies I decided to run Slackware Linux with KDE 3. My buddy used Aurox Linux by then (one of the few Linux distributions from Poland) and encouraged me to do the same – especially in the context of fixing possible problems as he already knew it and also as he recently dumped Windows system. But Slackware sounded like a better idea so I took that path instead. At first I dual booted between Windows XP and Slackware Linux cause I had everything worked out on the Windows world while I often felt helpless in the Linux world, so I would reboot into Windows to play some games or find a solution for Linux problem if that was required. I remember how strange the concept of dual clipboards (PRIMARY and SECONDARY) was for me by then. I was amazed why ‘so much better’ system as Linux (at least marketed that way) needs a system tray program to literally manage the clipboard. On Windows it was obvious, you do [CTRL]+[C] to copy and [CTRL]+[V] to paste things, but on Linux there (no I know its X11 feature) there were two clipboards that were synchronized by this little system tray program from KDE 3. It was also unthinkable for me that I will ‘lost’ contents of last/recent [CTRL]+[C] operation if I close the application from which the copy was made. I settled down a little on Slackware but not for long. I really did not liked manual dependency management for packages for example. Also KDE 3 was really ugly and despite trying all possible options I was not able to tweak it into something nice looking.
Err codemadness.org 70 i 41276 After half a year on Slackware I checked the Linux distributions again and decided to try Gentoo Linux. I definitely agree with the image below which visualizes Gentoo Linux experience, especially when You install it for he first time ??
Err codemadness.org 70 i 41277 Of course I went with the most hardcore version with self building Stage 1 (compiler and toolchain) which was horrible idea at that time because compilation on slow single core machine took forever … but after many hours I got Gentoo installed. I now have to decide which desktop environment to use. I have read a lot of good news about Fluxbox at that time so this is what I tried. It was very weird experience (to create everything in GUI from scratch) but very pleasant one. That recalled me the times of AMIGA … but Linux came in the way too much often. The more I dig into Gentoo Linux the more I read that lots of Gentoo features are based on FreeBSD solutions. Gentoo Portage is a clone of FreeBSD Ports. That ‘central’ /etc/rc.conf system configuration file concept was taken from FreeBSD as well. So I started to gather information about FreeBSD. The (then) FreeBSD website or FreeBSD Ports site (still) felt little outdated to say the least but that did not discouraged me.
Err codemadness.org 70 i 41278 Somewhere in 2005 I installed FreeBSD 5.4 on my computer. The beginnings were hard, like the earlier step with Gentoo but similarly like Gentoo the FreeBSD project came with a lot of great documentation. While Gentoo documentation is concentrated within various Gentoo Wiki sites the FreeBSD project comes with ‘official’ documentation in the form of Handbook and FAQ. I remember my first questions at the now nonexistent BSDForums.org site – for example one of the first ones – how to scroll the terminal output in the plain console. I now know that I had to push Scroll Lock button but it was something totally new for me.
Err codemadness.org 70 i 41279 Why FreeBSD and not OpenBSD or NetBSD? Probably because Gentoo based most their concepts on the FreeBSD solutions, so that led me to FreeBSD instead of the other BSD operating systems. Currently I still use FreeBSD but I keep an steady eye on the OpenBSD, HardenedBSD and DragonFly BSD solutions and improvements.
Err codemadness.org 70 i 41280 As the migration path from Linux to FreeBSD is a lot easier – all configuration files from /home can be just copied – the migration was quite fast easy. I again had the Fluxbox configuration which I used on the Gentoo. Now – on FreeBSD – it started to fell even more like AMIGA times. Everything is/has been well thought and had its place and reason. The documentation was good and the FreeBSD Community was second to none.
Err codemadness.org 70 i 41281 After 15 years of using various Windows, UNIX (macOS/AIX/HP-UX/Solaris/OpenSolaris/Illumos/FreeBSD/OpenBSD/NetBSD) and UNIX-like (Linux) systems I always come to conclusion that FreeBSD is the system that sucks least. And sucks least with each release and one day I will write why FreeBSD is such great operating system … if I already haven’t
##News Roundup
Err codemadness.org 70
i 41287 ###OpenBSD on the Desktop: some thoughts
Err codemadness.org 70 i 41290Err codemadness.org 70 i 41300 Err codemadness.org 70 i 41301I’ve been using OpenBSD on my ThinkPad X230 for some weeks now, and the experience has been peculiar in some ways.
Err codemadness.org 70 i 41299
Err codemadness.org 70 i 41291 The OS itself in my opinion is not ready for widespread desktop usage, and the development team is not trying to push it in the throat of anybody who wants a Windows or macOS alternative. You need to understand a little bit of how *NIX systems work, because you’ll use CLI more than UI. That’s not necessarily bad, and I’m sure I learned a trick or two that could translate easily to Linux or macOS. Their development process is purely based on developers that love to contribute and hack around, just because it’s fun. Even the mailing list is a cool place to hang on! Code correctness and security are a must, nothing gets committed if it doesn’t get reviewed thoroughly first - nowadays the first two properties should be enforced in every major operating system.
Err codemadness.org 70 i 41292 I like the idea of a platform that continually evolves. pledge(2) and unveil(2) are the proof that with a little effort, you can secure existing software better than ever.
Err codemadness.org 70 i 41293 I like the “sensible defaults” approach, having an OS ready to be used - UI included if you selected it during the setup process - is great.
Err codemadness.org 70 i 41294 Just install a browser and you’re ready to go.
Err codemadness.org 70 i 41295 Manual pages on OpenBSD are real manuals, not an extension of the “–help” command found in most CLI softwares. They help you understand inner workings of the operating system, no internet connection needed. There are some trade-offs, too.
Err codemadness.org 70 i 41296 Performance is not first-class, mostly because of all the security mitigations and checks done at runtime.
Err codemadness.org 70 i 41297 I write Go code in neovim, and sometimes you can feel a slight slowdown when you’re compiling and editing multiple files at the same time, but usually I can’t notice any meaningful difference. Browsers are a different matter though, you can definitely feel something differs from the experience you can have on mainstream operating systems. But again, trade-offs.
Err codemadness.org 70 i 41298 To use OpenBSD on the desktop you must be ready to sacrifice some of the goodies of mainstream OSes, but if you’re searching for a zen place to do your computing stuff, it’s the best you can get right now.
###The history of file type information being available in Unix directories
Err codemadness.org 70 i 41304 Err codemadness.org 70 i 41305Err codemadness.org 70 i 41306Err codemadness.org 70 i 41318 Err codemadness.org 70 i 41319The two things that Unix directory entries absolutely have to have are the name of the directory entry and its ‘inode’, by which we generically mean some stable kernel identifier for the file that will persist if it gets renamed, linked to other directories, and so on. Unsurprisingly, directory entries have had these since the days when you read the raw bytes of directories with read(), and for a long time that was all they had; if you wanted more than the name and the inode number, you had to stat() the file, not just read the directory. Then, well, I’ll quote myself from an old entry on a find optimization:
Err codemadness.org 70 i 41317
Err codemadness.org 70 i 41307 […], Unix filesystem developers realized that it was very common for programs reading directories to need to know a bit more about directory entries than just their names, especially their file types (find is the obvious case, but also consider things like ‘ls -F’). Given that the type of an active inode never changes, it’s possible to embed this information straight in the directory entry and then return this to user level, and that’s what developers did; on some systems, readdir(3) will now return directory entries with an additional d_type field that has the directory entry’s type.
Err codemadness.org 70 i 41308 On Twitter, I recently grumbled about Illumos not having this d_type field. The ensuing conversation wound up with me curious about exactly where d_type came from and how far back it went. The answer turns out to be a bit surprising due to there being two sides of d_type.
Err codemadness.org 70 i 41309 On the kernel side, d_type appears to have shown up in 4.4 BSD. The 4.4 BSD /usr/src/sys/dirent.h has a struct dirent that has a d_type field, but the field isn’t documented in either the comments in the file or in the getdirentries(2) manpage; both of those admit only to the traditional BSD dirent fields. This 4.4 BSD d_type was carried through to things that inherited from 4.4 BSD (Lite), specifically FreeBSD, but it continued to be undocumented for at least a while.
Err codemadness.org 70 i 41310 (In FreeBSD, the most convenient history I can find is here, and the d_type field is present in sys/dirent.h as far back as FreeBSD 2.0, which seems to be as far as the repo goes for releases.)
Err codemadness.org 70 i 41311 Documentation for d_type appeared in the getdirentries(2) manpage in FreeBSD 2.2.0, where the manpage itself claims to have been updated on May 3rd 1995 (cf). In FreeBSD, this appears to have been part of merging 4.4 BSD ‘Lite2’, which seems to have been done in 1997. I stumbled over a repo of UCB BSD commit history, and in it the documentation appears in this May 3rd 1995 change, which at least has the same date. It appears that FreeBSD 2.2.0 was released some time in 1997, which is when this would have appeared in an official release.
Err codemadness.org 70 i 41312 In Linux, it seems that a dirent structure with a d_type member appeared only just before 2.4.0, which was released at the start of 2001. Linux took this long because the d_type field only appeared in the 64-bit ‘large file support’ version of the dirent structure, and so was only return by the new 64-bit getdents64() system call. This would have been a few years after FreeBSD officially documented d_type, and probably many years after it was actually available if you peeked at the structure definition.
Err codemadness.org 70 i 41313 As far as I can tell, d_type is present on Linux, FreeBSD, OpenBSD, NetBSD, Dragonfly BSD, and Darwin (aka MacOS or OS X). It’s not present on Solaris and thus Illumos. As far as other commercial Unixes go, you’re on your own; all the links to manpages for things like AIX from my old entry on the remaining Unixes appear to have rotted away.
Err codemadness.org 70 i 41314 Sidebar: The filesystem also matters on modern Unixes
Err codemadness.org 70 i 41315 Even if your Unix supports d_type in directory entries, it doesn’t mean that it’s supported by the filesystem of any specific directory. As far as I know, every Unix with d_type support has support for it in their normal local filesystems, but it’s not guaranteed to be in all filesystems, especially non-Unix ones like FAT32. Your code should always be prepared to deal with a file type of DT_UNKNOWN.
Err codemadness.org 70 i 41316 It’s also possible to have things the other way around, where you have a filesystem with support for file type information in directories that’s on a Unix that doesn’t support it. There are a number of plausible reasons for this to happen, but they’re either obvious or beyond the scope of this entry.
###Multiboot Pinebook KDE neon
Err codemadness.org 70 i 41322 Err codemadness.org 70 i 41323Err codemadness.org 70 i 41324Err codemadness.org 70 i 41332 Err codemadness.org 70 i 41333Recently a KDE neon image for the Pinebook was announced. There is a new image, with a handful of fixes, which the KDE Plasma team has been working on over the past week and a half.
Err codemadness.org 70 i 41331
Err codemadness.org 70 i 41325 Here’s a picture of my Pinebook running KDE neon — watching Panic! At the Disco’s High Hopes — sitting in front of my monitor that’s hooked up to one of my openSUSE systems. There are still some errata, and watching video sucks up battery, but for hacking on documentation from my hammock in the garden, or doing IRC meetings it’s a really nice machine.
Err codemadness.org 70 i 41326 But one of the neat things about running KDE neon off of an SD card on the Pinebook is that it’s portable — that SD card can move around. So let’s talk about multiboot in the sense of “booting the same OS storage medium in different hardware units” rather than “booting different OS from a medium in a single hardware unit”. On these little ARM boards, u-boot does all the heavy lifting early in the boot process. So to re-use the KDE neon Pinebook image on another ARM board, the u-boot blocks need to be replaced.
Err codemadness.org 70 i 41327 I have the u-boot from a Pine64 image (I forget what) lying around, 1015 blocks of 1024 bytes, which I can dd over the u-boot blocks on the SD card, dd bs=1k conv=notrunc,sync if=uboot.img of=/dev/da0 seek=8, and then the same SD card, with the filesystem and data from the Pinebook, will boot on the Pine64 board. Of course, to move the SD card back again, I need to restore the Pinebook u-boot blocks.
Err codemadness.org 70 i 41328 Here’s a picture of my Pineboard (the base is a piece of the garden fence, it’s Douglas pine, with 4mm threaded rods acting as the corner posts for my Pine64 mini-rack), with power and network and a serial console attached, along with the serial console output of the same.
Err codemadness.org 70 i 41329 The nice thing here is that the same software stack runs on the Pine64 but then has a wired network — which in turn means that if I switch on the other boards in that mini-rack, I’ve got a distcc-capable cluster for fast development, and vast NFS storage (served from ZFS on my FreeBSD machines) for source. I can develop in a high(er) powered environment, and then swap the card around into the Pinebook for testing-on-the-go.
Err codemadness.org 70 i 41330 So to sum up: you can multiboot the KDE neon Pinebook image on other Pine64 hardware (i.e. the Pine64 board). To do so, you need to swap around u-boot blocks. The blocks can be picked out of an image built for each board, and then a particular image (e.g. the latest KDE neon Pinebook) can be run on either board.
##Beastie Bits
Err codemadness.org 70 i 41336 Err codemadness.org 70 i 41337##Feedback/Questions
Err codemadness.org 70 i 41353 Err codemadness.org 70 i 41354##Headlines
Err codemadness.org 70
i 41373 ###OpenBSD/NetBSD on FreeBSD using grub2-bhyve
Err codemadness.org 70 i 41376Err codemadness.org 70 i 41379 Err codemadness.org 70 i 41380When I was writing a blog post about the process title, I needed a couple of virtual machines with OpenBSD, NetBSD, and Ubuntu. Before that day I mainly used FreeBSD and Windows with bhyve. I spent some time trying to set up an OpenBSD using bhyve and UEFI as described here. I had numerous problems trying to use it, and this was the day I discovered the grub2-bhyve tool, and I love it!
Err codemadness.org 70 i 41378
Err codemadness.org 70 i 41377 The grub2-bhyve allows you to load a kernel using GRUB bootloader. GRUB supports most of the operating systems with a standard configuration, so exactly the same method can be used to install NetBSD or Ubuntu. First, let’s install grub2-bhyve on our FreeBSD box:
# pkg install grub2-bhyve
Err codemadness.org 70 i 41383Err codemadness.org 70 i 41385 Err codemadness.org 70 i 41386To run grub2-bhyve we need to provide at least the name of the VM. In bhyve, if the memsize is not specified the default VM is created with 256MB of the memory.
Err codemadness.org 70 i 41384
# grub-bhyve test
Err codemadness.org 70
i 41387 GNU GRUB version 2.00
Err codemadness.org 70
i 41388 Minimal BASH-like line editing is supported. For the first word, TAB lists possible command
Err codemadness.org 70
i 41389 completions. Anywhere else TAB lists possible device or file completions.
Err codemadness.org 70
i 41390
Err codemadness.org 70
i 41391
Err codemadness.org 70
i 41392 grub>
Err codemadness.org 70 i 41395Err codemadness.org 70 i 41397 Err codemadness.org 70 i 41398After running grub-bhyve command we will enter the GRUB loader. If we type the ls command, we will see all the available devices. In the case of the grub2-bhyve there is one additional device called “(host)” that is always available and allows the host filesystem to be accessed. We can list files under that device.
Err codemadness.org 70 i 41396
grub> ls
Err codemadness.org 70
i 41399 (host)
Err codemadness.org 70
i 41400 grub> ls (host)/
Err codemadness.org 70
i 41401 libexec/ bin/ usr/ bhyve/ compat/ tank/ etc/ boot/ net/ entropy proc/ lib/ root/ sys/ mnt/ rescue/ tmp/ home/ sbin/ media/ jail/ COPYRIGHT var/ dev/
Err codemadness.org 70
i 41402 grub>
Err codemadness.org 70 i 41405Err codemadness.org 70 i 41407 Err codemadness.org 70 i 41408To exit console simply type ‘reboot’. I would like to install my new operating system under a ZVOL
Err codemadness.org 70 i 41406ztank/bhyve/post. On another terminal, we create:
# zfs create -V 10G ztank/bhyve/post
Err codemadness.org 70 i 41411Err codemadness.org 70 i 41413 Err codemadness.org 70 i 41414If you don’t use ZFS for some crazy reason you can also create a raw blob using the truncate(1) command.
Err codemadness.org 70 i 41412
# truncate -s 10G post.img
Err codemadness.org 70 i 41417Err codemadness.org 70 i 41419 Err codemadness.org 70 i 41420I recommend installing an operating system from the disk image (installXX.fs for OpenBSD and NetBSD-X.X-amd64-install.img for NetBSD). Now we need to create a device map for a GRUB.
Err codemadness.org 70 i 41418
cat > /tmp/post.map << EOF
Err codemadness.org 70
i 41421 (hd0) /directory/to/disk/image
Err codemadness.org 70
i 41422 (hd1) /dev/zvol/ztank/bhyve/post
Err codemadness.org 70
i 41423 EOF
Err codemadness.org 70 i 41426Err codemadness.org 70 i 41428 Err codemadness.org 70 i 41429The mapping files describe the names for files in the GRUB. In our case under hd0 we will have an installation image and in hd1 we will have our ZVOL/blob. You can also try to use an ISO image then instead of using hd0 device name use a cd0. When we will run the grub-bhyve command we will see two additional devices.
Err codemadness.org 70 i 41427
# grub-bhyve -m /tmp/post.map post
Err codemadness.org 70
i 41430 grub> ls
Err codemadness.org 70
i 41431 (hd0) (hd0,msdos4) (hd0,msdos1) (hd0,openbsd9) (hd0,openbsd1) (hd1) (host)
Err codemadness.org 70 i 41434Err codemadness.org 70 i 41436 Err codemadness.org 70 i 41437The hd0 (in this example OpenBSD image) contains multiple partitions. We can check what is on it.
Err codemadness.org 70 i 41435
grub> ls (hd0,msdos4)/
Err codemadness.org 70
i 41438 boot bsd 6.4/ etc/
Err codemadness.org 70 i 41441Err codemadness.org 70 i 41443 Err codemadness.org 70 i 41444And this is the partition that contains a kernel. Now we can set a root device, load an OpenBSD kernel and boot:
Err codemadness.org 70 i 41442
grub> set root=(hd0,msdos4)
Err codemadness.org 70
i 41445 grub> kopenbsd -h com0 -r sd0a /bsd
Err codemadness.org 70
i 41446 grub> boot
Err codemadness.org 70 i 41449Err codemadness.org 70 i 41451 Err codemadness.org 70 i 41452After that, we can run bhyve virtual machine. In my case it is:
Err codemadness.org 70 i 41450
# bhyve -c 1 -w -u -H \
Err codemadness.org 70
i 41453 -s 0,amd_hostbridge \
Err codemadness.org 70
i 41454 -s 3,ahci-hd,/directory/to/disk/image \
Err codemadness.org 70
i 41455 -s 4,ahci-hd,/dev/zvol/ztank/bhyve/post \
Err codemadness.org 70
i 41456 -s 31,lpc -l com1,stdio \
Err codemadness.org 70
i 41457 post
Err codemadness.org 70 i 41460Err codemadness.org 70 i 41462 Err codemadness.org 70 i 41463Unfortunately explaining the whole bhyve(8) command line is beyond this article. After installing the operating system remove hd0 from the mapping file and the image from the bhyve(8) command. If you don’t want to type all those GRUB commands, you can simply redirect them to the standard input.
Err codemadness.org 70 i 41461
cat << EOF | grub-bhyve -m /tmp/post.map -M 512 post
Err codemadness.org 70
i 41464 set root=(hd0,4)
Err codemadness.org 70
i 41465 kopenbsd -h com0 -r sd0a /bsd
Err codemadness.org 70
i 41466 boot
Err codemadness.org 70
i 41467 EOF
Err codemadness.org 70 i 41474Err codemadness.org 70 i 41488 Err codemadness.org 70 i 41489My first devices/computers/consoles (not at the same time) that I remember were Atari 2600 and Pegasus console which was hardware clone of the Nintendo NES.
Err codemadness.org 70 i 41487
Err codemadness.org 70 i 41475 Back then I did not even knew that it was Atari 2600 as I referred to it as Video Computer System … and I did not even knew any english by then. It took me about two decades to get to know (by accident) that this Video Computer System was Atari 2600
Err codemadness.org 70 i 41476 Then I got AMIGA 600 computer (or should I say my parents bought it for me) which served both for playing computer games and also other activities for the first time. AMIGA is the computer that had the greatest influence on me, as it was the first time I studied the books about Amiga Workbench operating system and learned commands from Amiga Shell terminal. I loved the idea of Ram Disk icon/directory on the desktop that allowed me to transparently put any things in system memory. I still miss that concept on today’s desktop systems … and I still remember how dismal I was when I watched Amiga Deathbed Vigil movie.
Err codemadness.org 70 i 41477 At the end of 1998 I got my first PC that of course came with Windows and that computer served both as gaming machine and as well as typical tool. One time I dig into the internals with Windows Registry (which left me disgusted by its concepts and implementation) and its limited command line interface provided by CMD.EXE executable. I remember that the heart of this box was not the CPU or the motherboard but the graphics accelerator – the legendary 3Dfx Voodoo card. This company (3Dfx) – their attitude and philosophy – also left solid fingerprint on my way. Like AMIGA did.
Err codemadness.org 70 i 41478 After ‘migration’ from AMIGA to PC it never again ‘felt right’. The games were cool but the Windows system was horrible. Time has passed and different Windows versions and hardware modifications took place. Windows XP felt really heavy at that time, not to mention Windows 2000 for example with even bigger hardware requirements. I also do not understand all the hate about Windows ME. It crashed with the same frequency as Windows 98 or later Windows 98 Second Edition but maybe my hardware was different ??
Err codemadness.org 70 i 41479 I do not have any ‘mine’ screenshots from that period as I lost all my 40 GB (huge then) drive of data when I moved/resized the partition with Partition Magic to get some more space from the less filled C: drive. That day I learned hard that “there are people who do backups and people who will do backups”. I never lost data again as I had multiple copies of my data, but the same as Netheril fall the lost data was was gone forever.
Err codemadness.org 70 i 41480 I always followed various alternatives which led me to try Linux in 2003, after reading about various distributions philosophies I decided to run Slackware Linux with KDE 3. My buddy used Aurox Linux by then (one of the few Linux distributions from Poland) and encouraged me to do the same – especially in the context of fixing possible problems as he already knew it and also as he recently dumped Windows system. But Slackware sounded like a better idea so I took that path instead. At first I dual booted between Windows XP and Slackware Linux cause I had everything worked out on the Windows world while I often felt helpless in the Linux world, so I would reboot into Windows to play some games or find a solution for Linux problem if that was required. I remember how strange the concept of dual clipboards (PRIMARY and SECONDARY) was for me by then. I was amazed why ‘so much better’ system as Linux (at least marketed that way) needs a system tray program to literally manage the clipboard. On Windows it was obvious, you do [CTRL]+[C] to copy and [CTRL]+[V] to paste things, but on Linux there (no I know its X11 feature) there were two clipboards that were synchronized by this little system tray program from KDE 3. It was also unthinkable for me that I will ‘lost’ contents of last/recent [CTRL]+[C] operation if I close the application from which the copy was made. I settled down a little on Slackware but not for long. I really did not liked manual dependency management for packages for example. Also KDE 3 was really ugly and despite trying all possible options I was not able to tweak it into something nice looking.
Err codemadness.org 70 i 41481 After half a year on Slackware I checked the Linux distributions again and decided to try Gentoo Linux. I definitely agree with the image below which visualizes Gentoo Linux experience, especially when You install it for he first time ??
Err codemadness.org 70 i 41482 Of course I went with the most hardcore version with self building Stage 1 (compiler and toolchain) which was horrible idea at that time because compilation on slow single core machine took forever … but after many hours I got Gentoo installed. I now have to decide which desktop environment to use. I have read a lot of good news about Fluxbox at that time so this is what I tried. It was very weird experience (to create everything in GUI from scratch) but very pleasant one. That recalled me the times of AMIGA … but Linux came in the way too much often. The more I dig into Gentoo Linux the more I read that lots of Gentoo features are based on FreeBSD solutions. Gentoo Portage is a clone of FreeBSD Ports. That ‘central’ /etc/rc.conf system configuration file concept was taken from FreeBSD as well. So I started to gather information about FreeBSD. The (then) FreeBSD website or FreeBSD Ports site (still) felt little outdated to say the least but that did not discouraged me.
Err codemadness.org 70 i 41483 Somewhere in 2005 I installed FreeBSD 5.4 on my computer. The beginnings were hard, like the earlier step with Gentoo but similarly like Gentoo the FreeBSD project came with a lot of great documentation. While Gentoo documentation is concentrated within various Gentoo Wiki sites the FreeBSD project comes with ‘official’ documentation in the form of Handbook and FAQ. I remember my first questions at the now nonexistent BSDForums.org site – for example one of the first ones – how to scroll the terminal output in the plain console. I now know that I had to push Scroll Lock button but it was something totally new for me.
Err codemadness.org 70 i 41484 Why FreeBSD and not OpenBSD or NetBSD? Probably because Gentoo based most their concepts on the FreeBSD solutions, so that led me to FreeBSD instead of the other BSD operating systems. Currently I still use FreeBSD but I keep an steady eye on the OpenBSD, HardenedBSD and DragonFly BSD solutions and improvements.
Err codemadness.org 70 i 41485 As the migration path from Linux to FreeBSD is a lot easier – all configuration files from /home can be just copied – the migration was quite fast easy. I again had the Fluxbox configuration which I used on the Gentoo. Now – on FreeBSD – it started to fell even more like AMIGA times. Everything is/has been well thought and had its place and reason. The documentation was good and the FreeBSD Community was second to none.
Err codemadness.org 70 i 41486 After 15 years of using various Windows, UNIX (macOS/AIX/HP-UX/Solaris/OpenSolaris/Illumos/FreeBSD/OpenBSD/NetBSD) and UNIX-like (Linux) systems I always come to conclusion that FreeBSD is the system that sucks least. And sucks least with each release and one day I will write why FreeBSD is such great operating system … if I already haven’t
##News Roundup
Err codemadness.org 70
i 41492 ###OpenBSD on the Desktop: some thoughts
Err codemadness.org 70 i 41495Err codemadness.org 70 i 41505 Err codemadness.org 70 i 41506I’ve been using OpenBSD on my ThinkPad X230 for some weeks now, and the experience has been peculiar in some ways.
Err codemadness.org 70 i 41504
Err codemadness.org 70 i 41496 The OS itself in my opinion is not ready for widespread desktop usage, and the development team is not trying to push it in the throat of anybody who wants a Windows or macOS alternative. You need to understand a little bit of how *NIX systems work, because you’ll use CLI more than UI. That’s not necessarily bad, and I’m sure I learned a trick or two that could translate easily to Linux or macOS. Their development process is purely based on developers that love to contribute and hack around, just because it’s fun. Even the mailing list is a cool place to hang on! Code correctness and security are a must, nothing gets committed if it doesn’t get reviewed thoroughly first - nowadays the first two properties should be enforced in every major operating system.
Err codemadness.org 70 i 41497 I like the idea of a platform that continually evolves. pledge(2) and unveil(2) are the proof that with a little effort, you can secure existing software better than ever.
Err codemadness.org 70 i 41498 I like the “sensible defaults” approach, having an OS ready to be used - UI included if you selected it during the setup process - is great.
Err codemadness.org 70 i 41499 Just install a browser and you’re ready to go.
Err codemadness.org 70 i 41500 Manual pages on OpenBSD are real manuals, not an extension of the “–help” command found in most CLI softwares. They help you understand inner workings of the operating system, no internet connection needed. There are some trade-offs, too.
Err codemadness.org 70 i 41501 Performance is not first-class, mostly because of all the security mitigations and checks done at runtime.
Err codemadness.org 70 i 41502 I write Go code in neovim, and sometimes you can feel a slight slowdown when you’re compiling and editing multiple files at the same time, but usually I can’t notice any meaningful difference. Browsers are a different matter though, you can definitely feel something differs from the experience you can have on mainstream operating systems. But again, trade-offs.
Err codemadness.org 70 i 41503 To use OpenBSD on the desktop you must be ready to sacrifice some of the goodies of mainstream OSes, but if you’re searching for a zen place to do your computing stuff, it’s the best you can get right now.
###The history of file type information being available in Unix directories
Err codemadness.org 70 i 41509 Err codemadness.org 70 i 41510Err codemadness.org 70 i 41511Err codemadness.org 70 i 41523 Err codemadness.org 70 i 41524The two things that Unix directory entries absolutely have to have are the name of the directory entry and its ‘inode’, by which we generically mean some stable kernel identifier for the file that will persist if it gets renamed, linked to other directories, and so on. Unsurprisingly, directory entries have had these since the days when you read the raw bytes of directories with read(), and for a long time that was all they had; if you wanted more than the name and the inode number, you had to stat() the file, not just read the directory. Then, well, I’ll quote myself from an old entry on a find optimization:
Err codemadness.org 70 i 41522
Err codemadness.org 70 i 41512 […], Unix filesystem developers realized that it was very common for programs reading directories to need to know a bit more about directory entries than just their names, especially their file types (find is the obvious case, but also consider things like ‘ls -F’). Given that the type of an active inode never changes, it’s possible to embed this information straight in the directory entry and then return this to user level, and that’s what developers did; on some systems, readdir(3) will now return directory entries with an additional d_type field that has the directory entry’s type.
Err codemadness.org 70 i 41513 On Twitter, I recently grumbled about Illumos not having this d_type field. The ensuing conversation wound up with me curious about exactly where d_type came from and how far back it went. The answer turns out to be a bit surprising due to there being two sides of d_type.
Err codemadness.org 70 i 41514 On the kernel side, d_type appears to have shown up in 4.4 BSD. The 4.4 BSD /usr/src/sys/dirent.h has a struct dirent that has a d_type field, but the field isn’t documented in either the comments in the file or in the getdirentries(2) manpage; both of those admit only to the traditional BSD dirent fields. This 4.4 BSD d_type was carried through to things that inherited from 4.4 BSD (Lite), specifically FreeBSD, but it continued to be undocumented for at least a while.
Err codemadness.org 70 i 41515 (In FreeBSD, the most convenient history I can find is here, and the d_type field is present in sys/dirent.h as far back as FreeBSD 2.0, which seems to be as far as the repo goes for releases.)
Err codemadness.org 70 i 41516 Documentation for d_type appeared in the getdirentries(2) manpage in FreeBSD 2.2.0, where the manpage itself claims to have been updated on May 3rd 1995 (cf). In FreeBSD, this appears to have been part of merging 4.4 BSD ‘Lite2’, which seems to have been done in 1997. I stumbled over a repo of UCB BSD commit history, and in it the documentation appears in this May 3rd 1995 change, which at least has the same date. It appears that FreeBSD 2.2.0 was released some time in 1997, which is when this would have appeared in an official release.
Err codemadness.org 70 i 41517 In Linux, it seems that a dirent structure with a d_type member appeared only just before 2.4.0, which was released at the start of 2001. Linux took this long because the d_type field only appeared in the 64-bit ‘large file support’ version of the dirent structure, and so was only return by the new 64-bit getdents64() system call. This would have been a few years after FreeBSD officially documented d_type, and probably many years after it was actually available if you peeked at the structure definition.
Err codemadness.org 70 i 41518 As far as I can tell, d_type is present on Linux, FreeBSD, OpenBSD, NetBSD, Dragonfly BSD, and Darwin (aka MacOS or OS X). It’s not present on Solaris and thus Illumos. As far as other commercial Unixes go, you’re on your own; all the links to manpages for things like AIX from my old entry on the remaining Unixes appear to have rotted away.
Err codemadness.org 70 i 41519 Sidebar: The filesystem also matters on modern Unixes
Err codemadness.org 70 i 41520 Even if your Unix supports d_type in directory entries, it doesn’t mean that it’s supported by the filesystem of any specific directory. As far as I know, every Unix with d_type support has support for it in their normal local filesystems, but it’s not guaranteed to be in all filesystems, especially non-Unix ones like FAT32. Your code should always be prepared to deal with a file type of DT_UNKNOWN.
Err codemadness.org 70 i 41521 It’s also possible to have things the other way around, where you have a filesystem with support for file type information in directories that’s on a Unix that doesn’t support it. There are a number of plausible reasons for this to happen, but they’re either obvious or beyond the scope of this entry.
###Multiboot Pinebook KDE neon
Err codemadness.org 70 i 41527 Err codemadness.org 70 i 41528Err codemadness.org 70 i 41529Err codemadness.org 70 i 41537 Err codemadness.org 70 i 41538Recently a KDE neon image for the Pinebook was announced. There is a new image, with a handful of fixes, which the KDE Plasma team has been working on over the past week and a half.
Err codemadness.org 70 i 41536
Err codemadness.org 70 i 41530 Here’s a picture of my Pinebook running KDE neon — watching Panic! At the Disco’s High Hopes — sitting in front of my monitor that’s hooked up to one of my openSUSE systems. There are still some errata, and watching video sucks up battery, but for hacking on documentation from my hammock in the garden, or doing IRC meetings it’s a really nice machine.
Err codemadness.org 70 i 41531 But one of the neat things about running KDE neon off of an SD card on the Pinebook is that it’s portable — that SD card can move around. So let’s talk about multiboot in the sense of “booting the same OS storage medium in different hardware units” rather than “booting different OS from a medium in a single hardware unit”. On these little ARM boards, u-boot does all the heavy lifting early in the boot process. So to re-use the KDE neon Pinebook image on another ARM board, the u-boot blocks need to be replaced.
Err codemadness.org 70 i 41532 I have the u-boot from a Pine64 image (I forget what) lying around, 1015 blocks of 1024 bytes, which I can dd over the u-boot blocks on the SD card, dd bs=1k conv=notrunc,sync if=uboot.img of=/dev/da0 seek=8, and then the same SD card, with the filesystem and data from the Pinebook, will boot on the Pine64 board. Of course, to move the SD card back again, I need to restore the Pinebook u-boot blocks.
Err codemadness.org 70 i 41533 Here’s a picture of my Pineboard (the base is a piece of the garden fence, it’s Douglas pine, with 4mm threaded rods acting as the corner posts for my Pine64 mini-rack), with power and network and a serial console attached, along with the serial console output of the same.
Err codemadness.org 70 i 41534 The nice thing here is that the same software stack runs on the Pine64 but then has a wired network — which in turn means that if I switch on the other boards in that mini-rack, I’ve got a distcc-capable cluster for fast development, and vast NFS storage (served from ZFS on my FreeBSD machines) for source. I can develop in a high(er) powered environment, and then swap the card around into the Pinebook for testing-on-the-go.
Err codemadness.org 70 i 41535 So to sum up: you can multiboot the KDE neon Pinebook image on other Pine64 hardware (i.e. the Pine64 board). To do so, you need to swap around u-boot blocks. The blocks can be picked out of an image built for each board, and then a particular image (e.g. the latest KDE neon Pinebook) can be run on either board.
##Beastie Bits
Err codemadness.org 70 i 41541 Err codemadness.org 70 i 41542##Feedback/Questions
Err codemadness.org 70 i 41558 Err codemadness.org 70 i 41559##Headlines
Err codemadness.org 70 i 41824 Err codemadness.org 70 i 41825###[FreeBSD DevSummit & EuroBSDcon 2018 in Romania]
Err codemadness.org 70 i 41826 Err codemadness.org 70 i 41827Err codemadness.org 70 i 41838Err codemadness.org 70 i 41844 Err codemadness.org 70 i 41845Selfhosting as an alternative to the public cloud (by Albert Dengg)
Err codemadness.org 70 i 41843
Err codemadness.org 70 i 41839 Using Boot Environments at Scale (by Allan Jude)
Err codemadness.org 70 i 41840 Livepatching FreeBSD kernel (by Maciej Grochowski)
Err codemadness.org 70 i 41841 FreeBSD: What to (Not) Monitor (by Andrew Fengler)
Err codemadness.org 70 i 41842 FreeBSD Graphics (by Niclas Zeising)
Err codemadness.org 70 i 41848Err codemadness.org 70 i 41856Hacking together a FreeBSD presentation streaming box – For as little as possible (by Tom Jones)
Err codemadness.org 70 i 41855
Err codemadness.org 70 i 41849 Introduction of FreeBSD in new environments (by Baptiste Daroussin)
Err codemadness.org 70 i 41850 Keynote: Some computing and networking historical perspectives (by Ron Broersma)
Err codemadness.org 70 i 41851 Livepatching FreeBSD kernel (by Maciej Grochowski)
Err codemadness.org 70 i 41852 FreeBSD: What to (Not) Monitor (by Andrew Fengler)
Err codemadness.org 70 i 41853 Being a BSD user (by Roller Angel)
Err codemadness.org 70 i 41854 From “Hello World” to the VFS Layer: building a beadm for DragonFly BSD (by Michael Voight)
Err codemadness.org 70 i 41865Err codemadness.org 70 i 41871 Err codemadness.org 70 i 41872I’ve been programming for 15 years now. Recently our industry’s lack of care for efficiency, simplicity, and excellence started really getting to me, to the point of me getting depressed by my own career and the IT in general.
Err codemadness.org 70 i 41870
Err codemadness.org 70 i 41866 Modern cars work, let’s say for the sake of argument, at 98% of what’s physically possible with the current engine design. Modern buildings use just enough material to fulfill their function and stay safe under the given conditions. All planes converged to the optimal size/form/load and basically look the same.
Err codemadness.org 70 i 41867 Only in software, it’s fine if a program runs at 1% or even 0.01% of the possible performance. Everybody just seems to be ok with it. People are often even proud about how much inefficient it is, as in “why should we worry, computers are fast enough”:
Err codemadness.org 70 i 41868 @tveastman: I have a Python program I run every day, it takes 1.5 seconds. I spent six hours re-writing it in rust, now it takes 0.06 seconds. That efficiency improvement means I’ll make my time back in 41 years, 24 days :-)
Err codemadness.org 70 i 41869 You’ve probably heard this mantra: “programmer time is more expensive than computer time”. What it means basically is that we’re wasting computers at an unprecedented scale. Would you buy a car if it eats 100 liters per 100 kilometers? How about 1000 liters? With computers, we do that all the time.
Err codemadness.org 70 i 41877Err codemadness.org 70 i 41885 Err codemadness.org 70 i 41886Look around: our portable computers are thousands of times more powerful than the ones that brought man to the moon. Yet every other webpage struggles to maintain a smooth 60fps scroll on the latest top-of-the-line MacBook Pro. I can comfortably play games, watch 4K videos but not scroll web pages? How is it ok?
Err codemadness.org 70 i 41884
Err codemadness.org 70 i 41878 Google Inbox, a web app written by Google, running in Chrome browser also by Google, takes 13 seconds to open moderately-sized emails:
Err codemadness.org 70 i 41879 It also animates empty white boxes instead of showing their content because it’s the only way anything can be animated on a webpage with decent performance. No, decent doesn’t mean 60fps, it’s rather “as fast as this web page could possibly go”. I’m dying to see web community answer when 120Hz displays become mainstream. Shit barely hits 60Hz already.
Err codemadness.org 70 i 41880 Windows 10 takes 30 minutes to update. What could it possibly be doing for that long? That much time is enough to fully format my SSD drive, download a fresh build and install it like 5 times in a row.
Err codemadness.org 70 i 41881 Pavel Fatin: Typing in editor is a relatively simple process, so even 286 PCs were able to provide a rather fluid typing experience.
Err codemadness.org 70 i 41882 Modern text editors have higher latency than 42-year-old Emacs. Text editors! What can be simpler? On each keystroke, all you have to do is update tiny rectangular region and modern text editors can’t do that in 16ms. It’s a lot of time. A LOT. A 3D game can fill the whole screen with hundreds of thousands (!!!) of polygons in the same 16ms and also process input, recalculate the world and dynamically load/unload resources. How come?
Err codemadness.org 70 i 41883 As a general trend, we’re not getting faster software with more features. We’re getting faster hardware that runs slower software with the same features. Everything works way below the possible speed. Ever wonder why your phone needs 30 to 60 seconds to boot? Why can’t it boot, say, in one second? There are no physical limitations to that. I would love to see that. I would love to see limits reached and explored, utilizing every last bit of performance we can get for something meaningful in a meaningful way.
Err codemadness.org 70 i 41891Err codemadness.org 70 i 41900 Err codemadness.org 70 i 41901And then there’s bloat. Web apps could open up to 10× faster if you just simply block all ads. Google begs everyone to stop shooting themselves in their feet with AMP initiative—a technology solution to a problem that doesn’t need any technology, just a little bit of common sense. If you remove bloat, the web becomes crazy fast. How smart do you have to be to understand that?
Err codemadness.org 70 i 41899
Err codemadness.org 70 i 41892 Android system with no apps takes almost 6 Gb. Just think for a second how obscenely HUGE that number is. What’s in there, HD movies? I guess it’s basically code: kernel, drivers. Some string and resources too, sure, but those can’t be big. So, how many drivers do you need for a phone?
Err codemadness.org 70 i 41893 Windows 95 was 30Mb. Today we have web pages heavier than that! Windows 10 is 4Gb, which is 133 times as big. But is it 133 times as superior? I mean, functionally they are basically the same. Yes, we have Cortana, but I doubt it takes 3970 Mb. But whatever Windows 10 is, is Android really 150% of that?
Err codemadness.org 70 i 41894 Google keyboard app routinely eats 150 Mb. Is an app that draws 30 keys on a screen really five times more complex than the whole Windows 95? Google app, which is basically just a package for Google Web Search, is 350 Mb! Google Play Services, which I do not use (I don’t buy books, music or videos there)—300 Mb that just sit there and which I’m unable to delete.
Err codemadness.org 70 i 41895 All that leaves me around 1 Gb for my photos after I install all the essential (social, chats, maps, taxi, banks etc) apps. And that’s with no games and no music at all! Remember times when an OS, apps and all your data fit on a floppy?
Err codemadness.org 70 i 41896 Your desktop todo app is probably written in Electron and thus has userland driver for Xbox 360 controller in it, can render 3d graphics and play audio and take photos with your web camera.
Err codemadness.org 70 i 41897 A simple text chat is notorious for its load speed and memory consumption. Yes, you really have to count Slack in as a resource-heavy application. I mean, chatroom and barebones text editor, those are supposed to be two of the less demanding apps in the whole world. Welcome to 2018.
Err codemadness.org 70 i 41898 At least it works, you might say. Well, bigger doesn’t imply better. Bigger means someone has lost control. Bigger means we don’t know what’s going on. Bigger means complexity tax, performance tax, reliability tax. This is not the norm and should not become the norm. Overweight apps should mean a red flag. They should mean run away scared.
Err codemadness.org 70 i 41906Err codemadness.org 70 i 41911 Err codemadness.org 70 i 41912I want to see progress. I want change. I want state-of-the-art in software engineering to improve, not just stand still. I don’t want to reinvent the same stuff over and over, less performant and more bloated each time. I want something to believe in, a worthy end goal, a future better than what we have today, and I want a community of engineers who share that vision.
Err codemadness.org 70 i 41910
Err codemadness.org 70 i 41907 What we have today is not progress. We barely meet business goals with poor tools applied over the top. We’re stuck in local optima and nobody wants to move out. It’s not even a good place, it’s bloated and inefficient. We just somehow got used to it.
Err codemadness.org 70 i 41908 So I want to call it out: where we are today is bullshit. As engineers, we can, and should, and will do better. We can have better tools, we can build better apps, faster, more predictable, more reliable, using fewer resources (orders of magnitude fewer!). We need to understand deeply what are we doing and why. We need to deliver: reliably, predictably, with topmost quality. We can—and should–take pride in our work. Not just “given what we had…”—no buts!
Err codemadness.org 70 i 41909 I hope I’m not alone at this. I hope there are people out there who want to do the same. I’d appreciate if we at least start talking about how absurdly bad our current situation in the software industry is. And then we maybe figure out how to get out.
##News Roundup
Err codemadness.org 70
i 41915 ###[llvm-announce] LLVM 7.0.0 Release
I am pleased to announce that LLVM 7 is now available. Err codemadness.org 70
i 41918 Err codemadness.org 70
i 41919 Get it here: https://llvm.org/releases/download.html#7.0.0 Err codemadness.org 70
i 41920 Err codemadness.org 70
i 41921 The release contains the work on trunk up to SVN revision 338536 plus Err codemadness.org 70
i 41922 work on the release branch. It is the result of the community's work Err codemadness.org 70
i 41923 over the past six months, including: function multiversioning in Clang Err codemadness.org 70
i 41924 with the 'target' attribute for ELF-based x86/x86_64 targets, improved Err codemadness.org 70
i 41925 PCH support in clang-cl, preliminary DWARF v5 support, basic support Err codemadness.org 70
i 41926 for OpenMP 4.5 offloading to NVPTX, OpenCL C++ support, MSan, X-Ray Err codemadness.org 70
i 41927 and libFuzzer support for FreeBSD, early UBSan, X-Ray and libFuzzer Err codemadness.org 70
i 41928 support for OpenBSD, UBSan checks for implicit conversions, many Err codemadness.org 70
i 41929 long-tail compatibility issues fixed in lld which is now production Err codemadness.org 70
i 41930 ready for ELF, COFF and MinGW, new tools llvm-exegesis, llvm-mca and Err codemadness.org 70
i 41931 diagtool. And as usual, many optimizations, improved diagnostics, and Err codemadness.org 70
i 41932 bug fixes. Err codemadness.org 70
i 41933 Err codemadness.org 70
i 41934 For more details, see the release notes: Err codemadness.org 70
i 41935 https://llvm.org/releases/7.0.0/docs/ReleaseNotes.html Err codemadness.org 70
i 41936 https://llvm.org/releases/7.0.0/tools/clang/docs/ReleaseNotes.html Err codemadness.org 70
i 41937 https://llvm.org/releases/7.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html Err codemadness.org 70
i 41938 https://llvm.org/releases/7.0.0/tools/lld/docs/ReleaseNotes.html Err codemadness.org 70
i 41939 Err codemadness.org 70
i 41940 Thanks to everyone who helped with filing, fixing, and code reviewing Err codemadness.org 70
i 41941 for the release-blocking bugs! Err codemadness.org 70
i 41942 Err codemadness.org 70
i 41943 Special thanks to the release testers and packagers: Bero Err codemadness.org 70
i 41944 Rosenkränzer, Brian Cain, Dimitry Andric, Jonas Hahnfeld, Lei Huang Err codemadness.org 70
i 41945 Michał Górny, Sylvestre Ledru, Takumi Nakamura, and Vedant Kumar. Err codemadness.org 70
i 41946 Err codemadness.org 70
i 41947 For questions or comments about the release, please contact the Err codemadness.org 70
i 41948 community on the mailing lists. Onwards to LLVM 8! Err codemadness.org 70
i 41949 Err codemadness.org 70
i 41950 Cheers, Err codemadness.org 70
i 41951 Hans Err codemadness.org 70
i 41952 Err codemadness.org 70
i 41953 Err codemadness.org 70
i 41954 ###Update your Thinkpad’s bios with Linux or OpenBSD
Err codemadness.org 70 i 41957 Err codemadness.org 70 i 41958Err codemadness.org 70 i 41963Err codemadness.org 70 i 41965 Err codemadness.org 70 i 41966At first, go to the Lenovo website and download your new bios:
Err codemadness.org 70 i 41964
Err codemadness.org 70 i 41977Err codemadness.org 70 i 41979 Err codemadness.org 70 i 41980For me the file is called like this : r0iuj25wd.iso
Err codemadness.org 70 i 41978
Err codemadness.org 70 i 41985Err codemadness.org 70 i 41987 Err codemadness.org 70 i 41988Now you will need to install geteltorito.
Err codemadness.org 70 i 41986
$ doas pkg_add geteltorito
Err codemadness.org 70
i 41993 quirks-3.7 signed on 2018-09-09T13:15:19Z
Err codemadness.org 70
i 41994 geteltorito-0.6: ok
$ sudo apt-get install genisoimage
$ geteltorito -o bios_update.img r0iuj25wd.iso
Err codemadness.org 70
i 42007 Booting catalog starts at sector: 20
Err codemadness.org 70
i 42008 Manufacturer of CD: NERO BURNING ROM VER 12
Err codemadness.org 70
i 42009 Image architecture: x86
Err codemadness.org 70
i 42010 Boot media type is: harddisk
Err codemadness.org 70
i 42011 El Torito image starts at sector 27 and has 43008 sector(s) of 512 Bytes
Err codemadness.org 70
i 42012
Err codemadness.org 70
i 42013 Image has been written to file "bios_update.img".
Err codemadness.org 70
i 42014 This will create a file called bios_update.img.
Err codemadness.org 70 i 42022Err codemadness.org 70 i 42024 Err codemadness.org 70 i 42025Please check twice on your computer the name of your USB key.
Err codemadness.org 70 i 42023
$ doas dd if=bios_update.img of=/dev/rsd1c
$ sudo dd if=bios_update.img of=/dev/sda
Err codemadness.org 70 i 42038Err codemadness.org 70 i 42040 Err codemadness.org 70 i 42041Now all you need is to reboot, to boot on your USB key and follow the instructions. Enjoy 😉
Err codemadness.org 70 i 42039
###Announcing The HardenedBSD Foundation
Err codemadness.org 70 i 42044 Err codemadness.org 70 i 42045Err codemadness.org 70 i 42046Err codemadness.org 70 i 42049 Err codemadness.org 70 i 42050In June of 2018, we announced our intent to become a not-for-profit, tax-exempt 501©(3) organization in the United States. It took a dedicated team months of work behind-the-scenes to make that happen. On 06 September 2018, HardenedBSD Foundation Corp was granted 501©(3) status, from which point all US-based persons making donations can deduct the donation from their taxes.
Err codemadness.org 70 i 42048
Err codemadness.org 70 i 42047 We are grateful for those who contribute to HardenedBSD in whatever way they can. Thank you for making HardenedBSD possible. We look forward to a bright future, driven by a helpful and positive community.
###How you migrate ZFS filesystems matters
Err codemadness.org 70 i 42053 Err codemadness.org 70 i 42054Err codemadness.org 70 i 42055Err codemadness.org 70 i 42064 Err codemadness.org 70 i 42065If you want to move a ZFS filesystem around from one host to another, you have two general approaches; you can use ‘zfs send’ and ‘zfs receive’, or you can use a user level copying tool such as rsync (or ‘tar -cf | tar -xf’, or any number of similar options). Until recently, I had considered these two approaches to be more or less equivalent apart from their convenience and speed (which generally tilted in favour of ‘zfs send’). It turns out that this is not necessarily the case and there are situations where you will want one instead of the other.
Err codemadness.org 70 i 42063
Err codemadness.org 70 i 42056 We have had two generations of ZFS fileservers so far, the Solaris ones and the OmniOS ones. When we moved from the first generation to the second generation, we migrated filesystems across using ‘zfs send’, including the filesystem with my home directory in it (we did this for various reasons). Recently I discovered that some old things in my filesystem didn’t have file type information in their directory entries. ZFS has been adding file type information to directories for a long time, but not quite as long as my home directory has been on ZFS.
Err codemadness.org 70 i 42057 This illustrates an important difference between the ‘zfs send’ approach and the rsync approach, which is that zfs send doesn’t update or change at least some ZFS on-disk data structures, in the way that re-writing them from scratch from user level does. There are both positives and negatives to this, and a certain amount of rewriting does happen even in the ‘zfs send’ case (for example, all of the block pointers get changed, and ZFS will re-compress your data as applicable).
Err codemadness.org 70 i 42058 I knew that in theory you had to copy things at the user level if you wanted to make sure that your ZFS filesystem and everything in it was fully up to date with the latest ZFS features. But I didn’t expect to hit a situation where it mattered in practice until, well, I did. Now I suspect that old files on our old filesystems may be partially missing a number of things, and I’m wondering how much of the various changes in ‘zfs upgrade -v’ apply even to old data.
Err codemadness.org 70 i 42059 (I’d run into this sort of general thing before when I looked into ext3 to ext4 conversion on Linux.)
Err codemadness.org 70 i 42060 With all that said, I doubt this will change our plans for migrating our ZFS filesystems in the future (to our third generation fileservers). ZFS sending and receiving is just too convenient, too fast and too reliable to give up. Rsync isn’t bad, but it’s not the same, and so we only use it when we have to (when we’re moving only some of the people in a filesystem instead of all of them, for example).
Err codemadness.org 70 i 42061 PS: I was going to try to say something about what ‘zfs send’ did and didn’t update, but having looked briefly at the code I’ve concluded that I need to do more research before running my keyboard off. In the mean time, you can read the OpenZFS wiki page on ZFS send and receive, which has plenty of juicy technical details.
Err codemadness.org 70 i 42062 PPS: Since eliminating all-zero blocks is a form of compression, you can turn zero-filled files into sparse files through a ZFS send/receive if the destination has compression enabled. As far as I know, genuine sparse files on the source will stay sparse through a ZFS send/receive even if they’re sent to a destination with compression off.
##Beastie Bits
Err codemadness.org 70 i 42068 Err codemadness.org 70 i 42069##Feedback/Questions
Err codemadness.org 70 i 42084 Err codemadness.org 70 i 42085##Headlines
Err codemadness.org 70 i 42104 Err codemadness.org 70 i 42105###[FreeBSD DevSummit & EuroBSDcon 2018 in Romania]
Err codemadness.org 70 i 42106 Err codemadness.org 70 i 42107Err codemadness.org 70 i 42118Err codemadness.org 70 i 42124 Err codemadness.org 70 i 42125Selfhosting as an alternative to the public cloud (by Albert Dengg)
Err codemadness.org 70 i 42123
Err codemadness.org 70 i 42119 Using Boot Environments at Scale (by Allan Jude)
Err codemadness.org 70 i 42120 Livepatching FreeBSD kernel (by Maciej Grochowski)
Err codemadness.org 70 i 42121 FreeBSD: What to (Not) Monitor (by Andrew Fengler)
Err codemadness.org 70 i 42122 FreeBSD Graphics (by Niclas Zeising)
Err codemadness.org 70 i 42128Err codemadness.org 70 i 42136Hacking together a FreeBSD presentation streaming box – For as little as possible (by Tom Jones)
Err codemadness.org 70 i 42135
Err codemadness.org 70 i 42129 Introduction of FreeBSD in new environments (by Baptiste Daroussin)
Err codemadness.org 70 i 42130 Keynote: Some computing and networking historical perspectives (by Ron Broersma)
Err codemadness.org 70 i 42131 Livepatching FreeBSD kernel (by Maciej Grochowski)
Err codemadness.org 70 i 42132 FreeBSD: What to (Not) Monitor (by Andrew Fengler)
Err codemadness.org 70 i 42133 Being a BSD user (by Roller Angel)
Err codemadness.org 70 i 42134 From “Hello World” to the VFS Layer: building a beadm for DragonFly BSD (by Michael Voight)
Err codemadness.org 70 i 42145Err codemadness.org 70 i 42151 Err codemadness.org 70 i 42152I’ve been programming for 15 years now. Recently our industry’s lack of care for efficiency, simplicity, and excellence started really getting to me, to the point of me getting depressed by my own career and the IT in general.
Err codemadness.org 70 i 42150
Err codemadness.org 70 i 42146 Modern cars work, let’s say for the sake of argument, at 98% of what’s physically possible with the current engine design. Modern buildings use just enough material to fulfill their function and stay safe under the given conditions. All planes converged to the optimal size/form/load and basically look the same.
Err codemadness.org 70 i 42147 Only in software, it’s fine if a program runs at 1% or even 0.01% of the possible performance. Everybody just seems to be ok with it. People are often even proud about how much inefficient it is, as in “why should we worry, computers are fast enough”:
Err codemadness.org 70 i 42148 @tveastman: I have a Python program I run every day, it takes 1.5 seconds. I spent six hours re-writing it in rust, now it takes 0.06 seconds. That efficiency improvement means I’ll make my time back in 41 years, 24 days :-)
Err codemadness.org 70 i 42149 You’ve probably heard this mantra: “programmer time is more expensive than computer time”. What it means basically is that we’re wasting computers at an unprecedented scale. Would you buy a car if it eats 100 liters per 100 kilometers? How about 1000 liters? With computers, we do that all the time.
Err codemadness.org 70 i 42157Err codemadness.org 70 i 42165 Err codemadness.org 70 i 42166Look around: our portable computers are thousands of times more powerful than the ones that brought man to the moon. Yet every other webpage struggles to maintain a smooth 60fps scroll on the latest top-of-the-line MacBook Pro. I can comfortably play games, watch 4K videos but not scroll web pages? How is it ok?
Err codemadness.org 70 i 42164
Err codemadness.org 70 i 42158 Google Inbox, a web app written by Google, running in Chrome browser also by Google, takes 13 seconds to open moderately-sized emails:
Err codemadness.org 70 i 42159 It also animates empty white boxes instead of showing their content because it’s the only way anything can be animated on a webpage with decent performance. No, decent doesn’t mean 60fps, it’s rather “as fast as this web page could possibly go”. I’m dying to see web community answer when 120Hz displays become mainstream. Shit barely hits 60Hz already.
Err codemadness.org 70 i 42160 Windows 10 takes 30 minutes to update. What could it possibly be doing for that long? That much time is enough to fully format my SSD drive, download a fresh build and install it like 5 times in a row.
Err codemadness.org 70 i 42161 Pavel Fatin: Typing in editor is a relatively simple process, so even 286 PCs were able to provide a rather fluid typing experience.
Err codemadness.org 70 i 42162 Modern text editors have higher latency than 42-year-old Emacs. Text editors! What can be simpler? On each keystroke, all you have to do is update tiny rectangular region and modern text editors can’t do that in 16ms. It’s a lot of time. A LOT. A 3D game can fill the whole screen with hundreds of thousands (!!!) of polygons in the same 16ms and also process input, recalculate the world and dynamically load/unload resources. How come?
Err codemadness.org 70 i 42163 As a general trend, we’re not getting faster software with more features. We’re getting faster hardware that runs slower software with the same features. Everything works way below the possible speed. Ever wonder why your phone needs 30 to 60 seconds to boot? Why can’t it boot, say, in one second? There are no physical limitations to that. I would love to see that. I would love to see limits reached and explored, utilizing every last bit of performance we can get for something meaningful in a meaningful way.
Err codemadness.org 70 i 42171Err codemadness.org 70 i 42180 Err codemadness.org 70 i 42181And then there’s bloat. Web apps could open up to 10× faster if you just simply block all ads. Google begs everyone to stop shooting themselves in their feet with AMP initiative—a technology solution to a problem that doesn’t need any technology, just a little bit of common sense. If you remove bloat, the web becomes crazy fast. How smart do you have to be to understand that?
Err codemadness.org 70 i 42179
Err codemadness.org 70 i 42172 Android system with no apps takes almost 6 Gb. Just think for a second how obscenely HUGE that number is. What’s in there, HD movies? I guess it’s basically code: kernel, drivers. Some string and resources too, sure, but those can’t be big. So, how many drivers do you need for a phone?
Err codemadness.org 70 i 42173 Windows 95 was 30Mb. Today we have web pages heavier than that! Windows 10 is 4Gb, which is 133 times as big. But is it 133 times as superior? I mean, functionally they are basically the same. Yes, we have Cortana, but I doubt it takes 3970 Mb. But whatever Windows 10 is, is Android really 150% of that?
Err codemadness.org 70 i 42174 Google keyboard app routinely eats 150 Mb. Is an app that draws 30 keys on a screen really five times more complex than the whole Windows 95? Google app, which is basically just a package for Google Web Search, is 350 Mb! Google Play Services, which I do not use (I don’t buy books, music or videos there)—300 Mb that just sit there and which I’m unable to delete.
Err codemadness.org 70 i 42175 All that leaves me around 1 Gb for my photos after I install all the essential (social, chats, maps, taxi, banks etc) apps. And that’s with no games and no music at all! Remember times when an OS, apps and all your data fit on a floppy?
Err codemadness.org 70 i 42176 Your desktop todo app is probably written in Electron and thus has userland driver for Xbox 360 controller in it, can render 3d graphics and play audio and take photos with your web camera.
Err codemadness.org 70 i 42177 A simple text chat is notorious for its load speed and memory consumption. Yes, you really have to count Slack in as a resource-heavy application. I mean, chatroom and barebones text editor, those are supposed to be two of the less demanding apps in the whole world. Welcome to 2018.
Err codemadness.org 70 i 42178 At least it works, you might say. Well, bigger doesn’t imply better. Bigger means someone has lost control. Bigger means we don’t know what’s going on. Bigger means complexity tax, performance tax, reliability tax. This is not the norm and should not become the norm. Overweight apps should mean a red flag. They should mean run away scared.
Err codemadness.org 70 i 42186Err codemadness.org 70 i 42191 Err codemadness.org 70 i 42192I want to see progress. I want change. I want state-of-the-art in software engineering to improve, not just stand still. I don’t want to reinvent the same stuff over and over, less performant and more bloated each time. I want something to believe in, a worthy end goal, a future better than what we have today, and I want a community of engineers who share that vision.
Err codemadness.org 70 i 42190
Err codemadness.org 70 i 42187 What we have today is not progress. We barely meet business goals with poor tools applied over the top. We’re stuck in local optima and nobody wants to move out. It’s not even a good place, it’s bloated and inefficient. We just somehow got used to it.
Err codemadness.org 70 i 42188 So I want to call it out: where we are today is bullshit. As engineers, we can, and should, and will do better. We can have better tools, we can build better apps, faster, more predictable, more reliable, using fewer resources (orders of magnitude fewer!). We need to understand deeply what are we doing and why. We need to deliver: reliably, predictably, with topmost quality. We can—and should–take pride in our work. Not just “given what we had…”—no buts!
Err codemadness.org 70 i 42189 I hope I’m not alone at this. I hope there are people out there who want to do the same. I’d appreciate if we at least start talking about how absurdly bad our current situation in the software industry is. And then we maybe figure out how to get out.
##News Roundup
Err codemadness.org 70
i 42195 ###[llvm-announce] LLVM 7.0.0 Release
I am pleased to announce that LLVM 7 is now available. Err codemadness.org 70
i 42198 Err codemadness.org 70
i 42199 Get it here: https://llvm.org/releases/download.html#7.0.0 Err codemadness.org 70
i 42200 Err codemadness.org 70
i 42201 The release contains the work on trunk up to SVN revision 338536 plus Err codemadness.org 70
i 42202 work on the release branch. It is the result of the community's work Err codemadness.org 70
i 42203 over the past six months, including: function multiversioning in Clang Err codemadness.org 70
i 42204 with the 'target' attribute for ELF-based x86/x86_64 targets, improved Err codemadness.org 70
i 42205 PCH support in clang-cl, preliminary DWARF v5 support, basic support Err codemadness.org 70
i 42206 for OpenMP 4.5 offloading to NVPTX, OpenCL C++ support, MSan, X-Ray Err codemadness.org 70
i 42207 and libFuzzer support for FreeBSD, early UBSan, X-Ray and libFuzzer Err codemadness.org 70
i 42208 support for OpenBSD, UBSan checks for implicit conversions, many Err codemadness.org 70
i 42209 long-tail compatibility issues fixed in lld which is now production Err codemadness.org 70
i 42210 ready for ELF, COFF and MinGW, new tools llvm-exegesis, llvm-mca and Err codemadness.org 70
i 42211 diagtool. And as usual, many optimizations, improved diagnostics, and Err codemadness.org 70
i 42212 bug fixes. Err codemadness.org 70
i 42213 Err codemadness.org 70
i 42214 For more details, see the release notes: Err codemadness.org 70
i 42215 https://llvm.org/releases/7.0.0/docs/ReleaseNotes.html Err codemadness.org 70
i 42216 https://llvm.org/releases/7.0.0/tools/clang/docs/ReleaseNotes.html Err codemadness.org 70
i 42217 https://llvm.org/releases/7.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html Err codemadness.org 70
i 42218 https://llvm.org/releases/7.0.0/tools/lld/docs/ReleaseNotes.html Err codemadness.org 70
i 42219 Err codemadness.org 70
i 42220 Thanks to everyone who helped with filing, fixing, and code reviewing Err codemadness.org 70
i 42221 for the release-blocking bugs! Err codemadness.org 70
i 42222 Err codemadness.org 70
i 42223 Special thanks to the release testers and packagers: Bero Err codemadness.org 70
i 42224 Rosenkränzer, Brian Cain, Dimitry Andric, Jonas Hahnfeld, Lei Huang Err codemadness.org 70
i 42225 Michał Górny, Sylvestre Ledru, Takumi Nakamura, and Vedant Kumar. Err codemadness.org 70
i 42226 Err codemadness.org 70
i 42227 For questions or comments about the release, please contact the Err codemadness.org 70
i 42228 community on the mailing lists. Onwards to LLVM 8! Err codemadness.org 70
i 42229 Err codemadness.org 70
i 42230 Cheers, Err codemadness.org 70
i 42231 Hans Err codemadness.org 70
i 42232 Err codemadness.org 70
i 42233 Err codemadness.org 70
i 42234 ###Update your Thinkpad’s bios with Linux or OpenBSD
Err codemadness.org 70 i 42237 Err codemadness.org 70 i 42238Err codemadness.org 70 i 42243Err codemadness.org 70 i 42245 Err codemadness.org 70 i 42246At first, go to the Lenovo website and download your new bios:
Err codemadness.org 70 i 42244
Err codemadness.org 70 i 42257Err codemadness.org 70 i 42259 Err codemadness.org 70 i 42260For me the file is called like this : r0iuj25wd.iso
Err codemadness.org 70 i 42258
Err codemadness.org 70 i 42265Err codemadness.org 70 i 42267 Err codemadness.org 70 i 42268Now you will need to install geteltorito.
Err codemadness.org 70 i 42266
$ doas pkg_add geteltorito
Err codemadness.org 70
i 42273 quirks-3.7 signed on 2018-09-09T13:15:19Z
Err codemadness.org 70
i 42274 geteltorito-0.6: ok
$ sudo apt-get install genisoimage
$ geteltorito -o bios_update.img r0iuj25wd.iso
Err codemadness.org 70
i 42287 Booting catalog starts at sector: 20
Err codemadness.org 70
i 42288 Manufacturer of CD: NERO BURNING ROM VER 12
Err codemadness.org 70
i 42289 Image architecture: x86
Err codemadness.org 70
i 42290 Boot media type is: harddisk
Err codemadness.org 70
i 42291 El Torito image starts at sector 27 and has 43008 sector(s) of 512 Bytes
Err codemadness.org 70
i 42292
Err codemadness.org 70
i 42293 Image has been written to file "bios_update.img".
Err codemadness.org 70
i 42294 This will create a file called bios_update.img.
Err codemadness.org 70 i 42302Err codemadness.org 70 i 42304 Err codemadness.org 70 i 42305Please check twice on your computer the name of your USB key.
Err codemadness.org 70 i 42303
$ doas dd if=bios_update.img of=/dev/rsd1c
$ sudo dd if=bios_update.img of=/dev/sda
Err codemadness.org 70 i 42318Err codemadness.org 70 i 42320 Err codemadness.org 70 i 42321Now all you need is to reboot, to boot on your USB key and follow the instructions. Enjoy 😉
Err codemadness.org 70 i 42319
###Announcing The HardenedBSD Foundation
Err codemadness.org 70 i 42324 Err codemadness.org 70 i 42325Err codemadness.org 70 i 42326Err codemadness.org 70 i 42329 Err codemadness.org 70 i 42330In June of 2018, we announced our intent to become a not-for-profit, tax-exempt 501©(3) organization in the United States. It took a dedicated team months of work behind-the-scenes to make that happen. On 06 September 2018, HardenedBSD Foundation Corp was granted 501©(3) status, from which point all US-based persons making donations can deduct the donation from their taxes.
Err codemadness.org 70 i 42328
Err codemadness.org 70 i 42327 We are grateful for those who contribute to HardenedBSD in whatever way they can. Thank you for making HardenedBSD possible. We look forward to a bright future, driven by a helpful and positive community.
###How you migrate ZFS filesystems matters
Err codemadness.org 70 i 42333 Err codemadness.org 70 i 42334Err codemadness.org 70 i 42335Err codemadness.org 70 i 42344 Err codemadness.org 70 i 42345If you want to move a ZFS filesystem around from one host to another, you have two general approaches; you can use ‘zfs send’ and ‘zfs receive’, or you can use a user level copying tool such as rsync (or ‘tar -cf | tar -xf’, or any number of similar options). Until recently, I had considered these two approaches to be more or less equivalent apart from their convenience and speed (which generally tilted in favour of ‘zfs send’). It turns out that this is not necessarily the case and there are situations where you will want one instead of the other.
Err codemadness.org 70 i 42343
Err codemadness.org 70 i 42336 We have had two generations of ZFS fileservers so far, the Solaris ones and the OmniOS ones. When we moved from the first generation to the second generation, we migrated filesystems across using ‘zfs send’, including the filesystem with my home directory in it (we did this for various reasons). Recently I discovered that some old things in my filesystem didn’t have file type information in their directory entries. ZFS has been adding file type information to directories for a long time, but not quite as long as my home directory has been on ZFS.
Err codemadness.org 70 i 42337 This illustrates an important difference between the ‘zfs send’ approach and the rsync approach, which is that zfs send doesn’t update or change at least some ZFS on-disk data structures, in the way that re-writing them from scratch from user level does. There are both positives and negatives to this, and a certain amount of rewriting does happen even in the ‘zfs send’ case (for example, all of the block pointers get changed, and ZFS will re-compress your data as applicable).
Err codemadness.org 70 i 42338 I knew that in theory you had to copy things at the user level if you wanted to make sure that your ZFS filesystem and everything in it was fully up to date with the latest ZFS features. But I didn’t expect to hit a situation where it mattered in practice until, well, I did. Now I suspect that old files on our old filesystems may be partially missing a number of things, and I’m wondering how much of the various changes in ‘zfs upgrade -v’ apply even to old data.
Err codemadness.org 70 i 42339 (I’d run into this sort of general thing before when I looked into ext3 to ext4 conversion on Linux.)
Err codemadness.org 70 i 42340 With all that said, I doubt this will change our plans for migrating our ZFS filesystems in the future (to our third generation fileservers). ZFS sending and receiving is just too convenient, too fast and too reliable to give up. Rsync isn’t bad, but it’s not the same, and so we only use it when we have to (when we’re moving only some of the people in a filesystem instead of all of them, for example).
Err codemadness.org 70 i 42341 PS: I was going to try to say something about what ‘zfs send’ did and didn’t update, but having looked briefly at the code I’ve concluded that I need to do more research before running my keyboard off. In the mean time, you can read the OpenZFS wiki page on ZFS send and receive, which has plenty of juicy technical details.
Err codemadness.org 70 i 42342 PPS: Since eliminating all-zero blocks is a form of compression, you can turn zero-filled files into sparse files through a ZFS send/receive if the destination has compression enabled. As far as I know, genuine sparse files on the source will stay sparse through a ZFS send/receive even if they’re sent to a destination with compression off.
##Beastie Bits
Err codemadness.org 70 i 42348 Err codemadness.org 70 i 42349##Feedback/Questions
Err codemadness.org 70 i 42364 Err codemadness.org 70 i 42365##Headlines
Err codemadness.org 70
i 42535 ###FreeBSD & DragonFlyBSD Put Up A Strong Fight On AMD’s Threadripper 2990WX, Benchmarks Against Linux
Err codemadness.org 70 i 42538Err codemadness.org 70 i 42550 Err codemadness.org 70 i 42551The past two weeks I have been delivering a great deal of AMD Threadripper 2990WX benchmarks on Linux as well as some against Windows and Windows Server. But recently I got around to trying out some of the BSD operating systems on this 32-core / 64-thread processor to see how they would run and to see whether they would have similar scaling issues or not like we’ve seen on the Windows side against Linux. In this article are FreeBSD and DragonFlyBSD benchmarks with the X399 + 2990WX compared to a few Linux distributions.
Err codemadness.org 70 i 42549
Err codemadness.org 70 i 42539 The BSDs I focused my testing on were FreeBSD 11.2-STABLE and 12.0-CURRENT/ALPHA1 (the version in development) as well as iX System’s TrueOS that is tracking FreeBSD 12.0-CURRENT. Also included were DragonFlyBSD, with FreeBSD and DragonFlyBSD being tied as my favorite operating systems when it comes to the BSDs. When it came to FreeBSD 11.2-STABLE and 12.0-ALPHA1 on the Threadripper 2990WX, it worked out surprisingly well. I encountered no real issues during my two days of benchmarking on FreeBSD (and TrueOS). It was a great experience and FreeBSD was happy to exploit the 64 threads on the system.
Err codemadness.org 70 i 42540 DragonFlyBSD was a bit of a different story… Last week when I started this BSD testing I tried DragonFly 5.2.2 as the latest stable release as well as a DragonFlyBSD 5.3 development snapshot from last week: both failed to boot in either BIOS or UEFI modes.
Err codemadness.org 70 i 42541 But then a few days ago DragonFlyBSD lead developer Matthew Dillon bought himself a 2990WX platform. He made the necessary changes to get DragonFlyBSD 5.3 working and he ended up finding really great performance and potential out of the platform. So I tried the latest DragonFlyBSD 5.3 daily ISO on 22 August and indeed it now booted successfully and we were off to the races. Thus there are some DragonFlyBSD 5.3 benchmarks included in this article too.
Err codemadness.org 70 i 42542 Just hours ago, Matthew Dillon landed some 2990WX topology and scheduler enhancements but that fell out of the scope of when DragonFly was installed on this system. But over the weekend or so I plan to re-test DragonFlyBSD 5.3 and see how those optimizations affect the overall 2990WX performance now on that BSD. DragonFlyBSD 5.4 stable should certainly be an interesting release on several fronts!
Err codemadness.org 70 i 42543 With FreeBSD 11.2-STABLE and 12.0-ALPHA1 I ran benchmarks when using their stock compiler (LLVM Clang 6.0) as well as GCC 7.3 obtained via GCC 7.3. That was done to rule out compiler differences in benchmarking against the GCC-based Linux distributions. On DragonFlyBSD 5.3 it defaults to the GCC 5.4.1 but via pkg I also did a secondary run when upgraded to GCC 7.3.
Err codemadness.org 70 i 42544 The hardware and BIOS/UEFI settings were maintained the same throughout the entire benchmarking process. The system was made up of the AMD Ryzen Threadripper 2990WX at stock speeds, the ASUS ROG ZENITH EXTREME motherboard, 4 x 8GB DDR4-3200MHz memory, Samsung 970 EVO 500GB NVMe SSD, and Radeon RX Vega 56 graphics card.
Err codemadness.org 70 i 42545 All of these Linux vs. BSD benchmarks were carried out in a fully-automated and reproducible manner using the open-source Phoronix Test Suite benchmarking framework.
Err codemadness.org 70 i 42546 While for the last of today’s BSD vs. Linux benchmarking on the Threadripper 2990WX, the Linux distributions came out slightly ahead of FreeBSD and DragonFlyBSD with GCC (another test having issues with Clang 6.0 on the BSDs).
Err codemadness.org 70 i 42547 Overall, I was quite taken away by the BSD performance on the Threadripper 2990WX – particularly FreeBSD. In a surprising number of benchmarks, the BSDs were outperforming the tested Linux distributions though often by incredibly thin margins. Still, quite an accomplishment for these BSD operating systems and considering how much better Linux is already doing than Windows 10 / Windows Server on this 32-core / 64-thread processor. Then again, the BSDs like Linux have a long history of running on high core/thread-count systems, super computers, and other HPC environments.
Err codemadness.org 70 i 42548 It will be interesting to see how much faster DragonFlyBSD can run given today’s commit to its kernel with scheduler and topology improvements for the 2990WX. Those additional DragonFlyBSD benchmarks will be published in the coming days once they are completed.
Err codemadness.org 70 i 42556Err codemadness.org 70 i 42558 Err codemadness.org 70 i 42559The NetBSD Project is pleased to announce NetBSD 7.2, the second feature update of the NetBSD 7 release branch. It represents a selected subset of fixes deemed important for security or stability reasons, as well as new features and enhancements.
Err codemadness.org 70 i 42557
The NetBSD 7.2 release is a maintenance release of the netbsd-7 branch, which had it's first major release, NetBSD 7.0 in September 2015. A lot of security features have been added to later NetBSD versions, and for new installations we highly recommend using our latest release, NetBSD 8.0 instead.
Err codemadness.org 70 i 42579Err codemadness.org 70 i 42582 Err codemadness.org 70 i 42583Complete source and binaries for NetBSD 7.2 are available for download at many sites around the world. A list of download sites providing FTP, AnonCVS, SUP, and other services may be found at https://www.NetBSD.org/mirrors/. We encourage users who wish to install via ISO or USB disk images to download via BitTorrent by using the torrent files supplied in the images area. A list of hashes for the NetBSD 7.2 distribution has been signed with the well-connected PGP key for the NetBSD Security Officer: https://cdn.NetBSD.org/pub/NetBSD/security/hashes/NetBSD-7.2_hashes.asc
Err codemadness.org 70 i 42581
Err codemadness.org 70 i 42580 NetBSD is free. All of the code is under non-restrictive licenses, and may be used without paying royalties to anyone. Free support services are available via our mailing lists and website. Commercial support is available from a variety of sources. More extensive information on NetBSD is available from our website:
##News Roundup
Err codemadness.org 70
i 42586 ###Including optimized-out kernel symbols in dtrace on FreeBSD
Err codemadness.org 70 i 42589Err codemadness.org 70 i 42591 Err codemadness.org 70 i 42592Have you ever had dtrace(1) on FreeBSD fail to list a probe that should exist in the kernel? This is because Clang will optimize-out some functions. The result is ctfconvert(1) will not generate debugging symbols that dtrace(1) uses to identify probes. I have a quick solution to getting those probes visible to dtrace(1).
Err codemadness.org 70 i 42590
Err codemadness.org 70 i 42593Err codemadness.org 70 i 42595 Err codemadness.org 70 i 42596In my case, I was trying to instrument on ieee80211_ioctl_get80211, whose sister function ieee80211_ioctl_set80211 has a dtrace(1) probe in the generic FreeBSD 11 and 12 kernels. Both functions are located in /usr/src/sys/net80211/ieee80211_ioctl.c.
Err codemadness.org 70 i 42594
Err codemadness.org 70 i 42597Err codemadness.org 70 i 42599 Err codemadness.org 70 i 42600My first attempt was to add to /etc/make.conf as follows and recompile the kernel.
Err codemadness.org 70 i 42598
CFLAGS+=-O0 and -fno-inline-functions
Err codemadness.org 70 i 42603Err codemadness.org 70 i 42605 Err codemadness.org 70 i 42606This failed to produce the dtrace(1) probe. Several other attempts failed and I was getting inconsistent compilation results (Is it me or is ieee80211_ioctl.c compiled with different flags if NO_CLEAN=1 is set?). When I manually compiled the object file by copying the compilation line for the object file and adding -O0 -fno-inline-functions, nm(1) on both the object file and kernel demonstrated that the symbol was present. I installed the kernel, rebooted and it was listed as a dtrace probe. Great!
Err codemadness.org 70 i 42604
Err codemadness.org 70 i 42607Err codemadness.org 70 i 42609 Err codemadness.org 70 i 42610But as I continued to debug my WiFi driver (oh yeah, I’m very slowly extending rtwn(4)), I found myself rebuilding the kernel several times and frequently rebooting. Why not do this across the entire kernel?
Err codemadness.org 70 i 42608
Err codemadness.org 70 i 42611Err codemadness.org 70 i 42613 Err codemadness.org 70 i 42614After hacking around, my solution was to modify the build scripts. My solution was to edit /usr/src/sys/conf/kern.pre.mk and modify all optimization level 2 to optimization level 0. The following is my diff(1) on FreeBSD 12.0-CURRENT.
Err codemadness.org 70 i 42612
Err codemadness.org 70 i 42619Err codemadness.org 70 i 42624 Err codemadness.org 70 i 42625This seems like a hack rather than a long-term solution. Either the problem is with the hard-coded optimization flags, or the inability to overwrite them in all places in make.conf.
Err codemadness.org 70 i 42623
Err codemadness.org 70 i 42620 Removing optimizations is only something I would do in a non-production kernel, so its as if I have to choose between optimizations for a production kernel or having dtrace probes. But dtrace explicitly markets itself as not impactful on production.
Err codemadness.org 70 i 42621 Using the dtrace pony as your featured image on WordPress does not render properly and must be rotated and modified. Blame Bryan Cantrill.
Err codemadness.org 70 i 42622 If you have a better solution, please let me know and I will update the article, but this works for me!
###FreeBSD: UEFI Bootloader stuck on BootCurrent/BootOrder/BootInfo on Asus Motherboards (and fix!)
Err codemadness.org 70 i 42628 Err codemadness.org 70 i 42629Err codemadness.org 70 i 42630Err codemadness.org 70 i 42632 Err codemadness.org 70 i 42633Starting with FreeBSD CURRENT from about a few weeks of posting date, but including FreeBSD 12 alpha releases (not related to DEC Alpha), I noticed one thing: When I boot FreeBSD from UEFI on a homebuilt desktop with a Asus H87M-E motherboard, and have Root on ZFS, the bootloader gets stuck on lines like BootCurrent, BootOrder, and BootInfo. This issue occurs when I try to boot directly to efi\boot\bootx64.efi.
Err codemadness.org 70 i 42631
Err codemadness.org 70 i 42634Err codemadness.org 70 i 42636 Err codemadness.org 70 i 42637One person had a similar issue on a Asus H87I-PLUS motherboard. This issue may or may not exist on other Asus motherboards, desktops, or laptops. This may be specific to Asus motherboards for Intel’s Haswell, but may also exist on newer systems (e.g. Skylake) or older (e.g. Ivy Bridge) with Asus motherboards, as well as Asus desktops or laptops.
Err codemadness.org 70 i 42635
Err codemadness.org 70 i 42644Err codemadness.org 70 i 42651 Err codemadness.org 70 i 42652Keep in mind that I am not going to talk about this issue and third-party UEFI boot managers such as rEFInd here.
Err codemadness.org 70 i 42650
Err codemadness.org 70 i 42645 The first option is rather straightforward: you need to make sure your computer has “Secure Boot” disabled and “Legacy Boot” or “CSM” enabled. Then, you need to make sure FreeBSD is installed in BIOS mode. However, this solution is (in my opinion) suboptimal. Why? Because:
Err codemadness.org 70 i 42646 You won’t be able to use hard drives bigger than 2TB
Err codemadness.org 70 i 42647 You are limited to MBR Partitioning on Asus motherboards with UEFI as Asus motherboards refuse to boot GPT partitioned disks in BIOS mode
Err codemadness.org 70 i 42648 Legacy BIOS mode may not exist on future computers or motherboards (although those systems may not have this issue, and this issue may get fixed by then)
Err codemadness.org 70 i 42649 The second option, however, is less straightforward, but will let you keep UEFI. Many UEFI systems, including affected Asus motherboards described here, include a boot manager built into the UEFI. FreeBSD includes a tool called efibootmgr to manage this, similar to the similarly-named tool in Linux, but with a different syntax.
###Why ed(1) is not a good editor today
Err codemadness.org 70 i 42655 Err codemadness.org 70 i 42656Err codemadness.org 70 i 42657Err codemadness.org 70 i 42659 Err codemadness.org 70 i 42660I’ll start with my tweet:
Err codemadness.org 70 i 42658
Heretical Unix opinion time: ed(1) may be the 'standard Unix editor', but it is not a particularly good editor outside of a limited environment that almost never applies today.
Err codemadness.org 70 i 42663Err codemadness.org 70 i 42673 Err codemadness.org 70 i 42674There is a certain portion of Unixdom that really likes ed(1), the ‘standard Unix editor’. Having actually used ed for a not insignificant amount of time (although it was the friendlier ‘UofT ed’ variant), I have some reactions to what I feel is sometimes overzealous praise of it. One of these is what I tweeted.
Err codemadness.org 70 i 42672
Err codemadness.org 70 i 42664 The fundamental limitation of ed is that it is what I call an indirect manipulation interface, in contrast to the explicit manipulation interfaces of screen editors like vi and graphical editors like sam (which are generally lumped together as ‘visual’ editors, so called because they actually show you the text you’re editing). When you edit text in ed, you have some problems that you don’t have in visual editors; you have to maintain in your head the context of what the text looks like (and where you are in it), you have to figure out how to address portions of that text in order to modify them, and finally you have to think about how your edit commands will change the context. Copious use of ed’s p command can help with the first problem, but nothing really deals with the other two. In order to use ed, you basically have to simulate parts of ed in your head.
Err codemadness.org 70 i 42665 Ed is a great editor in situations where the editor explicitly presenting this context is a very expensive or outright impossible operation. Ed works great on real teletypes, for example, or over extremely slow links where you want to send and receive as little data as possible (and on real teletypes you have some amount of context in the form of an actual printout that you can look back at). Back in the old days of Unix, this described a fairly large number of situations; you had actual teletypes, you had slow dialup links (and later slow, high latency network links), and you had slow and heavily overloaded systems.
Err codemadness.org 70 i 42666 However, that’s no longer the situation today (at least almost all of the time). Modern systems and links can easily support visual editors that continually show you the context of the text and generally let you more or less directly manipulate it (whether that is through cursoring around it or using a mouse). Such editors are easier and faster to use, and they leave you with more brainpower free to think about things like the program you’re writing (which is the important thing).
Err codemadness.org 70 i 42667 If you can use a visual editor, ed is not a particularly good editor to use instead; you will probably spend a lot of effort (and some amount of time) on doing by hand something that the visual editor will do for you. If you are very practiced at ed, maybe this partly goes away, but I maintain that you are still working harder than you need to be.
Err codemadness.org 70 i 42668 The people who say that ed is a quite powerful editor are correct; ed is quite capable (although sadly limited by only editing a single file). It’s just that it’s also a pain to use.
Err codemadness.org 70 i 42669 (They’re also correct that ed is the foundation of many other things in Unix, including sed and vi. But that doesn’t mean that the best way to learn or understand those things is to learn and use ed.)
Err codemadness.org 70 i 42670 This doesn’t make ed a useless, vestigial thing on modern Unix, though. There are uses for ed in non-interactive editing, for example. But on modern Unix, ed is a specialized tool, much like dc. It’s worth knowing that ed is there and roughly what it can do, but it’s probably not worth learning how to use it before you need it. And you’re unlikely to ever be in a situation where it’s the best choice for interactive editing (and if you are, something has generally gone wrong).
Err codemadness.org 70 i 42671 (But if you enjoy exploring the obscure corners of Unix, sure, go for it. Learn dc too, because it’s interesting in its own way and, like ed, it’s one of those classical old Unix programs.)
##Beastie Bits
Err codemadness.org 70 i 42677 Err codemadness.org 70 i 42678##Feedback/Questions
Err codemadness.org 70 i 42689 Err codemadness.org 70 i 42690##Headlines
Err codemadness.org 70
i 42708 ###FreeBSD & DragonFlyBSD Put Up A Strong Fight On AMD’s Threadripper 2990WX, Benchmarks Against Linux
Err codemadness.org 70 i 42711Err codemadness.org 70 i 42723 Err codemadness.org 70 i 42724The past two weeks I have been delivering a great deal of AMD Threadripper 2990WX benchmarks on Linux as well as some against Windows and Windows Server. But recently I got around to trying out some of the BSD operating systems on this 32-core / 64-thread processor to see how they would run and to see whether they would have similar scaling issues or not like we’ve seen on the Windows side against Linux. In this article are FreeBSD and DragonFlyBSD benchmarks with the X399 + 2990WX compared to a few Linux distributions.
Err codemadness.org 70 i 42722
Err codemadness.org 70 i 42712 The BSDs I focused my testing on were FreeBSD 11.2-STABLE and 12.0-CURRENT/ALPHA1 (the version in development) as well as iX System’s TrueOS that is tracking FreeBSD 12.0-CURRENT. Also included were DragonFlyBSD, with FreeBSD and DragonFlyBSD being tied as my favorite operating systems when it comes to the BSDs. When it came to FreeBSD 11.2-STABLE and 12.0-ALPHA1 on the Threadripper 2990WX, it worked out surprisingly well. I encountered no real issues during my two days of benchmarking on FreeBSD (and TrueOS). It was a great experience and FreeBSD was happy to exploit the 64 threads on the system.
Err codemadness.org 70 i 42713 DragonFlyBSD was a bit of a different story… Last week when I started this BSD testing I tried DragonFly 5.2.2 as the latest stable release as well as a DragonFlyBSD 5.3 development snapshot from last week: both failed to boot in either BIOS or UEFI modes.
Err codemadness.org 70 i 42714 But then a few days ago DragonFlyBSD lead developer Matthew Dillon bought himself a 2990WX platform. He made the necessary changes to get DragonFlyBSD 5.3 working and he ended up finding really great performance and potential out of the platform. So I tried the latest DragonFlyBSD 5.3 daily ISO on 22 August and indeed it now booted successfully and we were off to the races. Thus there are some DragonFlyBSD 5.3 benchmarks included in this article too.
Err codemadness.org 70 i 42715 Just hours ago, Matthew Dillon landed some 2990WX topology and scheduler enhancements but that fell out of the scope of when DragonFly was installed on this system. But over the weekend or so I plan to re-test DragonFlyBSD 5.3 and see how those optimizations affect the overall 2990WX performance now on that BSD. DragonFlyBSD 5.4 stable should certainly be an interesting release on several fronts!
Err codemadness.org 70 i 42716 With FreeBSD 11.2-STABLE and 12.0-ALPHA1 I ran benchmarks when using their stock compiler (LLVM Clang 6.0) as well as GCC 7.3 obtained via GCC 7.3. That was done to rule out compiler differences in benchmarking against the GCC-based Linux distributions. On DragonFlyBSD 5.3 it defaults to the GCC 5.4.1 but via pkg I also did a secondary run when upgraded to GCC 7.3.
Err codemadness.org 70 i 42717 The hardware and BIOS/UEFI settings were maintained the same throughout the entire benchmarking process. The system was made up of the AMD Ryzen Threadripper 2990WX at stock speeds, the ASUS ROG ZENITH EXTREME motherboard, 4 x 8GB DDR4-3200MHz memory, Samsung 970 EVO 500GB NVMe SSD, and Radeon RX Vega 56 graphics card.
Err codemadness.org 70 i 42718 All of these Linux vs. BSD benchmarks were carried out in a fully-automated and reproducible manner using the open-source Phoronix Test Suite benchmarking framework.
Err codemadness.org 70 i 42719 While for the last of today’s BSD vs. Linux benchmarking on the Threadripper 2990WX, the Linux distributions came out slightly ahead of FreeBSD and DragonFlyBSD with GCC (another test having issues with Clang 6.0 on the BSDs).
Err codemadness.org 70 i 42720 Overall, I was quite taken away by the BSD performance on the Threadripper 2990WX – particularly FreeBSD. In a surprising number of benchmarks, the BSDs were outperforming the tested Linux distributions though often by incredibly thin margins. Still, quite an accomplishment for these BSD operating systems and considering how much better Linux is already doing than Windows 10 / Windows Server on this 32-core / 64-thread processor. Then again, the BSDs like Linux have a long history of running on high core/thread-count systems, super computers, and other HPC environments.
Err codemadness.org 70 i 42721 It will be interesting to see how much faster DragonFlyBSD can run given today’s commit to its kernel with scheduler and topology improvements for the 2990WX. Those additional DragonFlyBSD benchmarks will be published in the coming days once they are completed.
Err codemadness.org 70 i 42729Err codemadness.org 70 i 42731 Err codemadness.org 70 i 42732The NetBSD Project is pleased to announce NetBSD 7.2, the second feature update of the NetBSD 7 release branch. It represents a selected subset of fixes deemed important for security or stability reasons, as well as new features and enhancements.
Err codemadness.org 70 i 42730
The NetBSD 7.2 release is a maintenance release of the netbsd-7 branch, which had it's first major release, NetBSD 7.0 in September 2015. A lot of security features have been added to later NetBSD versions, and for new installations we highly recommend using our latest release, NetBSD 8.0 instead.
Err codemadness.org 70 i 42752Err codemadness.org 70 i 42755 Err codemadness.org 70 i 42756Complete source and binaries for NetBSD 7.2 are available for download at many sites around the world. A list of download sites providing FTP, AnonCVS, SUP, and other services may be found at https://www.NetBSD.org/mirrors/. We encourage users who wish to install via ISO or USB disk images to download via BitTorrent by using the torrent files supplied in the images area. A list of hashes for the NetBSD 7.2 distribution has been signed with the well-connected PGP key for the NetBSD Security Officer: https://cdn.NetBSD.org/pub/NetBSD/security/hashes/NetBSD-7.2_hashes.asc
Err codemadness.org 70 i 42754
Err codemadness.org 70 i 42753 NetBSD is free. All of the code is under non-restrictive licenses, and may be used without paying royalties to anyone. Free support services are available via our mailing lists and website. Commercial support is available from a variety of sources. More extensive information on NetBSD is available from our website:
##News Roundup
Err codemadness.org 70
i 42759 ###Including optimized-out kernel symbols in dtrace on FreeBSD
Err codemadness.org 70 i 42762Err codemadness.org 70 i 42764 Err codemadness.org 70 i 42765Have you ever had dtrace(1) on FreeBSD fail to list a probe that should exist in the kernel? This is because Clang will optimize-out some functions. The result is ctfconvert(1) will not generate debugging symbols that dtrace(1) uses to identify probes. I have a quick solution to getting those probes visible to dtrace(1).
Err codemadness.org 70 i 42763
Err codemadness.org 70 i 42766Err codemadness.org 70 i 42768 Err codemadness.org 70 i 42769In my case, I was trying to instrument on ieee80211_ioctl_get80211, whose sister function ieee80211_ioctl_set80211 has a dtrace(1) probe in the generic FreeBSD 11 and 12 kernels. Both functions are located in /usr/src/sys/net80211/ieee80211_ioctl.c.
Err codemadness.org 70 i 42767
Err codemadness.org 70 i 42770Err codemadness.org 70 i 42772 Err codemadness.org 70 i 42773My first attempt was to add to /etc/make.conf as follows and recompile the kernel.
Err codemadness.org 70 i 42771
CFLAGS+=-O0 and -fno-inline-functions
Err codemadness.org 70 i 42776Err codemadness.org 70 i 42778 Err codemadness.org 70 i 42779This failed to produce the dtrace(1) probe. Several other attempts failed and I was getting inconsistent compilation results (Is it me or is ieee80211_ioctl.c compiled with different flags if NO_CLEAN=1 is set?). When I manually compiled the object file by copying the compilation line for the object file and adding -O0 -fno-inline-functions, nm(1) on both the object file and kernel demonstrated that the symbol was present. I installed the kernel, rebooted and it was listed as a dtrace probe. Great!
Err codemadness.org 70 i 42777
Err codemadness.org 70 i 42780Err codemadness.org 70 i 42782 Err codemadness.org 70 i 42783But as I continued to debug my WiFi driver (oh yeah, I’m very slowly extending rtwn(4)), I found myself rebuilding the kernel several times and frequently rebooting. Why not do this across the entire kernel?
Err codemadness.org 70 i 42781
Err codemadness.org 70 i 42784Err codemadness.org 70 i 42786 Err codemadness.org 70 i 42787After hacking around, my solution was to modify the build scripts. My solution was to edit /usr/src/sys/conf/kern.pre.mk and modify all optimization level 2 to optimization level 0. The following is my diff(1) on FreeBSD 12.0-CURRENT.
Err codemadness.org 70 i 42785
Err codemadness.org 70 i 42792Err codemadness.org 70 i 42797 Err codemadness.org 70 i 42798This seems like a hack rather than a long-term solution. Either the problem is with the hard-coded optimization flags, or the inability to overwrite them in all places in make.conf.
Err codemadness.org 70 i 42796
Err codemadness.org 70 i 42793 Removing optimizations is only something I would do in a non-production kernel, so its as if I have to choose between optimizations for a production kernel or having dtrace probes. But dtrace explicitly markets itself as not impactful on production.
Err codemadness.org 70 i 42794 Using the dtrace pony as your featured image on WordPress does not render properly and must be rotated and modified. Blame Bryan Cantrill.
Err codemadness.org 70 i 42795 If you have a better solution, please let me know and I will update the article, but this works for me!
###FreeBSD: UEFI Bootloader stuck on BootCurrent/BootOrder/BootInfo on Asus Motherboards (and fix!)
Err codemadness.org 70 i 42801 Err codemadness.org 70 i 42802Err codemadness.org 70 i 42803Err codemadness.org 70 i 42805 Err codemadness.org 70 i 42806Starting with FreeBSD CURRENT from about a few weeks of posting date, but including FreeBSD 12 alpha releases (not related to DEC Alpha), I noticed one thing: When I boot FreeBSD from UEFI on a homebuilt desktop with a Asus H87M-E motherboard, and have Root on ZFS, the bootloader gets stuck on lines like BootCurrent, BootOrder, and BootInfo. This issue occurs when I try to boot directly to efi\boot\bootx64.efi.
Err codemadness.org 70 i 42804
Err codemadness.org 70 i 42807Err codemadness.org 70 i 42809 Err codemadness.org 70 i 42810One person had a similar issue on a Asus H87I-PLUS motherboard. This issue may or may not exist on other Asus motherboards, desktops, or laptops. This may be specific to Asus motherboards for Intel’s Haswell, but may also exist on newer systems (e.g. Skylake) or older (e.g. Ivy Bridge) with Asus motherboards, as well as Asus desktops or laptops.
Err codemadness.org 70 i 42808
Err codemadness.org 70 i 42817Err codemadness.org 70 i 42824 Err codemadness.org 70 i 42825Keep in mind that I am not going to talk about this issue and third-party UEFI boot managers such as rEFInd here.
Err codemadness.org 70 i 42823
Err codemadness.org 70 i 42818 The first option is rather straightforward: you need to make sure your computer has “Secure Boot” disabled and “Legacy Boot” or “CSM” enabled. Then, you need to make sure FreeBSD is installed in BIOS mode. However, this solution is (in my opinion) suboptimal. Why? Because:
Err codemadness.org 70 i 42819 You won’t be able to use hard drives bigger than 2TB
Err codemadness.org 70 i 42820 You are limited to MBR Partitioning on Asus motherboards with UEFI as Asus motherboards refuse to boot GPT partitioned disks in BIOS mode
Err codemadness.org 70 i 42821 Legacy BIOS mode may not exist on future computers or motherboards (although those systems may not have this issue, and this issue may get fixed by then)
Err codemadness.org 70 i 42822 The second option, however, is less straightforward, but will let you keep UEFI. Many UEFI systems, including affected Asus motherboards described here, include a boot manager built into the UEFI. FreeBSD includes a tool called efibootmgr to manage this, similar to the similarly-named tool in Linux, but with a different syntax.
###Why ed(1) is not a good editor today
Err codemadness.org 70 i 42828 Err codemadness.org 70 i 42829Err codemadness.org 70 i 42830Err codemadness.org 70 i 42832 Err codemadness.org 70 i 42833I’ll start with my tweet:
Err codemadness.org 70 i 42831
Heretical Unix opinion time: ed(1) may be the 'standard Unix editor', but it is not a particularly good editor outside of a limited environment that almost never applies today.
Err codemadness.org 70 i 42836Err codemadness.org 70 i 42846 Err codemadness.org 70 i 42847There is a certain portion of Unixdom that really likes ed(1), the ‘standard Unix editor’. Having actually used ed for a not insignificant amount of time (although it was the friendlier ‘UofT ed’ variant), I have some reactions to what I feel is sometimes overzealous praise of it. One of these is what I tweeted.
Err codemadness.org 70 i 42845
Err codemadness.org 70 i 42837 The fundamental limitation of ed is that it is what I call an indirect manipulation interface, in contrast to the explicit manipulation interfaces of screen editors like vi and graphical editors like sam (which are generally lumped together as ‘visual’ editors, so called because they actually show you the text you’re editing). When you edit text in ed, you have some problems that you don’t have in visual editors; you have to maintain in your head the context of what the text looks like (and where you are in it), you have to figure out how to address portions of that text in order to modify them, and finally you have to think about how your edit commands will change the context. Copious use of ed’s p command can help with the first problem, but nothing really deals with the other two. In order to use ed, you basically have to simulate parts of ed in your head.
Err codemadness.org 70 i 42838 Ed is a great editor in situations where the editor explicitly presenting this context is a very expensive or outright impossible operation. Ed works great on real teletypes, for example, or over extremely slow links where you want to send and receive as little data as possible (and on real teletypes you have some amount of context in the form of an actual printout that you can look back at). Back in the old days of Unix, this described a fairly large number of situations; you had actual teletypes, you had slow dialup links (and later slow, high latency network links), and you had slow and heavily overloaded systems.
Err codemadness.org 70 i 42839 However, that’s no longer the situation today (at least almost all of the time). Modern systems and links can easily support visual editors that continually show you the context of the text and generally let you more or less directly manipulate it (whether that is through cursoring around it or using a mouse). Such editors are easier and faster to use, and they leave you with more brainpower free to think about things like the program you’re writing (which is the important thing).
Err codemadness.org 70 i 42840 If you can use a visual editor, ed is not a particularly good editor to use instead; you will probably spend a lot of effort (and some amount of time) on doing by hand something that the visual editor will do for you. If you are very practiced at ed, maybe this partly goes away, but I maintain that you are still working harder than you need to be.
Err codemadness.org 70 i 42841 The people who say that ed is a quite powerful editor are correct; ed is quite capable (although sadly limited by only editing a single file). It’s just that it’s also a pain to use.
Err codemadness.org 70 i 42842 (They’re also correct that ed is the foundation of many other things in Unix, including sed and vi. But that doesn’t mean that the best way to learn or understand those things is to learn and use ed.)
Err codemadness.org 70 i 42843 This doesn’t make ed a useless, vestigial thing on modern Unix, though. There are uses for ed in non-interactive editing, for example. But on modern Unix, ed is a specialized tool, much like dc. It’s worth knowing that ed is there and roughly what it can do, but it’s probably not worth learning how to use it before you need it. And you’re unlikely to ever be in a situation where it’s the best choice for interactive editing (and if you are, something has generally gone wrong).
Err codemadness.org 70 i 42844 (But if you enjoy exploring the obscure corners of Unix, sure, go for it. Learn dc too, because it’s interesting in its own way and, like ed, it’s one of those classical old Unix programs.)
##Beastie Bits
Err codemadness.org 70 i 42850 Err codemadness.org 70 i 42851##Feedback/Questions
Err codemadness.org 70 i 42862 Err codemadness.org 70 i 42863##Headlines
Err codemadness.org 70
i 43077 ###How to mitigate Spectre and Meltdown on an HP Proliant server with FreeBSD
Err codemadness.org 70 i 43080Err codemadness.org 70 i 43087 Err codemadness.org 70 i 43088As recently announced in a previous article I wanted to write a couple of guides on how to mitigate Spectre and Meltdown vulnerabilities in GNU/Linux and UNIX environments. It is always a good and I hope a standard practice to have your systems patched and if they aren’t for whatever the reason (that legacy thing you’re carrying on for ages) you may take the necessary extra steps to protect your environment. I never planned to do any article on patching anything. Nowadays it’s a no brainer and operating systems have provided the necessary tools for this to be easy and as smooth as possible. So why this article?
Err codemadness.org 70 i 43086
Err codemadness.org 70 i 43081 Spectre and Meltdown are both hardware vulnerabilities. Major ones. They are meaningful for several reasons among them the world wide impact since they affect Intel and AMD systems which are ubiquitous. And second because patching hardware is not as easy, for the manufacturer and for the users or administrators in charge of the systems. There is still no known exploit around left out in the open hitting servers or desktops anywhere. The question is not if it will ever happen. The question is when will it happen. And it may be sooner than later. This is why big companies, governments and people in charge of big deployments are patching or have already patched their systems. But have you done it to your system? I know you have a firewall. Have you thought about CVE-2018-3639? This particular one could make your browser being a vector to get into your system. So, no, there is no reason to skip this.
Err codemadness.org 70 i 43082 Patching these set of vulnerabilities implies some more steps and concerns than updating the operating system. If you are a regular Windows user I find rare you to be here and many of the things you will read may be foreign to you. I am not planning to do a guide on Windows systems since I believe someone else has or will do it and will do it better than me since I am not a pro Windows user. However there is one basic and common thing for all OS’s when dealing with Spectre and Meltdown and that is a microcode update is necessary for the OS patches to effectively work.
Err codemadness.org 70 i 43083 What is microcode? You can read the Wikipedia article but in short it is basically a layer of code that allows chip manufacturers to deal with modifications on the hardware they’ve produced and the operating systems that will manage that hardware. Since there’s been some issues (namely Spectre and Meltdown) Intel and AMD respectively have released a series of microcode updates to address those problems. First series did come with serious problems and some regressions, to the point GNU/Linux producers stopped releasing the microcode updates through their release channels for updates and placed the ball on Intel’s roof. Patching fast does always include risks, specially when dealing with hardware. OS vendors have resumed their microcode update releases so all seems to be fine now.
Err codemadness.org 70 i 43084 In order to update the microcode we’re faced with two options. Download the most recent BIOS release from our vendor, provided it patches the Spectre and Meltdown vulnerabilities, or patch it from the OS. If your hardware vendor has decided not to provide support on your hardware you are forced to use the latter solution. Yes, you can still keep your hardware. They usually come accompanied with a “release notes” file where there are some explanatory notes on what is fixed, what is new, etc. To make the search easy for you a news site collected the vendors list and linked the right support pages for anyone to look. In some scenarios it would be desirable not to replace the whole BIOS but just update the microcode from the OS side. In my case I should update an HP Proliant ML110 G7 box and the download link for that would be this.
Err codemadness.org 70 i 43085 Instead of using the full blown BIOS update path we’ll use the inner utilities to patch Spectre and Meltdown on FreeBSD. So let’s put our hands on it
###A look beyond the BSD teacup: OmniOS installation
Err codemadness.org 70 i 43095 Err codemadness.org 70 i 43096Err codemadness.org 70 i 43097Err codemadness.org 70 i 43099 Err codemadness.org 70 i 43100Five years ago I wrote a post about taking a look beyond the Linux teacup. I was an Arch Linux user back then and since there were projects like ArchBSD (called PacBSD today) and Arch Hurd, I decided to take a look at and write about them. Things have changed. Today I’m a happy FreeBSD user, but it’s time again to take a look beyond the teacup of operating systems that I’m familiar with.
Err codemadness.org 70 i 43098
Err codemadness.org 70 i 43105Err codemadness.org 70 i 43111 Err codemadness.org 70 i 43112There are a couple of reasons. The Solaris derivatives are the other big community in the *nix family besides Linux and the BSDs and we hadn’t met so far. Working with ZFS on FreeBSD, I now and then I read messages that contain a reference to Illumos which certainly helps to keep up the awareness. Of course there has also been a bit of curiosity – what might the OS be like that grew ZFS?
Err codemadness.org 70 i 43110
Err codemadness.org 70 i 43106 Also the Ravenports project that I participate in planned to support Solaris/Illumos right from the beginning. I wanted to at least be somewhat “prepared” when support for that platform would finally land. So I did a little research on the various derivatives available and settled on the one that I had heard a talk about at last year’s conference of the German Unix Users Group: “OmniOS – Solaris for the Rest of Us”. I would have chosen SmartOS as I admire what Bryan Cantrill does but for getting to know Illumos I prefer a traditional installation over a run-from-RAM system.
Err codemadness.org 70 i 43107 Of course FreeBSD is not run by corporations, especially when compared to the state of Linux. And when it comes to sponsoring, OpenBSD also takes the money… When it comes to FreeBSD developers, there’s probably some truth to the claim that some of them are using macOS as their desktop systems while OpenBSD devs are more likely to develop on their OS of choice. But then there’s the statement that “every innovation in the past decade comes from Solaris”. Bhyve alone proves this wrong. But let’s be honest: Two of the major technologies that make FreeBSD a great platform today – ZFS and DTrace – actually do come from Solaris. PAM originates there and a more modern way of managing services as well. Also you hear good things about their zones and a lot of small utilities in general.
Err codemadness.org 70 i 43108 In the end it was a lack of time that made me cheat and go down the easiest road: Create a Vagrantfile and just pull a VM image of the net that someone else had prepared… This worked to just make sure that the Raven packages work on OmniOS. I was determined to return, though – someday. You know how things go: “someday” is a pretty common alias for “probably never, actually.”
Err codemadness.org 70 i 43109 But then I heard about a forum post on the BSDNow! podcast. The title “Initial OmniOS impressions by a BSD user” caught my attention. I read that it was written by somebody who had used FreeBSD for years but loathed the new Code of Conduct enough to leave. I also oppose the Conduct and have made that pretty clear in my February post [ ! -z ${COC} ] && exit 1. As stated there, I have stayed with my favorite OS and continue to advocate it. I decided to stop reading the post and try things out on my own instead. Now I’ve finally found the time to do so.
Err codemadness.org 70 i 43117Err codemadness.org 70 i 43119 Err codemadness.org 70 i 43120That’s it for part one. In part two I’ll try to make the system useful. So far I have run into a problem that I haven’t been able to solve. But I have some time now to figure things out for the next post. Let’s see if I manage to get it working or if I have to report failure!
Err codemadness.org 70 i 43118
###What are all these types of memory in top(1)?
Err codemadness.org 70 i 43123 Err codemadness.org 70 i 43124Err codemadness.org 70 i 43131Err codemadness.org 70 i 43138 Err codemadness.org 70 i 43139Active - Contains memory “actively” (recently) being used by applications
Err codemadness.org 70 i 43137
Err codemadness.org 70 i 43132 Inactive - Contains memory that has not been touched recently, or was released from the Buffer Cache
Err codemadness.org 70 i 43133 Laundry - Contains memory that Inactive but still potentially contains useful data that needs to be stored before this memory can be used again
Err codemadness.org 70 i 43134 Wired - Memory that cannot be swapped out, including the kernel, network stack, and the ZFS ARC
Err codemadness.org 70 i 43135 Buf - Buffer Cache, used my UFS and most filesystems except ZFS (which uses the ARC)
Err codemadness.org 70 i 43136 Free - Memory that is immediately available for use by the rest of the system
##News Roundup
Err codemadness.org 70
i 43142 ###OpenBSD saves me again! — Debug a memory corruption issue
Err codemadness.org 70 i 43145Err codemadness.org 70 i 43147 Err codemadness.org 70 i 43148Yesterday, I came across a third-part library issue, which crashes at allocating memory:
Err codemadness.org 70 i 43146
Program terminated with signal SIGSEGV, Segmentation fault.
Err codemadness.org 70
i 43149 #0 0x00007f594a5a9b6b in _int_malloc () from /usr/lib/libc.so.6
Err codemadness.org 70
i 43150 (gdb) bt
Err codemadness.org 70
i 43151 #0 0x00007f594a5a9b6b in _int_malloc () from /usr/lib/libc.so.6
Err codemadness.org 70
i 43152 #1 0x00007f594a5ab503 in malloc () from /usr/lib/libc.so.6
Err codemadness.org 70
i 43153 #2 0x00007f594b13f159 in operator new (sz=5767168) at /build/gcc/src/gcc/libstdc++-v3/libsupc++/new_op.cc:50
Err codemadness.org 70 i 43156Err codemadness.org 70 i 43160 Err codemadness.org 70 i 43161It is obvious that the memory tags are corrupted, but who is the murder? Since the library involves a lot of maths computation, it is not an easy task to grasp the code quickly. So I need to find another way:
Err codemadness.org 70 i 43159
Err codemadness.org 70 i 43157 (1) Open all warnings during compilation: -Wall. Nothing found.
Err codemadness.org 70 i 43158 (2) Use valgrind, but unfortunately, valgrind crashes itself:
valgrind: the 'impossible' happened:
Err codemadness.org 70
i 43162 Killed by fatal signal
Err codemadness.org 70
i 43163
Err codemadness.org 70
i 43164 host stacktrace:
Err codemadness.org 70
i 43165 ==43326== at 0x58053139: get_bszB_as_is (m_mallocfree.c:303)
Err codemadness.org 70
i 43166 ==43326== by 0x58053139: get_bszB (m_mallocfree.c:315)
Err codemadness.org 70
i 43167 ==43326== by 0x58053139: vgPlain_arena_malloc (m_mallocfree.c:1799)
Err codemadness.org 70
i 43168 ==43326== by 0x5800BA84: vgMemCheck_new_block (mc_malloc_wrappers.c:372)
Err codemadness.org 70
i 43169 ==43326== by 0x5800BD39: vgMemCheck___builtin_vec_new (mc_malloc_wrappers.c:427)
Err codemadness.org 70
i 43170 ==43326== by 0x5809F785: do_client_request (scheduler.c:1866)
Err codemadness.org 70
i 43171 ==43326== by 0x5809F785: vgPlain_scheduler (scheduler.c:1433)
Err codemadness.org 70
i 43172 ==43326== by 0x580AED50: thread_wrapper (syswrap-linux.c:103)
Err codemadness.org 70
i 43173 ==43326== by 0x580AED50: run_a_thread_NORETURN (syswrap-linux.c:156)
Err codemadness.org 70
i 43174
Err codemadness.org 70
i 43175 sched status:
Err codemadness.org 70
i 43176 running_tid=1
Err codemadness.org 70 i 43179Err codemadness.org 70 i 43182 Err codemadness.org 70 i 43183(3) Change compiler, use clang instead of gcc, and hope it can give me some clues. Still no effect.
Err codemadness.org 70 i 43181
Err codemadness.org 70 i 43180 (4) Switch Operating System from Linux to OpenBSD, the program crashes again. But this time, it tells me where the memory corruption occurs:
Program terminated with signal SIGSEGV, Segmentation fault.
Err codemadness.org 70
i 43184 #0 0x000014b07f01e52d in addMod (r=<error reading variable>, a=4693443247995522, b=28622907746665631,
Err codemadness.org 70 i 43187Err codemadness.org 70 i 43189 Err codemadness.org 70 i 43190I figure out the issue quickly, and not bother to understand the whole code. OpenBSD saves me again, thanks!
Err codemadness.org 70 i 43188
###Native Encryption for ZFS on FreeBSD (Call for Testing)
Err codemadness.org 70 i 43193 Err codemadness.org 70 i 43194Err codemadness.org 70 i 43195Err codemadness.org 70 i 43197 Err codemadness.org 70 i 43198To anyone with an interest in native encryption in ZFS please test the projects/zfs-crypto-merge-0820 branch in my freebsd repo: https://github.com/mattmacy/networking.git
Err codemadness.org 70 i 43196
git clone https://github.com/mattmacy/networking.git -b projects/zfs-crypto-merge-0820
Err codemadness.org 70 i 43201Err codemadness.org 70 i 43205 Err codemadness.org 70 i 43206The UI is quite close to the Oracle Solaris ZFS crypto with minor differences for specifying key location.
Err codemadness.org 70 i 43204
Err codemadness.org 70 i 43202 Please note that once a feature is enabled on a pool it can’t be disabled. This means that if you enable encryption support on a pool you will never be able to import it in to a ZFS without encryption support. For this reason I would strongly advise against using this on any pool that can’t be easily replaced until this change has made its way in to HEAD after the freeze has been lifted.
Err codemadness.org 70 i 43203 By way of background the original ZoL commit can be found at:
###VMworld 2018: Showcasing Hybrid Cloud, Persistent Memory and the Asigra TrueNAS Backup Appliance
Err codemadness.org 70 i 43213 Err codemadness.org 70 i 43214Err codemadness.org 70 i 43215Err codemadness.org 70 i 43223 Err codemadness.org 70 i 43224During its last year in Las Vegas before moving back to San Francisco, VMworld was abuzz with all the popular buzzwords, but the key focus was on supporting a more agile approach to hybrid cloud.
Err codemadness.org 70 i 43222
Err codemadness.org 70 i 43216 Surveys of IT stakeholders and analysts agree that most businesses have multiple clouds spanning both public cloud providers and private data centers. While the exact numbers vary, well over half of businesses have a hybrid cloud strategy consisting of at least three different clouds.
Err codemadness.org 70 i 43217 This focus on hybrid cloud provided the perfect timing for our announcement that iXsystems and Asigra are partnering to deliver the Asigra TrueNAS Backup Appliance, which combines Asigra Cloud Backup software backed by TrueNAS storage. Asigra TrueNAS Backup Appliances provide a self-healing and ransomware-resistent OpenZFS backup repository in your private cloud. The appliance can simultaneously be used as general-purpose file, block, and object storage. How does this tie in with the hybrid cloud? The Asigra Cloud Backup software can backup data from public cloud repositories – G Suite, Office 365, Salesforce, etc. – as well as intelligently move backed-up data to the public cloud for long-term retention.
Err codemadness.org 70 i 43218 Another major theme at the technical sessions was persistent memory, as vSphere 6.7 added support for persistent memory – either as a storage tier or virtualized and presented to a guest OS. As detailed in our blog post from SNIA’s Persistent Memory Summit 2018, persistent memory is rapidly becoming mainstream. Persistent memory bridges the gap between memory and flash storage – providing near-memory latency storage that persists across reboots or power loss. vSphere allows both legacy and persistent memory-aware applications to leverage this ultra-fast storage tier. We were excited to show off our newly-introduced TrueNAS M-Series at VMworld, as all TrueNAS M40 and M50 models leverage NVDIMM persistent memory technology to provide a super-fast write cache, or SLOG, without any of the limitations of Flash technology.
Err codemadness.org 70 i 43219 The iXsystems booth’s theme was “Enterprise Storage, Open Source Economics”. iXsystems leverages the power of Open Source software, combined with our enterprise-class hardware and support, to provide incredibly low TCO storage for virtualization environments. Our TrueNAS unified storage and server offerings are an ideal solution for your organization’s private cloud infrastructure. Combined with VMware NSX Hybrid Connect – formerly known as VMware Hybrid Cloud Extension – you can seamlessly shift running systems into a public cloud environment for a true hybrid cloud solution.
Err codemadness.org 70 i 43220 Another special treat at this year’s booth was iXsystems Vice President of Engineering Kris Moore giving demos of an early version of “Project TrueView”, a single-pane of glass management solution for administration of multiple FreeNAS and TrueNAS systems. In addition to simplified administration and enhanced monitoring, Project TrueView will also provide Role-Based Access Control for finer-grained permissions management. A beta version of Project TrueView is expected to be available at the end of this year.
Err codemadness.org 70 i 43221 Overall, we had a great week at VMworld 2018 with lots of good conversations with customers, press, analysts, and future customers about TrueNAS, the Asigra TrueNAS Backup Appliance, iXsystems servers, Project TrueView, and more – our booth was more popular than ever!
Err codemadness.org 70 i 43229Err codemadness.org 70 i 43231 Err codemadness.org 70 i 43232In keeping with NetBSD’s policy of supporting only the latest (8.x) and next most recent (7.x) major branches, the recent release of NetBSD 8.0 marks the end of life for NetBSD 6.x. As in the past, a month of overlapping support has been provided in order to ease the migration to newer releases.
Err codemadness.org 70 i 43230
As of now, the following branches are no longer maintained:
Err codemadness.org 70 i 43235netbsd-6-1
Err codemadness.org 70 i 43238netbsd-6-0
Err codemadness.org 70 i 43241netbsd-6
Err codemadness.org 70 i 43244This means:
Err codemadness.org 70 i 43247There will be no more pullups to those branches (even for security issues)
Err codemadness.org 70 i 43250There will be no security advisories made for any those branches
Err codemadness.org 70 i 43253The existing 6.x releases on ftp.NetBSD.org will be moved into /pub/NetBSD-archive/
Err codemadness.org 70 i 43256May NetBSD 8.0 serve you well! (And if it doesn’t, please submit a PR!)
Err codemadness.org 70 i 43259##Beastie Bits
Err codemadness.org 70 i 43265 Err codemadness.org 70 i 43266##Feedback/Questions
Err codemadness.org 70 i 43278 Err codemadness.org 70 i 43279##Headlines
Err codemadness.org 70
i 43299 ###How to mitigate Spectre and Meltdown on an HP Proliant server with FreeBSD
Err codemadness.org 70 i 43302Err codemadness.org 70 i 43309 Err codemadness.org 70 i 43310As recently announced in a previous article I wanted to write a couple of guides on how to mitigate Spectre and Meltdown vulnerabilities in GNU/Linux and UNIX environments. It is always a good and I hope a standard practice to have your systems patched and if they aren’t for whatever the reason (that legacy thing you’re carrying on for ages) you may take the necessary extra steps to protect your environment. I never planned to do any article on patching anything. Nowadays it’s a no brainer and operating systems have provided the necessary tools for this to be easy and as smooth as possible. So why this article?
Err codemadness.org 70 i 43308
Err codemadness.org 70 i 43303 Spectre and Meltdown are both hardware vulnerabilities. Major ones. They are meaningful for several reasons among them the world wide impact since they affect Intel and AMD systems which are ubiquitous. And second because patching hardware is not as easy, for the manufacturer and for the users or administrators in charge of the systems. There is still no known exploit around left out in the open hitting servers or desktops anywhere. The question is not if it will ever happen. The question is when will it happen. And it may be sooner than later. This is why big companies, governments and people in charge of big deployments are patching or have already patched their systems. But have you done it to your system? I know you have a firewall. Have you thought about CVE-2018-3639? This particular one could make your browser being a vector to get into your system. So, no, there is no reason to skip this.
Err codemadness.org 70 i 43304 Patching these set of vulnerabilities implies some more steps and concerns than updating the operating system. If you are a regular Windows user I find rare you to be here and many of the things you will read may be foreign to you. I am not planning to do a guide on Windows systems since I believe someone else has or will do it and will do it better than me since I am not a pro Windows user. However there is one basic and common thing for all OS’s when dealing with Spectre and Meltdown and that is a microcode update is necessary for the OS patches to effectively work.
Err codemadness.org 70 i 43305 What is microcode? You can read the Wikipedia article but in short it is basically a layer of code that allows chip manufacturers to deal with modifications on the hardware they’ve produced and the operating systems that will manage that hardware. Since there’s been some issues (namely Spectre and Meltdown) Intel and AMD respectively have released a series of microcode updates to address those problems. First series did come with serious problems and some regressions, to the point GNU/Linux producers stopped releasing the microcode updates through their release channels for updates and placed the ball on Intel’s roof. Patching fast does always include risks, specially when dealing with hardware. OS vendors have resumed their microcode update releases so all seems to be fine now.
Err codemadness.org 70 i 43306 In order to update the microcode we’re faced with two options. Download the most recent BIOS release from our vendor, provided it patches the Spectre and Meltdown vulnerabilities, or patch it from the OS. If your hardware vendor has decided not to provide support on your hardware you are forced to use the latter solution. Yes, you can still keep your hardware. They usually come accompanied with a “release notes” file where there are some explanatory notes on what is fixed, what is new, etc. To make the search easy for you a news site collected the vendors list and linked the right support pages for anyone to look. In some scenarios it would be desirable not to replace the whole BIOS but just update the microcode from the OS side. In my case I should update an HP Proliant ML110 G7 box and the download link for that would be this.
Err codemadness.org 70 i 43307 Instead of using the full blown BIOS update path we’ll use the inner utilities to patch Spectre and Meltdown on FreeBSD. So let’s put our hands on it
###A look beyond the BSD teacup: OmniOS installation
Err codemadness.org 70 i 43317 Err codemadness.org 70 i 43318Err codemadness.org 70 i 43319Err codemadness.org 70 i 43321 Err codemadness.org 70 i 43322Five years ago I wrote a post about taking a look beyond the Linux teacup. I was an Arch Linux user back then and since there were projects like ArchBSD (called PacBSD today) and Arch Hurd, I decided to take a look at and write about them. Things have changed. Today I’m a happy FreeBSD user, but it’s time again to take a look beyond the teacup of operating systems that I’m familiar with.
Err codemadness.org 70 i 43320
Err codemadness.org 70 i 43327Err codemadness.org 70 i 43333 Err codemadness.org 70 i 43334There are a couple of reasons. The Solaris derivatives are the other big community in the *nix family besides Linux and the BSDs and we hadn’t met so far. Working with ZFS on FreeBSD, I now and then I read messages that contain a reference to Illumos which certainly helps to keep up the awareness. Of course there has also been a bit of curiosity – what might the OS be like that grew ZFS?
Err codemadness.org 70 i 43332
Err codemadness.org 70 i 43328 Also the Ravenports project that I participate in planned to support Solaris/Illumos right from the beginning. I wanted to at least be somewhat “prepared” when support for that platform would finally land. So I did a little research on the various derivatives available and settled on the one that I had heard a talk about at last year’s conference of the German Unix Users Group: “OmniOS – Solaris for the Rest of Us”. I would have chosen SmartOS as I admire what Bryan Cantrill does but for getting to know Illumos I prefer a traditional installation over a run-from-RAM system.
Err codemadness.org 70 i 43329 Of course FreeBSD is not run by corporations, especially when compared to the state of Linux. And when it comes to sponsoring, OpenBSD also takes the money… When it comes to FreeBSD developers, there’s probably some truth to the claim that some of them are using macOS as their desktop systems while OpenBSD devs are more likely to develop on their OS of choice. But then there’s the statement that “every innovation in the past decade comes from Solaris”. Bhyve alone proves this wrong. But let’s be honest: Two of the major technologies that make FreeBSD a great platform today – ZFS and DTrace – actually do come from Solaris. PAM originates there and a more modern way of managing services as well. Also you hear good things about their zones and a lot of small utilities in general.
Err codemadness.org 70 i 43330 In the end it was a lack of time that made me cheat and go down the easiest road: Create a Vagrantfile and just pull a VM image of the net that someone else had prepared… This worked to just make sure that the Raven packages work on OmniOS. I was determined to return, though – someday. You know how things go: “someday” is a pretty common alias for “probably never, actually.”
Err codemadness.org 70 i 43331 But then I heard about a forum post on the BSDNow! podcast. The title “Initial OmniOS impressions by a BSD user” caught my attention. I read that it was written by somebody who had used FreeBSD for years but loathed the new Code of Conduct enough to leave. I also oppose the Conduct and have made that pretty clear in my February post [ ! -z ${COC} ] && exit 1. As stated there, I have stayed with my favorite OS and continue to advocate it. I decided to stop reading the post and try things out on my own instead. Now I’ve finally found the time to do so.
Err codemadness.org 70 i 43339Err codemadness.org 70 i 43341 Err codemadness.org 70 i 43342That’s it for part one. In part two I’ll try to make the system useful. So far I have run into a problem that I haven’t been able to solve. But I have some time now to figure things out for the next post. Let’s see if I manage to get it working or if I have to report failure!
Err codemadness.org 70 i 43340
###What are all these types of memory in top(1)?
Err codemadness.org 70 i 43345 Err codemadness.org 70 i 43346Err codemadness.org 70 i 43353Err codemadness.org 70 i 43360 Err codemadness.org 70 i 43361Active - Contains memory “actively” (recently) being used by applications
Err codemadness.org 70 i 43359
Err codemadness.org 70 i 43354 Inactive - Contains memory that has not been touched recently, or was released from the Buffer Cache
Err codemadness.org 70 i 43355 Laundry - Contains memory that Inactive but still potentially contains useful data that needs to be stored before this memory can be used again
Err codemadness.org 70 i 43356 Wired - Memory that cannot be swapped out, including the kernel, network stack, and the ZFS ARC
Err codemadness.org 70 i 43357 Buf - Buffer Cache, used my UFS and most filesystems except ZFS (which uses the ARC)
Err codemadness.org 70 i 43358 Free - Memory that is immediately available for use by the rest of the system
##News Roundup
Err codemadness.org 70
i 43364 ###OpenBSD saves me again! — Debug a memory corruption issue
Err codemadness.org 70 i 43367Err codemadness.org 70 i 43369 Err codemadness.org 70 i 43370Yesterday, I came across a third-part library issue, which crashes at allocating memory:
Err codemadness.org 70 i 43368
Program terminated with signal SIGSEGV, Segmentation fault.
Err codemadness.org 70
i 43371 #0 0x00007f594a5a9b6b in _int_malloc () from /usr/lib/libc.so.6
Err codemadness.org 70
i 43372 (gdb) bt
Err codemadness.org 70
i 43373 #0 0x00007f594a5a9b6b in _int_malloc () from /usr/lib/libc.so.6
Err codemadness.org 70
i 43374 #1 0x00007f594a5ab503 in malloc () from /usr/lib/libc.so.6
Err codemadness.org 70
i 43375 #2 0x00007f594b13f159 in operator new (sz=5767168) at /build/gcc/src/gcc/libstdc++-v3/libsupc++/new_op.cc:50
Err codemadness.org 70 i 43378Err codemadness.org 70 i 43382 Err codemadness.org 70 i 43383It is obvious that the memory tags are corrupted, but who is the murder? Since the library involves a lot of maths computation, it is not an easy task to grasp the code quickly. So I need to find another way:
Err codemadness.org 70 i 43381
Err codemadness.org 70 i 43379 (1) Open all warnings during compilation: -Wall. Nothing found.
Err codemadness.org 70 i 43380 (2) Use valgrind, but unfortunately, valgrind crashes itself:
valgrind: the 'impossible' happened:
Err codemadness.org 70
i 43384 Killed by fatal signal
Err codemadness.org 70
i 43385
Err codemadness.org 70
i 43386 host stacktrace:
Err codemadness.org 70
i 43387 ==43326== at 0x58053139: get_bszB_as_is (m_mallocfree.c:303)
Err codemadness.org 70
i 43388 ==43326== by 0x58053139: get_bszB (m_mallocfree.c:315)
Err codemadness.org 70
i 43389 ==43326== by 0x58053139: vgPlain_arena_malloc (m_mallocfree.c:1799)
Err codemadness.org 70
i 43390 ==43326== by 0x5800BA84: vgMemCheck_new_block (mc_malloc_wrappers.c:372)
Err codemadness.org 70
i 43391 ==43326== by 0x5800BD39: vgMemCheck___builtin_vec_new (mc_malloc_wrappers.c:427)
Err codemadness.org 70
i 43392 ==43326== by 0x5809F785: do_client_request (scheduler.c:1866)
Err codemadness.org 70
i 43393 ==43326== by 0x5809F785: vgPlain_scheduler (scheduler.c:1433)
Err codemadness.org 70
i 43394 ==43326== by 0x580AED50: thread_wrapper (syswrap-linux.c:103)
Err codemadness.org 70
i 43395 ==43326== by 0x580AED50: run_a_thread_NORETURN (syswrap-linux.c:156)
Err codemadness.org 70
i 43396
Err codemadness.org 70
i 43397 sched status:
Err codemadness.org 70
i 43398 running_tid=1
Err codemadness.org 70 i 43401Err codemadness.org 70 i 43404 Err codemadness.org 70 i 43405(3) Change compiler, use clang instead of gcc, and hope it can give me some clues. Still no effect.
Err codemadness.org 70 i 43403
Err codemadness.org 70 i 43402 (4) Switch Operating System from Linux to OpenBSD, the program crashes again. But this time, it tells me where the memory corruption occurs:
Program terminated with signal SIGSEGV, Segmentation fault.
Err codemadness.org 70
i 43406 #0 0x000014b07f01e52d in addMod (r=<error reading variable>, a=4693443247995522, b=28622907746665631,
Err codemadness.org 70 i 43409Err codemadness.org 70 i 43411 Err codemadness.org 70 i 43412I figure out the issue quickly, and not bother to understand the whole code. OpenBSD saves me again, thanks!
Err codemadness.org 70 i 43410
###Native Encryption for ZFS on FreeBSD (Call for Testing)
Err codemadness.org 70 i 43415 Err codemadness.org 70 i 43416Err codemadness.org 70 i 43417Err codemadness.org 70 i 43419 Err codemadness.org 70 i 43420To anyone with an interest in native encryption in ZFS please test the projects/zfs-crypto-merge-0820 branch in my freebsd repo: https://github.com/mattmacy/networking.git
Err codemadness.org 70 i 43418
git clone https://github.com/mattmacy/networking.git -b projects/zfs-crypto-merge-0820
Err codemadness.org 70 i 43423Err codemadness.org 70 i 43427 Err codemadness.org 70 i 43428The UI is quite close to the Oracle Solaris ZFS crypto with minor differences for specifying key location.
Err codemadness.org 70 i 43426
Err codemadness.org 70 i 43424 Please note that once a feature is enabled on a pool it can’t be disabled. This means that if you enable encryption support on a pool you will never be able to import it in to a ZFS without encryption support. For this reason I would strongly advise against using this on any pool that can’t be easily replaced until this change has made its way in to HEAD after the freeze has been lifted.
Err codemadness.org 70 i 43425 By way of background the original ZoL commit can be found at:
###VMworld 2018: Showcasing Hybrid Cloud, Persistent Memory and the Asigra TrueNAS Backup Appliance
Err codemadness.org 70 i 43435 Err codemadness.org 70 i 43436Err codemadness.org 70 i 43437Err codemadness.org 70 i 43445 Err codemadness.org 70 i 43446During its last year in Las Vegas before moving back to San Francisco, VMworld was abuzz with all the popular buzzwords, but the key focus was on supporting a more agile approach to hybrid cloud.
Err codemadness.org 70 i 43444
Err codemadness.org 70 i 43438 Surveys of IT stakeholders and analysts agree that most businesses have multiple clouds spanning both public cloud providers and private data centers. While the exact numbers vary, well over half of businesses have a hybrid cloud strategy consisting of at least three different clouds.
Err codemadness.org 70 i 43439 This focus on hybrid cloud provided the perfect timing for our announcement that iXsystems and Asigra are partnering to deliver the Asigra TrueNAS Backup Appliance, which combines Asigra Cloud Backup software backed by TrueNAS storage. Asigra TrueNAS Backup Appliances provide a self-healing and ransomware-resistent OpenZFS backup repository in your private cloud. The appliance can simultaneously be used as general-purpose file, block, and object storage. How does this tie in with the hybrid cloud? The Asigra Cloud Backup software can backup data from public cloud repositories – G Suite, Office 365, Salesforce, etc. – as well as intelligently move backed-up data to the public cloud for long-term retention.
Err codemadness.org 70 i 43440 Another major theme at the technical sessions was persistent memory, as vSphere 6.7 added support for persistent memory – either as a storage tier or virtualized and presented to a guest OS. As detailed in our blog post from SNIA’s Persistent Memory Summit 2018, persistent memory is rapidly becoming mainstream. Persistent memory bridges the gap between memory and flash storage – providing near-memory latency storage that persists across reboots or power loss. vSphere allows both legacy and persistent memory-aware applications to leverage this ultra-fast storage tier. We were excited to show off our newly-introduced TrueNAS M-Series at VMworld, as all TrueNAS M40 and M50 models leverage NVDIMM persistent memory technology to provide a super-fast write cache, or SLOG, without any of the limitations of Flash technology.
Err codemadness.org 70 i 43441 The iXsystems booth’s theme was “Enterprise Storage, Open Source Economics”. iXsystems leverages the power of Open Source software, combined with our enterprise-class hardware and support, to provide incredibly low TCO storage for virtualization environments. Our TrueNAS unified storage and server offerings are an ideal solution for your organization’s private cloud infrastructure. Combined with VMware NSX Hybrid Connect – formerly known as VMware Hybrid Cloud Extension – you can seamlessly shift running systems into a public cloud environment for a true hybrid cloud solution.
Err codemadness.org 70 i 43442 Another special treat at this year’s booth was iXsystems Vice President of Engineering Kris Moore giving demos of an early version of “Project TrueView”, a single-pane of glass management solution for administration of multiple FreeNAS and TrueNAS systems. In addition to simplified administration and enhanced monitoring, Project TrueView will also provide Role-Based Access Control for finer-grained permissions management. A beta version of Project TrueView is expected to be available at the end of this year.
Err codemadness.org 70 i 43443 Overall, we had a great week at VMworld 2018 with lots of good conversations with customers, press, analysts, and future customers about TrueNAS, the Asigra TrueNAS Backup Appliance, iXsystems servers, Project TrueView, and more – our booth was more popular than ever!
Err codemadness.org 70 i 43451Err codemadness.org 70 i 43453 Err codemadness.org 70 i 43454In keeping with NetBSD’s policy of supporting only the latest (8.x) and next most recent (7.x) major branches, the recent release of NetBSD 8.0 marks the end of life for NetBSD 6.x. As in the past, a month of overlapping support has been provided in order to ease the migration to newer releases.
Err codemadness.org 70 i 43452
As of now, the following branches are no longer maintained:
Err codemadness.org 70 i 43457netbsd-6-1
Err codemadness.org 70 i 43460netbsd-6-0
Err codemadness.org 70 i 43463netbsd-6
Err codemadness.org 70 i 43466This means:
Err codemadness.org 70 i 43469There will be no more pullups to those branches (even for security issues)
Err codemadness.org 70 i 43472There will be no security advisories made for any those branches
Err codemadness.org 70 i 43475The existing 6.x releases on ftp.NetBSD.org will be moved into /pub/NetBSD-archive/
Err codemadness.org 70 i 43478May NetBSD 8.0 serve you well! (And if it doesn’t, please submit a PR!)
Err codemadness.org 70 i 43481##Beastie Bits
Err codemadness.org 70 i 43487 Err codemadness.org 70 i 43488##Feedback/Questions
Err codemadness.org 70 i 43500 Err codemadness.org 70 i 43501##Headlines
Err codemadness.org 70
i 43715 ###OpenBSD on the Microsoft Surface Go
Err codemadness.org 70 i 43718Err codemadness.org 70 i 43720 Err codemadness.org 70 i 43721For some reason I like small laptops and the constraints they place on me (as long as they’re still usable). I used a Dell Mini 9 for a long time back in the netbook days and was recently using an 11" MacBook Air as my primary development machine for many years. Recently Microsoft announced a smaller, cheaper version of its Surface tablets called Surface Go which piqued my interest.
Err codemadness.org 70 i 43719
Err codemadness.org 70 i 43726Err codemadness.org 70 i 43732 Err codemadness.org 70 i 43733The Surface Go is available in two hardware configurations: one with 4Gb of RAM and a 64Gb eMMC, and another with 8Gb of RAM with a 128Gb NVMe SSD. (I went with the latter.) Both ship with an Intel Pentium Gold 4415Y processor which is not very fast, but it’s certainly usable.
Err codemadness.org 70 i 43731
Err codemadness.org 70 i 43727 The tablet measures 9.65" across, 6.9" tall, and 0.3" thick. Its 10" diagonal 3:2 touchscreen is covered with Gorilla Glass and has a resolution of 1800x1200. The bezel is quite large, especially for such a small screen, but it makes sense on a device that is meant to be held, to avoid accidental screen touches.
Err codemadness.org 70 i 43728 The keyboard and touchpad are located on a separate, removable slab called the Surface Go Signature Type Cover which is sold separately. I opted for the “cobalt blue” cover which has a soft, cloth-like alcantara material. The cover attaches magnetically along the bottom edge of the device and presents USB-attached keyboard and touchpad devices. When the cover is folded up against the screen, it sends an ACPI sleep signal and is held to the screen magnetically. During normal use, the cover can be positioned flat on a surface or slightly raised up about 3/4" near the screen for better ergonomics. When using the device as a tablet, the cover can be rotated behind the screen which causes it to automatically stop sending keyboard and touchpad events until it is rotated back around.
Err codemadness.org 70 i 43729 The keyboard has a decent amount of key travel and a good layout, with Home/End/Page Up/Page Down being accessible via Fn+Left/Right/Up/Down but also dedicated Home/End/Page Up/Page Down keys on the F9-F12 keys which I find quite useful since the keyboard layout is somewhat small. By default, the F1-F12 keys do not send F1-F12 key codes and Fn must be used, either held down temporarily or Fn pressed by itself to enable Fn-lock which annoyingly keeps the bright Fn LED illuminated. The keys are backlit with three levels of adjustment, handled by the keyboard itself with the F7 key.
Err codemadness.org 70 i 43730 The touchpad on the Type Cover is a Windows Precision Touchpad connected via USB HID. It has a decent click feel but when the cover is angled up instead of flat on a surface, it sounds a bit hollow and cheap.
Err codemadness.org 70 i 43738Err codemadness.org 70 i 43745 Err codemadness.org 70 i 43746The touchscreen is powered by an Elantech chip connected via HID-over-i2c, which also supports pen input. A Surface Pen digitizer is available separately from Microsoft and comes in the same colors as the Type Covers. The pen works without any pairing necessary, though the top button on it works over Bluetooth so it requires pairing to use. Either way, the pen requires an AAAA battery inside it to operate. The Surface Pen can attach magnetically to the left side of the screen when not in use.
Err codemadness.org 70 i 43744
Err codemadness.org 70 i 43739 A kickstand can swing out behind the display to use the tablet in a laptop form factor, which can adjust to any angle up to about 170 degrees. The kickstand stays firmly in place wherever it is positioned, which also means it requires a bit of force to pull it out when initially placing the Surface Go on a desk.
Err codemadness.org 70 i 43740 Along the top of the display are a power button and physical volume rocker buttons. Along the right side are the 3.5mm headphone jack, USB-C port, power port, and microSD card slot located behind the kickstand.
Err codemadness.org 70 i 43741 Charging can be done via USB-C or the dedicated charge port, which accommodates a magnetically-attached, thin barrel similar to Apple’s first generation MagSafe adapter. The charging cable has a white LED that glows when connected, which is kind of annoying since it’s near the mid-line of the screen rather than down by the keyboard. Unlike Apple’s MagSafe, the indicator light does not indicate whether the battery is charged or not. The barrel charger plug can be placed up or down, but in either direction I find it puts an awkward strain on the power cable coming out of it due to the vertical position of the port.
Err codemadness.org 70 i 43742 Wireless connectivity is provided by a Qualcomm Atheros QCA6174 802.11ac chip which also provides Bluetooth connectivity.
Err codemadness.org 70 i 43743 Most of the sensors on the device such as the gyroscope and ambient light sensor are connected behind an Intel Sensor Hub PCI device, which provides some power savings as the host CPU doesn’t have to poll the sensors all the time.
Err codemadness.org 70 i 43751Err codemadness.org 70 i 43753 Err codemadness.org 70 i 43754The Surface Go’s BIOS/firmware menu can be entered by holding down the Volume Up button, then pressing and releasing the Power button, and releasing Volume Up when the menu appears. Secure Boot as well as various hardware components can be disabled in this menu. Boot order can also be adjusted. A temporary boot menu can be brought up the same way but using Volume Down instead.
Err codemadness.org 70 i 43752
###FreeBSD Foundation Update, August 2018
Err codemadness.org 70 i 43757 Err codemadness.org 70 i 43758Err codemadness.org 70 i 43763Err codemadness.org 70 i 43767 Err codemadness.org 70 i 43768Dear FreeBSD Community Member,
Err codemadness.org 70 i 43766
Err codemadness.org 70 i 43764 It’s been a busy summer for the Foundation. From traveling around the globe spreading the word about FreeBSD to bringing on new team members to improve the Project’s Continuous Integration work, we’re very excited about what we’ve accomplished. Take a minute to check out the latest updates within our Foundation sponsored projects; read more about our advocacy efforts in Bangladesh and community building in Cambridge; don’t miss upcoming Travel Grant deadlines, and new Developer Summits; and be sure to find out how your support will ensure our progress continues into 2019.
Err codemadness.org 70 i 43765 We can’t do this without you! Happy reading!! Deb
##News Roundup
Err codemadness.org 70
i 43781 ###Project Trident: What’s taking so long?
Err codemadness.org 70 i 43788Err codemadness.org 70 i 43792 Err codemadness.org 70 i 43793The short answer is that it’s complicated.
Err codemadness.org 70 i 43791
Err codemadness.org 70 i 43789 Project Trident is quite literally a test of the new TrueOS build system. As expected, there have been quite a few bugs, undocumented features, and other optional bits that we discovered we needed that were not initially present. All of these things have to be addressed and retested in a constant back and forth process.
Err codemadness.org 70 i 43790 While Ken and JT are both experienced developers, neither has done this kind of release engineering before. JT has done some release engineering back in his Linux days, but the TrueOS and FreeBSD build system is very different. Both Ken and JT are learning a completely new way of building a FreeBSD/TrueOS distribution. Please keep in mind that no one has used this new TrueOS build system before, so Ken and JT want to not only provide a good Trident release, but also provide a model or template for other potential TrueOS distributions too!
Err codemadness.org 70 i 43798Err codemadness.org 70 i 43801 Err codemadness.org 70 i 43802Through perseverance, trial and error, and a lot of head-scratching we have reached the point of having successful builds. It took a while to get there, but now we are simply working out a few bugs with the new installer that Ken wrote as well as finding and fixing all the new Xorg configuration options which recently landed in FreeBSD. We also found that a number of services have been removed or replaced between TrueOS 18.03 and 18.06 so we are needing to adjust what we consider the “base” services for the desktop. All of these issues are being resolved and we are continually rebuilding and pulling in new patches from TrueOS as soon as they are committed.
Err codemadness.org 70 i 43800
Err codemadness.org 70 i 43799 In the meantime we have made an early BETA release of Trident available to the users in our Telegram Channel for those who want to help out in testing these early versions.
Err codemadness.org 70 i 43807Err codemadness.org 70 i 43811 Err codemadness.org 70 i 43812At the moment we are doing many iterations of testing and tweaking the install ISO and package configurations in order to ensure that all the critical functionality works out-of-box (networking, sound, video, basic apps, etc). While we do not foresee any other major delays, sometimes things happen that our outside of our control. For an example, one of the recent delays that hit recently was completely unexpected: we had a hard drive failure on our build server. Up until recently, The aptly named “Poseidon” build server was running a Micron m500dc drive, but that drive is now constantly reporting errors. Despite ordering a replacement Western Digital Blue SSD several weeks ago, we just received it this past week. The drive is now installed with the builder back to full functionality, but we did lose many precious days with the delay.
Err codemadness.org 70 i 43810
Err codemadness.org 70 i 43808 The build server for Project Trident is very similar to the one that JT donated to the TrueOS project. JT had another DL580 G7, so he donated one to the Trident Project for their build server. Poseidon also has 256GB RAM (64 x 4GB sticks) which is a smidge higher than what the TrueOS builder has.
Err codemadness.org 70 i 43809 Since we are talking about hardware, we probably should address another question we get often, “What Hardware are the devs testing on?” So let’s go ahead and answer that one now.
Developer Hardware
Err codemadness.org 70 i 43815JT: His main test box is a custom-built Intel i7 7700K system running 32GB RAM, dual Intel Optane 900P drives, and an Nvidia 1070 GTX with four 4K Acer Monitors. He also uses a Lenovo x250 ThinkPad alongside a desk full of x230t and x220 ThinkPads. One of which he gave away at SouthEast LinuxFest this year, which you can read about here. However it’s not done there, being a complete hardware hoarder, JT also tests on several Intel NUCs and his second laptop a Fujitsu t904, not to mention a Plethora of HP DL580 servers, a DL980 server, and a stack of BL485c, BL460c, and BL490c Blades in his HP c7000 and c3000 Bladecenter chassis. (Maybe it’s time for an intervention for his hardware collecting habits)
Err codemadness.org 70 i 43818Ken: For a laptop, he primarily uses a 3rd generation X1 Carbon, but also has an old Eee PC T101MT Netbook (dual core 1GHz, 2GB of memory) which he uses for verifying how well Trident works on low-end hardware. As far as workstations go, his office computer is an Intel i7 with an NVIDIA Geforce GTX 960 running three 4K monitors and he has a couple other custom-built workstations (1 AMD, 1 Intel+NVIDIA) at his home. Generally he assembled random workstations based on hardware that was given to him or that he could acquire cheap.
Err codemadness.org 70 i 43821Tim: is using a third gen X1 Carbon and a custom built desktop with an Intel Core i5-4440 CPU, 16 GiB RAM, Nvidia GeForce GTX 750 Ti, and a RealTek 8168 / 8111 network card.
Err codemadness.org 70 i 43824Rod: Rod uses… No one knows what Rod uses, It’s kinda like how many licks does it take to get to the center of a Tootsie-Roll Tootsie-Pop… the world may just never know.
Err codemadness.org 70 i 43827###NetBSD GSoC: pkgsrc config file versioning
Err codemadness.org 70 i 43833 Err codemadness.org 70 i 43834Err codemadness.org 70 i 43841Err codemadness.org 70 i 43851 Err codemadness.org 70 i 43852Packages may install code (both machine executable code and interpreted programs), documentation and manual pages, source headers, shared libraries and other resources such as graphic elements, sounds, fonts, document templates, translations and configuration files, or a combination of them.
Err codemadness.org 70 i 43850
Err codemadness.org 70 i 43842 Configuration files are usually the means through which the behaviour of software without a user interface is specified. This covers parts of the operating systems, network daemons and programs in general that don’t come with an interactive graphical or textual interface as the principal mean for setting options.
Err codemadness.org 70 i 43843 System wide configuration for operating system software tends to be kept under /etc, while configuration for software installed via pkgsrc ends up under LOCALBASE/etc (e.g., /usr/pkg/etc).
Err codemadness.org 70 i 43844 Software packaged as part of pkgsrc provides example configuration files, if any, which usually get extracted to LOCALBASE/share/examples/PKGBASE/.
Err codemadness.org 70 i 43845 Don’t worry: automatic merging is disabled by default, set $VCSAUTOMERGE to enable it.
Err codemadness.org 70 i 43846 In order to avoid breakage, installed configuration is backed up first in the VCS, separating user-modified files from files that have been already automatically merged in the past, in order to allow the administrator to easily restore the last manually edited file in case of breakage.
Err codemadness.org 70 i 43847 VCS functionality only applies to configuration files, not to rc.d scripts, and only if the environment variable $NOVCS is unset.
Err codemadness.org 70 i 43848 The version control system to be used as a backend can be set through $VCS. It default to RCS, the Revision Control System, which works only locally and doesn’t support atomic transactions.
Err codemadness.org 70 i 43849 Other backends such as CVS are supported and more will come; these, being used at the explicit request of the administrator, need to be already installed and placed in a directory part of $PATH.
Err codemadness.org 70 i 43857Err codemadness.org 70 i 43862 Err codemadness.org 70 i 43863pkgsrc is now able to deploy configuration from packages being installed from a remote, site-specific vcs repository.
Err codemadness.org 70 i 43861
Err codemadness.org 70 i 43858 User modified files are always tracked even if automerge functionality is not enabled, and a new tool, pkgconftrack(1), exists to manually store user changes made outside of package upgrade time.
Err codemadness.org 70 i 43859 Version Control software is executed as the same user running pkg_add or make install, unless the user is “root”. In this case, a separate, unprivileged user, pkgvcsconf, gets created with its own home directory and a working login shell (but no password). The home directory is not strictly necessary, it exists to facilitate migrations betweens repositories and vcs changes; it also serves to store keys used to access remote repositories.
Err codemadness.org 70 i 43860 Using git instead of rcs is simply done by setting VCS=git in pkg_install.conf
Err codemadness.org 70 i 43869Err codemadness.org 70 i 43873 Err codemadness.org 70 i 43874Support for configuration tracking is in scripts, pkginstall scripts, that get built into binary packages and are run by pkg_add upon installation. The idea behind the proposal suggested that users of the new feature should be able to store revisions of their installed configuration files, and of package-provided default, both in local or remote repositories. With this capability in place, it doesn’t take much to make the scripts “pull” configuration from a VCS repository at installation time.
Err codemadness.org 70 i 43872
Err codemadness.org 70 i 43870 That’s what setting VCSCONFPULL=yes in pkg_install.conf after having enabled VCSTRACK_CONF does: You are free to use official, third party prebuilt packages that have no customization in them, enable these options, and point pkgsrc to a private conf repository. If it contains custom configuration for the software you are installing, an attempt will be made to use it and install it on your system. If it fails, pkginstall will fall back to using the defaults that come inside the package. RC scripts are always deployed from the binary package, if existing and PKG_RCD_SCRIPTS=yes in pkg_install.conf or the environment.
Err codemadness.org 70 i 43871 This will be part of packages, not a separate solution like configuration management tools. It doesn’t support running scripts on the target system to customize the installation, it doesn’t come with its domain-specific language, it won’t run as a daemon or require remote logins to work. It’s quite limited in scope, but you can define a ROLE for your system in pkg_install.conf or in the environment, and pkgsrc will look for configuration you or your organization crafted for such a role (e.g., public, standalone webserver vs reverse proxy or node in a database cluster)
###A little bit of the one-time MacOS version still lingers in ZFS
Err codemadness.org 70 i 43877 Err codemadness.org 70 i 43878Err codemadness.org 70 i 43879Err codemadness.org 70 i 43882 Err codemadness.org 70 i 43883Once upon a time, Apple came very close to releasing ZFS as part of MacOS. Apple did this work in its own copy of the ZFS source base (as far as I know), but the people in Sun knew about it and it turns out that even today there is one little lingering sign of this hoped-for and perhaps prepared-for ZFS port in the ZFS source code. Well, sort of, because it’s not quite in code.
Err codemadness.org 70 i 43881
Err codemadness.org 70 i 43880 Lurking in the function that reads ZFS directories to turn (ZFS) directory entries into the filesystem independent format that the kernel wants is the following comment:
objnum = ZFS_DIRENT_OBJ(zap.za_first_integer);
Err codemadness.org 70
i 43884 /*
Err codemadness.org 70
i 43885 * MacOS X can extract the object type here such as:
Err codemadness.org 70
i 43886 * uint8_t type = ZFS_DIRENT_TYPE(zap.za_first_integer);
Err codemadness.org 70
i 43887 */
Err codemadness.org 70 i 43894Err codemadness.org 70 i 43898 Err codemadness.org 70 i 43899ZFS maintains file type information in directories. This information can’t be used on Solaris (and thus Illumos), where the overall kernel doesn’t have this in its filesystem independent directory entry format, but it could have been on MacOS (‘Darwin’), because MacOS is among the Unixes that support d_type. The comment itself dates all the way back to this 2007 commit, which includes the change ‘reserve bits in directory entry for file type’, which created the whole setup for this.
Err codemadness.org 70 i 43897
Err codemadness.org 70 i 43895 I don’t know if this file type support was added specifically to help out Apple’s MacOS X port of ZFS, but it’s certainly possible, and in 2007 it seems likely that this port was at least on the minds of ZFS developers. It’s interesting but understandable that FreeBSD didn’t seem to have influenced them in the same way, at least as far as comments in the source code go; this file type support is equally useful for FreeBSD, and the FreeBSD ZFS port dates to 2007 too (per this announcement).
Err codemadness.org 70 i 43896 Regardless of the exact reason that ZFS picked up maintaining file type information in directory entries, it’s quite useful for people on both FreeBSD and Linux that it does so. File type information is useful for any number of things and ZFS filesystems can (and do) provide this information on those Unixes, which helps make ZFS feel like a truly first class filesystem, one that supports all of the expected general system features.
##Beastie Bits
Err codemadness.org 70 i 43902 Err codemadness.org 70 i 43903##Feedback/Questions
Err codemadness.org 70 i 43917 Err codemadness.org 70 i 43918##Headlines
Err codemadness.org 70
i 43937 ###OpenBSD on the Microsoft Surface Go
Err codemadness.org 70 i 43940Err codemadness.org 70 i 43942 Err codemadness.org 70 i 43943For some reason I like small laptops and the constraints they place on me (as long as they’re still usable). I used a Dell Mini 9 for a long time back in the netbook days and was recently using an 11" MacBook Air as my primary development machine for many years. Recently Microsoft announced a smaller, cheaper version of its Surface tablets called Surface Go which piqued my interest.
Err codemadness.org 70 i 43941
Err codemadness.org 70 i 43948Err codemadness.org 70 i 43954 Err codemadness.org 70 i 43955The Surface Go is available in two hardware configurations: one with 4Gb of RAM and a 64Gb eMMC, and another with 8Gb of RAM with a 128Gb NVMe SSD. (I went with the latter.) Both ship with an Intel Pentium Gold 4415Y processor which is not very fast, but it’s certainly usable.
Err codemadness.org 70 i 43953
Err codemadness.org 70 i 43949 The tablet measures 9.65" across, 6.9" tall, and 0.3" thick. Its 10" diagonal 3:2 touchscreen is covered with Gorilla Glass and has a resolution of 1800x1200. The bezel is quite large, especially for such a small screen, but it makes sense on a device that is meant to be held, to avoid accidental screen touches.
Err codemadness.org 70 i 43950 The keyboard and touchpad are located on a separate, removable slab called the Surface Go Signature Type Cover which is sold separately. I opted for the “cobalt blue” cover which has a soft, cloth-like alcantara material. The cover attaches magnetically along the bottom edge of the device and presents USB-attached keyboard and touchpad devices. When the cover is folded up against the screen, it sends an ACPI sleep signal and is held to the screen magnetically. During normal use, the cover can be positioned flat on a surface or slightly raised up about 3/4" near the screen for better ergonomics. When using the device as a tablet, the cover can be rotated behind the screen which causes it to automatically stop sending keyboard and touchpad events until it is rotated back around.
Err codemadness.org 70 i 43951 The keyboard has a decent amount of key travel and a good layout, with Home/End/Page Up/Page Down being accessible via Fn+Left/Right/Up/Down but also dedicated Home/End/Page Up/Page Down keys on the F9-F12 keys which I find quite useful since the keyboard layout is somewhat small. By default, the F1-F12 keys do not send F1-F12 key codes and Fn must be used, either held down temporarily or Fn pressed by itself to enable Fn-lock which annoyingly keeps the bright Fn LED illuminated. The keys are backlit with three levels of adjustment, handled by the keyboard itself with the F7 key.
Err codemadness.org 70 i 43952 The touchpad on the Type Cover is a Windows Precision Touchpad connected via USB HID. It has a decent click feel but when the cover is angled up instead of flat on a surface, it sounds a bit hollow and cheap.
Err codemadness.org 70 i 43960Err codemadness.org 70 i 43967 Err codemadness.org 70 i 43968The touchscreen is powered by an Elantech chip connected via HID-over-i2c, which also supports pen input. A Surface Pen digitizer is available separately from Microsoft and comes in the same colors as the Type Covers. The pen works without any pairing necessary, though the top button on it works over Bluetooth so it requires pairing to use. Either way, the pen requires an AAAA battery inside it to operate. The Surface Pen can attach magnetically to the left side of the screen when not in use.
Err codemadness.org 70 i 43966
Err codemadness.org 70 i 43961 A kickstand can swing out behind the display to use the tablet in a laptop form factor, which can adjust to any angle up to about 170 degrees. The kickstand stays firmly in place wherever it is positioned, which also means it requires a bit of force to pull it out when initially placing the Surface Go on a desk.
Err codemadness.org 70 i 43962 Along the top of the display are a power button and physical volume rocker buttons. Along the right side are the 3.5mm headphone jack, USB-C port, power port, and microSD card slot located behind the kickstand.
Err codemadness.org 70 i 43963 Charging can be done via USB-C or the dedicated charge port, which accommodates a magnetically-attached, thin barrel similar to Apple’s first generation MagSafe adapter. The charging cable has a white LED that glows when connected, which is kind of annoying since it’s near the mid-line of the screen rather than down by the keyboard. Unlike Apple’s MagSafe, the indicator light does not indicate whether the battery is charged or not. The barrel charger plug can be placed up or down, but in either direction I find it puts an awkward strain on the power cable coming out of it due to the vertical position of the port.
Err codemadness.org 70 i 43964 Wireless connectivity is provided by a Qualcomm Atheros QCA6174 802.11ac chip which also provides Bluetooth connectivity.
Err codemadness.org 70 i 43965 Most of the sensors on the device such as the gyroscope and ambient light sensor are connected behind an Intel Sensor Hub PCI device, which provides some power savings as the host CPU doesn’t have to poll the sensors all the time.
Err codemadness.org 70 i 43973Err codemadness.org 70 i 43975 Err codemadness.org 70 i 43976The Surface Go’s BIOS/firmware menu can be entered by holding down the Volume Up button, then pressing and releasing the Power button, and releasing Volume Up when the menu appears. Secure Boot as well as various hardware components can be disabled in this menu. Boot order can also be adjusted. A temporary boot menu can be brought up the same way but using Volume Down instead.
Err codemadness.org 70 i 43974
###FreeBSD Foundation Update, August 2018
Err codemadness.org 70 i 43979 Err codemadness.org 70 i 43980Err codemadness.org 70 i 43985Err codemadness.org 70 i 43989 Err codemadness.org 70 i 43990Dear FreeBSD Community Member,
Err codemadness.org 70 i 43988
Err codemadness.org 70 i 43986 It’s been a busy summer for the Foundation. From traveling around the globe spreading the word about FreeBSD to bringing on new team members to improve the Project’s Continuous Integration work, we’re very excited about what we’ve accomplished. Take a minute to check out the latest updates within our Foundation sponsored projects; read more about our advocacy efforts in Bangladesh and community building in Cambridge; don’t miss upcoming Travel Grant deadlines, and new Developer Summits; and be sure to find out how your support will ensure our progress continues into 2019.
Err codemadness.org 70 i 43987 We can’t do this without you! Happy reading!! Deb
##News Roundup
Err codemadness.org 70
i 44003 ###Project Trident: What’s taking so long?
Err codemadness.org 70 i 44010Err codemadness.org 70 i 44014 Err codemadness.org 70 i 44015The short answer is that it’s complicated.
Err codemadness.org 70 i 44013
Err codemadness.org 70 i 44011 Project Trident is quite literally a test of the new TrueOS build system. As expected, there have been quite a few bugs, undocumented features, and other optional bits that we discovered we needed that were not initially present. All of these things have to be addressed and retested in a constant back and forth process.
Err codemadness.org 70 i 44012 While Ken and JT are both experienced developers, neither has done this kind of release engineering before. JT has done some release engineering back in his Linux days, but the TrueOS and FreeBSD build system is very different. Both Ken and JT are learning a completely new way of building a FreeBSD/TrueOS distribution. Please keep in mind that no one has used this new TrueOS build system before, so Ken and JT want to not only provide a good Trident release, but also provide a model or template for other potential TrueOS distributions too!
Err codemadness.org 70 i 44020Err codemadness.org 70 i 44023 Err codemadness.org 70 i 44024Through perseverance, trial and error, and a lot of head-scratching we have reached the point of having successful builds. It took a while to get there, but now we are simply working out a few bugs with the new installer that Ken wrote as well as finding and fixing all the new Xorg configuration options which recently landed in FreeBSD. We also found that a number of services have been removed or replaced between TrueOS 18.03 and 18.06 so we are needing to adjust what we consider the “base” services for the desktop. All of these issues are being resolved and we are continually rebuilding and pulling in new patches from TrueOS as soon as they are committed.
Err codemadness.org 70 i 44022
Err codemadness.org 70 i 44021 In the meantime we have made an early BETA release of Trident available to the users in our Telegram Channel for those who want to help out in testing these early versions.
Err codemadness.org 70 i 44029Err codemadness.org 70 i 44033 Err codemadness.org 70 i 44034At the moment we are doing many iterations of testing and tweaking the install ISO and package configurations in order to ensure that all the critical functionality works out-of-box (networking, sound, video, basic apps, etc). While we do not foresee any other major delays, sometimes things happen that our outside of our control. For an example, one of the recent delays that hit recently was completely unexpected: we had a hard drive failure on our build server. Up until recently, The aptly named “Poseidon” build server was running a Micron m500dc drive, but that drive is now constantly reporting errors. Despite ordering a replacement Western Digital Blue SSD several weeks ago, we just received it this past week. The drive is now installed with the builder back to full functionality, but we did lose many precious days with the delay.
Err codemadness.org 70 i 44032
Err codemadness.org 70 i 44030 The build server for Project Trident is very similar to the one that JT donated to the TrueOS project. JT had another DL580 G7, so he donated one to the Trident Project for their build server. Poseidon also has 256GB RAM (64 x 4GB sticks) which is a smidge higher than what the TrueOS builder has.
Err codemadness.org 70 i 44031 Since we are talking about hardware, we probably should address another question we get often, “What Hardware are the devs testing on?” So let’s go ahead and answer that one now.
Developer Hardware
Err codemadness.org 70 i 44037JT: His main test box is a custom-built Intel i7 7700K system running 32GB RAM, dual Intel Optane 900P drives, and an Nvidia 1070 GTX with four 4K Acer Monitors. He also uses a Lenovo x250 ThinkPad alongside a desk full of x230t and x220 ThinkPads. One of which he gave away at SouthEast LinuxFest this year, which you can read about here. However it’s not done there, being a complete hardware hoarder, JT also tests on several Intel NUCs and his second laptop a Fujitsu t904, not to mention a Plethora of HP DL580 servers, a DL980 server, and a stack of BL485c, BL460c, and BL490c Blades in his HP c7000 and c3000 Bladecenter chassis. (Maybe it’s time for an intervention for his hardware collecting habits)
Err codemadness.org 70 i 44040Ken: For a laptop, he primarily uses a 3rd generation X1 Carbon, but also has an old Eee PC T101MT Netbook (dual core 1GHz, 2GB of memory) which he uses for verifying how well Trident works on low-end hardware. As far as workstations go, his office computer is an Intel i7 with an NVIDIA Geforce GTX 960 running three 4K monitors and he has a couple other custom-built workstations (1 AMD, 1 Intel+NVIDIA) at his home. Generally he assembled random workstations based on hardware that was given to him or that he could acquire cheap.
Err codemadness.org 70 i 44043Tim: is using a third gen X1 Carbon and a custom built desktop with an Intel Core i5-4440 CPU, 16 GiB RAM, Nvidia GeForce GTX 750 Ti, and a RealTek 8168 / 8111 network card.
Err codemadness.org 70 i 44046Rod: Rod uses… No one knows what Rod uses, It’s kinda like how many licks does it take to get to the center of a Tootsie-Roll Tootsie-Pop… the world may just never know.
Err codemadness.org 70 i 44049###NetBSD GSoC: pkgsrc config file versioning
Err codemadness.org 70 i 44055 Err codemadness.org 70 i 44056Err codemadness.org 70 i 44063Err codemadness.org 70 i 44073 Err codemadness.org 70 i 44074Packages may install code (both machine executable code and interpreted programs), documentation and manual pages, source headers, shared libraries and other resources such as graphic elements, sounds, fonts, document templates, translations and configuration files, or a combination of them.
Err codemadness.org 70 i 44072
Err codemadness.org 70 i 44064 Configuration files are usually the means through which the behaviour of software without a user interface is specified. This covers parts of the operating systems, network daemons and programs in general that don’t come with an interactive graphical or textual interface as the principal mean for setting options.
Err codemadness.org 70 i 44065 System wide configuration for operating system software tends to be kept under /etc, while configuration for software installed via pkgsrc ends up under LOCALBASE/etc (e.g., /usr/pkg/etc).
Err codemadness.org 70 i 44066 Software packaged as part of pkgsrc provides example configuration files, if any, which usually get extracted to LOCALBASE/share/examples/PKGBASE/.
Err codemadness.org 70 i 44067 Don’t worry: automatic merging is disabled by default, set $VCSAUTOMERGE to enable it.
Err codemadness.org 70 i 44068 In order to avoid breakage, installed configuration is backed up first in the VCS, separating user-modified files from files that have been already automatically merged in the past, in order to allow the administrator to easily restore the last manually edited file in case of breakage.
Err codemadness.org 70 i 44069 VCS functionality only applies to configuration files, not to rc.d scripts, and only if the environment variable $NOVCS is unset.
Err codemadness.org 70 i 44070 The version control system to be used as a backend can be set through $VCS. It default to RCS, the Revision Control System, which works only locally and doesn’t support atomic transactions.
Err codemadness.org 70 i 44071 Other backends such as CVS are supported and more will come; these, being used at the explicit request of the administrator, need to be already installed and placed in a directory part of $PATH.
Err codemadness.org 70 i 44079Err codemadness.org 70 i 44084 Err codemadness.org 70 i 44085pkgsrc is now able to deploy configuration from packages being installed from a remote, site-specific vcs repository.
Err codemadness.org 70 i 44083
Err codemadness.org 70 i 44080 User modified files are always tracked even if automerge functionality is not enabled, and a new tool, pkgconftrack(1), exists to manually store user changes made outside of package upgrade time.
Err codemadness.org 70 i 44081 Version Control software is executed as the same user running pkg_add or make install, unless the user is “root”. In this case, a separate, unprivileged user, pkgvcsconf, gets created with its own home directory and a working login shell (but no password). The home directory is not strictly necessary, it exists to facilitate migrations betweens repositories and vcs changes; it also serves to store keys used to access remote repositories.
Err codemadness.org 70 i 44082 Using git instead of rcs is simply done by setting VCS=git in pkg_install.conf
Err codemadness.org 70 i 44091Err codemadness.org 70 i 44095 Err codemadness.org 70 i 44096Support for configuration tracking is in scripts, pkginstall scripts, that get built into binary packages and are run by pkg_add upon installation. The idea behind the proposal suggested that users of the new feature should be able to store revisions of their installed configuration files, and of package-provided default, both in local or remote repositories. With this capability in place, it doesn’t take much to make the scripts “pull” configuration from a VCS repository at installation time.
Err codemadness.org 70 i 44094
Err codemadness.org 70 i 44092 That’s what setting VCSCONFPULL=yes in pkg_install.conf after having enabled VCSTRACK_CONF does: You are free to use official, third party prebuilt packages that have no customization in them, enable these options, and point pkgsrc to a private conf repository. If it contains custom configuration for the software you are installing, an attempt will be made to use it and install it on your system. If it fails, pkginstall will fall back to using the defaults that come inside the package. RC scripts are always deployed from the binary package, if existing and PKG_RCD_SCRIPTS=yes in pkg_install.conf or the environment.
Err codemadness.org 70 i 44093 This will be part of packages, not a separate solution like configuration management tools. It doesn’t support running scripts on the target system to customize the installation, it doesn’t come with its domain-specific language, it won’t run as a daemon or require remote logins to work. It’s quite limited in scope, but you can define a ROLE for your system in pkg_install.conf or in the environment, and pkgsrc will look for configuration you or your organization crafted for such a role (e.g., public, standalone webserver vs reverse proxy or node in a database cluster)
###A little bit of the one-time MacOS version still lingers in ZFS
Err codemadness.org 70 i 44099 Err codemadness.org 70 i 44100Err codemadness.org 70 i 44101Err codemadness.org 70 i 44104 Err codemadness.org 70 i 44105Once upon a time, Apple came very close to releasing ZFS as part of MacOS. Apple did this work in its own copy of the ZFS source base (as far as I know), but the people in Sun knew about it and it turns out that even today there is one little lingering sign of this hoped-for and perhaps prepared-for ZFS port in the ZFS source code. Well, sort of, because it’s not quite in code.
Err codemadness.org 70 i 44103
Err codemadness.org 70 i 44102 Lurking in the function that reads ZFS directories to turn (ZFS) directory entries into the filesystem independent format that the kernel wants is the following comment:
objnum = ZFS_DIRENT_OBJ(zap.za_first_integer);
Err codemadness.org 70
i 44106 /*
Err codemadness.org 70
i 44107 * MacOS X can extract the object type here such as:
Err codemadness.org 70
i 44108 * uint8_t type = ZFS_DIRENT_TYPE(zap.za_first_integer);
Err codemadness.org 70
i 44109 */
Err codemadness.org 70 i 44116Err codemadness.org 70 i 44120 Err codemadness.org 70 i 44121ZFS maintains file type information in directories. This information can’t be used on Solaris (and thus Illumos), where the overall kernel doesn’t have this in its filesystem independent directory entry format, but it could have been on MacOS (‘Darwin’), because MacOS is among the Unixes that support d_type. The comment itself dates all the way back to this 2007 commit, which includes the change ‘reserve bits in directory entry for file type’, which created the whole setup for this.
Err codemadness.org 70 i 44119
Err codemadness.org 70 i 44117 I don’t know if this file type support was added specifically to help out Apple’s MacOS X port of ZFS, but it’s certainly possible, and in 2007 it seems likely that this port was at least on the minds of ZFS developers. It’s interesting but understandable that FreeBSD didn’t seem to have influenced them in the same way, at least as far as comments in the source code go; this file type support is equally useful for FreeBSD, and the FreeBSD ZFS port dates to 2007 too (per this announcement).
Err codemadness.org 70 i 44118 Regardless of the exact reason that ZFS picked up maintaining file type information in directory entries, it’s quite useful for people on both FreeBSD and Linux that it does so. File type information is useful for any number of things and ZFS filesystems can (and do) provide this information on those Unixes, which helps make ZFS feel like a truly first class filesystem, one that supports all of the expected general system features.
##Beastie Bits
Err codemadness.org 70 i 44124 Err codemadness.org 70 i 44125##Feedback/Questions
Err codemadness.org 70 i 44139 Err codemadness.org 70 i 44140##Headlines
Err codemadness.org 70
i 44486 ###An Insight into the Future of TrueOS BSD and Project Trident
Err codemadness.org 70 i 44489Err codemadness.org 70 i 44491 Err codemadness.org 70 i 44492Last month, TrueOS announced that they would be spinning off their desktop offering. The team behind the new project, named Project Trident, have been working furiously towards their first release. They did take a few minutes to answer some of our question about Project Trident and TrueOS. I would like to thank JT and Ken for taking the time to compile these answers.
Err codemadness.org 70 i 44490
Err codemadness.org 70 i 44497Err codemadness.org 70 i 44499 Err codemadness.org 70 i 44500Project Trident: Project Trident is the continuation of the TrueOS Desktop. Essentially, it is the continuation of the primary “TrueOS software” that people have been using for the past 2 years. The continuing evolution of the entire TrueOS project has reached a stage where it became necessary to reorganize the project. To understand this change, it is important to know the history of the TrueOS project.
Err codemadness.org 70 i 44498
Err codemadness.org 70 i 44501Err codemadness.org 70 i 44503 Err codemadness.org 70 i 44504Originally, Kris Moore created PC-BSD. This was a Desktop release of FreeBSD focused on providing a simple and user-friendly graphical experience for FreeBSD. PC-BSD grew and matured over many years. During the evolution of PC-BSD, many users began asking for a server focused version of the software. Kris agreed, and TrueOS was born as a scaled down server version of PC-BSD. In late 2016, more contributors and growth resulted in significant changes to the PC-BSD codebase. Because the new development was so markedly different from the original PC-BSD design, it was decided to rebrand the project.
Err codemadness.org 70 i 44502
Err codemadness.org 70 i 44505Err codemadness.org 70 i 44507 Err codemadness.org 70 i 44508TrueOS was chosen as the name for this new direction for PC-BSD as the project had grown beyond providing only a graphical front to FreeBSD and was beginning to make fundamental changes to the FreeBSD operating system. One of these changes was moving PC-BSD from being based on each FreeBSD Release to TrueOS being based on the active and less outdated FreeBSD Current. Other major changes are using OpenRC for service management and being more aggressive about addressing long-standing issues with the FreeBSD release process. TrueOS moved toward a rolling release cycle, twice a year, which tested and merged FreeBSD changes directly from the developer instead of waiting months or even years for the FreeBSD review process to finish. TrueOS also deprecated and removed obsolete technology much more regularly.
Err codemadness.org 70 i 44506
Err codemadness.org 70 i 44509Err codemadness.org 70 i 44511 Err codemadness.org 70 i 44512As the TrueOS Project grew, the developers found these changes were needed by other FreeBSD-based projects. These projects began expressing interest in using TrueOS rather than FreeBSD as the base for their project. This demonstrated that TrueOS needed to again evolve into a distribution framework for any BSD project to use. This allows port maintainers and source developers from any BSD project to pool their resources and use the same source repositories while allowing every distribution to still customize, build, and release their own self-contained project. The result is a natural split of the traditional TrueOS team. There were now naturally two teams in the TrueOS project: those working on the build infrastructure and FreeBSD enhancements – the “core” part of the project, and those working on end-user experience and utility – the “desktop” part of the project.
Err codemadness.org 70 i 44510
Err codemadness.org 70 i 44513Err codemadness.org 70 i 44515 Err codemadness.org 70 i 44516When the decision was made to formally split the projects, the obvious question that arose was what to call the “Desktop” project. As TrueOS was already positioned to be a BSD distribution platform, the developers agreed the desktop side should pick a new name. There were other considerations too, one notable being that we were concerned that if we continued to call the desktop project “TrueOS Desktop”, it would prevent people from considering TrueOS as the basis for their distribution because of misconceptions that TrueOS was a desktop-focused OS. It also helps to “level the playing field” for other desktop distributions like GhostBSD so that TrueOS is not viewed as having a single “blessed” desktop version.
Err codemadness.org 70 i 44514
Err codemadness.org 70 i 44521Err codemadness.org 70 i 44528 Err codemadness.org 70 i 44529Project Trident: TrueOS has already added a number of features to FreeBSD:
Err codemadness.org 70 i 44527
Err codemadness.org 70 i 44522 OpenRC replaces rc.d for service management
Err codemadness.org 70 i 44523 LibreSSL in base
Err codemadness.org 70 i 44524 Root NSS certificates out-of-box
Err codemadness.org 70 i 44525 Scriptable installations (pc-sysinstall)
Err codemadness.org 70 i 44526 The full list of changes can be seen on the TrueOS repository (https://github.com/trueos/trueos/blob/trueos-master/README.md). This list does change quite regularly as FreeBSD development itself changes.
Err codemadness.org 70 i 44534Err codemadness.org 70 i 44536 Err codemadness.org 70 i 44537Project Trident: Historically, one of the biggest hurdles for creating a desktop version of FreeBSD is that the build options for packages are tuned for servers rather than desktops. This means a desktop distribution cannot use the pre-built packages from FreeBSD and must build, use, and maintain a custom package repository. Maintaining a fork of the FreeBSD ports tree is no trivial task. TrueOS has created a full distribution framework so now all it takes to create a custom build of FreeBSD is a single JSON manifest file. There is now a single “source of truth” for the source and ports repositories that is maintained by the TrueOS team and regularly tagged with “stable” build markers. All projects can use this framework, which makes updates trivial.
Err codemadness.org 70 i 44535
Err codemadness.org 70 i 44542Err codemadness.org 70 i 44544 Err codemadness.org 70 i 44545Project Trident: That is the hope. Historically, creating a desktop-centered BSD has required a lot of specialized knowledge. Not only do most people not have this knowledge, but many do not even know what they need to learn until they start troubleshooting. TrueOS is trying to drastically simplify this process to enable the wider Open Source community to experiment, contribute, and enjoy BSD-based projects.
Err codemadness.org 70 i 44543
Err codemadness.org 70 i 44550Err codemadness.org 70 i 44552 Err codemadness.org 70 i 44553Project Trident: Project Trident will be dependent on TrueOS for ARM support. The developers have talked about the possibility of supporting ARM64 and RISC-V architectures, but it is not possible at the current time. If more Open Source contributors want to help develop ARM and RISC-V support, the TrueOS project is definitely willing to help test and integrate that code.
Err codemadness.org 70 i 44551
Err codemadness.org 70 i 44558Err codemadness.org 70 i 44560 Err codemadness.org 70 i 44561Project Trident: Long-term, almost nothing. Lumina is still the desktop environment for Project Trident and will continue to be developed and enhanced alongside Project Trident just as it was for TrueOS. Short-term, we will be delaying the release of Lumina 2.0 and will release an updated version of the 1.x branch (1.5.0) instead. This is simply due to all the extra overhead to get Project Trident up and running. When things settle down into a rhythm, the development of Lumina will pick up once again.
Err codemadness.org 70 i 44559
Err codemadness.org 70 i 44566Err codemadness.org 70 i 44568 Err codemadness.org 70 i 44569Project Trident: While Lumina is included by default, all of the other popular desktop environments will be available in the package repo exactly as they had been before.
Err codemadness.org 70 i 44567
Err codemadness.org 70 i 44574Err codemadness.org 70 i 44576 Err codemadness.org 70 i 44577Project Trident: Steam is still unavailable natively on FreeBSD, so we do not have any plans to ship it out of the box currently. In the meantime, we highly recommend installing the Windows version of Steam through the PlayOnBSD utility.
Err codemadness.org 70 i 44575
Err codemadness.org 70 i 44582Err codemadness.org 70 i 44584 Err codemadness.org 70 i 44585Project Trident: The AppCafe is the name of the graphical interface for the “pkg” utility integrated into the SysAdm client created by TrueOS. This hasn’t changed. SysAdm, the graphical client, and by extension AppCafe are still available for all TrueOS-based distributions to use.
Err codemadness.org 70 i 44583
Err codemadness.org 70 i 44590Err codemadness.org 70 i 44592 Err codemadness.org 70 i 44593Project Trident: iXsystems is the first corporate sponsor of Project Trident and we are always open to other sponsorships as well. We would prefer smaller individual contributions from the community, but we understand that larger project needs or special-purpose goals are much more difficult to achieve without allowing larger corporate sponsorships as well. In either case, Project Trident is always looking out for the best interests of the community and will not allow intrusive or harmful code to enter the project even if a company or individual tries to make that code part of a sponsorship deal.
Err codemadness.org 70 i 44591
Err codemadness.org 70 i 44598Err codemadness.org 70 i 44600 Err codemadness.org 70 i 44601Project Trident: Yes! That was a primary reason for TrueOS to start tracking the CURRENT branch of FreeBSD in 2016. This allows for the changes that FreeBSD developers are making, including new hardware support, to be available much sooner than if we followed the FreeBSD release cycle.
Err codemadness.org 70 i 44599
Err codemadness.org 70 i 44606Err codemadness.org 70 i 44608 Err codemadness.org 70 i 44609Project Trident: Right now we are targeting a late August release date. This is because Project Trident is “kicking the wheels” on the new TrueOS distribution system. We want to ensure everything is working smoothly before we release. Going forward, we plan on having regular package updates every week or two for the end-user packages and a new release of Trident with an updated OS version every 6 months. This will follow the TrueOS release schedule with a small time offset.
Err codemadness.org 70 i 44607
###pf-badhost: Stop the evil doers in their tracks!
Err codemadness.org 70 i 44612 Err codemadness.org 70 i 44613Err codemadness.org 70 i 44614Err codemadness.org 70 i 44619 Err codemadness.org 70 i 44620pf-badhost is a simple, easy to use badhost blocker that uses the power of the pf firewall to block many of the internet’s biggest irritants. Annoyances such as ssh bruteforcers are largely eliminated. Shodan scans and bots looking for webservers to abuse are stopped dead in their tracks. When used to filter outbound traffic, pf-badhost blocks many seedy, spooky malware containing and/or compromised webhosts.
Err codemadness.org 70 i 44618
Err codemadness.org 70 i 44615 Filtering performance is exceptional, as the badhost list is stored in a pf table. To quote the OpenBSD FAQ page regarding tables: “the lookup time on a table holding 50,000 addresses is only slightly more than for one holding 50 addresses.”
Err codemadness.org 70 i 44616 pf-badhost is simple and powerful. The blocklists are pulled from quality, trusted sources. The ‘Firehol’, ‘Emerging Threats’ and ‘Binary Defense’ block lists are used as they are popular, regularly updated lists of the internet’s most egregious offenders. The pf-badhost.sh script can easily be expanded to use additional or alternate blocklists.
Err codemadness.org 70 i 44617 pf-badhost works best when used in conjunction with unbound-adblock for the ultimate badhost blocking.
DigitalOcean
Err codemadness.org 70
i 44629 https://do.co/bsdnow
###FLASHBACK: FreeBSDCon’99: Fans of Linux’s lesser-known sibling gather for the first time
Err codemadness.org 70 i 44632 Err codemadness.org 70 i 44633Err codemadness.org 70 i 44634Err codemadness.org 70 i 44643 Err codemadness.org 70 i 44644FreeBSD, a port of BSD Unix to Intel, has been around almost as long as Linux has – but without the media hype. Its developer and user community recently got a chance to get together for the first time, and they did it in the city where BSD – the Berkeley Software Distribution – was born some 25 years ago.
Err codemadness.org 70 i 44642
Err codemadness.org 70 i 44635 October 17, 1999 marked a milestone in the history of FreeBSD – the first FreeBSD conference was held in the city where it all began, Berkeley, CA. Over 300 developers, users, and interested parties attended from around the globe.
Err codemadness.org 70 i 44636 This was easily 50 percent more people than the conference organizers had expected. This first conference was meant to be a gathering mostly for developers and FreeBSD advocates. The turnout was surprisingly (and gratifyingly) large.
Err codemadness.org 70 i 44637 In fact, attendance exceeded expectations so much that, for instance, Kirk McKusick had to add a second, identical tutorial on FreeBSD internals, because it was impossible for everyone to attend the first!
Err codemadness.org 70 i 44638 But for a first-ever conference, I was impressed by how smoothly everything seemed to go. Sessions started on time, and the sessions I attended were well-run; nothing seemed to be too cold, dark, loud, late, or off-center.
Err codemadness.org 70 i 44639 Of course, the best part about a conference such as this one is the opportunity to meet with other people who share similar interests. Lunches and breaks were a good time to meet people, as was the Tuesday night beer bash.
Err codemadness.org 70 i 44640 The Wednesday night reception was of a type unusual for the technical conferences I usually attend – a three-hour Hornblower dinner cruise on San Francisco Bay. Not only did we all enjoy excellent food and company, but we all got to go up on deck and watch the lights of San Francisco and Berkeley as we drifted by. Although it’s nice when a conference attracts thousands of attendees, there are some things that can only be done with smaller groups of people; this was one of them.
Err codemadness.org 70 i 44641 In short, this was a tiny conference, but a well-run one.
Err codemadness.org 70 i 44649Err codemadness.org 70 i 44658 Err codemadness.org 70 i 44659Although it was a relatively small conference, the number and quality of the sessions belied the size. Each of the three days of the conference featured a different keynote speaker. In addition to Jordan Hubbard, Jeremy Allison spoke on “Samba Futures” on day two, and Brian Behlendorf gave a talk on “FreeBSD and Apache: A Perfect Combo” to start off the third day.
Err codemadness.org 70 i 44657
Err codemadness.org 70 i 44650 The conference sessions themselves were divided into six tracks: advocacy, business, development, networking, security, and panels. The panels track featured three different panels, made up of three different slices of the community: the FreeBSD core team, a press panel, and a prominent user panel with representatives from such prominent commercial users as Yahoo! and USWest.
Err codemadness.org 70 i 44651 I was especially interested in Apple Computer’s talk in the development track. Wilfredo Sanchez, technical lead for open source projects at Apple (no, that’s not an oxymoron!) spoke about Apple’s Darwin project, the company’s operating system road map, and the role of BSD (and, specifically, FreeBSD) in Apple’s plans.
Err codemadness.org 70 i 44652 Apple and Unix have had a long and uneasy history, from the Lisa through the A/UX project to today. Personally, I’m very optimistic about the chances for the Darwin project to succeed. Apple’s core OS kernel team has chosen FreeBSD as its reference platform. I’m looking forward to what this partnership will bring to both sides.
Err codemadness.org 70 i 44653 Other development track sessions included in-depth tutorials on writing device drivers, basics of the Vinum Volume Manager, Fibre Channel, development models (the open repository model), and the FreeBSD Documentation Project (FDP). If you’re interested in contributing to the FreeBSD project, the FDP is a good place to start.
Err codemadness.org 70 i 44654 Advocacy sessions included “How One Person Can Make a Difference” (a timeless topic that would find a home at any technical conference!) and “Starting and Managing A User Group” (trials and tribulations as well as rewards).
Err codemadness.org 70 i 44655 The business track featured speakers from three commercial users of FreeBSD: Cybernet, USWest, and Applix. Applix presented its port of Applixware Office for FreeBSD and explained how Applix has taken the core services of Applixware into open source.
Err codemadness.org 70 i 44656 Commercial applications and open source were once a rare combination; we can only hope the trend away from that state of affairs will continue.
Err codemadness.org 70 i 44664Err codemadness.org 70 i 44673 Err codemadness.org 70 i 44674The use of FreeBSD in embedded applications is increasing as well – and it is increasing at the same rate that hardware power is. These days, even inexpensive systems are able to run a BSD kernel.
Err codemadness.org 70 i 44672
Err codemadness.org 70 i 44665 The BSD license and the solid TCP/IP stack prove significant enticements to this market as well. (Unlike the GNU Public License, the BSD license does not require that vendors make derivative works open source.)
Err codemadness.org 70 i 44666 Companies such as USWest and Verio use FreeBSD for a wide variety of different Internet services.
Err codemadness.org 70 i 44667 Yahoo! and Hotmail are examples of companies that use FreeBSD extensively for more specific purposes. Yahoo!, for example, has many hundreds of FreeBSD boxes, and Hotmail has almost 2000 FreeBSD machines at its data center in the San Francisco Bay area.
Err codemadness.org 70 i 44668 Hotmail is owned by Microsoft, so the fact that it runs FreeBSD is a secret. Don’t tell anyone…
Err codemadness.org 70 i 44669 When asked to comment on the increasing commercial interest in BSD, Hubbard said that FreeBSD is learning the Red Hat lesson. “Walnut Creek and others with business interests in FreeBSD have learned a few things from the Red Hat IPO,” he said, “and nobody is just sitting around now, content with business as usual. It’s clearly business as unusual in the open source world today.”
Err codemadness.org 70 i 44670 Hubbard had also singled out some of BSD’s commercial partners, such as Whistle Communications, for praise in his opening day keynote. These partners play a key role in moving the project forward, he said, by contributing various enhancements and major new systems, such as Netgraph, as well as by contributing paid employee time spent on FreeBSD.
Err codemadness.org 70 i 44671 Even short FreeBSD-related contacts can yield good results, Hubbard said. An example of this is the new jail() security code introduced in FreeBSD 3.x and 4.0, which was contributed by R & D Associates. A number of ISPs are also now donating the hardware and bandwidth that allows the project to provide more resource mirrors and experimental development sites.
Err codemadness.org 70 i 44679Err codemadness.org 70 i 44683 Err codemadness.org 70 i 44684And speaking of corporate sponsors, thanks go to Walnut Creek for sponsoring the conference, and to Yahoo! for covering all the expenses involved in bringing the entire FreeBSD core team to Berkeley.
Err codemadness.org 70 i 44682
Err codemadness.org 70 i 44680 As a fan of FreeBSD, I’m happy to see that the project has finally produced a conference. It was time: many of the 16 core team members had been working together on a regular basis for nearly seven years without actually meeting face to face.
Err codemadness.org 70 i 44681 It’s been an interesting year for open source projects. I’m looking forward to the next year – and the next BSD conference – to be even better.
##News Roundup
Err codemadness.org 70
i 44687 ###OpenBSD Recommends: Disable SMT/Hyperthreading in all Intel BIOSes
Two recently disclosed hardware bugs affected Intel cpus: Err codemadness.org 70
i 44690 Err codemadness.org 70
i 44691 - TLBleed Err codemadness.org 70
i 44692 Err codemadness.org 70
i 44693 - T1TF (the name "Foreshadow" refers to 1 of 3 aspects of this Err codemadness.org 70
i 44694 bug, more aspects are surely on the way) Err codemadness.org 70
i 44695 Err codemadness.org 70
i 44696 Solving these bugs requires new cpu microcode, a coding workaround, Err codemadness.org 70
i 44697 *AND* the disabling of SMT / Hyperthreading. Err codemadness.org 70
i 44698 Err codemadness.org 70
i 44699 SMT is fundamentally broken because it shares resources between the two Err codemadness.org 70
i 44700 cpu instances and those shared resources lack security differentiators. Err codemadness.org 70
i 44701 Some of these side channel attacks aren't trivial, but we can expect Err codemadness.org 70
i 44702 most of them to eventually work and leak kernel or cross-VM memory in Err codemadness.org 70
i 44703 common usage circumstances, even such as javascript directly in a Err codemadness.org 70
i 44704 browser. Err codemadness.org 70
i 44705 Err codemadness.org 70
i 44706 There will be more hardware bugs and artifacts disclosed. Due to the Err codemadness.org 70
i 44707 way SMT interacts with speculative execution on Intel cpus, I expect SMT Err codemadness.org 70
i 44708 to exacerbate most of the future problems. Err codemadness.org 70
i 44709 Err codemadness.org 70
i 44710 A few months back, I urged people to disable hyperthreading on all Err codemadness.org 70
i 44711 Intel cpus. I need to repeat that: Err codemadness.org 70
i 44712 Err codemadness.org 70
i 44713 DISABLE HYPERTHREADING ON ALL YOUR INTEL MACHINES IN THE BIOS. Err codemadness.org 70
i 44714 Err codemadness.org 70
i 44715 Also, update your BIOS firmware, if you can. Err codemadness.org 70
i 44716 Err codemadness.org 70
i 44717 OpenBSD -current (and therefore 6.4) will not use hyperthreading if it Err codemadness.org 70
i 44718 is enabled, and will update the cpu microcode if possible. Err codemadness.org 70
i 44719 Err codemadness.org 70
i 44720 But what about 6.2 and 6.3? Err codemadness.org 70
i 44721 Err codemadness.org 70
i 44722 The situation is very complex, continually evolving, and is taking too Err codemadness.org 70
i 44723 much manpower away from other tasks. Furthermore, Intel isn't telling Err codemadness.org 70
i 44724 us what is coming next, and are doing a terrible job by not publically Err codemadness.org 70
i 44725 documenting what operating systems must do to resolve the problems. We Err codemadness.org 70
i 44726 are having to do research by reading other operating systems. There is Err codemadness.org 70
i 44727 no time left to backport the changes -- we will not be issuing a Err codemadness.org 70
i 44728 complete set of errata and syspatches against 6.2 and 6.3 because it is Err codemadness.org 70
i 44729 turning into a distraction. Err codemadness.org 70
i 44730 Err codemadness.org 70
i 44731 Rather than working on every required patch for 6.2/6.3, we will Err codemadness.org 70
i 44732 re-focus manpower and make sure 6.4 contains the best solutions Err codemadness.org 70
i 44733 possible. Err codemadness.org 70
i 44734 Err codemadness.org 70
i 44735 So please try take responsibility for your own machines: Disable SMT in Err codemadness.org 70
i 44736 the BIOS menu, and upgrade your BIOS if you can. Err codemadness.org 70
i 44737 Err codemadness.org 70
i 44738 I'm going to spend my money at a more trustworthy vendor in the future. Err codemadness.org 70
i 44739 Err codemadness.org 70
i 44740 Err codemadness.org 70
i 44741 ###Get Morrowind running on OpenBSD in 5 simple steps
Err codemadness.org 70 i 44744 Err codemadness.org 70 i 44745Err codemadness.org 70 i 44746Err codemadness.org 70 i 44748 Err codemadness.org 70 i 44749This article contains brief instructions on how to get one of the greatest Western RPGs of all time, The Elder Scrolls III: Morrowind, running on OpenBSD using the OpenMW open source engine recreation. These instructions were tested on a ThinkPad X1 Carbon Gen 3. The information was adapted from this OpenMW forum thread: https://forum.openmw.org/viewtopic.php?t=3510
Err codemadness.org 70 i 44747
pkg_add openmw innoextract
innoextract setup_tes_morrowind_goty_2.0.0.7.exe
iXsystems
Err codemadness.org 70
i 44790 https://twitter.com/allanjude/status/1034647571124367360
Err codemadness.org 70 i 44795Err codemadness.org 70 i 44801 Err codemadness.org 70 i 44802Part of the role of being a packager is compiling lots (and lots) of packages. That means compiling lots of code from interesting places and in a variety of styles. In my opinion, being a good packager also means providing feedback to upstream when things are bad. That means filing upstream bugs when possible, and upstreaming patches.
Err codemadness.org 70 i 44800
Err codemadness.org 70 i 44796 One of the “exciting” moments in packaging is when tools change. So each and every major CMake update is an exercise in recompiling 2400 or more packages and adjusting bits and pieces. When a software project was last released in 2013, adjusting it to modern tools can become quite a chore (e.g. Squid Report Generator). CMake is excellent for maintaining backwards compatibility, generally accommodating old software with new policies. The most recent 3.12 release candidate had three issues filed from the FreeBSD side, all from fallout with older software. I consider the hours put into good bug reports, part of being a good citizen of the Free Software world.
Err codemadness.org 70 i 44797 My most interesting bug this week, though, came from one line of code somewhere in Kleopatra: Q_UNUSED(gpgagent_data);
Err codemadness.org 70 i 44798 That one line triggered a really peculiar link error in KDE’s FreeBSD CI system. Yup … telling the compiler something is unused made it fall over. Commenting out that line got rid of the link error, but introduced a warning about an unused function. Working with KDE-PIM’s Volker Krause, we whittled the problem down to a six-line example program — two lines if you don’t care much for coding style. I’m glad, at that point, that I could throw it over the hedge to the LLVM team with some explanatory text. Watching the process on their side reminds me ever-so-strongly of how things work in KDE (or FreeBSD for that matter): Bugzilla, Phabricator, and git combine to be an effective workflow for developers (perhaps less so for end-users).
Err codemadness.org 70 i 44799 Today I got a note saying that the issue had been resolved. So brief a time for a bug. Live fast. Get squashed young.
###DragonFlyBSD Now Runs On The Threadripper 2990WX, Developer Shocked At Performance
Err codemadness.org 70 i 44805 Err codemadness.org 70 i 44806Err codemadness.org 70 i 44807Err codemadness.org 70 i 44809 Err codemadness.org 70 i 44810Last week I carried out some tests of BSD vs. Linux on the new 32-core / 64-thread Threadripper 2990WX. I tested FreeBSD 11, FreeBSD 12, and TrueOS – those benchmarks will be published in the next few days. I tried DragonFlyBSD, but at the time it wouldn’t boot with this AMD HEDT processor. But now the latest DragonFlyBSD development kernel can handle the 2990WX and the lead DragonFly developer calls this new processor “a real beast” and is stunned by its performance potential.
Err codemadness.org 70 i 44808
Err codemadness.org 70 i 44811Err codemadness.org 70 i 44813 Err codemadness.org 70 i 44814When I tried last week, the DragonFlyBSD 5.2.2 stable release nor DragonFlyBSD 5.3 daily snapshot would boot on the 2990WX. But it turns out Matthew Dillon, the lead developer of DragonFlyBSD, picked up a rig and has it running now. So in time for the next 5.4 stable release or those using the daily snapshots can have this 32-core / 64-thread Zen+ CPU running on this operating system long ago forked from FreeBSD.
Err codemadness.org 70 i 44812
Err codemadness.org 70 i 44815Err codemadness.org 70 i 44817 Err codemadness.org 70 i 44818In announcing his success in bringing up the 2990WX under DragonFlyBSD, which required a few minor changes, he shared his performance thoughts and hopes for the rig. “The cpu is a real beast, packing 32 cores and 64 threads. It blows away our dual-core Xeon to the tune of being +50% faster in concurrent compile tests, and it also blows away our older 4-socket Opteron (which we call ‘Monster’) by about the same margin. It’s an impressive CPU. For now the new beast is going to be used to help us improve I/O performance through the filesystem, further SMP work (but DFly scales pretty well to 64 threads already), and perhaps some driver to work to support the 10gbe on the mobo.”
Err codemadness.org 70 i 44816
Err codemadness.org 70 i 44819Err codemadness.org 70 i 44821 Err codemadness.org 70 i 44822Dillon shared some results on the system as well. " The Threadripper 2990WX is a beast. It is at least 50% faster than both the quad socket opteron and the dual socket Xeon system I tested against. The primary limitation for the 2990WX is likely its 4 channels of DDR4 memory, and like all Zen and Zen+ CPUs, memory performance matters more than CPU frequency (and costs almost no power to pump up the performance). That said, it still blow away a dual-socket Xeon with 3x the number of memory channels. That is impressive!"
Err codemadness.org 70 i 44820
Err codemadness.org 70 i 44823Err codemadness.org 70 i 44825 Err codemadness.org 70 i 44826The well known BSD developer also added, “This puts the 2990WX at par efficiency vs a dual-socket Xeon system, and better than the dual-socket Xeon with slower memory and a power cap. This is VERY impressive. I should note that the 2990WX is more specialized with its asymetric NUMA architecture and 32 cores. I think the sweet spot in terms of CPU pricing and efficiency is likely going to be with the 2950X (16-cores/32-threads). It is clear that the 2990WX (32-cores/64-threads) will max out 4-channel memory bandwidth for many workloads, making it a more specialized part. But still awesome…This thing is an incredible beast, I’m glad I got it.”
Err codemadness.org 70 i 44824
Err codemadness.org 70 i 44827Err codemadness.org 70 i 44829 Err codemadness.org 70 i 44830While I have the FreeBSD vs. Linux benchmarks from a few days ago, it looks like now on my ever growing TODO list will be re-trying out the newest DragonFlyBSD daily snapshot for seeing how the performance compares in the mix. Stay tuned for the numbers that should be in the next day or two.
Err codemadness.org 70 i 44828
##Beastie Bits
Err codemadness.org 70 i 44833 Err codemadness.org 70 i 44834Tarsnap
Err codemadness.org 70 i 44851 Err codemadness.org 70 i 44852##Feedback/Questions
Err codemadness.org 70 i 44853 Err codemadness.org 70 i 44854##Headlines
Err codemadness.org 70
i 44871 ###An Insight into the Future of TrueOS BSD and Project Trident
Err codemadness.org 70 i 44874Err codemadness.org 70 i 44876 Err codemadness.org 70 i 44877Last month, TrueOS announced that they would be spinning off their desktop offering. The team behind the new project, named Project Trident, have been working furiously towards their first release. They did take a few minutes to answer some of our question about Project Trident and TrueOS. I would like to thank JT and Ken for taking the time to compile these answers.
Err codemadness.org 70 i 44875
Err codemadness.org 70 i 44882Err codemadness.org 70 i 44884 Err codemadness.org 70 i 44885Project Trident: Project Trident is the continuation of the TrueOS Desktop. Essentially, it is the continuation of the primary “TrueOS software” that people have been using for the past 2 years. The continuing evolution of the entire TrueOS project has reached a stage where it became necessary to reorganize the project. To understand this change, it is important to know the history of the TrueOS project.
Err codemadness.org 70 i 44883
Err codemadness.org 70 i 44886Err codemadness.org 70 i 44888 Err codemadness.org 70 i 44889Originally, Kris Moore created PC-BSD. This was a Desktop release of FreeBSD focused on providing a simple and user-friendly graphical experience for FreeBSD. PC-BSD grew and matured over many years. During the evolution of PC-BSD, many users began asking for a server focused version of the software. Kris agreed, and TrueOS was born as a scaled down server version of PC-BSD. In late 2016, more contributors and growth resulted in significant changes to the PC-BSD codebase. Because the new development was so markedly different from the original PC-BSD design, it was decided to rebrand the project.
Err codemadness.org 70 i 44887
Err codemadness.org 70 i 44890Err codemadness.org 70 i 44892 Err codemadness.org 70 i 44893TrueOS was chosen as the name for this new direction for PC-BSD as the project had grown beyond providing only a graphical front to FreeBSD and was beginning to make fundamental changes to the FreeBSD operating system. One of these changes was moving PC-BSD from being based on each FreeBSD Release to TrueOS being based on the active and less outdated FreeBSD Current. Other major changes are using OpenRC for service management and being more aggressive about addressing long-standing issues with the FreeBSD release process. TrueOS moved toward a rolling release cycle, twice a year, which tested and merged FreeBSD changes directly from the developer instead of waiting months or even years for the FreeBSD review process to finish. TrueOS also deprecated and removed obsolete technology much more regularly.
Err codemadness.org 70 i 44891
Err codemadness.org 70 i 44894Err codemadness.org 70 i 44896 Err codemadness.org 70 i 44897As the TrueOS Project grew, the developers found these changes were needed by other FreeBSD-based projects. These projects began expressing interest in using TrueOS rather than FreeBSD as the base for their project. This demonstrated that TrueOS needed to again evolve into a distribution framework for any BSD project to use. This allows port maintainers and source developers from any BSD project to pool their resources and use the same source repositories while allowing every distribution to still customize, build, and release their own self-contained project. The result is a natural split of the traditional TrueOS team. There were now naturally two teams in the TrueOS project: those working on the build infrastructure and FreeBSD enhancements – the “core” part of the project, and those working on end-user experience and utility – the “desktop” part of the project.
Err codemadness.org 70 i 44895
Err codemadness.org 70 i 44898Err codemadness.org 70 i 44900 Err codemadness.org 70 i 44901When the decision was made to formally split the projects, the obvious question that arose was what to call the “Desktop” project. As TrueOS was already positioned to be a BSD distribution platform, the developers agreed the desktop side should pick a new name. There were other considerations too, one notable being that we were concerned that if we continued to call the desktop project “TrueOS Desktop”, it would prevent people from considering TrueOS as the basis for their distribution because of misconceptions that TrueOS was a desktop-focused OS. It also helps to “level the playing field” for other desktop distributions like GhostBSD so that TrueOS is not viewed as having a single “blessed” desktop version.
Err codemadness.org 70 i 44899
Err codemadness.org 70 i 44906Err codemadness.org 70 i 44913 Err codemadness.org 70 i 44914Project Trident: TrueOS has already added a number of features to FreeBSD:
Err codemadness.org 70 i 44912
Err codemadness.org 70 i 44907 OpenRC replaces rc.d for service management
Err codemadness.org 70 i 44908 LibreSSL in base
Err codemadness.org 70 i 44909 Root NSS certificates out-of-box
Err codemadness.org 70 i 44910 Scriptable installations (pc-sysinstall)
Err codemadness.org 70 i 44911 The full list of changes can be seen on the TrueOS repository (https://github.com/trueos/trueos/blob/trueos-master/README.md). This list does change quite regularly as FreeBSD development itself changes.
Err codemadness.org 70 i 44919Err codemadness.org 70 i 44921 Err codemadness.org 70 i 44922Project Trident: Historically, one of the biggest hurdles for creating a desktop version of FreeBSD is that the build options for packages are tuned for servers rather than desktops. This means a desktop distribution cannot use the pre-built packages from FreeBSD and must build, use, and maintain a custom package repository. Maintaining a fork of the FreeBSD ports tree is no trivial task. TrueOS has created a full distribution framework so now all it takes to create a custom build of FreeBSD is a single JSON manifest file. There is now a single “source of truth” for the source and ports repositories that is maintained by the TrueOS team and regularly tagged with “stable” build markers. All projects can use this framework, which makes updates trivial.
Err codemadness.org 70 i 44920
Err codemadness.org 70 i 44927Err codemadness.org 70 i 44929 Err codemadness.org 70 i 44930Project Trident: That is the hope. Historically, creating a desktop-centered BSD has required a lot of specialized knowledge. Not only do most people not have this knowledge, but many do not even know what they need to learn until they start troubleshooting. TrueOS is trying to drastically simplify this process to enable the wider Open Source community to experiment, contribute, and enjoy BSD-based projects.
Err codemadness.org 70 i 44928
Err codemadness.org 70 i 44935Err codemadness.org 70 i 44937 Err codemadness.org 70 i 44938Project Trident: Project Trident will be dependent on TrueOS for ARM support. The developers have talked about the possibility of supporting ARM64 and RISC-V architectures, but it is not possible at the current time. If more Open Source contributors want to help develop ARM and RISC-V support, the TrueOS project is definitely willing to help test and integrate that code.
Err codemadness.org 70 i 44936
Err codemadness.org 70 i 44943Err codemadness.org 70 i 44945 Err codemadness.org 70 i 44946Project Trident: Long-term, almost nothing. Lumina is still the desktop environment for Project Trident and will continue to be developed and enhanced alongside Project Trident just as it was for TrueOS. Short-term, we will be delaying the release of Lumina 2.0 and will release an updated version of the 1.x branch (1.5.0) instead. This is simply due to all the extra overhead to get Project Trident up and running. When things settle down into a rhythm, the development of Lumina will pick up once again.
Err codemadness.org 70 i 44944
Err codemadness.org 70 i 44951Err codemadness.org 70 i 44953 Err codemadness.org 70 i 44954Project Trident: While Lumina is included by default, all of the other popular desktop environments will be available in the package repo exactly as they had been before.
Err codemadness.org 70 i 44952
Err codemadness.org 70 i 44959Err codemadness.org 70 i 44961 Err codemadness.org 70 i 44962Project Trident: Steam is still unavailable natively on FreeBSD, so we do not have any plans to ship it out of the box currently. In the meantime, we highly recommend installing the Windows version of Steam through the PlayOnBSD utility.
Err codemadness.org 70 i 44960
Err codemadness.org 70 i 44967Err codemadness.org 70 i 44969 Err codemadness.org 70 i 44970Project Trident: The AppCafe is the name of the graphical interface for the “pkg” utility integrated into the SysAdm client created by TrueOS. This hasn’t changed. SysAdm, the graphical client, and by extension AppCafe are still available for all TrueOS-based distributions to use.
Err codemadness.org 70 i 44968
Err codemadness.org 70 i 44975Err codemadness.org 70 i 44977 Err codemadness.org 70 i 44978Project Trident: iXsystems is the first corporate sponsor of Project Trident and we are always open to other sponsorships as well. We would prefer smaller individual contributions from the community, but we understand that larger project needs or special-purpose goals are much more difficult to achieve without allowing larger corporate sponsorships as well. In either case, Project Trident is always looking out for the best interests of the community and will not allow intrusive or harmful code to enter the project even if a company or individual tries to make that code part of a sponsorship deal.
Err codemadness.org 70 i 44976
Err codemadness.org 70 i 44983Err codemadness.org 70 i 44985 Err codemadness.org 70 i 44986Project Trident: Yes! That was a primary reason for TrueOS to start tracking the CURRENT branch of FreeBSD in 2016. This allows for the changes that FreeBSD developers are making, including new hardware support, to be available much sooner than if we followed the FreeBSD release cycle.
Err codemadness.org 70 i 44984
Err codemadness.org 70 i 44991Err codemadness.org 70 i 44993 Err codemadness.org 70 i 44994Project Trident: Right now we are targeting a late August release date. This is because Project Trident is “kicking the wheels” on the new TrueOS distribution system. We want to ensure everything is working smoothly before we release. Going forward, we plan on having regular package updates every week or two for the end-user packages and a new release of Trident with an updated OS version every 6 months. This will follow the TrueOS release schedule with a small time offset.
Err codemadness.org 70 i 44992
###pf-badhost: Stop the evil doers in their tracks!
Err codemadness.org 70 i 44997 Err codemadness.org 70 i 44998Err codemadness.org 70 i 44999Err codemadness.org 70 i 45004 Err codemadness.org 70 i 45005pf-badhost is a simple, easy to use badhost blocker that uses the power of the pf firewall to block many of the internet’s biggest irritants. Annoyances such as ssh bruteforcers are largely eliminated. Shodan scans and bots looking for webservers to abuse are stopped dead in their tracks. When used to filter outbound traffic, pf-badhost blocks many seedy, spooky malware containing and/or compromised webhosts.
Err codemadness.org 70 i 45003
Err codemadness.org 70 i 45000 Filtering performance is exceptional, as the badhost list is stored in a pf table. To quote the OpenBSD FAQ page regarding tables: “the lookup time on a table holding 50,000 addresses is only slightly more than for one holding 50 addresses.”
Err codemadness.org 70 i 45001 pf-badhost is simple and powerful. The blocklists are pulled from quality, trusted sources. The ‘Firehol’, ‘Emerging Threats’ and ‘Binary Defense’ block lists are used as they are popular, regularly updated lists of the internet’s most egregious offenders. The pf-badhost.sh script can easily be expanded to use additional or alternate blocklists.
Err codemadness.org 70 i 45002 pf-badhost works best when used in conjunction with unbound-adblock for the ultimate badhost blocking.
DigitalOcean
Err codemadness.org 70
i 45014 https://do.co/bsdnow
###FLASHBACK: FreeBSDCon’99: Fans of Linux’s lesser-known sibling gather for the first time
Err codemadness.org 70 i 45017 Err codemadness.org 70 i 45018Err codemadness.org 70 i 45019Err codemadness.org 70 i 45028 Err codemadness.org 70 i 45029FreeBSD, a port of BSD Unix to Intel, has been around almost as long as Linux has – but without the media hype. Its developer and user community recently got a chance to get together for the first time, and they did it in the city where BSD – the Berkeley Software Distribution – was born some 25 years ago.
Err codemadness.org 70 i 45027
Err codemadness.org 70 i 45020 October 17, 1999 marked a milestone in the history of FreeBSD – the first FreeBSD conference was held in the city where it all began, Berkeley, CA. Over 300 developers, users, and interested parties attended from around the globe.
Err codemadness.org 70 i 45021 This was easily 50 percent more people than the conference organizers had expected. This first conference was meant to be a gathering mostly for developers and FreeBSD advocates. The turnout was surprisingly (and gratifyingly) large.
Err codemadness.org 70 i 45022 In fact, attendance exceeded expectations so much that, for instance, Kirk McKusick had to add a second, identical tutorial on FreeBSD internals, because it was impossible for everyone to attend the first!
Err codemadness.org 70 i 45023 But for a first-ever conference, I was impressed by how smoothly everything seemed to go. Sessions started on time, and the sessions I attended were well-run; nothing seemed to be too cold, dark, loud, late, or off-center.
Err codemadness.org 70 i 45024 Of course, the best part about a conference such as this one is the opportunity to meet with other people who share similar interests. Lunches and breaks were a good time to meet people, as was the Tuesday night beer bash.
Err codemadness.org 70 i 45025 The Wednesday night reception was of a type unusual for the technical conferences I usually attend – a three-hour Hornblower dinner cruise on San Francisco Bay. Not only did we all enjoy excellent food and company, but we all got to go up on deck and watch the lights of San Francisco and Berkeley as we drifted by. Although it’s nice when a conference attracts thousands of attendees, there are some things that can only be done with smaller groups of people; this was one of them.
Err codemadness.org 70 i 45026 In short, this was a tiny conference, but a well-run one.
Err codemadness.org 70 i 45034Err codemadness.org 70 i 45043 Err codemadness.org 70 i 45044Although it was a relatively small conference, the number and quality of the sessions belied the size. Each of the three days of the conference featured a different keynote speaker. In addition to Jordan Hubbard, Jeremy Allison spoke on “Samba Futures” on day two, and Brian Behlendorf gave a talk on “FreeBSD and Apache: A Perfect Combo” to start off the third day.
Err codemadness.org 70 i 45042
Err codemadness.org 70 i 45035 The conference sessions themselves were divided into six tracks: advocacy, business, development, networking, security, and panels. The panels track featured three different panels, made up of three different slices of the community: the FreeBSD core team, a press panel, and a prominent user panel with representatives from such prominent commercial users as Yahoo! and USWest.
Err codemadness.org 70 i 45036 I was especially interested in Apple Computer’s talk in the development track. Wilfredo Sanchez, technical lead for open source projects at Apple (no, that’s not an oxymoron!) spoke about Apple’s Darwin project, the company’s operating system road map, and the role of BSD (and, specifically, FreeBSD) in Apple’s plans.
Err codemadness.org 70 i 45037 Apple and Unix have had a long and uneasy history, from the Lisa through the A/UX project to today. Personally, I’m very optimistic about the chances for the Darwin project to succeed. Apple’s core OS kernel team has chosen FreeBSD as its reference platform. I’m looking forward to what this partnership will bring to both sides.
Err codemadness.org 70 i 45038 Other development track sessions included in-depth tutorials on writing device drivers, basics of the Vinum Volume Manager, Fibre Channel, development models (the open repository model), and the FreeBSD Documentation Project (FDP). If you’re interested in contributing to the FreeBSD project, the FDP is a good place to start.
Err codemadness.org 70 i 45039 Advocacy sessions included “How One Person Can Make a Difference” (a timeless topic that would find a home at any technical conference!) and “Starting and Managing A User Group” (trials and tribulations as well as rewards).
Err codemadness.org 70 i 45040 The business track featured speakers from three commercial users of FreeBSD: Cybernet, USWest, and Applix. Applix presented its port of Applixware Office for FreeBSD and explained how Applix has taken the core services of Applixware into open source.
Err codemadness.org 70 i 45041 Commercial applications and open source were once a rare combination; we can only hope the trend away from that state of affairs will continue.
Err codemadness.org 70 i 45049Err codemadness.org 70 i 45058 Err codemadness.org 70 i 45059The use of FreeBSD in embedded applications is increasing as well – and it is increasing at the same rate that hardware power is. These days, even inexpensive systems are able to run a BSD kernel.
Err codemadness.org 70 i 45057
Err codemadness.org 70 i 45050 The BSD license and the solid TCP/IP stack prove significant enticements to this market as well. (Unlike the GNU Public License, the BSD license does not require that vendors make derivative works open source.)
Err codemadness.org 70 i 45051 Companies such as USWest and Verio use FreeBSD for a wide variety of different Internet services.
Err codemadness.org 70 i 45052 Yahoo! and Hotmail are examples of companies that use FreeBSD extensively for more specific purposes. Yahoo!, for example, has many hundreds of FreeBSD boxes, and Hotmail has almost 2000 FreeBSD machines at its data center in the San Francisco Bay area.
Err codemadness.org 70 i 45053 Hotmail is owned by Microsoft, so the fact that it runs FreeBSD is a secret. Don’t tell anyone…
Err codemadness.org 70 i 45054 When asked to comment on the increasing commercial interest in BSD, Hubbard said that FreeBSD is learning the Red Hat lesson. “Walnut Creek and others with business interests in FreeBSD have learned a few things from the Red Hat IPO,” he said, “and nobody is just sitting around now, content with business as usual. It’s clearly business as unusual in the open source world today.”
Err codemadness.org 70 i 45055 Hubbard had also singled out some of BSD’s commercial partners, such as Whistle Communications, for praise in his opening day keynote. These partners play a key role in moving the project forward, he said, by contributing various enhancements and major new systems, such as Netgraph, as well as by contributing paid employee time spent on FreeBSD.
Err codemadness.org 70 i 45056 Even short FreeBSD-related contacts can yield good results, Hubbard said. An example of this is the new jail() security code introduced in FreeBSD 3.x and 4.0, which was contributed by R & D Associates. A number of ISPs are also now donating the hardware and bandwidth that allows the project to provide more resource mirrors and experimental development sites.
Err codemadness.org 70 i 45064Err codemadness.org 70 i 45068 Err codemadness.org 70 i 45069And speaking of corporate sponsors, thanks go to Walnut Creek for sponsoring the conference, and to Yahoo! for covering all the expenses involved in bringing the entire FreeBSD core team to Berkeley.
Err codemadness.org 70 i 45067
Err codemadness.org 70 i 45065 As a fan of FreeBSD, I’m happy to see that the project has finally produced a conference. It was time: many of the 16 core team members had been working together on a regular basis for nearly seven years without actually meeting face to face.
Err codemadness.org 70 i 45066 It’s been an interesting year for open source projects. I’m looking forward to the next year – and the next BSD conference – to be even better.
##News Roundup
Err codemadness.org 70
i 45072 ###OpenBSD Recommends: Disable SMT/Hyperthreading in all Intel BIOSes
Two recently disclosed hardware bugs affected Intel cpus: Err codemadness.org 70
i 45075 Err codemadness.org 70
i 45076 - TLBleed Err codemadness.org 70
i 45077 Err codemadness.org 70
i 45078 - T1TF (the name "Foreshadow" refers to 1 of 3 aspects of this Err codemadness.org 70
i 45079 bug, more aspects are surely on the way) Err codemadness.org 70
i 45080 Err codemadness.org 70
i 45081 Solving these bugs requires new cpu microcode, a coding workaround, Err codemadness.org 70
i 45082 *AND* the disabling of SMT / Hyperthreading. Err codemadness.org 70
i 45083 Err codemadness.org 70
i 45084 SMT is fundamentally broken because it shares resources between the two Err codemadness.org 70
i 45085 cpu instances and those shared resources lack security differentiators. Err codemadness.org 70
i 45086 Some of these side channel attacks aren't trivial, but we can expect Err codemadness.org 70
i 45087 most of them to eventually work and leak kernel or cross-VM memory in Err codemadness.org 70
i 45088 common usage circumstances, even such as javascript directly in a Err codemadness.org 70
i 45089 browser. Err codemadness.org 70
i 45090 Err codemadness.org 70
i 45091 There will be more hardware bugs and artifacts disclosed. Due to the Err codemadness.org 70
i 45092 way SMT interacts with speculative execution on Intel cpus, I expect SMT Err codemadness.org 70
i 45093 to exacerbate most of the future problems. Err codemadness.org 70
i 45094 Err codemadness.org 70
i 45095 A few months back, I urged people to disable hyperthreading on all Err codemadness.org 70
i 45096 Intel cpus. I need to repeat that: Err codemadness.org 70
i 45097 Err codemadness.org 70
i 45098 DISABLE HYPERTHREADING ON ALL YOUR INTEL MACHINES IN THE BIOS. Err codemadness.org 70
i 45099 Err codemadness.org 70
i 45100 Also, update your BIOS firmware, if you can. Err codemadness.org 70
i 45101 Err codemadness.org 70
i 45102 OpenBSD -current (and therefore 6.4) will not use hyperthreading if it Err codemadness.org 70
i 45103 is enabled, and will update the cpu microcode if possible. Err codemadness.org 70
i 45104 Err codemadness.org 70
i 45105 But what about 6.2 and 6.3? Err codemadness.org 70
i 45106 Err codemadness.org 70
i 45107 The situation is very complex, continually evolving, and is taking too Err codemadness.org 70
i 45108 much manpower away from other tasks. Furthermore, Intel isn't telling Err codemadness.org 70
i 45109 us what is coming next, and are doing a terrible job by not publically Err codemadness.org 70
i 45110 documenting what operating systems must do to resolve the problems. We Err codemadness.org 70
i 45111 are having to do research by reading other operating systems. There is Err codemadness.org 70
i 45112 no time left to backport the changes -- we will not be issuing a Err codemadness.org 70
i 45113 complete set of errata and syspatches against 6.2 and 6.3 because it is Err codemadness.org 70
i 45114 turning into a distraction. Err codemadness.org 70
i 45115 Err codemadness.org 70
i 45116 Rather than working on every required patch for 6.2/6.3, we will Err codemadness.org 70
i 45117 re-focus manpower and make sure 6.4 contains the best solutions Err codemadness.org 70
i 45118 possible. Err codemadness.org 70
i 45119 Err codemadness.org 70
i 45120 So please try take responsibility for your own machines: Disable SMT in Err codemadness.org 70
i 45121 the BIOS menu, and upgrade your BIOS if you can. Err codemadness.org 70
i 45122 Err codemadness.org 70
i 45123 I'm going to spend my money at a more trustworthy vendor in the future. Err codemadness.org 70
i 45124 Err codemadness.org 70
i 45125 Err codemadness.org 70
i 45126 ###Get Morrowind running on OpenBSD in 5 simple steps
Err codemadness.org 70 i 45129 Err codemadness.org 70 i 45130Err codemadness.org 70 i 45131Err codemadness.org 70 i 45133 Err codemadness.org 70 i 45134This article contains brief instructions on how to get one of the greatest Western RPGs of all time, The Elder Scrolls III: Morrowind, running on OpenBSD using the OpenMW open source engine recreation. These instructions were tested on a ThinkPad X1 Carbon Gen 3. The information was adapted from this OpenMW forum thread: https://forum.openmw.org/viewtopic.php?t=3510
Err codemadness.org 70 i 45132
pkg_add openmw innoextract
innoextract setup_tes_morrowind_goty_2.0.0.7.exe
iXsystems
Err codemadness.org 70
i 45175 https://twitter.com/allanjude/status/1034647571124367360
Err codemadness.org 70 i 45180Err codemadness.org 70 i 45186 Err codemadness.org 70 i 45187Part of the role of being a packager is compiling lots (and lots) of packages. That means compiling lots of code from interesting places and in a variety of styles. In my opinion, being a good packager also means providing feedback to upstream when things are bad. That means filing upstream bugs when possible, and upstreaming patches.
Err codemadness.org 70 i 45185
Err codemadness.org 70 i 45181 One of the “exciting” moments in packaging is when tools change. So each and every major CMake update is an exercise in recompiling 2400 or more packages and adjusting bits and pieces. When a software project was last released in 2013, adjusting it to modern tools can become quite a chore (e.g. Squid Report Generator). CMake is excellent for maintaining backwards compatibility, generally accommodating old software with new policies. The most recent 3.12 release candidate had three issues filed from the FreeBSD side, all from fallout with older software. I consider the hours put into good bug reports, part of being a good citizen of the Free Software world.
Err codemadness.org 70 i 45182 My most interesting bug this week, though, came from one line of code somewhere in Kleopatra: Q_UNUSED(gpgagent_data);
Err codemadness.org 70 i 45183 That one line triggered a really peculiar link error in KDE’s FreeBSD CI system. Yup … telling the compiler something is unused made it fall over. Commenting out that line got rid of the link error, but introduced a warning about an unused function. Working with KDE-PIM’s Volker Krause, we whittled the problem down to a six-line example program — two lines if you don’t care much for coding style. I’m glad, at that point, that I could throw it over the hedge to the LLVM team with some explanatory text. Watching the process on their side reminds me ever-so-strongly of how things work in KDE (or FreeBSD for that matter): Bugzilla, Phabricator, and git combine to be an effective workflow for developers (perhaps less so for end-users).
Err codemadness.org 70 i 45184 Today I got a note saying that the issue had been resolved. So brief a time for a bug. Live fast. Get squashed young.
###DragonFlyBSD Now Runs On The Threadripper 2990WX, Developer Shocked At Performance
Err codemadness.org 70 i 45190 Err codemadness.org 70 i 45191Err codemadness.org 70 i 45192Err codemadness.org 70 i 45194 Err codemadness.org 70 i 45195Last week I carried out some tests of BSD vs. Linux on the new 32-core / 64-thread Threadripper 2990WX. I tested FreeBSD 11, FreeBSD 12, and TrueOS – those benchmarks will be published in the next few days. I tried DragonFlyBSD, but at the time it wouldn’t boot with this AMD HEDT processor. But now the latest DragonFlyBSD development kernel can handle the 2990WX and the lead DragonFly developer calls this new processor “a real beast” and is stunned by its performance potential.
Err codemadness.org 70 i 45193
Err codemadness.org 70 i 45196Err codemadness.org 70 i 45198 Err codemadness.org 70 i 45199When I tried last week, the DragonFlyBSD 5.2.2 stable release nor DragonFlyBSD 5.3 daily snapshot would boot on the 2990WX. But it turns out Matthew Dillon, the lead developer of DragonFlyBSD, picked up a rig and has it running now. So in time for the next 5.4 stable release or those using the daily snapshots can have this 32-core / 64-thread Zen+ CPU running on this operating system long ago forked from FreeBSD.
Err codemadness.org 70 i 45197
Err codemadness.org 70 i 45200Err codemadness.org 70 i 45202 Err codemadness.org 70 i 45203In announcing his success in bringing up the 2990WX under DragonFlyBSD, which required a few minor changes, he shared his performance thoughts and hopes for the rig. “The cpu is a real beast, packing 32 cores and 64 threads. It blows away our dual-core Xeon to the tune of being +50% faster in concurrent compile tests, and it also blows away our older 4-socket Opteron (which we call ‘Monster’) by about the same margin. It’s an impressive CPU. For now the new beast is going to be used to help us improve I/O performance through the filesystem, further SMP work (but DFly scales pretty well to 64 threads already), and perhaps some driver to work to support the 10gbe on the mobo.”
Err codemadness.org 70 i 45201
Err codemadness.org 70 i 45204Err codemadness.org 70 i 45206 Err codemadness.org 70 i 45207Dillon shared some results on the system as well. " The Threadripper 2990WX is a beast. It is at least 50% faster than both the quad socket opteron and the dual socket Xeon system I tested against. The primary limitation for the 2990WX is likely its 4 channels of DDR4 memory, and like all Zen and Zen+ CPUs, memory performance matters more than CPU frequency (and costs almost no power to pump up the performance). That said, it still blow away a dual-socket Xeon with 3x the number of memory channels. That is impressive!"
Err codemadness.org 70 i 45205
Err codemadness.org 70 i 45208Err codemadness.org 70 i 45210 Err codemadness.org 70 i 45211The well known BSD developer also added, “This puts the 2990WX at par efficiency vs a dual-socket Xeon system, and better than the dual-socket Xeon with slower memory and a power cap. This is VERY impressive. I should note that the 2990WX is more specialized with its asymetric NUMA architecture and 32 cores. I think the sweet spot in terms of CPU pricing and efficiency is likely going to be with the 2950X (16-cores/32-threads). It is clear that the 2990WX (32-cores/64-threads) will max out 4-channel memory bandwidth for many workloads, making it a more specialized part. But still awesome…This thing is an incredible beast, I’m glad I got it.”
Err codemadness.org 70 i 45209
Err codemadness.org 70 i 45212Err codemadness.org 70 i 45214 Err codemadness.org 70 i 45215While I have the FreeBSD vs. Linux benchmarks from a few days ago, it looks like now on my ever growing TODO list will be re-trying out the newest DragonFlyBSD daily snapshot for seeing how the performance compares in the mix. Stay tuned for the numbers that should be in the next day or two.
Err codemadness.org 70 i 45213
##Beastie Bits
Err codemadness.org 70 i 45218 Err codemadness.org 70 i 45219Tarsnap
Err codemadness.org 70 i 45236 Err codemadness.org 70 i 45237##Feedback/Questions
Err codemadness.org 70 i 45238 Err codemadness.org 70 i 45239##Headlines
Err codemadness.org 70
i 45458 ###Essen Hackathon & BSDCam 2018 trip report
###Call for Testing: ZFS Native Encryption for FreeBSD
Err codemadness.org 70 i 45477 Err codemadness.org 70 i 45478iXsystems
Err codemadness.org 70 i 45492 Err codemadness.org 70 i 45493###Call for Testing: UFS TRIM Consolidation
Err codemadness.org 70 i 45494 Err codemadness.org 70 i 45495Err codemadness.org 70 i 45500Err codemadness.org 70 i 45506 Err codemadness.org 70 i 45507When deleting files on filesystems that are stored on flash-memory (solid-state) disk drives, the filesystem notifies the underlying disk of the blocks that it is no longer using. The notification allows the drive to avoid saving these blocks when it needs to flash (zero out) one of its flash pages. These notifications of no-longer-being-used blocks are referred to as TRIM notifications. In FreeBSD these TRIM notifications are sent from the filesystem to the drive using the BIO_DELETE command.
Err codemadness.org 70 i 45505
Err codemadness.org 70 i 45501 Until now, the filesystem would send a separate message to the drive for each block of the file that was deleted. Each Gigabyte of file size resulted in over 3000 TRIM messages being sent to the drive. This burst of messages can overwhelm the drive’s task queue causing multiple second delays for read and write requests.
Err codemadness.org 70 i 45502 This implementation collects runs of contiguous blocks in the file and then consolodates them into a single BIO_DELETE command to the drive. The BIO_DELETE command describes the run of blocks as a single large block being deleted. Each Gigabyte of file size can result in as few as two BIO_DELETE commands and is typically less than ten. Though these larger BIO_DELETE commands take longer to run, they do not clog the drive task queue, so read and write commands can intersperse effectively with them.
Err codemadness.org 70 i 45503 Though this new feature has been throughly reviewed and tested, it is being added disabled by default so as to minimize the possibility of disrupting the upcoming 12.0 release. It can be enabled by running ``sysctl vfs.ffs.dotrimcons=1’’. Users are encouraged to test it. If no problems arise, we will consider requesting that it be enabled by default for 12.0.
Err codemadness.org 70 i 45504 This support is off by default, but I am hoping that I can get enough testing to ensure that it (a) works, and (b) is helpful that it will be reasonable to have it turned on by default in 12.0. The cutoff for turning it on by default in 12.0 is September 19th. So I am requesting your testing feedback in the near-term. Please let me know if you have managed to use it successfully (or not) and also if it provided any performance difference (good or bad).
gstat with the -d flag##News Roundup
Err codemadness.org 70
i 45516 ###ZFS performance
Err codemadness.org 70 i 45523Err codemadness.org 70 i 45526 Err codemadness.org 70 i 45527This is NOT an all-in post about ZFS performance. I built a FreeBSD+ZFS file server recently at work to serve as an offsite backup server. I wanted to run a few synthetic workloads on it and look at how it fares from performance perspective. Mostly for curiosity and learning purposes.
Err codemadness.org 70 i 45525
Err codemadness.org 70 i 45524 As stated in the notes about building this server, performance was not one of the priorities, as this server will never face our active workload. What I care about from this server is its ability to work with rsync and keep the data synchronised with our primary storage server. With that context, I ran a few write tests to see how good our solution is and what to expect from it in terms of performance.
Err codemadness.org 70 i 45534Err codemadness.org 70 i 45537 Err codemadness.org 70 i 45538Write Performance: Incompressible: 1600-2600 MB/s, Compressible: 2500-6600 MB/s
Err codemadness.org 70 i 45536
Err codemadness.org 70 i 45535 Another over 1200 MB/s is enough to keep your 10 gigabit network saturated
Err codemadness.org 70 i 45551Err codemadness.org 70 i 45562 Err codemadness.org 70 i 45563I’ve been the maintainer of the FreeBSD/EC2 platform for about 7.5 years now, and as far as “running things in virtual machines” goes, that remains the only operating system and the only cloud which I work on. That said, from time to time I get questions from people who want to port other operating systems into EC2, and being a member of the open source community, I do my best to help them. I realized a few days ago that rather than replying to emails one by one it would be more efficient to post something publicly; so — for the benefit of the dozen or so people who want to port operating systems to run in EC2, and the curiosity of maybe a thousand more people who use EC2 but will never build AMIs themselves — here’s a rough guide to building EC2 images.
Err codemadness.org 70 i 45558
Err codemadness.org 70 i 45552 Before we can talk about building images, there are some things you need:
Err codemadness.org 70 i 45553 Your OS needs to run on x86 hardware. 64-bit (“amd64”, “x86-64”) is ideal, but I’ve managed to run 32-bit FreeBSD on “64-bit” EC2 instances so at least in some cases that’s not strictly necessary.
Err codemadness.org 70 i 45554 You almost certainly want to have drivers for Xen block devices (for all of the pre-Nitro EC2 instances) or for NVMe disks (for the most recent EC2 instances). Theoretically you could make do without these since there’s some ATA emulation available for bootstrapping, but if you want to do any disk I/O after the kernel finishes booting you’ll want to have a disk driver.
Err codemadness.org 70 i 45555 Similarly, you need support for the Xen network interface (older instances), Intel 10 GbE SR-IOV networking (some newer but pre-Nitro instances), or Amazon’s “ENA” network adapters (on Nitro instances), unless you plan on having instances which don’t communicate over the network. The ENA driver is probably the hardest thing to port, since as far as I know there’s no way to get your hands on the hardware directly, and it’s very difficult to do any debugging in EC2 without having a working network.
Err codemadness.org 70 i 45556 Finally, the obvious: You need to have an AWS account, and appropriate API access keys.
Err codemadness.org 70 i 45557 Building a disk imageBuilding an AMI
Err codemadness.org 70 i 45561
Err codemadness.org 70 i 45559 I wrote a simple tool for converting disk images into EC2 instances: bsdec2-image-upload. It uploads a disk image to Amazon S3; makes an API call to import that disk image into an EBS volume; creates a snapshot of that volume; then registers an EC2 AMI using that snapshot.
Err codemadness.org 70 i 45560 To use bsdec2-image-upload, you’ll first need to create an S3 bucket for it to use as a staging area. You can call it anything you like, but I recommend that you
Err codemadness.org 70 i 45564Err codemadness.org 70 i 45567 Err codemadness.org 70 i 45568Create it in a “nearby” region (for performance reasons), and
Err codemadness.org 70 i 45566
Err codemadness.org 70 i 45565 Set an S3 “lifecycle policy” which deletes objects automatically after 1 day (since bsdec2-image-upload doesn’t clean up the S3 bucket, and those objects are useless once you’ve finished creating an AMI).
Err codemadness.org 70 i 45569Err codemadness.org 70 i 45590 Err codemadness.org 70 i 45591Boot configuration
Err codemadness.org 70 i 45589
Err codemadness.org 70 i 45570 Odds are that your instance started booting and got as far as the boot loader launching the kernel, but at some point after that things went sideways. Now we start the iterative process of building disk images, turning them into AMIs, launching said AMIs, and seeing where they break. Some things you’ll probably run into here:
Err codemadness.org 70 i 45571 EC2 instances have two types of console available to them: A serial console and an VGA console. (Or rather, emulated serial and emulated VGA.) If you can have your kernel output go to both consoles, I recommend doing that. If you have to pick one, the serial console (which shows up as the “System Log” in EC2) is probably more useful than the VGA console (which shows up as “instance screenshot”) since it lets you see more than one screen of logs at once; but there’s a catch: Due to some bizarre breakage in EC2 — which I’ve been complaining about for ten years — the serial console is very “laggy”. If you find that you’re not getting any output, wait five minutes and try again.
Err codemadness.org 70 i 45572 You may need to tell your kernel where to find the root filesystem. On FreeBSD we build our disk images using GPT labels, so we simply need to specify in /etc/fstab that the root filesystem is on /dev/gpt/rootfs; but if you can’t do this, you’ll probably need to have different AMIs for Nitro instances vs. non-Nitro instances since Xen block devices will typically show up with different device names from NVMe disks. On FreeBSD, I also needed to set the vfs.root.mountfrom kernel environment variable for a while; this also is no longer needed on FreeBSD but something similar may be needed on other systems.
Err codemadness.org 70 i 45573 You’ll need to enable networking, using DHCP. On FreeBSD, this means placing ifconfig_DEFAULT=“SYNCDHCP” into /etc/rc.conf; other systems will have other ways of specifying network parameters, and it may be necessary to specify a setting for the Xen network device, Intel SR-IOV network, and the Amazon ENA interface so that you’ll have the necessary configuration across all EC2 instance types. (On FreeBSD, ifconfig_DEFAULT takes care of specifying the network settings which should apply for whatever network interface the kernel finds at boot time.)
Err codemadness.org 70 i 45574 You’ll almost certainly want to turn on SSH, so that you can connect into newly launched instances and make use of them. Don’t worry about setting a password or creating a user to SSH into yet — we’ll take care of that later.
Err codemadness.org 70 i 45575 EC2 configuration
Err codemadness.org 70 i 45576 Now it’s time to make the AMI behave like an EC2 instance. To this end, I prepared a set of rc.d scripts for FreeBSD. Most importantly, they
Err codemadness.org 70 i 45577 Print the SSH host keys to the console, so that you can veriy that they are correct when you first SSH in. (Remember, Verifying SSH host keys is more important than flossing every day.)
Err codemadness.org 70 i 45578 Download the SSH public key you want to use for logging in, and create an account (by default, “ec2-user”) with that key set up for you.
Err codemadness.org 70 i 45579 Fetch EC2 user-data and process it via configinit to allow you to configure the system as part of the process of launching it.
Err codemadness.org 70 i 45580 If your OS has an rc system derived from NetBSD’s rc.d, you may be able to use these scripts without any changes by simply installing them and enabling them in /etc/rc.conf; otherwise you may need to write your own scripts using mine as a model.
Err codemadness.org 70 i 45581 Firstboot scripts
Err codemadness.org 70 i 45582 A feature I added to FreeBSD a few years ago is the concept of “firstboot” scripts: These startup scripts are only run the first time a system boots. The aforementioned configinit and SSH key fetching scripts are flagged this way — so if your OS doesn’t support the “firstboot” keyword on rc.d scripts you’ll need to hack around that — but EC2 instances also ship with other scripts set to run on the first boot:
Err codemadness.org 70 i 45583 FreeBSD Update will fetch and install security and critical errata updates, and then reboot the system if necessary.
Err codemadness.org 70 i 45584 The UFS filesystem on the “boot disk” will be automatically expanded to the full size of the disk — this makes it possible to specify a larger size of disk at EC2 instance launch time.
Err codemadness.org 70 i 45585 Third-party packages will be automatically fetched and installed, according to a list in /etc/rc.conf. This is most useful if configinit is used to edit /etc/rc.conf, since it allows you to specify packages to install via the EC2 user-data.
Err codemadness.org 70 i 45586 While none of these are strictly necessary, I find them to be extremely useful and highly recommend implementing similar functionality in your systems.
Err codemadness.org 70 i 45587 Support my work!
Err codemadness.org 70 i 45588 I hope you find this useful, or at very least interesting. Please consider supporting my work in this area; while I’m happy to contribute my time to supporting open source software, it would be nice if I had money coming in which I could use to cover incidental expenses (e.g., conference travel) so that I didn’t end up paying to contribute to FreeBSD.
Digital Ocean
Err codemadness.org 70
i 45594 https://do.co/bsdnow
Err codemadness.org 70 i 45603Err codemadness.org 70 i 45610 Err codemadness.org 70 i 45611At a recent workshop on cybersecurity in the U.K., a primary topic of consideration was how to preserve the freedom and openness of the Internet while protecting against the harmful behaviors that have emerged in this global medium. That this is a significant challenge cannot be overstated. The bad behaviors range from social network bullying and misinformation to email spam, distributed denial of service attacks, direct cyberattacks against infrastructure, malware propagation, identity theft, and a host of other ills requiring a wide range of technical and legal considerations. That these harmful behaviors can and do cross international boundaries only makes it more difficult to fashion effective responses.
Err codemadness.org 70 i 45609
Err codemadness.org 70 i 45604 In other columns, I have argued for better software development tools to reduce the common mistakes that lead to vulnerabilities that are exploited. Here, I want to focus on another aspect of response related to law enforcement and tracking down perpetrators. Of course, not all harms are (or perhaps are not yet) illegal, but discovering those who cause them may still be warranted. The recent adoption and implementation of the General Data Protection Regulation (GDPR) in the European Union creates an interesting tension because it highlights the importance and value of privacy while those who do direct or indirect harm must be tracked down and their identities discovered.
Err codemadness.org 70 i 45605 In passing, I mention that cryptography has sometimes been blamed for protecting the identity or actions of criminals but it is also a tool for protecting privacy. Arguments have been made for “back doors” to cryptographic systems but I am of the opinion that such proposals carry extremely high risk to privacy and safety. It is not my intent to argue this question in this column.
Err codemadness.org 70 i 45606 What is of interest to me is a concept to which I was introduced at the Ditchley workshop, specifically, differential traceability. The ability to trace bad actors to bring them to justice seems to me an important goal in a civilized society. The tension with privacy protection leads to the idea that only under appropriate conditions can privacy be violated. By way of example, consider license plates on cars. They are usually arbitrary identifiers and special authority is needed to match them with the car owners (unless, of course, they are vanity plates like mine: “Cerfsup”). This is an example of differential traceability; the police department has the authority to demand ownership information from the Department of Motor Vehicles that issues the license plates. Ordinary citizens do not have this authority.
Err codemadness.org 70 i 45607 In the Internet environment there are a variety of identifiers associated with users (including corporate users). Domain names, IP addresses, email addresses, and public cryptography keys are examples among many others. Some of these identifiers are dynamic and thus ambiguous. For example, IP addresses are not always permanent and may change (for example, temporary IP addresses assigned at Wi-Fi hotspots) or may be ambiguous in the case of Network Address Translation. Information about the time of assignment and the party to whom an IP address was assigned may be needed to identify an individual user. There has been considerable debate and even a recent court case regarding requirements to register users in domain name WHOIS databases in the context of the adoption of GDPR. If we are to accomplish the simultaneous objectives of protecting privacy while apprehending those engaged in harmful or criminal behavior on the Internet, we must find some balance between conflicting but desirable outcomes.
Err codemadness.org 70 i 45608 This suggests to me that the notion of traceability under (internationally?) agreed circumstances (that is, differential traceability) might be a fruitful concept to explore. In most societies today, it is accepted that we must be identifiable to appropriate authorities under certain conditions (consider border crossings, traffic violation stops as examples). While there are conditions under which apparent anonymity is desirable and even justifiable (whistle-blowing, for example) absolute anonymity is actually quite difficult to achieve (another point made at the Ditchley workshop) and might not be absolutely desirable given the misbehaviors apparent anonymity invites. I expect this is a controversial conclusion and I look forward to subsequent discussion.
###Remote Access Console using FreeBSD on an RPi3
Err codemadness.org 70 i 45614 Err codemadness.org 70 i 45615Err codemadness.org 70 i 45628Err codemadness.org 70 i 45630 Err codemadness.org 70 i 45631For the software I ended up using conserver. Below is a very brief tutorial on how to set everything up. I assume you have basic unix skills.
Err codemadness.org 70 i 45629
Err codemadness.org 70 i 45649Err codemadness.org 70 i 45651 Err codemadness.org 70 i 45652A small bonus script I wrote to turn on the 2nd LED on the rPI once the system is booted, it will then blink the LED if someone is connected to any of the consoles.
Err codemadness.org 70 i 45650
##Beastie Bits
Err codemadness.org 70 i 45659 Err codemadness.org 70 i 45660Tarsnap
Err codemadness.org 70 i 45672 Err codemadness.org 70 i 45673##Feedback/Questions
Err codemadness.org 70
i 45674 We need more feedback emails. Please write to feedback@bsdnow.tv
Additionally, we are considering a new segment to be added to the end of the show (to make it skippable), where we have a ~15 minute deep dive on a topic. Some initial ideas are on the Virtual Memory subsystem, the Scheduler, Capsicum, and GEOM. What topics would you like to get very detailed explanations of? Many of the explanations may have accompanying graphics, and not be very suitable for audio only listeners, that is why we are planning to put it at the very end of the episode.
Err codemadness.org 70 i 45677 Err codemadness.org 70 i 45678##Headlines
Err codemadness.org 70
i 45688 ###Essen Hackathon & BSDCam 2018 trip report
###Call for Testing: ZFS Native Encryption for FreeBSD
Err codemadness.org 70 i 45707 Err codemadness.org 70 i 45708iXsystems
Err codemadness.org 70 i 45722 Err codemadness.org 70 i 45723###Call for Testing: UFS TRIM Consolidation
Err codemadness.org 70 i 45724 Err codemadness.org 70 i 45725Err codemadness.org 70 i 45730Err codemadness.org 70 i 45736 Err codemadness.org 70 i 45737When deleting files on filesystems that are stored on flash-memory (solid-state) disk drives, the filesystem notifies the underlying disk of the blocks that it is no longer using. The notification allows the drive to avoid saving these blocks when it needs to flash (zero out) one of its flash pages. These notifications of no-longer-being-used blocks are referred to as TRIM notifications. In FreeBSD these TRIM notifications are sent from the filesystem to the drive using the BIO_DELETE command.
Err codemadness.org 70 i 45735
Err codemadness.org 70 i 45731 Until now, the filesystem would send a separate message to the drive for each block of the file that was deleted. Each Gigabyte of file size resulted in over 3000 TRIM messages being sent to the drive. This burst of messages can overwhelm the drive’s task queue causing multiple second delays for read and write requests.
Err codemadness.org 70 i 45732 This implementation collects runs of contiguous blocks in the file and then consolodates them into a single BIO_DELETE command to the drive. The BIO_DELETE command describes the run of blocks as a single large block being deleted. Each Gigabyte of file size can result in as few as two BIO_DELETE commands and is typically less than ten. Though these larger BIO_DELETE commands take longer to run, they do not clog the drive task queue, so read and write commands can intersperse effectively with them.
Err codemadness.org 70 i 45733 Though this new feature has been throughly reviewed and tested, it is being added disabled by default so as to minimize the possibility of disrupting the upcoming 12.0 release. It can be enabled by running ``sysctl vfs.ffs.dotrimcons=1’’. Users are encouraged to test it. If no problems arise, we will consider requesting that it be enabled by default for 12.0.
Err codemadness.org 70 i 45734 This support is off by default, but I am hoping that I can get enough testing to ensure that it (a) works, and (b) is helpful that it will be reasonable to have it turned on by default in 12.0. The cutoff for turning it on by default in 12.0 is September 19th. So I am requesting your testing feedback in the near-term. Please let me know if you have managed to use it successfully (or not) and also if it provided any performance difference (good or bad).
gstat with the -d flag##News Roundup
Err codemadness.org 70
i 45746 ###ZFS performance
Err codemadness.org 70 i 45753Err codemadness.org 70 i 45756 Err codemadness.org 70 i 45757This is NOT an all-in post about ZFS performance. I built a FreeBSD+ZFS file server recently at work to serve as an offsite backup server. I wanted to run a few synthetic workloads on it and look at how it fares from performance perspective. Mostly for curiosity and learning purposes.
Err codemadness.org 70 i 45755
Err codemadness.org 70 i 45754 As stated in the notes about building this server, performance was not one of the priorities, as this server will never face our active workload. What I care about from this server is its ability to work with rsync and keep the data synchronised with our primary storage server. With that context, I ran a few write tests to see how good our solution is and what to expect from it in terms of performance.
Err codemadness.org 70 i 45764Err codemadness.org 70 i 45767 Err codemadness.org 70 i 45768Write Performance: Incompressible: 1600-2600 MB/s, Compressible: 2500-6600 MB/s
Err codemadness.org 70 i 45766
Err codemadness.org 70 i 45765 Another over 1200 MB/s is enough to keep your 10 gigabit network saturated
Err codemadness.org 70 i 45781Err codemadness.org 70 i 45792 Err codemadness.org 70 i 45793I’ve been the maintainer of the FreeBSD/EC2 platform for about 7.5 years now, and as far as “running things in virtual machines” goes, that remains the only operating system and the only cloud which I work on. That said, from time to time I get questions from people who want to port other operating systems into EC2, and being a member of the open source community, I do my best to help them. I realized a few days ago that rather than replying to emails one by one it would be more efficient to post something publicly; so — for the benefit of the dozen or so people who want to port operating systems to run in EC2, and the curiosity of maybe a thousand more people who use EC2 but will never build AMIs themselves — here’s a rough guide to building EC2 images.
Err codemadness.org 70 i 45788
Err codemadness.org 70 i 45782 Before we can talk about building images, there are some things you need:
Err codemadness.org 70 i 45783 Your OS needs to run on x86 hardware. 64-bit (“amd64”, “x86-64”) is ideal, but I’ve managed to run 32-bit FreeBSD on “64-bit” EC2 instances so at least in some cases that’s not strictly necessary.
Err codemadness.org 70 i 45784 You almost certainly want to have drivers for Xen block devices (for all of the pre-Nitro EC2 instances) or for NVMe disks (for the most recent EC2 instances). Theoretically you could make do without these since there’s some ATA emulation available for bootstrapping, but if you want to do any disk I/O after the kernel finishes booting you’ll want to have a disk driver.
Err codemadness.org 70 i 45785 Similarly, you need support for the Xen network interface (older instances), Intel 10 GbE SR-IOV networking (some newer but pre-Nitro instances), or Amazon’s “ENA” network adapters (on Nitro instances), unless you plan on having instances which don’t communicate over the network. The ENA driver is probably the hardest thing to port, since as far as I know there’s no way to get your hands on the hardware directly, and it’s very difficult to do any debugging in EC2 without having a working network.
Err codemadness.org 70 i 45786 Finally, the obvious: You need to have an AWS account, and appropriate API access keys.
Err codemadness.org 70 i 45787 Building a disk imageBuilding an AMI
Err codemadness.org 70 i 45791
Err codemadness.org 70 i 45789 I wrote a simple tool for converting disk images into EC2 instances: bsdec2-image-upload. It uploads a disk image to Amazon S3; makes an API call to import that disk image into an EBS volume; creates a snapshot of that volume; then registers an EC2 AMI using that snapshot.
Err codemadness.org 70 i 45790 To use bsdec2-image-upload, you’ll first need to create an S3 bucket for it to use as a staging area. You can call it anything you like, but I recommend that you
Err codemadness.org 70 i 45794Err codemadness.org 70 i 45797 Err codemadness.org 70 i 45798Create it in a “nearby” region (for performance reasons), and
Err codemadness.org 70 i 45796
Err codemadness.org 70 i 45795 Set an S3 “lifecycle policy” which deletes objects automatically after 1 day (since bsdec2-image-upload doesn’t clean up the S3 bucket, and those objects are useless once you’ve finished creating an AMI).
Err codemadness.org 70 i 45799Err codemadness.org 70 i 45820 Err codemadness.org 70 i 45821Boot configuration
Err codemadness.org 70 i 45819
Err codemadness.org 70 i 45800 Odds are that your instance started booting and got as far as the boot loader launching the kernel, but at some point after that things went sideways. Now we start the iterative process of building disk images, turning them into AMIs, launching said AMIs, and seeing where they break. Some things you’ll probably run into here:
Err codemadness.org 70 i 45801 EC2 instances have two types of console available to them: A serial console and an VGA console. (Or rather, emulated serial and emulated VGA.) If you can have your kernel output go to both consoles, I recommend doing that. If you have to pick one, the serial console (which shows up as the “System Log” in EC2) is probably more useful than the VGA console (which shows up as “instance screenshot”) since it lets you see more than one screen of logs at once; but there’s a catch: Due to some bizarre breakage in EC2 — which I’ve been complaining about for ten years — the serial console is very “laggy”. If you find that you’re not getting any output, wait five minutes and try again.
Err codemadness.org 70 i 45802 You may need to tell your kernel where to find the root filesystem. On FreeBSD we build our disk images using GPT labels, so we simply need to specify in /etc/fstab that the root filesystem is on /dev/gpt/rootfs; but if you can’t do this, you’ll probably need to have different AMIs for Nitro instances vs. non-Nitro instances since Xen block devices will typically show up with different device names from NVMe disks. On FreeBSD, I also needed to set the vfs.root.mountfrom kernel environment variable for a while; this also is no longer needed on FreeBSD but something similar may be needed on other systems.
Err codemadness.org 70 i 45803 You’ll need to enable networking, using DHCP. On FreeBSD, this means placing ifconfig_DEFAULT=“SYNCDHCP” into /etc/rc.conf; other systems will have other ways of specifying network parameters, and it may be necessary to specify a setting for the Xen network device, Intel SR-IOV network, and the Amazon ENA interface so that you’ll have the necessary configuration across all EC2 instance types. (On FreeBSD, ifconfig_DEFAULT takes care of specifying the network settings which should apply for whatever network interface the kernel finds at boot time.)
Err codemadness.org 70 i 45804 You’ll almost certainly want to turn on SSH, so that you can connect into newly launched instances and make use of them. Don’t worry about setting a password or creating a user to SSH into yet — we’ll take care of that later.
Err codemadness.org 70 i 45805 EC2 configuration
Err codemadness.org 70 i 45806 Now it’s time to make the AMI behave like an EC2 instance. To this end, I prepared a set of rc.d scripts for FreeBSD. Most importantly, they
Err codemadness.org 70 i 45807 Print the SSH host keys to the console, so that you can veriy that they are correct when you first SSH in. (Remember, Verifying SSH host keys is more important than flossing every day.)
Err codemadness.org 70 i 45808 Download the SSH public key you want to use for logging in, and create an account (by default, “ec2-user”) with that key set up for you.
Err codemadness.org 70 i 45809 Fetch EC2 user-data and process it via configinit to allow you to configure the system as part of the process of launching it.
Err codemadness.org 70 i 45810 If your OS has an rc system derived from NetBSD’s rc.d, you may be able to use these scripts without any changes by simply installing them and enabling them in /etc/rc.conf; otherwise you may need to write your own scripts using mine as a model.
Err codemadness.org 70 i 45811 Firstboot scripts
Err codemadness.org 70 i 45812 A feature I added to FreeBSD a few years ago is the concept of “firstboot” scripts: These startup scripts are only run the first time a system boots. The aforementioned configinit and SSH key fetching scripts are flagged this way — so if your OS doesn’t support the “firstboot” keyword on rc.d scripts you’ll need to hack around that — but EC2 instances also ship with other scripts set to run on the first boot:
Err codemadness.org 70 i 45813 FreeBSD Update will fetch and install security and critical errata updates, and then reboot the system if necessary.
Err codemadness.org 70 i 45814 The UFS filesystem on the “boot disk” will be automatically expanded to the full size of the disk — this makes it possible to specify a larger size of disk at EC2 instance launch time.
Err codemadness.org 70 i 45815 Third-party packages will be automatically fetched and installed, according to a list in /etc/rc.conf. This is most useful if configinit is used to edit /etc/rc.conf, since it allows you to specify packages to install via the EC2 user-data.
Err codemadness.org 70 i 45816 While none of these are strictly necessary, I find them to be extremely useful and highly recommend implementing similar functionality in your systems.
Err codemadness.org 70 i 45817 Support my work!
Err codemadness.org 70 i 45818 I hope you find this useful, or at very least interesting. Please consider supporting my work in this area; while I’m happy to contribute my time to supporting open source software, it would be nice if I had money coming in which I could use to cover incidental expenses (e.g., conference travel) so that I didn’t end up paying to contribute to FreeBSD.
Digital Ocean
Err codemadness.org 70
i 45824 https://do.co/bsdnow
Err codemadness.org 70 i 45833Err codemadness.org 70 i 45840 Err codemadness.org 70 i 45841At a recent workshop on cybersecurity in the U.K., a primary topic of consideration was how to preserve the freedom and openness of the Internet while protecting against the harmful behaviors that have emerged in this global medium. That this is a significant challenge cannot be overstated. The bad behaviors range from social network bullying and misinformation to email spam, distributed denial of service attacks, direct cyberattacks against infrastructure, malware propagation, identity theft, and a host of other ills requiring a wide range of technical and legal considerations. That these harmful behaviors can and do cross international boundaries only makes it more difficult to fashion effective responses.
Err codemadness.org 70 i 45839
Err codemadness.org 70 i 45834 In other columns, I have argued for better software development tools to reduce the common mistakes that lead to vulnerabilities that are exploited. Here, I want to focus on another aspect of response related to law enforcement and tracking down perpetrators. Of course, not all harms are (or perhaps are not yet) illegal, but discovering those who cause them may still be warranted. The recent adoption and implementation of the General Data Protection Regulation (GDPR) in the European Union creates an interesting tension because it highlights the importance and value of privacy while those who do direct or indirect harm must be tracked down and their identities discovered.
Err codemadness.org 70 i 45835 In passing, I mention that cryptography has sometimes been blamed for protecting the identity or actions of criminals but it is also a tool for protecting privacy. Arguments have been made for “back doors” to cryptographic systems but I am of the opinion that such proposals carry extremely high risk to privacy and safety. It is not my intent to argue this question in this column.
Err codemadness.org 70 i 45836 What is of interest to me is a concept to which I was introduced at the Ditchley workshop, specifically, differential traceability. The ability to trace bad actors to bring them to justice seems to me an important goal in a civilized society. The tension with privacy protection leads to the idea that only under appropriate conditions can privacy be violated. By way of example, consider license plates on cars. They are usually arbitrary identifiers and special authority is needed to match them with the car owners (unless, of course, they are vanity plates like mine: “Cerfsup”). This is an example of differential traceability; the police department has the authority to demand ownership information from the Department of Motor Vehicles that issues the license plates. Ordinary citizens do not have this authority.
Err codemadness.org 70 i 45837 In the Internet environment there are a variety of identifiers associated with users (including corporate users). Domain names, IP addresses, email addresses, and public cryptography keys are examples among many others. Some of these identifiers are dynamic and thus ambiguous. For example, IP addresses are not always permanent and may change (for example, temporary IP addresses assigned at Wi-Fi hotspots) or may be ambiguous in the case of Network Address Translation. Information about the time of assignment and the party to whom an IP address was assigned may be needed to identify an individual user. There has been considerable debate and even a recent court case regarding requirements to register users in domain name WHOIS databases in the context of the adoption of GDPR. If we are to accomplish the simultaneous objectives of protecting privacy while apprehending those engaged in harmful or criminal behavior on the Internet, we must find some balance between conflicting but desirable outcomes.
Err codemadness.org 70 i 45838 This suggests to me that the notion of traceability under (internationally?) agreed circumstances (that is, differential traceability) might be a fruitful concept to explore. In most societies today, it is accepted that we must be identifiable to appropriate authorities under certain conditions (consider border crossings, traffic violation stops as examples). While there are conditions under which apparent anonymity is desirable and even justifiable (whistle-blowing, for example) absolute anonymity is actually quite difficult to achieve (another point made at the Ditchley workshop) and might not be absolutely desirable given the misbehaviors apparent anonymity invites. I expect this is a controversial conclusion and I look forward to subsequent discussion.
###Remote Access Console using FreeBSD on an RPi3
Err codemadness.org 70 i 45844 Err codemadness.org 70 i 45845Err codemadness.org 70 i 45858Err codemadness.org 70 i 45860 Err codemadness.org 70 i 45861For the software I ended up using conserver. Below is a very brief tutorial on how to set everything up. I assume you have basic unix skills.
Err codemadness.org 70 i 45859
Err codemadness.org 70 i 45879Err codemadness.org 70 i 45881 Err codemadness.org 70 i 45882A small bonus script I wrote to turn on the 2nd LED on the rPI once the system is booted, it will then blink the LED if someone is connected to any of the consoles.
Err codemadness.org 70 i 45880
##Beastie Bits
Err codemadness.org 70 i 45889 Err codemadness.org 70 i 45890Tarsnap
Err codemadness.org 70 i 45902 Err codemadness.org 70 i 45903##Feedback/Questions
Err codemadness.org 70
i 45904 We need more feedback emails. Please write to feedback@bsdnow.tv
Additionally, we are considering a new segment to be added to the end of the show (to make it skippable), where we have a ~15 minute deep dive on a topic. Some initial ideas are on the Virtual Memory subsystem, the Scheduler, Capsicum, and GEOM. What topics would you like to get very detailed explanations of? Many of the explanations may have accompanying graphics, and not be very suitable for audio only listeners, that is why we are planning to put it at the very end of the episode.
Err codemadness.org 70 i 45907 Err codemadness.org 70 i 45908##Headlines
Err codemadness.org 70
i 46305 ###The Strange Birth and Long Life of Unix
Err codemadness.org 70 i 46308Err codemadness.org 70 i 46345 Err codemadness.org 70 i 46346They say that when one door closes on you, another opens. People generally offer this bit of wisdom just to lend some solace after a misfortune. But sometimes it’s actually true. It certainly was for Ken Thompson and the late Dennis Ritchie, two of the greats of 20th-century information technology, when they created the Unix operating system, now considered one of the most inspiring and influential pieces of software ever written.
Err codemadness.org 70 i 46344
Err codemadness.org 70 i 46309 A door had slammed shut for Thompson and Ritchie in March of 1969, when their employer, the American Telephone & Telegraph Co., withdrew from a collaborative project with the Massachusetts Institute of Technology and General Electric to create an interactive time-sharing system called Multics, which stood for “Multiplexed Information and Computing Service.” Time-sharing, a technique that lets multiple people use a single computer simultaneously, had been invented only a decade earlier. Multics was to combine time-sharing with other technological advances of the era, allowing users to phone a computer from remote terminals and then read e-mail, edit documents, run calculations, and so forth. It was to be a great leap forward from the way computers were mostly being used, with people tediously preparing and submitting batch jobs on punch cards to be run one by one.
Err codemadness.org 70 i 46310 Over five years, AT&T invested millions in the Multics project, purchasing a GE-645 mainframe computer and dedicating to the effort many of the top researchers at the company’s renowned Bell Telephone Laboratories—including Thompson and Ritchie, Joseph F. Ossanna, Stuart Feldman, M. Douglas McIlroy, and the late Robert Morris. But the new system was too ambitious, and it fell troublingly behind schedule. In the end, AT&T’s corporate leaders decided to pull the plug.
Err codemadness.org 70 i 46311 After AT&T’s departure from the Multics project, managers at Bell Labs, in Murray Hill, N.J., became reluctant to allow any further work on computer operating systems, leaving some researchers there very frustrated. Although Multics hadn’t met many of its objectives, it had, as Ritchie later recalled, provided them with a “convenient interactive computing service, a good environment in which to do programming, [and] a system around which a fellowship could form.” Suddenly, it was gone.
Err codemadness.org 70 i 46312 With heavy hearts, the researchers returned to using their old batch system. At such an inauspicious moment, with management dead set against the idea, it surely would have seemed foolhardy to continue designing computer operating systems. But that’s exactly what Thompson, Ritchie, and many of their Bell Labs colleagues did. Now, some 40 years later, we should be thankful that these programmers ignored their bosses and continued their labor of love, which gave the world Unix, one of the greatest computer operating systems of all time.
Err codemadness.org 70 i 46313 The rogue project began in earnest when Thompson, Ritchie, and a third Bell Labs colleague, Rudd Canaday, began to sketch out on paper the design for a file system. Thompson then wrote the basics of a new operating system for the lab’s GE-645 mainframe. But with the Multics project ended, so too was the need for the GE-645. Thompson realized that any further programming he did on it was likely to go nowhere, so he dropped the effort.
Err codemadness.org 70 i 46314 Thompson had passed some of his time after the demise of Multics writing a computer game called Space Travel, which simulated all the major bodies in the solar system along with a spaceship that could fly around them. Written for the GE-645, Space Travel was clunky to play—and expensive: roughly US $75 a game for the CPU time. Hunting around, Thompson came across a dusty PDP-7, a minicomputer built by Digital Equipment Corp. that some of his Bell Labs colleagues had purchased earlier for a circuit-analysis project. Thompson rewrote Space Travel to run on it.
Err codemadness.org 70 i 46315 And with that little programming exercise, a second door cracked ajar. It was to swing wide open during the summer of 1969 when Thompson’s wife, Bonnie, spent a month visiting his parents to show off their newborn son. Thompson took advantage of his temporary bachelor existence to write a good chunk of what would become the Unix operating system for the discarded PDP‑7. The name Unix stems from a joke one of Thompson’s colleagues made: Because the new operating system supported only one user (Thompson), he saw it as an emasculated version of Multics and dubbed it “Un-multiplexed Information and Computing Service,” or Unics. The name later morphed into Unix.
Err codemadness.org 70 i 46316 Initially, Thompson used the GE-645 to compose and compile the software, which he then downloaded to the PDP‑7. But he soon weaned himself from the mainframe, and by the end of 1969 he was able to write operating-system code on the PDP-7 itself. That was a step in the right direction. But Thompson and the others helping him knew that the PDP‑7, which was already obsolete, would not be able to sustain their skunkworks for long. They also knew that the lab’s management wasn’t about to allow any more research on operating systems.
Err codemadness.org 70 i 46317 So Thompson and Ritchie got creative. They formulated a proposal to their bosses to buy one of DEC’s newer minicomputers, a PDP-11, but couched the request in especially palatable terms. They said they were aiming to create tools for editing and formatting text, what you might call a word-processing system today. The fact that they would also have to write an operating system for the new machine to support the editor and text formatter was almost a footnote.
Err codemadness.org 70 i 46318 Management took the bait, and an order for a PDP-11 was placed in May 1970. The machine itself arrived soon after, although the disk drives for it took more than six months to appear. During the interim, Thompson, Ritchie, and others continued to develop Unix on the PDP-7. After the PDP-11’s disks were installed, the researchers moved their increasingly complex operating system over to the new machine. Next they brought over the roff text formatter written by Ossanna and derived from the runoff program, which had been used in an earlier time-sharing system.
Err codemadness.org 70 i 46319 Unix was put to its first real-world test within Bell Labs when three typists from AT&T’s patents department began using it to write, edit, and format patent applications. It was a hit. The patent department adopted the system wholeheartedly, which gave the researchers enough credibility to convince management to purchase another machine—a newer and more powerful PDP-11 model—allowing their stealth work on Unix to continue.
Err codemadness.org 70 i 46320 During its earliest days, Unix evolved constantly, so the idea of issuing named versions or releases seemed inappropriate. But the researchers did issue new editions of the programmer’s manual periodically, and the early Unix systems were named after each such edition. The first edition of the manual was completed in November 1971.
Err codemadness.org 70 i 46321 So what did the first edition of Unix offer that made it so great? For one thing, the system provided a hierarchical file system, which allowed something we all now take for granted: Files could be placed in directories—or equivalently, folders—that in turn could be put within other directories. Each file could contain no more than 64 kilobytes, and its name could be no more than six characters long. These restrictions seem awkwardly limiting now, but at the time they appeared perfectly adequate.
Err codemadness.org 70 i 46322 Although Unix was ostensibly created for word processing, the only editor available in 1971 was the line-oriented ed. Today, ed is still the only editor guaranteed to be present on all Unix systems. Apart from the text-processing and general system applications, the first edition of Unix included games such as blackjack, chess, and tic-tac-toe. For the system administrator, there were tools to dump and restore disk images to magnetic tape, to read and write paper tapes, and to create, check, mount, and unmount removable disk packs.
Err codemadness.org 70 i 46323 Most important, the system offered an interactive environment that by this time allowed time-sharing, so several people could use a single machine at once. Various programming languages were available to them, including BASIC, Fortran, the scripting of Unix commands, assembly language, and B. The last of these, a descendant of a BCPL (Basic Combined Programming Language), ultimately evolved into the immensely popular C language, which Ritchie created while also working on Unix.
Err codemadness.org 70 i 46324 The first edition of Unix let programmers call 34 different low-level routines built into the operating system. It’s a testament to the system’s enduring nature that nearly all of these system calls are still available—and still heavily used—on modern Unix and Linux systems four decades on. For its time, first-edition Unix provided a remarkably powerful environment for software development. Yet it contained just 4200 lines of code at its heart and occupied a measly 16 KB of main memory when it ran.
Err codemadness.org 70 i 46325 Unix’s great influence can be traced in part to its elegant design, simplicity, portability, and serendipitous timing. But perhaps even more important was the devoted user community that soon grew up around it. And that came about only by an accident of its unique history.
Err codemadness.org 70 i 46326 The story goes like this: For years Unix remained nothing more than a Bell Labs research project, but by 1973 its authors felt the system was mature enough for them to present a paper on its design and implementation at a symposium of the Association for Computing Machinery. That paper was published in 1974 in the Communications of the ACM. Its appearance brought a flurry of requests for copies of the software.
Err codemadness.org 70 i 46327 This put AT&T in a bind. In 1956, AT&T had agreed to a U.S government consent decree that prevented the company from selling products not directly related to telephones and telecommunications, in return for its legal monopoly status in running the country’s long-distance phone service. So Unix could not be sold as a product. Instead, AT&T released the Unix source code under license to anyone who asked, charging only a nominal fee. The critical wrinkle here was that the consent decree prevented AT&T from supporting Unix. Indeed, for many years Bell Labs researchers proudly displayed their Unix policy at conferences with a slide that read, “No advertising, no support, no bug fixes, payment in advance.”
Err codemadness.org 70 i 46328 With no other channels of support available to them, early Unix adopters banded together for mutual assistance, forming a loose network of user groups all over the world. They had the source code, which helped. And they didn’t view Unix as a standard software product, because nobody seemed to be looking after it. So these early Unix users themselves set about fixing bugs, writing new tools, and generally improving the system as they saw fit.
Err codemadness.org 70 i 46329 The Usenix user group acted as a clearinghouse for the exchange of Unix software in the United States. People could send in magnetic tapes with new software or fixes to the system and get back tapes with the software and fixes that Usenix had received from others. In Australia, the University of New South Wales and the University of Sydney produced a more robust version of Unix, the Australian Unix Share Accounting Method, which could cope with larger numbers of concurrent users and offered better performance.
Err codemadness.org 70 i 46330 By the mid-1970s, the environment of sharing that had sprung up around Unix resembled the open-source movement so prevalent today. Users far and wide were enthusiastically enhancing the system, and many of their improvements were being fed back to Bell Labs for incorporation in future releases. But as Unix became more popular, AT&T’s lawyers began looking harder at what various licensees were doing with their systems.
Err codemadness.org 70 i 46331 One person who caught their eye was John Lions, a computer scientist then teaching at the University of New South Wales, in Australia. In 1977, he published what was probably the most famous computing book of the time, A Commentary on the Unix Operating System, which contained an annotated listing of the central source code for Unix.
Err codemadness.org 70 i 46332 Unix’s licensing conditions allowed for the exchange of source code, and initially, Lions’s book was sold to licensees. But by 1979, AT&T’s lawyers had clamped down on the book’s distribution and use in academic classes. The antiauthoritarian Unix community reacted as you might expect, and samizdat copies of the book spread like wildfire. Many of us have nearly unreadable nth-generation photocopies of the original book.
Err codemadness.org 70 i 46333 End runs around AT&T’s lawyers indeed became the norm—even at Bell Labs. For example, between the release of the sixth edition of Unix in 1975 and the seventh edition in 1979, Thompson collected dozens of important bug fixes to the system, coming both from within and outside of Bell Labs. He wanted these to filter out to the existing Unix user base, but the company’s lawyers felt that this would constitute a form of support and balked at their release. Nevertheless, those bug fixes soon became widely distributed through unofficial channels. For instance, Lou Katz, the founding president of Usenix, received a phone call one day telling him that if he went down to a certain spot on Mountain Avenue (where Bell Labs was located) at 2 p.m., he would find something of interest. Sure enough, Katz found a magnetic tape with the bug fixes, which were rapidly in the hands of countless users.
Err codemadness.org 70 i 46334 By the end of the 1970s, Unix, which had started a decade earlier as a reaction against the loss of a comfortable programming environment, was growing like a weed throughout academia and the IT industry. Unix would flower in the early 1980s before reaching the height of its popularity in the early 1990s.
Err codemadness.org 70 i 46335 For many reasons, Unix has since given way to other commercial and noncommercial systems. But its legacy, that of an elegant, well-designed, comfortable environment for software development, lives on. In recognition of their accomplishment, Thompson and Ritchie were given the Japan Prize earlier this year, adding to a collection of honors that includes the United States’ National Medal of Technology and Innovation and the Association of Computing Machinery’s Turing Award. Many other, often very personal, tributes to Ritchie and his enormous influence on computing were widely shared after his death this past October.
Err codemadness.org 70 i 46336 Unix is indeed one of the most influential operating systems ever invented. Its direct descendants now number in the hundreds. On one side of the family tree are various versions of Unix proper, which began to be commercialized in the 1980s after the Bell System monopoly was broken up, freeing AT&T from the stipulations of the 1956 consent decree. On the other side are various Unix-like operating systems derived from the version of Unix developed at the University of California, Berkeley, including the one Apple uses today on its computers, OS X. I say “Unix-like” because the developers of the Berkeley Software Distribution (BSD) Unix on which these systems were based worked hard to remove all the original AT&T code so that their software and its descendants would be freely distributable.
Err codemadness.org 70 i 46337 The effectiveness of those efforts were, however, called into question when the AT&T subsidiary Unix System Laboratories filed suit against Berkeley Software Design and the Regents of the University of California in 1992 over intellectual property rights to this software. The university in turn filed a counterclaim against AT&T for breaches to the license it provided AT&T for the use of code developed at Berkeley. The ensuing legal quagmire slowed the development of free Unix-like clones, including 386BSD, which was designed for the Intel 386 chip, the CPU then found in many IBM PCs.
Err codemadness.org 70 i 46338 Had this operating system been available at the time, Linus Torvalds says he probably wouldn’t have created Linux, an open-source Unix-like operating system he developed from scratch for PCs in the early 1990s. Linux has carried the Unix baton forward into the 21st century, powering a wide range of digital gadgets including wireless routers, televisions, desktop PCs, and Android smartphones. It even runs some supercomputers.
Err codemadness.org 70 i 46339 Although AT&T quickly settled its legal disputes with Berkeley Software Design and the University of California, legal wrangling over intellectual property claims to various parts of Unix and Linux have continued over the years, often involving byzantine corporate relations. By 2004, no fewer than five major lawsuits had been filed. Just this past August, a software company called the TSG Group (formerly known as the SCO Group), lost a bid in court to claim ownership of Unix copyrights that Novell had acquired when it purchased the Unix System Laboratories from AT&T in 1993.
Err codemadness.org 70 i 46340 As a programmer and Unix historian, I can’t help but find all this legal sparring a bit sad. From the very start, the authors and users of Unix worked as best they could to build and share, even if that meant defying authority. That outpouring of selflessness stands in sharp contrast to the greed that has driven subsequent legal battles over the ownership of Unix.
Err codemadness.org 70 i 46341 The world of computer hardware and software moves forward startlingly fast. For IT professionals, the rapid pace of change is typically a wonderful thing. But it makes us susceptible to the loss of our own history, including important lessons from the past. To address this issue in a small way, in 1995 I started a mailing list of old-time Unix aficionados. That effort morphed into the Unix Heritage Society. Our goal is not only to save the history of Unix but also to collect and curate these old systems and, where possible, bring them back to life. With help from many talented members of this society, I was able to restore much of the old Unix software to working order, including Ritchie’s first C compiler from 1972 and the first Unix system to be written in C, dating from 1973.
Err codemadness.org 70 i 46342 One holy grail that eluded us for a long time was the first edition of Unix in any form, electronic or otherwise. Then, in 2006, Al Kossow from the Computer History Museum, in Mountain View, Calif., unearthed a printed study of Unix dated 1972, which not only covered the internal workings of Unix but also included a complete assembly listing of the kernel, the main component of this operating system. This was an amazing find—like discovering an old Ford Model T collecting dust in a corner of a barn. But we didn’t just want to admire the chrome work from afar. We wanted to see the thing run again.
Err codemadness.org 70 i 46343 In 2008, Tim Newsham, an independent programmer in Hawaii, and I assembled a team of like-minded Unix enthusiasts and set out to bring this ancient system back from the dead. The work was technically arduous and often frustrating, but in the end, we had a copy of the first edition of Unix running on an emulated PDP-11/20. We sent out messages announcing our success to all those we thought would be interested. Thompson, always succinct, simply replied, “Amazing.” Indeed, his brainchild was amazing, and I’ve been happy to do what I can to make it, and the story behind it, better known.
Digital Ocean
Err codemadness.org 70
i 46349 http://do.co/bsdnow
###FreeBSD jails with a single public IP address
Err codemadness.org 70 i 46352 Err codemadness.org 70 i 46353Err codemadness.org 70 i 46354Err codemadness.org 70 i 46356 Err codemadness.org 70 i 46357Jails in FreeBSD provide a simple yet flexible way to set up a proper server layout. In the most setups the actual server only acts as the host system for the jails while the applications themselves run within those independent containers. Traditionally every jail has it’s own IP for the user to be able to address the individual services. But if you’re still using IPv4 this might get you in trouble as the most hosters don’t offer more than one single public IP address per server.
Err codemadness.org 70 i 46355
Err codemadness.org 70 i 46362Err codemadness.org 70 i 46366 Err codemadness.org 70 i 46367In this case NAT (“Network Address Translation”) is a good way to expose services in different jails using the same IP address.
Err codemadness.org 70 i 46365
Err codemadness.org 70 i 46363 First, let’s create an internal network (“NAT network”) at 192.168.0.0/24. You could generally use any private IPv4 address space as specified in RFC 1918. Here’s an overview: https://en.wikipedia.org/wiki/Private_network. Using pf, FreeBSD’s firewall, we will map requests on different ports of the same public IP address to our individual jails as well as provide network access to the jails themselves.
Err codemadness.org 70 i 46364 First let’s check which network devices are available. In my case there’s em0 which provides connectivity to the internet and lo0, the local loopback device.
options=209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC> Err codemadness.org 70
i 46368 [...] Err codemadness.org 70
i 46369 inet 172.31.1.100 netmask 0xffffff00 broadcast 172.31.1.255 Err codemadness.org 70
i 46370 nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL> Err codemadness.org 70
i 46371 media: Ethernet autoselect (1000baseT <full-duplex>) Err codemadness.org 70
i 46372 status: active Err codemadness.org 70
i 46373 Err codemadness.org 70
i 46374 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 Err codemadness.org 70
i 46375 options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6> Err codemadness.org 70
i 46376 inet6 ::1 prefixlen 128 Err codemadness.org 70
i 46377 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2 Err codemadness.org 70
i 46378 inet 127.0.0.1 netmask 0xff000000 Err codemadness.org 70
i 46379 nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>``` Err codemadness.org 70
i 46380 Err codemadness.org 70
i 46381 > For our internal network, we create a cloned loopback device called lo1. Therefore we need to customize the /etc/rc.conf file, adding the following two lines: Err codemadness.org 70
i 46382 Err codemadness.org 70
i 46383 ```cloned_interfaces="lo1" Err codemadness.org 70
i 46384 ipv4_addrs_lo1="192.168.0.1-9/29"``` Err codemadness.org 70
i 46385 Err codemadness.org 70
i 46386 > This defines a /29 network, offering IP addresses for a maximum of 6 jails: Err codemadness.org 70
i 46387 Err codemadness.org 70
i 46388 ```ipcalc 192.168.0.1/29 Err codemadness.org 70
i 46389 Address: 192.168.0.1 11000000.10101000.00000000.00000 001 Err codemadness.org 70
i 46390 Netmask: 255.255.255.248 = 29 11111111.11111111.11111111.11111 000 Err codemadness.org 70
i 46391 Wildcard: 0.0.0.7 00000000.00000000.00000000.00000 111 Err codemadness.org 70
i 46392 => Err codemadness.org 70
i 46393 Network: 192.168.0.0/29 11000000.10101000.00000000.00000 000 Err codemadness.org 70
i 46394 HostMin: 192.168.0.1 11000000.10101000.00000000.00000 001 Err codemadness.org 70
i 46395 HostMax: 192.168.0.6 11000000.10101000.00000000.00000 110 Err codemadness.org 70
i 46396 Broadcast: 192.168.0.7 11000000.10101000.00000000.00000 111 Err codemadness.org 70
i 46397 Hosts/Net: 6 Class C, Private Internet``` Err codemadness.org 70
i 46398 Err codemadness.org 70
i 46399 > Then we need to restart the network. Please be aware of currently active SSH sessions as they might be dropped during restart. It’s a good moment to ensure you have KVM access to that server ;-) Err codemadness.org 70
i 46400 Err codemadness.org 70
i 46401 ```service netif restart``` Err codemadness.org 70
i 46402 Err codemadness.org 70
i 46403 > After reconnecting, our newly created loopback device is active: Err codemadness.org 70
i 46404 Err codemadness.org 70
i 46405 ```lo1: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 Err codemadness.org 70
i 46406 options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6> Err codemadness.org 70
i 46407 inet 192.168.0.1 netmask 0xfffffff8 Err codemadness.org 70
i 46408 inet 192.168.0.2 netmask 0xffffffff Err codemadness.org 70
i 46409 inet 192.168.0.3 netmask 0xffffffff Err codemadness.org 70
i 46410 inet 192.168.0.4 netmask 0xffffffff Err codemadness.org 70
i 46411 inet 192.168.0.5 netmask 0xffffffff Err codemadness.org 70
i 46412 inet 192.168.0.6 netmask 0xffffffff Err codemadness.org 70
i 46413 inet 192.168.0.7 netmask 0xffffffff Err codemadness.org 70
i 46414 inet 192.168.0.8 netmask 0xffffffff Err codemadness.org 70
i 46415 inet 192.168.0.9 netmask 0xffffffff Err codemadness.org 70
i 46416 nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>``` Err codemadness.org 70
i 46417 Err codemadness.org 70
i 46418 + Setting up Err codemadness.org 70
i 46419 Err codemadness.org 70
i 46420 > pf part of the FreeBSD base system, so we only have to configure and enable it. By this moment you should already have a clue of which services you want to expose. If this is not the case, just fix that file later on. In my example configuration, I have a jail running a webserver and another jail running a mailserver: Err codemadness.org 70
i 46421 Err codemadness.org 70
i 46422 + Public IP address Err codemadness.org 70
i 46423 ```IP_PUB="1.2.3.4"``` Err codemadness.org 70
i 46424 Err codemadness.org 70
i 46425 + Packet normalization Err codemadness.org 70
i 46426 ```scrub in all``` Err codemadness.org 70
i 46427 Err codemadness.org 70
i 46428 + Allow outbound connections from within the jails Err codemadness.org 70
i 46429 ```nat on em0 from lo1:network to any -> (em0)``` Err codemadness.org 70
i 46430 Err codemadness.org 70
i 46431 + webserver jail at 192.168.0.2 Err codemadness.org 70
i 46432 ```rdr on em0 proto tcp from any to $IP_PUB port 443 -> 192.168.0.2``` Err codemadness.org 70
i 46433 Err codemadness.org 70
i 46434 + just an example in case you want to redirect to another port within your jail Err codemadness.org 70
i 46435 ```rdr on em0 proto tcp from any to $IP_PUB port 80 -> 192.168.0.2 port 8080``` Err codemadness.org 70
i 46436 Err codemadness.org 70
i 46437 + mailserver jail at 192.168.0.3 Err codemadness.org 70
i 46438 ```rdr on em0 proto tcp from any to $IP_PUB port 25 -> 192.168.0.3``` Err codemadness.org 70
i 46439 ```rdr on em0 proto tcp from any to $IP_PUB port 587 -> 192.168.0.3``` Err codemadness.org 70
i 46440 ```rdr on em0 proto tcp from any to $IP_PUB port 143 -> 192.168.0.3``` Err codemadness.org 70
i 46441 ```rdr on em0 proto tcp from any to $IP_PUB port 993 -> 192.168.0.3``` Err codemadness.org 70
i 46442 Err codemadness.org 70
i 46443 > Now just enable pf like this (which is the equivalent of adding pf_enable=YES to /etc/rc.conf): Err codemadness.org 70
i 46444 Err codemadness.org 70
i 46445 ```sysrc pf_enable="YES"``` Err codemadness.org 70
i 46446 Err codemadness.org 70
i 46447 > and start it: Err codemadness.org 70
i 46448 Err codemadness.org 70
i 46449 ```service pf start``` Err codemadness.org 70
i 46450 Err codemadness.org 70
i 46451 + Install ezjail Err codemadness.org 70
i 46452 Err codemadness.org 70
i 46453 > Ezjail is a collection of scripts by erdgeist that allow you to easily manage your jails. Err codemadness.org 70
i 46454 Err codemadness.org 70
i 46455 ```pkg install ezjail``` Err codemadness.org 70
i 46456 Err codemadness.org 70
i 46457 > As an alternative, you could install ezjail from the ports tree. Now we need to set up the basejail which contains the shared base system for our jails. In fact, every jail that you create get’s will use that basejail to symlink directories related to the base system like /bin and /sbin. This can be accomplished by running Err codemadness.org 70
i 46458 Err codemadness.org 70
i 46459 ```ezjail-admin install``` Err codemadness.org 70
i 46460 Err codemadness.org 70
i 46461 > In the next step, we’ll copy the /etc/resolv.conf file from our host to the newjail, which is the template for newly created jails (the parts that are not provided by basejail), to ensure that domain resolution will work properly within our jails later on: Err codemadness.org 70
i 46462 Err codemadness.org 70
i 46463 ```cp /etc/resolv.conf /usr/jails/newjail/etc/``` Err codemadness.org 70
i 46464 Err codemadness.org 70
i 46465 > Last but not least, we enable ezjail and start it: Err codemadness.org 70
i 46466 Err codemadness.org 70
i 46467 ```sysrc ezjail_enable="YES"``` Err codemadness.org 70
i 46468 ```service ezjail start``` Err codemadness.org 70
i 46469 Err codemadness.org 70
i 46470 + Create a jail Err codemadness.org 70
i 46471 Err codemadness.org 70
i 46472 > Creating a jail is as easy as it could probably be: Err codemadness.org 70
i 46473 Err codemadness.org 70
i 46474 ```ezjail-admin create webserver 192.168.0.2``` Err codemadness.org 70
i 46475 ```ezjail-admin start webserver``` Err codemadness.org 70
i 46476 Err codemadness.org 70
i 46477 > Now you can access your jail using: Err codemadness.org 70
i 46478 Err codemadness.org 70
i 46479 ```ezjail-admin console webserver``` Err codemadness.org 70
i 46480 Err codemadness.org 70
i 46481 > Each jail contains a vanilla FreeBSD installation. Err codemadness.org 70
i 46482 Err codemadness.org 70
i 46483 + Deploy services Err codemadness.org 70
i 46484 Err codemadness.org 70
i 46485 > Now you can spin up as many jails as you want to set up your services like web, mail or file shares. You should take care not to enable sshd within your jails, because that would cause problems with the service’s IP bindings. But this is not a problem, just SSH to the host and enter your jail using ezjail-admin console. Err codemadness.org 70
i 46486 *** Err codemadness.org 70
i 46487 Err codemadness.org 70
i 46488 ###[EuroBSDcon 2018 Talks & Schedule](https://2018.eurobsdcon.org/talks-schedule/) Err codemadness.org 70
i 46489 *** Err codemadness.org 70
i 46490 Err codemadness.org 70
i 46491 Err codemadness.org 70
i 46492 Err codemadness.org 70
i 46493 Err codemadness.org 70
i 46494 ##News Roundup Err codemadness.org 70
i 46495 ###[OpenBSD on an iBook G4](https://bobstechsite.com/openbsd-on-an-ibook-g4/) Err codemadness.org 70
i 46496 > I've mentioned on social media and on the BTS podcast a few times that I wanted to try installing OpenBSD onto an old "snow white" iBook G4 I acquired last summer to see if I could make it a useful machine again in the year 2018. This particular eBay purchase came with a 14" 1024x768 TFT screen, 1.07GHz PowerPC G4 processor, 1.5GB RAM, 100GB of HDD space and an ATI Radeon 9200 graphics card with 32 MB of SDRAM. The optical drive, ethernet port, battery & USB slots are also fully-functional. The only thing that doesn't work is the CMOS battery, but that's not unexpected for a device that was originally released in 2004. Err codemadness.org 70
i 46497 Err codemadness.org 70
i 46498 + Initial experiments Err codemadness.org 70
i 46499 Err codemadness.org 70
i 46500 > This iBook originally arrived at my door running Apple Mac OSX Leopard and came with the original install disk, the iLife & iWork suites for 2008, various instruction manuals, a working power cable and a spare keyboard. As you'll see in the pictures I took for this post the characters on the buttons have started to wear away from 14 years of intensive use, but the replacement needs a very good clean before I decide to swap it in! Err codemadness.org 70
i 46501 Err codemadness.org 70
i 46502 > After spending some time exploring the last version of OSX to support the IBM PowerPC processor architecture I tried to see if the hardware was capable of modern computing with Linux. Something I knew ahead of trying this was that the WiFi adapter was unlikely to work because it's a highly proprietary component designed by Apple to work specifically with OSX and nothing else, but I figured I could probably use a wireless USB dongle later to get around this limitation. Err codemadness.org 70
i 46503 Err codemadness.org 70
i 46504 > Unfortunately I found that no recent versions of mainstream Linux distributions would boot off this machine. Debian has dropped support 32-bit PowerPC architectures and the PowerPC variants of Ubuntu 16.04 LTS (vanilla, MATE and Lubuntu) wouldn't even boot the installer! The only distribution I could reliably install on the hardware was Lubuntu 14.04 LTS. Err codemadness.org 70
i 46505 Err codemadness.org 70
i 46506 > Unfortunately I'm not the biggest fan of the LXDE desktop for regular work and a lot of ported applications were old and broken because it clearly wasn't being maintained by people that use the hardware anymore. Ubuntu 14.04 is also approaching the end of its support life in early 2019, so this limited solution also has a limited shelf-life. Err codemadness.org 70
i 46507 Err codemadness.org 70
i 46508 + Over to BSD Err codemadness.org 70
i 46509 Err codemadness.org 70
i 46510 > I discussed this problem with a few people on Mastodon and it was pointed out to me that OSX is built on the Darwin kernel, which happens to be a variant of BSD. NetBSD and OpenBSD fans in particular convinced me that their communities still saw the value of supporting these old pieces of kit and that I should give BSD a try. Err codemadness.org 70
i 46511 Err codemadness.org 70
i 46512 > So yesterday evening I finally downloaded the "macppc" version of OpenBSD 6.3 with no idea what to expect. I hoped for the best but feared the worst because my last experience with this operating system was trying out PC-BSD in 2008 and discovering with disappointment that it didn't support any of the hardware on my Toshiba laptop. Err codemadness.org 70
i 46513 Err codemadness.org 70
i 46514 > When I initially booted OpenBSD I was a little surprised to find the login screen provided no visual feedback when I typed in my password, but I can understand the security reasons for doing that. The initial desktop environment that was loaded was very basic. All I could see was a console output window, a terminal and a desktop switcher in the X11 environment the system had loaded. Err codemadness.org 70
i 46515 Err codemadness.org 70
i 46516 > After a little Googling I found this blog post had some fantastic instructions to follow for the post-installation steps: https://sohcahtoa.org.uk/openbsd.html. I did have to adjust them slightly though because my iBook only has 1.5GB RAM and not every package that page suggests is available on macppc by default. You can see a full list here: https://ftp.openbsd.org/pub/OpenBSD/6.3/packages/powerpc/. Err codemadness.org 70
i 46517 Err codemadness.org 70
i 46518 + Final thoughts Err codemadness.org 70
i 46519 Err codemadness.org 70
i 46520 > I was really impressed with the performance of OpenBSD's "macppc" port. It boots much faster than OSX Leopard on the same hardware and unlike Lubuntu 14.04 it doesn't randomly hang for no reason or crash if you launch something demanding like the GIMP. Err codemadness.org 70
i 46521 Err codemadness.org 70
i 46522 > I was pleased to see that the command line tools I'm used to using on Linux have been ported across too. OpenBSD also had no issues with me performing basic desktop tasks on XFCE like browsing the web with NetSurf, playing audio files with VLC and editing images with the GIMP. Limited gaming is also theoretically possible if you're willing to build them (or an emulator) from source with SDL support. Err codemadness.org 70
i 46523 Err codemadness.org 70
i 46524 > If I wanted to use this system for heavy duty work then I'd probably be inclined to run key applications like LibreOffice on a Raspberry Pi and then connect my iBook G4 to those using VNC or an SSH connection with X11 forwarding. BSD is UNIX after all, so using my ancient laptop as a dumb terminal should work reasonably well. Err codemadness.org 70
i 46525 Err codemadness.org 70
i 46526 > In summary I was impressed with OpenBSD and its ability to breathe new life into this old Apple Mac. I'm genuinely excited about the idea of trying BSD with other devices on my network such as an old Asus Eee PC 900 netbook and at least one of the many Raspberry Pi devices I use. Whether I go the whole hog and replace Fedora on my main production laptop though remains to be seen! Err codemadness.org 70
i 46527 Err codemadness.org 70
i 46528 *** Err codemadness.org 70
i 46529 Err codemadness.org 70
i 46530 ###[The template user with PAM and login(1)](http://oshogbo.vexillium.org/blog/48) Err codemadness.org 70
i 46531 > When you build a new service (or an appliance) you need your users to be able to configure it from the command line. To accomplish this you can create system accounts for all registered users in your service and assign them a special login shell which provides such limited functionality. This can be painful if you have a dynamic user database. Err codemadness.org 70
i 46532 > Another challenge is authentication via remote services such as RADIUS. How can we implement services when we authenticate through it and log into it as a different user? Furthermore, imagine a scenario when RADIUS decides on which account we have the right to access by sending an additional attribute. Err codemadness.org 70
i 46533 > To address these two problems we can use a "template" user. Any of the PAM modules can set the value of the PAM_USER item. The value of this item will be used to determine which account we want to login. Only the "template" user must exist on the local password database, but the credential check can be omitted by the module. Err codemadness.org 70
i 46534 > This functionality exists in the login(1) used by FreeBSD, HardenedBSD, DragonFlyBSD and illumos. The functionality doesn't exist in the login(1) used in NetBSD, and OpenBSD doesn't support PAM modules at all. In addition what is also noteworthy is that such functionality was also in the OpenSSH but they decided to remove it and call it a security vulnerability (CVE 2015-6563). I can see how some people may have seen it that way, that’s why I recommend reading this article from an OpenPAM author and a FreeBSD security officer at the time. Err codemadness.org 70
i 46535 > Knowing the background let's take a look at an example. Err codemadness.org 70
i 46536 Err codemadness.org 70
i 46537 ```PAM_EXTERN int Err codemadness.org 70
i 46538 pam_sm_authenticate(pam_handle_t *pamh, int flags __unused, Err codemadness.org 70
i 46539 int argc __unused, const char *argv[] __unused) Err codemadness.org 70
i 46540 { Err codemadness.org 70
i 46541 const char *user, *password; Err codemadness.org 70
i 46542 int err; Err codemadness.org 70
i 46543 Err codemadness.org 70
i 46544 err = pam_get_user(pamh, &user, NULL); Err codemadness.org 70
i 46545 if (err != PAM_SUCCESS) Err codemadness.org 70
i 46546 return (err); Err codemadness.org 70
i 46547 Err codemadness.org 70
i 46548 err = pam_get_authtok(pamh, PAM_AUTHTOK, &password, NULL); Err codemadness.org 70
i 46549 if (err == PAM_CONV_ERR) Err codemadness.org 70
i 46550 return (err); Err codemadness.org 70
i 46551 if (err != PAM_SUCCESS) Err codemadness.org 70
i 46552 return (PAM_AUTH_ERR); Err codemadness.org 70
i 46553 Err codemadness.org 70
i 46554 err = authenticate(user, password); Err codemadness.org 70
i 46555 if (err != PAM_SUCCESS) { Err codemadness.org 70
i 46556 return (err); Err codemadness.org 70
i 46557 } Err codemadness.org 70
i 46558 Err codemadness.org 70
i 46559 return (pam_set_item(pamh, PAM_USER, "template")); Err codemadness.org 70
i 46560 } Err codemadness.org 70
i 46561 Err codemadness.org 70
i 46562 Err codemadness.org 70
i 46563 Err codemadness.org 70 i 46564Err codemadness.org 70 i 46566 Err codemadness.org 70 i 46567In the listing above we have an example of a PAM module. The pam_get_user(3) provides a username. The pam_get_authtok(3) shows us a secret given by the user. Both functions allow us to give an optional prompt which should be shown to the user. The authenticate function is our crafted function which authenticates the user. In our first scenario we wanted to keep all users in an external database. If authentication is successful we then switch to a template user which has a shell set up for a script allowing us to configure the machine. In our second scenario the authenticate function authenticates the user in RADIUS.
Err codemadness.org 70 i 46565
Err codemadness.org 70 i 46568Err codemadness.org 70 i 46570 Err codemadness.org 70 i 46571Another step is to add our PAM module to the /etc/pam.d/system or to the /etc/pam.d/login configuration:
Err codemadness.org 70 i 46569
auth sufficient pam_template.so no_warn allow_local
Err codemadness.org 70 i 46574Err codemadness.org 70 i 46576 Err codemadness.org 70 i 46577Unfortunately the description of all these options goes beyond this article - if you would like to know more about it you can find them in the PAM manual. The last thing we need to do is to add our template user to the system which you can do by the adduser(8) command or just simply modifying the /etc/master.passwd file and use pwd_mkdb(8) program:
Err codemadness.org 70 i 46575
$ tail -n /etc/master.passwd
Err codemadness.org 70
i 46578 template:*:1000:1000::0:0:User &:/:/usr/local/bin/templatesh
Err codemadness.org 70
i 46579 $ sudo pwd_mkdb /etc/master.passwd
Err codemadness.org 70 i 46582Err codemadness.org 70 i 46585 Err codemadness.org 70 i 46586As you can see,the template user can be locked and we still can use it in our PAM module (the * character after login).
Err codemadness.org 70 i 46584
Err codemadness.org 70 i 46583 I would like to thank Dag-Erling Smørgrav for pointing this functionality out to me when I was looking for it some time ago.
iXsystems
Err codemadness.org 70
i 46589 iXsystems @ VMWorld
Err codemadness.org 70 i 46598Err codemadness.org 70 i 46602 Err codemadness.org 70 i 46603At work, we run a compute cluster that uses an Isilon cluster as primary NAS storage. Excluding snapshots, we have about 200TB of research data, some of them in compressed formats, and others not. We needed an offsite backup file server that would constantly mirror our primary NAS and serve as a quick recovery source in case of a data loss in the the primary NAS. This offsite file server would be passive - will never face the wrath of the primary cluster workload.
Err codemadness.org 70 i 46601
Err codemadness.org 70 i 46599 In addition to the role of a passive backup server, this solution would take on some passive report generation workloads as an ideal way of offloading some work from the primary NAS. The passive work is read-only.
Err codemadness.org 70 i 46600 The backup server would keep snapshots in a best effort basis dating back to 10 years. However, this data on this backup server would be archived to tapes periodically.
A simple guidance of priorities:
Err codemadness.org 70 i 46606Data integrity > Cost of solution > Storage capacity > Performance.
Err codemadness.org 70 i 46609Why not enterprise NAS? NetApp FAS or EMC Isilon or the like?
Err codemadness.org 70 i 46612Err codemadness.org 70 i 46616Err codemadness.org 70 i 46619 Err codemadness.org 70 i 46620We decided that enterprise grade NAS like NetAPP FAS or EMC Isilon are prohibitively expensive and an overkill for our needs.
Err codemadness.org 70 i 46618
Err codemadness.org 70 i 46617 An open source & cheaper alternative to enterprise grade filesystem with the level of durability we expect turned up to be ZFS. We’re already spoilt from using snapshots by a clever Copy-on-Write Filesystem(WAFL) by NetApp. ZFS providing snapshots in almost identical way was a big influence in the choice. This is also why we did not consider just a CentOS box with the default XFS filesystem.
Err codemadness.org 70 i 46625Err codemadness.org 70 i 46627 Err codemadness.org 70 i 46628This is a backup server, a long-term solution. Stability and reliability are key requirements. ZFS on Linux may be popular at this time, but there is a lot of churn around its development, which means there is a higher probability of bugs like this to occur. We’re not looking for cutting edge features here. Perhaps, Linux would be considered in the future.
Err codemadness.org 70 i 46626
Err codemadness.org 70 i 46633Err codemadness.org 70 i 46635 Err codemadness.org 70 i 46636We already utilize FreeBSD and OpenBSD for infrastructure services and we have nothing but praises for the stability that the BSDs have provided us. We’d gladly use FreeBSD and OpenBSD wherever possible.
Err codemadness.org 70 i 46634
Err codemadness.org 70 i 46641Err codemadness.org 70 i 46643 Err codemadness.org 70 i 46644IMHO, FreeNAS provides a integrated GUI management tool over FreeBSD for a novice user to setup and configure FreeBSD, ZFS, Jails and many other features. But, this user facing abstraction adds an extra layer of complexity to maintain that is just not worth it in simpler use cases like ours. For someone that appreciates the commandline interface, and understands FreeBSD enough to administer it, plain FreeBSD + ZFS is simpler and more robust than FreeNAS.
Err codemadness.org 70 i 46642
###Reflection on one-year usage of OpenBSD
Err codemadness.org 70 i 46659 Err codemadness.org 70 i 46660Err codemadness.org 70 i 46661Err codemadness.org 70 i 46663 Err codemadness.org 70 i 46664I have used OpenBSD for more than one year, and it is time to give a summary of the experience:
Err codemadness.org 70 i 46662
Err codemadness.org 70 i 46669Err codemadness.org 70 i 46671 Err codemadness.org 70 i 46672a) A good UNIX tutorial. When I am curious about some UNIXcommands’ implementation, I will refer to OpenBSD source code, and I actually gain something every time. E.g., refresh socket programming skills from nc; know how to process file efficiently from cat.
Err codemadness.org 70 i 46670
Err codemadness.org 70 i 46673Err codemadness.org 70 i 46675 Err codemadness.org 70 i 46676b) A better test bed. Although my work focus on developing programs on Linux, I will try to compile and run applications on OpenBSD if it is possible. One reason is OpenBSD usually gives more helpful warnings. E.g., hint like this:
Err codemadness.org 70 i 46674
......
Err codemadness.org 70
i 46677 warning: sprintf() is often misused, please use snprintf()
Err codemadness.org 70
i 46678 ......
Err codemadness.org 70 i 46681Err codemadness.org 70 i 46683 Err codemadness.org 70 i 46684Or you can refer this post which I wrote before. The other is sometimes program run well on Linux may crash on OpenBSD, and OpenBSD can help you find hidden bugs.
Err codemadness.org 70 i 46682
Err codemadness.org 70 i 46685Err codemadness.org 70 i 46687 Err codemadness.org 70 i 46688c) Some handy tools. E.g. I find tcpbench is useful, so I ported it into Linux for my own usage (project is here).
Err codemadness.org 70 i 46686
Err codemadness.org 70 i 46693Err codemadness.org 70 i 46695 Err codemadness.org 70 i 46696a) Patches. Although most of them are trivial modifications, they are still my contributions.
Err codemadness.org 70 i 46694
Err codemadness.org 70 i 46697Err codemadness.org 70 i 46699 Err codemadness.org 70 i 46700b) Write blog posts to share experience about using OpenBSD.
Err codemadness.org 70 i 46698
Err codemadness.org 70 i 46701Err codemadness.org 70 i 46703 Err codemadness.org 70 i 46704c) Develop programs for OpenBSD/*BSD: lscpu and free.
Err codemadness.org 70 i 46702
Err codemadness.org 70 i 46705Err codemadness.org 70 i 46707 Err codemadness.org 70 i 46708d) Porting programs into OpenBSD: E.g., I find google/benchmark is a nifty tool, but lacks OpenBSD support, I submitted PR and it is accepted. So you can use google/benchmark on OpenBSD now.
Err codemadness.org 70 i 46706
##Beastie Bits
Err codemadness.org 70 i 46715 Err codemadness.org 70 i 46716Tarsnap
Err codemadness.org 70 i 46730 Err codemadness.org 70 i 46731##Feedback/Questions
Err codemadness.org 70 i 46732 Err codemadness.org 70 i 46733##Headlines
Err codemadness.org 70
i 46774 ###The Strange Birth and Long Life of Unix
Err codemadness.org 70 i 46777Err codemadness.org 70 i 46814 Err codemadness.org 70 i 46815They say that when one door closes on you, another opens. People generally offer this bit of wisdom just to lend some solace after a misfortune. But sometimes it’s actually true. It certainly was for Ken Thompson and the late Dennis Ritchie, two of the greats of 20th-century information technology, when they created the Unix operating system, now considered one of the most inspiring and influential pieces of software ever written.
Err codemadness.org 70 i 46813
Err codemadness.org 70 i 46778 A door had slammed shut for Thompson and Ritchie in March of 1969, when their employer, the American Telephone & Telegraph Co., withdrew from a collaborative project with the Massachusetts Institute of Technology and General Electric to create an interactive time-sharing system called Multics, which stood for “Multiplexed Information and Computing Service.” Time-sharing, a technique that lets multiple people use a single computer simultaneously, had been invented only a decade earlier. Multics was to combine time-sharing with other technological advances of the era, allowing users to phone a computer from remote terminals and then read e-mail, edit documents, run calculations, and so forth. It was to be a great leap forward from the way computers were mostly being used, with people tediously preparing and submitting batch jobs on punch cards to be run one by one.
Err codemadness.org 70 i 46779 Over five years, AT&T invested millions in the Multics project, purchasing a GE-645 mainframe computer and dedicating to the effort many of the top researchers at the company’s renowned Bell Telephone Laboratories—including Thompson and Ritchie, Joseph F. Ossanna, Stuart Feldman, M. Douglas McIlroy, and the late Robert Morris. But the new system was too ambitious, and it fell troublingly behind schedule. In the end, AT&T’s corporate leaders decided to pull the plug.
Err codemadness.org 70 i 46780 After AT&T’s departure from the Multics project, managers at Bell Labs, in Murray Hill, N.J., became reluctant to allow any further work on computer operating systems, leaving some researchers there very frustrated. Although Multics hadn’t met many of its objectives, it had, as Ritchie later recalled, provided them with a “convenient interactive computing service, a good environment in which to do programming, [and] a system around which a fellowship could form.” Suddenly, it was gone.
Err codemadness.org 70 i 46781 With heavy hearts, the researchers returned to using their old batch system. At such an inauspicious moment, with management dead set against the idea, it surely would have seemed foolhardy to continue designing computer operating systems. But that’s exactly what Thompson, Ritchie, and many of their Bell Labs colleagues did. Now, some 40 years later, we should be thankful that these programmers ignored their bosses and continued their labor of love, which gave the world Unix, one of the greatest computer operating systems of all time.
Err codemadness.org 70 i 46782 The rogue project began in earnest when Thompson, Ritchie, and a third Bell Labs colleague, Rudd Canaday, began to sketch out on paper the design for a file system. Thompson then wrote the basics of a new operating system for the lab’s GE-645 mainframe. But with the Multics project ended, so too was the need for the GE-645. Thompson realized that any further programming he did on it was likely to go nowhere, so he dropped the effort.
Err codemadness.org 70 i 46783 Thompson had passed some of his time after the demise of Multics writing a computer game called Space Travel, which simulated all the major bodies in the solar system along with a spaceship that could fly around them. Written for the GE-645, Space Travel was clunky to play—and expensive: roughly US $75 a game for the CPU time. Hunting around, Thompson came across a dusty PDP-7, a minicomputer built by Digital Equipment Corp. that some of his Bell Labs colleagues had purchased earlier for a circuit-analysis project. Thompson rewrote Space Travel to run on it.
Err codemadness.org 70 i 46784 And with that little programming exercise, a second door cracked ajar. It was to swing wide open during the summer of 1969 when Thompson’s wife, Bonnie, spent a month visiting his parents to show off their newborn son. Thompson took advantage of his temporary bachelor existence to write a good chunk of what would become the Unix operating system for the discarded PDP‑7. The name Unix stems from a joke one of Thompson’s colleagues made: Because the new operating system supported only one user (Thompson), he saw it as an emasculated version of Multics and dubbed it “Un-multiplexed Information and Computing Service,” or Unics. The name later morphed into Unix.
Err codemadness.org 70 i 46785 Initially, Thompson used the GE-645 to compose and compile the software, which he then downloaded to the PDP‑7. But he soon weaned himself from the mainframe, and by the end of 1969 he was able to write operating-system code on the PDP-7 itself. That was a step in the right direction. But Thompson and the others helping him knew that the PDP‑7, which was already obsolete, would not be able to sustain their skunkworks for long. They also knew that the lab’s management wasn’t about to allow any more research on operating systems.
Err codemadness.org 70 i 46786 So Thompson and Ritchie got creative. They formulated a proposal to their bosses to buy one of DEC’s newer minicomputers, a PDP-11, but couched the request in especially palatable terms. They said they were aiming to create tools for editing and formatting text, what you might call a word-processing system today. The fact that they would also have to write an operating system for the new machine to support the editor and text formatter was almost a footnote.
Err codemadness.org 70 i 46787 Management took the bait, and an order for a PDP-11 was placed in May 1970. The machine itself arrived soon after, although the disk drives for it took more than six months to appear. During the interim, Thompson, Ritchie, and others continued to develop Unix on the PDP-7. After the PDP-11’s disks were installed, the researchers moved their increasingly complex operating system over to the new machine. Next they brought over the roff text formatter written by Ossanna and derived from the runoff program, which had been used in an earlier time-sharing system.
Err codemadness.org 70 i 46788 Unix was put to its first real-world test within Bell Labs when three typists from AT&T’s patents department began using it to write, edit, and format patent applications. It was a hit. The patent department adopted the system wholeheartedly, which gave the researchers enough credibility to convince management to purchase another machine—a newer and more powerful PDP-11 model—allowing their stealth work on Unix to continue.
Err codemadness.org 70 i 46789 During its earliest days, Unix evolved constantly, so the idea of issuing named versions or releases seemed inappropriate. But the researchers did issue new editions of the programmer’s manual periodically, and the early Unix systems were named after each such edition. The first edition of the manual was completed in November 1971.
Err codemadness.org 70 i 46790 So what did the first edition of Unix offer that made it so great? For one thing, the system provided a hierarchical file system, which allowed something we all now take for granted: Files could be placed in directories—or equivalently, folders—that in turn could be put within other directories. Each file could contain no more than 64 kilobytes, and its name could be no more than six characters long. These restrictions seem awkwardly limiting now, but at the time they appeared perfectly adequate.
Err codemadness.org 70 i 46791 Although Unix was ostensibly created for word processing, the only editor available in 1971 was the line-oriented ed. Today, ed is still the only editor guaranteed to be present on all Unix systems. Apart from the text-processing and general system applications, the first edition of Unix included games such as blackjack, chess, and tic-tac-toe. For the system administrator, there were tools to dump and restore disk images to magnetic tape, to read and write paper tapes, and to create, check, mount, and unmount removable disk packs.
Err codemadness.org 70 i 46792 Most important, the system offered an interactive environment that by this time allowed time-sharing, so several people could use a single machine at once. Various programming languages were available to them, including BASIC, Fortran, the scripting of Unix commands, assembly language, and B. The last of these, a descendant of a BCPL (Basic Combined Programming Language), ultimately evolved into the immensely popular C language, which Ritchie created while also working on Unix.
Err codemadness.org 70 i 46793 The first edition of Unix let programmers call 34 different low-level routines built into the operating system. It’s a testament to the system’s enduring nature that nearly all of these system calls are still available—and still heavily used—on modern Unix and Linux systems four decades on. For its time, first-edition Unix provided a remarkably powerful environment for software development. Yet it contained just 4200 lines of code at its heart and occupied a measly 16 KB of main memory when it ran.
Err codemadness.org 70 i 46794 Unix’s great influence can be traced in part to its elegant design, simplicity, portability, and serendipitous timing. But perhaps even more important was the devoted user community that soon grew up around it. And that came about only by an accident of its unique history.
Err codemadness.org 70 i 46795 The story goes like this: For years Unix remained nothing more than a Bell Labs research project, but by 1973 its authors felt the system was mature enough for them to present a paper on its design and implementation at a symposium of the Association for Computing Machinery. That paper was published in 1974 in the Communications of the ACM. Its appearance brought a flurry of requests for copies of the software.
Err codemadness.org 70 i 46796 This put AT&T in a bind. In 1956, AT&T had agreed to a U.S government consent decree that prevented the company from selling products not directly related to telephones and telecommunications, in return for its legal monopoly status in running the country’s long-distance phone service. So Unix could not be sold as a product. Instead, AT&T released the Unix source code under license to anyone who asked, charging only a nominal fee. The critical wrinkle here was that the consent decree prevented AT&T from supporting Unix. Indeed, for many years Bell Labs researchers proudly displayed their Unix policy at conferences with a slide that read, “No advertising, no support, no bug fixes, payment in advance.”
Err codemadness.org 70 i 46797 With no other channels of support available to them, early Unix adopters banded together for mutual assistance, forming a loose network of user groups all over the world. They had the source code, which helped. And they didn’t view Unix as a standard software product, because nobody seemed to be looking after it. So these early Unix users themselves set about fixing bugs, writing new tools, and generally improving the system as they saw fit.
Err codemadness.org 70 i 46798 The Usenix user group acted as a clearinghouse for the exchange of Unix software in the United States. People could send in magnetic tapes with new software or fixes to the system and get back tapes with the software and fixes that Usenix had received from others. In Australia, the University of New South Wales and the University of Sydney produced a more robust version of Unix, the Australian Unix Share Accounting Method, which could cope with larger numbers of concurrent users and offered better performance.
Err codemadness.org 70 i 46799 By the mid-1970s, the environment of sharing that had sprung up around Unix resembled the open-source movement so prevalent today. Users far and wide were enthusiastically enhancing the system, and many of their improvements were being fed back to Bell Labs for incorporation in future releases. But as Unix became more popular, AT&T’s lawyers began looking harder at what various licensees were doing with their systems.
Err codemadness.org 70 i 46800 One person who caught their eye was John Lions, a computer scientist then teaching at the University of New South Wales, in Australia. In 1977, he published what was probably the most famous computing book of the time, A Commentary on the Unix Operating System, which contained an annotated listing of the central source code for Unix.
Err codemadness.org 70 i 46801 Unix’s licensing conditions allowed for the exchange of source code, and initially, Lions’s book was sold to licensees. But by 1979, AT&T’s lawyers had clamped down on the book’s distribution and use in academic classes. The antiauthoritarian Unix community reacted as you might expect, and samizdat copies of the book spread like wildfire. Many of us have nearly unreadable nth-generation photocopies of the original book.
Err codemadness.org 70 i 46802 End runs around AT&T’s lawyers indeed became the norm—even at Bell Labs. For example, between the release of the sixth edition of Unix in 1975 and the seventh edition in 1979, Thompson collected dozens of important bug fixes to the system, coming both from within and outside of Bell Labs. He wanted these to filter out to the existing Unix user base, but the company’s lawyers felt that this would constitute a form of support and balked at their release. Nevertheless, those bug fixes soon became widely distributed through unofficial channels. For instance, Lou Katz, the founding president of Usenix, received a phone call one day telling him that if he went down to a certain spot on Mountain Avenue (where Bell Labs was located) at 2 p.m., he would find something of interest. Sure enough, Katz found a magnetic tape with the bug fixes, which were rapidly in the hands of countless users.
Err codemadness.org 70 i 46803 By the end of the 1970s, Unix, which had started a decade earlier as a reaction against the loss of a comfortable programming environment, was growing like a weed throughout academia and the IT industry. Unix would flower in the early 1980s before reaching the height of its popularity in the early 1990s.
Err codemadness.org 70 i 46804 For many reasons, Unix has since given way to other commercial and noncommercial systems. But its legacy, that of an elegant, well-designed, comfortable environment for software development, lives on. In recognition of their accomplishment, Thompson and Ritchie were given the Japan Prize earlier this year, adding to a collection of honors that includes the United States’ National Medal of Technology and Innovation and the Association of Computing Machinery’s Turing Award. Many other, often very personal, tributes to Ritchie and his enormous influence on computing were widely shared after his death this past October.
Err codemadness.org 70 i 46805 Unix is indeed one of the most influential operating systems ever invented. Its direct descendants now number in the hundreds. On one side of the family tree are various versions of Unix proper, which began to be commercialized in the 1980s after the Bell System monopoly was broken up, freeing AT&T from the stipulations of the 1956 consent decree. On the other side are various Unix-like operating systems derived from the version of Unix developed at the University of California, Berkeley, including the one Apple uses today on its computers, OS X. I say “Unix-like” because the developers of the Berkeley Software Distribution (BSD) Unix on which these systems were based worked hard to remove all the original AT&T code so that their software and its descendants would be freely distributable.
Err codemadness.org 70 i 46806 The effectiveness of those efforts were, however, called into question when the AT&T subsidiary Unix System Laboratories filed suit against Berkeley Software Design and the Regents of the University of California in 1992 over intellectual property rights to this software. The university in turn filed a counterclaim against AT&T for breaches to the license it provided AT&T for the use of code developed at Berkeley. The ensuing legal quagmire slowed the development of free Unix-like clones, including 386BSD, which was designed for the Intel 386 chip, the CPU then found in many IBM PCs.
Err codemadness.org 70 i 46807 Had this operating system been available at the time, Linus Torvalds says he probably wouldn’t have created Linux, an open-source Unix-like operating system he developed from scratch for PCs in the early 1990s. Linux has carried the Unix baton forward into the 21st century, powering a wide range of digital gadgets including wireless routers, televisions, desktop PCs, and Android smartphones. It even runs some supercomputers.
Err codemadness.org 70 i 46808 Although AT&T quickly settled its legal disputes with Berkeley Software Design and the University of California, legal wrangling over intellectual property claims to various parts of Unix and Linux have continued over the years, often involving byzantine corporate relations. By 2004, no fewer than five major lawsuits had been filed. Just this past August, a software company called the TSG Group (formerly known as the SCO Group), lost a bid in court to claim ownership of Unix copyrights that Novell had acquired when it purchased the Unix System Laboratories from AT&T in 1993.
Err codemadness.org 70 i 46809 As a programmer and Unix historian, I can’t help but find all this legal sparring a bit sad. From the very start, the authors and users of Unix worked as best they could to build and share, even if that meant defying authority. That outpouring of selflessness stands in sharp contrast to the greed that has driven subsequent legal battles over the ownership of Unix.
Err codemadness.org 70 i 46810 The world of computer hardware and software moves forward startlingly fast. For IT professionals, the rapid pace of change is typically a wonderful thing. But it makes us susceptible to the loss of our own history, including important lessons from the past. To address this issue in a small way, in 1995 I started a mailing list of old-time Unix aficionados. That effort morphed into the Unix Heritage Society. Our goal is not only to save the history of Unix but also to collect and curate these old systems and, where possible, bring them back to life. With help from many talented members of this society, I was able to restore much of the old Unix software to working order, including Ritchie’s first C compiler from 1972 and the first Unix system to be written in C, dating from 1973.
Err codemadness.org 70 i 46811 One holy grail that eluded us for a long time was the first edition of Unix in any form, electronic or otherwise. Then, in 2006, Al Kossow from the Computer History Museum, in Mountain View, Calif., unearthed a printed study of Unix dated 1972, which not only covered the internal workings of Unix but also included a complete assembly listing of the kernel, the main component of this operating system. This was an amazing find—like discovering an old Ford Model T collecting dust in a corner of a barn. But we didn’t just want to admire the chrome work from afar. We wanted to see the thing run again.
Err codemadness.org 70 i 46812 In 2008, Tim Newsham, an independent programmer in Hawaii, and I assembled a team of like-minded Unix enthusiasts and set out to bring this ancient system back from the dead. The work was technically arduous and often frustrating, but in the end, we had a copy of the first edition of Unix running on an emulated PDP-11/20. We sent out messages announcing our success to all those we thought would be interested. Thompson, always succinct, simply replied, “Amazing.” Indeed, his brainchild was amazing, and I’ve been happy to do what I can to make it, and the story behind it, better known.
Digital Ocean
Err codemadness.org 70
i 46818 http://do.co/bsdnow
###FreeBSD jails with a single public IP address
Err codemadness.org 70 i 46821 Err codemadness.org 70 i 46822Err codemadness.org 70 i 46823Err codemadness.org 70 i 46825 Err codemadness.org 70 i 46826Jails in FreeBSD provide a simple yet flexible way to set up a proper server layout. In the most setups the actual server only acts as the host system for the jails while the applications themselves run within those independent containers. Traditionally every jail has it’s own IP for the user to be able to address the individual services. But if you’re still using IPv4 this might get you in trouble as the most hosters don’t offer more than one single public IP address per server.
Err codemadness.org 70 i 46824
Err codemadness.org 70 i 46831Err codemadness.org 70 i 46835 Err codemadness.org 70 i 46836In this case NAT (“Network Address Translation”) is a good way to expose services in different jails using the same IP address.
Err codemadness.org 70 i 46834
Err codemadness.org 70 i 46832 First, let’s create an internal network (“NAT network”) at 192.168.0.0/24. You could generally use any private IPv4 address space as specified in RFC 1918. Here’s an overview: https://en.wikipedia.org/wiki/Private_network. Using pf, FreeBSD’s firewall, we will map requests on different ports of the same public IP address to our individual jails as well as provide network access to the jails themselves.
Err codemadness.org 70 i 46833 First let’s check which network devices are available. In my case there’s em0 which provides connectivity to the internet and lo0, the local loopback device.
options=209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC> Err codemadness.org 70
i 46837 [...] Err codemadness.org 70
i 46838 inet 172.31.1.100 netmask 0xffffff00 broadcast 172.31.1.255 Err codemadness.org 70
i 46839 nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL> Err codemadness.org 70
i 46840 media: Ethernet autoselect (1000baseT <full-duplex>) Err codemadness.org 70
i 46841 status: active Err codemadness.org 70
i 46842 Err codemadness.org 70
i 46843 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 Err codemadness.org 70
i 46844 options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6> Err codemadness.org 70
i 46845 inet6 ::1 prefixlen 128 Err codemadness.org 70
i 46846 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2 Err codemadness.org 70
i 46847 inet 127.0.0.1 netmask 0xff000000 Err codemadness.org 70
i 46848 nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>``` Err codemadness.org 70
i 46849 Err codemadness.org 70
i 46850 > For our internal network, we create a cloned loopback device called lo1. Therefore we need to customize the /etc/rc.conf file, adding the following two lines: Err codemadness.org 70
i 46851 Err codemadness.org 70
i 46852 ```cloned_interfaces="lo1" Err codemadness.org 70
i 46853 ipv4_addrs_lo1="192.168.0.1-9/29"``` Err codemadness.org 70
i 46854 Err codemadness.org 70
i 46855 > This defines a /29 network, offering IP addresses for a maximum of 6 jails: Err codemadness.org 70
i 46856 Err codemadness.org 70
i 46857 ```ipcalc 192.168.0.1/29 Err codemadness.org 70
i 46858 Address: 192.168.0.1 11000000.10101000.00000000.00000 001 Err codemadness.org 70
i 46859 Netmask: 255.255.255.248 = 29 11111111.11111111.11111111.11111 000 Err codemadness.org 70
i 46860 Wildcard: 0.0.0.7 00000000.00000000.00000000.00000 111 Err codemadness.org 70
i 46861 => Err codemadness.org 70
i 46862 Network: 192.168.0.0/29 11000000.10101000.00000000.00000 000 Err codemadness.org 70
i 46863 HostMin: 192.168.0.1 11000000.10101000.00000000.00000 001 Err codemadness.org 70
i 46864 HostMax: 192.168.0.6 11000000.10101000.00000000.00000 110 Err codemadness.org 70
i 46865 Broadcast: 192.168.0.7 11000000.10101000.00000000.00000 111 Err codemadness.org 70
i 46866 Hosts/Net: 6 Class C, Private Internet``` Err codemadness.org 70
i 46867 Err codemadness.org 70
i 46868 > Then we need to restart the network. Please be aware of currently active SSH sessions as they might be dropped during restart. It’s a good moment to ensure you have KVM access to that server ;-) Err codemadness.org 70
i 46869 Err codemadness.org 70
i 46870 ```service netif restart``` Err codemadness.org 70
i 46871 Err codemadness.org 70
i 46872 > After reconnecting, our newly created loopback device is active: Err codemadness.org 70
i 46873 Err codemadness.org 70
i 46874 ```lo1: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 Err codemadness.org 70
i 46875 options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6> Err codemadness.org 70
i 46876 inet 192.168.0.1 netmask 0xfffffff8 Err codemadness.org 70
i 46877 inet 192.168.0.2 netmask 0xffffffff Err codemadness.org 70
i 46878 inet 192.168.0.3 netmask 0xffffffff Err codemadness.org 70
i 46879 inet 192.168.0.4 netmask 0xffffffff Err codemadness.org 70
i 46880 inet 192.168.0.5 netmask 0xffffffff Err codemadness.org 70
i 46881 inet 192.168.0.6 netmask 0xffffffff Err codemadness.org 70
i 46882 inet 192.168.0.7 netmask 0xffffffff Err codemadness.org 70
i 46883 inet 192.168.0.8 netmask 0xffffffff Err codemadness.org 70
i 46884 inet 192.168.0.9 netmask 0xffffffff Err codemadness.org 70
i 46885 nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>``` Err codemadness.org 70
i 46886 Err codemadness.org 70
i 46887 + Setting up Err codemadness.org 70
i 46888 Err codemadness.org 70
i 46889 > pf part of the FreeBSD base system, so we only have to configure and enable it. By this moment you should already have a clue of which services you want to expose. If this is not the case, just fix that file later on. In my example configuration, I have a jail running a webserver and another jail running a mailserver: Err codemadness.org 70
i 46890 Err codemadness.org 70
i 46891 + Public IP address Err codemadness.org 70
i 46892 ```IP_PUB="1.2.3.4"``` Err codemadness.org 70
i 46893 Err codemadness.org 70
i 46894 + Packet normalization Err codemadness.org 70
i 46895 ```scrub in all``` Err codemadness.org 70
i 46896 Err codemadness.org 70
i 46897 + Allow outbound connections from within the jails Err codemadness.org 70
i 46898 ```nat on em0 from lo1:network to any -> (em0)``` Err codemadness.org 70
i 46899 Err codemadness.org 70
i 46900 + webserver jail at 192.168.0.2 Err codemadness.org 70
i 46901 ```rdr on em0 proto tcp from any to $IP_PUB port 443 -> 192.168.0.2``` Err codemadness.org 70
i 46902 Err codemadness.org 70
i 46903 + just an example in case you want to redirect to another port within your jail Err codemadness.org 70
i 46904 ```rdr on em0 proto tcp from any to $IP_PUB port 80 -> 192.168.0.2 port 8080``` Err codemadness.org 70
i 46905 Err codemadness.org 70
i 46906 + mailserver jail at 192.168.0.3 Err codemadness.org 70
i 46907 ```rdr on em0 proto tcp from any to $IP_PUB port 25 -> 192.168.0.3``` Err codemadness.org 70
i 46908 ```rdr on em0 proto tcp from any to $IP_PUB port 587 -> 192.168.0.3``` Err codemadness.org 70
i 46909 ```rdr on em0 proto tcp from any to $IP_PUB port 143 -> 192.168.0.3``` Err codemadness.org 70
i 46910 ```rdr on em0 proto tcp from any to $IP_PUB port 993 -> 192.168.0.3``` Err codemadness.org 70
i 46911 Err codemadness.org 70
i 46912 > Now just enable pf like this (which is the equivalent of adding pf_enable=YES to /etc/rc.conf): Err codemadness.org 70
i 46913 Err codemadness.org 70
i 46914 ```sysrc pf_enable="YES"``` Err codemadness.org 70
i 46915 Err codemadness.org 70
i 46916 > and start it: Err codemadness.org 70
i 46917 Err codemadness.org 70
i 46918 ```service pf start``` Err codemadness.org 70
i 46919 Err codemadness.org 70
i 46920 + Install ezjail Err codemadness.org 70
i 46921 Err codemadness.org 70
i 46922 > Ezjail is a collection of scripts by erdgeist that allow you to easily manage your jails. Err codemadness.org 70
i 46923 Err codemadness.org 70
i 46924 ```pkg install ezjail``` Err codemadness.org 70
i 46925 Err codemadness.org 70
i 46926 > As an alternative, you could install ezjail from the ports tree. Now we need to set up the basejail which contains the shared base system for our jails. In fact, every jail that you create get’s will use that basejail to symlink directories related to the base system like /bin and /sbin. This can be accomplished by running Err codemadness.org 70
i 46927 Err codemadness.org 70
i 46928 ```ezjail-admin install``` Err codemadness.org 70
i 46929 Err codemadness.org 70
i 46930 > In the next step, we’ll copy the /etc/resolv.conf file from our host to the newjail, which is the template for newly created jails (the parts that are not provided by basejail), to ensure that domain resolution will work properly within our jails later on: Err codemadness.org 70
i 46931 Err codemadness.org 70
i 46932 ```cp /etc/resolv.conf /usr/jails/newjail/etc/``` Err codemadness.org 70
i 46933 Err codemadness.org 70
i 46934 > Last but not least, we enable ezjail and start it: Err codemadness.org 70
i 46935 Err codemadness.org 70
i 46936 ```sysrc ezjail_enable="YES"``` Err codemadness.org 70
i 46937 ```service ezjail start``` Err codemadness.org 70
i 46938 Err codemadness.org 70
i 46939 + Create a jail Err codemadness.org 70
i 46940 Err codemadness.org 70
i 46941 > Creating a jail is as easy as it could probably be: Err codemadness.org 70
i 46942 Err codemadness.org 70
i 46943 ```ezjail-admin create webserver 192.168.0.2``` Err codemadness.org 70
i 46944 ```ezjail-admin start webserver``` Err codemadness.org 70
i 46945 Err codemadness.org 70
i 46946 > Now you can access your jail using: Err codemadness.org 70
i 46947 Err codemadness.org 70
i 46948 ```ezjail-admin console webserver``` Err codemadness.org 70
i 46949 Err codemadness.org 70
i 46950 > Each jail contains a vanilla FreeBSD installation. Err codemadness.org 70
i 46951 Err codemadness.org 70
i 46952 + Deploy services Err codemadness.org 70
i 46953 Err codemadness.org 70
i 46954 > Now you can spin up as many jails as you want to set up your services like web, mail or file shares. You should take care not to enable sshd within your jails, because that would cause problems with the service’s IP bindings. But this is not a problem, just SSH to the host and enter your jail using ezjail-admin console. Err codemadness.org 70
i 46955 *** Err codemadness.org 70
i 46956 Err codemadness.org 70
i 46957 ###[EuroBSDcon 2018 Talks & Schedule](https://2018.eurobsdcon.org/talks-schedule/) Err codemadness.org 70
i 46958 *** Err codemadness.org 70
i 46959 Err codemadness.org 70
i 46960 Err codemadness.org 70
i 46961 Err codemadness.org 70
i 46962 Err codemadness.org 70
i 46963 ##News Roundup Err codemadness.org 70
i 46964 ###[OpenBSD on an iBook G4](https://bobstechsite.com/openbsd-on-an-ibook-g4/) Err codemadness.org 70
i 46965 > I've mentioned on social media and on the BTS podcast a few times that I wanted to try installing OpenBSD onto an old "snow white" iBook G4 I acquired last summer to see if I could make it a useful machine again in the year 2018. This particular eBay purchase came with a 14" 1024x768 TFT screen, 1.07GHz PowerPC G4 processor, 1.5GB RAM, 100GB of HDD space and an ATI Radeon 9200 graphics card with 32 MB of SDRAM. The optical drive, ethernet port, battery & USB slots are also fully-functional. The only thing that doesn't work is the CMOS battery, but that's not unexpected for a device that was originally released in 2004. Err codemadness.org 70
i 46966 Err codemadness.org 70
i 46967 + Initial experiments Err codemadness.org 70
i 46968 Err codemadness.org 70
i 46969 > This iBook originally arrived at my door running Apple Mac OSX Leopard and came with the original install disk, the iLife & iWork suites for 2008, various instruction manuals, a working power cable and a spare keyboard. As you'll see in the pictures I took for this post the characters on the buttons have started to wear away from 14 years of intensive use, but the replacement needs a very good clean before I decide to swap it in! Err codemadness.org 70
i 46970 Err codemadness.org 70
i 46971 > After spending some time exploring the last version of OSX to support the IBM PowerPC processor architecture I tried to see if the hardware was capable of modern computing with Linux. Something I knew ahead of trying this was that the WiFi adapter was unlikely to work because it's a highly proprietary component designed by Apple to work specifically with OSX and nothing else, but I figured I could probably use a wireless USB dongle later to get around this limitation. Err codemadness.org 70
i 46972 Err codemadness.org 70
i 46973 > Unfortunately I found that no recent versions of mainstream Linux distributions would boot off this machine. Debian has dropped support 32-bit PowerPC architectures and the PowerPC variants of Ubuntu 16.04 LTS (vanilla, MATE and Lubuntu) wouldn't even boot the installer! The only distribution I could reliably install on the hardware was Lubuntu 14.04 LTS. Err codemadness.org 70
i 46974 Err codemadness.org 70
i 46975 > Unfortunately I'm not the biggest fan of the LXDE desktop for regular work and a lot of ported applications were old and broken because it clearly wasn't being maintained by people that use the hardware anymore. Ubuntu 14.04 is also approaching the end of its support life in early 2019, so this limited solution also has a limited shelf-life. Err codemadness.org 70
i 46976 Err codemadness.org 70
i 46977 + Over to BSD Err codemadness.org 70
i 46978 Err codemadness.org 70
i 46979 > I discussed this problem with a few people on Mastodon and it was pointed out to me that OSX is built on the Darwin kernel, which happens to be a variant of BSD. NetBSD and OpenBSD fans in particular convinced me that their communities still saw the value of supporting these old pieces of kit and that I should give BSD a try. Err codemadness.org 70
i 46980 Err codemadness.org 70
i 46981 > So yesterday evening I finally downloaded the "macppc" version of OpenBSD 6.3 with no idea what to expect. I hoped for the best but feared the worst because my last experience with this operating system was trying out PC-BSD in 2008 and discovering with disappointment that it didn't support any of the hardware on my Toshiba laptop. Err codemadness.org 70
i 46982 Err codemadness.org 70
i 46983 > When I initially booted OpenBSD I was a little surprised to find the login screen provided no visual feedback when I typed in my password, but I can understand the security reasons for doing that. The initial desktop environment that was loaded was very basic. All I could see was a console output window, a terminal and a desktop switcher in the X11 environment the system had loaded. Err codemadness.org 70
i 46984 Err codemadness.org 70
i 46985 > After a little Googling I found this blog post had some fantastic instructions to follow for the post-installation steps: https://sohcahtoa.org.uk/openbsd.html. I did have to adjust them slightly though because my iBook only has 1.5GB RAM and not every package that page suggests is available on macppc by default. You can see a full list here: https://ftp.openbsd.org/pub/OpenBSD/6.3/packages/powerpc/. Err codemadness.org 70
i 46986 Err codemadness.org 70
i 46987 + Final thoughts Err codemadness.org 70
i 46988 Err codemadness.org 70
i 46989 > I was really impressed with the performance of OpenBSD's "macppc" port. It boots much faster than OSX Leopard on the same hardware and unlike Lubuntu 14.04 it doesn't randomly hang for no reason or crash if you launch something demanding like the GIMP. Err codemadness.org 70
i 46990 Err codemadness.org 70
i 46991 > I was pleased to see that the command line tools I'm used to using on Linux have been ported across too. OpenBSD also had no issues with me performing basic desktop tasks on XFCE like browsing the web with NetSurf, playing audio files with VLC and editing images with the GIMP. Limited gaming is also theoretically possible if you're willing to build them (or an emulator) from source with SDL support. Err codemadness.org 70
i 46992 Err codemadness.org 70
i 46993 > If I wanted to use this system for heavy duty work then I'd probably be inclined to run key applications like LibreOffice on a Raspberry Pi and then connect my iBook G4 to those using VNC or an SSH connection with X11 forwarding. BSD is UNIX after all, so using my ancient laptop as a dumb terminal should work reasonably well. Err codemadness.org 70
i 46994 Err codemadness.org 70
i 46995 > In summary I was impressed with OpenBSD and its ability to breathe new life into this old Apple Mac. I'm genuinely excited about the idea of trying BSD with other devices on my network such as an old Asus Eee PC 900 netbook and at least one of the many Raspberry Pi devices I use. Whether I go the whole hog and replace Fedora on my main production laptop though remains to be seen! Err codemadness.org 70
i 46996 Err codemadness.org 70
i 46997 *** Err codemadness.org 70
i 46998 Err codemadness.org 70
i 46999 ###[The template user with PAM and login(1)](http://oshogbo.vexillium.org/blog/48) Err codemadness.org 70
i 47000 > When you build a new service (or an appliance) you need your users to be able to configure it from the command line. To accomplish this you can create system accounts for all registered users in your service and assign them a special login shell which provides such limited functionality. This can be painful if you have a dynamic user database. Err codemadness.org 70
i 47001 > Another challenge is authentication via remote services such as RADIUS. How can we implement services when we authenticate through it and log into it as a different user? Furthermore, imagine a scenario when RADIUS decides on which account we have the right to access by sending an additional attribute. Err codemadness.org 70
i 47002 > To address these two problems we can use a "template" user. Any of the PAM modules can set the value of the PAM_USER item. The value of this item will be used to determine which account we want to login. Only the "template" user must exist on the local password database, but the credential check can be omitted by the module. Err codemadness.org 70
i 47003 > This functionality exists in the login(1) used by FreeBSD, HardenedBSD, DragonFlyBSD and illumos. The functionality doesn't exist in the login(1) used in NetBSD, and OpenBSD doesn't support PAM modules at all. In addition what is also noteworthy is that such functionality was also in the OpenSSH but they decided to remove it and call it a security vulnerability (CVE 2015-6563). I can see how some people may have seen it that way, that’s why I recommend reading this article from an OpenPAM author and a FreeBSD security officer at the time. Err codemadness.org 70
i 47004 > Knowing the background let's take a look at an example. Err codemadness.org 70
i 47005 Err codemadness.org 70
i 47006 ```PAM_EXTERN int Err codemadness.org 70
i 47007 pam_sm_authenticate(pam_handle_t *pamh, int flags __unused, Err codemadness.org 70
i 47008 int argc __unused, const char *argv[] __unused) Err codemadness.org 70
i 47009 { Err codemadness.org 70
i 47010 const char *user, *password; Err codemadness.org 70
i 47011 int err; Err codemadness.org 70
i 47012 Err codemadness.org 70
i 47013 err = pam_get_user(pamh, &user, NULL); Err codemadness.org 70
i 47014 if (err != PAM_SUCCESS) Err codemadness.org 70
i 47015 return (err); Err codemadness.org 70
i 47016 Err codemadness.org 70
i 47017 err = pam_get_authtok(pamh, PAM_AUTHTOK, &password, NULL); Err codemadness.org 70
i 47018 if (err == PAM_CONV_ERR) Err codemadness.org 70
i 47019 return (err); Err codemadness.org 70
i 47020 if (err != PAM_SUCCESS) Err codemadness.org 70
i 47021 return (PAM_AUTH_ERR); Err codemadness.org 70
i 47022 Err codemadness.org 70
i 47023 err = authenticate(user, password); Err codemadness.org 70
i 47024 if (err != PAM_SUCCESS) { Err codemadness.org 70
i 47025 return (err); Err codemadness.org 70
i 47026 } Err codemadness.org 70
i 47027 Err codemadness.org 70
i 47028 return (pam_set_item(pamh, PAM_USER, "template")); Err codemadness.org 70
i 47029 } Err codemadness.org 70
i 47030 Err codemadness.org 70
i 47031 Err codemadness.org 70
i 47032 Err codemadness.org 70 i 47033Err codemadness.org 70 i 47035 Err codemadness.org 70 i 47036In the listing above we have an example of a PAM module. The pam_get_user(3) provides a username. The pam_get_authtok(3) shows us a secret given by the user. Both functions allow us to give an optional prompt which should be shown to the user. The authenticate function is our crafted function which authenticates the user. In our first scenario we wanted to keep all users in an external database. If authentication is successful we then switch to a template user which has a shell set up for a script allowing us to configure the machine. In our second scenario the authenticate function authenticates the user in RADIUS.
Err codemadness.org 70 i 47034
Err codemadness.org 70 i 47037Err codemadness.org 70 i 47039 Err codemadness.org 70 i 47040Another step is to add our PAM module to the /etc/pam.d/system or to the /etc/pam.d/login configuration:
Err codemadness.org 70 i 47038
auth sufficient pam_template.so no_warn allow_local
Err codemadness.org 70 i 47043Err codemadness.org 70 i 47045 Err codemadness.org 70 i 47046Unfortunately the description of all these options goes beyond this article - if you would like to know more about it you can find them in the PAM manual. The last thing we need to do is to add our template user to the system which you can do by the adduser(8) command or just simply modifying the /etc/master.passwd file and use pwd_mkdb(8) program:
Err codemadness.org 70 i 47044
$ tail -n /etc/master.passwd
Err codemadness.org 70
i 47047 template:*:1000:1000::0:0:User &:/:/usr/local/bin/templatesh
Err codemadness.org 70
i 47048 $ sudo pwd_mkdb /etc/master.passwd
Err codemadness.org 70 i 47051Err codemadness.org 70 i 47054 Err codemadness.org 70 i 47055As you can see,the template user can be locked and we still can use it in our PAM module (the * character after login).
Err codemadness.org 70 i 47053
Err codemadness.org 70 i 47052 I would like to thank Dag-Erling Smørgrav for pointing this functionality out to me when I was looking for it some time ago.
iXsystems
Err codemadness.org 70
i 47058 iXsystems @ VMWorld
Err codemadness.org 70 i 47067Err codemadness.org 70 i 47071 Err codemadness.org 70 i 47072At work, we run a compute cluster that uses an Isilon cluster as primary NAS storage. Excluding snapshots, we have about 200TB of research data, some of them in compressed formats, and others not. We needed an offsite backup file server that would constantly mirror our primary NAS and serve as a quick recovery source in case of a data loss in the the primary NAS. This offsite file server would be passive - will never face the wrath of the primary cluster workload.
Err codemadness.org 70 i 47070
Err codemadness.org 70 i 47068 In addition to the role of a passive backup server, this solution would take on some passive report generation workloads as an ideal way of offloading some work from the primary NAS. The passive work is read-only.
Err codemadness.org 70 i 47069 The backup server would keep snapshots in a best effort basis dating back to 10 years. However, this data on this backup server would be archived to tapes periodically.
A simple guidance of priorities:
Err codemadness.org 70 i 47075Data integrity > Cost of solution > Storage capacity > Performance.
Err codemadness.org 70 i 47078Why not enterprise NAS? NetApp FAS or EMC Isilon or the like?
Err codemadness.org 70 i 47081Err codemadness.org 70 i 47085Err codemadness.org 70 i 47088 Err codemadness.org 70 i 47089We decided that enterprise grade NAS like NetAPP FAS or EMC Isilon are prohibitively expensive and an overkill for our needs.
Err codemadness.org 70 i 47087
Err codemadness.org 70 i 47086 An open source & cheaper alternative to enterprise grade filesystem with the level of durability we expect turned up to be ZFS. We’re already spoilt from using snapshots by a clever Copy-on-Write Filesystem(WAFL) by NetApp. ZFS providing snapshots in almost identical way was a big influence in the choice. This is also why we did not consider just a CentOS box with the default XFS filesystem.
Err codemadness.org 70 i 47094Err codemadness.org 70 i 47096 Err codemadness.org 70 i 47097This is a backup server, a long-term solution. Stability and reliability are key requirements. ZFS on Linux may be popular at this time, but there is a lot of churn around its development, which means there is a higher probability of bugs like this to occur. We’re not looking for cutting edge features here. Perhaps, Linux would be considered in the future.
Err codemadness.org 70 i 47095
Err codemadness.org 70 i 47102Err codemadness.org 70 i 47104 Err codemadness.org 70 i 47105We already utilize FreeBSD and OpenBSD for infrastructure services and we have nothing but praises for the stability that the BSDs have provided us. We’d gladly use FreeBSD and OpenBSD wherever possible.
Err codemadness.org 70 i 47103
Err codemadness.org 70 i 47110Err codemadness.org 70 i 47112 Err codemadness.org 70 i 47113IMHO, FreeNAS provides a integrated GUI management tool over FreeBSD for a novice user to setup and configure FreeBSD, ZFS, Jails and many other features. But, this user facing abstraction adds an extra layer of complexity to maintain that is just not worth it in simpler use cases like ours. For someone that appreciates the commandline interface, and understands FreeBSD enough to administer it, plain FreeBSD + ZFS is simpler and more robust than FreeNAS.
Err codemadness.org 70 i 47111
###Reflection on one-year usage of OpenBSD
Err codemadness.org 70 i 47128 Err codemadness.org 70 i 47129Err codemadness.org 70 i 47130Err codemadness.org 70 i 47132 Err codemadness.org 70 i 47133I have used OpenBSD for more than one year, and it is time to give a summary of the experience:
Err codemadness.org 70 i 47131
Err codemadness.org 70 i 47138Err codemadness.org 70 i 47140 Err codemadness.org 70 i 47141a) A good UNIX tutorial. When I am curious about some UNIXcommands’ implementation, I will refer to OpenBSD source code, and I actually gain something every time. E.g., refresh socket programming skills from nc; know how to process file efficiently from cat.
Err codemadness.org 70 i 47139
Err codemadness.org 70 i 47142Err codemadness.org 70 i 47144 Err codemadness.org 70 i 47145b) A better test bed. Although my work focus on developing programs on Linux, I will try to compile and run applications on OpenBSD if it is possible. One reason is OpenBSD usually gives more helpful warnings. E.g., hint like this:
Err codemadness.org 70 i 47143
......
Err codemadness.org 70
i 47146 warning: sprintf() is often misused, please use snprintf()
Err codemadness.org 70
i 47147 ......
Err codemadness.org 70 i 47150Err codemadness.org 70 i 47152 Err codemadness.org 70 i 47153Or you can refer this post which I wrote before. The other is sometimes program run well on Linux may crash on OpenBSD, and OpenBSD can help you find hidden bugs.
Err codemadness.org 70 i 47151
Err codemadness.org 70 i 47154Err codemadness.org 70 i 47156 Err codemadness.org 70 i 47157c) Some handy tools. E.g. I find tcpbench is useful, so I ported it into Linux for my own usage (project is here).
Err codemadness.org 70 i 47155
Err codemadness.org 70 i 47162Err codemadness.org 70 i 47164 Err codemadness.org 70 i 47165a) Patches. Although most of them are trivial modifications, they are still my contributions.
Err codemadness.org 70 i 47163
Err codemadness.org 70 i 47166Err codemadness.org 70 i 47168 Err codemadness.org 70 i 47169b) Write blog posts to share experience about using OpenBSD.
Err codemadness.org 70 i 47167
Err codemadness.org 70 i 47170Err codemadness.org 70 i 47172 Err codemadness.org 70 i 47173c) Develop programs for OpenBSD/*BSD: lscpu and free.
Err codemadness.org 70 i 47171
Err codemadness.org 70 i 47174Err codemadness.org 70 i 47176 Err codemadness.org 70 i 47177d) Porting programs into OpenBSD: E.g., I find google/benchmark is a nifty tool, but lacks OpenBSD support, I submitted PR and it is accepted. So you can use google/benchmark on OpenBSD now.
Err codemadness.org 70 i 47175
##Beastie Bits
Err codemadness.org 70 i 47184 Err codemadness.org 70 i 47185Tarsnap
Err codemadness.org 70 i 47199 Err codemadness.org 70 i 47200##Feedback/Questions
Err codemadness.org 70 i 47201 Err codemadness.org 70 i 47202##Headlines
Err codemadness.org 70
i 47500 ###FreeBSD Foundation Update, July 2018
Err codemadness.org 70 i 47507Err codemadness.org 70 i 47511 Err codemadness.org 70 i 47512We’re in the middle of summer here, in Boulder, CO. While the days are typically hot, they can also be quite unpredictable. Thanks to the Rocky Mountains, waking up to 50-degree (~10 C) foggy weather is not surprising. In spite of the unpredictable weather, many of us took some vacation this month. Whether it was extending the Fourth of July celebration, spending time with family, or relaxing and enjoying the summer weather, we appreciated our time off, while still managing to accomplish a lot!
Err codemadness.org 70 i 47510
Err codemadness.org 70 i 47508 In this newsletter, Glen Barber enlightens us about the upcoming 12.0 release. I gave a recap of OSCON, that Ed Maste and I attended, and Mark Johnston explains the work on his improved microcode loading project, that we are funding. Finally, Anne Dickison gives us a rundown on upcoming events and information on submitting a talk for MeetBSD.
Err codemadness.org 70 i 47509 Your support helps us continue this work. Please consider making a donation today. We can’t do it without you. Happy reading!!
iXsystems
Err codemadness.org 70 i 47525 Err codemadness.org 70 i 47526###BSDCan Trip Reports
Err codemadness.org 70 i 47527 Err codemadness.org 70 i 47528##News Roundup
Err codemadness.org 70
i 47539 ###FreeBSD and OSPFd
Err codemadness.org 70 i 47542Err codemadness.org 70 i 47544 Err codemadness.org 70 i 47545With FreeBSD jails deployed around the world, static routing was getting a bit out of hand. Plus, when I needed to move a jail from one data center to another, I would have to update routing tables across multiple sites. Not ideal. Enter dynamic routing…
Err codemadness.org 70 i 47543
Err codemadness.org 70 i 47546Err codemadness.org 70 i 47548 Err codemadness.org 70 i 47549OSPF (open shortest path first) is an internal dynamic routing protocol that provides the autonomy that I needed and it’s fairly easy to setup. This article does not cover configuration of VPN links, ZFS, or Freebsd jails, however it’s recommended that you use seperate ZFS datasets per jail so that migration between hosts can be done with zfs send & receive.
Err codemadness.org 70 i 47547
Err codemadness.org 70 i 47550Err codemadness.org 70 i 47552 Err codemadness.org 70 i 47553In this scenario, we have five FreeBSD servers in two different data centers. Each physical server runs anywhere between three to ten jails. When jails are deployed, they are assigned a /32 IP on lo2. From here, pf handles inbound port forwarding and outbound NAT. Links between each server are provided by OpenVPN TAP interfaces. (I used TAP to pass layer 2 traffic. I seem to remember that I needed TAP interfaces due to needing GRE tunnels on top of TUN interfaces to get OSPF to communicate. I’ve heard TAP is slower than TUN so I may revisit this.)
Err codemadness.org 70 i 47551
Err codemadness.org 70 i 47554Err codemadness.org 70 i 47556 Err codemadness.org 70 i 47557In this example, we will use 172.16.2.0/24 as the range for OpenVPN P2P links and 172.16.3.0/24 as the range of IPs available for assignment to each jail. Previously, when deploying a jail, I assigned IPs based on the following groups:
Err codemadness.org 70 i 47555
Server 1: 172.16.3.0/28
Err codemadness.org 70
i 47558 Server 2: 172.16.3.16/28
Err codemadness.org 70
i 47559 Server 3: 172.16.3.32/28
Err codemadness.org 70
i 47560 Server 4: 172.16.3.48/28
Err codemadness.org 70
i 47561 Server 5: 172.16.3.64/28
Err codemadness.org 70 i 47564Err codemadness.org 70 i 47566 Err codemadness.org 70 i 47567When statically routing, this made routing tables a bit smaller and easier to manage. However, when I needed to migrate a jail to a new host, I had to add a new /32 to all routing tables. Now, with OSPF, this is no longer an issue, nor is it required.
Err codemadness.org 70 i 47565
To get started, first we install the Quagga package.
Err codemadness.org 70 i 47570The two configuration files needed to get OSPFv2 running are /usr/local/etc/quagga/zebra.conf and /usr/local/etc/quagga/ospfd.conf.
Err codemadness.org 70 i 47573Starting with zebra.conf, we’ll define the hostname and a management password.
Err codemadness.org 70 i 47576Second, we will populate the ospfd.conf file.
Err codemadness.org 70 i 47579To break this down:
Err codemadness.org 70 i 47582service advanced-vty allows you to skip the en or enable command. Since I’m the only one who uses this service, it’s one less command to type.
Err codemadness.org 70 i 47585ip ospf authentication message-digest and ip ospf message-diget-key… ignores non-authenticated OSPF communication. This is useful when communicating over the WAN and to prevent a replay attack. Since I’m using a VPN to communicate, I could exclude these.
Err codemadness.org 70 i 47588passive-interface default turns off the active communication of OSPF messages on all interfaces except for the interfaces listed as no passive-interface [interface name]. Since my ospf communication needs to leverage the VPNs, this prevents the servers from trying to send ospf data out the WAN interface (a firewall would work too).
Err codemadness.org 70 i 47591network 172.16.2.0/23 area 0.0.0.0 lists a supernet of both 172.16.2.0/24 and 172.16.3.0/24. This ensures routes for the jails are advertised along with the P2P links used by OpenVPN. The OpenVPN links are not required but can provide another IP to access your server if one of the links goes down. (See the suggested tasks below).
Err codemadness.org 70 i 47594At this point, we can enable the services in rc.conf.local and start them.
Err codemadness.org 70 i 47597We bind the management interface to 127.0.0.1 so that it’s only accessable to local telnet sessions. If you want to access this service remotely, you can bind to a remotely accessable IP. Remember telnet is not secure. If you need remote access, use a VPN.
Err codemadness.org 70 i 47600To manage the services, you can telnet to your host’s localhost address.
Err codemadness.org 70 i 47603Use 2604 for the ospf service.
Err codemadness.org 70 i 47606Remember, this is accessible by non-root users so set a good password.
Err codemadness.org 70 i 47609###A broad overview of how ZFS is structured on disk
Err codemadness.org 70 i 47615 Err codemadness.org 70 i 47616Err codemadness.org 70 i 47617Err codemadness.org 70 i 47619 Err codemadness.org 70 i 47620When I wrote yesterday’s entry, it became clear that I didn’t understand as much about how ZFS is structured on disk (and that this matters, since I thought that ZFS copy on write updates updated a lot more than they do). So today I want to write down my new broad understanding of how this works. (All of this can be dug out of the old, draft ZFS on-disk format specification, but that spec is written in a very detailed way and things aren’t always immediately clear from it.)
Err codemadness.org 70 i 47618
Err codemadness.org 70 i 47621Err codemadness.org 70 i 47623 Err codemadness.org 70 i 47624Almost everything in ZFS is in DMU object. All objects are defined by a dnode, and object dnodes are almost always grouped together in an object set. Object sets are themselves DMU objects; they store dnodes as basically a giant array in a ‘file’, which uses data blocks and indirect blocks and so on, just like anything else. Within a single object set, dnodes have an object number, which is the index of their position in the object set’s array of dnodes. (Because an object number is just the index of the object’s dnode in its object set’s array of dnodes, object numbers are basically always going to be duplicated between object sets (and they’re always relative to an object set). For instance, pretty much every object set is going to have an object number ten, although not all object sets may have enough objects that they have an object number ten thousand. One corollary of this is that if you ask zdb to tell you about a given object number, you have to tell zdb what object set you’re talking about. Usually you do this by telling zdb which ZFS filesystem or dataset you mean.)
Err codemadness.org 70 i 47622
Err codemadness.org 70 i 47625Err codemadness.org 70 i 47627 Err codemadness.org 70 i 47628Each ZFS filesystem has its own object set for objects (and thus dnodes) used in the filesystem. As I discovered yesterday, every ZFS filesystem has a directory hierarchy and it may go many levels deep, but all of this directory hierarchy refers to directories and files using their object number.
Err codemadness.org 70 i 47626
Err codemadness.org 70 i 47629Err codemadness.org 70 i 47631 Err codemadness.org 70 i 47632ZFS organizes and keeps track of filesystems, clones, and snapshots through the DSL (Dataset and Snapshot Layer). The DSL has all sorts of things; DSL directories, DSL datasets, and so on, all of which are objects and many of which refer to object sets (for example, every ZFS filesystem must refer to its current object set somehow). All of these DSL objects are themselves stored as dnodes in another object set, the Meta Object Set, which the uberblock points to. To my surprise, object sets are not stored in the MOS (and as a result do not have ‘object numbers’). Object sets are always referred to directly, without indirection, using a block pointer to the object set’s dnode. (I think object sets are referred to directly so that snapshots can freeze their object set very simply.)
Err codemadness.org 70 i 47630
Err codemadness.org 70 i 47633Err codemadness.org 70 i 47635 Err codemadness.org 70 i 47636The DSL directories and datasets for your pool’s set of filesystems form a tree themselves (each filesystem has a DSL directory and at least one DSL dataset). However, just like in ZFS filesystems, all of the objects in this second tree refer to each other indirectly, by their MOS object number. Just as with files in ZFS filesystems, this level of indirection limits the amount of copy on write updates that ZFS had to do when something changes.
Err codemadness.org 70 i 47634
Err codemadness.org 70 i 47637Err codemadness.org 70 i 47639 Err codemadness.org 70 i 47640PS: If you want to examine MOS objects with zdb, I think you do it with something like ‘zdb -vvv -d ssddata 1’, which will get you object number 1 of the MOS, which is the MOS object directory. If you want to ask zdb about an object in the pool’s root filesystem, use ‘zdb -vvv -d ssddata/ 1’. You can tell which one you’re getting depending on what zdb prints out. If it says ‘Dataset mos [META]’ you’re looking at objects from the MOS; if it says ‘Dataset ssddata [ZPL]’, you’re looking at the pool’s root filesystem (where object number 1 is the ZFS master node).
Err codemadness.org 70 i 47638
Err codemadness.org 70 i 47641Err codemadness.org 70 i 47643 Err codemadness.org 70 i 47644PPS: I was going to write up what changed on a filesystem write, but then I realized that I didn’t know how blocks being allocated and freed are reflected in pool structures. So I’ll just say that I think that ignoring free space management, only four DMU objects get updated; the file itself, the filesystem’s object set, the filesystem’s DSL dataset object, and the MOS.
Err codemadness.org 70 i 47642
Digital Ocean
Err codemadness.org 70 i 47651 Err codemadness.org 70 i 47652###HardenedBSD Foundation Status
Err codemadness.org 70 i 47653 Err codemadness.org 70 i 47654Err codemadness.org 70 i 47655Err codemadness.org 70 i 47657 Err codemadness.org 70 i 47658On 09 July 2018, the HardenedBSD Foundation Board of Directors held the kick-off meeting to start organizing the Foundation. The following people attended the kick-off meeting:
Err codemadness.org 70 i 47656
Err codemadness.org 70 i 47697Err codemadness.org 70 i 47699 Err codemadness.org 70 i 47700We discussed the very first steps that need to be taken to organize the HardenedBSD Foundation as a 501©(3) not-for-profit organization in the US. We determined we could file a 1023EZ instead of the full-blown 1023. This will help speed the process up drastically.
Err codemadness.org 70 i 47698
Err codemadness.org 70 i 47712Err codemadness.org 70 i 47714 Err codemadness.org 70 i 47715We added Christian Severt, who is on Emerald Onion’s Board of Directors, to the HardenedBSD Foundation Board of Directors as an advisor. He was foundational in getting Emerald Onion their 501©(3) tax-exempt, not-for-profit status and has really good insight. Additionally, he’s going to help HardenedBSD coordinate hosting services, figuring out the best deals for us.
Err codemadness.org 70 i 47713
Err codemadness.org 70 i 47716Err codemadness.org 70 i 47718 Err codemadness.org 70 i 47719We promoted George Saylor to Vice President and changed Shawn Webb’s title to President and Director. This is to help resolve potential concerns both the state and federal agencies might have with an organization having only a single President role.
Err codemadness.org 70 i 47717
Err codemadness.org 70 i 47720Err codemadness.org 70 i 47722 Err codemadness.org 70 i 47723We hope to be granted our 501©(3) status before the end of the year, though that may be subject to change. We are excited for the formation of the HardenedBSD Foundation, which will open up new opportunities not otherwise available to HardenedBSD.
Err codemadness.org 70 i 47721
###More mitigations against speculative execution vulnerabilities
Err codemadness.org 70 i 47726 Err codemadness.org 70 i 47727Err codemadness.org 70 i 47728Err codemadness.org 70 i 47730 Err codemadness.org 70 i 47731Philip Guenther (guenther@) and Bryan Steele (brynet@) have added more mitigations against speculative execution CPU vulnerabilities on the amd64 platform.
Err codemadness.org 70 i 47729
Err codemadness.org 70
i 47732 CVSROOT: /cvs Err codemadness.org 70
i 47733 Module name: src Err codemadness.org 70
i 47734 Changes by: guenther@cvs.openbsd.org 2018/07/23 11:54:04 Err codemadness.org 70
i 47735 Err codemadness.org 70
i 47736 Modified files: Err codemadness.org 70
i 47737 sys/arch/amd64/amd64: locore.S Err codemadness.org 70
i 47738 sys/arch/amd64/include: asm.h cpufunc.h frameasm.h Err codemadness.org 70
i 47739 Err codemadness.org 70
i 47740 Log message: Err codemadness.org 70
i 47741 Do "Return stack refilling", based on the "Return stack underflow" discussion Err codemadness.org 70
i 47742 and its associated appendix at https://support.google.com/faqs/answer/7625886 Err codemadness.org 70
i 47743 This should address at least some cases of "SpectreRSB" and earlier Err codemadness.org 70
i 47744 Spectre variants; more commits to follow. Err codemadness.org 70
i 47745 Err codemadness.org 70
i 47746 The refilling is done in the enter-kernel-from-userspace and Err codemadness.org 70
i 47747 return-to-userspace-from-kernel paths, making sure to do it before Err codemadness.org 70
i 47748 unblocking interrupts so that a successive interrupt can't get the Err codemadness.org 70
i 47749 CPU to C code without doing this refill. Per the link above, it Err codemadness.org 70
i 47750 also does it immediately after mwait, apparently in case the low-power Err codemadness.org 70
i 47751 CPU states of idle-via-mwait flush the RSB. Err codemadness.org 70
i 47752 Err codemadness.org 70
i 47753 ok mlarkin@ deraadt@``` Err codemadness.org 70
i 47754 Err codemadness.org 70
i 47755 + and: Err codemadness.org 70
i 47756 Err codemadness.org 70
i 47757 ```CVSROOT: /cvs Err codemadness.org 70
i 47758 Module name: src Err codemadness.org 70
i 47759 Changes by: guenther@cvs.openbsd.org 2018/07/23 20:42:25 Err codemadness.org 70
i 47760 Err codemadness.org 70
i 47761 Modified files: Err codemadness.org 70
i 47762 sys/arch/amd64/amd64: locore.S vector.S vmm_support.S Err codemadness.org 70
i 47763 sys/arch/amd64/include: asm.h cpufunc.h Err codemadness.org 70
i 47764 Err codemadness.org 70
i 47765 Log message: Err codemadness.org 70
i 47766 Also do RSB refilling when context switching, after vmexits, and Err codemadness.org 70
i 47767 when vmlaunch or vmresume fails. Err codemadness.org 70
i 47768 Err codemadness.org 70
i 47769 Follow the lead of clang and the intel recommendation and do an lfence Err codemadness.org 70
i 47770 after the pause in the speculation-stop path for retpoline, RSB refill, Err codemadness.org 70
i 47771 and meltover ASM bits. Err codemadness.org 70
i 47772 Err codemadness.org 70
i 47773 ok kettenis@ deraadt@``` Err codemadness.org 70
i 47774 Err codemadness.org 70
i 47775 + "Mitigation G-2" for AMD processors: Err codemadness.org 70
i 47776 Err codemadness.org 70
i 47777 ```CVSROOT: /cvs Err codemadness.org 70
i 47778 Module name: src Err codemadness.org 70
i 47779 Changes by: brynet@cvs.openbsd.org 2018/07/23 17:25:03 Err codemadness.org 70
i 47780 Err codemadness.org 70
i 47781 Modified files: Err codemadness.org 70
i 47782 sys/arch/amd64/amd64: identcpu.c Err codemadness.org 70
i 47783 sys/arch/amd64/include: specialreg.h Err codemadness.org 70
i 47784 Err codemadness.org 70
i 47785 Log message: Err codemadness.org 70
i 47786 Add "Mitigation G-2" per AMD's Whitepaper "Software Techniques for Err codemadness.org 70
i 47787 Managing Speculation on AMD Processors" Err codemadness.org 70
i 47788 Err codemadness.org 70
i 47789 By setting MSR C001_1029[1]=1, LFENCE becomes a dispatch serializing Err codemadness.org 70
i 47790 instruction. Err codemadness.org 70
i 47791 Err codemadness.org 70
i 47792 Tested on AMD FX-4100 "Bulldozer", and Linux guest in SVM vmd(8) Err codemadness.org 70
i 47793 Err codemadness.org 70
i 47794 ok deraadt@ mlarkin@``` Err codemadness.org 70
i 47795 *** Err codemadness.org 70
i 47796 Err codemadness.org 70
i 47797 Err codemadness.org 70
i 47798 ##Beastie Bits Err codemadness.org 70
i 47799 + [HardenedBSD will stop supporting 10-STABLE on 10 August 2018](https://groups.google.com/a/hardenedbsd.org/forum/#!topic/users/xvU0g-g1l5U) Err codemadness.org 70
i 47800 + [GSoC 2018 Reports: Integrate libFuzzer with the Basesystem, Part 2](https://blog.netbsd.org/tnf/entry/gsoc_2018_reports_integrate_libfuzzer1) Err codemadness.org 70
i 47801 + [ZFS Boot Environments at PBUG](https://vermaden.wordpress.com/2018/07/30/zfs-boot-environments-at-pbug/) Err codemadness.org 70
i 47802 + [Second Editions versus the Publishing Business](https://blather.michaelwlucas.com/archives/3229) Err codemadness.org 70
i 47803 + [Theo de Raadt on "unveil(2) usage in base"](https://undeadly.org/cgi?action=article;sid=20180728063716) Err codemadness.org 70
i 47804 + [rtadvd(8) has been replaced by rad(8)](https://undeadly.org/cgi?action=article;sid=20180724072205) Err codemadness.org 70
i 47805 + [BSD Users Stockholm Meetup #3](https://www.meetup.com/BSD-Users-Stockholm/events/253447019/) Err codemadness.org 70
i 47806 + [Changes to NetBSD release support policy](https://blog.netbsd.org/tnf/entry/changes_to_netbsd_release_support) Err codemadness.org 70
i 47807 + [The future of HAMMER1](http://lists.dragonflybsd.org/pipermail/users/2018-July/357832.html) Err codemadness.org 70
i 47808 *** Err codemadness.org 70
i 47809 Err codemadness.org 70
i 47810 **Tarsnap** Err codemadness.org 70
i 47811 Err codemadness.org 70
i 47812 ##Feedback/Questions Err codemadness.org 70
i 47813 + Rodriguez - [A Question](http://dpaste.com/0Y1B75Q#wrap) Err codemadness.org 70
i 47814 + Shane - [About ZFS Mostly](http://dpaste.com/32YGNBY#wrap) Err codemadness.org 70
i 47815 + Leif - [ZFS less than 8gb](http://dpaste.com/2GY6HHC#wrap) Err codemadness.org 70
i 47816 + Wayne - [ZFS vs EMC](http://dpaste.com/17PSCXC#wrap) Err codemadness.org 70
i 47817 *** Err codemadness.org 70
i 47818 Err codemadness.org 70
i 47819 - Send questions, comments, show ideas/topics, or stories you want mentioned on the show to [feedback@bsdnow.tv](mailto:feedback@bsdnow.tv) Err codemadness.org 70
i 47820 ]]> Err codemadness.org 70
i 47821 ##Headlines
Err codemadness.org 70
i 47826 ###FreeBSD Foundation Update, July 2018
Err codemadness.org 70 i 47833Err codemadness.org 70 i 47837 Err codemadness.org 70 i 47838We’re in the middle of summer here, in Boulder, CO. While the days are typically hot, they can also be quite unpredictable. Thanks to the Rocky Mountains, waking up to 50-degree (~10 C) foggy weather is not surprising. In spite of the unpredictable weather, many of us took some vacation this month. Whether it was extending the Fourth of July celebration, spending time with family, or relaxing and enjoying the summer weather, we appreciated our time off, while still managing to accomplish a lot!
Err codemadness.org 70 i 47836
Err codemadness.org 70 i 47834 In this newsletter, Glen Barber enlightens us about the upcoming 12.0 release. I gave a recap of OSCON, that Ed Maste and I attended, and Mark Johnston explains the work on his improved microcode loading project, that we are funding. Finally, Anne Dickison gives us a rundown on upcoming events and information on submitting a talk for MeetBSD.
Err codemadness.org 70 i 47835 Your support helps us continue this work. Please consider making a donation today. We can’t do it without you. Happy reading!!
iXsystems
Err codemadness.org 70 i 47851 Err codemadness.org 70 i 47852###BSDCan Trip Reports
Err codemadness.org 70 i 47853 Err codemadness.org 70 i 47854##News Roundup
Err codemadness.org 70
i 47865 ###FreeBSD and OSPFd
Err codemadness.org 70 i 47868Err codemadness.org 70 i 47870 Err codemadness.org 70 i 47871With FreeBSD jails deployed around the world, static routing was getting a bit out of hand. Plus, when I needed to move a jail from one data center to another, I would have to update routing tables across multiple sites. Not ideal. Enter dynamic routing…
Err codemadness.org 70 i 47869
Err codemadness.org 70 i 47872Err codemadness.org 70 i 47874 Err codemadness.org 70 i 47875OSPF (open shortest path first) is an internal dynamic routing protocol that provides the autonomy that I needed and it’s fairly easy to setup. This article does not cover configuration of VPN links, ZFS, or Freebsd jails, however it’s recommended that you use seperate ZFS datasets per jail so that migration between hosts can be done with zfs send & receive.
Err codemadness.org 70 i 47873
Err codemadness.org 70 i 47876Err codemadness.org 70 i 47878 Err codemadness.org 70 i 47879In this scenario, we have five FreeBSD servers in two different data centers. Each physical server runs anywhere between three to ten jails. When jails are deployed, they are assigned a /32 IP on lo2. From here, pf handles inbound port forwarding and outbound NAT. Links between each server are provided by OpenVPN TAP interfaces. (I used TAP to pass layer 2 traffic. I seem to remember that I needed TAP interfaces due to needing GRE tunnels on top of TUN interfaces to get OSPF to communicate. I’ve heard TAP is slower than TUN so I may revisit this.)
Err codemadness.org 70 i 47877
Err codemadness.org 70 i 47880Err codemadness.org 70 i 47882 Err codemadness.org 70 i 47883In this example, we will use 172.16.2.0/24 as the range for OpenVPN P2P links and 172.16.3.0/24 as the range of IPs available for assignment to each jail. Previously, when deploying a jail, I assigned IPs based on the following groups:
Err codemadness.org 70 i 47881
Server 1: 172.16.3.0/28
Err codemadness.org 70
i 47884 Server 2: 172.16.3.16/28
Err codemadness.org 70
i 47885 Server 3: 172.16.3.32/28
Err codemadness.org 70
i 47886 Server 4: 172.16.3.48/28
Err codemadness.org 70
i 47887 Server 5: 172.16.3.64/28
Err codemadness.org 70 i 47890Err codemadness.org 70 i 47892 Err codemadness.org 70 i 47893When statically routing, this made routing tables a bit smaller and easier to manage. However, when I needed to migrate a jail to a new host, I had to add a new /32 to all routing tables. Now, with OSPF, this is no longer an issue, nor is it required.
Err codemadness.org 70 i 47891
To get started, first we install the Quagga package.
Err codemadness.org 70 i 47896The two configuration files needed to get OSPFv2 running are /usr/local/etc/quagga/zebra.conf and /usr/local/etc/quagga/ospfd.conf.
Err codemadness.org 70 i 47899Starting with zebra.conf, we’ll define the hostname and a management password.
Err codemadness.org 70 i 47902Second, we will populate the ospfd.conf file.
Err codemadness.org 70 i 47905To break this down:
Err codemadness.org 70 i 47908service advanced-vty allows you to skip the en or enable command. Since I’m the only one who uses this service, it’s one less command to type.
Err codemadness.org 70 i 47911ip ospf authentication message-digest and ip ospf message-diget-key… ignores non-authenticated OSPF communication. This is useful when communicating over the WAN and to prevent a replay attack. Since I’m using a VPN to communicate, I could exclude these.
Err codemadness.org 70 i 47914passive-interface default turns off the active communication of OSPF messages on all interfaces except for the interfaces listed as no passive-interface [interface name]. Since my ospf communication needs to leverage the VPNs, this prevents the servers from trying to send ospf data out the WAN interface (a firewall would work too).
Err codemadness.org 70 i 47917network 172.16.2.0/23 area 0.0.0.0 lists a supernet of both 172.16.2.0/24 and 172.16.3.0/24. This ensures routes for the jails are advertised along with the P2P links used by OpenVPN. The OpenVPN links are not required but can provide another IP to access your server if one of the links goes down. (See the suggested tasks below).
Err codemadness.org 70 i 47920At this point, we can enable the services in rc.conf.local and start them.
Err codemadness.org 70 i 47923We bind the management interface to 127.0.0.1 so that it’s only accessable to local telnet sessions. If you want to access this service remotely, you can bind to a remotely accessable IP. Remember telnet is not secure. If you need remote access, use a VPN.
Err codemadness.org 70 i 47926To manage the services, you can telnet to your host’s localhost address.
Err codemadness.org 70 i 47929Use 2604 for the ospf service.
Err codemadness.org 70 i 47932Remember, this is accessible by non-root users so set a good password.
Err codemadness.org 70 i 47935###A broad overview of how ZFS is structured on disk
Err codemadness.org 70 i 47941 Err codemadness.org 70 i 47942Err codemadness.org 70 i 47943Err codemadness.org 70 i 47945 Err codemadness.org 70 i 47946When I wrote yesterday’s entry, it became clear that I didn’t understand as much about how ZFS is structured on disk (and that this matters, since I thought that ZFS copy on write updates updated a lot more than they do). So today I want to write down my new broad understanding of how this works. (All of this can be dug out of the old, draft ZFS on-disk format specification, but that spec is written in a very detailed way and things aren’t always immediately clear from it.)
Err codemadness.org 70 i 47944
Err codemadness.org 70 i 47947Err codemadness.org 70 i 47949 Err codemadness.org 70 i 47950Almost everything in ZFS is in DMU object. All objects are defined by a dnode, and object dnodes are almost always grouped together in an object set. Object sets are themselves DMU objects; they store dnodes as basically a giant array in a ‘file’, which uses data blocks and indirect blocks and so on, just like anything else. Within a single object set, dnodes have an object number, which is the index of their position in the object set’s array of dnodes. (Because an object number is just the index of the object’s dnode in its object set’s array of dnodes, object numbers are basically always going to be duplicated between object sets (and they’re always relative to an object set). For instance, pretty much every object set is going to have an object number ten, although not all object sets may have enough objects that they have an object number ten thousand. One corollary of this is that if you ask zdb to tell you about a given object number, you have to tell zdb what object set you’re talking about. Usually you do this by telling zdb which ZFS filesystem or dataset you mean.)
Err codemadness.org 70 i 47948
Err codemadness.org 70 i 47951Err codemadness.org 70 i 47953 Err codemadness.org 70 i 47954Each ZFS filesystem has its own object set for objects (and thus dnodes) used in the filesystem. As I discovered yesterday, every ZFS filesystem has a directory hierarchy and it may go many levels deep, but all of this directory hierarchy refers to directories and files using their object number.
Err codemadness.org 70 i 47952
Err codemadness.org 70 i 47955Err codemadness.org 70 i 47957 Err codemadness.org 70 i 47958ZFS organizes and keeps track of filesystems, clones, and snapshots through the DSL (Dataset and Snapshot Layer). The DSL has all sorts of things; DSL directories, DSL datasets, and so on, all of which are objects and many of which refer to object sets (for example, every ZFS filesystem must refer to its current object set somehow). All of these DSL objects are themselves stored as dnodes in another object set, the Meta Object Set, which the uberblock points to. To my surprise, object sets are not stored in the MOS (and as a result do not have ‘object numbers’). Object sets are always referred to directly, without indirection, using a block pointer to the object set’s dnode. (I think object sets are referred to directly so that snapshots can freeze their object set very simply.)
Err codemadness.org 70 i 47956
Err codemadness.org 70 i 47959Err codemadness.org 70 i 47961 Err codemadness.org 70 i 47962The DSL directories and datasets for your pool’s set of filesystems form a tree themselves (each filesystem has a DSL directory and at least one DSL dataset). However, just like in ZFS filesystems, all of the objects in this second tree refer to each other indirectly, by their MOS object number. Just as with files in ZFS filesystems, this level of indirection limits the amount of copy on write updates that ZFS had to do when something changes.
Err codemadness.org 70 i 47960
Err codemadness.org 70 i 47963Err codemadness.org 70 i 47965 Err codemadness.org 70 i 47966PS: If you want to examine MOS objects with zdb, I think you do it with something like ‘zdb -vvv -d ssddata 1’, which will get you object number 1 of the MOS, which is the MOS object directory. If you want to ask zdb about an object in the pool’s root filesystem, use ‘zdb -vvv -d ssddata/ 1’. You can tell which one you’re getting depending on what zdb prints out. If it says ‘Dataset mos [META]’ you’re looking at objects from the MOS; if it says ‘Dataset ssddata [ZPL]’, you’re looking at the pool’s root filesystem (where object number 1 is the ZFS master node).
Err codemadness.org 70 i 47964
Err codemadness.org 70 i 47967Err codemadness.org 70 i 47969 Err codemadness.org 70 i 47970PPS: I was going to write up what changed on a filesystem write, but then I realized that I didn’t know how blocks being allocated and freed are reflected in pool structures. So I’ll just say that I think that ignoring free space management, only four DMU objects get updated; the file itself, the filesystem’s object set, the filesystem’s DSL dataset object, and the MOS.
Err codemadness.org 70 i 47968
Digital Ocean
Err codemadness.org 70 i 47977 Err codemadness.org 70 i 47978###HardenedBSD Foundation Status
Err codemadness.org 70 i 47979 Err codemadness.org 70 i 47980Err codemadness.org 70 i 47981Err codemadness.org 70 i 47983 Err codemadness.org 70 i 47984On 09 July 2018, the HardenedBSD Foundation Board of Directors held the kick-off meeting to start organizing the Foundation. The following people attended the kick-off meeting:
Err codemadness.org 70 i 47982
Err codemadness.org 70 i 48023Err codemadness.org 70 i 48025 Err codemadness.org 70 i 48026We discussed the very first steps that need to be taken to organize the HardenedBSD Foundation as a 501©(3) not-for-profit organization in the US. We determined we could file a 1023EZ instead of the full-blown 1023. This will help speed the process up drastically.
Err codemadness.org 70 i 48024
Err codemadness.org 70 i 48038Err codemadness.org 70 i 48040 Err codemadness.org 70 i 48041We added Christian Severt, who is on Emerald Onion’s Board of Directors, to the HardenedBSD Foundation Board of Directors as an advisor. He was foundational in getting Emerald Onion their 501©(3) tax-exempt, not-for-profit status and has really good insight. Additionally, he’s going to help HardenedBSD coordinate hosting services, figuring out the best deals for us.
Err codemadness.org 70 i 48039
Err codemadness.org 70 i 48042Err codemadness.org 70 i 48044 Err codemadness.org 70 i 48045We promoted George Saylor to Vice President and changed Shawn Webb’s title to President and Director. This is to help resolve potential concerns both the state and federal agencies might have with an organization having only a single President role.
Err codemadness.org 70 i 48043
Err codemadness.org 70 i 48046Err codemadness.org 70 i 48048 Err codemadness.org 70 i 48049We hope to be granted our 501©(3) status before the end of the year, though that may be subject to change. We are excited for the formation of the HardenedBSD Foundation, which will open up new opportunities not otherwise available to HardenedBSD.
Err codemadness.org 70 i 48047
###More mitigations against speculative execution vulnerabilities
Err codemadness.org 70 i 48052 Err codemadness.org 70 i 48053Err codemadness.org 70 i 48054Err codemadness.org 70 i 48056 Err codemadness.org 70 i 48057Philip Guenther (guenther@) and Bryan Steele (brynet@) have added more mitigations against speculative execution CPU vulnerabilities on the amd64 platform.
Err codemadness.org 70 i 48055
Err codemadness.org 70
i 48058 CVSROOT: /cvs Err codemadness.org 70
i 48059 Module name: src Err codemadness.org 70
i 48060 Changes by: guenther@cvs.openbsd.org 2018/07/23 11:54:04 Err codemadness.org 70
i 48061 Err codemadness.org 70
i 48062 Modified files: Err codemadness.org 70
i 48063 sys/arch/amd64/amd64: locore.S Err codemadness.org 70
i 48064 sys/arch/amd64/include: asm.h cpufunc.h frameasm.h Err codemadness.org 70
i 48065 Err codemadness.org 70
i 48066 Log message: Err codemadness.org 70
i 48067 Do "Return stack refilling", based on the "Return stack underflow" discussion Err codemadness.org 70
i 48068 and its associated appendix at https://support.google.com/faqs/answer/7625886 Err codemadness.org 70
i 48069 This should address at least some cases of "SpectreRSB" and earlier Err codemadness.org 70
i 48070 Spectre variants; more commits to follow. Err codemadness.org 70
i 48071 Err codemadness.org 70
i 48072 The refilling is done in the enter-kernel-from-userspace and Err codemadness.org 70
i 48073 return-to-userspace-from-kernel paths, making sure to do it before Err codemadness.org 70
i 48074 unblocking interrupts so that a successive interrupt can't get the Err codemadness.org 70
i 48075 CPU to C code without doing this refill. Per the link above, it Err codemadness.org 70
i 48076 also does it immediately after mwait, apparently in case the low-power Err codemadness.org 70
i 48077 CPU states of idle-via-mwait flush the RSB. Err codemadness.org 70
i 48078 Err codemadness.org 70
i 48079 ok mlarkin@ deraadt@``` Err codemadness.org 70
i 48080 Err codemadness.org 70
i 48081 + and: Err codemadness.org 70
i 48082 Err codemadness.org 70
i 48083 ```CVSROOT: /cvs Err codemadness.org 70
i 48084 Module name: src Err codemadness.org 70
i 48085 Changes by: guenther@cvs.openbsd.org 2018/07/23 20:42:25 Err codemadness.org 70
i 48086 Err codemadness.org 70
i 48087 Modified files: Err codemadness.org 70
i 48088 sys/arch/amd64/amd64: locore.S vector.S vmm_support.S Err codemadness.org 70
i 48089 sys/arch/amd64/include: asm.h cpufunc.h Err codemadness.org 70
i 48090 Err codemadness.org 70
i 48091 Log message: Err codemadness.org 70
i 48092 Also do RSB refilling when context switching, after vmexits, and Err codemadness.org 70
i 48093 when vmlaunch or vmresume fails. Err codemadness.org 70
i 48094 Err codemadness.org 70
i 48095 Follow the lead of clang and the intel recommendation and do an lfence Err codemadness.org 70
i 48096 after the pause in the speculation-stop path for retpoline, RSB refill, Err codemadness.org 70
i 48097 and meltover ASM bits. Err codemadness.org 70
i 48098 Err codemadness.org 70
i 48099 ok kettenis@ deraadt@``` Err codemadness.org 70
i 48100 Err codemadness.org 70
i 48101 + "Mitigation G-2" for AMD processors: Err codemadness.org 70
i 48102 Err codemadness.org 70
i 48103 ```CVSROOT: /cvs Err codemadness.org 70
i 48104 Module name: src Err codemadness.org 70
i 48105 Changes by: brynet@cvs.openbsd.org 2018/07/23 17:25:03 Err codemadness.org 70
i 48106 Err codemadness.org 70
i 48107 Modified files: Err codemadness.org 70
i 48108 sys/arch/amd64/amd64: identcpu.c Err codemadness.org 70
i 48109 sys/arch/amd64/include: specialreg.h Err codemadness.org 70
i 48110 Err codemadness.org 70
i 48111 Log message: Err codemadness.org 70
i 48112 Add "Mitigation G-2" per AMD's Whitepaper "Software Techniques for Err codemadness.org 70
i 48113 Managing Speculation on AMD Processors" Err codemadness.org 70
i 48114 Err codemadness.org 70
i 48115 By setting MSR C001_1029[1]=1, LFENCE becomes a dispatch serializing Err codemadness.org 70
i 48116 instruction. Err codemadness.org 70
i 48117 Err codemadness.org 70
i 48118 Tested on AMD FX-4100 "Bulldozer", and Linux guest in SVM vmd(8) Err codemadness.org 70
i 48119 Err codemadness.org 70
i 48120 ok deraadt@ mlarkin@``` Err codemadness.org 70
i 48121 *** Err codemadness.org 70
i 48122 Err codemadness.org 70
i 48123 Err codemadness.org 70
i 48124 ##Beastie Bits Err codemadness.org 70
i 48125 + [HardenedBSD will stop supporting 10-STABLE on 10 August 2018](https://groups.google.com/a/hardenedbsd.org/forum/#!topic/users/xvU0g-g1l5U) Err codemadness.org 70
i 48126 + [GSoC 2018 Reports: Integrate libFuzzer with the Basesystem, Part 2](https://blog.netbsd.org/tnf/entry/gsoc_2018_reports_integrate_libfuzzer1) Err codemadness.org 70
i 48127 + [ZFS Boot Environments at PBUG](https://vermaden.wordpress.com/2018/07/30/zfs-boot-environments-at-pbug/) Err codemadness.org 70
i 48128 + [Second Editions versus the Publishing Business](https://blather.michaelwlucas.com/archives/3229) Err codemadness.org 70
i 48129 + [Theo de Raadt on "unveil(2) usage in base"](https://undeadly.org/cgi?action=article;sid=20180728063716) Err codemadness.org 70
i 48130 + [rtadvd(8) has been replaced by rad(8)](https://undeadly.org/cgi?action=article;sid=20180724072205) Err codemadness.org 70
i 48131 + [BSD Users Stockholm Meetup #3](https://www.meetup.com/BSD-Users-Stockholm/events/253447019/) Err codemadness.org 70
i 48132 + [Changes to NetBSD release support policy](https://blog.netbsd.org/tnf/entry/changes_to_netbsd_release_support) Err codemadness.org 70
i 48133 + [The future of HAMMER1](http://lists.dragonflybsd.org/pipermail/users/2018-July/357832.html) Err codemadness.org 70
i 48134 *** Err codemadness.org 70
i 48135 Err codemadness.org 70
i 48136 **Tarsnap** Err codemadness.org 70
i 48137 Err codemadness.org 70
i 48138 ##Feedback/Questions Err codemadness.org 70
i 48139 + Rodriguez - [A Question](http://dpaste.com/0Y1B75Q#wrap) Err codemadness.org 70
i 48140 + Shane - [About ZFS Mostly](http://dpaste.com/32YGNBY#wrap) Err codemadness.org 70
i 48141 + Leif - [ZFS less than 8gb](http://dpaste.com/2GY6HHC#wrap) Err codemadness.org 70
i 48142 + Wayne - [ZFS vs EMC](http://dpaste.com/17PSCXC#wrap) Err codemadness.org 70
i 48143 *** Err codemadness.org 70
i 48144 Err codemadness.org 70
i 48145 - Send questions, comments, show ideas/topics, or stories you want mentioned on the show to [feedback@bsdnow.tv](mailto:feedback@bsdnow.tv) Err codemadness.org 70
i 48146 ]]> Err codemadness.org 70
i 48147 ##Headlines
Err codemadness.org 70
i 48553 ###NetBSD v8.0 Released
Err codemadness.org 70 i 48556Err codemadness.org 70 i 48558 Err codemadness.org 70 i 48559The NetBSD Project is pleased to announce NetBSD 8.0, the sixteenth major release of the NetBSD operating system.
Err codemadness.org 70 i 48557
Err codemadness.org 70 i 48560Err codemadness.org 70 i 48562 Err codemadness.org 70 i 48563This release brings stability improvements, hundreds of bug fixes, and many new features.
Err codemadness.org 70 i 48561
Some highlights of the NetBSD 8.0 release are:
Err codemadness.org 70 i 48566USB stack rework, USB3 support added.
Err codemadness.org 70 i 48569In-kernel audio mixer (audio_system(9)).
Err codemadness.org 70 i 48572Reproducible builds (MKREPRO, see mk.conf(5)).
Err codemadness.org 70 i 48575Full userland debug information (MKDEBUG, see mk.conf(5)) available. While most install media do not come with them (for size reasons), the debug and xdebug sets can be downloaded and extracted as needed later. They provide full symbol information for all base system and X binaries and libraries and allow better error reporting and (userland) crash analysis.
Err codemadness.org 70 i 48578PaX MPROTECT (W^X) memory protection enforced by default on some architectures with fine-grained memory protection and suitable ELF formats: i386, amd64, evbarm, landisk.
Err codemadness.org 70 i 48581PaX ASLR (Address Space Layout Randomization) enabled by default on: i386, amd64, evbarm, landisk, sparc64.
Err codemadness.org 70 i 48584Position independent executables by default for userland on: i386, amd64, arm, m68k, mips, sh3, sparc64.
Err codemadness.org 70 i 48587A new socket layer can(4) has been added for communication of devices on a CAN bus.
Err codemadness.org 70 i 48590A special pseudo interface ipsecif(4) for route-based VPNs has been added.
Err codemadness.org 70 i 48593Parts of the network stack have been made MP-safe. The kernel option NET_MPSAFE is required to enable this.
Err codemadness.org 70 i 48596Hardening of the network stack in general.
Err codemadness.org 70 i 48599Various WAPBL (the NetBSD file system “log” option) stability and performance improvements.
Err codemadness.org 70 i 48602Specific to i386 and amd64 CPUs:
Err codemadness.org 70 i 48605Meltdown mitigation: SVS (Separate Virtual Space), enabled by default.
Err codemadness.org 70 i 48608SpectreV2 mitigation: retpoline (support in gcc), used by default for kernels. Other hardware mitigations are also available.
Err codemadness.org 70 i 48611SpectreV4 mitigations available for Intel and AMD.
Err codemadness.org 70 i 48614PopSS workaround: user access to debug registers is turned off by default.
Err codemadness.org 70 i 48617Lazy FPU saving disabled on vulnerable Intel CPUs (“eagerfpu”).
Err codemadness.org 70 i 48620SMAP support.
Err codemadness.org 70 i 48623Improvement and hardening of the memory layout: W^X, fewer writable pages, better consistency, better performance.
Err codemadness.org 70 i 48626(U)EFI bootloader.
Err codemadness.org 70 i 48629Many evbarm kernels now use FDT (flat device tree) information (loadable at boot time from an external file) for device configuration, the number of kernels has decreased but the number of boards has vastly increased.
Err codemadness.org 70 i 48632Lots of updates to 3rd party software included:
Err codemadness.org 70 i 48635GCC 5.5 with support for Address Sanitizer and Undefined Behavior Sanitizer
Err codemadness.org 70 i 48638GDB 7.12
Err codemadness.org 70 i 48641GNU binutils 2.27
Err codemadness.org 70 i 48644Clang/LLVM 3.8.1
Err codemadness.org 70 i 48647OpenSSH 7.6
Err codemadness.org 70 i 48650OpenSSL 1.0.2k
Err codemadness.org 70 i 48653mdocml 1.14.1
Err codemadness.org 70 i 48656acpica 20170303
Err codemadness.org 70 i 48659ntp 4.2.8p11-o
Err codemadness.org 70 i 48662dhcpcd 7.0.6
Err codemadness.org 70 i 48665Lua 5.3.4
Err codemadness.org 70 i 48668###Running FreeBSD on the ARM64 VPS from Scaleway
Err codemadness.org 70 i 48674 Err codemadness.org 70 i 48675Err codemadness.org 70 i 48676Err codemadness.org 70 i 48682 Err codemadness.org 70 i 48683I’ve been thinking about this 6 since 2017, but only yesterday signed up for an account and played around with the ARM64 offering.
Err codemadness.org 70 i 48681
Err codemadness.org 70 i 48677 Turns out it’s pretty great! KVM boots into UEFI, there’s a local VirtIO disk attached, no NBD junk required. So we can definitely run FreeBSD.
Err codemadness.org 70 i 48678 I managed to “depenguinate” a running instance, the notes are below. Would be great if Scaleway offered an official image instead :wink:
Err codemadness.org 70 i 48679 For some reason, unlike on x86 4, mounting additional volumes is not allowed 4 on ARM64 instances. So we’ll have to move the running Linux to a ramdisk using pivot_root and then we can do whatever to our one and only disk.
Err codemadness.org 70 i 48680 Spin up an instance with Ubuntu Zesty and ssh in.
apt install gdisk Err codemadness.org 70
i 48688 mount -t tmpfs tmpfs /tmp Err codemadness.org 70
i 48689 cp -r /bin /sbin /etc /dev /root /home /lib /run /usr /var /tmp Err codemadness.org 70
i 48690 mkdir /tmp/proc /tmp/sys /tmp/oldroot Err codemadness.org 70
i 48691 mount /dev/vda /tmp/oldroot Err codemadness.org 70
i 48692 mount --make-rprivate / Err codemadness.org 70
i 48693 pivot_root /tmp /tmp/oldroot Err codemadness.org 70
i 48694 for i in dev proc sys run; do mount --move /oldroot/$i /$i; done Err codemadness.org 70
i 48695 systemctl daemon-reload Err codemadness.org 70
i 48696 systemctl restart sshd Err codemadness.org 70
i 48697 Err codemadness.org 70
i 48698 Err codemadness.org 70
i 48699 Err codemadness.org 70 i 48700Err codemadness.org 70 i 48702 Err codemadness.org 70 i 48703Now reconnect to ssh from a second terminal (note: rm the connection file if you use ControlPersist in ssh config), then exit the old session. Kill the old sshd process, restart or stop the rest of the stuff using the old disk:
Err codemadness.org 70 i 48701
pkill -f notty Err codemadness.org 70
i 48704 sed -ibak 's/RefuseManualStart.*$//g' /lib/systemd/system/dbus.service Err codemadness.org 70
i 48705 systemctl daemon-reload Err codemadness.org 70
i 48706 systemctl restart dbus Err codemadness.org 70
i 48707 systemctl daemon-reexec Err codemadness.org 70
i 48708 systemctl stop user@0 ntp cron systemd-logind Err codemadness.org 70
i 48709 systemctl restart systemd-journald systemd-udevd Err codemadness.org 70
i 48710 pkill agetty Err codemadness.org 70
i 48711 pkill rsyslogd Err codemadness.org 70
i 48712 Err codemadness.org 70
i 48713 Err codemadness.org 70
i 48714 Err codemadness.org 70 i 48715Err codemadness.org 70 i 48717 Err codemadness.org 70 i 48718Check that nothing is touching /oldroot:
Err codemadness.org 70 i 48716
lsof | grep oldroot Err codemadness.org 70
i 48719 Err codemadness.org 70
i 48720 Err codemadness.org 70
i 48721 Err codemadness.org 70 i 48722Err codemadness.org 70 i 48725 Err codemadness.org 70 i 48726There will probably be an old dbus-daemon, kill it.
Err codemadness.org 70 i 48724
Err codemadness.org 70 i 48723 And finally, unmount the old root and overwrite the hard disk with a memstick image:
umount -R /oldroot Err codemadness.org 70
i 48727 wget https://download.freebsd.org/ftp/snapshots/arm64/aarch64/ISO-IMAGES/12.0/FreeBSD-12.0-CURRENT-arm64-aarch64-20180719-r336479-mini-memstick.img.xz Err codemadness.org 70
i 48728 xzcat FreeBSD-12.0-CURRENT-arm64-aarch64-20180719-r336479-mini-memstick.img.xz | dd if=/dev/stdin of=/dev/vda bs=1M Err codemadness.org 70
i 48729 Err codemadness.org 70
i 48730 Err codemadness.org 70
i 48731 Err codemadness.org 70 i 48732Err codemadness.org 70 i 48736 Err codemadness.org 70 i 48737(Look for the newest snapshot, don’t copy paste the July 19 link above if you’re reading this in the future. Actually maybe use a release instead of CURRENT…)
Err codemadness.org 70 i 48735
Err codemadness.org 70 i 48733 Now, fix the GPT: move the secondary table to the end of the disk and resize the table.
Err codemadness.org 70 i 48734 It’s important to resize here, as FreeBSD does not do that and silently creates partitions that won’t persist across reboots
gdisk /dev/vda Err codemadness.org 70
i 48738 x Err codemadness.org 70
i 48739 e Err codemadness.org 70
i 48740 s Err codemadness.org 70
i 48741 4 Err codemadness.org 70
i 48742 w Err codemadness.org 70
i 48743 y Err codemadness.org 70
i 48744 Err codemadness.org 70
i 48745 Err codemadness.org 70
i 48746 And reboot. (You might actually want to hard reboot here: for some reason on the first reboot from Linux, pressing the any-key to enter the prompt in the loader hangs the console for me.)
Err codemadness.org 70 i 48747 Err codemadness.org 70 i 48748I didn’t have to go into the ESC menu and choose the local disk in the boot manager, it seems to boot from disk automatically.
Err codemadness.org 70 i 48749 Err codemadness.org 70 i 48750Now we’re in the FreeBSD EFI loader.
Err codemadness.org 70
i 48751 For some reason, the (recently fixed? 2) serial autodetection from EFI is not working correctly. Or something.
Err codemadness.org 70
i 48752 So you don’t get console output by default.
Err codemadness.org 70
i 48753 To fix, you have to run these commands in the boot loader command prompt:
set console=comconsole,efi Err codemadness.org 70
i 48756 boot Err codemadness.org 70
i 48757 Err codemadness.org 70
i 48758 Err codemadness.org 70
i 48759 Ignore the warning about comconsole not being a valid console.
Err codemadness.org 70
i 48760 Since there’s at least one (efi) that the loader thinks is valid, it sets the whole variable.)
(UPD: shouldn’t be necessary in the next snapshot)
Err codemadness.org 70 i 48763 Err codemadness.org 70 i 48764Now it’s a regular installation process!
Err codemadness.org 70
i 48765 When asked about partitioning, choose Shell, and manually add a partition and set up a root filesystem:
gpart add -t freebsd-zfs -a 4k -l zroot vtbd0 Err codemadness.org 70
i 48768 zpool create -R /mnt -O mountpoint=none -O atime=off zroot /dev/gpt/zroot Err codemadness.org 70
i 48769 zfs create -o canmount=off -o mountpoint=none zroot/ROOT Err codemadness.org 70
i 48770 zfs create -o mountpoint=/ zroot/ROOT/default Err codemadness.org 70
i 48771 zfs create -o mountpoint=/usr zroot/ROOT/default/usr Err codemadness.org 70
i 48772 zfs create -o mountpoint=/var zroot/ROOT/default/var Err codemadness.org 70
i 48773 zfs create -o mountpoint=/var/log zroot/ROOT/default/var/log Err codemadness.org 70
i 48774 zfs create -o mountpoint=/usr/home zroot/home Err codemadness.org 70
i 48775 zpool set bootfs=zroot/ROOT/default zroot Err codemadness.org 70
i 48776 exit Err codemadness.org 70
i 48777 Err codemadness.org 70
i 48778 Err codemadness.org 70
i 48779 (In this example, I set up ZFS with a beadm-compatible layout which allows me to use Boot Environments.)
Err codemadness.org 70 i 48780 Err codemadness.org 70 i 48781In the post-install chroot shell, fix some configs like so:
Err codemadness.org 70 i 48782 Err codemadness.org 70 i 48783echo 'zfs_load="YES"' >> /boot/loader.conf Err codemadness.org 70
i 48784 echo 'console="comconsole,efi"' >> /boot/loader.conf Err codemadness.org 70
i 48785 echo 'vfs.zfs.arc_max="512M"' >> /boot/loader.conf Err codemadness.org 70
i 48786 sysrc zfs_enable=YES Err codemadness.org 70
i 48787 exit Err codemadness.org 70
i 48788 Err codemadness.org 70
i 48789 Err codemadness.org 70
i 48790 (Yeah, for some reason, the loader does not load zfs.ko’s dependency opensolaris.ko automatically here. idk what even. It does on my desktop and laptop.)
Err codemadness.org 70 i 48791 Err codemadness.org 70 i 48792Now you can reboot into the installed system!!
Err codemadness.org 70 i 48793 Err codemadness.org 70 i 48794Here’s how you can set up IPv6 (and root’s ssh key) auto configuration on boot:
Err codemadness.org 70 i 48795 Err codemadness.org 70 i 48796Pkg bootstrap Err codemadness.org 70
i 48797 pkg install curl Err codemadness.org 70
i 48798 curl https://raw.githubusercontent.com/scaleway/image-tools/master/bases/overlay-common/usr/local/bin/scw-metadata > /usr/local/bin/scw-metadata Err codemadness.org 70
i 48799 chmod +x /usr/local/bin/scw-metadata Err codemadness.org 70
i 48800 echo '#\!/bin/sh' > /etc/rc.local Err codemadness.org 70
i 48801 echo 'PATH=/usr/local/bin:$PATH' >> /etc/rc.local Err codemadness.org 70
i 48802 echo 'eval $(scw-metadata)' >> /etc/rc.local Err codemadness.org 70
i 48803 echo 'echo $SSH_PUBLIC_KEYS_0_KEY > /root/.ssh/authorized_keys' >> /etc/rc.local Err codemadness.org 70
i 48804 echo 'chmod 0400 /root/.ssh/authorized_keys' >> /etc/rc.local Err codemadness.org 70
i 48805 echo 'ifconfig vtnet0 inet6 $IPV6_ADDRESS/$IPV6_NETMASK' >> /etc/rc.local Err codemadness.org 70
i 48806 echo 'route -6 add default $IPV6_GATEWAY' >> /etc/rc.local Err codemadness.org 70
i 48807 mkdir /run Err codemadness.org 70
i 48808 mkdir /root/.ssh Err codemadness.org 70
i 48809 sh /etc/rc.local Err codemadness.org 70
i 48810 Err codemadness.org 70
i 48811 Err codemadness.org 70
i 48812 Err codemadness.org 70 i 48813Err codemadness.org 70 i 48815 Err codemadness.org 70 i 48816And to fix incoming TCP connections, configure the DHCP client to change the broadcast address:
Err codemadness.org 70 i 48814
echo 'interface "vtnet0" { supersede broadcast-address 255.255.255.255; }' >> /etc/dhclient.conf
Err codemadness.org 70
i 48817 killall dhclient
Err codemadness.org 70
i 48818 dhclient vtnet0
** Digital Ocean **
Err codemadness.org 70
i 48830 http://do.co/bsdnow
###Easy encrypted backups on OpenBSD with base tools
Err codemadness.org 70 i 48833 Err codemadness.org 70 i 48834Err codemadness.org 70 i 48835Err codemadness.org 70 i 48840 Err codemadness.org 70 i 48841Today’s topic is “Encrypted backups” using only OpenBSD base tools. I am planning to write a bigger article later about backups but it’s a wide topic with a lot of software to cover and a lot of explanations about the differents uses cases, needs, issues an solutions. Here I will stick on explaining how to make reliable backups for an OpenBSD system (my laptop).
Err codemadness.org 70 i 48839
Err codemadness.org 70 i 48836 What we need is the dump command (see man 8 dump for its man page). It’s an utility to make a backup for a filesystem, it can only make a backup of one filesystem at a time. On my laptop I only backup /home partition so this solution is suitable for me while still being easy.
Err codemadness.org 70 i 48837 Dump can do incremental backups, it means that it will only save what changed since the last backup of lower level. If you do not understand this, please refer to the dump man page.
Err codemadness.org 70 i 48838 What is very interesting with dump is that it honors nodump flag which is an extended attribute of a FFS filesystem. One can use the command chflags nodump /home/solene/Downloads to tells dump not do save that folder (under some circumstances). By default, dump will not save thoses files, EXCEPT for a level 0 backup.
Err codemadness.org 70 i 48849Err codemadness.org 70 i 48854 Err codemadness.org 70 i 48855My process is to make a huge dump of level 0 and keep it on a remote server, then, once a week I make a level 1 backup which will contain everything changed since the last dump of level 0, and everyday I do a level 2 backup of my files. The level 2 will contain latest files and the files changing a lot, which are often the most interesting. The level 1 backup is important because it will offload a lot of changes for the level 2.
Err codemadness.org 70 i 48853
Err codemadness.org 70 i 48850 Let me explain: let says my full backup is 60 GB, full of pictures, sources files, GUI applications data files etc… A level 1 backup will contain every new picture, new projects, new GUI files etc… since the full backup, which will produce bigger and bigger dump over time, usually it is only 100 MB to 1GB. As I don’t add new pictures everyday or use new software everyday, the level 2 will take care of most littles changes to my data, like source code edited, little works on files etc… The level 2 backup is really small, I try to keep it under 50 MB so I can easily send it on my remote server everyday.
Err codemadness.org 70 i 48851 One could you more dump level, up to level 9, but keep in mind that those are incremental. In my case, if I need to restore all my partition, I will need to use level 0, 1 and 2 to get up to latest backup state. If you want to restore a file deleted a few days ago, you need to remember in which level its latest version is.
Err codemadness.org 70 i 48852 History note: dump was designed to be used with magnetic tapes.
##News Roundup
Err codemadness.org 70
i 48862 ###Status of DFly server storage upgrades (Matt Dillon)
Err codemadness.org 70 i 48865Err codemadness.org 70 i 48867 Err codemadness.org 70 i 48868Last month we did some storage upgrades, particularly of internet-facing machines for package and OS distribution. Yesterday we did a number of additional upgrades, described below. All using funds generously donated by everyone!
Err codemadness.org 70 i 48866
Err codemadness.org 70 i 48869Err codemadness.org 70 i 48871 Err codemadness.org 70 i 48872The main repository server received a 2TB SSD to replace the HDDs it was using before. This will improve access to a number of things maintained by this server, including the mail archives, and gives the main repo server more breathing room for repository expansion. Space was at a premium before. Now there’s plenty.
Err codemadness.org 70 i 48870
Err codemadness.org 70 i 48873Err codemadness.org 70 i 48875 Err codemadness.org 70 i 48876Monster, the quad socket opteron which we currently use as the database builder and repository that we export to our public grok service (grok.dragonflybsd.org) received a 512G SSD to add swap space for swapcache, to help cache the grok meta-data. It now has 600GB of swapcache configured. Over the next few weeks we will also be changing the grok updates to ping-pong between the two 4TB data drives it received in the last upgrade so we can do concurrent updates and web accesses without them tripping over each other performance-wise.
Err codemadness.org 70 i 48874
Err codemadness.org 70 i 48877Err codemadness.org 70 i 48879 Err codemadness.org 70 i 48880The main developer box, Leaf, received a 2TB SSD and we are currently in the midst of migrating all the developer accounts in /home and /build from its old HDDs to its new SSD. This machine serves developer repos, developer web stuff, our home page and wiki, etc, so those will become snappier as well.
Err codemadness.org 70 i 48878
Err codemadness.org 70 i 48881Err codemadness.org 70 i 48883 Err codemadness.org 70 i 48884Hard drives are becoming real dinosaurs. We still have a few left from the old days but in terms of active use the only HDDs we feel we really need to keep now are the ones we use for backups and grok data, owing to the amount of storage needed for those functions.
Err codemadness.org 70 i 48882
Err codemadness.org 70 i 48885Err codemadness.org 70 i 48887 Err codemadness.org 70 i 48888Five years ago when we received the blade server that now sits in the colo, we had a small 256G SSD for root on every blade, and everything else used HDDs. To make things operate smoothly, most of that 256G root SSD was assigned to swapcache (200G of it, in fact, in most cases). Even just 2 years ago replacing all those HDDs with SSDs, even just the ones being used to actively serve data and support developers, would have been cost prohibitive. But today it isn’t and the only HDDs we really need anywhere are for backups or certain very large bits of bulk data (aka the grok source repository and index). The way things are going, even the backup drives will probably become SSDs over the next two years.
Err codemadness.org 70 i 48886
###iX ad spot
Err codemadness.org 70
i 48891 OSCON 2018 Recap
Err codemadness.org 70 i 48898Err codemadness.org 70 i 48900 Err codemadness.org 70 i 48901In March, to FreeBSD landed a very interesting feature called ‘zpool checkpoints’. Before we jump straight into the topic, let’s take a step back and look at another ZFS feature called ‘snapshot’. Snapshot allows us to create an image of our single file systems. This gives us the option to modify data on the dataset without the fear of losing some data.
Err codemadness.org 70 i 48899
Err codemadness.org 70 i 48902Err codemadness.org 70 i 48904 Err codemadness.org 70 i 48905A very good example of how to use ZFS snapshot is during an upgrade of database schema. Let us consider a situation where we have a few scripts which change our schema. Sometimes we are unable to upgrade in one transaction (for example, when we attempt to alter a table and then update it in single transaction). If our database is on dataset, we can just snapshot it, and if something goes wrong, simply rollback the file system to its previous state.
Err codemadness.org 70 i 48903
Err codemadness.org 70 i 48906Err codemadness.org 70 i 48908 Err codemadness.org 70 i 48909The problem with snapshot is that it works only on a single dataset. If we added some dataset, we wouldn’t then be able to create the snapshot which would rollback that operation. The same with changing the attributes of a dataset. If we change the compression on the dataset, we cannot rollback it. We would need to change that manually.
Err codemadness.org 70 i 48907
Err codemadness.org 70 i 48910Err codemadness.org 70 i 48912 Err codemadness.org 70 i 48913Another interesting problem involves upgrading the whole operating system when we upgrade system with a new ZFS version. What if we start upgrading our dataset and our kernel begins to crash? (If you use FreeBSD, I doubt you will ever have had that experience but still…). If we rollback to the old kernel, there is a chance the dataset will stop working because the new kernel doesn’t know how to use the new features.
Err codemadness.org 70 i 48911
Err codemadness.org 70 i 48914Err codemadness.org 70 i 48916 Err codemadness.org 70 i 48917Zpool checkpoints is the solution to all those problems. Instead of taking a single snapshot of the dataset, we can now take a snapshot of the whole pool. That means we will not only rollback the data but also all the metadata. If we rewind to the checkpoint, all our ZFS properties will be rolled back; the upgrade will be rolledback, and even the creation/deletion of the dataset, and the snapshot, will be rolledback.
Err codemadness.org 70 i 48915
zpool checkpoint <pool>
zpool import -- rewind-to-checkpoint <pool>
zpool import --read-only=on --rewind-to-checkpoint
zpool checkpoint --discard <pool> or zpool checkpoint -d <pool>
Err codemadness.org 70 i 48952Err codemadness.org 70 i 48954 Err codemadness.org 70 i 48955For me, this feature is incredibly useful, especially when upgrading an operating system, or when I need to experiment with additional data sets. If you speak Polish, I have some additional information for you. During the first Polish BSD user group meeting, I had the opportunity to give a short talk about this feature. Here you find the video of that talk, and here is the slideshow.
Err codemadness.org 70 i 48953
Err codemadness.org 70 i 48956Err codemadness.org 70 i 48958 Err codemadness.org 70 i 48959I would like to offer my thanks to Serapheim Dimitropoulos for developing this feature, and for being so kind in sharing with me so many of its intricacies. If you are interested in knowing more about the technical details of this feature, you should check out Serapheim’s blog, and his video about checkpoints.
Err codemadness.org 70 i 48957
###g2k18 Reports
Err codemadness.org 70 i 48962 Err codemadness.org 70 i 48963##Beastie Bits
Err codemadness.org 70 i 48979 Err codemadness.org 70 i 48980Tarsnap
Err codemadness.org 70 i 48995 Err codemadness.org 70 i 48996##Feedback/Questions
Err codemadness.org 70 i 48997 Err codemadness.org 70 i 48998##Headlines
Err codemadness.org 70
i 49018 ###NetBSD v8.0 Released
Err codemadness.org 70 i 49021Err codemadness.org 70 i 49023 Err codemadness.org 70 i 49024The NetBSD Project is pleased to announce NetBSD 8.0, the sixteenth major release of the NetBSD operating system.
Err codemadness.org 70 i 49022
Err codemadness.org 70 i 49025Err codemadness.org 70 i 49027 Err codemadness.org 70 i 49028This release brings stability improvements, hundreds of bug fixes, and many new features.
Err codemadness.org 70 i 49026
Some highlights of the NetBSD 8.0 release are:
Err codemadness.org 70 i 49031USB stack rework, USB3 support added.
Err codemadness.org 70 i 49034In-kernel audio mixer (audio_system(9)).
Err codemadness.org 70 i 49037Reproducible builds (MKREPRO, see mk.conf(5)).
Err codemadness.org 70 i 49040Full userland debug information (MKDEBUG, see mk.conf(5)) available. While most install media do not come with them (for size reasons), the debug and xdebug sets can be downloaded and extracted as needed later. They provide full symbol information for all base system and X binaries and libraries and allow better error reporting and (userland) crash analysis.
Err codemadness.org 70 i 49043PaX MPROTECT (W^X) memory protection enforced by default on some architectures with fine-grained memory protection and suitable ELF formats: i386, amd64, evbarm, landisk.
Err codemadness.org 70 i 49046PaX ASLR (Address Space Layout Randomization) enabled by default on: i386, amd64, evbarm, landisk, sparc64.
Err codemadness.org 70 i 49049Position independent executables by default for userland on: i386, amd64, arm, m68k, mips, sh3, sparc64.
Err codemadness.org 70 i 49052A new socket layer can(4) has been added for communication of devices on a CAN bus.
Err codemadness.org 70 i 49055A special pseudo interface ipsecif(4) for route-based VPNs has been added.
Err codemadness.org 70 i 49058Parts of the network stack have been made MP-safe. The kernel option NET_MPSAFE is required to enable this.
Err codemadness.org 70 i 49061Hardening of the network stack in general.
Err codemadness.org 70 i 49064Various WAPBL (the NetBSD file system “log” option) stability and performance improvements.
Err codemadness.org 70 i 49067Specific to i386 and amd64 CPUs:
Err codemadness.org 70 i 49070Meltdown mitigation: SVS (Separate Virtual Space), enabled by default.
Err codemadness.org 70 i 49073SpectreV2 mitigation: retpoline (support in gcc), used by default for kernels. Other hardware mitigations are also available.
Err codemadness.org 70 i 49076SpectreV4 mitigations available for Intel and AMD.
Err codemadness.org 70 i 49079PopSS workaround: user access to debug registers is turned off by default.
Err codemadness.org 70 i 49082Lazy FPU saving disabled on vulnerable Intel CPUs (“eagerfpu”).
Err codemadness.org 70 i 49085SMAP support.
Err codemadness.org 70 i 49088Improvement and hardening of the memory layout: W^X, fewer writable pages, better consistency, better performance.
Err codemadness.org 70 i 49091(U)EFI bootloader.
Err codemadness.org 70 i 49094Many evbarm kernels now use FDT (flat device tree) information (loadable at boot time from an external file) for device configuration, the number of kernels has decreased but the number of boards has vastly increased.
Err codemadness.org 70 i 49097Lots of updates to 3rd party software included:
Err codemadness.org 70 i 49100GCC 5.5 with support for Address Sanitizer and Undefined Behavior Sanitizer
Err codemadness.org 70 i 49103GDB 7.12
Err codemadness.org 70 i 49106GNU binutils 2.27
Err codemadness.org 70 i 49109Clang/LLVM 3.8.1
Err codemadness.org 70 i 49112OpenSSH 7.6
Err codemadness.org 70 i 49115OpenSSL 1.0.2k
Err codemadness.org 70 i 49118mdocml 1.14.1
Err codemadness.org 70 i 49121acpica 20170303
Err codemadness.org 70 i 49124ntp 4.2.8p11-o
Err codemadness.org 70 i 49127dhcpcd 7.0.6
Err codemadness.org 70 i 49130Lua 5.3.4
Err codemadness.org 70 i 49133###Running FreeBSD on the ARM64 VPS from Scaleway
Err codemadness.org 70 i 49139 Err codemadness.org 70 i 49140Err codemadness.org 70 i 49141Err codemadness.org 70 i 49147 Err codemadness.org 70 i 49148I’ve been thinking about this 6 since 2017, but only yesterday signed up for an account and played around with the ARM64 offering.
Err codemadness.org 70 i 49146
Err codemadness.org 70 i 49142 Turns out it’s pretty great! KVM boots into UEFI, there’s a local VirtIO disk attached, no NBD junk required. So we can definitely run FreeBSD.
Err codemadness.org 70 i 49143 I managed to “depenguinate” a running instance, the notes are below. Would be great if Scaleway offered an official image instead :wink:
Err codemadness.org 70 i 49144 For some reason, unlike on x86 4, mounting additional volumes is not allowed 4 on ARM64 instances. So we’ll have to move the running Linux to a ramdisk using pivot_root and then we can do whatever to our one and only disk.
Err codemadness.org 70 i 49145 Spin up an instance with Ubuntu Zesty and ssh in.
apt install gdisk Err codemadness.org 70
i 49153 mount -t tmpfs tmpfs /tmp Err codemadness.org 70
i 49154 cp -r /bin /sbin /etc /dev /root /home /lib /run /usr /var /tmp Err codemadness.org 70
i 49155 mkdir /tmp/proc /tmp/sys /tmp/oldroot Err codemadness.org 70
i 49156 mount /dev/vda /tmp/oldroot Err codemadness.org 70
i 49157 mount --make-rprivate / Err codemadness.org 70
i 49158 pivot_root /tmp /tmp/oldroot Err codemadness.org 70
i 49159 for i in dev proc sys run; do mount --move /oldroot/$i /$i; done Err codemadness.org 70
i 49160 systemctl daemon-reload Err codemadness.org 70
i 49161 systemctl restart sshd Err codemadness.org 70
i 49162 Err codemadness.org 70
i 49163 Err codemadness.org 70
i 49164 Err codemadness.org 70 i 49165Err codemadness.org 70 i 49167 Err codemadness.org 70 i 49168Now reconnect to ssh from a second terminal (note: rm the connection file if you use ControlPersist in ssh config), then exit the old session. Kill the old sshd process, restart or stop the rest of the stuff using the old disk:
Err codemadness.org 70 i 49166
pkill -f notty Err codemadness.org 70
i 49169 sed -ibak 's/RefuseManualStart.*$//g' /lib/systemd/system/dbus.service Err codemadness.org 70
i 49170 systemctl daemon-reload Err codemadness.org 70
i 49171 systemctl restart dbus Err codemadness.org 70
i 49172 systemctl daemon-reexec Err codemadness.org 70
i 49173 systemctl stop user@0 ntp cron systemd-logind Err codemadness.org 70
i 49174 systemctl restart systemd-journald systemd-udevd Err codemadness.org 70
i 49175 pkill agetty Err codemadness.org 70
i 49176 pkill rsyslogd Err codemadness.org 70
i 49177 Err codemadness.org 70
i 49178 Err codemadness.org 70
i 49179 Err codemadness.org 70 i 49180Err codemadness.org 70 i 49182 Err codemadness.org 70 i 49183Check that nothing is touching /oldroot:
Err codemadness.org 70 i 49181
lsof | grep oldroot Err codemadness.org 70
i 49184 Err codemadness.org 70
i 49185 Err codemadness.org 70
i 49186 Err codemadness.org 70 i 49187Err codemadness.org 70 i 49190 Err codemadness.org 70 i 49191There will probably be an old dbus-daemon, kill it.
Err codemadness.org 70 i 49189
Err codemadness.org 70 i 49188 And finally, unmount the old root and overwrite the hard disk with a memstick image:
umount -R /oldroot Err codemadness.org 70
i 49192 wget https://download.freebsd.org/ftp/snapshots/arm64/aarch64/ISO-IMAGES/12.0/FreeBSD-12.0-CURRENT-arm64-aarch64-20180719-r336479-mini-memstick.img.xz Err codemadness.org 70
i 49193 xzcat FreeBSD-12.0-CURRENT-arm64-aarch64-20180719-r336479-mini-memstick.img.xz | dd if=/dev/stdin of=/dev/vda bs=1M Err codemadness.org 70
i 49194 Err codemadness.org 70
i 49195 Err codemadness.org 70
i 49196 Err codemadness.org 70 i 49197Err codemadness.org 70 i 49201 Err codemadness.org 70 i 49202(Look for the newest snapshot, don’t copy paste the July 19 link above if you’re reading this in the future. Actually maybe use a release instead of CURRENT…)
Err codemadness.org 70 i 49200
Err codemadness.org 70 i 49198 Now, fix the GPT: move the secondary table to the end of the disk and resize the table.
Err codemadness.org 70 i 49199 It’s important to resize here, as FreeBSD does not do that and silently creates partitions that won’t persist across reboots
gdisk /dev/vda Err codemadness.org 70
i 49203 x Err codemadness.org 70
i 49204 e Err codemadness.org 70
i 49205 s Err codemadness.org 70
i 49206 4 Err codemadness.org 70
i 49207 w Err codemadness.org 70
i 49208 y Err codemadness.org 70
i 49209 Err codemadness.org 70
i 49210 Err codemadness.org 70
i 49211 And reboot. (You might actually want to hard reboot here: for some reason on the first reboot from Linux, pressing the any-key to enter the prompt in the loader hangs the console for me.)
Err codemadness.org 70 i 49212 Err codemadness.org 70 i 49213I didn’t have to go into the ESC menu and choose the local disk in the boot manager, it seems to boot from disk automatically.
Err codemadness.org 70 i 49214 Err codemadness.org 70 i 49215Now we’re in the FreeBSD EFI loader.
Err codemadness.org 70
i 49216 For some reason, the (recently fixed? 2) serial autodetection from EFI is not working correctly. Or something.
Err codemadness.org 70
i 49217 So you don’t get console output by default.
Err codemadness.org 70
i 49218 To fix, you have to run these commands in the boot loader command prompt:
set console=comconsole,efi Err codemadness.org 70
i 49221 boot Err codemadness.org 70
i 49222 Err codemadness.org 70
i 49223 Err codemadness.org 70
i 49224 Ignore the warning about comconsole not being a valid console.
Err codemadness.org 70
i 49225 Since there’s at least one (efi) that the loader thinks is valid, it sets the whole variable.)
(UPD: shouldn’t be necessary in the next snapshot)
Err codemadness.org 70 i 49228 Err codemadness.org 70 i 49229Now it’s a regular installation process!
Err codemadness.org 70
i 49230 When asked about partitioning, choose Shell, and manually add a partition and set up a root filesystem:
gpart add -t freebsd-zfs -a 4k -l zroot vtbd0 Err codemadness.org 70
i 49233 zpool create -R /mnt -O mountpoint=none -O atime=off zroot /dev/gpt/zroot Err codemadness.org 70
i 49234 zfs create -o canmount=off -o mountpoint=none zroot/ROOT Err codemadness.org 70
i 49235 zfs create -o mountpoint=/ zroot/ROOT/default Err codemadness.org 70
i 49236 zfs create -o mountpoint=/usr zroot/ROOT/default/usr Err codemadness.org 70
i 49237 zfs create -o mountpoint=/var zroot/ROOT/default/var Err codemadness.org 70
i 49238 zfs create -o mountpoint=/var/log zroot/ROOT/default/var/log Err codemadness.org 70
i 49239 zfs create -o mountpoint=/usr/home zroot/home Err codemadness.org 70
i 49240 zpool set bootfs=zroot/ROOT/default zroot Err codemadness.org 70
i 49241 exit Err codemadness.org 70
i 49242 Err codemadness.org 70
i 49243 Err codemadness.org 70
i 49244 (In this example, I set up ZFS with a beadm-compatible layout which allows me to use Boot Environments.)
Err codemadness.org 70 i 49245 Err codemadness.org 70 i 49246In the post-install chroot shell, fix some configs like so:
Err codemadness.org 70 i 49247 Err codemadness.org 70 i 49248echo 'zfs_load="YES"' >> /boot/loader.conf Err codemadness.org 70
i 49249 echo 'console="comconsole,efi"' >> /boot/loader.conf Err codemadness.org 70
i 49250 echo 'vfs.zfs.arc_max="512M"' >> /boot/loader.conf Err codemadness.org 70
i 49251 sysrc zfs_enable=YES Err codemadness.org 70
i 49252 exit Err codemadness.org 70
i 49253 Err codemadness.org 70
i 49254 Err codemadness.org 70
i 49255 (Yeah, for some reason, the loader does not load zfs.ko’s dependency opensolaris.ko automatically here. idk what even. It does on my desktop and laptop.)
Err codemadness.org 70 i 49256 Err codemadness.org 70 i 49257Now you can reboot into the installed system!!
Err codemadness.org 70 i 49258 Err codemadness.org 70 i 49259Here’s how you can set up IPv6 (and root’s ssh key) auto configuration on boot:
Err codemadness.org 70 i 49260 Err codemadness.org 70 i 49261Pkg bootstrap Err codemadness.org 70
i 49262 pkg install curl Err codemadness.org 70
i 49263 curl https://raw.githubusercontent.com/scaleway/image-tools/master/bases/overlay-common/usr/local/bin/scw-metadata > /usr/local/bin/scw-metadata Err codemadness.org 70
i 49264 chmod +x /usr/local/bin/scw-metadata Err codemadness.org 70
i 49265 echo '#\!/bin/sh' > /etc/rc.local Err codemadness.org 70
i 49266 echo 'PATH=/usr/local/bin:$PATH' >> /etc/rc.local Err codemadness.org 70
i 49267 echo 'eval $(scw-metadata)' >> /etc/rc.local Err codemadness.org 70
i 49268 echo 'echo $SSH_PUBLIC_KEYS_0_KEY > /root/.ssh/authorized_keys' >> /etc/rc.local Err codemadness.org 70
i 49269 echo 'chmod 0400 /root/.ssh/authorized_keys' >> /etc/rc.local Err codemadness.org 70
i 49270 echo 'ifconfig vtnet0 inet6 $IPV6_ADDRESS/$IPV6_NETMASK' >> /etc/rc.local Err codemadness.org 70
i 49271 echo 'route -6 add default $IPV6_GATEWAY' >> /etc/rc.local Err codemadness.org 70
i 49272 mkdir /run Err codemadness.org 70
i 49273 mkdir /root/.ssh Err codemadness.org 70
i 49274 sh /etc/rc.local Err codemadness.org 70
i 49275 Err codemadness.org 70
i 49276 Err codemadness.org 70
i 49277 Err codemadness.org 70 i 49278Err codemadness.org 70 i 49280 Err codemadness.org 70 i 49281And to fix incoming TCP connections, configure the DHCP client to change the broadcast address:
Err codemadness.org 70 i 49279
echo 'interface "vtnet0" { supersede broadcast-address 255.255.255.255; }' >> /etc/dhclient.conf
Err codemadness.org 70
i 49282 killall dhclient
Err codemadness.org 70
i 49283 dhclient vtnet0
** Digital Ocean **
Err codemadness.org 70
i 49295 http://do.co/bsdnow
###Easy encrypted backups on OpenBSD with base tools
Err codemadness.org 70 i 49298 Err codemadness.org 70 i 49299Err codemadness.org 70 i 49300Err codemadness.org 70 i 49305 Err codemadness.org 70 i 49306Today’s topic is “Encrypted backups” using only OpenBSD base tools. I am planning to write a bigger article later about backups but it’s a wide topic with a lot of software to cover and a lot of explanations about the differents uses cases, needs, issues an solutions. Here I will stick on explaining how to make reliable backups for an OpenBSD system (my laptop).
Err codemadness.org 70 i 49304
Err codemadness.org 70 i 49301 What we need is the dump command (see man 8 dump for its man page). It’s an utility to make a backup for a filesystem, it can only make a backup of one filesystem at a time. On my laptop I only backup /home partition so this solution is suitable for me while still being easy.
Err codemadness.org 70 i 49302 Dump can do incremental backups, it means that it will only save what changed since the last backup of lower level. If you do not understand this, please refer to the dump man page.
Err codemadness.org 70 i 49303 What is very interesting with dump is that it honors nodump flag which is an extended attribute of a FFS filesystem. One can use the command chflags nodump /home/solene/Downloads to tells dump not do save that folder (under some circumstances). By default, dump will not save thoses files, EXCEPT for a level 0 backup.
Err codemadness.org 70 i 49314Err codemadness.org 70 i 49319 Err codemadness.org 70 i 49320My process is to make a huge dump of level 0 and keep it on a remote server, then, once a week I make a level 1 backup which will contain everything changed since the last dump of level 0, and everyday I do a level 2 backup of my files. The level 2 will contain latest files and the files changing a lot, which are often the most interesting. The level 1 backup is important because it will offload a lot of changes for the level 2.
Err codemadness.org 70 i 49318
Err codemadness.org 70 i 49315 Let me explain: let says my full backup is 60 GB, full of pictures, sources files, GUI applications data files etc… A level 1 backup will contain every new picture, new projects, new GUI files etc… since the full backup, which will produce bigger and bigger dump over time, usually it is only 100 MB to 1GB. As I don’t add new pictures everyday or use new software everyday, the level 2 will take care of most littles changes to my data, like source code edited, little works on files etc… The level 2 backup is really small, I try to keep it under 50 MB so I can easily send it on my remote server everyday.
Err codemadness.org 70 i 49316 One could you more dump level, up to level 9, but keep in mind that those are incremental. In my case, if I need to restore all my partition, I will need to use level 0, 1 and 2 to get up to latest backup state. If you want to restore a file deleted a few days ago, you need to remember in which level its latest version is.
Err codemadness.org 70 i 49317 History note: dump was designed to be used with magnetic tapes.
##News Roundup
Err codemadness.org 70
i 49327 ###Status of DFly server storage upgrades (Matt Dillon)
Err codemadness.org 70 i 49330Err codemadness.org 70 i 49332 Err codemadness.org 70 i 49333Last month we did some storage upgrades, particularly of internet-facing machines for package and OS distribution. Yesterday we did a number of additional upgrades, described below. All using funds generously donated by everyone!
Err codemadness.org 70 i 49331
Err codemadness.org 70 i 49334Err codemadness.org 70 i 49336 Err codemadness.org 70 i 49337The main repository server received a 2TB SSD to replace the HDDs it was using before. This will improve access to a number of things maintained by this server, including the mail archives, and gives the main repo server more breathing room for repository expansion. Space was at a premium before. Now there’s plenty.
Err codemadness.org 70 i 49335
Err codemadness.org 70 i 49338Err codemadness.org 70 i 49340 Err codemadness.org 70 i 49341Monster, the quad socket opteron which we currently use as the database builder and repository that we export to our public grok service (grok.dragonflybsd.org) received a 512G SSD to add swap space for swapcache, to help cache the grok meta-data. It now has 600GB of swapcache configured. Over the next few weeks we will also be changing the grok updates to ping-pong between the two 4TB data drives it received in the last upgrade so we can do concurrent updates and web accesses without them tripping over each other performance-wise.
Err codemadness.org 70 i 49339
Err codemadness.org 70 i 49342Err codemadness.org 70 i 49344 Err codemadness.org 70 i 49345The main developer box, Leaf, received a 2TB SSD and we are currently in the midst of migrating all the developer accounts in /home and /build from its old HDDs to its new SSD. This machine serves developer repos, developer web stuff, our home page and wiki, etc, so those will become snappier as well.
Err codemadness.org 70 i 49343
Err codemadness.org 70 i 49346Err codemadness.org 70 i 49348 Err codemadness.org 70 i 49349Hard drives are becoming real dinosaurs. We still have a few left from the old days but in terms of active use the only HDDs we feel we really need to keep now are the ones we use for backups and grok data, owing to the amount of storage needed for those functions.
Err codemadness.org 70 i 49347
Err codemadness.org 70 i 49350Err codemadness.org 70 i 49352 Err codemadness.org 70 i 49353Five years ago when we received the blade server that now sits in the colo, we had a small 256G SSD for root on every blade, and everything else used HDDs. To make things operate smoothly, most of that 256G root SSD was assigned to swapcache (200G of it, in fact, in most cases). Even just 2 years ago replacing all those HDDs with SSDs, even just the ones being used to actively serve data and support developers, would have been cost prohibitive. But today it isn’t and the only HDDs we really need anywhere are for backups or certain very large bits of bulk data (aka the grok source repository and index). The way things are going, even the backup drives will probably become SSDs over the next two years.
Err codemadness.org 70 i 49351
###iX ad spot
Err codemadness.org 70
i 49356 OSCON 2018 Recap
Err codemadness.org 70 i 49363Err codemadness.org 70 i 49365 Err codemadness.org 70 i 49366In March, to FreeBSD landed a very interesting feature called ‘zpool checkpoints’. Before we jump straight into the topic, let’s take a step back and look at another ZFS feature called ‘snapshot’. Snapshot allows us to create an image of our single file systems. This gives us the option to modify data on the dataset without the fear of losing some data.
Err codemadness.org 70 i 49364
Err codemadness.org 70 i 49367Err codemadness.org 70 i 49369 Err codemadness.org 70 i 49370A very good example of how to use ZFS snapshot is during an upgrade of database schema. Let us consider a situation where we have a few scripts which change our schema. Sometimes we are unable to upgrade in one transaction (for example, when we attempt to alter a table and then update it in single transaction). If our database is on dataset, we can just snapshot it, and if something goes wrong, simply rollback the file system to its previous state.
Err codemadness.org 70 i 49368
Err codemadness.org 70 i 49371Err codemadness.org 70 i 49373 Err codemadness.org 70 i 49374The problem with snapshot is that it works only on a single dataset. If we added some dataset, we wouldn’t then be able to create the snapshot which would rollback that operation. The same with changing the attributes of a dataset. If we change the compression on the dataset, we cannot rollback it. We would need to change that manually.
Err codemadness.org 70 i 49372
Err codemadness.org 70 i 49375Err codemadness.org 70 i 49377 Err codemadness.org 70 i 49378Another interesting problem involves upgrading the whole operating system when we upgrade system with a new ZFS version. What if we start upgrading our dataset and our kernel begins to crash? (If you use FreeBSD, I doubt you will ever have had that experience but still…). If we rollback to the old kernel, there is a chance the dataset will stop working because the new kernel doesn’t know how to use the new features.
Err codemadness.org 70 i 49376
Err codemadness.org 70 i 49379Err codemadness.org 70 i 49381 Err codemadness.org 70 i 49382Zpool checkpoints is the solution to all those problems. Instead of taking a single snapshot of the dataset, we can now take a snapshot of the whole pool. That means we will not only rollback the data but also all the metadata. If we rewind to the checkpoint, all our ZFS properties will be rolled back; the upgrade will be rolledback, and even the creation/deletion of the dataset, and the snapshot, will be rolledback.
Err codemadness.org 70 i 49380
zpool checkpoint <pool>
zpool import -- rewind-to-checkpoint <pool>
zpool import --read-only=on --rewind-to-checkpoint
zpool checkpoint --discard <pool> or zpool checkpoint -d <pool>
Err codemadness.org 70 i 49417Err codemadness.org 70 i 49419 Err codemadness.org 70 i 49420For me, this feature is incredibly useful, especially when upgrading an operating system, or when I need to experiment with additional data sets. If you speak Polish, I have some additional information for you. During the first Polish BSD user group meeting, I had the opportunity to give a short talk about this feature. Here you find the video of that talk, and here is the slideshow.
Err codemadness.org 70 i 49418
Err codemadness.org 70 i 49421Err codemadness.org 70 i 49423 Err codemadness.org 70 i 49424I would like to offer my thanks to Serapheim Dimitropoulos for developing this feature, and for being so kind in sharing with me so many of its intricacies. If you are interested in knowing more about the technical details of this feature, you should check out Serapheim’s blog, and his video about checkpoints.
Err codemadness.org 70 i 49422
###g2k18 Reports
Err codemadness.org 70 i 49427 Err codemadness.org 70 i 49428##Beastie Bits
Err codemadness.org 70 i 49444 Err codemadness.org 70 i 49445Tarsnap
Err codemadness.org 70 i 49460 Err codemadness.org 70 i 49461##Feedback/Questions
Err codemadness.org 70 i 49462 Err codemadness.org 70 i 49463Celebrate our 256th episode with us. You can win a Mogics Power Bagel (not sponsored).
Err codemadness.org 70 i 49692 Err codemadness.org 70 i 49693To enter, go find the 4 episodes we did in December of 2017. In the opening, find the 4 letters in the bookshelf behind me. They spell different words in each of the 4 episodes. Send us these words in order to feedback@bsdnow.tv with the subject “bsdnow256” until August 8th, 2018 18:00 UTC and we’ll randomly draw the winner on the live show. We’ll then contact you to ship the item.
Err codemadness.org 70
i 49694 Only one item to win. All decisions are final. Better luck next time.
Introduction
Err codemadness.org 70
i 49701 This paper analyzes the impact on application performance of the design and implementation choices made in two widely used open-source schedulers: ULE, the default FreeBSD scheduler, and CFS, the default Linux scheduler. We compare ULE and CFS in otherwise identical circumstances. We have ported ULE to Linux, and use it to schedule all threads that are normally scheduled by CFS. We compare the performance of a large suite of applications on the modified kernel running ULE and on the standard Linux kernel running CFS. The observed performance differences are solely the result of scheduling decisions, and do not reflect differences in other subsystems between FreeBSD and Linux. There is no overall winner. On many workloads the two schedulers perform similarly, but for some workloads there are significant and even surprising differences. ULE may cause starvation, even when executing a single application with identical threads, but this starvation may actually lead to better application performance for some workloads. The more complex load balancing mechanism of CFS reacts more quickly to workload changes, but ULE achieves better load balance in the long run.
Err codemadness.org 70
i 49702 Operating system kernel schedulers are responsible for maintaining high utilization of hardware resources (CPU cores, memory, I/O devices) while providing fast response time to latency-sensitive applications. They have to react to workload changes, and handle large numbers of cores and threads with minimal overhead [12]. This paper provides a comparison between the default schedulers of two of the most widely deployed open-source operating systems: the Completely Fair Scheduler (CFS) used in Linux, and the ULE scheduler used in FreeBSD. Our goal is not to declare an overall winner.
Err codemadness.org 70
i 49703 In fact, we find that for some workloads ULE is better and for others CFS is better. Instead, our goal is to illustrate how differences in the design and the implementation of the two schedulers are reflected in application performance under different workloads. ULE and CFS are both designed to schedule large numbers of threads on large multicore machines. Scalability considerations have led both schedulers to adopt per-core run-queues. On a context switch, a core accesses only its local run-queue to find the next thread to run. Periodically and at select times, e.g., when a thread wakes up, both ULE and CFS perform load balancing, i.e., they try to balance the amount of work waiting in the run-queues of different cores.
Err codemadness.org 70
i 49704 ULE and CFS, however, differ greatly in their design and implementation choices. FreeBSD ULE is a simple scheduler (2,950 lines of code in FreeBSD 11.1), while Linux CFS is much more complex (17,900 lines of code in the latest LTS Linux kernel, Linux 4.9). FreeBSD run-queues are FIFO. For load balancing, FreeBSD strives to even out the number of threads per core. In Linux, a core decides which thread to run next based on prior execution time, priority, and perceived cache behavior of the threads in its runqueue. Instead of evening out the number of threads between cores, Linux strives to even out the average amount of pending work.
Performance analysis
Err codemadness.org 70
i 49707 We now analyze the impact of the per-core scheduling on the performance of 37 applications. We define “performance” as follows: for database workloads and NAS applications, we compare the number of operations per second, and for the other applications we compare “execution time”. The higher the “performance”, the better a scheduler performs. Figure 5 presents the performance difference between CFS and ULE on a single core, with percentages above 0 meaning that the application executes faster with ULE than CFS.
Err codemadness.org 70
i 49708 Overall, the scheduler has little influence on most workloads. Indeed, most applications use threads that all perform the same work, thus both CFS and ULE endup scheduling all of the threads in a round-robin fashion. The average performance difference is 1.5%, in favor of ULE. Still, scimark is 36% slower on ULE than CFS, and apache is 40% faster on ULE than CFS. Scimark is a single-threaded Java application. It launches one compute thread, and the Java runtime executes other Java system threads in the background (for the garbage collector, I/O, etc.).
Err codemadness.org 70
i 49709 When the application is executed with ULE, the compute thread can be delayed, because Java system threads are considered interactive and get priority over the computation thread. The apache workload consists of two applications: the main server (httpd) running 100 threads, and ab, a single-threaded load injector.
Err codemadness.org 70
i 49710 The performance difference between ULE and CFS is explained by different choices regarding thread preemption. In ULE, full preemption is disabled, while CFS preempts the running thread when the thread that has just been woken up has a vruntime that is much smaller than the vruntime of the currently executing thread (1ms difference in practice). In CFS, ab is preempted 2 million times during the benchmark, while it never preempted with ULE.
Err codemadness.org 70
i 49711 This behavior is explained as follows: ab starts by sending 100 requests to the httpd server, and then waits for the server to answer. When ab is woken up, it checks which requests have been processed and sends new requests to the server. Since ab is single-threaded, all requests sent to the server are sent sequentially. In ULE, ab is able to send as many new requests as it has received responses. In CFS, every request sent by ab wakes up a httpd thread, which preempts ab.
Conclusion
Err codemadness.org 70
i 49714 Scheduling threads on a multicore machine is hard. In this paper, we perform a fair comparison of the design choices of two widely used schedulers: the ULE scheduler from FreeBSD and CFS from Linux. We show that they behave differently even on simple workloads, and that no scheduler performs better than the other on all workloads.
Disclaimer:
Err codemadness.org 70
i 49719 I came across the Tuxedo Computers InfinityBook last year at the Open! Conference where Tuxedo had a small booth. Previously they came to my attention since they’re a member of the OSB Alliance on whose board I’m a member. Furthermore Tuxedo Computers are a sponsor of the OSBAR which I’m part of the organizational team.
OpenBSD on the Tuxedo InfinityBook
Err codemadness.org 70
i 49722 I’ve asked the guys over at Tuxedo Computers whether they would be interested to have some tests with *BSD done and that I could test drive one of their machines and give feedback on what works and what does not - and possibly look into it.+
Within a few weeks they shipped me a machine and last week the InfinityBook Pro 14” arrived. Awesome. Thanks already to the folks at Tuxedo Computers. The machine arrived accompanied by lot’s of swag :)
Err codemadness.org 70 i 49725 Err codemadness.org 70 i 49726The InfinityBook is a very nice machine and allows a wide range of configuration. The configuration that was shipped to me:
Err codemadness.org 70 i 49727 Err codemadness.org 70 i 49728Intel Core i7-8550U
Err codemadness.org 70
i 49729 1x 16GB RAM 2400Mhz Crucial Ballistix Sport LT
Err codemadness.org 70
i 49730 250 GB Samsung 860 EVO (M.2 SATAIII)
I used a USB-stick to boot install63.fs and re-installed the machine with OpenBSD. Full dmesg.
Err codemadness.org 70 i 49733 Err codemadness.org 70 i 49734The installation went flawlessly, the needed intel firmware is being installed after installation automatically via fw_update(1).
Err codemadness.org 70 i 49735 Err codemadness.org 70 i 49736Out of the box the graphics works and once installed the machine presents the login.
Err codemadness.org 70 i 49737 Err codemadness.org 70 i 49738Video
Err codemadness.org 70
i 49739 When X starts the display is turned off for some reason. You will need to hit fn+f12 (the key with the moon on it) then the display will go on. Aside from that little nit, X works just fine and presents one the expected resolution.
External video is working just fine as well. Either via hdmi output or via the mini displayport connector.
Err codemadness.org 70 i 49742 Err codemadness.org 70 i 49743The buttons for adjusting brightness (fn+f8 and fn+f9) are not working. Instead one has to use wsconsctl(8) to adjust the brightness.
Err codemadness.org 70 i 49744 Err codemadness.org 70 i 49745Networking
Err codemadness.org 70
i 49746 The infinityBook has built-in ethernet, driven by re(4) And for the wireless interface the iwm(4) driver is being used. Both work as expected.
ACPI
Err codemadness.org 70
i 49749 Neither suspend nor hibernate work. Reporting of battery status is bogus as well. Some of the keyboard function keys work:
LCD on/off works (fn+f2)
Err codemadness.org 70
i 49752 Keyboard backlight dimming works (fn+f4)
Err codemadness.org 70
i 49753 Volume (fn+f5 / fn+f6) works
Sound
Err codemadness.org 70
i 49756 The azalia chipset is being used for audio processing. Works as expected, volume can be controlled via buttons (fn+f5, fn+f6) or via mixerctl.
Touchpad
Err codemadness.org 70
i 49759 Can be controlled via wsconsctl(8).
Err codemadness.org 70
i 49760 So far I must say, that the InfinityBook makes a nice machine - and I’m enjoying working with it.
iXsystems
Err codemadness.org 70
i 49763 iXsystems - Its all NAS
As a copy on write (file)system, ZFS can use the transaction group (txg) numbers that are embedded in ZFS block pointers to efficiently find the differences between two txgs; this is used in, for example, ZFS bookmarks. However, as I noted at the end of my entry on block pointers, this doesn’t give us a filesystem level difference; instead, it essentially gives us a list of inodes (okay, dnodes) that changed.
Err codemadness.org 70
i 49768 In theory, turning an inode or dnode number into the path to a file is an expensive operation; you basically have to search the entire filesystem until you find it. In practice, if you’ve ever run ‘zfs diff’, you’ve likely noticed that it runs pretty fast. Nor is this the only place that ZFS quickly turns dnode numbers into full paths, as it comes up in ‘zpool status’ reports about permanent errors. At one level, zfs diff and zpool status do this so rapidly because they ask the ZFS code in the kernel to do it for them. At another level, the question is how the kernel’s ZFS code can be so fast.
Err codemadness.org 70
i 49769 The interesting and surprising answer is that ZFS cheats, in a way that makes things very fast when it works and almost always works in normal filesystems and with normal usage patterns. The cheat is that ZFS dnodes record their parent’s object number.
Err codemadness.org 70
i 49770 If you’re familiar with the twists and turns of Unix filesystems, you’re now wondering how ZFS deals with hardlinks, which can cause a file to be in several directories at once and so have several parents (and then it can be removed from some of the directories). The answer is that ZFS doesn’t; a dnode only ever tracks a single parent, and ZFS accepts that this parent information can be inaccurate. I’ll quote the comment in zfs_obj_to_pobj:
Err codemadness.org 70
i 49771 When a link is removed [the file’s] parent pointer is not changed and will be invalid. There are two cases where a link is removed but the file stays around, when it goes to the delete queue and when there are additional links.
Err codemadness.org 70
i 49772 Before I get into the details, I want to say that I appreciate the brute force elegance of this cheat. The practical reality is that most Unix files today don’t have extra hardlinks, and when they do most hardlinks are done in ways that won’t break ZFS’s parent stuff. The result is that ZFS has picked an efficient implementation that works almost all of the time; in my opinion, the great benefit we get from having it around are more than worth the infrequent cases where it fails or malfunctions. Both zfs diff and having filenames show up in zpool status permanent error reports are very useful (and there may be other cases where this gets used).
Err codemadness.org 70
i 49773 The current details are that any time you hardlink a file to somewhere or rename it, ZFS updates the file’s parent to point to the new directory. Often this will wind up with a correct parent even after all of the dust settles; for example, a common pattern is to write a file to an initial location, hardlink it to its final destination, and then remove the initial location version. In this case, the parent will be correct and you’ll get the right name.
Not too long ago I wondered if and in what situations FreeBSD could be faster than Linux and we received a good amount of informative feedback. So far, Linux rules the desktop space and FreeBSD rules the server space.
Err codemadness.org 70 i 49780 Err codemadness.org 70 i 49781In the meantime, though, what exactly is FreeBSD? And at what times should you choose it over a GNU/Linux installation? Let’s tackle these questions.
Err codemadness.org 70 i 49782 Err codemadness.org 70 i 49783FreeBSD is a free and open source derivative of BSD (Berkeley Software Distribution) with a focus on speed, stability, security, and consistency, among other features. It has been developed and maintained by a large community ever since its initial release many years ago on November 1, 1993.
Err codemadness.org 70 i 49784 Err codemadness.org 70 i 49785BSD is the version of UNIX® that was developed at the University of California in Berkeley. And being a free and open source version, “Free” being a prefix to BSD is a no-brainer.
Err codemadness.org 70 i 49786 Err codemadness.org 70 i 49787What’s FreeBSD Good For?
Err codemadness.org 70 i 49788 Err codemadness.org 70 i 49789FreeBSD offers a plethora of advanced features and even boasts some not available in some commercial Operating Systems. It makes an excellent Internet and Intranet server thanks to its robust network services that allow it to maximize memory and work with heavy loads to deliver and maintain good response times for thousands of simultaneous user processes.
Err codemadness.org 70 i 49790 Err codemadness.org 70 i 49791FreeBSD runs a huge number of applications with ease. At the moment, it has over 32,000 ported applications and libraries with support for desktop, server, and embedded environments. with that being said, let me also add that FreeBSD is excellent for working with advanced embedded platforms. Mail and web appliances, timer servers, routers, MIPS hardware platforms, etc. You name it!
Err codemadness.org 70 i 49792 Err codemadness.org 70 i 49793FreeBSD is available to install in several ways and there are directions to follow for any method you want to use; be it via CD-ROM, over a network using NFS or FTP, or DVD.
Err codemadness.org 70 i 49794 Err codemadness.org 70 i 49795FreeBSD is easy to contribute to and all you have to do is to locate the section of the FreeBSD code base to modify and carefully do a neat job. Potential contributors are also free to improve on its artwork and documentation, among other project aspects.
Err codemadness.org 70 i 49796 Err codemadness.org 70 i 49797FreeBSD is backed by the FreeBSD Foundation, a non-profit organization that you can contribute to financially and all direct contributions are tax deductible.
Err codemadness.org 70 i 49798 Err codemadness.org 70 i 49799FreeBSD’s license allows users to incorporate the use of proprietary software which is ideal for companies interested in generating revenues. Netflix, for example, could cite this as one of the reasons for using FreeBSD servers.
Err codemadness.org 70 i 49800 Err codemadness.org 70 i 49801Why Should You Choose It over Linux?
Err codemadness.org 70 i 49802 Err codemadness.org 70 i 49803From what I’ve gathered about both FreeBSD and Linux, FreeBSD has a better performance on servers than Linux does. Yes, its packaged applications are configured to offer better a performance than Linux and it is usually running fewer services by default, there really isn’t a way to certify which is faster because the answer is dependent on the running hardware and applications and how the system is tuned.
Err codemadness.org 70 i 49804 Err codemadness.org 70 i 49805FreeBSD is reportedly more secure than Linux because of the way the whole project is developed and maintained.
Err codemadness.org 70 i 49806 Err codemadness.org 70 i 49807Unlike with Linux, the FreeBSD project is controlled by a large community of developers around the world who fall into any of these categories; core team, contributors, and committers.
Err codemadness.org 70 i 49808 Err codemadness.org 70 i 49809FreeBSD is much easier to learn and use because there aren’t a thousand and one distros to choose from with different package managers, DEs, etc.
Err codemadness.org 70 i 49810 Err codemadness.org 70 i 49811FreeBSD is more convenient to contribute to because it is the entire OS that is preserved and not just the kernel and a repo as is the case with Linux. You can easily access all of its versions since they are sorted by release numbers.
Err codemadness.org 70 i 49812 Err codemadness.org 70 i 49813Apart from the many documentations and guides that you can find online, FreeBSD has a single official documentation wherein you can find the solution to virtually any issue you will come across. So, you’re sure to find it resourceful.
Err codemadness.org 70 i 49814 Err codemadness.org 70 i 49815FreeBSD has close to no software issues compared to Linux because it has Java, is capable of running Windows programs using Wine, and can run .NET programs using Mono.
Err codemadness.org 70 i 49816 Err codemadness.org 70 i 49817FreeBSD’s ports/packages system allows you to compile software with specific configurations, thereby avoiding conflicting dependency and version issues.
Err codemadness.org 70 i 49818 Err codemadness.org 70 i 49819Both the FreeBSD and GNU/Linux project are always receiving updates. The platform you decide to go with is largely dependent on what you want to use it for, your technical know-how, willingness to learn new stuff, and ultimately your preference.
Err codemadness.org 70
i 49820 What is your take on the topic? For what reasons would you choose FreeBSD over Linux if you would? Let us know what you think about both platforms in the comments section below.
Introduction
Err codemadness.org 70
i 49825 Welcome to the 5.0x kernel exploit write-up. A few months ago, a kernel vulnerability was discovered by qwertyoruiopz and an exploit was released for BPF which involved crafting an out-of-bounds (OOB) write via use-after-free (UAF) due to the lack of proper locking. It was a fun bug, and a very trivial exploit. Sony then removed the write functionality from BPF, so that exploit was patched. However, the core issue still remained (being the lack of locking). A very similar race condition still exists in BPF past 4.55, which we will go into detail below on. The full source of the exploit can be found here.
Err codemadness.org 70
i 49826 This bug is no longer accessible however past 5.05 firmware, because the BPF driver has finally been blocked from unprivileged processes - WebKit can no longer open it. Sony also introduced a new security mitigation in 5.0x firmwares to prevent the stack pointer from pointing into user space, however we’ll go more in detail on this a bit further down.
Assumptions
Err codemadness.org 70
i 49829 Some assumptions are made of the reader’s knowledge for the writeup. The avid reader should have a basic understanding of how memory allocators work - more specifically, how malloc() and free() allocate and deallocate memory respectively. They should also be aware that devices can be issued commands concurrently, as in, one command could be received while another one is being processed via threading. An understanding of C, x86, and exploitation basics is also very helpful, though not necessarily required.
Background
Err codemadness.org 70
i 49832 This section contains some helpful information to those newer to exploitation, or are unfamiliar with device drivers, or various exploit techniques such as heap spraying and race conditions. Feel free to skip to the “A Tale of Two Free()'s” section if you’re already familiar with this material.
What Are Drivers?
Err codemadness.org 70
i 49835 There are a few ways that applications can directly communicate with the operating system. One of which is system calls, which there are over 600 of in the PS4 kernel, ~500 of which are FreeBSD - the rest are Sony-implemented. Another method is through something called “Device Drivers”. Drivers are typically used to bridge the gap between software and hardware devices (usb drives, keyboard/mouse, webcams, etc) - though they can also be used just for software purposes.
Err codemadness.org 70
i 49836 There are a few operations that a userland application can perform on a driver (if it has sufficient permissions) to interface with it after opening it. In some instances, one can read from it, write to it, or in some cases, issue more complex commands to it via the ioctl() system call. The handlers for these commands are implemented in kernel space - this is important, because any bugs that could be exploited in an ioctl handler can be used as a privilege escalation straight to ring0 - typically the most privileged state.
Err codemadness.org 70
i 49837 Drivers are often the more weaker points of an operating system for attackers, because sometimes these drivers are written by developers who don’t understand how the kernel works, or the drivers are older and thus not wise to newer attack methods.
The BPF Device Driver
Err codemadness.org 70
i 49840 If we take a look around inside of WebKit’s sandbox, we’ll find a /dev directory. While this may seem like the root device driver path, it’s a lie. Many of the drivers that the PS4 has are not exposed to this directory, but rather only ones that are needed for WebKit’s operation (for the most part). For some reason though, BPF (aka. the “Berkely Packet Filter”) device is not only exposed to WebKit’s sandbox - it also has the privileges to open the device as R/W. This is very odd, because on most systems this driver is root-only (and for good reason). If you want to read more into this, refer to my previous write-up with 4.55FW.
What Are Packet Filters?
Err codemadness.org 70
i 49843 Below is an excerpt from the 4.55 bpfwrite writeup.
Err codemadness.org 70
i 49844 Since the bug is directly in the filter system, it is important to know the basics of what packet filters are. Filters are essentially sets of pseudo-instructions that are parsed by bpf_filter() (which are ran when packets are received). While the pseudo-instruction set is fairly minimal, it allows you to do things like perform basic arithmetic operations and copy values around inside it’s buffer. Breaking down the BPF VM in it’s entirety is far beyond the scope of this write-up, just know that the code produced by it is ran in kernel mode - this is why read/write access to /dev/bpf should be privileged.
Race Conditions
Err codemadness.org 70
i 49847 Race conditions occur when two processes/threads try to access a shared resource at the same time without mutual exclusion. The problem was ultimately solved by introducing concepts such as the “mutex” or “lock”. The idea is when one thread/process tries to access a resource, it will first acquire a lock, access it, then unlock it once it’s finished. If another thread/process tries to access it while the other has the lock, it will wait until the other thread is finished. This works fairly well - when it’s used properly.
Err codemadness.org 70
i 49848 Locking is hard to get right, especially when you try to implement fine-grained locking for performance. One single instruction or line of code outside the locking window could introduce a race condition. Not all race conditions are exploitable, but some are (such as this one) - and they can give an attacker very powerful bugs to work with.
Heap Spraying
Err codemadness.org 70
i 49851 The process of heap spraying is fairly simple - allocate a bunch of memory and fill it with controlled data in a loop and pray your allocation doesn’t get stolen from underneath you. It’s a very useful technique when exploiting something such as a use-after-free(), as you can use it to get controlled data into your target object’s backing memory.
Err codemadness.org 70
i 49852 By extension, it’s useful to do this for a double free() as well, because once we have a stale reference, we can use a heap spray to control the data. Since the object will be marked “free” - the allocator will eventually provide us with control over this memory, even though something else is still using it. That is, unless, something else has already stolen the pointer from you and corrupts it - then you’ll likely get a system crash, and that’s no fun. This is one factor that adds to the variance of exploits, and typically, the smaller the object, the more likely this is to happen.
Follow the link to read more of the article
Err codemadness.org 70
i 49855 DigitalOcean
Err codemadness.org 70
i 49856 http://do.co/bsdnow
In a change which is bound to be welcomed widely, -current has gained “auto-join” for Wi-Fi networks. Peter Hessler (phessler@) has been working on this for quite some time and he wrote about it in his p2k18 hackathon report. He has committed the work from the g2k18 hackathon in Ljubljana:
Err codemadness.org 70 i 49861 Err codemadness.org 70 i 49862CVSROOT: /cvs
Err codemadness.org 70
i 49863 Module name: src
Err codemadness.org 70
i 49864 Changes by: phessler@cvs.openbsd.org 2018/07/11 14:18:09
Modified files:
Err codemadness.org 70
i 49867 sbin/ifconfig : ifconfig.8 ifconfig.c
Err codemadness.org 70
i 49868 sys/net80211 : ieee80211_ioctl.c ieee80211_ioctl.h
Err codemadness.org 70
i 49869 ieee80211_node.c ieee80211_node.h
Err codemadness.org 70
i 49870 ieee80211_var.h
Log message:
Err codemadness.org 70
i 49873 Introduce 'auto-join' to the wifi 802.11 stack.
This allows a system to remember which ESSIDs it wants to connect to, any
Err codemadness.org 70
i 49876 relevant security configuration, and switch to it when the network we are
Err codemadness.org 70
i 49877 currently connected to is no longer available.
Err codemadness.org 70
i 49878 Works when connecting and switching between WPA2/WPA1/WEP/clear encryptions.
example hostname.if:
Err codemadness.org 70
i 49881 join home wpakey password
Err codemadness.org 70
i 49882 join work wpakey mekmitasdigoat
Err codemadness.org 70
i 49883 join open-lounge
Err codemadness.org 70
i 49884 join cafe wpakey cafe2018
Err codemadness.org 70
i 49885 join "wepnetwork" nwkey "12345"
Err codemadness.org 70
i 49886 dhcp
Err codemadness.org 70
i 49887 inet6 autoconf
Err codemadness.org 70
i 49888 up
OK stsp@ reyk@
Err codemadness.org 70
i 49891 and enthusiasm from every hackroom I've been in for the last 3 years
Err codemadness.org 70
i 49892 The usage should be clear from the commit message, but basically you ‘join’ all the networks you want to auto-join as you would previously use ‘nwid’ to connect to one specific network. Then the kernel will join the network that’s actually in range and do the rest automagically for you. When you move out of range of that network you lose connectivity until you come in range of the original (where things will continue to work as you’ve been used to) or one of the other networks (where you will associate and then get a new lease).
Thanks to Peter for working on this feature - something many a Wi-Fi using OpenBSD user will be able to benefit from.
Err codemadness.org 70 i 49895 Err codemadness.org 70 i 49896There are many great options for managing FreeBSD Jails. iocage, warden and ez-jail aim to streamline the process and make it quick an easy to get going. But sometimes the tools built right into the OS are overlooked.
Err codemadness.org 70 i 49899 Err codemadness.org 70 i 49900This post goes over what is involved in creating and managing jails using only the tools built into FreeBSD.
Err codemadness.org 70 i 49901 Err codemadness.org 70 i 49902For this guide, I’m going to be putting my jails in /usr/local/jails.
Err codemadness.org 70 i 49903 Err codemadness.org 70 i 49904I’ll start with a very simple, isolated jail. Then I’ll go over how to use ZFS snapshots, and lastly nullfs mounts to share the FreeBSD base files with multiple jails.
Err codemadness.org 70 i 49905 Err codemadness.org 70 i 49906I’ll also show some examples of how to use the templating power of jail.conf to apply similar settings to all your jails.
Err codemadness.org 70 i 49907 Err codemadness.org 70 i 49908Full Jail
Err codemadness.org 70
i 49909 Make a directory for the jail, or a zfs dataset if you prefer.
Err codemadness.org 70
i 49910 Download the FreeBSD base files, and any other parts of FreeBSD you want. In this example I’ll include the 32 bit libraries as well.
Err codemadness.org 70
i 49911 Update your FreeBSD base install.
Err codemadness.org 70
i 49912 Verify your download. We’re downloading these archives over FTP after all, we should confirm that this download is valid and not tampered with. The freebsd-update IDS command verifies the installation using a PGP key which is in your base system, which was presumably installed with an ISO that you verified using the FreeBSD signed checksums. Admittedly this step is a bit of paranoia, but I think it’s prudent.
Err codemadness.org 70
i 49913 Make sure you jail has the right timezone and dns servers and a hostname in rc.conf.
Err codemadness.org 70
i 49914 Edit jail.conf with the details about your jail.
Err codemadness.org 70
i 49915 Start and login to your jail.
Err codemadness.org 70
i 49916 11 commands and a config file, but this is the most tedious way to make a jail. With a little bit of templating it can be even easier. So I’ll start by making a template. Making a template is basically the same as steps 1, 2 and 3 above, but with a different destination folder, I’ll condense them here.
Creating a template
Err codemadness.org 70
i 49919 Create a template or a ZFS dataset. If you’d like to use the zfs clone method of deploying templates, you’ll need to create a zfs dataset instead of a folder.
Err codemadness.org 70
i 49920 Update your template with freebsd-update.
Err codemadness.org 70
i 49921 Verify your install
Err codemadness.org 70
i 49922 And that’s it, now you have a fully up to date jail template. If you’ve made this template with zfs, you can easily deploy it using zfs snapshots.
Deploying a template with ZFS snapshots
Err codemadness.org 70
i 49925 Create a snapshot. My last freebsd-update to my template brought it to patch level 17, so I’ll call my snapshot p10.
Err codemadness.org 70
i 49926 Clone the snapshot to a new jail.
Err codemadness.org 70
i 49927 Configure the jail hostname.
Err codemadness.org 70
i 49928 Add the jail definition to jail.conf, make sure you have the global jail settings from jail.conf listed in the fulljail example.
Err codemadness.org 70
i 49929 Start the jail.
Err codemadness.org 70
i 49930 The downside with the zfs approach is that each jail is now a fully independent, and if you need to update your jails, you have to update them all individually. By sharing a template using nullfs mounts you can have only one copy of the base system that only needs to be updated once.
Follow the link to see the rest of the article about
Err codemadness.org 70
i 49933 Thin jails using NullFS mounts
Err codemadness.org 70
i 49934 Simplifying jail.conf
Err codemadness.org 70
i 49935 Hopefully this has helped you understand the process of how to create and manage FreeBSD jails without tools that abstract away all the details. Those tools are often quite useful, but there is always benefit in learning to do things the hard way. And in this case, the hard way doesn’t seem to be that hard after all.
Meetup in Zurich #4, July edition (July 19) – Which you likely missed, but now you know to look for the August edition!
Err codemadness.org 70
i 49940 The next two BSD-PL User group meetings in Warsaw have been scheduled for July 30th and Aug 9th @ 1830 CEST – Submit your topic proposals now
Err codemadness.org 70
i 49941 Linux Geek Books - Humble Bundle
Err codemadness.org 70
i 49942 Extend loader(8) geli support to all architectures and all disk-like devices
Err codemadness.org 70
i 49943 Upgrading from a bootpool to a single encrypted pool – skip the gptzfsboot part, and manually update your EFI partition with loader.efi
Err codemadness.org 70
i 49944 The pkgsrc 2018Q2 for Illumos is available with 18500+ binary packages
Err codemadness.org 70
i 49945 NetBSD ARM64 Images Available with SMP for RPi3 / NanoPi / Pine64 Boards
Err codemadness.org 70
i 49946 Recently released CDE 2.3.0 running on Tribblix (Illumos)
Err codemadness.org 70
i 49947 An Interview With Tech & Science Fiction Author Michael W Lucas
Err codemadness.org 70
i 49948 A reminder : MeetBSD CFP
Err codemadness.org 70
i 49949 EuroBSDCon talk acceptances have gone out, and once the tutorials are confirmed, registration will open. That will likely have happened by time you see this episode, so go register! See you in Romania
Err codemadness.org 70
i 49950 Tarsnap
Wilyarti - Adblocked on FreeBSD Continued…
Err codemadness.org 70
i 49955 Andrew - A Question and a Story
Err codemadness.org 70
i 49956 Matthew - Thanks
Err codemadness.org 70
i 49957 Brian - PCI-E Controller
Err codemadness.org 70
i 49958 Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
Celebrate our 256th episode with us. You can win a Mogics Power Bagel (not sponsored).
Err codemadness.org 70 i 49966 Err codemadness.org 70 i 49967To enter, go find the 4 episodes we did in December of 2017. In the opening, find the 4 letters in the bookshelf behind me. They spell different words in each of the 4 episodes. Send us these words in order to feedback@bsdnow.tv with the subject “bsdnow256” until August 8th, 2018 18:00 UTC and we’ll randomly draw the winner on the live show. We’ll then contact you to ship the item.
Err codemadness.org 70
i 49968 Only one item to win. All decisions are final. Better luck next time.
Introduction
Err codemadness.org 70
i 49975 This paper analyzes the impact on application performance of the design and implementation choices made in two widely used open-source schedulers: ULE, the default FreeBSD scheduler, and CFS, the default Linux scheduler. We compare ULE and CFS in otherwise identical circumstances. We have ported ULE to Linux, and use it to schedule all threads that are normally scheduled by CFS. We compare the performance of a large suite of applications on the modified kernel running ULE and on the standard Linux kernel running CFS. The observed performance differences are solely the result of scheduling decisions, and do not reflect differences in other subsystems between FreeBSD and Linux. There is no overall winner. On many workloads the two schedulers perform similarly, but for some workloads there are significant and even surprising differences. ULE may cause starvation, even when executing a single application with identical threads, but this starvation may actually lead to better application performance for some workloads. The more complex load balancing mechanism of CFS reacts more quickly to workload changes, but ULE achieves better load balance in the long run.
Err codemadness.org 70
i 49976 Operating system kernel schedulers are responsible for maintaining high utilization of hardware resources (CPU cores, memory, I/O devices) while providing fast response time to latency-sensitive applications. They have to react to workload changes, and handle large numbers of cores and threads with minimal overhead [12]. This paper provides a comparison between the default schedulers of two of the most widely deployed open-source operating systems: the Completely Fair Scheduler (CFS) used in Linux, and the ULE scheduler used in FreeBSD. Our goal is not to declare an overall winner.
Err codemadness.org 70
i 49977 In fact, we find that for some workloads ULE is better and for others CFS is better. Instead, our goal is to illustrate how differences in the design and the implementation of the two schedulers are reflected in application performance under different workloads. ULE and CFS are both designed to schedule large numbers of threads on large multicore machines. Scalability considerations have led both schedulers to adopt per-core run-queues. On a context switch, a core accesses only its local run-queue to find the next thread to run. Periodically and at select times, e.g., when a thread wakes up, both ULE and CFS perform load balancing, i.e., they try to balance the amount of work waiting in the run-queues of different cores.
Err codemadness.org 70
i 49978 ULE and CFS, however, differ greatly in their design and implementation choices. FreeBSD ULE is a simple scheduler (2,950 lines of code in FreeBSD 11.1), while Linux CFS is much more complex (17,900 lines of code in the latest LTS Linux kernel, Linux 4.9). FreeBSD run-queues are FIFO. For load balancing, FreeBSD strives to even out the number of threads per core. In Linux, a core decides which thread to run next based on prior execution time, priority, and perceived cache behavior of the threads in its runqueue. Instead of evening out the number of threads between cores, Linux strives to even out the average amount of pending work.
Performance analysis
Err codemadness.org 70
i 49981 We now analyze the impact of the per-core scheduling on the performance of 37 applications. We define “performance” as follows: for database workloads and NAS applications, we compare the number of operations per second, and for the other applications we compare “execution time”. The higher the “performance”, the better a scheduler performs. Figure 5 presents the performance difference between CFS and ULE on a single core, with percentages above 0 meaning that the application executes faster with ULE than CFS.
Err codemadness.org 70
i 49982 Overall, the scheduler has little influence on most workloads. Indeed, most applications use threads that all perform the same work, thus both CFS and ULE endup scheduling all of the threads in a round-robin fashion. The average performance difference is 1.5%, in favor of ULE. Still, scimark is 36% slower on ULE than CFS, and apache is 40% faster on ULE than CFS. Scimark is a single-threaded Java application. It launches one compute thread, and the Java runtime executes other Java system threads in the background (for the garbage collector, I/O, etc.).
Err codemadness.org 70
i 49983 When the application is executed with ULE, the compute thread can be delayed, because Java system threads are considered interactive and get priority over the computation thread. The apache workload consists of two applications: the main server (httpd) running 100 threads, and ab, a single-threaded load injector.
Err codemadness.org 70
i 49984 The performance difference between ULE and CFS is explained by different choices regarding thread preemption. In ULE, full preemption is disabled, while CFS preempts the running thread when the thread that has just been woken up has a vruntime that is much smaller than the vruntime of the currently executing thread (1ms difference in practice). In CFS, ab is preempted 2 million times during the benchmark, while it never preempted with ULE.
Err codemadness.org 70
i 49985 This behavior is explained as follows: ab starts by sending 100 requests to the httpd server, and then waits for the server to answer. When ab is woken up, it checks which requests have been processed and sends new requests to the server. Since ab is single-threaded, all requests sent to the server are sent sequentially. In ULE, ab is able to send as many new requests as it has received responses. In CFS, every request sent by ab wakes up a httpd thread, which preempts ab.
Conclusion
Err codemadness.org 70
i 49988 Scheduling threads on a multicore machine is hard. In this paper, we perform a fair comparison of the design choices of two widely used schedulers: the ULE scheduler from FreeBSD and CFS from Linux. We show that they behave differently even on simple workloads, and that no scheduler performs better than the other on all workloads.
Disclaimer:
Err codemadness.org 70
i 49993 I came across the Tuxedo Computers InfinityBook last year at the Open! Conference where Tuxedo had a small booth. Previously they came to my attention since they’re a member of the OSB Alliance on whose board I’m a member. Furthermore Tuxedo Computers are a sponsor of the OSBAR which I’m part of the organizational team.
OpenBSD on the Tuxedo InfinityBook
Err codemadness.org 70
i 49996 I’ve asked the guys over at Tuxedo Computers whether they would be interested to have some tests with *BSD done and that I could test drive one of their machines and give feedback on what works and what does not - and possibly look into it.+
Within a few weeks they shipped me a machine and last week the InfinityBook Pro 14” arrived. Awesome. Thanks already to the folks at Tuxedo Computers. The machine arrived accompanied by lot’s of swag :)
Err codemadness.org 70 i 49999 Err codemadness.org 70 i 50000The InfinityBook is a very nice machine and allows a wide range of configuration. The configuration that was shipped to me:
Err codemadness.org 70 i 50001 Err codemadness.org 70 i 50002Intel Core i7-8550U
Err codemadness.org 70
i 50003 1x 16GB RAM 2400Mhz Crucial Ballistix Sport LT
Err codemadness.org 70
i 50004 250 GB Samsung 860 EVO (M.2 SATAIII)
I used a USB-stick to boot install63.fs and re-installed the machine with OpenBSD. Full dmesg.
Err codemadness.org 70 i 50007 Err codemadness.org 70 i 50008The installation went flawlessly, the needed intel firmware is being installed after installation automatically via fw_update(1).
Err codemadness.org 70 i 50009 Err codemadness.org 70 i 50010Out of the box the graphics works and once installed the machine presents the login.
Err codemadness.org 70 i 50011 Err codemadness.org 70 i 50012Video
Err codemadness.org 70
i 50013 When X starts the display is turned off for some reason. You will need to hit fn+f12 (the key with the moon on it) then the display will go on. Aside from that little nit, X works just fine and presents one the expected resolution.
External video is working just fine as well. Either via hdmi output or via the mini displayport connector.
Err codemadness.org 70 i 50016 Err codemadness.org 70 i 50017The buttons for adjusting brightness (fn+f8 and fn+f9) are not working. Instead one has to use wsconsctl(8) to adjust the brightness.
Err codemadness.org 70 i 50018 Err codemadness.org 70 i 50019Networking
Err codemadness.org 70
i 50020 The infinityBook has built-in ethernet, driven by re(4) And for the wireless interface the iwm(4) driver is being used. Both work as expected.
ACPI
Err codemadness.org 70
i 50023 Neither suspend nor hibernate work. Reporting of battery status is bogus as well. Some of the keyboard function keys work:
LCD on/off works (fn+f2)
Err codemadness.org 70
i 50026 Keyboard backlight dimming works (fn+f4)
Err codemadness.org 70
i 50027 Volume (fn+f5 / fn+f6) works
Sound
Err codemadness.org 70
i 50030 The azalia chipset is being used for audio processing. Works as expected, volume can be controlled via buttons (fn+f5, fn+f6) or via mixerctl.
Touchpad
Err codemadness.org 70
i 50033 Can be controlled via wsconsctl(8).
Err codemadness.org 70
i 50034 So far I must say, that the InfinityBook makes a nice machine - and I’m enjoying working with it.
iXsystems
Err codemadness.org 70
i 50037 iXsystems - Its all NAS
As a copy on write (file)system, ZFS can use the transaction group (txg) numbers that are embedded in ZFS block pointers to efficiently find the differences between two txgs; this is used in, for example, ZFS bookmarks. However, as I noted at the end of my entry on block pointers, this doesn’t give us a filesystem level difference; instead, it essentially gives us a list of inodes (okay, dnodes) that changed.
Err codemadness.org 70
i 50042 In theory, turning an inode or dnode number into the path to a file is an expensive operation; you basically have to search the entire filesystem until you find it. In practice, if you’ve ever run ‘zfs diff’, you’ve likely noticed that it runs pretty fast. Nor is this the only place that ZFS quickly turns dnode numbers into full paths, as it comes up in ‘zpool status’ reports about permanent errors. At one level, zfs diff and zpool status do this so rapidly because they ask the ZFS code in the kernel to do it for them. At another level, the question is how the kernel’s ZFS code can be so fast.
Err codemadness.org 70
i 50043 The interesting and surprising answer is that ZFS cheats, in a way that makes things very fast when it works and almost always works in normal filesystems and with normal usage patterns. The cheat is that ZFS dnodes record their parent’s object number.
Err codemadness.org 70
i 50044 If you’re familiar with the twists and turns of Unix filesystems, you’re now wondering how ZFS deals with hardlinks, which can cause a file to be in several directories at once and so have several parents (and then it can be removed from some of the directories). The answer is that ZFS doesn’t; a dnode only ever tracks a single parent, and ZFS accepts that this parent information can be inaccurate. I’ll quote the comment in zfs_obj_to_pobj:
Err codemadness.org 70
i 50045 When a link is removed [the file’s] parent pointer is not changed and will be invalid. There are two cases where a link is removed but the file stays around, when it goes to the delete queue and when there are additional links.
Err codemadness.org 70
i 50046 Before I get into the details, I want to say that I appreciate the brute force elegance of this cheat. The practical reality is that most Unix files today don’t have extra hardlinks, and when they do most hardlinks are done in ways that won’t break ZFS’s parent stuff. The result is that ZFS has picked an efficient implementation that works almost all of the time; in my opinion, the great benefit we get from having it around are more than worth the infrequent cases where it fails or malfunctions. Both zfs diff and having filenames show up in zpool status permanent error reports are very useful (and there may be other cases where this gets used).
Err codemadness.org 70
i 50047 The current details are that any time you hardlink a file to somewhere or rename it, ZFS updates the file’s parent to point to the new directory. Often this will wind up with a correct parent even after all of the dust settles; for example, a common pattern is to write a file to an initial location, hardlink it to its final destination, and then remove the initial location version. In this case, the parent will be correct and you’ll get the right name.
Not too long ago I wondered if and in what situations FreeBSD could be faster than Linux and we received a good amount of informative feedback. So far, Linux rules the desktop space and FreeBSD rules the server space.
Err codemadness.org 70 i 50054 Err codemadness.org 70 i 50055In the meantime, though, what exactly is FreeBSD? And at what times should you choose it over a GNU/Linux installation? Let’s tackle these questions.
Err codemadness.org 70 i 50056 Err codemadness.org 70 i 50057FreeBSD is a free and open source derivative of BSD (Berkeley Software Distribution) with a focus on speed, stability, security, and consistency, among other features. It has been developed and maintained by a large community ever since its initial release many years ago on November 1, 1993.
Err codemadness.org 70 i 50058 Err codemadness.org 70 i 50059BSD is the version of UNIX® that was developed at the University of California in Berkeley. And being a free and open source version, “Free” being a prefix to BSD is a no-brainer.
Err codemadness.org 70 i 50060 Err codemadness.org 70 i 50061What’s FreeBSD Good For?
Err codemadness.org 70 i 50062 Err codemadness.org 70 i 50063FreeBSD offers a plethora of advanced features and even boasts some not available in some commercial Operating Systems. It makes an excellent Internet and Intranet server thanks to its robust network services that allow it to maximize memory and work with heavy loads to deliver and maintain good response times for thousands of simultaneous user processes.
Err codemadness.org 70 i 50064 Err codemadness.org 70 i 50065FreeBSD runs a huge number of applications with ease. At the moment, it has over 32,000 ported applications and libraries with support for desktop, server, and embedded environments. with that being said, let me also add that FreeBSD is excellent for working with advanced embedded platforms. Mail and web appliances, timer servers, routers, MIPS hardware platforms, etc. You name it!
Err codemadness.org 70 i 50066 Err codemadness.org 70 i 50067FreeBSD is available to install in several ways and there are directions to follow for any method you want to use; be it via CD-ROM, over a network using NFS or FTP, or DVD.
Err codemadness.org 70 i 50068 Err codemadness.org 70 i 50069FreeBSD is easy to contribute to and all you have to do is to locate the section of the FreeBSD code base to modify and carefully do a neat job. Potential contributors are also free to improve on its artwork and documentation, among other project aspects.
Err codemadness.org 70 i 50070 Err codemadness.org 70 i 50071FreeBSD is backed by the FreeBSD Foundation, a non-profit organization that you can contribute to financially and all direct contributions are tax deductible.
Err codemadness.org 70 i 50072 Err codemadness.org 70 i 50073FreeBSD’s license allows users to incorporate the use of proprietary software which is ideal for companies interested in generating revenues. Netflix, for example, could cite this as one of the reasons for using FreeBSD servers.
Err codemadness.org 70 i 50074 Err codemadness.org 70 i 50075Why Should You Choose It over Linux?
Err codemadness.org 70 i 50076 Err codemadness.org 70 i 50077From what I’ve gathered about both FreeBSD and Linux, FreeBSD has a better performance on servers than Linux does. Yes, its packaged applications are configured to offer better a performance than Linux and it is usually running fewer services by default, there really isn’t a way to certify which is faster because the answer is dependent on the running hardware and applications and how the system is tuned.
Err codemadness.org 70 i 50078 Err codemadness.org 70 i 50079FreeBSD is reportedly more secure than Linux because of the way the whole project is developed and maintained.
Err codemadness.org 70 i 50080 Err codemadness.org 70 i 50081Unlike with Linux, the FreeBSD project is controlled by a large community of developers around the world who fall into any of these categories; core team, contributors, and committers.
Err codemadness.org 70 i 50082 Err codemadness.org 70 i 50083FreeBSD is much easier to learn and use because there aren’t a thousand and one distros to choose from with different package managers, DEs, etc.
Err codemadness.org 70 i 50084 Err codemadness.org 70 i 50085FreeBSD is more convenient to contribute to because it is the entire OS that is preserved and not just the kernel and a repo as is the case with Linux. You can easily access all of its versions since they are sorted by release numbers.
Err codemadness.org 70 i 50086 Err codemadness.org 70 i 50087Apart from the many documentations and guides that you can find online, FreeBSD has a single official documentation wherein you can find the solution to virtually any issue you will come across. So, you’re sure to find it resourceful.
Err codemadness.org 70 i 50088 Err codemadness.org 70 i 50089FreeBSD has close to no software issues compared to Linux because it has Java, is capable of running Windows programs using Wine, and can run .NET programs using Mono.
Err codemadness.org 70 i 50090 Err codemadness.org 70 i 50091FreeBSD’s ports/packages system allows you to compile software with specific configurations, thereby avoiding conflicting dependency and version issues.
Err codemadness.org 70 i 50092 Err codemadness.org 70 i 50093Both the FreeBSD and GNU/Linux project are always receiving updates. The platform you decide to go with is largely dependent on what you want to use it for, your technical know-how, willingness to learn new stuff, and ultimately your preference.
Err codemadness.org 70
i 50094 What is your take on the topic? For what reasons would you choose FreeBSD over Linux if you would? Let us know what you think about both platforms in the comments section below.
Introduction
Err codemadness.org 70
i 50099 Welcome to the 5.0x kernel exploit write-up. A few months ago, a kernel vulnerability was discovered by qwertyoruiopz and an exploit was released for BPF which involved crafting an out-of-bounds (OOB) write via use-after-free (UAF) due to the lack of proper locking. It was a fun bug, and a very trivial exploit. Sony then removed the write functionality from BPF, so that exploit was patched. However, the core issue still remained (being the lack of locking). A very similar race condition still exists in BPF past 4.55, which we will go into detail below on. The full source of the exploit can be found here.
Err codemadness.org 70
i 50100 This bug is no longer accessible however past 5.05 firmware, because the BPF driver has finally been blocked from unprivileged processes - WebKit can no longer open it. Sony also introduced a new security mitigation in 5.0x firmwares to prevent the stack pointer from pointing into user space, however we’ll go more in detail on this a bit further down.
Assumptions
Err codemadness.org 70
i 50103 Some assumptions are made of the reader’s knowledge for the writeup. The avid reader should have a basic understanding of how memory allocators work - more specifically, how malloc() and free() allocate and deallocate memory respectively. They should also be aware that devices can be issued commands concurrently, as in, one command could be received while another one is being processed via threading. An understanding of C, x86, and exploitation basics is also very helpful, though not necessarily required.
Background
Err codemadness.org 70
i 50106 This section contains some helpful information to those newer to exploitation, or are unfamiliar with device drivers, or various exploit techniques such as heap spraying and race conditions. Feel free to skip to the “A Tale of Two Free()'s” section if you’re already familiar with this material.
What Are Drivers?
Err codemadness.org 70
i 50109 There are a few ways that applications can directly communicate with the operating system. One of which is system calls, which there are over 600 of in the PS4 kernel, ~500 of which are FreeBSD - the rest are Sony-implemented. Another method is through something called “Device Drivers”. Drivers are typically used to bridge the gap between software and hardware devices (usb drives, keyboard/mouse, webcams, etc) - though they can also be used just for software purposes.
Err codemadness.org 70
i 50110 There are a few operations that a userland application can perform on a driver (if it has sufficient permissions) to interface with it after opening it. In some instances, one can read from it, write to it, or in some cases, issue more complex commands to it via the ioctl() system call. The handlers for these commands are implemented in kernel space - this is important, because any bugs that could be exploited in an ioctl handler can be used as a privilege escalation straight to ring0 - typically the most privileged state.
Err codemadness.org 70
i 50111 Drivers are often the more weaker points of an operating system for attackers, because sometimes these drivers are written by developers who don’t understand how the kernel works, or the drivers are older and thus not wise to newer attack methods.
The BPF Device Driver
Err codemadness.org 70
i 50114 If we take a look around inside of WebKit’s sandbox, we’ll find a /dev directory. While this may seem like the root device driver path, it’s a lie. Many of the drivers that the PS4 has are not exposed to this directory, but rather only ones that are needed for WebKit’s operation (for the most part). For some reason though, BPF (aka. the “Berkely Packet Filter”) device is not only exposed to WebKit’s sandbox - it also has the privileges to open the device as R/W. This is very odd, because on most systems this driver is root-only (and for good reason). If you want to read more into this, refer to my previous write-up with 4.55FW.
What Are Packet Filters?
Err codemadness.org 70
i 50117 Below is an excerpt from the 4.55 bpfwrite writeup.
Err codemadness.org 70
i 50118 Since the bug is directly in the filter system, it is important to know the basics of what packet filters are. Filters are essentially sets of pseudo-instructions that are parsed by bpf_filter() (which are ran when packets are received). While the pseudo-instruction set is fairly minimal, it allows you to do things like perform basic arithmetic operations and copy values around inside it’s buffer. Breaking down the BPF VM in it’s entirety is far beyond the scope of this write-up, just know that the code produced by it is ran in kernel mode - this is why read/write access to /dev/bpf should be privileged.
Race Conditions
Err codemadness.org 70
i 50121 Race conditions occur when two processes/threads try to access a shared resource at the same time without mutual exclusion. The problem was ultimately solved by introducing concepts such as the “mutex” or “lock”. The idea is when one thread/process tries to access a resource, it will first acquire a lock, access it, then unlock it once it’s finished. If another thread/process tries to access it while the other has the lock, it will wait until the other thread is finished. This works fairly well - when it’s used properly.
Err codemadness.org 70
i 50122 Locking is hard to get right, especially when you try to implement fine-grained locking for performance. One single instruction or line of code outside the locking window could introduce a race condition. Not all race conditions are exploitable, but some are (such as this one) - and they can give an attacker very powerful bugs to work with.
Heap Spraying
Err codemadness.org 70
i 50125 The process of heap spraying is fairly simple - allocate a bunch of memory and fill it with controlled data in a loop and pray your allocation doesn’t get stolen from underneath you. It’s a very useful technique when exploiting something such as a use-after-free(), as you can use it to get controlled data into your target object’s backing memory.
Err codemadness.org 70
i 50126 By extension, it’s useful to do this for a double free() as well, because once we have a stale reference, we can use a heap spray to control the data. Since the object will be marked “free” - the allocator will eventually provide us with control over this memory, even though something else is still using it. That is, unless, something else has already stolen the pointer from you and corrupts it - then you’ll likely get a system crash, and that’s no fun. This is one factor that adds to the variance of exploits, and typically, the smaller the object, the more likely this is to happen.
Follow the link to read more of the article
Err codemadness.org 70
i 50129 DigitalOcean
Err codemadness.org 70
i 50130 http://do.co/bsdnow
In a change which is bound to be welcomed widely, -current has gained “auto-join” for Wi-Fi networks. Peter Hessler (phessler@) has been working on this for quite some time and he wrote about it in his p2k18 hackathon report. He has committed the work from the g2k18 hackathon in Ljubljana:
Err codemadness.org 70 i 50135 Err codemadness.org 70 i 50136CVSROOT: /cvs
Err codemadness.org 70
i 50137 Module name: src
Err codemadness.org 70
i 50138 Changes by: phessler@cvs.openbsd.org 2018/07/11 14:18:09
Modified files:
Err codemadness.org 70
i 50141 sbin/ifconfig : ifconfig.8 ifconfig.c
Err codemadness.org 70
i 50142 sys/net80211 : ieee80211_ioctl.c ieee80211_ioctl.h
Err codemadness.org 70
i 50143 ieee80211_node.c ieee80211_node.h
Err codemadness.org 70
i 50144 ieee80211_var.h
Log message:
Err codemadness.org 70
i 50147 Introduce 'auto-join' to the wifi 802.11 stack.
This allows a system to remember which ESSIDs it wants to connect to, any
Err codemadness.org 70
i 50150 relevant security configuration, and switch to it when the network we are
Err codemadness.org 70
i 50151 currently connected to is no longer available.
Err codemadness.org 70
i 50152 Works when connecting and switching between WPA2/WPA1/WEP/clear encryptions.
example hostname.if:
Err codemadness.org 70
i 50155 join home wpakey password
Err codemadness.org 70
i 50156 join work wpakey mekmitasdigoat
Err codemadness.org 70
i 50157 join open-lounge
Err codemadness.org 70
i 50158 join cafe wpakey cafe2018
Err codemadness.org 70
i 50159 join "wepnetwork" nwkey "12345"
Err codemadness.org 70
i 50160 dhcp
Err codemadness.org 70
i 50161 inet6 autoconf
Err codemadness.org 70
i 50162 up
OK stsp@ reyk@
Err codemadness.org 70
i 50165 and enthusiasm from every hackroom I've been in for the last 3 years
Err codemadness.org 70
i 50166 The usage should be clear from the commit message, but basically you ‘join’ all the networks you want to auto-join as you would previously use ‘nwid’ to connect to one specific network. Then the kernel will join the network that’s actually in range and do the rest automagically for you. When you move out of range of that network you lose connectivity until you come in range of the original (where things will continue to work as you’ve been used to) or one of the other networks (where you will associate and then get a new lease).
Thanks to Peter for working on this feature - something many a Wi-Fi using OpenBSD user will be able to benefit from.
Err codemadness.org 70 i 50169 Err codemadness.org 70 i 50170There are many great options for managing FreeBSD Jails. iocage, warden and ez-jail aim to streamline the process and make it quick an easy to get going. But sometimes the tools built right into the OS are overlooked.
Err codemadness.org 70 i 50173 Err codemadness.org 70 i 50174This post goes over what is involved in creating and managing jails using only the tools built into FreeBSD.
Err codemadness.org 70 i 50175 Err codemadness.org 70 i 50176For this guide, I’m going to be putting my jails in /usr/local/jails.
Err codemadness.org 70 i 50177 Err codemadness.org 70 i 50178I’ll start with a very simple, isolated jail. Then I’ll go over how to use ZFS snapshots, and lastly nullfs mounts to share the FreeBSD base files with multiple jails.
Err codemadness.org 70 i 50179 Err codemadness.org 70 i 50180I’ll also show some examples of how to use the templating power of jail.conf to apply similar settings to all your jails.
Err codemadness.org 70 i 50181 Err codemadness.org 70 i 50182Full Jail
Err codemadness.org 70
i 50183 Make a directory for the jail, or a zfs dataset if you prefer.
Err codemadness.org 70
i 50184 Download the FreeBSD base files, and any other parts of FreeBSD you want. In this example I’ll include the 32 bit libraries as well.
Err codemadness.org 70
i 50185 Update your FreeBSD base install.
Err codemadness.org 70
i 50186 Verify your download. We’re downloading these archives over FTP after all, we should confirm that this download is valid and not tampered with. The freebsd-update IDS command verifies the installation using a PGP key which is in your base system, which was presumably installed with an ISO that you verified using the FreeBSD signed checksums. Admittedly this step is a bit of paranoia, but I think it’s prudent.
Err codemadness.org 70
i 50187 Make sure you jail has the right timezone and dns servers and a hostname in rc.conf.
Err codemadness.org 70
i 50188 Edit jail.conf with the details about your jail.
Err codemadness.org 70
i 50189 Start and login to your jail.
Err codemadness.org 70
i 50190 11 commands and a config file, but this is the most tedious way to make a jail. With a little bit of templating it can be even easier. So I’ll start by making a template. Making a template is basically the same as steps 1, 2 and 3 above, but with a different destination folder, I’ll condense them here.
Creating a template
Err codemadness.org 70
i 50193 Create a template or a ZFS dataset. If you’d like to use the zfs clone method of deploying templates, you’ll need to create a zfs dataset instead of a folder.
Err codemadness.org 70
i 50194 Update your template with freebsd-update.
Err codemadness.org 70
i 50195 Verify your install
Err codemadness.org 70
i 50196 And that’s it, now you have a fully up to date jail template. If you’ve made this template with zfs, you can easily deploy it using zfs snapshots.
Deploying a template with ZFS snapshots
Err codemadness.org 70
i 50199 Create a snapshot. My last freebsd-update to my template brought it to patch level 17, so I’ll call my snapshot p10.
Err codemadness.org 70
i 50200 Clone the snapshot to a new jail.
Err codemadness.org 70
i 50201 Configure the jail hostname.
Err codemadness.org 70
i 50202 Add the jail definition to jail.conf, make sure you have the global jail settings from jail.conf listed in the fulljail example.
Err codemadness.org 70
i 50203 Start the jail.
Err codemadness.org 70
i 50204 The downside with the zfs approach is that each jail is now a fully independent, and if you need to update your jails, you have to update them all individually. By sharing a template using nullfs mounts you can have only one copy of the base system that only needs to be updated once.
Follow the link to see the rest of the article about
Err codemadness.org 70
i 50207 Thin jails using NullFS mounts
Err codemadness.org 70
i 50208 Simplifying jail.conf
Err codemadness.org 70
i 50209 Hopefully this has helped you understand the process of how to create and manage FreeBSD jails without tools that abstract away all the details. Those tools are often quite useful, but there is always benefit in learning to do things the hard way. And in this case, the hard way doesn’t seem to be that hard after all.
Meetup in Zurich #4, July edition (July 19) – Which you likely missed, but now you know to look for the August edition!
Err codemadness.org 70
i 50214 The next two BSD-PL User group meetings in Warsaw have been scheduled for July 30th and Aug 9th @ 1830 CEST – Submit your topic proposals now
Err codemadness.org 70
i 50215 Linux Geek Books - Humble Bundle
Err codemadness.org 70
i 50216 Extend loader(8) geli support to all architectures and all disk-like devices
Err codemadness.org 70
i 50217 Upgrading from a bootpool to a single encrypted pool – skip the gptzfsboot part, and manually update your EFI partition with loader.efi
Err codemadness.org 70
i 50218 The pkgsrc 2018Q2 for Illumos is available with 18500+ binary packages
Err codemadness.org 70
i 50219 NetBSD ARM64 Images Available with SMP for RPi3 / NanoPi / Pine64 Boards
Err codemadness.org 70
i 50220 Recently released CDE 2.3.0 running on Tribblix (Illumos)
Err codemadness.org 70
i 50221 An Interview With Tech & Science Fiction Author Michael W Lucas
Err codemadness.org 70
i 50222 A reminder : MeetBSD CFP
Err codemadness.org 70
i 50223 EuroBSDCon talk acceptances have gone out, and once the tutorials are confirmed, registration will open. That will likely have happened by time you see this episode, so go register! See you in Romania
Err codemadness.org 70
i 50224 Tarsnap
Wilyarti - Adblocked on FreeBSD Continued…
Err codemadness.org 70
i 50229 Andrew - A Question and a Story
Err codemadness.org 70
i 50230 Matthew - Thanks
Err codemadness.org 70
i 50231 Brian - PCI-E Controller
Err codemadness.org 70
i 50232 Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
##Headlines
Err codemadness.org 70
i 50573 ###What ZFS block pointers are and what’s in them
Err codemadness.org 70 i 50576Err codemadness.org 70 i 50578 Err codemadness.org 70 i 50579I’ve mentioned ZFS block pointers in the past; for example, when I wrote about some details of ZFS DVAs, I said that DVAs are embedded in block pointers. But I’ve never really looked carefully at what is in block pointers and what that means and implies for ZFS.
Err codemadness.org 70 i 50577
Err codemadness.org 70 i 50580Err codemadness.org 70 i 50582 Err codemadness.org 70 i 50583The very simple way to describe a ZFS block pointer is that it’s what ZFS uses in places where other filesystems would simply put a block number. Just like block numbers but unlike things like ZFS dnodes, a block pointer isn’t a separate on-disk entity; instead it’s an on disk data format and an in memory structure that shows up in other things. To quote from the (draft and old) ZFS on-disk specification (PDF):
Err codemadness.org 70 i 50581
Err codemadness.org 70 i 50584Err codemadness.org 70 i 50586 Err codemadness.org 70 i 50587A block pointer (blkptr_t) is a 128 byte ZFS structure used to physically locate, verify, and describe blocks of data on disk.
Err codemadness.org 70 i 50585
Err codemadness.org 70 i 50588Err codemadness.org 70 i 50590 Err codemadness.org 70 i 50591Block pointers are embedded in any ZFS on disk structure that points directly to other disk blocks, both for data and metadata. For instance, the dnode for a file contains block pointers that refer to either its data blocks (if it’s small enough) or indirect blocks, as I saw in this entry. However, as I discovered when I paid attention, most things in ZFS only point to dnodes indirectly, by giving their object number (either in a ZFS filesystem or in pool-wide metadata).
Err codemadness.org 70 i 50589
Err codemadness.org 70 i 50592Err codemadness.org 70 i 50594 Err codemadness.org 70 i 50595So what’s in a block pointer itself? You can find the technical details for modern ZFS in spa.h, so I’m going to give a sort of summary. A regular block pointer contains:
Err codemadness.org 70 i 50593
Err codemadness.org 70 i 50604Err codemadness.org 70 i 50606 Err codemadness.org 70 i 50607Just like basically everything else in ZFS, block pointers don’t have an explicit checksum of their contents. Instead they’re implicitly covered by the checksum of whatever they’re embedded in; the block pointers in a dnode are covered by the overall checksum of the dnode, for example. Block pointers must include a checksum for the data they point to because such data is ‘out of line’ for the containing object.
Err codemadness.org 70 i 50605
Err codemadness.org 70 i 50608Err codemadness.org 70 i 50610 Err codemadness.org 70 i 50611(The block pointers in a dnode don’t necessarily point straight to data. If there’s more than a bit of data in whatever the dnode covers, the dnode’s block pointers will instead point to some level of indirect block, which itself has some number of block pointers.)
Err codemadness.org 70 i 50609
Err codemadness.org 70 i 50612Err codemadness.org 70 i 50614 Err codemadness.org 70 i 50615There is a special type of block pointer called an embedded block pointer. Embedded block pointers directly contain up to 112 bytes of data; apart from the data, they contain only the metadata fields and a logical birth txg. As with conventional block pointers, this data is implicitly covered by the checksum of the containing object.
Err codemadness.org 70 i 50613
Err codemadness.org 70 i 50616Err codemadness.org 70 i 50618 Err codemadness.org 70 i 50619Since block pointers directly contain the address of things on disk (in the form of DVAs), they have to change any time that address changes, which means any time ZFS does its copy on write thing. This forces a change in whatever contains the block pointer, which in turn ripples up to another block pointer (whatever points to said containing thing), and so on until we eventually reach the Meta Object Set and the uberblock. How this works is a bit complicated, but ZFS is designed to generally make this a relatively shallow change with not many levels of things involved (as I discovered recently).
Err codemadness.org 70 i 50617
Err codemadness.org 70 i 50620Err codemadness.org 70 i 50622 Err codemadness.org 70 i 50623As far as I understand things, the logical birth txg of a block pointer is the transaction group in which the block pointer was allocated. Because of ZFS’s copy on write principle, this means that nothing underneath the block pointer has been updated or changed since that txg; if something changed, it would have been written to a new place on disk, which would have forced a change in at least one DVA and thus a ripple of updates that would update the logical birth txg.
Err codemadness.org 70 i 50621
Err codemadness.org 70 i 50624Err codemadness.org 70 i 50626 Err codemadness.org 70 i 50627However, this doesn’t quite mean what I used to think it meant because of ZFS’s level of indirection. If you change a file by writing data to it, you will change some of the file’s block pointers, updating their logical birth txg, and you will change the file’s dnode. However, you won’t change any block pointers and thus any logical birth txgs for the filesystem directory the file is in (or anything else up the directory tree), because the directory refers to the file through its object number, not by directly pointing to its dnode. You can still use logical birth txgs to efficiently find changes from one txg to another, but you won’t necessarily get a filesystem level view of these changes; instead, as far as I can see, you will basically get a view of what object(s) in a filesystem changed (effectively, what inode numbers changed).
Err codemadness.org 70 i 50625
Err codemadness.org 70 i 50628Err codemadness.org 70 i 50630 Err codemadness.org 70 i 50631(ZFS has an interesting hack to make things like ‘zfs diff’ work far more efficiently than you would expect in light of this, but that’s going to take yet another entry to cover.)
Err codemadness.org 70 i 50629
###Rewards of Up to $500,000 Offered for FreeBSD, OpenBSD, NetBSD, Linux Zero-Days
Err codemadness.org 70 i 50634 Err codemadness.org 70 i 50635Err codemadness.org 70 i 50636Err codemadness.org 70 i 50640 Err codemadness.org 70 i 50641Exploit broker Zerodium is offering rewards of up to $500,000 for zero-days in UNIX-based operating systems like OpenBSD, FreeBSD, NetBSD, but also for Linux distros such as Ubuntu, CentOS, Debian, and Tails.
Err codemadness.org 70 i 50639
Err codemadness.org 70 i 50637 The offer, first advertised via Twitter earlier this week, is available as part of the company’s latest zero-day acquisition drive. Zerodium is known for buying zero-days and selling them to government agencies and law enforcement.
Err codemadness.org 70 i 50638 The company runs a regular zero-day acquisition program through its website, but it often holds special drives with more substantial rewards when it needs zero-days of a specific category.
Err codemadness.org 70 i 50646Err codemadness.org 70 i 50652 Err codemadness.org 70 i 50653The US-based company held a previous drive with increased rewards for Linux zero-days in February, with rewards going as high as $45,000.
Err codemadness.org 70 i 50651
Err codemadness.org 70 i 50647 In another zero-day acquisition drive announced on Twitter this week, the company said it was looking again for Linux zero-days, but also for exploits targeting BSD systems. This time around, rewards can go up to $500,000, for the right exploit.
Err codemadness.org 70 i 50648 Zerodium told Bleeping Computer they’ll be aligning the temporary rewards for BSD systems with their usual payouts for Linux distros.
Err codemadness.org 70 i 50649 The company’s usual payouts for Linux privilege escalation exploits can range from $10,000 to $30,000. Local privilege escalation (LPE) rewards can even reach $100,000 for “an exploit with an exceptional quality and coverage,” such as, for example, a Linux kernel exploit affecting all major distributions.
Err codemadness.org 70 i 50650 Payouts for Linux remote code execution (RCE) exploits can bring in from $50,000 to $500,000 depending on the targeted software/service and its market share. The highest rewards are usually awarded for LPEs and RCEs affecting CentOS and Ubuntu distros.
Err codemadness.org 70 i 50658Err codemadness.org 70 i 50661 Err codemadness.org 70 i 50662The acquisition price of a submitted zero-day is directly tied to its requirements in terms of user interaction (no click, one click, two clicks, etc.), Zerodium said.
Err codemadness.org 70 i 50660
Err codemadness.org 70 i 50659 Other factors include the exploit reliability, its success rate, the number of vulnerabilities chained together for the final exploit to work (more chained bugs means more chances for the exploit to break unexpectedly), and the OS configuration needed for the exploit to work (exploits are valued more if they work against default OS configs).
Err codemadness.org 70 i 50667Err codemadness.org 70 i 50672 Err codemadness.org 70 i 50673“Price difference between systems is mostly driven by market shares,” Zerodium founder Chaouki Bekrar told Bleeping Computer via email.
Err codemadness.org 70 i 50671
Err codemadness.org 70 i 50668 Asked about the logic behind these acquisition drives that pay increased rewards, Bekrar told Bleeping Computer the following:
Err codemadness.org 70 i 50669 "Our aim is to always have, at any time, two or more fully functional exploits for every major software, hardware, or operating systems, meaning that from time to time we would promote a specific software/system on our social media to acquire new codes and strengthen our existing capabilities or extend them.”
Err codemadness.org 70 i 50670 “We may also react to customers’ requests and their operational needs,” Bekrar said.
Err codemadness.org 70 i 50678Err codemadness.org 70 i 50681 Err codemadness.org 70 i 50682 Err codemadness.org 70 i 50683 Err codemadness.org 70 i 50684Since Zerodium drew everyone’s attention to the exploit brokerage market in 2015, the market has gotten more and more crowded, but also more sleazy, with some companies being accused of selling zero-days to government agencies in countries with oppressive or dictatorial regimes, where they are often used against political oponents, journalists, and dissidents, instead of going after real criminals.
Err codemadness.org 70 i 50680
Err codemadness.org 70 i 50679 The latest company who broke into the zero-day brokerage market is Crowdfense, who recently launched an acquisition program with prizes of $10 million, of which it already paid $4.5 million to researchers.
Digital Ocean
Err codemadness.org 70
i 50687 http://do.co/bsdnow
Err codemadness.org 70 i 50692Err codemadness.org 70 i 50694 Err codemadness.org 70 i 50695The KDE-FreeBSD team (a half-dozen hardy individuals, with varying backgrounds and varying degrees of involvement depending on how employment is doing) has a status message in the #kde-freebsd channel on freenode. Right now it looks like this:
Err codemadness.org 70 i 50693
http://FreeBSD.kde.org | Bleeding edge Err codemadness.org 70
i 50696 http://FreeBSD.kde.org/area51.php | Released: Qt 5.10.1, KDE SC 4.14.3, KF5 5.46.0, Applications 18.04.1, Plasma-5.12.5, Kdevelop-5.2.1, Digikam-5.9.0 Err codemadness.org 70
i 50697 Err codemadness.org 70
i 50698 Err codemadness.org 70
i 50699 Err codemadness.org 70 i 50700Err codemadness.org 70 i 50702 Err codemadness.org 70 i 50703It’s been a while since I wrote about KDE on FreeBSD, what with Calamares and third-party software happening as well. We’re better at keeping the IRC topic up-to-date than a lot of other sources of information (e.g. the FreeBSD quarterly reports, or the f.k.o website, which I’ll just dash off and update after writing this).
Err codemadness.org 70 i 50701
Err codemadness.org 70 i 50713Err codemadness.org 70 i 50715 Err codemadness.org 70 i 50716So we’re mostly-up-to-date, and mostly all packaged up and ready to go. Much of my day is spent in VMs packaged by other people, but it’s good to have a full KDE developer environment outside of them as well. (PS. Gotta hand it to Tomasz for the amazing application for downloading and displaying a flamingo … niche usecases FTW)
Err codemadness.org 70 i 50714
##News Roundup
Err codemadness.org 70
i 50719 ###New FreeBSD Core Team Elected
Err codemadness.org 70 i 50722Err codemadness.org 70 i 50725 Err codemadness.org 70 i 50726Active committers to the project have elected your tenth FreeBSD Core
Err codemadness.org 70 i 50724
Err codemadness.org 70 i 50723 Team.
Err codemadness.org 70 i 50739Err codemadness.org 70 i 50741 Err codemadness.org 70 i 50742Let’s extend our gratitude to the outgoing Core Team members:
Err codemadness.org 70 i 50740
Err codemadness.org 70 i 50751Err codemadness.org 70 i 50754 Err codemadness.org 70 i 50755Matthew, after having served as the Core Team Secretary for the past
Err codemadness.org 70 i 50753
Err codemadness.org 70 i 50752 four years, will be stepping down from that role.
Err codemadness.org 70 i 50756Err codemadness.org 70 i 50759 Err codemadness.org 70 i 50760The Core Team would also like to thank Dag-Erling Smørgrav for running a
Err codemadness.org 70 i 50758
Err codemadness.org 70 i 50757 flawless election.
Err codemadness.org 70 i 50769Err codemadness.org 70 i 50771 Err codemadness.org 70 i 50772The NetBSD Foundation is pleased to announce a summer 2018 contract with Philip Nelson (phil%NetBSD.org@localhost) to update the IEEE 802.11 stack basing the update on the FreeBSD current code. The goals of the project are:
Err codemadness.org 70 i 50770
Err codemadness.org 70 i 50781Err codemadness.org 70 i 50784 Err codemadness.org 70 i 50785Status reports will be posted to tech-net%NetBSD.org@localhost every other week
Err codemadness.org 70 i 50783
Err codemadness.org 70 i 50782 while the contract is active.
iXsystems
Err codemadness.org 70 i 50788 Err codemadness.org 70 i 50789###Poor Man’s CI - Hosted CI for BSD with shell scripting and duct tape
Err codemadness.org 70 i 50790 Err codemadness.org 70 i 50791Err codemadness.org 70 i 50792Err codemadness.org 70 i 50794 Err codemadness.org 70 i 50795Poor Man’s CI (PMCI - Poor Man’s Continuous Integration) is a collection of scripts that taken together work as a simple CI solution that runs on Google Cloud. While there are many advanced hosted CI systems today, and many of them are free for open source projects, none of them seem to offer a solution for the BSD operating systems (FreeBSD, NetBSD, OpenBSD, etc.)
Err codemadness.org 70 i 50793
Err codemadness.org 70 i 50796Err codemadness.org 70 i 50798 Err codemadness.org 70 i 50799The architecture of Poor Man’s CI is system agnostic. However in the implementation provided in this repository the only supported systems are FreeBSD and NetBSD. Support for additional systems is possible.
Err codemadness.org 70 i 50797
Err codemadness.org 70 i 50800Err codemadness.org 70 i 50802 Err codemadness.org 70 i 50803Poor Man’s CI runs on the Google Cloud. It is possible to set it up so that the service fits within the Google Cloud “Always Free” limits. In doing so the provided CI is not only hosted, but is also free! (Disclaimer: I am not affiliated with Google and do not otherwise endorse their products.)
Err codemadness.org 70 i 50801
Err codemadness.org 70 i 50808Err codemadness.org 70 i 50810 Err codemadness.org 70 i 50811A CI solution listens for “commit” (or more usually “push”) events, builds the associated repository at the appropriate place in its history and reports the results. Poor Man’s CI implements this very basic CI scenario using a simple architecture, which we present in this section.
Err codemadness.org 70 i 50809
Poor Man’s CI consists of the following components and their interactions:
Err codemadness.org 70 i 50814Controller: Controls the overall process of accepting GitHub push events and starting builds. The Controller runs in the Cloud Functions environment and is implemented by the files in the controller source directory. It consists of the following components:
Err codemadness.org 70 i 50817PubSub Topics:
Err codemadness.org 70 i 50827 Err codemadness.org 70 i 50828builder: A builder is a Compute Engine instance that performs a build of a repository and shuts down when the build is complete. A builder is instantiated from a VM image and a startx (startup-exit) script.
Err codemadness.org 70 i 50838 Err codemadness.org 70 i 50839Build Logs: A Storage bucket that contains the logs of builds performed by builder instances.
Err codemadness.org 70 i 50843 Err codemadness.org 70 i 50844Logging Sink: A Logging Sink captures builder instance terminate and delete events and posts them into the doneq.
Err codemadness.org 70 i 50848 Err codemadness.org 70 i 50849BUGS
Err codemadness.org 70 i 50853 Err codemadness.org 70 i 50854Err codemadness.org 70 i 50858Err codemadness.org 70 i 50860 Err codemadness.org 70 i 50861The Builder Pool is currently implemented as a PubSub; messages in the PubSub contain the names of available builder instances. Unfortunately a PubSub retains its messages for a maximum of 7 days. It is therefore possible that messages will be discarded and that your PMCI deployment will suddenly find itself out of builder instances. If this happens you can reseed the Builder Pool by running the commands below. However this is a serious BUG that should be fixed. For a related discussion see https://tinyurl.com/ybkycuub.
Err codemadness.org 70 i 50859
$ ./pmci queue_post poolq builder0
Err codemadness.org 70
i 50862 # ./pmci queue_post poolq builder1
Err codemadness.org 70
i 50863 # ... repeat for as many builders as you want
Err codemadness.org 70 i 50866Err codemadness.org 70 i 50868 Err codemadness.org 70 i 50869The Dispatcher is implemented as a Retry Background Cloud Function. It accepts work messages from the workq and attempts to pull a free name from the poolq. If that fails it returns an error, which instructs the infrastructure to retry. Because the infrastructure does not provide any retry controls, this currently happens immediately and the Dispatcher spins unproductively. This is currently mitigated by a “sleep” (setTimeout), but the Cloud Functions system still counts the Function as running and charges it accordingly. While this fits within the “Always Free” limits, it is something that should eventually be fixed (perhaps by the PubSub team). For a related discussion see https://tinyurl.com/yb2vbwfd.
Err codemadness.org 70 i 50867
Err codemadness.org 70 i 50874Err codemadness.org 70 i 50878 Err codemadness.org 70 i 50879Did you know that you can check what a process is doing by pressing CTRL+T?
Err codemadness.org 70 i 50877
Err codemadness.org 70 i 50875 Has it happened to you before that you were waiting for something to be finished that can take a lot of time, but there is no easy way to check the status. Like a dd, cp, mv and many others. All you have to do is press CTRL+T where the process is running. This will output what’s happening and will not interrupt or mess with it in any way. This causes the operating system to output the SIGINFO signal.
Err codemadness.org 70 i 50876 On FreeBSD it looks like this:
ping pingtest.com Err codemadness.org 70
i 50880 PING pingtest.com (5.22.149.135): 56 data bytes Err codemadness.org 70
i 50881 64 bytes from 5.22.149.135: icmp_seq=0 ttl=51 time=86.232 ms Err codemadness.org 70
i 50882 64 bytes from 5.22.149.135: icmp_seq=1 ttl=51 time=85.477 ms Err codemadness.org 70
i 50883 64 bytes from 5.22.149.135: icmp_seq=2 ttl=51 time=85.493 ms Err codemadness.org 70
i 50884 64 bytes from 5.22.149.135: icmp_seq=3 ttl=51 time=85.211 ms Err codemadness.org 70
i 50885 64 bytes from 5.22.149.135: icmp_seq=4 ttl=51 time=86.002 ms Err codemadness.org 70
i 50886 load: 1.12 cmd: ping 94371 [select] 4.70r 0.00u 0.00s 0% 2500k Err codemadness.org 70
i 50887 5/5 packets received (100.0%) 85.211 min / 85.683 avg / 86.232 max Err codemadness.org 70
i 50888 64 bytes from 5.22.149.135: icmp_seq=5 ttl=51 time=85.725 ms Err codemadness.org 70
i 50889 64 bytes from 5.22.149.135: icmp_seq=6 ttl=51 time=85.510 ms Err codemadness.org 70
i 50890 Err codemadness.org 70
i 50891 Err codemadness.org 70
i 50892 Err codemadness.org 70 i 50893Err codemadness.org 70 i 50895 Err codemadness.org 70 i 50896As you can see it not only outputs the name of the running command but the following parameters as well:
Err codemadness.org 70 i 50894
94371 – PID Err codemadness.org 70
i 50897 4.70r – since when is the process running Err codemadness.org 70
i 50898 0.00u – user time Err codemadness.org 70
i 50899 0.00s – system time Err codemadness.org 70
i 50900 0% – CPU usage Err codemadness.org 70
i 50901 2500k – resident set size of the process or RSS Err codemadness.org 70
i 50902 `` Err codemadness.org 70
i 50903 Err codemadness.org 70
i 50904 > An even better example is with the following cp command: Err codemadness.org 70
i 50905 Err codemadness.org 70
i 50906 Err codemadness.org 70
i 50907 Err codemadness.org 70
i 50908 cp FreeBSD-11.1-RELEASE-amd64-dvd1.iso /dev/null
Err codemadness.org 70
i 50909 load: 0.99 cmd: cp 94412 [runnable] 1.61r 0.00u 0.39s 3% 3100k
Err codemadness.org 70
i 50910 FreeBSD-11.1-RELEASE-amd64-dvd1.iso -> /dev/null 15%
Err codemadness.org 70
i 50911 load: 0.91 cmd: cp 94412 [runnable] 2.91r 0.00u 0.80s 6% 3104k
Err codemadness.org 70
i 50912 FreeBSD-11.1-RELEASE-amd64-dvd1.iso -> /dev/null 32%
Err codemadness.org 70
i 50913 load: 0.91 cmd: cp 94412 [runnable] 4.20r 0.00u 1.23s 9% 3104k
Err codemadness.org 70
i 50914 FreeBSD-11.1-RELEASE-amd64-dvd1.iso -> /dev/null 49%
Err codemadness.org 70
i 50915 load: 0.91 cmd: cp 94412 [runnable] 5.43r 0.00u 1.64s 11% 3104k
Err codemadness.org 70
i 50916 FreeBSD-11.1-RELEASE-amd64-dvd1.iso -> /dev/null 64%
Err codemadness.org 70
i 50917 load: 1.07 cmd: cp 94412 [runnable] 6.65r 0.00u 2.05s 13% 3104k
Err codemadness.org 70
i 50918 FreeBSD-11.1-RELEASE-amd64-dvd1.iso -> /dev/null 79%
Err codemadness.org 70
i 50919 load: 1.07 cmd: cp 94412 [runnable] 7.87r 0.00u 2.43s 15% 3104k
Err codemadness.org 70
i 50920 FreeBSD-11.1-RELEASE-amd64-dvd1.iso -> /dev/null 95%
Err codemadness.org 70
i 50923 > I prcessed CTRL+T six times. Without that, all the output would have been is the first line. Err codemadness.org 70
i 50924 Err codemadness.org 70
i 50925 > Another example how the process is changing states: Err codemadness.org 70
i 50926 Err codemadness.org 70
i 50927 Err codemadness.org 70
i 50928 Err codemadness.org 70
i 50929 wget https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-IMAGES/11.1/FreeBSD-11.1-RELEASE-amd64-dvd1.iso
Err codemadness.org 70
i 50930 –2018-06-17 18:47:48– https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-IMAGES/11.1/FreeBSD-11.1-RELEASE-amd64-dvd1.iso
Err codemadness.org 70
i 50931 Resolving download.freebsd.org (download.freebsd.org)… 96.47.72.72, 2610:1c1:1:606c::15:0
Err codemadness.org 70
i 50932 Connecting to download.freebsd.org (download.freebsd.org)|96.47.72.72|:443… connected.
Err codemadness.org 70
i 50933 HTTP request sent, awaiting response… 200 OK
Err codemadness.org 70
i 50934 Length: 3348465664 (3.1G) [application/octet-stream]
Err codemadness.org 70
i 50935 Saving to: ‘FreeBSD-11.1-RELEASE-amd64-dvd1.iso’
FreeBSD-11.1-RELEASE-amd64-dvd1.iso 1%[> ] 41.04M 527KB/s eta 26m 49sload: 4.95 cmd: wget 10152 waiting 0.48u 0.72s
Err codemadness.org 70
i 50938 FreeBSD-11.1-RELEASE-amd64-dvd1.iso 1%[> ] 49.41M 659KB/s eta 25m 29sload: 12.64 cmd: wget 10152 waiting 0.55u 0.85s
Err codemadness.org 70
i 50939 FreeBSD-11.1-RELEASE-amd64-dvd1.iso 2%[=> ] 75.58M 6.31MB/s eta 20m 6s load: 11.71 cmd: wget 10152 running 0.73u 1.19s
Err codemadness.org 70
i 50940 FreeBSD-11.1-RELEASE-amd64-dvd1.iso 2%[=> ] 85.63M 6.83MB/s eta 18m 58sload: 11.71 cmd: wget 10152 waiting 0.80u 1.32s
Err codemadness.org 70
i 50941 FreeBSD-11.1-RELEASE-amd64-dvd1.iso 14%[==============> ] 460.23M 7.01MB/s eta 9m 0s 1
Err codemadness.org 70
i 50944 > The bad news is that CTRl+T doesn’t work with Linux kernel, but you can use it on MacOS/OS-X: Err codemadness.org 70
i 50945 Err codemadness.org 70
i 50946 Err codemadness.org 70
i 50947 Err codemadness.org 70
i 50948 —> Fetching distfiles for gmp
Err codemadness.org 70
i 50949 —> Attempting to fetch gmp-6.1.2.tar.bz2 from https://distfiles.macports.org/gmp
Err codemadness.org 70
i 50950 —> Verifying checksums for gmp
Err codemadness.org 70
i 50951 —> Extracting gmp
Err codemadness.org 70
i 50952 —> Applying patches to gmp
Err codemadness.org 70
i 50953 —> Configuring gmp
Err codemadness.org 70
i 50954 load: 2.81 cmd: clang 74287 running 0.31u 0.28s
Err codemadness.org 70
i 50957 > PS: If I recall correctly Feld showed me CTRL+T, thank you! Err codemadness.org 70
i 50958 Err codemadness.org 70
i 50959 *** Err codemadness.org 70
i 50960 Err codemadness.org 70
i 50961 Err codemadness.org 70
i 50962 ##Beastie Bits Err codemadness.org 70
i 50963 + [Half billion tries for a HAMMER2 bug](http://lists.dragonflybsd.org/pipermail/commits/2018-May/672263.html) Err codemadness.org 70
i 50964 + OpenBSD with various Desktops Err codemadness.org 70
i 50965 + [OpenBSD 6.3 running twm window manager](https://youtu.be/v6XeC5wU2s4) Err codemadness.org 70
i 50966 + [OpenBSD 6.3 jwm and rox desktop](https://youtu.be/jlSK2oi7CBc) Err codemadness.org 70
i 50967 + [OpenBSD 6.3 cwm youtube video](https://youtu.be/mgqNyrP2CPs) Err codemadness.org 70
i 50968 + [pf: Increase default state table size](https://svnweb.freebsd.org/base?view=revision&revision=336221) Err codemadness.org 70
i 50969 *** Err codemadness.org 70
i 50970 Err codemadness.org 70
i 50971 **Tarsnap** Err codemadness.org 70
i 50972 Err codemadness.org 70
i 50973 ##Feedback/Questions Err codemadness.org 70
i 50974 + Ben Sims - [Full feed?](http://dpaste.com/3XVH91T#wrap) Err codemadness.org 70
i 50975 + Scott - [Questions and Comments](http://dpaste.com/08P34YN#wrap) Err codemadness.org 70
i 50976 + Troels - [Features of FreeBSD 11.2 that deserve a mention](http://dpaste.com/3DDPEC2#wrap) Err codemadness.org 70
i 50977 + [Fred - Show Ideas](http://dpaste.com/296ZA0P#wrap) Err codemadness.org 70
i 50978 *** Err codemadness.org 70
i 50979 Err codemadness.org 70
i 50980 - Send questions, comments, show ideas/topics, or stories you want mentioned on the show to [feedback@bsdnow.tv](mailto:feedback@bsdnow.tv) Err codemadness.org 70
i 50981 *** Err codemadness.org 70
i 50982 Err codemadness.org 70
i 50983 *** Err codemadness.org 70
i 50984 Err codemadness.org 70
i 50985 iXsystems [It's all NAS](https://www.ixsystems.com/blog/its-all-nas/) Err codemadness.org 70
i 50986 ]]> Err codemadness.org 70
i 50987 ##Headlines
Err codemadness.org 70
i 50992 ###What ZFS block pointers are and what’s in them
Err codemadness.org 70 i 50995Err codemadness.org 70 i 50997 Err codemadness.org 70 i 50998I’ve mentioned ZFS block pointers in the past; for example, when I wrote about some details of ZFS DVAs, I said that DVAs are embedded in block pointers. But I’ve never really looked carefully at what is in block pointers and what that means and implies for ZFS.
Err codemadness.org 70 i 50996
Err codemadness.org 70 i 50999Err codemadness.org 70 i 51001 Err codemadness.org 70 i 51002The very simple way to describe a ZFS block pointer is that it’s what ZFS uses in places where other filesystems would simply put a block number. Just like block numbers but unlike things like ZFS dnodes, a block pointer isn’t a separate on-disk entity; instead it’s an on disk data format and an in memory structure that shows up in other things. To quote from the (draft and old) ZFS on-disk specification (PDF):
Err codemadness.org 70 i 51000
Err codemadness.org 70 i 51003Err codemadness.org 70 i 51005 Err codemadness.org 70 i 51006A block pointer (blkptr_t) is a 128 byte ZFS structure used to physically locate, verify, and describe blocks of data on disk.
Err codemadness.org 70 i 51004
Err codemadness.org 70 i 51007Err codemadness.org 70 i 51009 Err codemadness.org 70 i 51010Block pointers are embedded in any ZFS on disk structure that points directly to other disk blocks, both for data and metadata. For instance, the dnode for a file contains block pointers that refer to either its data blocks (if it’s small enough) or indirect blocks, as I saw in this entry. However, as I discovered when I paid attention, most things in ZFS only point to dnodes indirectly, by giving their object number (either in a ZFS filesystem or in pool-wide metadata).
Err codemadness.org 70 i 51008
Err codemadness.org 70 i 51011Err codemadness.org 70 i 51013 Err codemadness.org 70 i 51014So what’s in a block pointer itself? You can find the technical details for modern ZFS in spa.h, so I’m going to give a sort of summary. A regular block pointer contains:
Err codemadness.org 70 i 51012
Err codemadness.org 70 i 51023Err codemadness.org 70 i 51025 Err codemadness.org 70 i 51026Just like basically everything else in ZFS, block pointers don’t have an explicit checksum of their contents. Instead they’re implicitly covered by the checksum of whatever they’re embedded in; the block pointers in a dnode are covered by the overall checksum of the dnode, for example. Block pointers must include a checksum for the data they point to because such data is ‘out of line’ for the containing object.
Err codemadness.org 70 i 51024
Err codemadness.org 70 i 51027Err codemadness.org 70 i 51029 Err codemadness.org 70 i 51030(The block pointers in a dnode don’t necessarily point straight to data. If there’s more than a bit of data in whatever the dnode covers, the dnode’s block pointers will instead point to some level of indirect block, which itself has some number of block pointers.)
Err codemadness.org 70 i 51028
Err codemadness.org 70 i 51031Err codemadness.org 70 i 51033 Err codemadness.org 70 i 51034There is a special type of block pointer called an embedded block pointer. Embedded block pointers directly contain up to 112 bytes of data; apart from the data, they contain only the metadata fields and a logical birth txg. As with conventional block pointers, this data is implicitly covered by the checksum of the containing object.
Err codemadness.org 70 i 51032
Err codemadness.org 70 i 51035Err codemadness.org 70 i 51037 Err codemadness.org 70 i 51038Since block pointers directly contain the address of things on disk (in the form of DVAs), they have to change any time that address changes, which means any time ZFS does its copy on write thing. This forces a change in whatever contains the block pointer, which in turn ripples up to another block pointer (whatever points to said containing thing), and so on until we eventually reach the Meta Object Set and the uberblock. How this works is a bit complicated, but ZFS is designed to generally make this a relatively shallow change with not many levels of things involved (as I discovered recently).
Err codemadness.org 70 i 51036
Err codemadness.org 70 i 51039Err codemadness.org 70 i 51041 Err codemadness.org 70 i 51042As far as I understand things, the logical birth txg of a block pointer is the transaction group in which the block pointer was allocated. Because of ZFS’s copy on write principle, this means that nothing underneath the block pointer has been updated or changed since that txg; if something changed, it would have been written to a new place on disk, which would have forced a change in at least one DVA and thus a ripple of updates that would update the logical birth txg.
Err codemadness.org 70 i 51040
Err codemadness.org 70 i 51043Err codemadness.org 70 i 51045 Err codemadness.org 70 i 51046However, this doesn’t quite mean what I used to think it meant because of ZFS’s level of indirection. If you change a file by writing data to it, you will change some of the file’s block pointers, updating their logical birth txg, and you will change the file’s dnode. However, you won’t change any block pointers and thus any logical birth txgs for the filesystem directory the file is in (or anything else up the directory tree), because the directory refers to the file through its object number, not by directly pointing to its dnode. You can still use logical birth txgs to efficiently find changes from one txg to another, but you won’t necessarily get a filesystem level view of these changes; instead, as far as I can see, you will basically get a view of what object(s) in a filesystem changed (effectively, what inode numbers changed).
Err codemadness.org 70 i 51044
Err codemadness.org 70 i 51047Err codemadness.org 70 i 51049 Err codemadness.org 70 i 51050(ZFS has an interesting hack to make things like ‘zfs diff’ work far more efficiently than you would expect in light of this, but that’s going to take yet another entry to cover.)
Err codemadness.org 70 i 51048
###Rewards of Up to $500,000 Offered for FreeBSD, OpenBSD, NetBSD, Linux Zero-Days
Err codemadness.org 70 i 51053 Err codemadness.org 70 i 51054Err codemadness.org 70 i 51055Err codemadness.org 70 i 51059 Err codemadness.org 70 i 51060Exploit broker Zerodium is offering rewards of up to $500,000 for zero-days in UNIX-based operating systems like OpenBSD, FreeBSD, NetBSD, but also for Linux distros such as Ubuntu, CentOS, Debian, and Tails.
Err codemadness.org 70 i 51058
Err codemadness.org 70 i 51056 The offer, first advertised via Twitter earlier this week, is available as part of the company’s latest zero-day acquisition drive. Zerodium is known for buying zero-days and selling them to government agencies and law enforcement.
Err codemadness.org 70 i 51057 The company runs a regular zero-day acquisition program through its website, but it often holds special drives with more substantial rewards when it needs zero-days of a specific category.
Err codemadness.org 70 i 51065Err codemadness.org 70 i 51071 Err codemadness.org 70 i 51072The US-based company held a previous drive with increased rewards for Linux zero-days in February, with rewards going as high as $45,000.
Err codemadness.org 70 i 51070
Err codemadness.org 70 i 51066 In another zero-day acquisition drive announced on Twitter this week, the company said it was looking again for Linux zero-days, but also for exploits targeting BSD systems. This time around, rewards can go up to $500,000, for the right exploit.
Err codemadness.org 70 i 51067 Zerodium told Bleeping Computer they’ll be aligning the temporary rewards for BSD systems with their usual payouts for Linux distros.
Err codemadness.org 70 i 51068 The company’s usual payouts for Linux privilege escalation exploits can range from $10,000 to $30,000. Local privilege escalation (LPE) rewards can even reach $100,000 for “an exploit with an exceptional quality and coverage,” such as, for example, a Linux kernel exploit affecting all major distributions.
Err codemadness.org 70 i 51069 Payouts for Linux remote code execution (RCE) exploits can bring in from $50,000 to $500,000 depending on the targeted software/service and its market share. The highest rewards are usually awarded for LPEs and RCEs affecting CentOS and Ubuntu distros.
Err codemadness.org 70 i 51077Err codemadness.org 70 i 51080 Err codemadness.org 70 i 51081The acquisition price of a submitted zero-day is directly tied to its requirements in terms of user interaction (no click, one click, two clicks, etc.), Zerodium said.
Err codemadness.org 70 i 51079
Err codemadness.org 70 i 51078 Other factors include the exploit reliability, its success rate, the number of vulnerabilities chained together for the final exploit to work (more chained bugs means more chances for the exploit to break unexpectedly), and the OS configuration needed for the exploit to work (exploits are valued more if they work against default OS configs).
Err codemadness.org 70 i 51086Err codemadness.org 70 i 51091 Err codemadness.org 70 i 51092“Price difference between systems is mostly driven by market shares,” Zerodium founder Chaouki Bekrar told Bleeping Computer via email.
Err codemadness.org 70 i 51090
Err codemadness.org 70 i 51087 Asked about the logic behind these acquisition drives that pay increased rewards, Bekrar told Bleeping Computer the following:
Err codemadness.org 70 i 51088 "Our aim is to always have, at any time, two or more fully functional exploits for every major software, hardware, or operating systems, meaning that from time to time we would promote a specific software/system on our social media to acquire new codes and strengthen our existing capabilities or extend them.”
Err codemadness.org 70 i 51089 “We may also react to customers’ requests and their operational needs,” Bekrar said.
Err codemadness.org 70 i 51097Err codemadness.org 70 i 51100 Err codemadness.org 70 i 51101 Err codemadness.org 70 i 51102 Err codemadness.org 70 i 51103Since Zerodium drew everyone’s attention to the exploit brokerage market in 2015, the market has gotten more and more crowded, but also more sleazy, with some companies being accused of selling zero-days to government agencies in countries with oppressive or dictatorial regimes, where they are often used against political oponents, journalists, and dissidents, instead of going after real criminals.
Err codemadness.org 70 i 51099
Err codemadness.org 70 i 51098 The latest company who broke into the zero-day brokerage market is Crowdfense, who recently launched an acquisition program with prizes of $10 million, of which it already paid $4.5 million to researchers.
Digital Ocean
Err codemadness.org 70
i 51106 http://do.co/bsdnow
Err codemadness.org 70 i 51111Err codemadness.org 70 i 51113 Err codemadness.org 70 i 51114The KDE-FreeBSD team (a half-dozen hardy individuals, with varying backgrounds and varying degrees of involvement depending on how employment is doing) has a status message in the #kde-freebsd channel on freenode. Right now it looks like this:
Err codemadness.org 70 i 51112
http://FreeBSD.kde.org | Bleeding edge Err codemadness.org 70
i 51115 http://FreeBSD.kde.org/area51.php | Released: Qt 5.10.1, KDE SC 4.14.3, KF5 5.46.0, Applications 18.04.1, Plasma-5.12.5, Kdevelop-5.2.1, Digikam-5.9.0 Err codemadness.org 70
i 51116 Err codemadness.org 70
i 51117 Err codemadness.org 70
i 51118 Err codemadness.org 70 i 51119Err codemadness.org 70 i 51121 Err codemadness.org 70 i 51122It’s been a while since I wrote about KDE on FreeBSD, what with Calamares and third-party software happening as well. We’re better at keeping the IRC topic up-to-date than a lot of other sources of information (e.g. the FreeBSD quarterly reports, or the f.k.o website, which I’ll just dash off and update after writing this).
Err codemadness.org 70 i 51120
Err codemadness.org 70 i 51132Err codemadness.org 70 i 51134 Err codemadness.org 70 i 51135So we’re mostly-up-to-date, and mostly all packaged up and ready to go. Much of my day is spent in VMs packaged by other people, but it’s good to have a full KDE developer environment outside of them as well. (PS. Gotta hand it to Tomasz for the amazing application for downloading and displaying a flamingo … niche usecases FTW)
Err codemadness.org 70 i 51133
##News Roundup
Err codemadness.org 70
i 51138 ###New FreeBSD Core Team Elected
Err codemadness.org 70 i 51141Err codemadness.org 70 i 51144 Err codemadness.org 70 i 51145Active committers to the project have elected your tenth FreeBSD Core
Err codemadness.org 70 i 51143
Err codemadness.org 70 i 51142 Team.
Err codemadness.org 70 i 51158Err codemadness.org 70 i 51160 Err codemadness.org 70 i 51161Let’s extend our gratitude to the outgoing Core Team members:
Err codemadness.org 70 i 51159
Err codemadness.org 70 i 51170Err codemadness.org 70 i 51173 Err codemadness.org 70 i 51174Matthew, after having served as the Core Team Secretary for the past
Err codemadness.org 70 i 51172
Err codemadness.org 70 i 51171 four years, will be stepping down from that role.
Err codemadness.org 70 i 51175Err codemadness.org 70 i 51178 Err codemadness.org 70 i 51179The Core Team would also like to thank Dag-Erling Smørgrav for running a
Err codemadness.org 70 i 51177
Err codemadness.org 70 i 51176 flawless election.
Err codemadness.org 70 i 51188Err codemadness.org 70 i 51190 Err codemadness.org 70 i 51191The NetBSD Foundation is pleased to announce a summer 2018 contract with Philip Nelson (phil%NetBSD.org@localhost) to update the IEEE 802.11 stack basing the update on the FreeBSD current code. The goals of the project are:
Err codemadness.org 70 i 51189
Err codemadness.org 70 i 51200Err codemadness.org 70 i 51203 Err codemadness.org 70 i 51204Status reports will be posted to tech-net%NetBSD.org@localhost every other week
Err codemadness.org 70 i 51202
Err codemadness.org 70 i 51201 while the contract is active.
iXsystems
Err codemadness.org 70 i 51207 Err codemadness.org 70 i 51208###Poor Man’s CI - Hosted CI for BSD with shell scripting and duct tape
Err codemadness.org 70 i 51209 Err codemadness.org 70 i 51210Err codemadness.org 70 i 51211Err codemadness.org 70 i 51213 Err codemadness.org 70 i 51214Poor Man’s CI (PMCI - Poor Man’s Continuous Integration) is a collection of scripts that taken together work as a simple CI solution that runs on Google Cloud. While there are many advanced hosted CI systems today, and many of them are free for open source projects, none of them seem to offer a solution for the BSD operating systems (FreeBSD, NetBSD, OpenBSD, etc.)
Err codemadness.org 70 i 51212
Err codemadness.org 70 i 51215Err codemadness.org 70 i 51217 Err codemadness.org 70 i 51218The architecture of Poor Man’s CI is system agnostic. However in the implementation provided in this repository the only supported systems are FreeBSD and NetBSD. Support for additional systems is possible.
Err codemadness.org 70 i 51216
Err codemadness.org 70 i 51219Err codemadness.org 70 i 51221 Err codemadness.org 70 i 51222Poor Man’s CI runs on the Google Cloud. It is possible to set it up so that the service fits within the Google Cloud “Always Free” limits. In doing so the provided CI is not only hosted, but is also free! (Disclaimer: I am not affiliated with Google and do not otherwise endorse their products.)
Err codemadness.org 70 i 51220
Err codemadness.org 70 i 51227Err codemadness.org 70 i 51229 Err codemadness.org 70 i 51230A CI solution listens for “commit” (or more usually “push”) events, builds the associated repository at the appropriate place in its history and reports the results. Poor Man’s CI implements this very basic CI scenario using a simple architecture, which we present in this section.
Err codemadness.org 70 i 51228
Poor Man’s CI consists of the following components and their interactions:
Err codemadness.org 70 i 51233Controller: Controls the overall process of accepting GitHub push events and starting builds. The Controller runs in the Cloud Functions environment and is implemented by the files in the controller source directory. It consists of the following components:
Err codemadness.org 70 i 51236PubSub Topics:
Err codemadness.org 70 i 51246 Err codemadness.org 70 i 51247builder: A builder is a Compute Engine instance that performs a build of a repository and shuts down when the build is complete. A builder is instantiated from a VM image and a startx (startup-exit) script.
Err codemadness.org 70 i 51257 Err codemadness.org 70 i 51258Build Logs: A Storage bucket that contains the logs of builds performed by builder instances.
Err codemadness.org 70 i 51262 Err codemadness.org 70 i 51263Logging Sink: A Logging Sink captures builder instance terminate and delete events and posts them into the doneq.
Err codemadness.org 70 i 51267 Err codemadness.org 70 i 51268BUGS
Err codemadness.org 70 i 51272 Err codemadness.org 70 i 51273Err codemadness.org 70 i 51277Err codemadness.org 70 i 51279 Err codemadness.org 70 i 51280The Builder Pool is currently implemented as a PubSub; messages in the PubSub contain the names of available builder instances. Unfortunately a PubSub retains its messages for a maximum of 7 days. It is therefore possible that messages will be discarded and that your PMCI deployment will suddenly find itself out of builder instances. If this happens you can reseed the Builder Pool by running the commands below. However this is a serious BUG that should be fixed. For a related discussion see https://tinyurl.com/ybkycuub.
Err codemadness.org 70 i 51278
$ ./pmci queue_post poolq builder0
Err codemadness.org 70
i 51281 # ./pmci queue_post poolq builder1
Err codemadness.org 70
i 51282 # ... repeat for as many builders as you want
Err codemadness.org 70 i 51285Err codemadness.org 70 i 51287 Err codemadness.org 70 i 51288The Dispatcher is implemented as a Retry Background Cloud Function. It accepts work messages from the workq and attempts to pull a free name from the poolq. If that fails it returns an error, which instructs the infrastructure to retry. Because the infrastructure does not provide any retry controls, this currently happens immediately and the Dispatcher spins unproductively. This is currently mitigated by a “sleep” (setTimeout), but the Cloud Functions system still counts the Function as running and charges it accordingly. While this fits within the “Always Free” limits, it is something that should eventually be fixed (perhaps by the PubSub team). For a related discussion see https://tinyurl.com/yb2vbwfd.
Err codemadness.org 70 i 51286
Err codemadness.org 70 i 51293Err codemadness.org 70 i 51297 Err codemadness.org 70 i 51298Did you know that you can check what a process is doing by pressing CTRL+T?
Err codemadness.org 70 i 51296
Err codemadness.org 70 i 51294 Has it happened to you before that you were waiting for something to be finished that can take a lot of time, but there is no easy way to check the status. Like a dd, cp, mv and many others. All you have to do is press CTRL+T where the process is running. This will output what’s happening and will not interrupt or mess with it in any way. This causes the operating system to output the SIGINFO signal.
Err codemadness.org 70 i 51295 On FreeBSD it looks like this:
ping pingtest.com Err codemadness.org 70
i 51299 PING pingtest.com (5.22.149.135): 56 data bytes Err codemadness.org 70
i 51300 64 bytes from 5.22.149.135: icmp_seq=0 ttl=51 time=86.232 ms Err codemadness.org 70
i 51301 64 bytes from 5.22.149.135: icmp_seq=1 ttl=51 time=85.477 ms Err codemadness.org 70
i 51302 64 bytes from 5.22.149.135: icmp_seq=2 ttl=51 time=85.493 ms Err codemadness.org 70
i 51303 64 bytes from 5.22.149.135: icmp_seq=3 ttl=51 time=85.211 ms Err codemadness.org 70
i 51304 64 bytes from 5.22.149.135: icmp_seq=4 ttl=51 time=86.002 ms Err codemadness.org 70
i 51305 load: 1.12 cmd: ping 94371 [select] 4.70r 0.00u 0.00s 0% 2500k Err codemadness.org 70
i 51306 5/5 packets received (100.0%) 85.211 min / 85.683 avg / 86.232 max Err codemadness.org 70
i 51307 64 bytes from 5.22.149.135: icmp_seq=5 ttl=51 time=85.725 ms Err codemadness.org 70
i 51308 64 bytes from 5.22.149.135: icmp_seq=6 ttl=51 time=85.510 ms Err codemadness.org 70
i 51309 Err codemadness.org 70
i 51310 Err codemadness.org 70
i 51311 Err codemadness.org 70 i 51312Err codemadness.org 70 i 51314 Err codemadness.org 70 i 51315As you can see it not only outputs the name of the running command but the following parameters as well:
Err codemadness.org 70 i 51313
94371 – PID Err codemadness.org 70
i 51316 4.70r – since when is the process running Err codemadness.org 70
i 51317 0.00u – user time Err codemadness.org 70
i 51318 0.00s – system time Err codemadness.org 70
i 51319 0% – CPU usage Err codemadness.org 70
i 51320 2500k – resident set size of the process or RSS Err codemadness.org 70
i 51321 `` Err codemadness.org 70
i 51322 Err codemadness.org 70
i 51323 > An even better example is with the following cp command: Err codemadness.org 70
i 51324 Err codemadness.org 70
i 51325 Err codemadness.org 70
i 51326 Err codemadness.org 70
i 51327 cp FreeBSD-11.1-RELEASE-amd64-dvd1.iso /dev/null
Err codemadness.org 70
i 51328 load: 0.99 cmd: cp 94412 [runnable] 1.61r 0.00u 0.39s 3% 3100k
Err codemadness.org 70
i 51329 FreeBSD-11.1-RELEASE-amd64-dvd1.iso -> /dev/null 15%
Err codemadness.org 70
i 51330 load: 0.91 cmd: cp 94412 [runnable] 2.91r 0.00u 0.80s 6% 3104k
Err codemadness.org 70
i 51331 FreeBSD-11.1-RELEASE-amd64-dvd1.iso -> /dev/null 32%
Err codemadness.org 70
i 51332 load: 0.91 cmd: cp 94412 [runnable] 4.20r 0.00u 1.23s 9% 3104k
Err codemadness.org 70
i 51333 FreeBSD-11.1-RELEASE-amd64-dvd1.iso -> /dev/null 49%
Err codemadness.org 70
i 51334 load: 0.91 cmd: cp 94412 [runnable] 5.43r 0.00u 1.64s 11% 3104k
Err codemadness.org 70
i 51335 FreeBSD-11.1-RELEASE-amd64-dvd1.iso -> /dev/null 64%
Err codemadness.org 70
i 51336 load: 1.07 cmd: cp 94412 [runnable] 6.65r 0.00u 2.05s 13% 3104k
Err codemadness.org 70
i 51337 FreeBSD-11.1-RELEASE-amd64-dvd1.iso -> /dev/null 79%
Err codemadness.org 70
i 51338 load: 1.07 cmd: cp 94412 [runnable] 7.87r 0.00u 2.43s 15% 3104k
Err codemadness.org 70
i 51339 FreeBSD-11.1-RELEASE-amd64-dvd1.iso -> /dev/null 95%
Err codemadness.org 70
i 51342 > I prcessed CTRL+T six times. Without that, all the output would have been is the first line. Err codemadness.org 70
i 51343 Err codemadness.org 70
i 51344 > Another example how the process is changing states: Err codemadness.org 70
i 51345 Err codemadness.org 70
i 51346 Err codemadness.org 70
i 51347 Err codemadness.org 70
i 51348 wget https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-IMAGES/11.1/FreeBSD-11.1-RELEASE-amd64-dvd1.iso
Err codemadness.org 70
i 51349 –2018-06-17 18:47:48– https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-IMAGES/11.1/FreeBSD-11.1-RELEASE-amd64-dvd1.iso
Err codemadness.org 70
i 51350 Resolving download.freebsd.org (download.freebsd.org)… 96.47.72.72, 2610:1c1:1:606c::15:0
Err codemadness.org 70
i 51351 Connecting to download.freebsd.org (download.freebsd.org)|96.47.72.72|:443… connected.
Err codemadness.org 70
i 51352 HTTP request sent, awaiting response… 200 OK
Err codemadness.org 70
i 51353 Length: 3348465664 (3.1G) [application/octet-stream]
Err codemadness.org 70
i 51354 Saving to: ‘FreeBSD-11.1-RELEASE-amd64-dvd1.iso’
FreeBSD-11.1-RELEASE-amd64-dvd1.iso 1%[> ] 41.04M 527KB/s eta 26m 49sload: 4.95 cmd: wget 10152 waiting 0.48u 0.72s
Err codemadness.org 70
i 51357 FreeBSD-11.1-RELEASE-amd64-dvd1.iso 1%[> ] 49.41M 659KB/s eta 25m 29sload: 12.64 cmd: wget 10152 waiting 0.55u 0.85s
Err codemadness.org 70
i 51358 FreeBSD-11.1-RELEASE-amd64-dvd1.iso 2%[=> ] 75.58M 6.31MB/s eta 20m 6s load: 11.71 cmd: wget 10152 running 0.73u 1.19s
Err codemadness.org 70
i 51359 FreeBSD-11.1-RELEASE-amd64-dvd1.iso 2%[=> ] 85.63M 6.83MB/s eta 18m 58sload: 11.71 cmd: wget 10152 waiting 0.80u 1.32s
Err codemadness.org 70
i 51360 FreeBSD-11.1-RELEASE-amd64-dvd1.iso 14%[==============> ] 460.23M 7.01MB/s eta 9m 0s 1
Err codemadness.org 70
i 51363 > The bad news is that CTRl+T doesn’t work with Linux kernel, but you can use it on MacOS/OS-X: Err codemadness.org 70
i 51364 Err codemadness.org 70
i 51365 Err codemadness.org 70
i 51366 Err codemadness.org 70
i 51367 —> Fetching distfiles for gmp
Err codemadness.org 70
i 51368 —> Attempting to fetch gmp-6.1.2.tar.bz2 from https://distfiles.macports.org/gmp
Err codemadness.org 70
i 51369 —> Verifying checksums for gmp
Err codemadness.org 70
i 51370 —> Extracting gmp
Err codemadness.org 70
i 51371 —> Applying patches to gmp
Err codemadness.org 70
i 51372 —> Configuring gmp
Err codemadness.org 70
i 51373 load: 2.81 cmd: clang 74287 running 0.31u 0.28s
Err codemadness.org 70
i 51376 > PS: If I recall correctly Feld showed me CTRL+T, thank you! Err codemadness.org 70
i 51377 Err codemadness.org 70
i 51378 *** Err codemadness.org 70
i 51379 Err codemadness.org 70
i 51380 Err codemadness.org 70
i 51381 ##Beastie Bits Err codemadness.org 70
i 51382 + [Half billion tries for a HAMMER2 bug](http://lists.dragonflybsd.org/pipermail/commits/2018-May/672263.html) Err codemadness.org 70
i 51383 + OpenBSD with various Desktops Err codemadness.org 70
i 51384 + [OpenBSD 6.3 running twm window manager](https://youtu.be/v6XeC5wU2s4) Err codemadness.org 70
i 51385 + [OpenBSD 6.3 jwm and rox desktop](https://youtu.be/jlSK2oi7CBc) Err codemadness.org 70
i 51386 + [OpenBSD 6.3 cwm youtube video](https://youtu.be/mgqNyrP2CPs) Err codemadness.org 70
i 51387 + [pf: Increase default state table size](https://svnweb.freebsd.org/base?view=revision&revision=336221) Err codemadness.org 70
i 51388 *** Err codemadness.org 70
i 51389 Err codemadness.org 70
i 51390 **Tarsnap** Err codemadness.org 70
i 51391 Err codemadness.org 70
i 51392 ##Feedback/Questions Err codemadness.org 70
i 51393 + Ben Sims - [Full feed?](http://dpaste.com/3XVH91T#wrap) Err codemadness.org 70
i 51394 + Scott - [Questions and Comments](http://dpaste.com/08P34YN#wrap) Err codemadness.org 70
i 51395 + Troels - [Features of FreeBSD 11.2 that deserve a mention](http://dpaste.com/3DDPEC2#wrap) Err codemadness.org 70
i 51396 + [Fred - Show Ideas](http://dpaste.com/296ZA0P#wrap) Err codemadness.org 70
i 51397 *** Err codemadness.org 70
i 51398 Err codemadness.org 70
i 51399 - Send questions, comments, show ideas/topics, or stories you want mentioned on the show to [feedback@bsdnow.tv](mailto:feedback@bsdnow.tv) Err codemadness.org 70
i 51400 *** Err codemadness.org 70
i 51401 Err codemadness.org 70
i 51402 *** Err codemadness.org 70
i 51403 Err codemadness.org 70
i 51404 iXsystems [It's all NAS](https://www.ixsystems.com/blog/its-all-nas/) Err codemadness.org 70
i 51405 ]]> Err codemadness.org 70
i 51406 ##Headlines
Err codemadness.org 70
i 51541 ###Silent Fanless FreeBSD Desktop/Server
Err codemadness.org 70 i 51544Err codemadness.org 70 i 51551 Err codemadness.org 70 i 51552Today I will write about silent fanless FreeBSD desktop or server computer … or NAS … or you name it, it can have multa##Headlines
Err codemadness.org 70 i 51550
Err codemadness.org 70 i 51545 ###Cross-DSO CFI in HardenedBSD
Err codemadness.org 70 i 51546 Control Flow Integrity, or CFI, raises the bar for attackers aiming to hijack control flow and execute arbitrary code. The llvm compiler toolchain, included and used by default in HardenedBSD 12-CURRENT/amd64, supports forward-edge CFI. Backward-edge CFI support is gained via a tangential feature called SafeStack. Cross-DSO CFI builds upon ASLR and PaX NOEXEC for effectiveness.
Err codemadness.org 70 i 51547 HardenedBSD supports non-Cross-DSO CFI in base for 12-CURRENT/amd64 and has it enabled for a few individual ports. The term “non-Cross-DSO CFI” means that CFI is enabled for code within an application’s codebase, but not for the shared libraries it depends on. Supporting non-Cross-DSO CFI is an important initial milestone for supporting Cross-DSO CFI, or CFI applied to both shared libraries and applications.
Err codemadness.org 70 i 51548 This article discusses where HardenedBSD stands with regards to Cross-DSO CFI in base. We have made a lot of progress, yet we’re not even half-way there.
Err codemadness.org 70 i 51549 Brace yourself: This article is going to be full of references to “Cross-DSO CFI.” Make a drinking game out of it. Or don’t. It’s your call. ;)
Err codemadness.org 70 i 51557Err codemadness.org 70 i 51563 Err codemadness.org 70 i 51564CFI requires compiling source files with Link-Time Optimization (LTO). I remembered hearing a few years back that llvm developers were able to compile the entirety of FreeBSD’s source code with LTO. Compiling with LTO produces intermediate object files as LLVM IR bitcode instead of ELF objects.
Err codemadness.org 70 i 51562
Err codemadness.org 70 i 51558 In March of 2017, we started compiling all applications with LTO and non-Cross-DSO CFI. This also enabled ld.lld as the default linker in base since CFI requires lld. Commit f38b51668efcd53b8146789010611a4632cafade made the switch to ld.lld as the default linker while enabling non-Cross-DSO CFI at the same time.
Err codemadness.org 70 i 51559 Building libraries in base requires applications like ar, ranlib, nm, and objdump. In FreeBSD 12-CURRENT, ar and ranlib are known as “BSD ar” and “BSD ranlib.” In fact, ar and ranlib are the same applications. One is hardlinked to another and the application changes behavior depending on arvgv[0] ending in “ranlib”. The ar, nm, and objdump used in FreeBSD do not support LLVM IR bitcode object files.
Err codemadness.org 70 i 51560 In preparation for Cross-DSO CFI support, commit fe4bb0104fc75c7216a6dafe2d7db0e3f5fe8257 in October 2017 saw HardenedBSD switching ar, ranlib, nm, and objdump to their respective llvm components. The llvm versions due support LLVM IR bitcode object files (surprise!) There has been some fallout in the ports tree and we’ve added LLVM_AR_UNSAFE and friends to help transition those ports that dislike llvm-ar, llvm-ranlib, llvm-nm, and llvm-objdump.
Err codemadness.org 70 i 51561 With ld.lld, llvm-ar, llvm-ranlib, llvm-nm, and llvm-objdump the default, HardenedBSD has effectively switched to a full llvm compiler toolchain in 12-CURRENT/amd64.
Err codemadness.org 70 i 51569Err codemadness.org 70 i 51574 Err codemadness.org 70 i 51575The primary 12-CURRENT development branch in HardenedBSD (hardened/current/master) only builds applications with LTO as mentioned in the secion above. My first attempt at building all static and shared libraries failed due to issues within llvm itself.
Err codemadness.org 70 i 51573
Err codemadness.org 70 i 51570 I reported these issues to FreeBSD. Ed Maste (emaste@), Dimitry Andric (dim@), and llvm’s Rafael Espindola expertly helped address these issues. Various commits within the llvm project by Rafael fully and quickly resolved the issues brought up privately in emails.
Err codemadness.org 70 i 51571 With llvm fixed, I could now build nearly every library in base with LTO. I noticed, however, that if I kept non-Cross-DSO CFI and SafeStack enabled, all applications would segfault. Even simplistic applications like /bin/ls.
Err codemadness.org 70 i 51572 Disabling both non-Cross-DSO CFI and SafeStack, but keeping LTO produced a fully functioning world! I have spent the last few months figuring out why enabling either non-Cross-DSO CFI or SafeStack caused issues. This brings us to today.
Err codemadness.org 70 i 51580Err codemadness.org 70 i 51584 Err codemadness.org 70 i 51585FreeBSD brought in all the files required for SafeStack and CFI. When compiling with SafeStack, llvm statically links a full sanitization framework into the application. FreeBSD includes a full copy of the sanitization framework in SafeStack, including the common C++ sanization namespaces. Thus, libclang_rt.safestack included code meant to be shared among all the sanitizers, not just SafeStack.
Err codemadness.org 70 i 51583
Err codemadness.org 70 i 51581 I had naively taken a brute-force approach to setting up the libclang_rt.cfi static library. I copied the Makefile from libclang_rt.safestack and used that as a template for libclang_rt.cfi. This approach was incorrect due to breaking the One Definition Rule (ODR). Essentially, I ended up including a duplicate copy of the C++ classes and sanitizer runtime if both CFI and SafeStack were used.
Err codemadness.org 70 i 51582 In my Cross-DSO CFI development VM, I now have SafeStack disabled across-the-board and am only compiling in CFI. As of 26 May 2018, an LTO-ified world (libs + apps) works in my limited testing. /bin/ls does not crash anymore! The second major milestone for Cross-DSO CFI has now been reached.
Err codemadness.org 70 i 51590Err codemadness.org 70 i 51596 Err codemadness.org 70 i 51597There are a few known issues and regressions. Note that this list of known issues essentially also constitutes a “work-in-progress” and every known issue will be fixed prior to the official launch of Cross-DSO CFI.
Err codemadness.org 70 i 51595
Err codemadness.org 70 i 51591 It seems llvm does not like statically compiling applications with LTO that have a mixture of C and C++ code. /sbin/devd is one of these applications. As such, when Cross-DSO CFI is enabled, devd is compiled as a Position-Independent Executable (PIE). Doing this breaks UFS systems where /usr is on a separate partition. We are currently looking into solving this issue to allow devd to be statically compiled again.
Err codemadness.org 70 i 51592 NO_SHARED is now unset in the tools build stage (aka, bootstrap-tools, cross-tools). This is related to the static compilation issue above. Unsetting NO_SHARED for to tools build stage is only a band-aid until we can resolve static compliation with LTO.
Err codemadness.org 70 i 51593 One goal of our Cross-DSO CFI integration work is to be able to support the cfi-icall scheme when dlopen(3) and dlsym(3)/dlfunc(3) is used. This means the runtime linker (RTLD), must be enhanced to know and care about the CFI runtime. This enhancement is not currently implemented, but is planned.
Err codemadness.org 70 i 51594 When Cross-DSO CFI is enabled, SafeStack is disabled. This is because compiling with Cross-DSO CFI brings in a second copy of the sanitizer runtime, violating the One Definition Rule (ODR). Resolving this issue should be straightforward: Unify the sanitizer runtime into a single common library that both Cross-DSO CFI and SafeStack can link against. When the installed world has Cross-DSO CFI enabled, performing a buildworld with Cross-DSO CFI disabled fails. This is somewhat related to the static compilation issue described above.
Err codemadness.org 70 i 51602Err codemadness.org 70 i 51605 Err codemadness.org 70 i 51606I’ve managed to get a Cross-DSO CFI world booting on bare metal (my development laptop) and in a VM. Some applications failed to work. Curiously, Firefox still worked (which also means xorg works).
Err codemadness.org 70 i 51604
Err codemadness.org 70 i 51603 I’m now working through the known issues list, researching and learning.
Err codemadness.org 70 i 51611Err codemadness.org 70 i 51616 Err codemadness.org 70 i 51617Fixing pretty much everything in the “Known Issues And Limitations” section. ;P
Err codemadness.org 70 i 51615
Err codemadness.org 70 i 51612 I need to create a static library that includes only a single copy of the common sanitizer framework code. Applications compiled with CFI or SafeStack will then only have a single copy of the framework.
Err codemadness.org 70 i 51613 Next I will need to integrate support in the RTLD for Cross-DSO CFI. Applications with the cfi-icall scheme enabled that call functions resolved through dlsym(3) currently crash due to the lack of RTLD support. I need to make a design decision as to whether to only support adding cfi-icall whitelist entries only with dlfunc(3) or to also whitelist cfi-icall entries with the more widely used dlsym(3).
Err codemadness.org 70 i 51614 There’s likely more items in the “TODO” bucket that I am not currently aware of. I’m treading in uncharted territory. I have no firm ETA for any bit of this work. We may gain Cross-DSO CFI support in 2018, but it’s looking like it will be later in either 2019 or 2020.
Err codemadness.org 70 i 51622Err codemadness.org 70 i 51626 Err codemadness.org 70 i 51627I have been working on Cross-DSO CFI support in HardenedBSD for a little over a year now. A lot of progress is being made, yet there’s still some major hurdles to overcome. This work has already helped improve llvm and I hope more commits upstream to both FreeBSD and llvm will happen.
Err codemadness.org 70 i 51625
Err codemadness.org 70 i 51623 We’re getting closer to being able to send out a preliminary Call For Testing (CFT). At the very least, I would like to solve the static linking issues prior to publishing the CFT. Expect it to be published before the end of 2018.
Err codemadness.org 70 i 51624 I would like to thank Ed Maste, Dimitry Andric, and Rafael Espindola for their help, guidance, and support.
iXsystems
Err codemadness.org 70
i 51630 FreeNAS 11.2-BETAs are starting to appear
###Bareos Backup Server on FreeBSD
Err codemadness.org 70 i 51633 Err codemadness.org 70 i 51634Err codemadness.org 70 i 51635Err codemadness.org 70 i 51638 Err codemadness.org 70 i 51639Ever heard about Bareos? Probably heard about Bacula. Read what is the difference here – Why Bareos forked from Bacula?
Err codemadness.org 70 i 51637
Err codemadness.org 70 i 51636 Bareos (Backup Archiving Recovery Open Sourced) is a network based open source backup solution. It is 100% open source fork of the backup project from bacula.org site. The fork is in development since late 2010 and it has a lot of new features. The source is published on github and licensed under AGPLv3 license. Bareos supports ‘Always Incremental backup which is interesting especially for users with big data. The time and network capacity consuming full backups only have to be taken once. Bareos comes with WebUI for administration tasks and restore file browser. Bareos can backup data to disk and to tape drives as well as tape libraries. It supports compression and encryption both hardware-based (like on LTO tape drives) and software-based. You can also get professional services and support from Bareos as well as Bareos subscription service that provides you access to special quality assured installation packages.
Err codemadness.org 70 i 51640Err codemadness.org 70 i 51645 Err codemadness.org 70 i 51646I started my sysadmin job with backup system as one of the new responsibilities, so it will be like going back to the roots. As I look on the ‘backup’ market it is more and more popular – especially in cloud oriented environments – to implement various levels of protection like GOLD, SILVER and BRONZE for example. They of course have different retention times, number of backups kept, different RTO and RPO. Below is a example implementation of BRONZE level backups in Bareos. I used 3 groups of A, B and C with FULL backup starting on DAY 0 (A group), DAY 1 (B group) and DAY 2 (C group).
Err codemadness.org 70 i 51644
Err codemadness.org 70 i 51641 This way you still have FULL backups quite often and with 3 groups you can balance the network load. I for the days that we will not be doing FULL backups we will be doing DIFFERENTIAL backups. People often confuse them with INCREMENTAL backups. The difference is that DIFFERENTIAL backups are always against FULL backup, so its always ‘one level of combining’. INCREMENTAL ones are done against last done backup TYPE, so its possible to have 100+ levels of combining against 99 earlier INCREMENTAL backups and the 1 FULL backup. That is why I prefer DIFFERENTIAL ones here, faster recovery. That is all backups is about generally, recovery, some people/companies tend to forget that.
Err codemadness.org 70 i 51642 The implementation of BRONZE in these three groups is not perfect, but ‘does the job’. I also made ‘simulation’ how these group will overlap at the end/beginning of the month, here is the result.
Err codemadness.org 70 i 51643 Not bad for my taste.
Err codemadness.org 70 i 51647Err codemadness.org 70 i 51649 Err codemadness.org 70 i 51650Today I will show you how to install and configure Bareos Server based on FreeBSD operating system. It will be the most simplified setup with all services on single machine:
Err codemadness.org 70 i 51648
Err codemadness.org 70 i 51658Err codemadness.org 70 i 51660 Err codemadness.org 70 i 51661I also assume that in order to provide storage space for the backup data itself You would mount resources from external NFS shares.
Err codemadness.org 70 i 51659
Err codemadness.org 70 i 51662Err codemadness.org 70 i 51664 Err codemadness.org 70 i 51665To get in touch with Bareos terminology and technology check their great Manual in HTML or PDF version depending which format You prefer for reading documentation. Also their FAQ provides a lot of needed answers.
Err codemadness.org 70 i 51663
Err codemadness.org 70 i 51666Err codemadness.org 70 i 51668 Err codemadness.org 70 i 51669Also this diagram may be useful for You to get some grip into the Bareos world.
Err codemadness.org 70 i 51667
Err codemadness.org 70 i 51674]]> Err codemadness.org 70 i 51676As every system needs to have its name we will use latin word closest to backup here – replica – for our FreeBSD system hostname. The install would be generally the same as in the FreeBSD Desktop – Part 2 – Install article. Here is our installed FreeBSD system with login prompt.
Err codemadness.org 70 i 51675
##Headlines
Err codemadness.org 70
i 51681 ###Silent Fanless FreeBSD Desktop/Server
Err codemadness.org 70 i 51684Err codemadness.org 70 i 51691 Err codemadness.org 70 i 51692Today I will write about silent fanless FreeBSD desktop or server computer … or NAS … or you name it, it can have multa##Headlines
Err codemadness.org 70 i 51690
Err codemadness.org 70 i 51685 ###Cross-DSO CFI in HardenedBSD
Err codemadness.org 70 i 51686 Control Flow Integrity, or CFI, raises the bar for attackers aiming to hijack control flow and execute arbitrary code. The llvm compiler toolchain, included and used by default in HardenedBSD 12-CURRENT/amd64, supports forward-edge CFI. Backward-edge CFI support is gained via a tangential feature called SafeStack. Cross-DSO CFI builds upon ASLR and PaX NOEXEC for effectiveness.
Err codemadness.org 70 i 51687 HardenedBSD supports non-Cross-DSO CFI in base for 12-CURRENT/amd64 and has it enabled for a few individual ports. The term “non-Cross-DSO CFI” means that CFI is enabled for code within an application’s codebase, but not for the shared libraries it depends on. Supporting non-Cross-DSO CFI is an important initial milestone for supporting Cross-DSO CFI, or CFI applied to both shared libraries and applications.
Err codemadness.org 70 i 51688 This article discusses where HardenedBSD stands with regards to Cross-DSO CFI in base. We have made a lot of progress, yet we’re not even half-way there.
Err codemadness.org 70 i 51689 Brace yourself: This article is going to be full of references to “Cross-DSO CFI.” Make a drinking game out of it. Or don’t. It’s your call. ;)
Err codemadness.org 70 i 51697Err codemadness.org 70 i 51703 Err codemadness.org 70 i 51704CFI requires compiling source files with Link-Time Optimization (LTO). I remembered hearing a few years back that llvm developers were able to compile the entirety of FreeBSD’s source code with LTO. Compiling with LTO produces intermediate object files as LLVM IR bitcode instead of ELF objects.
Err codemadness.org 70 i 51702
Err codemadness.org 70 i 51698 In March of 2017, we started compiling all applications with LTO and non-Cross-DSO CFI. This also enabled ld.lld as the default linker in base since CFI requires lld. Commit f38b51668efcd53b8146789010611a4632cafade made the switch to ld.lld as the default linker while enabling non-Cross-DSO CFI at the same time.
Err codemadness.org 70 i 51699 Building libraries in base requires applications like ar, ranlib, nm, and objdump. In FreeBSD 12-CURRENT, ar and ranlib are known as “BSD ar” and “BSD ranlib.” In fact, ar and ranlib are the same applications. One is hardlinked to another and the application changes behavior depending on arvgv[0] ending in “ranlib”. The ar, nm, and objdump used in FreeBSD do not support LLVM IR bitcode object files.
Err codemadness.org 70 i 51700 In preparation for Cross-DSO CFI support, commit fe4bb0104fc75c7216a6dafe2d7db0e3f5fe8257 in October 2017 saw HardenedBSD switching ar, ranlib, nm, and objdump to their respective llvm components. The llvm versions due support LLVM IR bitcode object files (surprise!) There has been some fallout in the ports tree and we’ve added LLVM_AR_UNSAFE and friends to help transition those ports that dislike llvm-ar, llvm-ranlib, llvm-nm, and llvm-objdump.
Err codemadness.org 70 i 51701 With ld.lld, llvm-ar, llvm-ranlib, llvm-nm, and llvm-objdump the default, HardenedBSD has effectively switched to a full llvm compiler toolchain in 12-CURRENT/amd64.
Err codemadness.org 70 i 51709Err codemadness.org 70 i 51714 Err codemadness.org 70 i 51715The primary 12-CURRENT development branch in HardenedBSD (hardened/current/master) only builds applications with LTO as mentioned in the secion above. My first attempt at building all static and shared libraries failed due to issues within llvm itself.
Err codemadness.org 70 i 51713
Err codemadness.org 70 i 51710 I reported these issues to FreeBSD. Ed Maste (emaste@), Dimitry Andric (dim@), and llvm’s Rafael Espindola expertly helped address these issues. Various commits within the llvm project by Rafael fully and quickly resolved the issues brought up privately in emails.
Err codemadness.org 70 i 51711 With llvm fixed, I could now build nearly every library in base with LTO. I noticed, however, that if I kept non-Cross-DSO CFI and SafeStack enabled, all applications would segfault. Even simplistic applications like /bin/ls.
Err codemadness.org 70 i 51712 Disabling both non-Cross-DSO CFI and SafeStack, but keeping LTO produced a fully functioning world! I have spent the last few months figuring out why enabling either non-Cross-DSO CFI or SafeStack caused issues. This brings us to today.
Err codemadness.org 70 i 51720Err codemadness.org 70 i 51724 Err codemadness.org 70 i 51725FreeBSD brought in all the files required for SafeStack and CFI. When compiling with SafeStack, llvm statically links a full sanitization framework into the application. FreeBSD includes a full copy of the sanitization framework in SafeStack, including the common C++ sanization namespaces. Thus, libclang_rt.safestack included code meant to be shared among all the sanitizers, not just SafeStack.
Err codemadness.org 70 i 51723
Err codemadness.org 70 i 51721 I had naively taken a brute-force approach to setting up the libclang_rt.cfi static library. I copied the Makefile from libclang_rt.safestack and used that as a template for libclang_rt.cfi. This approach was incorrect due to breaking the One Definition Rule (ODR). Essentially, I ended up including a duplicate copy of the C++ classes and sanitizer runtime if both CFI and SafeStack were used.
Err codemadness.org 70 i 51722 In my Cross-DSO CFI development VM, I now have SafeStack disabled across-the-board and am only compiling in CFI. As of 26 May 2018, an LTO-ified world (libs + apps) works in my limited testing. /bin/ls does not crash anymore! The second major milestone for Cross-DSO CFI has now been reached.
Err codemadness.org 70 i 51730Err codemadness.org 70 i 51736 Err codemadness.org 70 i 51737There are a few known issues and regressions. Note that this list of known issues essentially also constitutes a “work-in-progress” and every known issue will be fixed prior to the official launch of Cross-DSO CFI.
Err codemadness.org 70 i 51735
Err codemadness.org 70 i 51731 It seems llvm does not like statically compiling applications with LTO that have a mixture of C and C++ code. /sbin/devd is one of these applications. As such, when Cross-DSO CFI is enabled, devd is compiled as a Position-Independent Executable (PIE). Doing this breaks UFS systems where /usr is on a separate partition. We are currently looking into solving this issue to allow devd to be statically compiled again.
Err codemadness.org 70 i 51732 NO_SHARED is now unset in the tools build stage (aka, bootstrap-tools, cross-tools). This is related to the static compilation issue above. Unsetting NO_SHARED for to tools build stage is only a band-aid until we can resolve static compliation with LTO.
Err codemadness.org 70 i 51733 One goal of our Cross-DSO CFI integration work is to be able to support the cfi-icall scheme when dlopen(3) and dlsym(3)/dlfunc(3) is used. This means the runtime linker (RTLD), must be enhanced to know and care about the CFI runtime. This enhancement is not currently implemented, but is planned.
Err codemadness.org 70 i 51734 When Cross-DSO CFI is enabled, SafeStack is disabled. This is because compiling with Cross-DSO CFI brings in a second copy of the sanitizer runtime, violating the One Definition Rule (ODR). Resolving this issue should be straightforward: Unify the sanitizer runtime into a single common library that both Cross-DSO CFI and SafeStack can link against. When the installed world has Cross-DSO CFI enabled, performing a buildworld with Cross-DSO CFI disabled fails. This is somewhat related to the static compilation issue described above.
Err codemadness.org 70 i 51742Err codemadness.org 70 i 51745 Err codemadness.org 70 i 51746I’ve managed to get a Cross-DSO CFI world booting on bare metal (my development laptop) and in a VM. Some applications failed to work. Curiously, Firefox still worked (which also means xorg works).
Err codemadness.org 70 i 51744
Err codemadness.org 70 i 51743 I’m now working through the known issues list, researching and learning.
Err codemadness.org 70 i 51751Err codemadness.org 70 i 51756 Err codemadness.org 70 i 51757Fixing pretty much everything in the “Known Issues And Limitations” section. ;P
Err codemadness.org 70 i 51755
Err codemadness.org 70 i 51752 I need to create a static library that includes only a single copy of the common sanitizer framework code. Applications compiled with CFI or SafeStack will then only have a single copy of the framework.
Err codemadness.org 70 i 51753 Next I will need to integrate support in the RTLD for Cross-DSO CFI. Applications with the cfi-icall scheme enabled that call functions resolved through dlsym(3) currently crash due to the lack of RTLD support. I need to make a design decision as to whether to only support adding cfi-icall whitelist entries only with dlfunc(3) or to also whitelist cfi-icall entries with the more widely used dlsym(3).
Err codemadness.org 70 i 51754 There’s likely more items in the “TODO” bucket that I am not currently aware of. I’m treading in uncharted territory. I have no firm ETA for any bit of this work. We may gain Cross-DSO CFI support in 2018, but it’s looking like it will be later in either 2019 or 2020.
Err codemadness.org 70 i 51762Err codemadness.org 70 i 51766 Err codemadness.org 70 i 51767I have been working on Cross-DSO CFI support in HardenedBSD for a little over a year now. A lot of progress is being made, yet there’s still some major hurdles to overcome. This work has already helped improve llvm and I hope more commits upstream to both FreeBSD and llvm will happen.
Err codemadness.org 70 i 51765
Err codemadness.org 70 i 51763 We’re getting closer to being able to send out a preliminary Call For Testing (CFT). At the very least, I would like to solve the static linking issues prior to publishing the CFT. Expect it to be published before the end of 2018.
Err codemadness.org 70 i 51764 I would like to thank Ed Maste, Dimitry Andric, and Rafael Espindola for their help, guidance, and support.
iXsystems
Err codemadness.org 70
i 51770 FreeNAS 11.2-BETAs are starting to appear
###Bareos Backup Server on FreeBSD
Err codemadness.org 70 i 51773 Err codemadness.org 70 i 51774Err codemadness.org 70 i 51775Err codemadness.org 70 i 51778 Err codemadness.org 70 i 51779Ever heard about Bareos? Probably heard about Bacula. Read what is the difference here – Why Bareos forked from Bacula?
Err codemadness.org 70 i 51777
Err codemadness.org 70 i 51776 Bareos (Backup Archiving Recovery Open Sourced) is a network based open source backup solution. It is 100% open source fork of the backup project from bacula.org site. The fork is in development since late 2010 and it has a lot of new features. The source is published on github and licensed under AGPLv3 license. Bareos supports ‘Always Incremental backup which is interesting especially for users with big data. The time and network capacity consuming full backups only have to be taken once. Bareos comes with WebUI for administration tasks and restore file browser. Bareos can backup data to disk and to tape drives as well as tape libraries. It supports compression and encryption both hardware-based (like on LTO tape drives) and software-based. You can also get professional services and support from Bareos as well as Bareos subscription service that provides you access to special quality assured installation packages.
Err codemadness.org 70 i 51780Err codemadness.org 70 i 51785 Err codemadness.org 70 i 51786I started my sysadmin job with backup system as one of the new responsibilities, so it will be like going back to the roots. As I look on the ‘backup’ market it is more and more popular – especially in cloud oriented environments – to implement various levels of protection like GOLD, SILVER and BRONZE for example. They of course have different retention times, number of backups kept, different RTO and RPO. Below is a example implementation of BRONZE level backups in Bareos. I used 3 groups of A, B and C with FULL backup starting on DAY 0 (A group), DAY 1 (B group) and DAY 2 (C group).
Err codemadness.org 70 i 51784
Err codemadness.org 70 i 51781 This way you still have FULL backups quite often and with 3 groups you can balance the network load. I for the days that we will not be doing FULL backups we will be doing DIFFERENTIAL backups. People often confuse them with INCREMENTAL backups. The difference is that DIFFERENTIAL backups are always against FULL backup, so its always ‘one level of combining’. INCREMENTAL ones are done against last done backup TYPE, so its possible to have 100+ levels of combining against 99 earlier INCREMENTAL backups and the 1 FULL backup. That is why I prefer DIFFERENTIAL ones here, faster recovery. That is all backups is about generally, recovery, some people/companies tend to forget that.
Err codemadness.org 70 i 51782 The implementation of BRONZE in these three groups is not perfect, but ‘does the job’. I also made ‘simulation’ how these group will overlap at the end/beginning of the month, here is the result.
Err codemadness.org 70 i 51783 Not bad for my taste.
Err codemadness.org 70 i 51787Err codemadness.org 70 i 51789 Err codemadness.org 70 i 51790Today I will show you how to install and configure Bareos Server based on FreeBSD operating system. It will be the most simplified setup with all services on single machine:
Err codemadness.org 70 i 51788
Err codemadness.org 70 i 51798Err codemadness.org 70 i 51800 Err codemadness.org 70 i 51801I also assume that in order to provide storage space for the backup data itself You would mount resources from external NFS shares.
Err codemadness.org 70 i 51799
Err codemadness.org 70 i 51802Err codemadness.org 70 i 51804 Err codemadness.org 70 i 51805To get in touch with Bareos terminology and technology check their great Manual in HTML or PDF version depending which format You prefer for reading documentation. Also their FAQ provides a lot of needed answers.
Err codemadness.org 70 i 51803
Err codemadness.org 70 i 51806Err codemadness.org 70 i 51808 Err codemadness.org 70 i 51809Also this diagram may be useful for You to get some grip into the Bareos world.
Err codemadness.org 70 i 51807
Err codemadness.org 70 i 51814]]> Err codemadness.org 70 i 51816As every system needs to have its name we will use latin word closest to backup here – replica – for our FreeBSD system hostname. The install would be generally the same as in the FreeBSD Desktop – Part 2 – Install article. Here is our installed FreeBSD system with login prompt.
Err codemadness.org 70 i 51815
##Headlines
Err codemadness.org 70
i 52107 ###Silent Fanless FreeBSD Desktop/Server
Err codemadness.org 70 i 52110Err codemadness.org 70 i 52112 Err codemadness.org 70 i 52113Today I will write about silent fanless FreeBSD desktop or server computer … or NAS … or you name it, it can have multiple purposes. It also very low power solution, which also means that it will not overheat. Silent means no fans at all, even for the PSU. The format of the system should also be brought to minimum, so Mini-ITX seems best solution here.
Err codemadness.org 70 i 52111
Err codemadness.org 70 i 52114Err codemadness.org 70 i 52116 Err codemadness.org 70 i 52117I have chosen Intel based solutions as they are very low power (6-10W), if you prefer AMD (as I often do) the closest solution in comparable price and power is Biostar A68N-2100 motherboard with AMD E1-2100 CPU and 9W power. Of course AMD has even more low power SoC solutions but finding the Mini-ITX motherboard with decent price is not an easy task. For comparison Intel has lots of such solutions below 6W whose can be nicely filtered on the ark.intel.com page. Pity that AMD does not provide such filtration for their products. I also chosen AES instructions as storage encryption (GELI on FreeBSD) today seems as obvious as HTTPS for the web pages.
Err codemadness.org 70 i 52115
Err codemadness.org 70 i 52122Err codemadness.org 70 i 52124 Err codemadness.org 70 i 52125This motherboard uses Intel J3355 SoC which uses 10W and has AES instructions. It has two cores at your disposal but it also supports VT-x and EPT extensions so you can even run Bhyve on it.
Err codemadness.org 70 i 52123
Err codemadness.org 70 i 52130Err codemadness.org 70 i 52132 Err codemadness.org 70 i 52133Now, an example system would look like that one below, here are the components with their prices.
Err codemadness.org 70 i 52131
Err codemadness.org 70 i 52144Err codemadness.org 70 i 52146 Err codemadness.org 70 i 52147The PSU 12V 160W Pico (internal) and PSU 12V 96W FSP can be purchased on aliexpress.com or ebay.com for example, at least I got them there. Here is the 12V 160W Pico (internal) PSU and its optional additional cables to power the optional HDDs. If course its one SATA power and one MOLEX power so additional MOLEX-SATA power adapter for about 1$ would be needed. Here is the 12V 96W FSP (external) PSU without the power cord.
Err codemadness.org 70 i 52145
Err codemadness.org 70 i 52148Err codemadness.org 70 i 52150 Err codemadness.org 70 i 52151This gives as total silent fanless system price of about $120. Its about ONE TENTH OF THE COST of the cheapest FreeNAS hardware solution available – the FreeNAS Mini (Diskless) costs $1156 also without disks.
Err codemadness.org 70 i 52149
Err codemadness.org 70 i 52152Err codemadness.org 70 i 52154 Err codemadness.org 70 i 52155You can put plain FreeBSD on top of it or Solaris/Illumos distribution OmniOSce which is server oriented. You can use prebuilt NAS solution based on FreeBSD like FreeNAS, NAS4Free, ZFSguru or even Solaris/Illumos based storage with napp-it appliance.
Err codemadness.org 70 i 52153
###An annotated look at a NetBSD Pinebook’s startup
Err codemadness.org 70 i 52158 Err codemadness.org 70 i 52159# sysctl hw.clk.sun50ia64ccu0.mmc2 Err codemadness.org 70
i 52171 hw.clk.sun50ia64ccu0.mmc2.rate = 200000000 Err codemadness.org 70
i 52172 hw.clk.sun50ia64ccu0.mmc2.parent = pll_periph0_2x Err codemadness.org 70
i 52173 hw.clk.sun50ia64ccu0.mmc2.parent_domain = sun50ia64ccu0 Err codemadness.org 70
i 52174 Err codemadness.org 70
i 52175 Err codemadness.org 70
i 52176 Digital Ocean
Err codemadness.org 70
i 52179 http://do.co/bsdnow
###BSDCan 2018 Trip Report: Mark Johnston
Err codemadness.org 70 i 52182 Err codemadness.org 70 i 52183Err codemadness.org 70 i 52184Err codemadness.org 70 i 52194 Err codemadness.org 70 i 52195BSDCan is a highlight of my summers: the ability to have face-to-face conversations with fellow developers and contributors is invaluable and always helps refresh my enthusiasm for FreeBSD. While in a perfect world we would all be able to communicate effectively over the Internet, it’s often noted that locking a group of developers together in a room can be a very efficient way to make progress on projects that otherwise get strung out over time, and to me this is one of the principal functions of BSD conferences. In my case I was able to fix some kgdb bugs that had been hindering me for months; get some opinions on the design of a feature I’ve been working on for FreeBSD 12.0; hear about some ongoing usage of code that I’ve worked on; and do some pair-debugging of an issue that has been affecting another developer.
Err codemadness.org 70 i 52193
Err codemadness.org 70 i 52185 As is tradition, on Tuesday night I dropped off my things at the university residence where I was staying, and headed straight to the Royal Oak. This year it didn’t seem quite as packed with BSD developers, but I did meet several long-time colleagues and get a chance to catch up. In particular, I chatted with Justin Hibbits and got to hear about the bring-up of FreeBSD on POWER9, a new CPU family released by IBM. Justin was able to acquire a workstation based upon this CPU, which is a great motivator for getting FreeBSD into shape on that platform. POWER9 also has some promise in the server market, so it’s important for FreeBSD to be a viable OS choice there.
Err codemadness.org 70 i 52186 Wednesday morning saw the beginning of the two-day FreeBSD developer summit, which precedes the conference proper. Gordon Tetlow led the summit and did an excellent job organizing things and keeping to the schedule. The first presentation was by Deb Goodkin of the FreeBSD Foundation, who gave an overview of the Foundation’s role and activities. After Deb’s presentation, present members of the FreeBSD core team discussed the work they had done over the past two years, as well as open tasks that would be handed over to the new core team upon completion of the ongoing election. Finally, Marius Strobl rounded off the day’s presentations by discussing the state and responsibilities of FreeBSD’s release engineering team.
Err codemadness.org 70 i 52187 One side discussion of interest to me was around the notion of tightening integration with our Bugzilla instance; at moment we do not have any good means to mark a given bug as blocking a release, making it easy for bugs to slip into releases and thus lowering our overall quality. With FreeBSD 12.0 upon us, I plan to help with the triage and fixes for known regressions before the release process begins.
Err codemadness.org 70 i 52188 After a break, the rest of the morning was devoted to plans for features in upcoming FreeBSD releases. This is one of my favorite discussion topics and typically takes the form of have/need/want, where developers collectively list features that they’ve developed and intend to upstream (have), features that they are missing (need), and nice-to-have features (want). This year, instead of the usual format, we listed features that are intended to ship in FreeBSD 12.0. The compiled list ended up being quite ambitious given how close we are to the beginning of the release cycle, but many individual developers (including myself) have signed up to deliver work. I’m hopeful that most, if not all of it, will make it into the release.
Err codemadness.org 70 i 52189 After lunch, I attended a discussion led by Matt Ahrens and Alexander Motin on OpenZFS. Of particular interest to me were some observations made regarding the relative quantity and quality of contributions made by different “camps” of OpenZFS users (illumos, FreeBSD and ZoL), and their respective track records of upstreaming enhancements to the OpenZFS project. In part due to the high pace of changes in ZoL, the definition of “upstream” for ZFS has become murky, and of late ZFS changes have been ported directly from ZoL. Alexander discussed some known problems with ZFS on FreeBSD that have been discovered through performance testing. While I’m not familiar with ZFS internals, Alexander noted that ZFS’ write path has poor SMP scalability on FreeBSD owing to some limitations in a certain kernel API called taskqueue(9). I would like to explore this problem further and perhaps integrate a relatively new alternative interface which should perform better.
Err codemadness.org 70 i 52190 Friday and Saturday were, of course, taken up by BSDCan talks. Friday’s keynote was by Benno Rice, who provided some history of UNIX boot systems as a precursor to some discussion of systemd and the difficulties presented by a user and developer community that actively resist change. The rest of the morning was consumed by talks and passed by quickly. First was Colin Percival’s detailed examination of where the FreeBSD kernel spends time during boot, together with an overview of some infrastructure he added to track boot times. He also provided a list of improvements that have been made since he started taking measurements, and some areas we can further improve. Colin’s existing work in this area has already brought about substantial reductions in boot time; amusingly, one of the remaining large delays comes from the keyboard driver, which contains a workaround for old PS/2 keyboards. While there seems to be general agreement that the workaround is probably no longer needed on most systems, the lingering uncertainty around this prevents us from removing the workaround. This is, sadly, a fairly typical example of an OS maintenance burden, and underscores the need to carefully document hardware bug workarounds. After this talk, I got to see some rather novel demonstrations of system tracing using dwatch, a new utility by Devin Teske, which aims to provide a user-friendly interface to DTrace. After lunch, I attended talks on netdump, a protocol for transmitting kernel dumps over a network after the system has panicked, and on a VPC implementation for FreeBSD. After the talks ended, I headed yet again to the hacker lounge and had some fruitful discussions on early microcode loading (one of my features for FreeBSD 12.0). These led me to reconsider some aspects of my approach and saved me a lot of time. Finally, I continued my debugging session from Wednesday with help from a couple of other developers.
Err codemadness.org 70 i 52191 Saturday’s talks included a very thorough account by Li-Wen Hsu of his work in organizing a BSD conference in Taipei last year. As one of the attendees, I had felt that the conference had gone quite smoothly and was taken aback by the number of details and pitfalls that Li-Wen enumerated during his talk. This was followed by an excellent talk by Baptiste Daroussin on the difficulties one encounters when deploying FreeBSD in new environments. Baptiste offered criticisms of a number of aspects of FreeBSD, some of which hit close to home as they involved portions of the system that I’ve worked on.
Err codemadness.org 70 i 52192 At the conclusion of the talks, we all gathered in the main lecture hall, where Dan led a traditional and quite lively auction for charity. I managed to snag a Pine64 board and will be getting FreeBSD installed on it the first chance I get. At the end of the auction, we all headed to ByWard for dinner, concluding yet another BSDCan.
##News Roundup
Err codemadness.org 70
i 52202 ###Transparent network audio with mpd & sndiod
Err codemadness.org 70 i 52205Err codemadness.org 70 i 52207 Err codemadness.org 70 i 52208Landry Breuil (landry@ when wearing his developer hat) wrote in…
Err codemadness.org 70 i 52206
I've been a huge fan of MPD over the years to centralize my audio collection, and i've been using it with the http output to stream the music as a radio on the computer i'm currently using… Err codemadness.org 70
i 52209 Err codemadness.org 70
i 52210 audio_output { Err codemadness.org 70
i 52211 type "sndio" Err codemadness.org 70
i 52212 name "Local speakers" Err codemadness.org 70
i 52213 mixer_type "software" Err codemadness.org 70
i 52214 } Err codemadness.org 70
i 52215 audio_output { Err codemadness.org 70
i 52216 type "httpd" Err codemadness.org 70
i 52217 name "HTTP stream" Err codemadness.org 70
i 52218 mixer_type "software" Err codemadness.org 70
i 52219 encoder "vorbis" Err codemadness.org 70
i 52220 port "8000" Err codemadness.org 70
i 52221 format "44100:16:2" Err codemadness.org 70
i 52222 } Err codemadness.org 70
i 52223 this setup worked for years, allows me to stream my home radio to $work by tunnelling the port 8000 over ssh via LocalForward, but that still has some issues: Err codemadness.org 70
i 52224 Err codemadness.org 70
i 52225 a distinct timing gap between the 'local output' (ie the speakers connected to the machine where MPD is running) and the 'http output' caused by the time it takes to reencode the stream, which is ugly when you walk through the house and have a 15s delay Err codemadness.org 70
i 52226 sometimes mplayer as a client doesn't detect the pauses in the stream and needs to be restarted Err codemadness.org 70
i 52227 i need to configure/start a client on each computer and point it at the sound server url (can do via gmpc shoutcast client plugin…) Err codemadness.org 70
i 52228 it's not that elegant to reencode the stream, and it wastes cpu cycles Err codemadness.org 70
i 52229 So the current scheme is: Err codemadness.org 70
i 52230 Err codemadness.org 70
i 52231 mpd -> http output -> network -> mplayer -> sndiod on remote machine Err codemadness.org 70
i 52232 | Err codemadness.org 70
i 52233 -> sndio output -> sndiod on soundserver Err codemadness.org 70
i 52234 Fiddling a little bit with mpd outputs and reading the sndio output driver, i remembered sndiod has native network support… and the mpd sndio output allows you to specify a device (it uses SIO_DEVANY by default). Err codemadness.org 70
i 52235 Err codemadness.org 70
i 52236 So in the end, it's super easy to: Err codemadness.org 70
i 52237 Err codemadness.org 70
i 52238 enable network support in sndio on the remote machine i want the audio to play by adding -L<local ip> to sndiod_flags (i have two audio devices, with an input coming from the webcam): Err codemadness.org 70
i 52239 sndiod_flags="-L10.246.200.10 -f rsnd/0 -f rsnd/1" Err codemadness.org 70
i 52240 open pf on port 11025 from the sound server ip: Err codemadness.org 70
i 52241 pass in proto tcp from 10.246.200.1 to any port 11025 Err codemadness.org 70
i 52242 configure a new output in mpd: Err codemadness.org 70
i 52243 audio_output { Err codemadness.org 70
i 52244 type "sndio" Err codemadness.org 70
i 52245 name "sndio on renton" Err codemadness.org 70
i 52246 device "snd@10.246.200.10/0" Err codemadness.org 70
i 52247 mixer_type "software" Err codemadness.org 70
i 52248 } Err codemadness.org 70
i 52249 and enable the new output in mpd: Err codemadness.org 70
i 52250 $mpc enable 2 Err codemadness.org 70
i 52251 Output 1 (Local speakers) is disabled Err codemadness.org 70
i 52252 Output 2 (sndio on renton) is enabled Err codemadness.org 70
i 52253 Output 3 (HTTP stream) is disabled Err codemadness.org 70
i 52254 Results in a big win: no gap anymore with the local speakers, no reencoding, no need to configure a client to play the stream, and i can still probably reproduce the same scheme over ssh from $work using a RemoteForward. Err codemadness.org 70
i 52255 Err codemadness.org 70
i 52256 mpd -> sndio output 2 -> network -> sndiod on remote machine Err codemadness.org 70
i 52257 | Err codemadness.org 70
i 52258 -> sndio output 1 -> sndiod on soundserver Err codemadness.org 70
i 52259 Thanks ratchov@ for sndiod :) Err codemadness.org 70
i 52260 Err codemadness.org 70
i 52261 Err codemadness.org 70
i 52262 ###MirBSD’s Korn Shell on Plan9 Jehanne
Err codemadness.org 70 i 52265 Err codemadness.org 70 i 52266Err codemadness.org 70 i 52267Err codemadness.org 70 i 52274 Err codemadness.org 70 i 52275Let start by saying that I’m not really a C programmer.
Err codemadness.org 70 i 52273
Err codemadness.org 70 i 52268 My last public contribution to a POSIX C program was a little improvement to the Snort’s react module back in 2008.
Err codemadness.org 70 i 52269 So while I know the C language well enough, I do not know anything about the subtleness of the standard library and I have little experience with POSIX semantics.
Err codemadness.org 70 i 52270 This is not a big issue with Plan 9, since the C library and compiler are not standard anyway, but with Jehanne (a Plan 9 derivative of my own) I want to build a simple, loosely coupled, system that can actually run useful free software ported from UNIX.
Err codemadness.org 70 i 52271 So I ported RedHat’s newlib to Jehanne on top of a new system library I wrote, LibPOSIX, that provides the necessary emulations. I wrote several test, checking they run the same on Linux and Jehanne, and then I begun looking for a real-world, battle tested, application to port first.
Err codemadness.org 70 i 52272 I approached MirBSD’s Korn Shell for several reason:
Err codemadness.org 70 i 52283Err codemadness.org 70 i 52288 Err codemadness.org 70 i 52289I was very confident. I had read the POSIX standard after all! And I had a test suite!
Err codemadness.org 70 i 52287
Err codemadness.org 70 i 52284 I remember, I thought “Given newlib, how hard can it be?”
Err codemadness.org 70 i 52285 The porting begun on September 1, 2017. It was completed by tg on January 5, 2018. 125 nights later.
Err codemadness.org 70 i 52286 Turn out, my POSIX emulation was badly broken. Not just because of the usual bugs that any piece of C can have: I didn’t understood most POSIX semantics at all!
iXsystems
Err codemadness.org 70 i 52292 Err codemadness.org 70 i 52293###Static site generator with rsync and lowdown on OpenBSD
Err codemadness.org 70 i 52294 Err codemadness.org 70 i 52295ssg is a tiny POSIX-compliant shell script with few dependencies:
Err codemadness.org 70 i 52298lowdown(1) to parse markdown,
Err codemadness.org 70 i 52301rsync(1) to copy temporary files, and
Err codemadness.org 70 i 52304entr(1) to watch file changes.
Err codemadness.org 70 i 52307It generates Markdown articles to a static website.
Err codemadness.org 70 i 52310It copies the current directory to a temporary on in /tmp skipping .* and _*, renders all Markdown articles to HTML, generates RSS feed based on links from index.html, extracts the first <h1> tag from every article to generate a sitemap and use it as a page title, then wraps articles with a single HTML template, copies everything from the temporary directory to $DOCS/
Err codemadness.org 70 i 52313Err codemadness.org 70 i 52317Err codemadness.org 70 i 52319 Err codemadness.org 70 i 52320Why not Jekyll or “$X”?
Err codemadness.org 70 i 52318
Err codemadness.org 70 i 52325Err codemadness.org 70 i 52329 Err codemadness.org 70 i 52330ssg and its dependencies are about 800KB combined. Compare that to 78MB of ruby with Jekyll and all the gems. So ssg can be installed in just few seconds on almost any Unix-like operating system.
Err codemadness.org 70 i 52328
Err codemadness.org 70 i 52326 Obviously, ssg is tailored for my needs, it has all features I need and only those I use.
Err codemadness.org 70 i 52327 Keeping ssg helps you to master your Unix-shell skills: awk, grep, sed, sh, cut, tr. As a web developer you work with lots of text: code and data. So you better master these wonderful tools.
Err codemadness.org 70 i 52335Err codemadness.org 70 i 52337 Err codemadness.org 70 i 52338100 pps. On modern computers ssg generates a hundred pages per second. Half of a time for markdown rendering and another half for wrapping articles into the template. I heard good static site generators work—twice as fast—at 200 pps, so there’s lots of performance that can be gained. ;)
Err codemadness.org 70 i 52336
###Why does FreeBSD have virtually no (0%) desktop market share?
Err codemadness.org 70 i 52341 Err codemadness.org 70 i 52342Err codemadness.org 70 i 52347Err codemadness.org 70 i 52349 Err codemadness.org 70 i 52350In absolute fairness to those involved, it was an understandable decision, both from a research perspective, and from an economic perspective, although likely not, from a technology perspective.
Err codemadness.org 70 i 52348
Err codemadness.org 70 i 52355Err codemadness.org 70 i 52360 Err codemadness.org 70 i 52361The decision was taken because the X Window System was intended to run on cheap hardware, and, at the time, that meant reduced functionality in the end-point device with the physical display attached to it.
Err codemadness.org 70 i 52359
Err codemadness.org 70 i 52356 At the same time, another force was acting to also limit X displays to display services only, rather than rolling in both window management and specific widget instances for common operational paradigms.
Err codemadness.org 70 i 52357 Mostly, common operational paradigms didn’t really exist for windowing systems because they also simply didn’t exist at the time, and no one really knew how people were going to use the things, and so researchers didn’t want to commit future research to a set of hard constraints.
Err codemadness.org 70 i 52358 So a decision was made: separate the display services from the application at the lowest level of graphics primitives currently in use at the time.
Err codemadness.org 70 i 52366Err codemadness.org 70 i 52371 Err codemadness.org 70 i 52372First, it guaranteed that all higher level graphics would live on the host side of the X protocol, instead of on the display device side of the protocol.
Err codemadness.org 70 i 52370
Err codemadness.org 70 i 52367 Despite a good understanding of Moore’s law, and the fact that, since no X Terminals existed at the time as hardware, but were instead running as emulations on workstations that had sufficient capability, this put the higher level GUI object libraries — referred to as “widgets” — in host libraries linked into the applications.
Err codemadness.org 70 i 52368 Second, it guaranteed that display organization and management paradigms would also live on the host side of the protocol — assumed, in contradiction to the previous decision, to be running on the workstation.
Err codemadness.org 70 i 52369 But, presumably, at some point, as lightweight X Terminals became available, to migrate to a particular host computer managing compute resource login/access services.
Err codemadness.org 70 i 52377Err codemadness.org 70 i 52386 Err codemadness.org 70 i 52387Specifically, the consequences of these decisions have been with us ever since:
Err codemadness.org 70 i 52385
Err codemadness.org 70 i 52378 Look-and-feel are a consequence of the toolkit chosen by the application programmer, rather than a user decision which applies universally to all applications.
Err codemadness.org 70 i 52379 You could call this “lack of a theme”, and — although I personally despise the idea of customizing or “theming” desktops — this meant that one paradigm chosen by the user would not apply universally across all applications, no matter who had written them.
Err codemadness.org 70 i 52380 Window management style is a preference.
Err codemadness.org 70 i 52381 You could call this a more radical version of “theming” — which you will remember, I despise — but a consequence to this is that training is not universal across personnel using such systems, nor is it transferrable.
Err codemadness.org 70 i 52382 In other words, I can’t send someone to a class, and have them come back and use the computers in the office as a tool, with the computer itself — and the elements not specific to the application itself — disappearing into the background.
Err codemadness.org 70 i 52383 Both of these ultimately render an X-based system unsuitable for desktops.
Err codemadness.org 70 i 52384 I can’t pay once for training. Training that I do pay for does not easily and naturally translate between applications. Each new version may radically alter the desktop management paradigm into unrecognizability.
Err codemadness.org 70 i 52392Err codemadness.org 70 i 52398 Err codemadness.org 70 i 52399Well, the Linux community has been working on something called Wayland, and it is very promising…
Err codemadness.org 70 i 52397
Err codemadness.org 70 i 52393 …In the same way X was “very promising” in 1984, because, unfortunately, they are making exactly the same mistakes X made in 1984, rather than correcting them, now that we have 20/20 hindsight, and know what a mature widget library should look like.
Err codemadness.org 70 i 52394 So Wayland is screwing up again.
Err codemadness.org 70 i 52395 But hey, it only took us, what, 25 years to get from X in 1987 to Wayland in in 2012.
Err codemadness.org 70 i 52396 Maybe if we try again in 2037, we can get to where Windows was in 1995.
##Beastie Bits
Err codemadness.org 70 i 52402 Err codemadness.org 70 i 52403Tarsnap
Err codemadness.org 70 i 52414 Err codemadness.org 70 i 52415##Feedback/Questions
Err codemadness.org 70 i 52416 Err codemadness.org 70 i 52417##Headlines
Err codemadness.org 70
i 52434 ###Silent Fanless FreeBSD Desktop/Server
Err codemadness.org 70 i 52437Err codemadness.org 70 i 52439 Err codemadness.org 70 i 52440Today I will write about silent fanless FreeBSD desktop or server computer … or NAS … or you name it, it can have multiple purposes. It also very low power solution, which also means that it will not overheat. Silent means no fans at all, even for the PSU. The format of the system should also be brought to minimum, so Mini-ITX seems best solution here.
Err codemadness.org 70 i 52438
Err codemadness.org 70 i 52441Err codemadness.org 70 i 52443 Err codemadness.org 70 i 52444I have chosen Intel based solutions as they are very low power (6-10W), if you prefer AMD (as I often do) the closest solution in comparable price and power is Biostar A68N-2100 motherboard with AMD E1-2100 CPU and 9W power. Of course AMD has even more low power SoC solutions but finding the Mini-ITX motherboard with decent price is not an easy task. For comparison Intel has lots of such solutions below 6W whose can be nicely filtered on the ark.intel.com page. Pity that AMD does not provide such filtration for their products. I also chosen AES instructions as storage encryption (GELI on FreeBSD) today seems as obvious as HTTPS for the web pages.
Err codemadness.org 70 i 52442
Err codemadness.org 70 i 52449Err codemadness.org 70 i 52451 Err codemadness.org 70 i 52452This motherboard uses Intel J3355 SoC which uses 10W and has AES instructions. It has two cores at your disposal but it also supports VT-x and EPT extensions so you can even run Bhyve on it.
Err codemadness.org 70 i 52450
Err codemadness.org 70 i 52457Err codemadness.org 70 i 52459 Err codemadness.org 70 i 52460Now, an example system would look like that one below, here are the components with their prices.
Err codemadness.org 70 i 52458
Err codemadness.org 70 i 52471Err codemadness.org 70 i 52473 Err codemadness.org 70 i 52474The PSU 12V 160W Pico (internal) and PSU 12V 96W FSP can be purchased on aliexpress.com or ebay.com for example, at least I got them there. Here is the 12V 160W Pico (internal) PSU and its optional additional cables to power the optional HDDs. If course its one SATA power and one MOLEX power so additional MOLEX-SATA power adapter for about 1$ would be needed. Here is the 12V 96W FSP (external) PSU without the power cord.
Err codemadness.org 70 i 52472
Err codemadness.org 70 i 52475Err codemadness.org 70 i 52477 Err codemadness.org 70 i 52478This gives as total silent fanless system price of about $120. Its about ONE TENTH OF THE COST of the cheapest FreeNAS hardware solution available – the FreeNAS Mini (Diskless) costs $1156 also without disks.
Err codemadness.org 70 i 52476
Err codemadness.org 70 i 52479Err codemadness.org 70 i 52481 Err codemadness.org 70 i 52482You can put plain FreeBSD on top of it or Solaris/Illumos distribution OmniOSce which is server oriented. You can use prebuilt NAS solution based on FreeBSD like FreeNAS, NAS4Free, ZFSguru or even Solaris/Illumos based storage with napp-it appliance.
Err codemadness.org 70 i 52480
###An annotated look at a NetBSD Pinebook’s startup
Err codemadness.org 70 i 52485 Err codemadness.org 70 i 52486# sysctl hw.clk.sun50ia64ccu0.mmc2 Err codemadness.org 70
i 52498 hw.clk.sun50ia64ccu0.mmc2.rate = 200000000 Err codemadness.org 70
i 52499 hw.clk.sun50ia64ccu0.mmc2.parent = pll_periph0_2x Err codemadness.org 70
i 52500 hw.clk.sun50ia64ccu0.mmc2.parent_domain = sun50ia64ccu0 Err codemadness.org 70
i 52501 Err codemadness.org 70
i 52502 Err codemadness.org 70
i 52503 Digital Ocean
Err codemadness.org 70
i 52506 http://do.co/bsdnow
###BSDCan 2018 Trip Report: Mark Johnston
Err codemadness.org 70 i 52509 Err codemadness.org 70 i 52510Err codemadness.org 70 i 52511Err codemadness.org 70 i 52521 Err codemadness.org 70 i 52522BSDCan is a highlight of my summers: the ability to have face-to-face conversations with fellow developers and contributors is invaluable and always helps refresh my enthusiasm for FreeBSD. While in a perfect world we would all be able to communicate effectively over the Internet, it’s often noted that locking a group of developers together in a room can be a very efficient way to make progress on projects that otherwise get strung out over time, and to me this is one of the principal functions of BSD conferences. In my case I was able to fix some kgdb bugs that had been hindering me for months; get some opinions on the design of a feature I’ve been working on for FreeBSD 12.0; hear about some ongoing usage of code that I’ve worked on; and do some pair-debugging of an issue that has been affecting another developer.
Err codemadness.org 70 i 52520
Err codemadness.org 70 i 52512 As is tradition, on Tuesday night I dropped off my things at the university residence where I was staying, and headed straight to the Royal Oak. This year it didn’t seem quite as packed with BSD developers, but I did meet several long-time colleagues and get a chance to catch up. In particular, I chatted with Justin Hibbits and got to hear about the bring-up of FreeBSD on POWER9, a new CPU family released by IBM. Justin was able to acquire a workstation based upon this CPU, which is a great motivator for getting FreeBSD into shape on that platform. POWER9 also has some promise in the server market, so it’s important for FreeBSD to be a viable OS choice there.
Err codemadness.org 70 i 52513 Wednesday morning saw the beginning of the two-day FreeBSD developer summit, which precedes the conference proper. Gordon Tetlow led the summit and did an excellent job organizing things and keeping to the schedule. The first presentation was by Deb Goodkin of the FreeBSD Foundation, who gave an overview of the Foundation’s role and activities. After Deb’s presentation, present members of the FreeBSD core team discussed the work they had done over the past two years, as well as open tasks that would be handed over to the new core team upon completion of the ongoing election. Finally, Marius Strobl rounded off the day’s presentations by discussing the state and responsibilities of FreeBSD’s release engineering team.
Err codemadness.org 70 i 52514 One side discussion of interest to me was around the notion of tightening integration with our Bugzilla instance; at moment we do not have any good means to mark a given bug as blocking a release, making it easy for bugs to slip into releases and thus lowering our overall quality. With FreeBSD 12.0 upon us, I plan to help with the triage and fixes for known regressions before the release process begins.
Err codemadness.org 70 i 52515 After a break, the rest of the morning was devoted to plans for features in upcoming FreeBSD releases. This is one of my favorite discussion topics and typically takes the form of have/need/want, where developers collectively list features that they’ve developed and intend to upstream (have), features that they are missing (need), and nice-to-have features (want). This year, instead of the usual format, we listed features that are intended to ship in FreeBSD 12.0. The compiled list ended up being quite ambitious given how close we are to the beginning of the release cycle, but many individual developers (including myself) have signed up to deliver work. I’m hopeful that most, if not all of it, will make it into the release.
Err codemadness.org 70 i 52516 After lunch, I attended a discussion led by Matt Ahrens and Alexander Motin on OpenZFS. Of particular interest to me were some observations made regarding the relative quantity and quality of contributions made by different “camps” of OpenZFS users (illumos, FreeBSD and ZoL), and their respective track records of upstreaming enhancements to the OpenZFS project. In part due to the high pace of changes in ZoL, the definition of “upstream” for ZFS has become murky, and of late ZFS changes have been ported directly from ZoL. Alexander discussed some known problems with ZFS on FreeBSD that have been discovered through performance testing. While I’m not familiar with ZFS internals, Alexander noted that ZFS’ write path has poor SMP scalability on FreeBSD owing to some limitations in a certain kernel API called taskqueue(9). I would like to explore this problem further and perhaps integrate a relatively new alternative interface which should perform better.
Err codemadness.org 70 i 52517 Friday and Saturday were, of course, taken up by BSDCan talks. Friday’s keynote was by Benno Rice, who provided some history of UNIX boot systems as a precursor to some discussion of systemd and the difficulties presented by a user and developer community that actively resist change. The rest of the morning was consumed by talks and passed by quickly. First was Colin Percival’s detailed examination of where the FreeBSD kernel spends time during boot, together with an overview of some infrastructure he added to track boot times. He also provided a list of improvements that have been made since he started taking measurements, and some areas we can further improve. Colin’s existing work in this area has already brought about substantial reductions in boot time; amusingly, one of the remaining large delays comes from the keyboard driver, which contains a workaround for old PS/2 keyboards. While there seems to be general agreement that the workaround is probably no longer needed on most systems, the lingering uncertainty around this prevents us from removing the workaround. This is, sadly, a fairly typical example of an OS maintenance burden, and underscores the need to carefully document hardware bug workarounds. After this talk, I got to see some rather novel demonstrations of system tracing using dwatch, a new utility by Devin Teske, which aims to provide a user-friendly interface to DTrace. After lunch, I attended talks on netdump, a protocol for transmitting kernel dumps over a network after the system has panicked, and on a VPC implementation for FreeBSD. After the talks ended, I headed yet again to the hacker lounge and had some fruitful discussions on early microcode loading (one of my features for FreeBSD 12.0). These led me to reconsider some aspects of my approach and saved me a lot of time. Finally, I continued my debugging session from Wednesday with help from a couple of other developers.
Err codemadness.org 70 i 52518 Saturday’s talks included a very thorough account by Li-Wen Hsu of his work in organizing a BSD conference in Taipei last year. As one of the attendees, I had felt that the conference had gone quite smoothly and was taken aback by the number of details and pitfalls that Li-Wen enumerated during his talk. This was followed by an excellent talk by Baptiste Daroussin on the difficulties one encounters when deploying FreeBSD in new environments. Baptiste offered criticisms of a number of aspects of FreeBSD, some of which hit close to home as they involved portions of the system that I’ve worked on.
Err codemadness.org 70 i 52519 At the conclusion of the talks, we all gathered in the main lecture hall, where Dan led a traditional and quite lively auction for charity. I managed to snag a Pine64 board and will be getting FreeBSD installed on it the first chance I get. At the end of the auction, we all headed to ByWard for dinner, concluding yet another BSDCan.
##News Roundup
Err codemadness.org 70
i 52529 ###Transparent network audio with mpd & sndiod
Err codemadness.org 70 i 52532Err codemadness.org 70 i 52534 Err codemadness.org 70 i 52535Landry Breuil (landry@ when wearing his developer hat) wrote in…
Err codemadness.org 70 i 52533
I've been a huge fan of MPD over the years to centralize my audio collection, and i've been using it with the http output to stream the music as a radio on the computer i'm currently using… Err codemadness.org 70
i 52536 Err codemadness.org 70
i 52537 audio_output { Err codemadness.org 70
i 52538 type "sndio" Err codemadness.org 70
i 52539 name "Local speakers" Err codemadness.org 70
i 52540 mixer_type "software" Err codemadness.org 70
i 52541 } Err codemadness.org 70
i 52542 audio_output { Err codemadness.org 70
i 52543 type "httpd" Err codemadness.org 70
i 52544 name "HTTP stream" Err codemadness.org 70
i 52545 mixer_type "software" Err codemadness.org 70
i 52546 encoder "vorbis" Err codemadness.org 70
i 52547 port "8000" Err codemadness.org 70
i 52548 format "44100:16:2" Err codemadness.org 70
i 52549 } Err codemadness.org 70
i 52550 this setup worked for years, allows me to stream my home radio to $work by tunnelling the port 8000 over ssh via LocalForward, but that still has some issues: Err codemadness.org 70
i 52551 Err codemadness.org 70
i 52552 a distinct timing gap between the 'local output' (ie the speakers connected to the machine where MPD is running) and the 'http output' caused by the time it takes to reencode the stream, which is ugly when you walk through the house and have a 15s delay Err codemadness.org 70
i 52553 sometimes mplayer as a client doesn't detect the pauses in the stream and needs to be restarted Err codemadness.org 70
i 52554 i need to configure/start a client on each computer and point it at the sound server url (can do via gmpc shoutcast client plugin…) Err codemadness.org 70
i 52555 it's not that elegant to reencode the stream, and it wastes cpu cycles Err codemadness.org 70
i 52556 So the current scheme is: Err codemadness.org 70
i 52557 Err codemadness.org 70
i 52558 mpd -> http output -> network -> mplayer -> sndiod on remote machine Err codemadness.org 70
i 52559 | Err codemadness.org 70
i 52560 -> sndio output -> sndiod on soundserver Err codemadness.org 70
i 52561 Fiddling a little bit with mpd outputs and reading the sndio output driver, i remembered sndiod has native network support… and the mpd sndio output allows you to specify a device (it uses SIO_DEVANY by default). Err codemadness.org 70
i 52562 Err codemadness.org 70
i 52563 So in the end, it's super easy to: Err codemadness.org 70
i 52564 Err codemadness.org 70
i 52565 enable network support in sndio on the remote machine i want the audio to play by adding -L<local ip> to sndiod_flags (i have two audio devices, with an input coming from the webcam): Err codemadness.org 70
i 52566 sndiod_flags="-L10.246.200.10 -f rsnd/0 -f rsnd/1" Err codemadness.org 70
i 52567 open pf on port 11025 from the sound server ip: Err codemadness.org 70
i 52568 pass in proto tcp from 10.246.200.1 to any port 11025 Err codemadness.org 70
i 52569 configure a new output in mpd: Err codemadness.org 70
i 52570 audio_output { Err codemadness.org 70
i 52571 type "sndio" Err codemadness.org 70
i 52572 name "sndio on renton" Err codemadness.org 70
i 52573 device "snd@10.246.200.10/0" Err codemadness.org 70
i 52574 mixer_type "software" Err codemadness.org 70
i 52575 } Err codemadness.org 70
i 52576 and enable the new output in mpd: Err codemadness.org 70
i 52577 $mpc enable 2 Err codemadness.org 70
i 52578 Output 1 (Local speakers) is disabled Err codemadness.org 70
i 52579 Output 2 (sndio on renton) is enabled Err codemadness.org 70
i 52580 Output 3 (HTTP stream) is disabled Err codemadness.org 70
i 52581 Results in a big win: no gap anymore with the local speakers, no reencoding, no need to configure a client to play the stream, and i can still probably reproduce the same scheme over ssh from $work using a RemoteForward. Err codemadness.org 70
i 52582 Err codemadness.org 70
i 52583 mpd -> sndio output 2 -> network -> sndiod on remote machine Err codemadness.org 70
i 52584 | Err codemadness.org 70
i 52585 -> sndio output 1 -> sndiod on soundserver Err codemadness.org 70
i 52586 Thanks ratchov@ for sndiod :) Err codemadness.org 70
i 52587 Err codemadness.org 70
i 52588 Err codemadness.org 70
i 52589 ###MirBSD’s Korn Shell on Plan9 Jehanne
Err codemadness.org 70 i 52592 Err codemadness.org 70 i 52593Err codemadness.org 70 i 52594Err codemadness.org 70 i 52601 Err codemadness.org 70 i 52602Let start by saying that I’m not really a C programmer.
Err codemadness.org 70 i 52600
Err codemadness.org 70 i 52595 My last public contribution to a POSIX C program was a little improvement to the Snort’s react module back in 2008.
Err codemadness.org 70 i 52596 So while I know the C language well enough, I do not know anything about the subtleness of the standard library and I have little experience with POSIX semantics.
Err codemadness.org 70 i 52597 This is not a big issue with Plan 9, since the C library and compiler are not standard anyway, but with Jehanne (a Plan 9 derivative of my own) I want to build a simple, loosely coupled, system that can actually run useful free software ported from UNIX.
Err codemadness.org 70 i 52598 So I ported RedHat’s newlib to Jehanne on top of a new system library I wrote, LibPOSIX, that provides the necessary emulations. I wrote several test, checking they run the same on Linux and Jehanne, and then I begun looking for a real-world, battle tested, application to port first.
Err codemadness.org 70 i 52599 I approached MirBSD’s Korn Shell for several reason:
Err codemadness.org 70 i 52610Err codemadness.org 70 i 52615 Err codemadness.org 70 i 52616I was very confident. I had read the POSIX standard after all! And I had a test suite!
Err codemadness.org 70 i 52614
Err codemadness.org 70 i 52611 I remember, I thought “Given newlib, how hard can it be?”
Err codemadness.org 70 i 52612 The porting begun on September 1, 2017. It was completed by tg on January 5, 2018. 125 nights later.
Err codemadness.org 70 i 52613 Turn out, my POSIX emulation was badly broken. Not just because of the usual bugs that any piece of C can have: I didn’t understood most POSIX semantics at all!
iXsystems
Err codemadness.org 70 i 52619 Err codemadness.org 70 i 52620###Static site generator with rsync and lowdown on OpenBSD
Err codemadness.org 70 i 52621 Err codemadness.org 70 i 52622ssg is a tiny POSIX-compliant shell script with few dependencies:
Err codemadness.org 70 i 52625lowdown(1) to parse markdown,
Err codemadness.org 70 i 52628rsync(1) to copy temporary files, and
Err codemadness.org 70 i 52631entr(1) to watch file changes.
Err codemadness.org 70 i 52634It generates Markdown articles to a static website.
Err codemadness.org 70 i 52637It copies the current directory to a temporary on in /tmp skipping .* and _*, renders all Markdown articles to HTML, generates RSS feed based on links from index.html, extracts the first <h1> tag from every article to generate a sitemap and use it as a page title, then wraps articles with a single HTML template, copies everything from the temporary directory to $DOCS/
Err codemadness.org 70 i 52640Err codemadness.org 70 i 52644Err codemadness.org 70 i 52646 Err codemadness.org 70 i 52647Why not Jekyll or “$X”?
Err codemadness.org 70 i 52645
Err codemadness.org 70 i 52652Err codemadness.org 70 i 52656 Err codemadness.org 70 i 52657ssg and its dependencies are about 800KB combined. Compare that to 78MB of ruby with Jekyll and all the gems. So ssg can be installed in just few seconds on almost any Unix-like operating system.
Err codemadness.org 70 i 52655
Err codemadness.org 70 i 52653 Obviously, ssg is tailored for my needs, it has all features I need and only those I use.
Err codemadness.org 70 i 52654 Keeping ssg helps you to master your Unix-shell skills: awk, grep, sed, sh, cut, tr. As a web developer you work with lots of text: code and data. So you better master these wonderful tools.
Err codemadness.org 70 i 52662Err codemadness.org 70 i 52664 Err codemadness.org 70 i 52665100 pps. On modern computers ssg generates a hundred pages per second. Half of a time for markdown rendering and another half for wrapping articles into the template. I heard good static site generators work—twice as fast—at 200 pps, so there’s lots of performance that can be gained. ;)
Err codemadness.org 70 i 52663
###Why does FreeBSD have virtually no (0%) desktop market share?
Err codemadness.org 70 i 52668 Err codemadness.org 70 i 52669Err codemadness.org 70 i 52674Err codemadness.org 70 i 52676 Err codemadness.org 70 i 52677In absolute fairness to those involved, it was an understandable decision, both from a research perspective, and from an economic perspective, although likely not, from a technology perspective.
Err codemadness.org 70 i 52675
Err codemadness.org 70 i 52682Err codemadness.org 70 i 52687 Err codemadness.org 70 i 52688The decision was taken because the X Window System was intended to run on cheap hardware, and, at the time, that meant reduced functionality in the end-point device with the physical display attached to it.
Err codemadness.org 70 i 52686
Err codemadness.org 70 i 52683 At the same time, another force was acting to also limit X displays to display services only, rather than rolling in both window management and specific widget instances for common operational paradigms.
Err codemadness.org 70 i 52684 Mostly, common operational paradigms didn’t really exist for windowing systems because they also simply didn’t exist at the time, and no one really knew how people were going to use the things, and so researchers didn’t want to commit future research to a set of hard constraints.
Err codemadness.org 70 i 52685 So a decision was made: separate the display services from the application at the lowest level of graphics primitives currently in use at the time.
Err codemadness.org 70 i 52693Err codemadness.org 70 i 52698 Err codemadness.org 70 i 52699First, it guaranteed that all higher level graphics would live on the host side of the X protocol, instead of on the display device side of the protocol.
Err codemadness.org 70 i 52697
Err codemadness.org 70 i 52694 Despite a good understanding of Moore’s law, and the fact that, since no X Terminals existed at the time as hardware, but were instead running as emulations on workstations that had sufficient capability, this put the higher level GUI object libraries — referred to as “widgets” — in host libraries linked into the applications.
Err codemadness.org 70 i 52695 Second, it guaranteed that display organization and management paradigms would also live on the host side of the protocol — assumed, in contradiction to the previous decision, to be running on the workstation.
Err codemadness.org 70 i 52696 But, presumably, at some point, as lightweight X Terminals became available, to migrate to a particular host computer managing compute resource login/access services.
Err codemadness.org 70 i 52704Err codemadness.org 70 i 52713 Err codemadness.org 70 i 52714Specifically, the consequences of these decisions have been with us ever since:
Err codemadness.org 70 i 52712
Err codemadness.org 70 i 52705 Look-and-feel are a consequence of the toolkit chosen by the application programmer, rather than a user decision which applies universally to all applications.
Err codemadness.org 70 i 52706 You could call this “lack of a theme”, and — although I personally despise the idea of customizing or “theming” desktops — this meant that one paradigm chosen by the user would not apply universally across all applications, no matter who had written them.
Err codemadness.org 70 i 52707 Window management style is a preference.
Err codemadness.org 70 i 52708 You could call this a more radical version of “theming” — which you will remember, I despise — but a consequence to this is that training is not universal across personnel using such systems, nor is it transferrable.
Err codemadness.org 70 i 52709 In other words, I can’t send someone to a class, and have them come back and use the computers in the office as a tool, with the computer itself — and the elements not specific to the application itself — disappearing into the background.
Err codemadness.org 70 i 52710 Both of these ultimately render an X-based system unsuitable for desktops.
Err codemadness.org 70 i 52711 I can’t pay once for training. Training that I do pay for does not easily and naturally translate between applications. Each new version may radically alter the desktop management paradigm into unrecognizability.
Err codemadness.org 70 i 52719Err codemadness.org 70 i 52725 Err codemadness.org 70 i 52726Well, the Linux community has been working on something called Wayland, and it is very promising…
Err codemadness.org 70 i 52724
Err codemadness.org 70 i 52720 …In the same way X was “very promising” in 1984, because, unfortunately, they are making exactly the same mistakes X made in 1984, rather than correcting them, now that we have 20/20 hindsight, and know what a mature widget library should look like.
Err codemadness.org 70 i 52721 So Wayland is screwing up again.
Err codemadness.org 70 i 52722 But hey, it only took us, what, 25 years to get from X in 1987 to Wayland in in 2012.
Err codemadness.org 70 i 52723 Maybe if we try again in 2037, we can get to where Windows was in 1995.
##Beastie Bits
Err codemadness.org 70 i 52729 Err codemadness.org 70 i 52730Tarsnap
Err codemadness.org 70 i 52741 Err codemadness.org 70 i 52742##Feedback/Questions
Err codemadness.org 70 i 52743 Err codemadness.org 70 i 52744##Headlines
Err codemadness.org 70
i 53119 ###FreeBSD 11.2-RELEASE Available
Err codemadness.org 70 i 53127Err codemadness.org 70 i 53134 Err codemadness.org 70 i 53135OpenSSH has been updated to version 7.5p1.
Err codemadness.org 70 i 53133
Err codemadness.org 70 i 53128 OpenSSL has been updated to version 1.0.2o.
Err codemadness.org 70 i 53129 The clang, llvm, lldb and compiler-rt utilities have been updated to version 6.0.0.
Err codemadness.org 70 i 53130 The libarchive(3) library has been updated to version 3.3.2.
Err codemadness.org 70 i 53131 The libxo(3) library has been updated to version 0.9.0.
Err codemadness.org 70 i 53132 Major Device driver updates to:
Err codemadness.org 70 i 53142Err codemadness.org 70 i 53145 Err codemadness.org 70 i 53146New drivers:
Err codemadness.org 70 i 53144
Err codemadness.org 70 i 53143 + drm-next-kmod driver supporting integrated Intel graphics with the i915 driver.
Err codemadness.org 70 i 53153Err codemadness.org 70 i 53169 Err codemadness.org 70 i 53170The newsyslog(8) utility has been updated to support RFC5424-compliant messages when rotating system logs
Err codemadness.org 70 i 53168
Err codemadness.org 70 i 53154 The diskinfo(8) utility has been updated to include two new flags, -s which displays the disk identity (usually the serial number), and -p which displays the physical path to the disk in a storage controller.
Err codemadness.org 70 i 53155 The top(1) utility has been updated to allow filtering on multiple user names when the -U flag is used
Err codemadness.org 70 i 53156 The umount(8) utility has been updated to include a new flag, -N, which is used to forcefully unmount an NFS mounted filesystem.
Err codemadness.org 70 i 53157 The ps(1) utility has been updated to display if a process is running with capsicum(4) capability mode, indicated by the flag ‘C’
Err codemadness.org 70 i 53158 The service(8) utility has been updated to include a new flag, -j, which is used to interact with services running within a jail(8). The argument to -j can be either the name or numeric jail ID
Err codemadness.org 70 i 53159 The mlx5tool(8) utility has been added, which is used to manage Connect-X 4 and Connect-X 5 devices supported by mlx5io(4).
Err codemadness.org 70 i 53160 The ifconfig(8) utility has been updated to include a random option, which when used with the ether option, generates a random MAC address for an interface.
Err codemadness.org 70 i 53161 The dwatch(1) utility has been introduced
Err codemadness.org 70 i 53162 The efibootmgr(8) utility has been added, which is used to manipulate the EFI boot manager.
Err codemadness.org 70 i 53163 The etdump(1) utility has been added, which is used to view El Torito boot catalog information.
Err codemadness.org 70 i 53164 The linux(4) ABI compatibility layer has been updated to include support for musl consumers.
Err codemadness.org 70 i 53165 The fdescfs(5) filesystem has been updated to support Linux®-specific fd(4) /dev/fd and /proc/self/fd behavior
Err codemadness.org 70 i 53166 Support for virtio_console(4) has been added to bhyve(4).
Err codemadness.org 70 i 53167 The length of GELI passphrases entered when booting a system with encrypted disks is now hidden by default. See the configuration options in geli(8) to restore the previous behavior.
###Setting up an MTA Behind Tor
Err codemadness.org 70 i 53200 Err codemadness.org 70 i 53201Err codemadness.org 70 i 53202Err codemadness.org 70 i 53204 Err codemadness.org 70 i 53205This article will document how to set up OpenSMTPD behind a fully Tor-ified network. Given that Tor’s DNS resolver code does not support MX record lookups, care must be taken for setting up an MTA behind a fully Tor-ified network. OpenSMTPD was chosen because it was easy to modify to force it to fall back to A/AAAA lookups when MX lookups failed with a DNS result code of NOTIMP (4).
Err codemadness.org 70 i 53203
Err codemadness.org 70 i 53206Err codemadness.org 70 i 53208 Err codemadness.org 70 i 53209Note that as of 08 May 2018, the OpenSMTPD project is planning a configuration file language change. The proposed change has not landed. Once it does, this article will be updated to reflect both the old language and new.
Err codemadness.org 70 i 53207
Err codemadness.org 70 i 53210Err codemadness.org 70 i 53212 Err codemadness.org 70 i 53213The reason to use an MTA behing a fully Tor-ified network is to be able to support email behind the .onion TLD. This setup will only allow us to send and receive email to and from the .onion TLD.
Err codemadness.org 70 i 53211
Requirements:
Err codemadness.org 70 i 53216A fully Tor-ified network
Err codemadness.org 70 i 53219HardenedBSD as the operating system
Err codemadness.org 70 i 53222A server (or VM) running HardenedBSD behind the fully Tor-ified network.
Err codemadness.org 70 i 53225/usr/ports is empty
Err codemadness.org 70 i 53228Or is already pre-populated with the HardenedBSD Ports tree
Err codemadness.org 70 i 53231Why use HardenedBSD? We get all the features of FreeBSD (ZFS, DTrace, bhyve, and jails) with enhanced security through exploit mitigations and system hardening. Tor has a very unique threat landscape and using a hardened ecosystem is crucial to mitigating risks and threats.
Err codemadness.org 70 i 53234Err codemadness.org 70 i 53238Err codemadness.org 70 i 53240 Err codemadness.org 70 i 53241Also note that this article reflects how I’ve set up my MTA. I’ve included configuration files verbatim. You will need to replace the text that refers to my .onion domain with yours.
Err codemadness.org 70 i 53239
Err codemadness.org 70 i 53242Err codemadness.org 70 i 53244 Err codemadness.org 70 i 53245On 08 May 2018, HardenedBSD’s version of OpenSMTPD just gained support for running an MTA behind Tor. The package repositories do not yet contain the patch, so we will compile OpenSMTPD from ports.
Err codemadness.org 70 i 53243
iXsystems
Err codemadness.org 70
i 53259 https://www.forbes.com/sites/forbestechcouncil/2018/06/21/strings-attached-knowing-when-and-when-not-to-accept-vc-funding/#30f9f18f46ec
Err codemadness.org 70
i 53260 https://www.ixsystems.com/blog/self-2018-recap/
###Running pfSense on a Digital Ocean Droplet
Err codemadness.org 70 i 53263 Err codemadness.org 70 i 53264Err codemadness.org 70 i 53265Err codemadness.org 70 i 53267 Err codemadness.org 70 i 53268I love pfSense (and opnSense, no discrimination here). I use it for just about anything, from homelab to large scale deployments and I’ll give out on any fancy <enter brand name fw appliance here> for a pfSense setup on a decent hardware.
Err codemadness.org 70 i 53266
Err codemadness.org 70 i 53269Err codemadness.org 70 i 53272 Err codemadness.org 70 i 53273I also love DigitalOcean, if you ever used them, you know why, if you never did, head over and try, you’ll understand why.
Err codemadness.org 70 i 53271
Err codemadness.org 70 i 53270 <shameless plug: head over to JupiterBroadcasting.com, the best technology content out there, they have coupon codes to get you started with DO>.
Err codemadness.org 70 i 53274Err codemadness.org 70 i 53276 Err codemadness.org 70 i 53277Unfortunately, while DO offers tremendous amount of useful distros and applications, pfSense isn’t one of them. But, where there’s a will, there’s a way, and here’s how to get pfSense up and running on DO so you can have it as the gatekeeper to your kingdom.
Err codemadness.org 70 i 53275
Err codemadness.org 70 i 53278Err codemadness.org 70 i 53280 Err codemadness.org 70 i 53281Start by creating a FreeBSD droplet, choose your droplet size (for modest setups, I find the 5$ to be quite awesome):
Err codemadness.org 70 i 53279
Err codemadness.org 70 i 53282Err codemadness.org 70 i 53284 Err codemadness.org 70 i 53285There are many useful things you can do with pfSense on your droplet, from OpenVPN, squid, firewalling, fancy routing, url filtering, dns black listing and much much more.
Err codemadness.org 70 i 53283
Err codemadness.org 70 i 53290Err codemadness.org 70 i 53296 Err codemadness.org 70 i 53297You have two ways to initiate the initial setup wizard of the web-configurator:
Err codemadness.org 70 i 53295
Err codemadness.org 70 i 53291 Spin up another droplet, log into it and browse your way to the INTERNAL ip address of the internal NIC you’ve set up. This is the long and tedious way, but it’s also somewhat safer as it eliminates the small window of risk the second method poses.
Err codemadness.org 70 i 53292 or
Err codemadness.org 70 i 53293 Once your WAN address is all setup, your pfSense is ready to accept https connection to start the initial web-configurator setup.
Err codemadness.org 70 i 53294 Thing is, there’s a default, well known set of credential to this initial wizard (admin:pfsense), so, there is a slight window of opportunity that someone can swoop in (assuming they know you’ve installed pfsense + your wan IP address + the exact time window between setting up the WAN interface and completing the wizard) and do <enter scary thing here>.
Err codemadness.org 70 i 53298Err codemadness.org 70 i 53300 Err codemadness.org 70 i 53301I leave it up to you which of the path you’d like to go, either way, once you’re done with the web-configurator wizard, you’ll have a shiny new pfSense installation at your disposal running on your favorite VPS.
Err codemadness.org 70 i 53299
Err codemadness.org 70 i 53302Err codemadness.org 70 i 53305 Err codemadness.org 70 i 53306Hopefully this was helpful for someone, I hope to get a similar post soon detailing how to get FreeNAS up and running on DO.
Err codemadness.org 70 i 53304
Err codemadness.org 70 i 53303 Many thanks to Tubsta and his blogpost as well as to Allan Jude, Kris Moore and Benedict Reuschling for their AWESOME and inspiring podcast, BSD Now.
##News Roundup
Err codemadness.org 70
i 53309 ###One year of C
Err codemadness.org 70 i 53312Err codemadness.org 70 i 53314 Err codemadness.org 70 i 53315It’s now nearly a year that I started writing non-trivial amounts of C code again (the first sokol_gfx.h commit was on the 14-Jul-2017), so I guess it’s time for a little retrospective.
Err codemadness.org 70 i 53313
Err codemadness.org 70 i 53316Err codemadness.org 70 i 53318 Err codemadness.org 70 i 53319In the beginning it was more of an experiment: I wanted to see how much I would miss some of the more useful C++ features (for instance namespaces, function overloading, ‘simple’ template code for containers, …), and whether it is possible to write non-trivial codebases in C without going mad.
Err codemadness.org 70 i 53317
Err codemadness.org 70 i 53320Err codemadness.org 70 i 53322 Err codemadness.org 70 i 53323Here are all the github projects I wrote in C:
Err codemadness.org 70 i 53321
Err codemadness.org 70 i 53331Err codemadness.org 70 i 53333 Err codemadness.org 70 i 53334All in all these are around 32k lines of code (not including 3rd party code like flextGL and HandmadeMath). I think I wrote more C code in the recent 10 months than any other language.
Err codemadness.org 70 i 53332
Err codemadness.org 70 i 53335Err codemadness.org 70 i 53337 Err codemadness.org 70 i 53338So one thing seems to be clear: yes, it’s possible to write a non-trivial amount of C code that does something useful without going mad (and it’s even quite enjoyable I might add).
Err codemadness.org 70 i 53336
Here’s a few things I learned:
Err codemadness.org 70 i 53341Pick the right language for a problem
Err codemadness.org 70 i 53344C is a perfect match for WebAssembly
Err codemadness.org 70 i 53347C99 is a huge improvement over C89
Err codemadness.org 70 i 53350The dangers of pointers and explicit memory management are overrated
Err codemadness.org 70 i 53353Less Boilerplate Code
Err codemadness.org 70 i 53356Less Language Feature ‘Anxiety’
Err codemadness.org 70 i 53359Conclusion
Err codemadness.org 70 i 53362Err codemadness.org 70 i 53366Err codemadness.org 70 i 53368 Err codemadness.org 70 i 53369All in all my “C experiment” is a success. For a lot of problems, picking C over C++ may be the better choice since C is a much simpler language (btw, did you notice how there are hardly any books, conferences or discussions about C despite being a fairly popular language? Apart from the neverending bickering about undefined behaviour from the compiler people of course ;) There simply isn’t much to discuss about a language that can be learned in an afternoon.
Err codemadness.org 70 i 53367
Err codemadness.org 70 i 53370Err codemadness.org 70 i 53372 Err codemadness.org 70 i 53373I don’t like some of the old POSIX or Linux APIs as much as the next guy (e.g. ioctl(), the socket API or some of the CRT library functions), but that’s an API design problem, not a language problem. It’s possible to build friendly C APIs with a bit of care and thinking, especially when C99’s designated initialization can be used (C++ should really make sure that the full C99 language can be used from inside C++ instead of continuing to wander off into an entirely different direction).
Err codemadness.org 70 i 53371
###Configuring OpenBGPD to announce VM’s virtual networks
Err codemadness.org 70 i 53376 Err codemadness.org 70 i 53377Err codemadness.org 70 i 53378Err codemadness.org 70 i 53380 Err codemadness.org 70 i 53381We use BGP quite heavily at work, and even though I’m not interacting with that directly, it feels like it’s something very useful to learn at least on some basic level. The most effective and fun way of learning technology is finding some practical application, so I decided to see if it could help to improve networking management for my Virtual Machines.
Err codemadness.org 70 i 53379
Err codemadness.org 70 i 53382Err codemadness.org 70 i 53384 Err codemadness.org 70 i 53385My setup is fairly simple: I have a host that runs bhyve VMs and I have a desktop system from where I ssh to VMs, both hosts run FreeBSD. All VMs are connected to each other through a bridge and have a common network 10.0.1/24. The point of this exercise is to be able to ssh to these VMs from desktop without adding static routes and without adding vmhost’s external interfaces to the VMs bridge.
Err codemadness.org 70 i 53383
Err codemadness.org 70 i 53386Err codemadness.org 70 i 53388 Err codemadness.org 70 i 53389I’ve installed openbgpd on both hosts and configured it like this:
Err codemadness.org 70 i 53387
vmhost: /usr/local/etc/bgpd.conf Err codemadness.org 70
i 53390 AS 65002 Err codemadness.org 70
i 53391 router-id 192.168.87.48 Err codemadness.org 70
i 53392 fib-update no Err codemadness.org 70
i 53393 Err codemadness.org 70
i 53394 network 10.0.1.1/24 Err codemadness.org 70
i 53395 Err codemadness.org 70
i 53396 neighbor 192.168.87.41 { Err codemadness.org 70
i 53397 descr "desktop" Err codemadness.org 70
i 53398 remote-as 65001 Err codemadness.org 70
i 53399 } Err codemadness.org 70
i 53400 Err codemadness.org 70
i 53401 Err codemadness.org 70
i 53402 Err codemadness.org 70 i 53403Err codemadness.org 70 i 53405 Err codemadness.org 70 i 53406Here, router-id is set vmhost’s IP address in my home network (192.168.87/24), fib-update no is set to forbid routing table update, which I initially set for testing, but keeping it as vmhost is not supposed to learn new routes from desktop anyway. network announces my VMs network and neighbor describes my desktop box. Now the desktop box:
Err codemadness.org 70 i 53404
desktop: /usr/local/etc/bgpd.conf Err codemadness.org 70
i 53407 AS 65001 Err codemadness.org 70
i 53408 router-id 192.168.87.41 Err codemadness.org 70
i 53409 fib-update yes Err codemadness.org 70
i 53410 Err codemadness.org 70
i 53411 neighbor 192.168.87.48 { Err codemadness.org 70
i 53412 descr "vmhost" Err codemadness.org 70
i 53413 remote-as 65002 Err codemadness.org 70
i 53414 } Err codemadness.org 70
i 53415 Err codemadness.org 70
i 53416 Err codemadness.org 70
i 53417 Err codemadness.org 70 i 53418Err codemadness.org 70 i 53420 Err codemadness.org 70 i 53421It’s pretty similar to vmhost’s bgpd.conf, but no networks are announced here, and fib-update is set to yes because the whole point is to get VM routes added. Both hosts have to have the openbgpd service enabled:
Err codemadness.org 70 i 53419
/etc/rc.conf.local Err codemadness.org 70
i 53422 openbgpd_enable="YES" Err codemadness.org 70
i 53423 Err codemadness.org 70
i 53424 Err codemadness.org 70
i 53425 Err codemadness.org 70 i 53430Err codemadness.org 70 i 53432 Err codemadness.org 70 i 53433As mentioned already, similar result could be achieved without using BGP by using either static routes or bridging interfaces differently, but the purpose of this exercise is to get some basic hands-on experience with BGP. Right now I’m looking into extending my setup in order to try more complex BGP schema. I’m thinking about adding some software switches in front of my VMs or maybe adding a second VM host (if budget allows). You’re welcome to comment if you have some ideas how to extend this setup for educational purposes in the context of BGP and networking.
Err codemadness.org 70 i 53431
Err codemadness.org 70 i 53434Err codemadness.org 70 i 53436 Err codemadness.org 70 i 53437As a side note, I really like openbgpd so far. Its configuration file format is clean and simple, documentation is good, error and information messages are clear, and CLI has intuitive syntax.
Err codemadness.org 70 i 53435
Digital Ocean
Err codemadness.org 70 i 53440 Err codemadness.org 70 i 53441 Err codemadness.org 70 i 53442 Err codemadness.org 70 i 53443Err codemadness.org 70 i 53444Err codemadness.org 70 i 53446 Err codemadness.org 70 i 53447All people within the IT Industry should known where the slogan “The Power To Serve” is exposed every day to millions of people. But maybe too much wishful thinking from me. But without “The Power To Serve” the IT industry today will look totally different. Companies like Apple, Juniper, Cisco and even WatsApp would not exist in their current form.
Err codemadness.org 70 i 53445
Err codemadness.org 70 i 53448Err codemadness.org 70 i 53450 Err codemadness.org 70 i 53451I provide IT architecture services to make your complex IT landscape manageable and I love to solve complex security and privacy challenges. Complex challenges where people, processes and systems are heavily interrelated. For this knowledge intensive work I often run some IT experiments. When you run experiments nowadays you have a choice:
Err codemadness.org 70 i 53449
Err codemadness.org 70 i 53457Err codemadness.org 70 i 53459 Err codemadness.org 70 i 53460Running your own developments experiments on your own infrastructure can be time consuming. However smart automation saves time and money. And by creating your own CICD pipeline (Continuous Integration, Continuous Deployment) you stay on top of core infrastructure developments. Even hands-on. Knowing how things work from a technical ‘hands-on’ perspective gives great advantages when it comes to solving complex business IT problems. Making a clear distinguish between a business problem or IT problem is useless. Business and IT problems are related. Sometimes causal related, but more often indirect by one or more non linear feedback loops. Almost every business depends of IT systems. Bad IT means often that your customers will leave your business.
Err codemadness.org 70 i 53458
Err codemadness.org 70 i 53461Err codemadness.org 70 i 53463 Err codemadness.org 70 i 53464One of the things of FeeBSD for me is still FreeBSD Jails. In 2015 I had luck to attend to a presentation of the legendary hacker Poul-Henning Kamp . Check his BSD bio to see what he has done for the FreeBSD community! FreeBSD jails are a light way to visualize your system without enormous overhead. Now that the development on Linux for LXD/LXD is more mature (lxd is the next generation system container manager on linux) there is finally again an alternative for a nice chroot Linux based system again. At least when you do not need the overhead and management complexity that comes with Kubernetes or Docker.
Err codemadness.org 70 i 53462
Err codemadness.org 70 i 53465Err codemadness.org 70 i 53467 Err codemadness.org 70 i 53468FreeBSD means control and quality for me. When there is an open source package I need, I want to install it from source. It gives me more control and always some extra knowledge on how things work. So no precompiled binaries for me on my BSD systems! If a build on FreeBSD fails most of the time this is an alert regarding the quality for me.
Err codemadness.org 70 i 53466
Err codemadness.org 70 i 53469Err codemadness.org 70 i 53471 Err codemadness.org 70 i 53472If a complex OSS package is not available at all in the FreeBSD ports collection there should be a reason for it. Is it really that nobody on the world wants to do this dirty maintenance work? Or is there another cause that running this software on FreeBSD is not possible…There are currently 32644 ports available on FreeBSD. So all the major programming language, databases and middleware libraries are present. The FreeBSD organization is a mature organization and since this is one of the largest OSS projects worldwide learning how this community manages to keep innovation and creates and maintains software is a good entrance for learning how complex IT systems function.
Err codemadness.org 70 i 53470
Err codemadness.org 70 i 53473Err codemadness.org 70 i 53475 Err codemadness.org 70 i 53476FreeBSD is of course BSD licensed. It worked well! There is still a strong community with lots of strong commercial sponsors around the community. Of course: sometimes a GPL license makes more sense. So beside FreeBSD I also love GPL software and the rationale and principles behind it. So my hope is that maybe within the next 25 years the hard battle between BSD vs GPL churches will be more rationalized and normalized. Principles are good, but as all good IT architects know: With good principles alone you never make a good system. So use requirements and not only principles to figure out what OSS license fits your project. There is never one size fits all.
Err codemadness.org 70 i 53474
Err codemadness.org 70 i 53477Err codemadness.org 70 i 53479 Err codemadness.org 70 i 53480June 19, 1993 was the day the official name for FreeBSD was agreed upon. So this blog is written to celebrate 25th anniversary of FreeBSD.
Err codemadness.org 70 i 53478
###Dave’s BSDCan trip report
Err codemadness.org 70 i 53483 Err codemadness.org 70 i 53484Err codemadness.org 70 i 53489Err codemadness.org 70 i 53503 Err codemadness.org 70 i 53504Hello guys! During the last show, you asked for a trip report regarding BSDCan 2018.
Err codemadness.org 70 i 53502
Err codemadness.org 70 i 53490 This was my first time attending BSDCan. However, BSDCan was my second BSD conference overall, my first being vBSDCon 2017 in Reston, VA.
Err codemadness.org 70 i 53491 Arriving early Thursday evening and after checking into the hotel, I headed straight to the Red Lion for the registration, picked up my badge and swag and then headed towards the ‘DMS’ building for the newbies talk. The only thing is, I couldn’t find the DMS building! Fortunately I found a BSDCan veteran who was heading there themselves. My only suggestion is to include the full building name and address on the BSDCan web site, or even a link to Google maps to help out with the navigation. The on-campus street maps didn’t have ‘DMS’ written on them anywhere. But I digress.
Err codemadness.org 70 i 53492 Once I made it to the newbies talk hosted by Dan Langille and Michael W Lucas, it highlighted places to meet, an overview of what is happening, details about the ‘BSDCan widow/widower tours’ and most importantly, the 6-2-1 rule!
Err codemadness.org 70 i 53493 The following morning, we were present with tea/coffee, muffins and other goodies to help prepare us for the day ahead.
Err codemadness.org 70 i 53494 The first talk, “The Tragedy of systemd” covered what systemd did wrong and how the BSD community could improve on the ideas behind it.
Err codemadness.org 70 i 53495 With the exception of Michael W Lucas, SSH Key Management and Kirk McKusick, The Evolution of FreeBSD Governance talk, I pretty much attended all of the ZFS talks including the lunchtime BoF session, hosted by Allan Jude. Coming from FreeNAS and being involved in the community, this is where my main interest and motivation lies. Since then I have been able to share some of that information with the FreeNAS community forums and chatroom.
Err codemadness.org 70 i 53496 I also attended the “Speculating about Intel” lunchtime BoF session hosted by Theo de Raddt, which proved to be “interesting”.
Err codemadness.org 70 i 53497 The talks ended with the wrap up session with a few words from Dan, covering the record attendance and made very clear there “was no cabal”. Followed by the the handing over of Groff the BSD goat to a new owner, thank you’s from the FreeBSD Foundation to various community committers and maintainers, finally ending with the charity auction, where a things like a Canadian $20 bill sold for $40, a signed FreeBSD Foundation shirt originally worn by George Neville-Neil, a lost laptop charger, Michael’s used gelato spoon, various books, the last cookie and more importantly, the second to last cookie!
Err codemadness.org 70 i 53498 After the auction, we all headed to the Red Lion for food and drinks, sponsored by iXsystems.
Err codemadness.org 70 i 53499 I would like to thank the BSDCan organizers, speakers and sponsors for a great conference. I will certainly hope to attend next year!
Err codemadness.org 70 i 53500 Regards,
Err codemadness.org 70 i 53501 Dave (aka m0nkey_)
##Beastie Bits
Err codemadness.org 70 i 53511 Err codemadness.org 70 i 53512Tarsnap
Err codemadness.org 70 i 53522 Err codemadness.org 70 i 53523##Feedback/Questions
Err codemadness.org 70 i 53524 Err codemadness.org 70 i 53525##Headlines
Err codemadness.org 70
i 53542 ###FreeBSD 11.2-RELEASE Available
Err codemadness.org 70 i 53550Err codemadness.org 70 i 53557 Err codemadness.org 70 i 53558OpenSSH has been updated to version 7.5p1.
Err codemadness.org 70 i 53556
Err codemadness.org 70 i 53551 OpenSSL has been updated to version 1.0.2o.
Err codemadness.org 70 i 53552 The clang, llvm, lldb and compiler-rt utilities have been updated to version 6.0.0.
Err codemadness.org 70 i 53553 The libarchive(3) library has been updated to version 3.3.2.
Err codemadness.org 70 i 53554 The libxo(3) library has been updated to version 0.9.0.
Err codemadness.org 70 i 53555 Major Device driver updates to:
Err codemadness.org 70 i 53565Err codemadness.org 70 i 53568 Err codemadness.org 70 i 53569New drivers:
Err codemadness.org 70 i 53567
Err codemadness.org 70 i 53566 + drm-next-kmod driver supporting integrated Intel graphics with the i915 driver.
Err codemadness.org 70 i 53576Err codemadness.org 70 i 53592 Err codemadness.org 70 i 53593The newsyslog(8) utility has been updated to support RFC5424-compliant messages when rotating system logs
Err codemadness.org 70 i 53591
Err codemadness.org 70 i 53577 The diskinfo(8) utility has been updated to include two new flags, -s which displays the disk identity (usually the serial number), and -p which displays the physical path to the disk in a storage controller.
Err codemadness.org 70 i 53578 The top(1) utility has been updated to allow filtering on multiple user names when the -U flag is used
Err codemadness.org 70 i 53579 The umount(8) utility has been updated to include a new flag, -N, which is used to forcefully unmount an NFS mounted filesystem.
Err codemadness.org 70 i 53580 The ps(1) utility has been updated to display if a process is running with capsicum(4) capability mode, indicated by the flag ‘C’
Err codemadness.org 70 i 53581 The service(8) utility has been updated to include a new flag, -j, which is used to interact with services running within a jail(8). The argument to -j can be either the name or numeric jail ID
Err codemadness.org 70 i 53582 The mlx5tool(8) utility has been added, which is used to manage Connect-X 4 and Connect-X 5 devices supported by mlx5io(4).
Err codemadness.org 70 i 53583 The ifconfig(8) utility has been updated to include a random option, which when used with the ether option, generates a random MAC address for an interface.
Err codemadness.org 70 i 53584 The dwatch(1) utility has been introduced
Err codemadness.org 70 i 53585 The efibootmgr(8) utility has been added, which is used to manipulate the EFI boot manager.
Err codemadness.org 70 i 53586 The etdump(1) utility has been added, which is used to view El Torito boot catalog information.
Err codemadness.org 70 i 53587 The linux(4) ABI compatibility layer has been updated to include support for musl consumers.
Err codemadness.org 70 i 53588 The fdescfs(5) filesystem has been updated to support Linux®-specific fd(4) /dev/fd and /proc/self/fd behavior
Err codemadness.org 70 i 53589 Support for virtio_console(4) has been added to bhyve(4).
Err codemadness.org 70 i 53590 The length of GELI passphrases entered when booting a system with encrypted disks is now hidden by default. See the configuration options in geli(8) to restore the previous behavior.
###Setting up an MTA Behind Tor
Err codemadness.org 70 i 53623 Err codemadness.org 70 i 53624Err codemadness.org 70 i 53625Err codemadness.org 70 i 53627 Err codemadness.org 70 i 53628This article will document how to set up OpenSMTPD behind a fully Tor-ified network. Given that Tor’s DNS resolver code does not support MX record lookups, care must be taken for setting up an MTA behind a fully Tor-ified network. OpenSMTPD was chosen because it was easy to modify to force it to fall back to A/AAAA lookups when MX lookups failed with a DNS result code of NOTIMP (4).
Err codemadness.org 70 i 53626
Err codemadness.org 70 i 53629Err codemadness.org 70 i 53631 Err codemadness.org 70 i 53632Note that as of 08 May 2018, the OpenSMTPD project is planning a configuration file language change. The proposed change has not landed. Once it does, this article will be updated to reflect both the old language and new.
Err codemadness.org 70 i 53630
Err codemadness.org 70 i 53633Err codemadness.org 70 i 53635 Err codemadness.org 70 i 53636The reason to use an MTA behing a fully Tor-ified network is to be able to support email behind the .onion TLD. This setup will only allow us to send and receive email to and from the .onion TLD.
Err codemadness.org 70 i 53634
Requirements:
Err codemadness.org 70 i 53639A fully Tor-ified network
Err codemadness.org 70 i 53642HardenedBSD as the operating system
Err codemadness.org 70 i 53645A server (or VM) running HardenedBSD behind the fully Tor-ified network.
Err codemadness.org 70 i 53648/usr/ports is empty
Err codemadness.org 70 i 53651Or is already pre-populated with the HardenedBSD Ports tree
Err codemadness.org 70 i 53654Why use HardenedBSD? We get all the features of FreeBSD (ZFS, DTrace, bhyve, and jails) with enhanced security through exploit mitigations and system hardening. Tor has a very unique threat landscape and using a hardened ecosystem is crucial to mitigating risks and threats.
Err codemadness.org 70 i 53657Err codemadness.org 70 i 53661Err codemadness.org 70 i 53663 Err codemadness.org 70 i 53664Also note that this article reflects how I’ve set up my MTA. I’ve included configuration files verbatim. You will need to replace the text that refers to my .onion domain with yours.
Err codemadness.org 70 i 53662
Err codemadness.org 70 i 53665Err codemadness.org 70 i 53667 Err codemadness.org 70 i 53668On 08 May 2018, HardenedBSD’s version of OpenSMTPD just gained support for running an MTA behind Tor. The package repositories do not yet contain the patch, so we will compile OpenSMTPD from ports.
Err codemadness.org 70 i 53666
iXsystems
Err codemadness.org 70
i 53682 https://www.forbes.com/sites/forbestechcouncil/2018/06/21/strings-attached-knowing-when-and-when-not-to-accept-vc-funding/#30f9f18f46ec
Err codemadness.org 70
i 53683 https://www.ixsystems.com/blog/self-2018-recap/
###Running pfSense on a Digital Ocean Droplet
Err codemadness.org 70 i 53686 Err codemadness.org 70 i 53687Err codemadness.org 70 i 53688Err codemadness.org 70 i 53690 Err codemadness.org 70 i 53691I love pfSense (and opnSense, no discrimination here). I use it for just about anything, from homelab to large scale deployments and I’ll give out on any fancy <enter brand name fw appliance here> for a pfSense setup on a decent hardware.
Err codemadness.org 70 i 53689
Err codemadness.org 70 i 53692Err codemadness.org 70 i 53695 Err codemadness.org 70 i 53696I also love DigitalOcean, if you ever used them, you know why, if you never did, head over and try, you’ll understand why.
Err codemadness.org 70 i 53694
Err codemadness.org 70 i 53693 <shameless plug: head over to JupiterBroadcasting.com, the best technology content out there, they have coupon codes to get you started with DO>.
Err codemadness.org 70 i 53697Err codemadness.org 70 i 53699 Err codemadness.org 70 i 53700Unfortunately, while DO offers tremendous amount of useful distros and applications, pfSense isn’t one of them. But, where there’s a will, there’s a way, and here’s how to get pfSense up and running on DO so you can have it as the gatekeeper to your kingdom.
Err codemadness.org 70 i 53698
Err codemadness.org 70 i 53701Err codemadness.org 70 i 53703 Err codemadness.org 70 i 53704Start by creating a FreeBSD droplet, choose your droplet size (for modest setups, I find the 5$ to be quite awesome):
Err codemadness.org 70 i 53702
Err codemadness.org 70 i 53705Err codemadness.org 70 i 53707 Err codemadness.org 70 i 53708There are many useful things you can do with pfSense on your droplet, from OpenVPN, squid, firewalling, fancy routing, url filtering, dns black listing and much much more.
Err codemadness.org 70 i 53706
Err codemadness.org 70 i 53713Err codemadness.org 70 i 53719 Err codemadness.org 70 i 53720You have two ways to initiate the initial setup wizard of the web-configurator:
Err codemadness.org 70 i 53718
Err codemadness.org 70 i 53714 Spin up another droplet, log into it and browse your way to the INTERNAL ip address of the internal NIC you’ve set up. This is the long and tedious way, but it’s also somewhat safer as it eliminates the small window of risk the second method poses.
Err codemadness.org 70 i 53715 or
Err codemadness.org 70 i 53716 Once your WAN address is all setup, your pfSense is ready to accept https connection to start the initial web-configurator setup.
Err codemadness.org 70 i 53717 Thing is, there’s a default, well known set of credential to this initial wizard (admin:pfsense), so, there is a slight window of opportunity that someone can swoop in (assuming they know you’ve installed pfsense + your wan IP address + the exact time window between setting up the WAN interface and completing the wizard) and do <enter scary thing here>.
Err codemadness.org 70 i 53721Err codemadness.org 70 i 53723 Err codemadness.org 70 i 53724I leave it up to you which of the path you’d like to go, either way, once you’re done with the web-configurator wizard, you’ll have a shiny new pfSense installation at your disposal running on your favorite VPS.
Err codemadness.org 70 i 53722
Err codemadness.org 70 i 53725Err codemadness.org 70 i 53728 Err codemadness.org 70 i 53729Hopefully this was helpful for someone, I hope to get a similar post soon detailing how to get FreeNAS up and running on DO.
Err codemadness.org 70 i 53727
Err codemadness.org 70 i 53726 Many thanks to Tubsta and his blogpost as well as to Allan Jude, Kris Moore and Benedict Reuschling for their AWESOME and inspiring podcast, BSD Now.
##News Roundup
Err codemadness.org 70
i 53732 ###One year of C
Err codemadness.org 70 i 53735Err codemadness.org 70 i 53737 Err codemadness.org 70 i 53738It’s now nearly a year that I started writing non-trivial amounts of C code again (the first sokol_gfx.h commit was on the 14-Jul-2017), so I guess it’s time for a little retrospective.
Err codemadness.org 70 i 53736
Err codemadness.org 70 i 53739Err codemadness.org 70 i 53741 Err codemadness.org 70 i 53742In the beginning it was more of an experiment: I wanted to see how much I would miss some of the more useful C++ features (for instance namespaces, function overloading, ‘simple’ template code for containers, …), and whether it is possible to write non-trivial codebases in C without going mad.
Err codemadness.org 70 i 53740
Err codemadness.org 70 i 53743Err codemadness.org 70 i 53745 Err codemadness.org 70 i 53746Here are all the github projects I wrote in C:
Err codemadness.org 70 i 53744
Err codemadness.org 70 i 53754Err codemadness.org 70 i 53756 Err codemadness.org 70 i 53757All in all these are around 32k lines of code (not including 3rd party code like flextGL and HandmadeMath). I think I wrote more C code in the recent 10 months than any other language.
Err codemadness.org 70 i 53755
Err codemadness.org 70 i 53758Err codemadness.org 70 i 53760 Err codemadness.org 70 i 53761So one thing seems to be clear: yes, it’s possible to write a non-trivial amount of C code that does something useful without going mad (and it’s even quite enjoyable I might add).
Err codemadness.org 70 i 53759
Here’s a few things I learned:
Err codemadness.org 70 i 53764Pick the right language for a problem
Err codemadness.org 70 i 53767C is a perfect match for WebAssembly
Err codemadness.org 70 i 53770C99 is a huge improvement over C89
Err codemadness.org 70 i 53773The dangers of pointers and explicit memory management are overrated
Err codemadness.org 70 i 53776Less Boilerplate Code
Err codemadness.org 70 i 53779Less Language Feature ‘Anxiety’
Err codemadness.org 70 i 53782Conclusion
Err codemadness.org 70 i 53785Err codemadness.org 70 i 53789Err codemadness.org 70 i 53791 Err codemadness.org 70 i 53792All in all my “C experiment” is a success. For a lot of problems, picking C over C++ may be the better choice since C is a much simpler language (btw, did you notice how there are hardly any books, conferences or discussions about C despite being a fairly popular language? Apart from the neverending bickering about undefined behaviour from the compiler people of course ;) There simply isn’t much to discuss about a language that can be learned in an afternoon.
Err codemadness.org 70 i 53790
Err codemadness.org 70 i 53793Err codemadness.org 70 i 53795 Err codemadness.org 70 i 53796I don’t like some of the old POSIX or Linux APIs as much as the next guy (e.g. ioctl(), the socket API or some of the CRT library functions), but that’s an API design problem, not a language problem. It’s possible to build friendly C APIs with a bit of care and thinking, especially when C99’s designated initialization can be used (C++ should really make sure that the full C99 language can be used from inside C++ instead of continuing to wander off into an entirely different direction).
Err codemadness.org 70 i 53794
###Configuring OpenBGPD to announce VM’s virtual networks
Err codemadness.org 70 i 53799 Err codemadness.org 70 i 53800Err codemadness.org 70 i 53801Err codemadness.org 70 i 53803 Err codemadness.org 70 i 53804We use BGP quite heavily at work, and even though I’m not interacting with that directly, it feels like it’s something very useful to learn at least on some basic level. The most effective and fun way of learning technology is finding some practical application, so I decided to see if it could help to improve networking management for my Virtual Machines.
Err codemadness.org 70 i 53802
Err codemadness.org 70 i 53805Err codemadness.org 70 i 53807 Err codemadness.org 70 i 53808My setup is fairly simple: I have a host that runs bhyve VMs and I have a desktop system from where I ssh to VMs, both hosts run FreeBSD. All VMs are connected to each other through a bridge and have a common network 10.0.1/24. The point of this exercise is to be able to ssh to these VMs from desktop without adding static routes and without adding vmhost’s external interfaces to the VMs bridge.
Err codemadness.org 70 i 53806
Err codemadness.org 70 i 53809Err codemadness.org 70 i 53811 Err codemadness.org 70 i 53812I’ve installed openbgpd on both hosts and configured it like this:
Err codemadness.org 70 i 53810
vmhost: /usr/local/etc/bgpd.conf Err codemadness.org 70
i 53813 AS 65002 Err codemadness.org 70
i 53814 router-id 192.168.87.48 Err codemadness.org 70
i 53815 fib-update no Err codemadness.org 70
i 53816 Err codemadness.org 70
i 53817 network 10.0.1.1/24 Err codemadness.org 70
i 53818 Err codemadness.org 70
i 53819 neighbor 192.168.87.41 { Err codemadness.org 70
i 53820 descr "desktop" Err codemadness.org 70
i 53821 remote-as 65001 Err codemadness.org 70
i 53822 } Err codemadness.org 70
i 53823 Err codemadness.org 70
i 53824 Err codemadness.org 70
i 53825 Err codemadness.org 70 i 53826Err codemadness.org 70 i 53828 Err codemadness.org 70 i 53829Here, router-id is set vmhost’s IP address in my home network (192.168.87/24), fib-update no is set to forbid routing table update, which I initially set for testing, but keeping it as vmhost is not supposed to learn new routes from desktop anyway. network announces my VMs network and neighbor describes my desktop box. Now the desktop box:
Err codemadness.org 70 i 53827
desktop: /usr/local/etc/bgpd.conf Err codemadness.org 70
i 53830 AS 65001 Err codemadness.org 70
i 53831 router-id 192.168.87.41 Err codemadness.org 70
i 53832 fib-update yes Err codemadness.org 70
i 53833 Err codemadness.org 70
i 53834 neighbor 192.168.87.48 { Err codemadness.org 70
i 53835 descr "vmhost" Err codemadness.org 70
i 53836 remote-as 65002 Err codemadness.org 70
i 53837 } Err codemadness.org 70
i 53838 Err codemadness.org 70
i 53839 Err codemadness.org 70
i 53840 Err codemadness.org 70 i 53841Err codemadness.org 70 i 53843 Err codemadness.org 70 i 53844It’s pretty similar to vmhost’s bgpd.conf, but no networks are announced here, and fib-update is set to yes because the whole point is to get VM routes added. Both hosts have to have the openbgpd service enabled:
Err codemadness.org 70 i 53842
/etc/rc.conf.local Err codemadness.org 70
i 53845 openbgpd_enable="YES" Err codemadness.org 70
i 53846 Err codemadness.org 70
i 53847 Err codemadness.org 70
i 53848 Err codemadness.org 70 i 53853Err codemadness.org 70 i 53855 Err codemadness.org 70 i 53856As mentioned already, similar result could be achieved without using BGP by using either static routes or bridging interfaces differently, but the purpose of this exercise is to get some basic hands-on experience with BGP. Right now I’m looking into extending my setup in order to try more complex BGP schema. I’m thinking about adding some software switches in front of my VMs or maybe adding a second VM host (if budget allows). You’re welcome to comment if you have some ideas how to extend this setup for educational purposes in the context of BGP and networking.
Err codemadness.org 70 i 53854
Err codemadness.org 70 i 53857Err codemadness.org 70 i 53859 Err codemadness.org 70 i 53860As a side note, I really like openbgpd so far. Its configuration file format is clean and simple, documentation is good, error and information messages are clear, and CLI has intuitive syntax.
Err codemadness.org 70 i 53858
Digital Ocean
Err codemadness.org 70 i 53863 Err codemadness.org 70 i 53864 Err codemadness.org 70 i 53865 Err codemadness.org 70 i 53866Err codemadness.org 70 i 53867Err codemadness.org 70 i 53869 Err codemadness.org 70 i 53870All people within the IT Industry should known where the slogan “The Power To Serve” is exposed every day to millions of people. But maybe too much wishful thinking from me. But without “The Power To Serve” the IT industry today will look totally different. Companies like Apple, Juniper, Cisco and even WatsApp would not exist in their current form.
Err codemadness.org 70 i 53868
Err codemadness.org 70 i 53871Err codemadness.org 70 i 53873 Err codemadness.org 70 i 53874I provide IT architecture services to make your complex IT landscape manageable and I love to solve complex security and privacy challenges. Complex challenges where people, processes and systems are heavily interrelated. For this knowledge intensive work I often run some IT experiments. When you run experiments nowadays you have a choice:
Err codemadness.org 70 i 53872
Err codemadness.org 70 i 53880Err codemadness.org 70 i 53882 Err codemadness.org 70 i 53883Running your own developments experiments on your own infrastructure can be time consuming. However smart automation saves time and money. And by creating your own CICD pipeline (Continuous Integration, Continuous Deployment) you stay on top of core infrastructure developments. Even hands-on. Knowing how things work from a technical ‘hands-on’ perspective gives great advantages when it comes to solving complex business IT problems. Making a clear distinguish between a business problem or IT problem is useless. Business and IT problems are related. Sometimes causal related, but more often indirect by one or more non linear feedback loops. Almost every business depends of IT systems. Bad IT means often that your customers will leave your business.
Err codemadness.org 70 i 53881
Err codemadness.org 70 i 53884Err codemadness.org 70 i 53886 Err codemadness.org 70 i 53887One of the things of FeeBSD for me is still FreeBSD Jails. In 2015 I had luck to attend to a presentation of the legendary hacker Poul-Henning Kamp . Check his BSD bio to see what he has done for the FreeBSD community! FreeBSD jails are a light way to visualize your system without enormous overhead. Now that the development on Linux for LXD/LXD is more mature (lxd is the next generation system container manager on linux) there is finally again an alternative for a nice chroot Linux based system again. At least when you do not need the overhead and management complexity that comes with Kubernetes or Docker.
Err codemadness.org 70 i 53885
Err codemadness.org 70 i 53888Err codemadness.org 70 i 53890 Err codemadness.org 70 i 53891FreeBSD means control and quality for me. When there is an open source package I need, I want to install it from source. It gives me more control and always some extra knowledge on how things work. So no precompiled binaries for me on my BSD systems! If a build on FreeBSD fails most of the time this is an alert regarding the quality for me.
Err codemadness.org 70 i 53889
Err codemadness.org 70 i 53892Err codemadness.org 70 i 53894 Err codemadness.org 70 i 53895If a complex OSS package is not available at all in the FreeBSD ports collection there should be a reason for it. Is it really that nobody on the world wants to do this dirty maintenance work? Or is there another cause that running this software on FreeBSD is not possible…There are currently 32644 ports available on FreeBSD. So all the major programming language, databases and middleware libraries are present. The FreeBSD organization is a mature organization and since this is one of the largest OSS projects worldwide learning how this community manages to keep innovation and creates and maintains software is a good entrance for learning how complex IT systems function.
Err codemadness.org 70 i 53893
Err codemadness.org 70 i 53896Err codemadness.org 70 i 53898 Err codemadness.org 70 i 53899FreeBSD is of course BSD licensed. It worked well! There is still a strong community with lots of strong commercial sponsors around the community. Of course: sometimes a GPL license makes more sense. So beside FreeBSD I also love GPL software and the rationale and principles behind it. So my hope is that maybe within the next 25 years the hard battle between BSD vs GPL churches will be more rationalized and normalized. Principles are good, but as all good IT architects know: With good principles alone you never make a good system. So use requirements and not only principles to figure out what OSS license fits your project. There is never one size fits all.
Err codemadness.org 70 i 53897
Err codemadness.org 70 i 53900Err codemadness.org 70 i 53902 Err codemadness.org 70 i 53903June 19, 1993 was the day the official name for FreeBSD was agreed upon. So this blog is written to celebrate 25th anniversary of FreeBSD.
Err codemadness.org 70 i 53901
###Dave’s BSDCan trip report
Err codemadness.org 70 i 53906 Err codemadness.org 70 i 53907Err codemadness.org 70 i 53912Err codemadness.org 70 i 53926 Err codemadness.org 70 i 53927Hello guys! During the last show, you asked for a trip report regarding BSDCan 2018.
Err codemadness.org 70 i 53925
Err codemadness.org 70 i 53913 This was my first time attending BSDCan. However, BSDCan was my second BSD conference overall, my first being vBSDCon 2017 in Reston, VA.
Err codemadness.org 70 i 53914 Arriving early Thursday evening and after checking into the hotel, I headed straight to the Red Lion for the registration, picked up my badge and swag and then headed towards the ‘DMS’ building for the newbies talk. The only thing is, I couldn’t find the DMS building! Fortunately I found a BSDCan veteran who was heading there themselves. My only suggestion is to include the full building name and address on the BSDCan web site, or even a link to Google maps to help out with the navigation. The on-campus street maps didn’t have ‘DMS’ written on them anywhere. But I digress.
Err codemadness.org 70 i 53915 Once I made it to the newbies talk hosted by Dan Langille and Michael W Lucas, it highlighted places to meet, an overview of what is happening, details about the ‘BSDCan widow/widower tours’ and most importantly, the 6-2-1 rule!
Err codemadness.org 70 i 53916 The following morning, we were present with tea/coffee, muffins and other goodies to help prepare us for the day ahead.
Err codemadness.org 70 i 53917 The first talk, “The Tragedy of systemd” covered what systemd did wrong and how the BSD community could improve on the ideas behind it.
Err codemadness.org 70 i 53918 With the exception of Michael W Lucas, SSH Key Management and Kirk McKusick, The Evolution of FreeBSD Governance talk, I pretty much attended all of the ZFS talks including the lunchtime BoF session, hosted by Allan Jude. Coming from FreeNAS and being involved in the community, this is where my main interest and motivation lies. Since then I have been able to share some of that information with the FreeNAS community forums and chatroom.
Err codemadness.org 70 i 53919 I also attended the “Speculating about Intel” lunchtime BoF session hosted by Theo de Raddt, which proved to be “interesting”.
Err codemadness.org 70 i 53920 The talks ended with the wrap up session with a few words from Dan, covering the record attendance and made very clear there “was no cabal”. Followed by the the handing over of Groff the BSD goat to a new owner, thank you’s from the FreeBSD Foundation to various community committers and maintainers, finally ending with the charity auction, where a things like a Canadian $20 bill sold for $40, a signed FreeBSD Foundation shirt originally worn by George Neville-Neil, a lost laptop charger, Michael’s used gelato spoon, various books, the last cookie and more importantly, the second to last cookie!
Err codemadness.org 70 i 53921 After the auction, we all headed to the Red Lion for food and drinks, sponsored by iXsystems.
Err codemadness.org 70 i 53922 I would like to thank the BSDCan organizers, speakers and sponsors for a great conference. I will certainly hope to attend next year!
Err codemadness.org 70 i 53923 Regards,
Err codemadness.org 70 i 53924 Dave (aka m0nkey_)
##Beastie Bits
Err codemadness.org 70 i 53934 Err codemadness.org 70 i 53935Tarsnap
Err codemadness.org 70 i 53945 Err codemadness.org 70 i 53946##Feedback/Questions
Err codemadness.org 70 i 53947 Err codemadness.org 70 i 53948##Headlines
Err codemadness.org 70
i 54305 ###DragonflyBSD: Towards a HAMMER1 master/slave encrypted setup with LUKS
Err codemadness.org 70 i 54308Err codemadness.org 70 i 54311 Err codemadness.org 70 i 54312I just wanted to share my experience with setting up DragonFly master/slave HAMMER1 PFS’s on top of LUKS
Err codemadness.org 70 i 54310
Err codemadness.org 70 i 54309 So after a long time using an Synology for my NFS needs, I decided it was time to rethink my setup a little since I had several issues with it :
Err codemadness.org 70 i 54320Err codemadness.org 70 i 54322 Err codemadness.org 70 i 54323I have been playing with DragonFly in the past and knew about HAMMER, now I just had the perfect excuse to actually use it in production :) After setting up the OS, creating the LUKS partition and HAMMER FS was easy :
Err codemadness.org 70 i 54321
kdload dm
Err codemadness.org 70
i 54324 cryptsetup luksFormat /dev/serno/<id1>
Err codemadness.org 70
i 54325 cryptsetup luksOpen /dev/serno/<id1> fort_knox
Err codemadness.org 70
i 54326 newfs_hammer -L hammer1_secure_master /dev/mapper/fort_knox
Err codemadness.org 70
i 54327 cryptsetup luksFormat /dev/serno/<id2>
Err codemadness.org 70
i 54328 cryptsetup luksOpen /dev/serno/<id2> fort_knox_slave
Err codemadness.org 70
i 54329 newfs_hammer -L hammer1_secure_slave /dev/mapper/fort_knox_slave
mount /dev/mapper/fort_knox /fort_knox
Err codemadness.org 70
i 54336 mount /dev/mapper_fort_know_slave /fort_knox_slave
Err codemadness.org 70 i 54339Err codemadness.org 70 i 54342 Err codemadness.org 70 i 54343You can now put your data under /fort_knox
Err codemadness.org 70 i 54341
Err codemadness.org 70 i 54340 Now, off to setting up the replication, first get the shared-uuid of /fort_knox
hammer pfs-status /fort_knox
Err codemadness.org 70 i 54346Err codemadness.org 70 i 54348 Err codemadness.org 70 i 54349Create a PFS slave “linked” to the master
Err codemadness.org 70 i 54347
hammer pfs-slave /fort_knox_slave/pfs/slave shared-uuid=f9e7cc0d-eb59-10e3-a5b5-01e6e7cefc12
Err codemadness.org 70 i 54352Err codemadness.org 70 i 54354 Err codemadness.org 70 i 54355And then stream your data to the slave PFS !
Err codemadness.org 70 i 54353
hammer mirror-stream /fort_knox /fort_knox_slave/pfs/slave
Err codemadness.org 70 i 54358Err codemadness.org 70 i 54360 Err codemadness.org 70 i 54361After that, setting NFS is fairly trivial even though I had problem with the /etc/exports syntax which is different than Linux
Err codemadness.org 70 i 54359
Err codemadness.org 70 i 54362Err codemadness.org 70 i 54364 Err codemadness.org 70 i 54365There’s a few things I wish would be better though but nothing too problematic or without workarounds :
Err codemadness.org 70 i 54363
Err codemadness.org 70 i 54373Err codemadness.org 70 i 54375 Err codemadness.org 70 i 54376Overall, I am happy, HAMMER1 and PFS are looking really good, DragonFly is a neat Unix and the community is super friendly (Matthew Dillon actually provided me with a kernel patch to fix the broken ACPI on the PC holding this setup, many thanks!), the system is still a “work in progress” but it is already serving my files as I write this post.
Err codemadness.org 70 i 54374
Err codemadness.org 70 i 54377Err codemadness.org 70 i 54379 Err codemadness.org 70 i 54380Let’s see in 6 months how it goes in the longer run !
Err codemadness.org 70 i 54378
###BSDCan 2018 Recap
Err codemadness.org 70 i 54387 Err codemadness.org 70 i 54388Err codemadness.org 70 i 54396Err codemadness.org 70 i 54402 Err codemadness.org 70 i 54403“Automating Network Infrastructures with Ansible on FreeBSD” in the DevSummit track. A good talk that connected well with his Ansible tutorial and even allowed some discussions among participants.
Err codemadness.org 70 i 54401
Err codemadness.org 70 i 54397 “All along the dwatch tower”: Devin delivered a well prepared talk. I first thought that the number of slides would not fit into the time slot, but she even managed to give a demo of her work, which was well received. The dwatch tool she wrote should make it easy for people to get started with DTrace without learning too much about the syntax at first. The visualizations were certainly nice to see, combining different tools together in a new way.
Err codemadness.org 70 i 54398 ZFS BoF, lead by Allan and Matthew Ahrens
Err codemadness.org 70 i 54399 SSH Key Management by Michael W. Lucas. Yet another great talk where I learned a lot. I did not get to the SSH CA chapter in the new SSH Mastery book, so this was a good way to wet my appetite for it and motivated me to look into creating one for the cluster that I’m managing.
Err codemadness.org 70 i 54400 The rest of the day was spent at the FreeBSD Foundation table, talking to various folks. Then, Allan and I had an interview with Kirk McKusick for National FreeBSD Day, then we had a core meeting, followed by a core dinner.
Err codemadness.org 70 i 54406Err codemadness.org 70 i 54413“Flexible Disk Use in OpenZFS”: Matthew Ahrens talking about the feature he is implementing to expand a RAID-Z with a single disk, as well as device removal.
Err codemadness.org 70 i 54412
Err codemadness.org 70 i 54407 Allan’s talk about his efforts to implement ZSTD in OpenZFS as another compression algorithm. I liked his overview slides with the numbers comparing the algorithms for their effectiveness and his personal story about the sometimes rocky road to get the feature implemented.
Err codemadness.org 70 i 54408 “zrepl - ZFS replication” by Christian Schwarz, was well prepared and even had a demo to show what his snapshot replication tool can do. We covered it on the show before and people can find it under sysutils/zrepl. Feedback and help is welcome.
Err codemadness.org 70 i 54409 “The Evolution of FreeBSD Governance” by Kirk McKusick was yet another great talk by him covering the early days of FreeBSD until today, detailing some of the progress and challenges the project faced over the years in terms of leadership and governance. This is an ongoing process that everyone in the community should participate in to keep the project healthy and infused with fresh blood.
Err codemadness.org 70 i 54410 Closing session and auction were funny and great as always.
Err codemadness.org 70 i 54411 All in all, yet another amazing BSDCan. Thank you Dan Langille and your organizing team for making it happen! Well done.
Digital Ocean
Err codemadness.org 70 i 54419 Err codemadness.org 70 i 54420 Err codemadness.org 70 i 54421 Err codemadness.org 70 i 54422Err codemadness.org 70 i 54423Err codemadness.org 70 i 54425 Err codemadness.org 70 i 54426The first – and hopefully final – release candidate of NomadBSD 1.1 is available!
Err codemadness.org 70 i 54424
##News Roundup
Err codemadness.org 70
i 54458 ###LDAP client added to -current
CVSROOT: /cvs Err codemadness.org 70
i 54461 Module name: src Err codemadness.org 70
i 54462 Changes by: reyk@cvs.openbsd.org 2018/06/13 09:45:58 Err codemadness.org 70
i 54463 Err codemadness.org 70
i 54464 Log message: Err codemadness.org 70
i 54465 Import ldap(1), a simple ldap search client. Err codemadness.org 70
i 54466 We have an ldapd(8) server and ypldap in base, so it makes sense to Err codemadness.org 70
i 54467 have a simple LDAP client without depending on the OpenLDAP package. Err codemadness.org 70
i 54468 This tool can be used in an ssh(1) AuthorizedKeysCommand script. Err codemadness.org 70
i 54469 Err codemadness.org 70
i 54470 With feedback from many including millert@ schwarze@ gilles@ dlg@ jsing@ Err codemadness.org 70
i 54471 Err codemadness.org 70
i 54472 OK deraadt@ Err codemadness.org 70
i 54473 Err codemadness.org 70
i 54474 Status: Err codemadness.org 70
i 54475 Err codemadness.org 70
i 54476 Vendor Tag: reyk Err codemadness.org 70
i 54477 Release Tags: ldap_20180613 Err codemadness.org 70
i 54478 Err codemadness.org 70
i 54479 N src/usr.bin/ldap/Makefile Err codemadness.org 70
i 54480 N src/usr.bin/ldap/aldap.c Err codemadness.org 70
i 54481 N src/usr.bin/ldap/aldap.h Err codemadness.org 70
i 54482 N src/usr.bin/ldap/ber.c Err codemadness.org 70
i 54483 N src/usr.bin/ldap/ber.h Err codemadness.org 70
i 54484 N src/usr.bin/ldap/ldap.1 Err codemadness.org 70
i 54485 N src/usr.bin/ldap/ldapclient.c Err codemadness.org 70
i 54486 N src/usr.bin/ldap/log.c Err codemadness.org 70
i 54487 N src/usr.bin/ldap/log.h Err codemadness.org 70
i 54488 Err codemadness.org 70
i 54489 No conflicts created by this import Err codemadness.org 70
i 54490 Err codemadness.org 70
i 54491 Err codemadness.org 70
i 54492 ###Intel® FPU Speculation Vulnerability Confirmed
Err codemadness.org 70 i 54495 Err codemadness.org 70 i 54496Summary: Err codemadness.org 70
i 54504 Err codemadness.org 70
i 54505 System software may utilize the Lazy FP state restore technique to delay the restoring of state until an instruction operating on that state is actually executed by the new process. Systems using Intel® Core-based microprocessors may potentially allow a local process to infer data utilizing Lazy FP state restore from another process through a speculative execution side channel. Err codemadness.org 70
i 54506 Err codemadness.org 70
i 54507 Description: Err codemadness.org 70
i 54508 Err codemadness.org 70
i 54509 System software may opt to utilize Lazy FP state restore instead of eager save and restore of the state upon a context switch. Lazy restored states are potentially vulnerable to exploits where one process may infer register values of other processes through a speculative execution side channel that infers their value. Err codemadness.org 70
i 54510 Err codemadness.org 70
i 54511 · CVSS - 4.3 Medium CVSS:3.0/AV:L/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N Err codemadness.org 70
i 54512 Affected Products: Err codemadness.org 70
i 54513 Err codemadness.org 70
i 54514 Intel® Core-based microprocessors. Err codemadness.org 70
i 54515 Err codemadness.org 70
i 54516 Recommendations: Err codemadness.org 70
i 54517 Err codemadness.org 70
i 54518 If an XSAVE-enabled feature is disabled, then we recommend either its state component bitmap in the extended control register (XCR0) is set to 0 (e.g. XCR0[bit 2]=0 for AVX, XCR0[bits 7:5]=0 for AVX512) or the corresponding register states of the feature should be cleared prior to being disabled. Also for relevant states (e.g. x87, SSE, AVX, etc.), Intel recommends system software developers utilize Eager FP state restore in lieu of Lazy FP state restore. Err codemadness.org 70
i 54519 Err codemadness.org 70
i 54520 Acknowledgements: Err codemadness.org 70
i 54521 Err codemadness.org 70
i 54522 Intel would like to thank Julian Stecklina from Amazon Germany, Thomas Prescher from Cyberus Technology GmbH (https://www.cyberus-technology.de/), Zdenek Sojka from SYSGO AG (http://sysgo.com), and Colin Percival for reporting this issue and working with us on coordinated disclosure. Err codemadness.org 70
i 54523 Err codemadness.org 70
i 54524 Err codemadness.org 70
i 54525 iXsystems
Err codemadness.org 70
i 54528 iX Ad Spot
Err codemadness.org 70
i 54529 ###iX Systems - BSDCan 2018 Recap
Merge the pNFS server code from projects/pnfs-planb-server into head. Err codemadness.org 70
i 54534 Err codemadness.org 70
i 54535 This code merge adds a pNFS service to the NFSv4.1 server. Although it is Err codemadness.org 70
i 54536 a large commit it should not affect behaviour for a non-pNFS NFS server. Err codemadness.org 70
i 54537 Some documentation on how this works can be found at: Err codemadness.org 70
i 54538 Merge the pN http://people.freebsd.org/~rmacklem/pnfs-planb-setup.txt Err codemadness.org 70
i 54539 and will hopefully be turned into a proper document soon. Err codemadness.org 70
i 54540 This is a merge of the kernel code. Userland and man page changes will Err codemadness.org 70
i 54541 come soon, once the dust settles on this merge. Err codemadness.org 70
i 54542 It has passed a "make universe", so I hope it will not cause build problems. Err codemadness.org 70
i 54543 It also adds NFSv4.1 server support for the "current stateid". Err codemadness.org 70
i 54544 Err codemadness.org 70
i 54545 Here is a brief overview of the pNFS service: Err codemadness.org 70
i 54546 A pNFS service separates the Read/Write operations from all the other NFSv4.1 Err codemadness.org 70
i 54547 Metadata operations. It is hoped that this separation allows a pNFS service Err codemadness.org 70
i 54548 to be configured that exceeds the limits of a single NFS server for either Err codemadness.org 70
i 54549 storage capacity and/or I/O bandwidth. Err codemadness.org 70
i 54550 It is possible to configure mirroring within the data servers (DSs) so that Err codemadness.org 70
i 54551 the data storage file for an MDS file will be mirrored on two or more of Err codemadness.org 70
i 54552 the DSs. Err codemadness.org 70
i 54553 When this is used, failure of a DS will not stop the pNFS service and a Err codemadness.org 70
i 54554 failed DS can be recovered once repaired while the pNFS service continues Err codemadness.org 70
i 54555 to operate. Although two way mirroring would be the norm, it is possible Err codemadness.org 70
i 54556 to set a mirroring level of up to four or the number of DSs, whichever is Err codemadness.org 70
i 54557 less. Err codemadness.org 70
i 54558 The Metadata server will always be a single point of failure, Err codemadness.org 70
i 54559 just as a single NFS server is. Err codemadness.org 70
i 54560 Err codemadness.org 70
i 54561 A Plan B pNFS service consists of a single MetaData Server (MDS) and K Err codemadness.org 70
i 54562 Data Servers (DS), all of which are recent FreeBSD systems. Err codemadness.org 70
i 54563 Clients will mount the MDS as they would a single NFS server. Err codemadness.org 70
i 54564 When files are created, the MDS creates a file tree identical to what a Err codemadness.org 70
i 54565 single NFS server creates, except that all the regular (VREG) files will Err codemadness.org 70
i 54566 be empty. As such, if you look at the exported tree on the MDS directly Err codemadness.org 70
i 54567 on the MDS server (not via an NFS mount), the files will all be of size 0. Err codemadness.org 70
i 54568 Each of these files will also have two extended attributes in the system Err codemadness.org 70
i 54569 attribute name space: Err codemadness.org 70
i 54570 pnfsd.dsfile - This extended attrbute stores the information that Err codemadness.org 70
i 54571 the MDS needs to find the data storage file(s) on DS(s) for this file. Err codemadness.org 70
i 54572 pnfsd.dsattr - This extended attribute stores the Size, AccessTime, ModifyTime Err codemadness.org 70
i 54573 and Change attributes for the file, so that the MDS doesn't need to Err codemadness.org 70
i 54574 acquire the attributes from the DS for every Getattr operation. Err codemadness.org 70
i 54575 For each regular (VREG) file, the MDS creates a data storage file on one Err codemadness.org 70
i 54576 (or more if mirroring is enabled) of the DSs in one of the "dsNN" Err codemadness.org 70
i 54577 subdirectories. The name of this file is the file handle Err codemadness.org 70
i 54578 of the file on the MDS in hexadecimal so that the name is unique. Err codemadness.org 70
i 54579 The DSs use subdirectories named "ds0" to "dsN" so that no one directory Err codemadness.org 70
i 54580 gets too large. The value of "N" is set via the sysctl vfs.nfsd.dsdirsize Err codemadness.org 70
i 54581 on the MDS, with the default being 20. Err codemadness.org 70
i 54582 For production servers that will store a lot of files, this value should Err codemadness.org 70
i 54583 probably be much larger. Err codemadness.org 70
i 54584 It can be increased when the "nfsd" daemon is not running on the MDS, Err codemadness.org 70
i 54585 once the "dsK" directories are created. Err codemadness.org 70
i 54586 Err codemadness.org 70
i 54587 For pNFS aware NFSv4.1 clients, the FreeBSD server will return two pieces Err codemadness.org 70
i 54588 of information to the client that allows it to do I/O directly to the DS. Err codemadness.org 70
i 54589 DeviceInfo - This is relatively static information that defines what a DS Err codemadness.org 70
i 54590 is. The critical bits of information returned by the FreeBSD Err codemadness.org 70
i 54591 server is the IP address of the DS and, for the Flexible Err codemadness.org 70
i 54592 File layout, that NFSv4.1 is to be used and that it is Err codemadness.org 70
i 54593 "tightly coupled". Err codemadness.org 70
i 54594 There is a "deviceid" which identifies the DeviceInfo. Err codemadness.org 70
i 54595 Layout - This is per file and can be recalled by the server when it Err codemadness.org 70
i 54596 is no longer valid. For the FreeBSD server, there is support Err codemadness.org 70
i 54597 for two types of layout, call File and Flexible File layout. Err codemadness.org 70
i 54598 Both allow the client to do I/O on the DS via NFSv4.1 I/O Err codemadness.org 70
i 54599 operations. The Flexible File layout is a more recent variant Err codemadness.org 70
i 54600 that allows specification of mirrors, where the client is Err codemadness.org 70
i 54601 expected to do writes to all mirrors to maintain them in a Err codemadness.org 70
i 54602 consistent state. The Flexible File layout also allows the Err codemadness.org 70
i 54603 client to report I/O errors for a DS back to the MDS. Err codemadness.org 70
i 54604 The Flexible File layout supports two variants referred to as Err codemadness.org 70
i 54605 "tightly coupled" vs "loosely coupled". The FreeBSD server always Err codemadness.org 70
i 54606 uses the "tightly coupled" variant where the client uses the Err codemadness.org 70
i 54607 same credentials to do I/O on the DS as it would on the MDS. Err codemadness.org 70
i 54608 For the "loosely coupled" variant, the layout specifies a Err codemadness.org 70
i 54609 synthetic user/group that the client uses to do I/O on the DS. Err codemadness.org 70
i 54610 The FreeBSD server does not do striping and always returns Err codemadness.org 70
i 54611 layouts for the entire file. The critical information in a layout Err codemadness.org 70
i 54612 is Read vs Read/Writea and DeviceID(s) that identify which Err codemadness.org 70
i 54613 DS(s) the data is stored on. Err codemadness.org 70
i 54614 Err codemadness.org 70
i 54615 At this time, the MDS generates File Layout layouts to NFSv4.1 clients Err codemadness.org 70
i 54616 that know how to do pNFS for the non-mirrored DS case unless the sysctl Err codemadness.org 70
i 54617 vfs.nfsd.default_flexfile is set non-zero, in which case Flexible File Err codemadness.org 70
i 54618 layouts are generated. Err codemadness.org 70
i 54619 The mirrored DS configuration always generates Flexible File layouts. Err codemadness.org 70
i 54620 For NFS clients that do not support NFSv4.1 pNFS, all I/O operations Err codemadness.org 70
i 54621 are done against the MDS which acts as a proxy for the appropriate DS(s). Err codemadness.org 70
i 54622 When the MDS receives an I/O RPC, it will do the RPC on the DS as a proxy. Err codemadness.org 70
i 54623 If the DS is on the same machine, the MDS/DS will do the RPC on the DS as Err codemadness.org 70
i 54624 a proxy and so on, until the machine runs out of some resource, such as Err codemadness.org 70
i 54625 session slots or mbufs. Err codemadness.org 70
i 54626 As such, DSs must be separate systems from the MDS. Err codemadness.org 70
i 54627 Err codemadness.org 70
i 54628 *** Err codemadness.org 70
i 54629 Err codemadness.org 70
i 54630 ###[What does {some strange unix command name} stand for?](http://www.unixguide.net/unix/faq/1.3.shtml) Err codemadness.org 70
i 54631 Err codemadness.org 70
i 54632 + awk = "Aho Weinberger and Kernighan" Err codemadness.org 70
i 54633 + grep = "Global Regular Expression Print" Err codemadness.org 70
i 54634 + fgrep = "Fixed GREP". Err codemadness.org 70
i 54635 + egrep = "Extended GREP" Err codemadness.org 70
i 54636 + cat = "CATenate" Err codemadness.org 70
i 54637 + gecos = "General Electric Comprehensive Operating Supervisor" Err codemadness.org 70
i 54638 + nroff = "New ROFF" Err codemadness.org 70
i 54639 + troff = "Typesetter new ROFF" Err codemadness.org 70
i 54640 + tee = T Err codemadness.org 70
i 54641 + bss = "Block Started by Symbol Err codemadness.org 70
i 54642 + biff = "BIFF" Err codemadness.org 70
i 54643 + rc (as in ".cshrc" or "/etc/rc") = "RunCom" Err codemadness.org 70
i 54644 + Don Libes' book "Life with Unix" contains lots more of these Err codemadness.org 70
i 54645 tidbits. Err codemadness.org 70
i 54646 *** Err codemadness.org 70
i 54647 Err codemadness.org 70
i 54648 ##Beastie Bits Err codemadness.org 70
i 54649 + [RetroBSD: Unix for microcontrollers](http://retrobsd.org/wiki/doku.php) Err codemadness.org 70
i 54650 + [On the matter of OpenBSD breaking embargos (KRACK)](https://marc.info/?l=openbsd-tech&m=152910536208954&w=2) Err codemadness.org 70
i 54651 + [Theo's Basement Computer Paradise (1998)](https://zeus.theos.com/deraadt/hosts.html) Err codemadness.org 70
i 54652 + [Airport Extreme runs NetBSD](https://jcs.org/2018/06/12/airport_ssh) Err codemadness.org 70
i 54653 + [What UNIX shell could have been](https://rain-1.github.io/shell-2.html) Err codemadness.org 70
i 54654 Err codemadness.org 70
i 54655 *** Err codemadness.org 70
i 54656 Tarsnap ad Err codemadness.org 70
i 54657 *** Err codemadness.org 70
i 54658 Err codemadness.org 70
i 54659 ##Feedback/Questions Err codemadness.org 70
i 54660 + We need more feedback and questions. Please email feedback@bsdnow.tv Err codemadness.org 70
i 54661 + Also, many of you owe us BSDCan trip reports! We have shared what our experience at BSDCan was like, but we want to hear about yours. What can we do better next year? What was it like being there for the first time? Err codemadness.org 70
i 54662 + [Jason writes in](https://slexy.org/view/s205jU58X2) Err codemadness.org 70
i 54663 + https://www.wheelsystems.com/en/products/wheel-fudo-psm/ Err codemadness.org 70
i 54664 + [June 19th was National FreeBSD Day](https://twitter.com/search?src=typd&q=%23FreeBSDDay) Err codemadness.org 70
i 54665 *** Err codemadness.org 70
i 54666 Err codemadness.org 70
i 54667 - Send questions, comments, show ideas/topics, or stories you want mentioned on the show to [feedback@bsdnow.tv](mailto:feedback@bsdnow.tv) Err codemadness.org 70
i 54668 *** Err codemadness.org 70
i 54669 Err codemadness.org 70
i 54670 ]]> Err codemadness.org 70
i 54671 ##Headlines
Err codemadness.org 70
i 54676 ###DragonflyBSD: Towards a HAMMER1 master/slave encrypted setup with LUKS
Err codemadness.org 70 i 54679Err codemadness.org 70 i 54682 Err codemadness.org 70 i 54683I just wanted to share my experience with setting up DragonFly master/slave HAMMER1 PFS’s on top of LUKS
Err codemadness.org 70 i 54681
Err codemadness.org 70 i 54680 So after a long time using an Synology for my NFS needs, I decided it was time to rethink my setup a little since I had several issues with it :
Err codemadness.org 70 i 54691Err codemadness.org 70 i 54693 Err codemadness.org 70 i 54694I have been playing with DragonFly in the past and knew about HAMMER, now I just had the perfect excuse to actually use it in production :) After setting up the OS, creating the LUKS partition and HAMMER FS was easy :
Err codemadness.org 70 i 54692
kdload dm
Err codemadness.org 70
i 54695 cryptsetup luksFormat /dev/serno/<id1>
Err codemadness.org 70
i 54696 cryptsetup luksOpen /dev/serno/<id1> fort_knox
Err codemadness.org 70
i 54697 newfs_hammer -L hammer1_secure_master /dev/mapper/fort_knox
Err codemadness.org 70
i 54698 cryptsetup luksFormat /dev/serno/<id2>
Err codemadness.org 70
i 54699 cryptsetup luksOpen /dev/serno/<id2> fort_knox_slave
Err codemadness.org 70
i 54700 newfs_hammer -L hammer1_secure_slave /dev/mapper/fort_knox_slave
mount /dev/mapper/fort_knox /fort_knox
Err codemadness.org 70
i 54707 mount /dev/mapper_fort_know_slave /fort_knox_slave
Err codemadness.org 70 i 54710Err codemadness.org 70 i 54713 Err codemadness.org 70 i 54714You can now put your data under /fort_knox
Err codemadness.org 70 i 54712
Err codemadness.org 70 i 54711 Now, off to setting up the replication, first get the shared-uuid of /fort_knox
hammer pfs-status /fort_knox
Err codemadness.org 70 i 54717Err codemadness.org 70 i 54719 Err codemadness.org 70 i 54720Create a PFS slave “linked” to the master
Err codemadness.org 70 i 54718
hammer pfs-slave /fort_knox_slave/pfs/slave shared-uuid=f9e7cc0d-eb59-10e3-a5b5-01e6e7cefc12
Err codemadness.org 70 i 54723Err codemadness.org 70 i 54725 Err codemadness.org 70 i 54726And then stream your data to the slave PFS !
Err codemadness.org 70 i 54724
hammer mirror-stream /fort_knox /fort_knox_slave/pfs/slave
Err codemadness.org 70 i 54729Err codemadness.org 70 i 54731 Err codemadness.org 70 i 54732After that, setting NFS is fairly trivial even though I had problem with the /etc/exports syntax which is different than Linux
Err codemadness.org 70 i 54730
Err codemadness.org 70 i 54733Err codemadness.org 70 i 54735 Err codemadness.org 70 i 54736There’s a few things I wish would be better though but nothing too problematic or without workarounds :
Err codemadness.org 70 i 54734
Err codemadness.org 70 i 54744Err codemadness.org 70 i 54746 Err codemadness.org 70 i 54747Overall, I am happy, HAMMER1 and PFS are looking really good, DragonFly is a neat Unix and the community is super friendly (Matthew Dillon actually provided me with a kernel patch to fix the broken ACPI on the PC holding this setup, many thanks!), the system is still a “work in progress” but it is already serving my files as I write this post.
Err codemadness.org 70 i 54745
Err codemadness.org 70 i 54748Err codemadness.org 70 i 54750 Err codemadness.org 70 i 54751Let’s see in 6 months how it goes in the longer run !
Err codemadness.org 70 i 54749
###BSDCan 2018 Recap
Err codemadness.org 70 i 54758 Err codemadness.org 70 i 54759Err codemadness.org 70 i 54767Err codemadness.org 70 i 54773 Err codemadness.org 70 i 54774“Automating Network Infrastructures with Ansible on FreeBSD” in the DevSummit track. A good talk that connected well with his Ansible tutorial and even allowed some discussions among participants.
Err codemadness.org 70 i 54772
Err codemadness.org 70 i 54768 “All along the dwatch tower”: Devin delivered a well prepared talk. I first thought that the number of slides would not fit into the time slot, but she even managed to give a demo of her work, which was well received. The dwatch tool she wrote should make it easy for people to get started with DTrace without learning too much about the syntax at first. The visualizations were certainly nice to see, combining different tools together in a new way.
Err codemadness.org 70 i 54769 ZFS BoF, lead by Allan and Matthew Ahrens
Err codemadness.org 70 i 54770 SSH Key Management by Michael W. Lucas. Yet another great talk where I learned a lot. I did not get to the SSH CA chapter in the new SSH Mastery book, so this was a good way to wet my appetite for it and motivated me to look into creating one for the cluster that I’m managing.
Err codemadness.org 70 i 54771 The rest of the day was spent at the FreeBSD Foundation table, talking to various folks. Then, Allan and I had an interview with Kirk McKusick for National FreeBSD Day, then we had a core meeting, followed by a core dinner.
Err codemadness.org 70 i 54777Err codemadness.org 70 i 54784“Flexible Disk Use in OpenZFS”: Matthew Ahrens talking about the feature he is implementing to expand a RAID-Z with a single disk, as well as device removal.
Err codemadness.org 70 i 54783
Err codemadness.org 70 i 54778 Allan’s talk about his efforts to implement ZSTD in OpenZFS as another compression algorithm. I liked his overview slides with the numbers comparing the algorithms for their effectiveness and his personal story about the sometimes rocky road to get the feature implemented.
Err codemadness.org 70 i 54779 “zrepl - ZFS replication” by Christian Schwarz, was well prepared and even had a demo to show what his snapshot replication tool can do. We covered it on the show before and people can find it under sysutils/zrepl. Feedback and help is welcome.
Err codemadness.org 70 i 54780 “The Evolution of FreeBSD Governance” by Kirk McKusick was yet another great talk by him covering the early days of FreeBSD until today, detailing some of the progress and challenges the project faced over the years in terms of leadership and governance. This is an ongoing process that everyone in the community should participate in to keep the project healthy and infused with fresh blood.
Err codemadness.org 70 i 54781 Closing session and auction were funny and great as always.
Err codemadness.org 70 i 54782 All in all, yet another amazing BSDCan. Thank you Dan Langille and your organizing team for making it happen! Well done.
Digital Ocean
Err codemadness.org 70 i 54790 Err codemadness.org 70 i 54791 Err codemadness.org 70 i 54792 Err codemadness.org 70 i 54793Err codemadness.org 70 i 54794Err codemadness.org 70 i 54796 Err codemadness.org 70 i 54797The first – and hopefully final – release candidate of NomadBSD 1.1 is available!
Err codemadness.org 70 i 54795
##News Roundup
Err codemadness.org 70
i 54829 ###LDAP client added to -current
CVSROOT: /cvs Err codemadness.org 70
i 54832 Module name: src Err codemadness.org 70
i 54833 Changes by: reyk@cvs.openbsd.org 2018/06/13 09:45:58 Err codemadness.org 70
i 54834 Err codemadness.org 70
i 54835 Log message: Err codemadness.org 70
i 54836 Import ldap(1), a simple ldap search client. Err codemadness.org 70
i 54837 We have an ldapd(8) server and ypldap in base, so it makes sense to Err codemadness.org 70
i 54838 have a simple LDAP client without depending on the OpenLDAP package. Err codemadness.org 70
i 54839 This tool can be used in an ssh(1) AuthorizedKeysCommand script. Err codemadness.org 70
i 54840 Err codemadness.org 70
i 54841 With feedback from many including millert@ schwarze@ gilles@ dlg@ jsing@ Err codemadness.org 70
i 54842 Err codemadness.org 70
i 54843 OK deraadt@ Err codemadness.org 70
i 54844 Err codemadness.org 70
i 54845 Status: Err codemadness.org 70
i 54846 Err codemadness.org 70
i 54847 Vendor Tag: reyk Err codemadness.org 70
i 54848 Release Tags: ldap_20180613 Err codemadness.org 70
i 54849 Err codemadness.org 70
i 54850 N src/usr.bin/ldap/Makefile Err codemadness.org 70
i 54851 N src/usr.bin/ldap/aldap.c Err codemadness.org 70
i 54852 N src/usr.bin/ldap/aldap.h Err codemadness.org 70
i 54853 N src/usr.bin/ldap/ber.c Err codemadness.org 70
i 54854 N src/usr.bin/ldap/ber.h Err codemadness.org 70
i 54855 N src/usr.bin/ldap/ldap.1 Err codemadness.org 70
i 54856 N src/usr.bin/ldap/ldapclient.c Err codemadness.org 70
i 54857 N src/usr.bin/ldap/log.c Err codemadness.org 70
i 54858 N src/usr.bin/ldap/log.h Err codemadness.org 70
i 54859 Err codemadness.org 70
i 54860 No conflicts created by this import Err codemadness.org 70
i 54861 Err codemadness.org 70
i 54862 Err codemadness.org 70
i 54863 ###Intel® FPU Speculation Vulnerability Confirmed
Err codemadness.org 70 i 54866 Err codemadness.org 70 i 54867Summary: Err codemadness.org 70
i 54875 Err codemadness.org 70
i 54876 System software may utilize the Lazy FP state restore technique to delay the restoring of state until an instruction operating on that state is actually executed by the new process. Systems using Intel® Core-based microprocessors may potentially allow a local process to infer data utilizing Lazy FP state restore from another process through a speculative execution side channel. Err codemadness.org 70
i 54877 Err codemadness.org 70
i 54878 Description: Err codemadness.org 70
i 54879 Err codemadness.org 70
i 54880 System software may opt to utilize Lazy FP state restore instead of eager save and restore of the state upon a context switch. Lazy restored states are potentially vulnerable to exploits where one process may infer register values of other processes through a speculative execution side channel that infers their value. Err codemadness.org 70
i 54881 Err codemadness.org 70
i 54882 · CVSS - 4.3 Medium CVSS:3.0/AV:L/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N Err codemadness.org 70
i 54883 Affected Products: Err codemadness.org 70
i 54884 Err codemadness.org 70
i 54885 Intel® Core-based microprocessors. Err codemadness.org 70
i 54886 Err codemadness.org 70
i 54887 Recommendations: Err codemadness.org 70
i 54888 Err codemadness.org 70
i 54889 If an XSAVE-enabled feature is disabled, then we recommend either its state component bitmap in the extended control register (XCR0) is set to 0 (e.g. XCR0[bit 2]=0 for AVX, XCR0[bits 7:5]=0 for AVX512) or the corresponding register states of the feature should be cleared prior to being disabled. Also for relevant states (e.g. x87, SSE, AVX, etc.), Intel recommends system software developers utilize Eager FP state restore in lieu of Lazy FP state restore. Err codemadness.org 70
i 54890 Err codemadness.org 70
i 54891 Acknowledgements: Err codemadness.org 70
i 54892 Err codemadness.org 70
i 54893 Intel would like to thank Julian Stecklina from Amazon Germany, Thomas Prescher from Cyberus Technology GmbH (https://www.cyberus-technology.de/), Zdenek Sojka from SYSGO AG (http://sysgo.com), and Colin Percival for reporting this issue and working with us on coordinated disclosure. Err codemadness.org 70
i 54894 Err codemadness.org 70
i 54895 Err codemadness.org 70
i 54896 iXsystems
Err codemadness.org 70
i 54899 iX Ad Spot
Err codemadness.org 70
i 54900 ###iX Systems - BSDCan 2018 Recap
Merge the pNFS server code from projects/pnfs-planb-server into head. Err codemadness.org 70
i 54905 Err codemadness.org 70
i 54906 This code merge adds a pNFS service to the NFSv4.1 server. Although it is Err codemadness.org 70
i 54907 a large commit it should not affect behaviour for a non-pNFS NFS server. Err codemadness.org 70
i 54908 Some documentation on how this works can be found at: Err codemadness.org 70
i 54909 Merge the pN http://people.freebsd.org/~rmacklem/pnfs-planb-setup.txt Err codemadness.org 70
i 54910 and will hopefully be turned into a proper document soon. Err codemadness.org 70
i 54911 This is a merge of the kernel code. Userland and man page changes will Err codemadness.org 70
i 54912 come soon, once the dust settles on this merge. Err codemadness.org 70
i 54913 It has passed a "make universe", so I hope it will not cause build problems. Err codemadness.org 70
i 54914 It also adds NFSv4.1 server support for the "current stateid". Err codemadness.org 70
i 54915 Err codemadness.org 70
i 54916 Here is a brief overview of the pNFS service: Err codemadness.org 70
i 54917 A pNFS service separates the Read/Write operations from all the other NFSv4.1 Err codemadness.org 70
i 54918 Metadata operations. It is hoped that this separation allows a pNFS service Err codemadness.org 70
i 54919 to be configured that exceeds the limits of a single NFS server for either Err codemadness.org 70
i 54920 storage capacity and/or I/O bandwidth. Err codemadness.org 70
i 54921 It is possible to configure mirroring within the data servers (DSs) so that Err codemadness.org 70
i 54922 the data storage file for an MDS file will be mirrored on two or more of Err codemadness.org 70
i 54923 the DSs. Err codemadness.org 70
i 54924 When this is used, failure of a DS will not stop the pNFS service and a Err codemadness.org 70
i 54925 failed DS can be recovered once repaired while the pNFS service continues Err codemadness.org 70
i 54926 to operate. Although two way mirroring would be the norm, it is possible Err codemadness.org 70
i 54927 to set a mirroring level of up to four or the number of DSs, whichever is Err codemadness.org 70
i 54928 less. Err codemadness.org 70
i 54929 The Metadata server will always be a single point of failure, Err codemadness.org 70
i 54930 just as a single NFS server is. Err codemadness.org 70
i 54931 Err codemadness.org 70
i 54932 A Plan B pNFS service consists of a single MetaData Server (MDS) and K Err codemadness.org 70
i 54933 Data Servers (DS), all of which are recent FreeBSD systems. Err codemadness.org 70
i 54934 Clients will mount the MDS as they would a single NFS server. Err codemadness.org 70
i 54935 When files are created, the MDS creates a file tree identical to what a Err codemadness.org 70
i 54936 single NFS server creates, except that all the regular (VREG) files will Err codemadness.org 70
i 54937 be empty. As such, if you look at the exported tree on the MDS directly Err codemadness.org 70
i 54938 on the MDS server (not via an NFS mount), the files will all be of size 0. Err codemadness.org 70
i 54939 Each of these files will also have two extended attributes in the system Err codemadness.org 70
i 54940 attribute name space: Err codemadness.org 70
i 54941 pnfsd.dsfile - This extended attrbute stores the information that Err codemadness.org 70
i 54942 the MDS needs to find the data storage file(s) on DS(s) for this file. Err codemadness.org 70
i 54943 pnfsd.dsattr - This extended attribute stores the Size, AccessTime, ModifyTime Err codemadness.org 70
i 54944 and Change attributes for the file, so that the MDS doesn't need to Err codemadness.org 70
i 54945 acquire the attributes from the DS for every Getattr operation. Err codemadness.org 70
i 54946 For each regular (VREG) file, the MDS creates a data storage file on one Err codemadness.org 70
i 54947 (or more if mirroring is enabled) of the DSs in one of the "dsNN" Err codemadness.org 70
i 54948 subdirectories. The name of this file is the file handle Err codemadness.org 70
i 54949 of the file on the MDS in hexadecimal so that the name is unique. Err codemadness.org 70
i 54950 The DSs use subdirectories named "ds0" to "dsN" so that no one directory Err codemadness.org 70
i 54951 gets too large. The value of "N" is set via the sysctl vfs.nfsd.dsdirsize Err codemadness.org 70
i 54952 on the MDS, with the default being 20. Err codemadness.org 70
i 54953 For production servers that will store a lot of files, this value should Err codemadness.org 70
i 54954 probably be much larger. Err codemadness.org 70
i 54955 It can be increased when the "nfsd" daemon is not running on the MDS, Err codemadness.org 70
i 54956 once the "dsK" directories are created. Err codemadness.org 70
i 54957 Err codemadness.org 70
i 54958 For pNFS aware NFSv4.1 clients, the FreeBSD server will return two pieces Err codemadness.org 70
i 54959 of information to the client that allows it to do I/O directly to the DS. Err codemadness.org 70
i 54960 DeviceInfo - This is relatively static information that defines what a DS Err codemadness.org 70
i 54961 is. The critical bits of information returned by the FreeBSD Err codemadness.org 70
i 54962 server is the IP address of the DS and, for the Flexible Err codemadness.org 70
i 54963 File layout, that NFSv4.1 is to be used and that it is Err codemadness.org 70
i 54964 "tightly coupled". Err codemadness.org 70
i 54965 There is a "deviceid" which identifies the DeviceInfo. Err codemadness.org 70
i 54966 Layout - This is per file and can be recalled by the server when it Err codemadness.org 70
i 54967 is no longer valid. For the FreeBSD server, there is support Err codemadness.org 70
i 54968 for two types of layout, call File and Flexible File layout. Err codemadness.org 70
i 54969 Both allow the client to do I/O on the DS via NFSv4.1 I/O Err codemadness.org 70
i 54970 operations. The Flexible File layout is a more recent variant Err codemadness.org 70
i 54971 that allows specification of mirrors, where the client is Err codemadness.org 70
i 54972 expected to do writes to all mirrors to maintain them in a Err codemadness.org 70
i 54973 consistent state. The Flexible File layout also allows the Err codemadness.org 70
i 54974 client to report I/O errors for a DS back to the MDS. Err codemadness.org 70
i 54975 The Flexible File layout supports two variants referred to as Err codemadness.org 70
i 54976 "tightly coupled" vs "loosely coupled". The FreeBSD server always Err codemadness.org 70
i 54977 uses the "tightly coupled" variant where the client uses the Err codemadness.org 70
i 54978 same credentials to do I/O on the DS as it would on the MDS. Err codemadness.org 70
i 54979 For the "loosely coupled" variant, the layout specifies a Err codemadness.org 70
i 54980 synthetic user/group that the client uses to do I/O on the DS. Err codemadness.org 70
i 54981 The FreeBSD server does not do striping and always returns Err codemadness.org 70
i 54982 layouts for the entire file. The critical information in a layout Err codemadness.org 70
i 54983 is Read vs Read/Writea and DeviceID(s) that identify which Err codemadness.org 70
i 54984 DS(s) the data is stored on. Err codemadness.org 70
i 54985 Err codemadness.org 70
i 54986 At this time, the MDS generates File Layout layouts to NFSv4.1 clients Err codemadness.org 70
i 54987 that know how to do pNFS for the non-mirrored DS case unless the sysctl Err codemadness.org 70
i 54988 vfs.nfsd.default_flexfile is set non-zero, in which case Flexible File Err codemadness.org 70
i 54989 layouts are generated. Err codemadness.org 70
i 54990 The mirrored DS configuration always generates Flexible File layouts. Err codemadness.org 70
i 54991 For NFS clients that do not support NFSv4.1 pNFS, all I/O operations Err codemadness.org 70
i 54992 are done against the MDS which acts as a proxy for the appropriate DS(s). Err codemadness.org 70
i 54993 When the MDS receives an I/O RPC, it will do the RPC on the DS as a proxy. Err codemadness.org 70
i 54994 If the DS is on the same machine, the MDS/DS will do the RPC on the DS as Err codemadness.org 70
i 54995 a proxy and so on, until the machine runs out of some resource, such as Err codemadness.org 70
i 54996 session slots or mbufs. Err codemadness.org 70
i 54997 As such, DSs must be separate systems from the MDS. Err codemadness.org 70
i 54998 Err codemadness.org 70
i 54999 *** Err codemadness.org 70
i 55000 Err codemadness.org 70
i 55001 ###[What does {some strange unix command name} stand for?](http://www.unixguide.net/unix/faq/1.3.shtml) Err codemadness.org 70
i 55002 Err codemadness.org 70
i 55003 + awk = "Aho Weinberger and Kernighan" Err codemadness.org 70
i 55004 + grep = "Global Regular Expression Print" Err codemadness.org 70
i 55005 + fgrep = "Fixed GREP". Err codemadness.org 70
i 55006 + egrep = "Extended GREP" Err codemadness.org 70
i 55007 + cat = "CATenate" Err codemadness.org 70
i 55008 + gecos = "General Electric Comprehensive Operating Supervisor" Err codemadness.org 70
i 55009 + nroff = "New ROFF" Err codemadness.org 70
i 55010 + troff = "Typesetter new ROFF" Err codemadness.org 70
i 55011 + tee = T Err codemadness.org 70
i 55012 + bss = "Block Started by Symbol Err codemadness.org 70
i 55013 + biff = "BIFF" Err codemadness.org 70
i 55014 + rc (as in ".cshrc" or "/etc/rc") = "RunCom" Err codemadness.org 70
i 55015 + Don Libes' book "Life with Unix" contains lots more of these Err codemadness.org 70
i 55016 tidbits. Err codemadness.org 70
i 55017 *** Err codemadness.org 70
i 55018 Err codemadness.org 70
i 55019 ##Beastie Bits Err codemadness.org 70
i 55020 + [RetroBSD: Unix for microcontrollers](http://retrobsd.org/wiki/doku.php) Err codemadness.org 70
i 55021 + [On the matter of OpenBSD breaking embargos (KRACK)](https://marc.info/?l=openbsd-tech&m=152910536208954&w=2) Err codemadness.org 70
i 55022 + [Theo's Basement Computer Paradise (1998)](https://zeus.theos.com/deraadt/hosts.html) Err codemadness.org 70
i 55023 + [Airport Extreme runs NetBSD](https://jcs.org/2018/06/12/airport_ssh) Err codemadness.org 70
i 55024 + [What UNIX shell could have been](https://rain-1.github.io/shell-2.html) Err codemadness.org 70
i 55025 Err codemadness.org 70
i 55026 *** Err codemadness.org 70
i 55027 Tarsnap ad Err codemadness.org 70
i 55028 *** Err codemadness.org 70
i 55029 Err codemadness.org 70
i 55030 ##Feedback/Questions Err codemadness.org 70
i 55031 + We need more feedback and questions. Please email feedback@bsdnow.tv Err codemadness.org 70
i 55032 + Also, many of you owe us BSDCan trip reports! We have shared what our experience at BSDCan was like, but we want to hear about yours. What can we do better next year? What was it like being there for the first time? Err codemadness.org 70
i 55033 + [Jason writes in](https://slexy.org/view/s205jU58X2) Err codemadness.org 70
i 55034 + https://www.wheelsystems.com/en/products/wheel-fudo-psm/ Err codemadness.org 70
i 55035 + [June 19th was National FreeBSD Day](https://twitter.com/search?src=typd&q=%23FreeBSDDay) Err codemadness.org 70
i 55036 *** Err codemadness.org 70
i 55037 Err codemadness.org 70
i 55038 - Send questions, comments, show ideas/topics, or stories you want mentioned on the show to [feedback@bsdnow.tv](mailto:feedback@bsdnow.tv) Err codemadness.org 70
i 55039 *** Err codemadness.org 70
i 55040 Err codemadness.org 70
i 55041 ]]> Err codemadness.org 70
i 55042 ##Headlines##
Err codemadness.org 70
i 55359 ###TrueOS to Focus on Core Operating System
Err codemadness.org 70 i 55362Err codemadness.org 70 i 55364 Err codemadness.org 70 i 55365The TrueOS Project has some big plans in the works, and we want to take a minute and share them with you. Many have come to know TrueOS as the “graphical FreeBSD” that makes things easy for newcomers to the BSDs. Today we’re announcing that TrueOS is shifting our focus a bit to become a cutting-edge operating system that keeps all of the stability that you know and love from ZFS (OpenZFS) and FreeBSD, and adds additional features to create a fresh, innovative operating system. Our goal is to create a core-centric operating system that is modular, functional, and perfect for do-it-yourselfers and advanced users alike.
Err codemadness.org 70 i 55363
Err codemadness.org 70 i 55366Err codemadness.org 70 i 55368 Err codemadness.org 70 i 55369TrueOS will become a downstream fork that will build on FreeBSD by integrating new software technologies like OpenRC and LibreSSL. Work has already begun which allows TrueOS to be used as a base platform for other projects, including JSON-based manifests, integrated Poudriere / pkg tools and much more. We’re planning on a six month release cycle to keep development moving and fresh, allowing us to bring you hot new features to ZFS, bhyve and related tools in a timely manner. This makes TrueOS the perfect fit to serve as the basis for building other distributions.
Err codemadness.org 70 i 55367
Err codemadness.org 70 i 55370Err codemadness.org 70 i 55372 Err codemadness.org 70 i 55373Some of you are probably asking yourselves “But what if I want to have a graphical desktop?” Don’t worry! We’re making sure that everyone who knows and loves the legacy desktop version of TrueOS will be able to continue using a FreeBSD-based, graphical operating system in the future. For instance, if you want to add KDE, just use sudo pkg install kde and voila! You have your new shiny desktop. Easy right? This allows us to get back to our roots of being a desktop agnostic operating system. If you want to add a new desktop environment, you get to pick the one that best suits your use.
Err codemadness.org 70 i 55371
Err codemadness.org 70 i 55374Err codemadness.org 70 i 55376 Err codemadness.org 70 i 55377We know that some of you will still be looking for an out-of-the-box solution similar to legacy PC-BSD and TrueOS. We’re happy to announce that Project Trident will take over graphical FreeBSD development going forward. Not much is going to change in that regard other than a new name! You’ll still have Lumina Desktop as a lightweight and feature-rich desktop environment and tons of utilities from the legacy TrueOS toolchain like sysadm and AppCafe. There will be migration paths available for those that would like to move to other FreeBSD-based distributions like Project Trident or GhostBSD.
Err codemadness.org 70 i 55375
Err codemadness.org 70 i 55378Err codemadness.org 70 i 55380 Err codemadness.org 70 i 55381 Err codemadness.org 70 i 55382 Err codemadness.org 70 i 55383We look forward to this new chapter for TrueOS and hope you will give the new edition a spin! Tell us what you think about the new changes by leaving us a comment. Don’t forget you can ask us questions on our Twitter and be a part of our community by joining the new TrueOS Forums when they go live in about a week. Thanks for being a loyal fan of TrueOS.
Err codemadness.org 70 i 55379
Err codemadness.org 70 i 55388Err codemadness.org 70 i 55390 Err codemadness.org 70 i 55391A: We were looking for a name that was unique, yet would still relate to the BSD community. Since Beastie (the FreeBSD mascot) is always pictured with a trident, it felt like that would be a great name.
Err codemadness.org 70 i 55389
Err codemadness.org 70 i 55396Err codemadness.org 70 i 55398 Err codemadness.org 70 i 55399A: At the moment, Project Trident will continue sharing the TrueOS community forums and Telegram channels. We are currently evaluating dedicated options for support channels in the future.
Err codemadness.org 70 i 55397
Err codemadness.org 70 i 55404Err codemadness.org 70 i 55406 Err codemadness.org 70 i 55407A: We are always looking for developers who want to join the project. If you’re not a developer you can still help, as a community project we will be more reliant on contributions from the community in the form of how-to guides and other user-centric documentation and support systems.
Err codemadness.org 70 i 55405
Err codemadness.org 70 i 55412Err codemadness.org 70 i 55414 Err codemadness.org 70 i 55415A: Project Trident is sponsored by the community, from both individuals and corporations. iXsystems has stepped up as the first enterprise-level sponsor of the project, and has been instrumental in getting Project Trident up and running. Please visit the Sponsors page to see all the current sponsors.
Err codemadness.org 70 i 55413
Err codemadness.org 70 i 55420Err codemadness.org 70 i 55422 Err codemadness.org 70 i 55423A: Several methods exist, from one time or recurring donations via Paypal to limited time swag t-shirt campaigns during the year. We are also looking into more alternative methods of support, so please visit the Sponsors page to see all the current methods of sponsorship.
Err codemadness.org 70 i 55421
Err codemadness.org 70 i 55428Err codemadness.org 70 i 55430 Err codemadness.org 70 i 55431A: Yes, we will be totally open with how much money comes into the project and what it is spent on. Due to concerns of privacy, we will not identify individuals and their donation amounts unless they specifically request to be identified. We will release a monthly overview in/out ledger, so that community members can see where their money is going.
Err codemadness.org 70 i 55429
Relationship with TrueOS
Err codemadness.org 70 i 55434Project Trident does have very close ties to the TrueOS project, since most of the original Project Trident developers were once part of the TrueOS project before it became a distribution platform. For users of the TrueOS desktop, we have some additional questions and answers below.
Err codemadness.org 70 i 55437Q: Do we need to be at a certain TrueOS install level/release to upgrade?
Err codemadness.org 70 i 55440Err codemadness.org 70 i 55444Err codemadness.org 70 i 55446 Err codemadness.org 70 i 55447A: As long as you have a TrueOS system which has been updated to at least the 18.03 release you should be able to just perform a system update to be automatically upgraded to Project Trident.
Err codemadness.org 70 i 55445
Err codemadness.org 70 i 55452Err codemadness.org 70 i 55454 Err codemadness.org 70 i 55455A: Project Trident is being led by prior members of the TrueOS desktop team. Ken and JT (development), Tim (documentation) and Rod (Community/Support). Since Project Trident is a community-first project, we look forward to working with new members of the team.
Err codemadness.org 70 i 55453
iXsystems
Err codemadness.org 70 i 55458 Err codemadness.org 70 i 55459###BSDCan
Err codemadness.org 70 i 55460 Err codemadness.org 70 i 55461##News Roundup
Err codemadness.org 70
i 55480 ###June HardenedBSD Foundation Update
Err codemadness.org 70 i 55483Err codemadness.org 70 i 55485 Err codemadness.org 70 i 55486We at HardenedBSD are working towards starting up a 501©(3) not-for-profit organization in the USA. Setting up this organization will allow future donations to be tax deductible. We’ve made progress and would like to share with you the current state of affairs.
Err codemadness.org 70 i 55484
Err codemadness.org 70 i 55487Err codemadness.org 70 i 55489 Err codemadness.org 70 i 55490We have identified, sent invitations out, and received acceptance letters from six people who will serve on the HardenedBSD Foundation Board of Directors. You can find their bios below. In the latter half of June 2018 or the beginning half of July 2018, we will meet for the first time as a board and formally begin the process of creating the documentation needed to submit to the local, state, and federal tax services.
Err codemadness.org 70 i 55488
Err codemadness.org 70 i 55491Err codemadness.org 70 i 55493 Err codemadness.org 70 i 55494Here’s a brief introduction to those who will serve on the board:
Err codemadness.org 70 i 55492
W. Dean Freeman (Advisor): Dean has ten years of professional experience with deploying and security Unix and networking systems, including assessing systems security for government certification and assessing the efficacy of security products. He was introduced to Unix via FreeBSD 2.2.8 on an ISP shell account as a teenager. Formerly, he was the Snort port maintainer for FreeBSD while working in the Sourcefire VRT, and has contributed entropy-related patches to the FreeBSD and HardenedBSD projects – a topic on which he presented at vBSDCon 2017.
Err codemadness.org 70 i 55497Ben La Monica (Advisor): Ben is a Senior Technology Manager of Software Engineering at Morningstar, Inc and has been developing software for over 15 years in a variety of languages. He advocates open source software and enjoys tinkering with electronics and home automation.
Err codemadness.org 70 i 55500George Saylor (Advisor): George is a Technical Directory at G2, Inc. Mr. Saylor has over 28 years of information systems and security experience in a broad range of disciplines. His core focus areas are automation and standards in the event correlation space as well as penetration and exploitation of computer systems. Mr Saylor was also a co-founder of the OpenSCAP project.
Err codemadness.org 70 i 55503Virginia Suydan (Accountant and general administrator): Accountant and general administrator for the HardenedBSD Foundation. She has worked with Shawn Webb for tax and accounting purposes for over six years.
Err codemadness.org 70 i 55506Shawn Webb (Director): Co-founder of HardenedBSD and all-around infosec wonk. He has worked and played in the infosec industry, doing both offensive and defensive research, for around fifteen years. He loves open source technologies and likes to frustrate the bad guys.
Err codemadness.org 70 i 55509Ben Welch (Advisor): Ben is currently a Security Engineer at G2, Inc. He graduated from Pennsylvania College of Technology with a Bachelors in Information Assurance and Security. Ben likes long walks, beaches, candlelight dinners, and attending various conferences like BSides and ShmooCon.
Err codemadness.org 70 i 55512###Your own VPN with OpenIKED & OpenBSD
Err codemadness.org 70 i 55518 Err codemadness.org 70 i 55519Err codemadness.org 70 i 55520Err codemadness.org 70 i 55522 Err codemadness.org 70 i 55523Remote connectivity to your home network is something I think a lot of people find desirable. Over the years, I’ve just established an SSH tunnel and use it as a SOCKS proxy, sending my traffic through that. It’s a nice solution for a “poor man’s VPN”, but it can be a bit clunky, and it’s not great having to expose SSH to the world, even if you make sure to lock everything down
Err codemadness.org 70 i 55521
Err codemadness.org 70 i 55524Err codemadness.org 70 i 55526 Err codemadness.org 70 i 55527I set out the other day to finally do it properly. I’d come across this great post by Gordon Turner: OpenBSD 6.2 VPN Endpoint for iOS and macOS
Err codemadness.org 70 i 55525
Err codemadness.org 70 i 55528Err codemadness.org 70 i 55530 Err codemadness.org 70 i 55531Whilst it was exactly what I was looking for, it outlined how to set up an L2TP VPN. Really, I wanted IKEv2 for performance and security reasons (I won’t elaborate on this here, if you’re curious about the differences, there’s a lot of content out on the web explaining this).
Err codemadness.org 70 i 55529
Err codemadness.org 70 i 55532Err codemadness.org 70 i 55534 Err codemadness.org 70 i 55535The client systems I’d be using have native support for IKEv2 (iOS, macOS, other BSD systems). But, I couldn’t find any tutorials in the same vein.
Err codemadness.org 70 i 55533
Err codemadness.org 70 i 55536Err codemadness.org 70 i 55538 Err codemadness.org 70 i 55539So, let’s get stuck in!
Err codemadness.org 70 i 55537
Err codemadness.org 70 i 55544Err codemadness.org 70 i 55546 Err codemadness.org 70 i 55547This guide will walk through the set up of an IKEv2 VPN using OpenIKED on OpenBSD. It will detail a “road warrior” configuration, and use a PSK (pre-shared-key) for authentication. I’m sure it can be easily adapted to work on any other platforms that OpenIKED is available on, but keep in mind my steps are specifically for OpenBSD.
Err codemadness.org 70 i 55545
Err codemadness.org 70 i 55552Err codemadness.org 70 i 55554 Err codemadness.org 70 i 55555As with all my home infrastructure, I crafted this set-up declaratively. So, I had the deployment of the VM setup in Terraform (deployed on my private Triton cluster), and wrote the configuration in Ansible, then tied them together using radekg/terraform-provisioner-ansible.
Err codemadness.org 70 i 55553
Err codemadness.org 70 i 55556Err codemadness.org 70 i 55558 Err codemadness.org 70 i 55559One of the reasons I love Ansible is that its syntax is very simplistic, yet expressive. As such, I feel it fits very well into explaining these steps with snippets of the playbook I wrote. I’ll link the full playbook a bit further down for those interested.
Err codemadness.org 70 i 55557
DigitalOcean
Err codemadness.org 70 i 55574 Err codemadness.org 70 i 55575###FreeBSD on a System76 Galago Pro
Err codemadness.org 70 i 55576 Err codemadness.org 70 i 55577Err codemadness.org 70 i 55578Err codemadness.org 70 i 55580 Err codemadness.org 70 i 55581Hey all, It’s been a while since I last posted but I thought I would hammer something out here. My most recent purchase was a System76 Galago Pro. I thought, afer playing with POP! OS a bit, is there any reason I couldn’t get BSD on this thing. Turns out the answer is no, no there isnt and it works pretty decently.
Err codemadness.org 70 i 55579
Err codemadness.org 70 i 55582Err codemadness.org 70 i 55584 Err codemadness.org 70 i 55585To get some accounting stuff out of the way I tested this all on FreeBSD Head and 11.1, and all of it is valid as of May 10, 2018. Head is a fast moving target so some of this is only bound to improve.
Err codemadness.org 70 i 55583
The hardware
Err codemadness.org 70 i 55588Intel Core i5 Gen 8
Err codemadness.org 70 i 55591UHD Graphics 620
Err codemadness.org 70 i 5559416 GB DDR4 Ram
Err codemadness.org 70 i 55597RTL8411B PCI Express Card Reader
Err codemadness.org 70 i 55600RTL8111 Gigabit ethernet controller
Err codemadness.org 70 i 55603Intel HD Audio
Err codemadness.org 70 i 55606Samsung SSD 960 PRO 512GB NVMe
Err codemadness.org 70 i 55609The caveats
Err codemadness.org 70 i 55612Err codemadness.org 70 i 55616Err codemadness.org 70 i 55618 Err codemadness.org 70 i 55619There are a few things that I cant seem to make work straight out of the box, and that is the SD Card reader, the backlight, and the audio is a bit finicky. Also the trackpad doesn’t respond to two finger scrolling. The wiki is mostly up to date, there are a few edits that need to be made still but there is a bug where I cant register an account yet so I haven’t made all the changes.
Err codemadness.org 70 i 55617
Err codemadness.org 70 i 55624Err codemadness.org 70 i 55626 Err codemadness.org 70 i 55627It works like any other Intel processor. Pstates and throttling work.
Err codemadness.org 70 i 55625
Err codemadness.org 70 i 55632Err codemadness.org 70 i 55634 Err codemadness.org 70 i 55635The boot menu sets itself to what looks like 1024x768, but works as you expect in a tiny window. The text console does the full 3200x1800 resolution, but the text is ultra tiny. There isnt a font for the console that covers hidpi screens yet. As for X Windows it requres the drm-kmod-next package. Once installed follow the directions from the package and it works with almost no fuss. I have it running on X with full intel acceleration, but it is running at it’s full 3200x1800 resolution, to scale that down just do xrandr --output eDP-1 --scale 0.5x0.5 it will blow it up to roughly 200%. Due to limitations with X windows and hidpi it is harder to get more granular.
Err codemadness.org 70 i 55633
Err codemadness.org 70 i 55640Err codemadness.org 70 i 55642 Err codemadness.org 70 i 55643The wireless uses the iwm module, as of right now it does not seem to automagically load right now. Adding iwm_load=“YES” will cause the module to load on boot and kldload iwm
Err codemadness.org 70 i 55641
Err codemadness.org 70 i 55648Err codemadness.org 70 i 55650 Err codemadness.org 70 i 55651I seem to be getting about 5 hours out of the battery, but everything reports out of the box as expected. I could get more by throttling the CPU down speed wise.
Err codemadness.org 70 i 55649
Err codemadness.org 70 i 55656Err codemadness.org 70 i 55658 Err codemadness.org 70 i 55659It is a pretty decent experience. While not as polished as a Thinkpad there is a lot of potential with a bit of work and polishing. The laptop itself is not bad, the keyboard is responsive. The build quality is pretty solid. My only real complaint is the trackpad is stiff to click and sort of tiny. They seem to be a bit indifferent to non linux OSes running on the gear but that isnt anything new. I wont have any problems using it and is enough that when I work through this laptop, but I’m not sure at this stage if my next machine will be a System76 laptop, but they have impressed me enough to put them in the running when I go to look for my next portable machine but it hasn’t yet replaced the hole left in my heart by lenovo messing with the thinkpad.
Err codemadness.org 70 i 55657
###Hardware accelerated AES/HMAC-SHA on octeons
Err codemadness.org 70 i 55662 Err codemadness.org 70 i 55663In this commit, visa@ submitted code (disabled for now) to use built-in acceleration on octeon CPUs, much like AESNI for x86s. Err codemadness.org 70
i 55664 Err codemadness.org 70
i 55665 I decided to test tcpbench(1) and IPsec, before and after updating and enabling the octcrypto(4) driver. Err codemadness.org 70
i 55666 Err codemadness.org 70
i 55667 I didn't capture detailed perf stats from before the update, I had heard someone say that Edgerouter Lite boxes would only do some 6MBit/s over ipsec, so I set up a really simple ipsec.conf with ike esp from A to B leading to a policy of Err codemadness.org 70
i 55668 Err codemadness.org 70
i 55669 esp tunnel from A to B spi 0xdeadbeef auth hmac-sha2-256 enc aes Err codemadness.org 70
i 55670 going from one ERL to another (I collect octeons, so I have a bunch to test with) and let tcpbench run for a while on it. My numbers hovered around 7Mbit/s, which coincided with what I've heard, and also that most of the CPU gets used while doing it. Err codemadness.org 70
i 55671 Then I edited /sys/arch/octeon/conf/GENERIC, removed the # from octcrypto0 at mainbus0 and recompiled. Booted into the new kernel and got a octcrypto0 line in dmesg, and it was time to rock the ipsec tunnel again. The crypto algorithm and HMAC used by default on ipsec coincides nicely with the list of accelerated functions provided by the driver. Err codemadness.org 70
i 55672 Err codemadness.org 70
i 55673 Before we get to tunnel traffic numbers, just one quick look at what systat pigs says while the ipsec is running at full steam: Err codemadness.org 70
i 55674 Err codemadness.org 70
i 55675 PID USER NAME CPU 20\ 40\ 60\ 80\ 100\ Err codemadness.org 70
i 55676 58917 root crypto 52.25 ################# Err codemadness.org 70
i 55677 42636 root softnet 42.48 ############## Err codemadness.org 70
i 55678 (idle) 29.74 ######### Err codemadness.org 70
i 55679 1059 root tcpbench 24.22 ####### Err codemadness.org 70
i 55680 67777 root crynlk 19.58 ###### Err codemadness.org 70
i 55681 So this indicates that the load from doing ipsec and generating the traffic is somewhat nicely evened out over the two cores in the Edgerouter, and there's even some CPU left unused, which means I can actually ssh into it and have it usable. I have had it running for almost 2 days now, moving some 2.1TB over the tunnel. Err codemadness.org 70
i 55682 Now for the new and improved performance numbers: Err codemadness.org 70
i 55683 Err codemadness.org 70
i 55684 204452123 4740752 37.402 100.00% Err codemadness.org 70
i 55685 Conn: 1 Mbps: 37.402 Peak Mbps: 58.870 Avg Mbps: 37.402 Err codemadness.org 70
i 55686 204453149 4692968 36.628 100.00% Err codemadness.org 70
i 55687 Conn: 1 Mbps: 36.628 Peak Mbps: 58.870 Avg Mbps: 36.628 Err codemadness.org 70
i 55688 204454167 5405552 42.480 100.00% Err codemadness.org 70
i 55689 Conn: 1 Mbps: 42.480 Peak Mbps: 58.870 Avg Mbps: 42.480 Err codemadness.org 70
i 55690 204455188 5202496 40.804 100.00% Err codemadness.org 70
i 55691 Conn: 1 Mbps: 40.804 Peak Mbps: 58.870 Avg Mbps: 40.804 Err codemadness.org 70
i 55692 204456194 5062208 40.256 100.00% Err codemadness.org 70
i 55693 Conn: 1 Mbps: 40.256 Peak Mbps: 58.870 Avg Mbps: 40.256 Err codemadness.org 70
i 55694 Err codemadness.org 70
i 55695 The tcpbench numbers fluctuate up and down a bit, but the output is nice enough to actually keep tabs on the peak values. Peaking to 58.8MBit/s! Of course, as you can see, the average is lower but nice anyhow. Err codemadness.org 70
i 55696 Err codemadness.org 70
i 55697 A manyfold increase in performance, which is good enough in itself, but also moves the throughput from a speed that would make a poor but cheap gateway to something actually useful and decent for many home network speeds. Biggest problem after this gets enabled will be that my options to buy cheap used ERLs diminish. Err codemadness.org 70
i 55698 Err codemadness.org 70
i 55699 Err codemadness.org 70
i 55700 ##Beastie Bits
Err codemadness.org 70 i 55703 Err codemadness.org 70 i 55704Tarsnap
Err codemadness.org 70 i 55716 Err codemadness.org 70 i 55717##Feedback/Questions
Err codemadness.org 70 i 55718 Err codemadness.org 70 i 55719##Headlines##
Err codemadness.org 70
i 55736 ###TrueOS to Focus on Core Operating System
Err codemadness.org 70 i 55739Err codemadness.org 70 i 55741 Err codemadness.org 70 i 55742The TrueOS Project has some big plans in the works, and we want to take a minute and share them with you. Many have come to know TrueOS as the “graphical FreeBSD” that makes things easy for newcomers to the BSDs. Today we’re announcing that TrueOS is shifting our focus a bit to become a cutting-edge operating system that keeps all of the stability that you know and love from ZFS (OpenZFS) and FreeBSD, and adds additional features to create a fresh, innovative operating system. Our goal is to create a core-centric operating system that is modular, functional, and perfect for do-it-yourselfers and advanced users alike.
Err codemadness.org 70 i 55740
Err codemadness.org 70 i 55743Err codemadness.org 70 i 55745 Err codemadness.org 70 i 55746TrueOS will become a downstream fork that will build on FreeBSD by integrating new software technologies like OpenRC and LibreSSL. Work has already begun which allows TrueOS to be used as a base platform for other projects, including JSON-based manifests, integrated Poudriere / pkg tools and much more. We’re planning on a six month release cycle to keep development moving and fresh, allowing us to bring you hot new features to ZFS, bhyve and related tools in a timely manner. This makes TrueOS the perfect fit to serve as the basis for building other distributions.
Err codemadness.org 70 i 55744
Err codemadness.org 70 i 55747Err codemadness.org 70 i 55749 Err codemadness.org 70 i 55750Some of you are probably asking yourselves “But what if I want to have a graphical desktop?” Don’t worry! We’re making sure that everyone who knows and loves the legacy desktop version of TrueOS will be able to continue using a FreeBSD-based, graphical operating system in the future. For instance, if you want to add KDE, just use sudo pkg install kde and voila! You have your new shiny desktop. Easy right? This allows us to get back to our roots of being a desktop agnostic operating system. If you want to add a new desktop environment, you get to pick the one that best suits your use.
Err codemadness.org 70 i 55748
Err codemadness.org 70 i 55751Err codemadness.org 70 i 55753 Err codemadness.org 70 i 55754We know that some of you will still be looking for an out-of-the-box solution similar to legacy PC-BSD and TrueOS. We’re happy to announce that Project Trident will take over graphical FreeBSD development going forward. Not much is going to change in that regard other than a new name! You’ll still have Lumina Desktop as a lightweight and feature-rich desktop environment and tons of utilities from the legacy TrueOS toolchain like sysadm and AppCafe. There will be migration paths available for those that would like to move to other FreeBSD-based distributions like Project Trident or GhostBSD.
Err codemadness.org 70 i 55752
Err codemadness.org 70 i 55755Err codemadness.org 70 i 55757 Err codemadness.org 70 i 55758 Err codemadness.org 70 i 55759 Err codemadness.org 70 i 55760We look forward to this new chapter for TrueOS and hope you will give the new edition a spin! Tell us what you think about the new changes by leaving us a comment. Don’t forget you can ask us questions on our Twitter and be a part of our community by joining the new TrueOS Forums when they go live in about a week. Thanks for being a loyal fan of TrueOS.
Err codemadness.org 70 i 55756
Err codemadness.org 70 i 55765Err codemadness.org 70 i 55767 Err codemadness.org 70 i 55768A: We were looking for a name that was unique, yet would still relate to the BSD community. Since Beastie (the FreeBSD mascot) is always pictured with a trident, it felt like that would be a great name.
Err codemadness.org 70 i 55766
Err codemadness.org 70 i 55773Err codemadness.org 70 i 55775 Err codemadness.org 70 i 55776A: At the moment, Project Trident will continue sharing the TrueOS community forums and Telegram channels. We are currently evaluating dedicated options for support channels in the future.
Err codemadness.org 70 i 55774
Err codemadness.org 70 i 55781Err codemadness.org 70 i 55783 Err codemadness.org 70 i 55784A: We are always looking for developers who want to join the project. If you’re not a developer you can still help, as a community project we will be more reliant on contributions from the community in the form of how-to guides and other user-centric documentation and support systems.
Err codemadness.org 70 i 55782
Err codemadness.org 70 i 55789Err codemadness.org 70 i 55791 Err codemadness.org 70 i 55792A: Project Trident is sponsored by the community, from both individuals and corporations. iXsystems has stepped up as the first enterprise-level sponsor of the project, and has been instrumental in getting Project Trident up and running. Please visit the Sponsors page to see all the current sponsors.
Err codemadness.org 70 i 55790
Err codemadness.org 70 i 55797Err codemadness.org 70 i 55799 Err codemadness.org 70 i 55800A: Several methods exist, from one time or recurring donations via Paypal to limited time swag t-shirt campaigns during the year. We are also looking into more alternative methods of support, so please visit the Sponsors page to see all the current methods of sponsorship.
Err codemadness.org 70 i 55798
Err codemadness.org 70 i 55805Err codemadness.org 70 i 55807 Err codemadness.org 70 i 55808A: Yes, we will be totally open with how much money comes into the project and what it is spent on. Due to concerns of privacy, we will not identify individuals and their donation amounts unless they specifically request to be identified. We will release a monthly overview in/out ledger, so that community members can see where their money is going.
Err codemadness.org 70 i 55806
Relationship with TrueOS
Err codemadness.org 70 i 55811Project Trident does have very close ties to the TrueOS project, since most of the original Project Trident developers were once part of the TrueOS project before it became a distribution platform. For users of the TrueOS desktop, we have some additional questions and answers below.
Err codemadness.org 70 i 55814Q: Do we need to be at a certain TrueOS install level/release to upgrade?
Err codemadness.org 70 i 55817Err codemadness.org 70 i 55821Err codemadness.org 70 i 55823 Err codemadness.org 70 i 55824A: As long as you have a TrueOS system which has been updated to at least the 18.03 release you should be able to just perform a system update to be automatically upgraded to Project Trident.
Err codemadness.org 70 i 55822
Err codemadness.org 70 i 55829Err codemadness.org 70 i 55831 Err codemadness.org 70 i 55832A: Project Trident is being led by prior members of the TrueOS desktop team. Ken and JT (development), Tim (documentation) and Rod (Community/Support). Since Project Trident is a community-first project, we look forward to working with new members of the team.
Err codemadness.org 70 i 55830
iXsystems
Err codemadness.org 70 i 55835 Err codemadness.org 70 i 55836###BSDCan
Err codemadness.org 70 i 55837 Err codemadness.org 70 i 55838##News Roundup
Err codemadness.org 70
i 55857 ###June HardenedBSD Foundation Update
Err codemadness.org 70 i 55860Err codemadness.org 70 i 55862 Err codemadness.org 70 i 55863We at HardenedBSD are working towards starting up a 501©(3) not-for-profit organization in the USA. Setting up this organization will allow future donations to be tax deductible. We’ve made progress and would like to share with you the current state of affairs.
Err codemadness.org 70 i 55861
Err codemadness.org 70 i 55864Err codemadness.org 70 i 55866 Err codemadness.org 70 i 55867We have identified, sent invitations out, and received acceptance letters from six people who will serve on the HardenedBSD Foundation Board of Directors. You can find their bios below. In the latter half of June 2018 or the beginning half of July 2018, we will meet for the first time as a board and formally begin the process of creating the documentation needed to submit to the local, state, and federal tax services.
Err codemadness.org 70 i 55865
Err codemadness.org 70 i 55868Err codemadness.org 70 i 55870 Err codemadness.org 70 i 55871Here’s a brief introduction to those who will serve on the board:
Err codemadness.org 70 i 55869
W. Dean Freeman (Advisor): Dean has ten years of professional experience with deploying and security Unix and networking systems, including assessing systems security for government certification and assessing the efficacy of security products. He was introduced to Unix via FreeBSD 2.2.8 on an ISP shell account as a teenager. Formerly, he was the Snort port maintainer for FreeBSD while working in the Sourcefire VRT, and has contributed entropy-related patches to the FreeBSD and HardenedBSD projects – a topic on which he presented at vBSDCon 2017.
Err codemadness.org 70 i 55874Ben La Monica (Advisor): Ben is a Senior Technology Manager of Software Engineering at Morningstar, Inc and has been developing software for over 15 years in a variety of languages. He advocates open source software and enjoys tinkering with electronics and home automation.
Err codemadness.org 70 i 55877George Saylor (Advisor): George is a Technical Directory at G2, Inc. Mr. Saylor has over 28 years of information systems and security experience in a broad range of disciplines. His core focus areas are automation and standards in the event correlation space as well as penetration and exploitation of computer systems. Mr Saylor was also a co-founder of the OpenSCAP project.
Err codemadness.org 70 i 55880Virginia Suydan (Accountant and general administrator): Accountant and general administrator for the HardenedBSD Foundation. She has worked with Shawn Webb for tax and accounting purposes for over six years.
Err codemadness.org 70 i 55883Shawn Webb (Director): Co-founder of HardenedBSD and all-around infosec wonk. He has worked and played in the infosec industry, doing both offensive and defensive research, for around fifteen years. He loves open source technologies and likes to frustrate the bad guys.
Err codemadness.org 70 i 55886Ben Welch (Advisor): Ben is currently a Security Engineer at G2, Inc. He graduated from Pennsylvania College of Technology with a Bachelors in Information Assurance and Security. Ben likes long walks, beaches, candlelight dinners, and attending various conferences like BSides and ShmooCon.
Err codemadness.org 70 i 55889###Your own VPN with OpenIKED & OpenBSD
Err codemadness.org 70 i 55895 Err codemadness.org 70 i 55896Err codemadness.org 70 i 55897Err codemadness.org 70 i 55899 Err codemadness.org 70 i 55900Remote connectivity to your home network is something I think a lot of people find desirable. Over the years, I’ve just established an SSH tunnel and use it as a SOCKS proxy, sending my traffic through that. It’s a nice solution for a “poor man’s VPN”, but it can be a bit clunky, and it’s not great having to expose SSH to the world, even if you make sure to lock everything down
Err codemadness.org 70 i 55898
Err codemadness.org 70 i 55901Err codemadness.org 70 i 55903 Err codemadness.org 70 i 55904I set out the other day to finally do it properly. I’d come across this great post by Gordon Turner: OpenBSD 6.2 VPN Endpoint for iOS and macOS
Err codemadness.org 70 i 55902
Err codemadness.org 70 i 55905Err codemadness.org 70 i 55907 Err codemadness.org 70 i 55908Whilst it was exactly what I was looking for, it outlined how to set up an L2TP VPN. Really, I wanted IKEv2 for performance and security reasons (I won’t elaborate on this here, if you’re curious about the differences, there’s a lot of content out on the web explaining this).
Err codemadness.org 70 i 55906
Err codemadness.org 70 i 55909Err codemadness.org 70 i 55911 Err codemadness.org 70 i 55912The client systems I’d be using have native support for IKEv2 (iOS, macOS, other BSD systems). But, I couldn’t find any tutorials in the same vein.
Err codemadness.org 70 i 55910
Err codemadness.org 70 i 55913Err codemadness.org 70 i 55915 Err codemadness.org 70 i 55916So, let’s get stuck in!
Err codemadness.org 70 i 55914
Err codemadness.org 70 i 55921Err codemadness.org 70 i 55923 Err codemadness.org 70 i 55924This guide will walk through the set up of an IKEv2 VPN using OpenIKED on OpenBSD. It will detail a “road warrior” configuration, and use a PSK (pre-shared-key) for authentication. I’m sure it can be easily adapted to work on any other platforms that OpenIKED is available on, but keep in mind my steps are specifically for OpenBSD.
Err codemadness.org 70 i 55922
Err codemadness.org 70 i 55929Err codemadness.org 70 i 55931 Err codemadness.org 70 i 55932As with all my home infrastructure, I crafted this set-up declaratively. So, I had the deployment of the VM setup in Terraform (deployed on my private Triton cluster), and wrote the configuration in Ansible, then tied them together using radekg/terraform-provisioner-ansible.
Err codemadness.org 70 i 55930
Err codemadness.org 70 i 55933Err codemadness.org 70 i 55935 Err codemadness.org 70 i 55936One of the reasons I love Ansible is that its syntax is very simplistic, yet expressive. As such, I feel it fits very well into explaining these steps with snippets of the playbook I wrote. I’ll link the full playbook a bit further down for those interested.
Err codemadness.org 70 i 55934
DigitalOcean
Err codemadness.org 70 i 55951 Err codemadness.org 70 i 55952###FreeBSD on a System76 Galago Pro
Err codemadness.org 70 i 55953 Err codemadness.org 70 i 55954Err codemadness.org 70 i 55955Err codemadness.org 70 i 55957 Err codemadness.org 70 i 55958Hey all, It’s been a while since I last posted but I thought I would hammer something out here. My most recent purchase was a System76 Galago Pro. I thought, afer playing with POP! OS a bit, is there any reason I couldn’t get BSD on this thing. Turns out the answer is no, no there isnt and it works pretty decently.
Err codemadness.org 70 i 55956
Err codemadness.org 70 i 55959Err codemadness.org 70 i 55961 Err codemadness.org 70 i 55962To get some accounting stuff out of the way I tested this all on FreeBSD Head and 11.1, and all of it is valid as of May 10, 2018. Head is a fast moving target so some of this is only bound to improve.
Err codemadness.org 70 i 55960
The hardware
Err codemadness.org 70 i 55965Intel Core i5 Gen 8
Err codemadness.org 70 i 55968UHD Graphics 620
Err codemadness.org 70 i 5597116 GB DDR4 Ram
Err codemadness.org 70 i 55974RTL8411B PCI Express Card Reader
Err codemadness.org 70 i 55977RTL8111 Gigabit ethernet controller
Err codemadness.org 70 i 55980Intel HD Audio
Err codemadness.org 70 i 55983Samsung SSD 960 PRO 512GB NVMe
Err codemadness.org 70 i 55986The caveats
Err codemadness.org 70 i 55989Err codemadness.org 70 i 55993Err codemadness.org 70 i 55995 Err codemadness.org 70 i 55996There are a few things that I cant seem to make work straight out of the box, and that is the SD Card reader, the backlight, and the audio is a bit finicky. Also the trackpad doesn’t respond to two finger scrolling. The wiki is mostly up to date, there are a few edits that need to be made still but there is a bug where I cant register an account yet so I haven’t made all the changes.
Err codemadness.org 70 i 55994
Err codemadness.org 70 i 56001Err codemadness.org 70 i 56003 Err codemadness.org 70 i 56004It works like any other Intel processor. Pstates and throttling work.
Err codemadness.org 70 i 56002
Err codemadness.org 70 i 56009Err codemadness.org 70 i 56011 Err codemadness.org 70 i 56012The boot menu sets itself to what looks like 1024x768, but works as you expect in a tiny window. The text console does the full 3200x1800 resolution, but the text is ultra tiny. There isnt a font for the console that covers hidpi screens yet. As for X Windows it requres the drm-kmod-next package. Once installed follow the directions from the package and it works with almost no fuss. I have it running on X with full intel acceleration, but it is running at it’s full 3200x1800 resolution, to scale that down just do xrandr --output eDP-1 --scale 0.5x0.5 it will blow it up to roughly 200%. Due to limitations with X windows and hidpi it is harder to get more granular.
Err codemadness.org 70 i 56010
Err codemadness.org 70 i 56017Err codemadness.org 70 i 56019 Err codemadness.org 70 i 56020The wireless uses the iwm module, as of right now it does not seem to automagically load right now. Adding iwm_load=“YES” will cause the module to load on boot and kldload iwm
Err codemadness.org 70 i 56018
Err codemadness.org 70 i 56025Err codemadness.org 70 i 56027 Err codemadness.org 70 i 56028I seem to be getting about 5 hours out of the battery, but everything reports out of the box as expected. I could get more by throttling the CPU down speed wise.
Err codemadness.org 70 i 56026
Err codemadness.org 70 i 56033Err codemadness.org 70 i 56035 Err codemadness.org 70 i 56036It is a pretty decent experience. While not as polished as a Thinkpad there is a lot of potential with a bit of work and polishing. The laptop itself is not bad, the keyboard is responsive. The build quality is pretty solid. My only real complaint is the trackpad is stiff to click and sort of tiny. They seem to be a bit indifferent to non linux OSes running on the gear but that isnt anything new. I wont have any problems using it and is enough that when I work through this laptop, but I’m not sure at this stage if my next machine will be a System76 laptop, but they have impressed me enough to put them in the running when I go to look for my next portable machine but it hasn’t yet replaced the hole left in my heart by lenovo messing with the thinkpad.
Err codemadness.org 70 i 56034
###Hardware accelerated AES/HMAC-SHA on octeons
Err codemadness.org 70 i 56039 Err codemadness.org 70 i 56040In this commit, visa@ submitted code (disabled for now) to use built-in acceleration on octeon CPUs, much like AESNI for x86s. Err codemadness.org 70
i 56041 Err codemadness.org 70
i 56042 I decided to test tcpbench(1) and IPsec, before and after updating and enabling the octcrypto(4) driver. Err codemadness.org 70
i 56043 Err codemadness.org 70
i 56044 I didn't capture detailed perf stats from before the update, I had heard someone say that Edgerouter Lite boxes would only do some 6MBit/s over ipsec, so I set up a really simple ipsec.conf with ike esp from A to B leading to a policy of Err codemadness.org 70
i 56045 Err codemadness.org 70
i 56046 esp tunnel from A to B spi 0xdeadbeef auth hmac-sha2-256 enc aes Err codemadness.org 70
i 56047 going from one ERL to another (I collect octeons, so I have a bunch to test with) and let tcpbench run for a while on it. My numbers hovered around 7Mbit/s, which coincided with what I've heard, and also that most of the CPU gets used while doing it. Err codemadness.org 70
i 56048 Then I edited /sys/arch/octeon/conf/GENERIC, removed the # from octcrypto0 at mainbus0 and recompiled. Booted into the new kernel and got a octcrypto0 line in dmesg, and it was time to rock the ipsec tunnel again. The crypto algorithm and HMAC used by default on ipsec coincides nicely with the list of accelerated functions provided by the driver. Err codemadness.org 70
i 56049 Err codemadness.org 70
i 56050 Before we get to tunnel traffic numbers, just one quick look at what systat pigs says while the ipsec is running at full steam: Err codemadness.org 70
i 56051 Err codemadness.org 70
i 56052 PID USER NAME CPU 20\ 40\ 60\ 80\ 100\ Err codemadness.org 70
i 56053 58917 root crypto 52.25 ################# Err codemadness.org 70
i 56054 42636 root softnet 42.48 ############## Err codemadness.org 70
i 56055 (idle) 29.74 ######### Err codemadness.org 70
i 56056 1059 root tcpbench 24.22 ####### Err codemadness.org 70
i 56057 67777 root crynlk 19.58 ###### Err codemadness.org 70
i 56058 So this indicates that the load from doing ipsec and generating the traffic is somewhat nicely evened out over the two cores in the Edgerouter, and there's even some CPU left unused, which means I can actually ssh into it and have it usable. I have had it running for almost 2 days now, moving some 2.1TB over the tunnel. Err codemadness.org 70
i 56059 Now for the new and improved performance numbers: Err codemadness.org 70
i 56060 Err codemadness.org 70
i 56061 204452123 4740752 37.402 100.00% Err codemadness.org 70
i 56062 Conn: 1 Mbps: 37.402 Peak Mbps: 58.870 Avg Mbps: 37.402 Err codemadness.org 70
i 56063 204453149 4692968 36.628 100.00% Err codemadness.org 70
i 56064 Conn: 1 Mbps: 36.628 Peak Mbps: 58.870 Avg Mbps: 36.628 Err codemadness.org 70
i 56065 204454167 5405552 42.480 100.00% Err codemadness.org 70
i 56066 Conn: 1 Mbps: 42.480 Peak Mbps: 58.870 Avg Mbps: 42.480 Err codemadness.org 70
i 56067 204455188 5202496 40.804 100.00% Err codemadness.org 70
i 56068 Conn: 1 Mbps: 40.804 Peak Mbps: 58.870 Avg Mbps: 40.804 Err codemadness.org 70
i 56069 204456194 5062208 40.256 100.00% Err codemadness.org 70
i 56070 Conn: 1 Mbps: 40.256 Peak Mbps: 58.870 Avg Mbps: 40.256 Err codemadness.org 70
i 56071 Err codemadness.org 70
i 56072 The tcpbench numbers fluctuate up and down a bit, but the output is nice enough to actually keep tabs on the peak values. Peaking to 58.8MBit/s! Of course, as you can see, the average is lower but nice anyhow. Err codemadness.org 70
i 56073 Err codemadness.org 70
i 56074 A manyfold increase in performance, which is good enough in itself, but also moves the throughput from a speed that would make a poor but cheap gateway to something actually useful and decent for many home network speeds. Biggest problem after this gets enabled will be that my options to buy cheap used ERLs diminish. Err codemadness.org 70
i 56075 Err codemadness.org 70
i 56076 Err codemadness.org 70
i 56077 ##Beastie Bits
Err codemadness.org 70 i 56080 Err codemadness.org 70 i 56081Tarsnap
Err codemadness.org 70 i 56093 Err codemadness.org 70 i 56094##Feedback/Questions
Err codemadness.org 70 i 56095 Err codemadness.org 70 i 56096##Headlines
Err codemadness.org 70
i 56439 ###ZFS and DTrace update lands in NetBSD
Err codemadness.org 70 i 56442Err codemadness.org 70 i 56444 Err codemadness.org 70 i 56445merge a new version of the CDDL dtrace and ZFS code. This changes the upstream vendor from OpenSolaris to FreeBSD, and this version is based on FreeBSD svn r315983.
Err codemadness.org 70 i 56443
Err codemadness.org 70 i 56450Err codemadness.org 70 i 56456 Err codemadness.org 70 i 56457in addition to the 10 years of improvements from upstream, this version also has these NetBSD-specific enhancements:
Err codemadness.org 70 i 56451Err codemadness.org 70 i 56452
Err codemadness.org 70 i 56455- dtrace FBT probes can now be placed in kernel modules.
Err codemadness.org 70 i 56453- ZFS now supports mmap().
Err codemadness.org 70 i 56454
###NetBSD network stack security audit
Err codemadness.org 70 i 56464 Err codemadness.org 70 i 56465Err codemadness.org 70 i 56470Err codemadness.org 70 i 56472 Err codemadness.org 70 i 56473Over the last five months, hundreds of patches were committed to the source tree as a result of this work. Dozens of bugs were fixed, among which a good number of actual, remotely-triggerable vulnerabilities.
Err codemadness.org 70 i 56471
Err codemadness.org 70 i 56474Err codemadness.org 70 i 56477 Err codemadness.org 70 i 56478Changes were made to strengthen the networking subsystems and improve code quality: reinforce the mbuf API, add many KASSERTs to enforce assumptions, simplify packet handling, and verify compliance with RFCs. This was done in several layers of the NetBSD kernel, from device drivers to L4 handlers.
Err codemadness.org 70 i 56476
Err codemadness.org 70 i 56475 In the course of investigating several bugs discovered in NetBSD, I happened to look at the network stacks of other operating systems, to see whether they had already fixed the issues, and if so how. Needless to say, I found bugs there too.
Err codemadness.org 70 i 56483Err codemadness.org 70 i 56492 Err codemadness.org 70 i 56493The IPv6 Buffer Overflow: The overflow allowed an attacker to write one byte of packet-controlled data into ‘packet_storage+off’, where ‘off’ could be approximately controlled too. This allowed at least a pretty bad remote DoS/Crash
Err codemadness.org 70 i 56491
Err codemadness.org 70 i 56484 The IPsec Infinite Loop: When receiving an IPv6-AH packet, the IPsec entry point was not correctly computing the length of the IPv6 suboptions, and this, before authentication. As a result, a specially-crafted IPv6 packet could trigger an infinite loop in the kernel (making it unresponsive). In addition this flaw allowed a limited buffer overflow - where the data being written was however not controllable by the attacker.
Err codemadness.org 70 i 56485 The IPPROTO Typo: While looking at the IPv6 Multicast code, I stumbled across a pretty simple yet pretty bad mistake: at one point the Pim6 entry point would return IPPROTO_NONE instead of IPPROTO_DONE. Returning IPPROTO_NONE was entirely wrong: it caused the kernel to keep iterating on the IPv6 packet chain, while the packet storage was already freed.
Err codemadness.org 70 i 56486 The PF Signedness Bug: A bug was found in NetBSD’s implementation of the PF firewall, that did not affect the other BSDs. In the initial PF code a particular macro was used as an alias to a number. This macro formed a signed integer. NetBSD replaced the macro with a sizeof(), which returns an unsigned result.
Err codemadness.org 70 i 56487 The NPF Integer Overflow: An integer overflow could be triggered in NPF, when parsing an IPv6 packet with large options. This could cause NPF to look for the L4 payload at the wrong offset within the packet, and it allowed an attacker to bypass any L4 filtering rule on IPv6.
Err codemadness.org 70 i 56488 The IPsec Fragment Attack: I noticed some time ago that when reassembling fragments (in either IPv4 or IPv6), the kernel was not removing the M_PKTHDR flag on the secondary mbufs in mbuf chains. This flag is supposed to indicate that a given mbuf is the head of the chain it forms; having the flag on secondary mbufs was suspicious.
Err codemadness.org 70 i 56489 What Now: Not all protocols and layers of the network stack were verified, because of time constraints, and also because of unexpected events: the recent x86 CPU bugs, which I was the only one able to fix promptly. A todo list will be left when the project end date is reached, for someone else to pick up. Me perhaps, later this year? We’ll see.
Err codemadness.org 70 i 56490 This security audit of NetBSD’s network stack is sponsored by The NetBSD Foundation, and serves all users of BSD-derived operating systems. The NetBSD Foundation is a non-profit organization, and welcomes any donations that help continue funding projects of this kind.
DigitalOcean
Err codemadness.org 70 i 56496 Err codemadness.org 70 i 56497 Err codemadness.org 70 i 56498 Err codemadness.org 70 i 56499Err codemadness.org 70 i 56500Err codemadness.org 70 i 56503 Err codemadness.org 70 i 56504I used sysbench to create a table of 10M rows and then, using export/import tablespace, I copied it 329 times. I ended up with 330 tables for a total size of about 850GB. The dataset generated by sysbench is not very compressible, so I used lz4 compression in ZFS. For the other ZFS settings, I used what can be found in my earlier ZFS posts but with the ARC size limited to 1GB. I then used that plain configuration for the first benchmarks. Here are the results with the sysbench point-select benchmark, a uniform distribution and eight threads. The InnoDB buffer pool was set to 2.5GB.
Err codemadness.org 70 i 56502
Err codemadness.org 70 i 56501 In both cases, the load is IO bound. The disk is doing exactly the allowed 3000 IOPS. The above graph appears to be a clear demonstration that XFS is much faster than ZFS, right? But is that really the case? The way the dataset has been created is extremely favorable to XFS since there is absolutely no file fragmentation. Once you have all the files opened, a read IOP is just a single fseek call to an offset and ZFS doesn’t need to access any intermediate inode. The above result is about as fair as saying MyISAM is faster than InnoDB based only on table scan performance results of unfragmented tables and default configuration. ZFS is much less affected by the file level fragmentation, especially for point access type.
Err codemadness.org 70 i 56505Err codemadness.org 70 i 56507 Err codemadness.org 70 i 56508ZFS stores the files in B-trees in a very similar fashion as InnoDB stores data. To access a piece of data in a B-tree, you need to access the top level page (often called root node) and then one block per level down to a leaf-node containing the data. With no cache, to read something from a three levels B-tree thus requires 3 IOPS.
Err codemadness.org 70 i 56506
Err codemadness.org 70 i 56509Err codemadness.org 70 i 56511 Err codemadness.org 70 i 56512The extra IOPS performed by ZFS are needed to access those internal blocks in the B-trees of the files. These internal blocks are labeled as metadata. Essentially, in the above benchmark, the ARC is too small to contain all the internal blocks of the table files’ B-trees. If we continue the comparison with InnoDB, it would be like running with a buffer pool too small to contain the non-leaf pages. The test dataset I used has about 600MB of non-leaf pages, about 0.1% of the total size, which was well cached by the 3GB buffer pool. So only one InnoDB page, a leaf page, needed to be read per point-select statement.
Err codemadness.org 70 i 56510
Err codemadness.org 70 i 56513Err codemadness.org 70 i 56515 Err codemadness.org 70 i 56516To correctly set the ARC size to cache the metadata, you have two choices. First, you can guess values for the ARC size and experiment. Second, you can try to evaluate it by looking at the ZFS internal data. Let’s review these two approaches.
Err codemadness.org 70 i 56514
Err codemadness.org 70 i 56517Err codemadness.org 70 i 56519 Err codemadness.org 70 i 56520You’ll read/hear often the ratio 1GB of ARC for 1TB of data, which is about the same 0.1% ratio as for InnoDB. I wrote about that ratio a few times, having nothing better to propose. Actually, I found it depends a lot on the recordsize used. The 0.1% ratio implies a ZFS recordsize of 128KB. A ZFS filesystem with a recordsize of 128KB will use much less metadata than another one using a recordsize of 16KB because it has 8x fewer leaf pages. Fewer leaf pages require less B-tree internal nodes, hence less metadata. A filesystem with a recordsize of 128KB is excellent for sequential access as it maximizes compression and reduces the IOPS but it is poor for small random access operations like the ones MySQL/InnoDB does.
Err codemadness.org 70 i 56518
Err codemadness.org 70 i 56528Err codemadness.org 70 i 56530 Err codemadness.org 70 i 56531I was reluctant to grow the ARC to 7GB, which was nearly half the overall system memory. At best, the ZFS performance would only match XFS. A larger InnoDB page size would increase the CPU load for decompression on an instance with only two vCPUs; not great either. The last option, the L2ARC, was the most promising.
Err codemadness.org 70 i 56529
Err codemadness.org 70 i 56532Err codemadness.org 70 i 56534 Err codemadness.org 70 i 56535ZFS is much more complex than XFS and EXT4 but, that also means it has more tunables/options. I used a simplistic setup and an unfair benchmark which initially led to poor ZFS results. With the same benchmark, very favorable to XFS, I added a ZFS L2ARC and that completely reversed the situation, more than tripling the ZFS results, now 66% above XFS.
Err codemadness.org 70 i 56533
Err codemadness.org 70 i 56540Err codemadness.org 70 i 56542 Err codemadness.org 70 i 56543We have seen in this post why the general perception is that ZFS under-performs compared to XFS or EXT4. The presence of B-trees for the files has a big impact on the amount of metadata ZFS needs to handle, especially when the recordsize is small. The metadata consists mostly of the non-leaf pages (or internal nodes) of the B-trees. When properly cached, the performance of ZFS is excellent. ZFS allows you to optimize the use of EBS volumes, both in term of IOPS and size when the instance has fast ephemeral storage devices. Using the ephemeral device of an i3.large instance for the ZFS L2ARC, ZFS outperformed XFS by 66%.
Err codemadness.org 70 i 56541
TL;DR: Err codemadness.org 70
i 56548 OpenBSD #p2k18 hackathon took place at Epitech in Nantes. Err codemadness.org 70
i 56549 I was organizing the hackathon but managed to make progress on OpenSMTPD. Err codemadness.org 70
i 56550 As mentioned at EuroBSDCon the one-line per rule config format was a design error. Err codemadness.org 70
i 56551 A new configuration grammar is almost ready and the underlying structures are simplified. Err codemadness.org 70
i 56552 Refactor removes ~750 lines of code and solves _many_ issues that were side-effects of the design error. Err codemadness.org 70
i 56553 New features are going to be unlocked thanks to this. Err codemadness.org 70
i 56554 Err codemadness.org 70
i 56555 Err codemadness.org 70
i 56556 Err codemadness.org 70 i 56561Err codemadness.org 70 i 56569 Err codemadness.org 70 i 56570OpenSMTPD started ten years ago out of dissatisfaction with other solutions, mainly because I considered them way too complex for me not to get things wrong from time to time.
Err codemadness.org 70 i 56568
Err codemadness.org 70 i 56562 The initial configuration format was very different, I was inspired by pyr@’s hoststated, which eventually became relayd, and designed my configuration format with blocks enclosed by brackets.
Err codemadness.org 70 i 56563 When I first showed OpenSMTPD to pyr@, he convinced me that PF-like one-line rules would be awesome, and it was awesome indeed.
Err codemadness.org 70 i 56564 It helped us maintain our goal of simple configuration files, it helped fight feature creeping, it helped us gain popularity and become a relevant MTA, it helped us get where we are now 10 years later.
Err codemadness.org 70 i 56565 That being said, I believe this was a design error. A design error that could not have been predicted until we hit the wall to understand WHY this was an error. One-line rules are semantically wrong, they are SMTP wrong, they are wrong.
Err codemadness.org 70 i 56566 One-line rules are making the entire daemon more complex, preventing some features from being implemented, making others more complex than they should be, they no longer serve our goals.
Err codemadness.org 70 i 56567 To get to the point: we should move to two-line rules :-)
Anatomy of a design error
Err codemadness.org 70
i 56571 OpenSMTPD started ten years ago out of dissatisfaction with other solutions, mainly because I considered them way too complex for me not to get things wrong from time to time.
The initial configuration format was very different, I was inspired by pyr@’s hoststated, which eventually became relayd, and designed my configuration format with blocks enclosed by brackets.
Err codemadness.org 70 i 56574 Err codemadness.org 70 i 56575When I first showed OpenSMTPD to pyr@, he convinced me that PF-like one-line rules would be awesome, and it was awesome indeed.
Err codemadness.org 70 i 56576 Err codemadness.org 70 i 56577It helped us maintain our goal of simple configuration files, it helped fight feature creeping, it helped us gain popularity and become a relevant MTA, it helped us get where we are now 10 years later.
Err codemadness.org 70 i 56578 Err codemadness.org 70 i 56579That being said, I believe this was a design error. A design error that could not have been predicted until we hit the wall to understand WHY this was an error. One-line rules are semantically wrong, they are SMTP wrong, they are wrong.
Err codemadness.org 70 i 56580 Err codemadness.org 70 i 56581One-line rules are making the entire daemon more complex, preventing some features from being implemented, making others more complex than they should be, they no longer serve our goals.
Err codemadness.org 70 i 56582 Err codemadness.org 70 i 56583To get to the point: we should move to two-line rules :-)
Err codemadness.org 70 i 56584 Err codemadness.org 70 i 56585Err codemadness.org 70 i 56590Err codemadness.org 70 i 56592 Err codemadness.org 70 i 56593OpenSMTPD decides to accept or reject messages based on one-line rules such as:
Err codemadness.org 70 i 56591
accept from any for domain poolp.org deliver to mbox
Err codemadness.org 70 i 56596Err codemadness.org 70 i 56598 Err codemadness.org 70 i 56599Which can essentially be split into three units:
Err codemadness.org 70 i 56597
Err codemadness.org 70 i 56606Err codemadness.org 70 i 56609 Err codemadness.org 70 i 56610To ensure that we meet the requirements of the transactions, the matching must be performed during the SMTP transaction before we take a decision for the recipient.
Err codemadness.org 70 i 56608
Err codemadness.org 70 i 56607 Given that the rule is atomic, that it doesn’t have an identifier and that the action is part of it, the two only ways to make sure we can remember the action to take later on at delivery time is to either:
Err codemadness.org 70 i 56617Err codemadness.org 70 i 56619 Err codemadness.org 70 i 56620The first solution, which we’ve been using for a decade, was to save the action within the envelope and kind of carve it in stone. This works fine… however it comes with the downsides that errors fixed in configuration files can’t be caught up by envelopes, that delivery action must be validated way ahead of time during the SMTP transaction which is much trickier, that the parsing of delivery methods takes place as the _smtpd user rather than the recipient user, and that envelope structures that are passed all over OpenSMTPD carry delivery-time informations, and more, and more, and more. The code becomes more complex in general, less safe in some particular places, and some areas are nightmarish to deal with because they have to deal with completely unrelated code that can’t be dealt with later in the code path.
Err codemadness.org 70 i 56618
Err codemadness.org 70 i 56621Err codemadness.org 70 i 56623 Err codemadness.org 70 i 56624The second solution can’t be done. An envelope may be the result of nested rules, for example an external client, hitting an alias, hitting a user with a .forward file resolving to a user. An envelope on disk may no longer match any rule or it may match a completely different rule If we could ensure that it matched the same rule, evaluating the ruleset may spawn new envelopes which would violate the transaction. Trying to imagine how we could work around this leads to more and more and more RFC violations, incoherent states, duplicate mails, etc…
Err codemadness.org 70 i 56622
Err codemadness.org 70 i 56625Err codemadness.org 70 i 56627 Err codemadness.org 70 i 56628There is simply no way to deal with this with atomic rules, the matching and the action must be two separate units that are evaluated at two different times, failure to do so will necessarily imply that you’re either using our first solution and all its downsides, or that you are currently in a world of pain trying to figure out why everything is burning around you. The minute the action is written to an on-disk envelope, you have failed.
Err codemadness.org 70 i 56626
Err codemadness.org 70 i 56629Err codemadness.org 70 i 56631 Err codemadness.org 70 i 56632A proper ruleset must define a set of matching patterns resolving to an action identifier that is carved in stone, AND a set of named action set that is resolved dynamically at delivery time.
Err codemadness.org 70 i 56630
Break
Err codemadness.org 70 i 56639 Err codemadness.org 70 i 56640##News Roundup
Err codemadness.org 70
i 56641 ###Backing up a legacy Windows machine to a FreeNAS with rsync
Err codemadness.org 70 i 56644Err codemadness.org 70 i 56646 Err codemadness.org 70 i 56647I have some old Windows servers (10 years and counting) and I have been using rsync to back them up to my FreeNAS box. It has been working great for me.
Err codemadness.org 70 i 56645
Err codemadness.org 70 i 56648Err codemadness.org 70 i 56650 Err codemadness.org 70 i 56651First of all, I do have my Windows servers backup in virtualized format. However, those are only one-time snapshops that I run once in a while. These are classic ASP IIS web servers that I can easily put up on a new VM. However, many of these legacy servers generate gigabytes of data a day in their repositories. Running VM conversion daily is not ideal.
Err codemadness.org 70 i 56649
Err codemadness.org 70 i 56652Err codemadness.org 70 i 56654 Err codemadness.org 70 i 56655My solution was to use some sort of rsync solution just for the data repos. I’ve tried some applications that didn’t work too well with Samba shares and these old servers have slow I/O. Copying files to external sata or usb drive was not ideal. We’ve moved on from Windows to Linux and do not have any Windows file servers of capacity to provide network backups. Hence, I decided to use Delta Copy with FreeNAS. So here is a little write up on how to set it up. I have 4 Windows 2000 servers backing up daily with this method.
Err codemadness.org 70 i 56653
Err codemadness.org 70 i 56656Err codemadness.org 70 i 56658 Err codemadness.org 70 i 56659First, download Delta Copy and install it. It is open-source and pretty much free. It is basically a wrapper for cygwin’s rsync. When you install it, it will ask you to install the Server services which allows you to run it as a Rsync server on Windows. You don’t need to do this. Instead, you will be just using the Delta Copy Client application. But before we do that, we will need to configure our Rsync service for our Windows Clients on FreeNAS.
Err codemadness.org 70 i 56657
Err codemadness.org 70 i 56673Err codemadness.org 70 i 56676 Err codemadness.org 70 i 56677There you have it. Windows rsync to FreeNAS using DeltaCopy.
Err codemadness.org 70 i 56675
Err codemadness.org 70 i 56674 The nice thing about FreeNAS is you don’t have to modify /etc/rsyncd.conf files. Everything can be done in the web admin.
iXsystems
Err codemadness.org 70 i 56680 Err codemadness.org 70 i 56681###How to write ATF tests for NetBSD
Err codemadness.org 70 i 56682 Err codemadness.org 70 i 56683Err codemadness.org 70 i 56684Err codemadness.org 70 i 56686 Err codemadness.org 70 i 56687I have recently started contributing to the amazing NetBSD foundation. I was thinking of trying out a new OS for a long time. Switching to the NetBSD OS has been a fun change.
Err codemadness.org 70 i 56685
Err codemadness.org 70 i 56688Err codemadness.org 70 i 56690 Err codemadness.org 70 i 56691My first contribution to the NetBSD foundation was adding regression tests for the Address Sanitizer (ASan) in the Automated Testing Framework(ATF) which NetBSD has. I managed to complete it with the help of my really amazing mentor Kamil. This post is gonna be about the ATF framework that NetBSD has and how to you can add multiple tests with ease.
Err codemadness.org 70 i 56689
Err codemadness.org 70 i 56696Err codemadness.org 70 i 56698 Err codemadness.org 70 i 56699In ATF tests we will basically be talking about test programs which are a suite of test cases for a specific application or program.
Err codemadness.org 70 i 56697
Err codemadness.org 70 i 56704Err codemadness.org 70 i 56706 Err codemadness.org 70 i 56707There are a variety of commands that the atf suite offers. These include :
Err codemadness.org 70 i 56705
atf-check: The versatile command that is a vital part of the checking process. man page
Err codemadness.org 70 i 56710atf-run: Command used to run a test program. man page
Err codemadness.org 70 i 56713atf-fail: Report failure of a test case.
Err codemadness.org 70 i 56716atf-report: used to pretty print the atf-run. man page
Err codemadness.org 70 i 56719atf-set: To set atf test conditions.
Err codemadness.org 70 i 56722We will be taking a better look at the syntax and usage later.
Err codemadness.org 70 i 56725Let’s start with the Basics
Err codemadness.org 70 i 56728Err codemadness.org 70 i 56732Err codemadness.org 70 i 56734 Err codemadness.org 70 i 56735The ATF testing framework comes preinstalled with a default NetBSD installation. It is used to write tests for various applications and commands in NetBSD. One can write the Test programs in either the C language or in shell script. In this post I will be dealing with the Bash part.
Err codemadness.org 70 i 56733
###The Importance of ZFS Block Size
Err codemadness.org 70 i 56742 Err codemadness.org 70 i 56743Err codemadness.org 70 i 56748Err codemadness.org 70 i 56756 Err codemadness.org 70 i 56757One of the important tunables in ZFS is the recordsize (for normal datasets) and volblocksize (for zvols). These default to 128KB and 8KB respectively.
Err codemadness.org 70 i 56755
Err codemadness.org 70 i 56749 As I understand it, this is the unit of work in ZFS. If you modify one byte in a large file with the default 128KB record size, it causes the whole 128KB to be read in, one byte to be changed, and a new 128KB block to be written out.
Err codemadness.org 70 i 56750 As a result, the official recommendation is to use a block size which aligns with the underlying workload: so for example if you are using a database which reads and writes 16KB chunks then you should use a 16KB block size, and if you are running VMs containing an ext4 filesystem, which uses a 4KB block size, you should set a 4KB block size
Err codemadness.org 70 i 56751 You can see it has a 16GB total file size, of which 8.5G has been touched and consumes space - that is, it’s a “sparse” file. The used space is also visible by looking at the zfs filesystem which this file resides in
Err codemadness.org 70 i 56752 Then I tried to copy the image file whilst maintaining its “sparseness”, that is, only touching the blocks of the zvol which needed to be touched. The original used only 8.42G, but the copy uses 14.6GB - almost the entire 16GB has been touched! What’s gone wrong?
Err codemadness.org 70 i 56753 I finally realised that the difference between the zfs filesystem and the zvol is the block size. I recreated the zvol with a 128K block size
Err codemadness.org 70 i 56754 That’s better. The disk usage of the zvol is now exactly the same as for the sparse file in the filesystem dataset
###Using a Raspberry Pi 2 as a Router on a Stick Starring NetBSD
Err codemadness.org 70 i 56768 Err codemadness.org 70 i 56769Err codemadness.org 70 i 56774Err codemadness.org 70 i 56776 Err codemadness.org 70 i 56777A few weeks ago I set about upgrading my feeble networking skills by playing around with a Cisco 2970 switch. I set up a couple of VLANs and found the urge to set up a router to route between them. The 2970 isn’t a modern layer 3 switch so what am I to do?
Err codemadness.org 70 i 56775
Err codemadness.org 70 i 56778Err codemadness.org 70 i 56780 Err codemadness.org 70 i 56781Why not make use of the Raspberry Pi 2 that I’ve never used and put it to some good use as a ‘router on a stick’.
Err codemadness.org 70 i 56779
Err codemadness.org 70 i 56782Err codemadness.org 70 i 56784 Err codemadness.org 70 i 56785I could install a Linux based OS as I am quite familiar with it but where’s the fun in that? In my home lab I use SmartOS which by the way is a shit hot hypervisor but as far as I know there aren’t any Illumos distributions for the Raspberry Pi. On the desktop I use Solus OS which is by far the slickest Linux based OS that I’ve had the pleasure to use but Solus’ focus is purely desktop. It’s looking like BSD then!
Err codemadness.org 70 i 56783
Err codemadness.org 70 i 56786Err codemadness.org 70 i 56788 Err codemadness.org 70 i 56789I believe FreeBSD is renowned for it’s top notch networking stack and so I wrote to the BSDNow show on Jupiter Broadcasting for some help but it seems that the FreeBSD chaps from the show are off on a jolly to some BSD conference or another(love the show by the way).
Err codemadness.org 70 i 56787
Err codemadness.org 70 i 56790Err codemadness.org 70 i 56792 Err codemadness.org 70 i 56793It looks like me and the luvverly NetBSD are on a date this Saturday. I’ve always had a secret love for NetBSD. She’s a beautiful, charming and promiscuous lover(looking at the supported architectures) and I just can’t stop going back to her despite her misgivings(ahem, zfs). Just my type of grrrl!
Err codemadness.org 70 i 56791
Err codemadness.org 70 i 56794Err codemadness.org 70 i 56796 Err codemadness.org 70 i 56797Let’s crack on…
Err codemadness.org 70 i 56795
##Beastie Bits
Err codemadness.org 70 i 56804 Err codemadness.org 70 i 56805Tarsnap
Err codemadness.org 70 i 56818 Err codemadness.org 70 i 56819##Feedback/Questions
Err codemadness.org 70 i 56820 Err codemadness.org 70 i 56821##Headlines
Err codemadness.org 70
i 56841 ###ZFS and DTrace update lands in NetBSD
Err codemadness.org 70 i 56844Err codemadness.org 70 i 56846 Err codemadness.org 70 i 56847merge a new version of the CDDL dtrace and ZFS code. This changes the upstream vendor from OpenSolaris to FreeBSD, and this version is based on FreeBSD svn r315983.
Err codemadness.org 70 i 56845
Err codemadness.org 70 i 56852Err codemadness.org 70 i 56858 Err codemadness.org 70 i 56859in addition to the 10 years of improvements from upstream, this version also has these NetBSD-specific enhancements:
Err codemadness.org 70 i 56853Err codemadness.org 70 i 56854
Err codemadness.org 70 i 56857- dtrace FBT probes can now be placed in kernel modules.
Err codemadness.org 70 i 56855- ZFS now supports mmap().
Err codemadness.org 70 i 56856
###NetBSD network stack security audit
Err codemadness.org 70 i 56866 Err codemadness.org 70 i 56867Err codemadness.org 70 i 56872Err codemadness.org 70 i 56874 Err codemadness.org 70 i 56875Over the last five months, hundreds of patches were committed to the source tree as a result of this work. Dozens of bugs were fixed, among which a good number of actual, remotely-triggerable vulnerabilities.
Err codemadness.org 70 i 56873
Err codemadness.org 70 i 56876Err codemadness.org 70 i 56879 Err codemadness.org 70 i 56880Changes were made to strengthen the networking subsystems and improve code quality: reinforce the mbuf API, add many KASSERTs to enforce assumptions, simplify packet handling, and verify compliance with RFCs. This was done in several layers of the NetBSD kernel, from device drivers to L4 handlers.
Err codemadness.org 70 i 56878
Err codemadness.org 70 i 56877 In the course of investigating several bugs discovered in NetBSD, I happened to look at the network stacks of other operating systems, to see whether they had already fixed the issues, and if so how. Needless to say, I found bugs there too.
Err codemadness.org 70 i 56885Err codemadness.org 70 i 56894 Err codemadness.org 70 i 56895The IPv6 Buffer Overflow: The overflow allowed an attacker to write one byte of packet-controlled data into ‘packet_storage+off’, where ‘off’ could be approximately controlled too. This allowed at least a pretty bad remote DoS/Crash
Err codemadness.org 70 i 56893
Err codemadness.org 70 i 56886 The IPsec Infinite Loop: When receiving an IPv6-AH packet, the IPsec entry point was not correctly computing the length of the IPv6 suboptions, and this, before authentication. As a result, a specially-crafted IPv6 packet could trigger an infinite loop in the kernel (making it unresponsive). In addition this flaw allowed a limited buffer overflow - where the data being written was however not controllable by the attacker.
Err codemadness.org 70 i 56887 The IPPROTO Typo: While looking at the IPv6 Multicast code, I stumbled across a pretty simple yet pretty bad mistake: at one point the Pim6 entry point would return IPPROTO_NONE instead of IPPROTO_DONE. Returning IPPROTO_NONE was entirely wrong: it caused the kernel to keep iterating on the IPv6 packet chain, while the packet storage was already freed.
Err codemadness.org 70 i 56888 The PF Signedness Bug: A bug was found in NetBSD’s implementation of the PF firewall, that did not affect the other BSDs. In the initial PF code a particular macro was used as an alias to a number. This macro formed a signed integer. NetBSD replaced the macro with a sizeof(), which returns an unsigned result.
Err codemadness.org 70 i 56889 The NPF Integer Overflow: An integer overflow could be triggered in NPF, when parsing an IPv6 packet with large options. This could cause NPF to look for the L4 payload at the wrong offset within the packet, and it allowed an attacker to bypass any L4 filtering rule on IPv6.
Err codemadness.org 70 i 56890 The IPsec Fragment Attack: I noticed some time ago that when reassembling fragments (in either IPv4 or IPv6), the kernel was not removing the M_PKTHDR flag on the secondary mbufs in mbuf chains. This flag is supposed to indicate that a given mbuf is the head of the chain it forms; having the flag on secondary mbufs was suspicious.
Err codemadness.org 70 i 56891 What Now: Not all protocols and layers of the network stack were verified, because of time constraints, and also because of unexpected events: the recent x86 CPU bugs, which I was the only one able to fix promptly. A todo list will be left when the project end date is reached, for someone else to pick up. Me perhaps, later this year? We’ll see.
Err codemadness.org 70 i 56892 This security audit of NetBSD’s network stack is sponsored by The NetBSD Foundation, and serves all users of BSD-derived operating systems. The NetBSD Foundation is a non-profit organization, and welcomes any donations that help continue funding projects of this kind.
DigitalOcean
Err codemadness.org 70 i 56898 Err codemadness.org 70 i 56899 Err codemadness.org 70 i 56900 Err codemadness.org 70 i 56901Err codemadness.org 70 i 56902Err codemadness.org 70 i 56905 Err codemadness.org 70 i 56906I used sysbench to create a table of 10M rows and then, using export/import tablespace, I copied it 329 times. I ended up with 330 tables for a total size of about 850GB. The dataset generated by sysbench is not very compressible, so I used lz4 compression in ZFS. For the other ZFS settings, I used what can be found in my earlier ZFS posts but with the ARC size limited to 1GB. I then used that plain configuration for the first benchmarks. Here are the results with the sysbench point-select benchmark, a uniform distribution and eight threads. The InnoDB buffer pool was set to 2.5GB.
Err codemadness.org 70 i 56904
Err codemadness.org 70 i 56903 In both cases, the load is IO bound. The disk is doing exactly the allowed 3000 IOPS. The above graph appears to be a clear demonstration that XFS is much faster than ZFS, right? But is that really the case? The way the dataset has been created is extremely favorable to XFS since there is absolutely no file fragmentation. Once you have all the files opened, a read IOP is just a single fseek call to an offset and ZFS doesn’t need to access any intermediate inode. The above result is about as fair as saying MyISAM is faster than InnoDB based only on table scan performance results of unfragmented tables and default configuration. ZFS is much less affected by the file level fragmentation, especially for point access type.
Err codemadness.org 70 i 56907Err codemadness.org 70 i 56909 Err codemadness.org 70 i 56910ZFS stores the files in B-trees in a very similar fashion as InnoDB stores data. To access a piece of data in a B-tree, you need to access the top level page (often called root node) and then one block per level down to a leaf-node containing the data. With no cache, to read something from a three levels B-tree thus requires 3 IOPS.
Err codemadness.org 70 i 56908
Err codemadness.org 70 i 56911Err codemadness.org 70 i 56913 Err codemadness.org 70 i 56914The extra IOPS performed by ZFS are needed to access those internal blocks in the B-trees of the files. These internal blocks are labeled as metadata. Essentially, in the above benchmark, the ARC is too small to contain all the internal blocks of the table files’ B-trees. If we continue the comparison with InnoDB, it would be like running with a buffer pool too small to contain the non-leaf pages. The test dataset I used has about 600MB of non-leaf pages, about 0.1% of the total size, which was well cached by the 3GB buffer pool. So only one InnoDB page, a leaf page, needed to be read per point-select statement.
Err codemadness.org 70 i 56912
Err codemadness.org 70 i 56915Err codemadness.org 70 i 56917 Err codemadness.org 70 i 56918To correctly set the ARC size to cache the metadata, you have two choices. First, you can guess values for the ARC size and experiment. Second, you can try to evaluate it by looking at the ZFS internal data. Let’s review these two approaches.
Err codemadness.org 70 i 56916
Err codemadness.org 70 i 56919Err codemadness.org 70 i 56921 Err codemadness.org 70 i 56922You’ll read/hear often the ratio 1GB of ARC for 1TB of data, which is about the same 0.1% ratio as for InnoDB. I wrote about that ratio a few times, having nothing better to propose. Actually, I found it depends a lot on the recordsize used. The 0.1% ratio implies a ZFS recordsize of 128KB. A ZFS filesystem with a recordsize of 128KB will use much less metadata than another one using a recordsize of 16KB because it has 8x fewer leaf pages. Fewer leaf pages require less B-tree internal nodes, hence less metadata. A filesystem with a recordsize of 128KB is excellent for sequential access as it maximizes compression and reduces the IOPS but it is poor for small random access operations like the ones MySQL/InnoDB does.
Err codemadness.org 70 i 56920
Err codemadness.org 70 i 56930Err codemadness.org 70 i 56932 Err codemadness.org 70 i 56933I was reluctant to grow the ARC to 7GB, which was nearly half the overall system memory. At best, the ZFS performance would only match XFS. A larger InnoDB page size would increase the CPU load for decompression on an instance with only two vCPUs; not great either. The last option, the L2ARC, was the most promising.
Err codemadness.org 70 i 56931
Err codemadness.org 70 i 56934Err codemadness.org 70 i 56936 Err codemadness.org 70 i 56937ZFS is much more complex than XFS and EXT4 but, that also means it has more tunables/options. I used a simplistic setup and an unfair benchmark which initially led to poor ZFS results. With the same benchmark, very favorable to XFS, I added a ZFS L2ARC and that completely reversed the situation, more than tripling the ZFS results, now 66% above XFS.
Err codemadness.org 70 i 56935
Err codemadness.org 70 i 56942Err codemadness.org 70 i 56944 Err codemadness.org 70 i 56945We have seen in this post why the general perception is that ZFS under-performs compared to XFS or EXT4. The presence of B-trees for the files has a big impact on the amount of metadata ZFS needs to handle, especially when the recordsize is small. The metadata consists mostly of the non-leaf pages (or internal nodes) of the B-trees. When properly cached, the performance of ZFS is excellent. ZFS allows you to optimize the use of EBS volumes, both in term of IOPS and size when the instance has fast ephemeral storage devices. Using the ephemeral device of an i3.large instance for the ZFS L2ARC, ZFS outperformed XFS by 66%.
Err codemadness.org 70 i 56943
TL;DR: Err codemadness.org 70
i 56950 OpenBSD #p2k18 hackathon took place at Epitech in Nantes. Err codemadness.org 70
i 56951 I was organizing the hackathon but managed to make progress on OpenSMTPD. Err codemadness.org 70
i 56952 As mentioned at EuroBSDCon the one-line per rule config format was a design error. Err codemadness.org 70
i 56953 A new configuration grammar is almost ready and the underlying structures are simplified. Err codemadness.org 70
i 56954 Refactor removes ~750 lines of code and solves _many_ issues that were side-effects of the design error. Err codemadness.org 70
i 56955 New features are going to be unlocked thanks to this. Err codemadness.org 70
i 56956 Err codemadness.org 70
i 56957 Err codemadness.org 70
i 56958 Err codemadness.org 70 i 56963Err codemadness.org 70 i 56971 Err codemadness.org 70 i 56972OpenSMTPD started ten years ago out of dissatisfaction with other solutions, mainly because I considered them way too complex for me not to get things wrong from time to time.
Err codemadness.org 70 i 56970
Err codemadness.org 70 i 56964 The initial configuration format was very different, I was inspired by pyr@’s hoststated, which eventually became relayd, and designed my configuration format with blocks enclosed by brackets.
Err codemadness.org 70 i 56965 When I first showed OpenSMTPD to pyr@, he convinced me that PF-like one-line rules would be awesome, and it was awesome indeed.
Err codemadness.org 70 i 56966 It helped us maintain our goal of simple configuration files, it helped fight feature creeping, it helped us gain popularity and become a relevant MTA, it helped us get where we are now 10 years later.
Err codemadness.org 70 i 56967 That being said, I believe this was a design error. A design error that could not have been predicted until we hit the wall to understand WHY this was an error. One-line rules are semantically wrong, they are SMTP wrong, they are wrong.
Err codemadness.org 70 i 56968 One-line rules are making the entire daemon more complex, preventing some features from being implemented, making others more complex than they should be, they no longer serve our goals.
Err codemadness.org 70 i 56969 To get to the point: we should move to two-line rules :-)
Anatomy of a design error
Err codemadness.org 70
i 56973 OpenSMTPD started ten years ago out of dissatisfaction with other solutions, mainly because I considered them way too complex for me not to get things wrong from time to time.
The initial configuration format was very different, I was inspired by pyr@’s hoststated, which eventually became relayd, and designed my configuration format with blocks enclosed by brackets.
Err codemadness.org 70 i 56976 Err codemadness.org 70 i 56977When I first showed OpenSMTPD to pyr@, he convinced me that PF-like one-line rules would be awesome, and it was awesome indeed.
Err codemadness.org 70 i 56978 Err codemadness.org 70 i 56979It helped us maintain our goal of simple configuration files, it helped fight feature creeping, it helped us gain popularity and become a relevant MTA, it helped us get where we are now 10 years later.
Err codemadness.org 70 i 56980 Err codemadness.org 70 i 56981That being said, I believe this was a design error. A design error that could not have been predicted until we hit the wall to understand WHY this was an error. One-line rules are semantically wrong, they are SMTP wrong, they are wrong.
Err codemadness.org 70 i 56982 Err codemadness.org 70 i 56983One-line rules are making the entire daemon more complex, preventing some features from being implemented, making others more complex than they should be, they no longer serve our goals.
Err codemadness.org 70 i 56984 Err codemadness.org 70 i 56985To get to the point: we should move to two-line rules :-)
Err codemadness.org 70 i 56986 Err codemadness.org 70 i 56987Err codemadness.org 70 i 56992Err codemadness.org 70 i 56994 Err codemadness.org 70 i 56995OpenSMTPD decides to accept or reject messages based on one-line rules such as:
Err codemadness.org 70 i 56993
accept from any for domain poolp.org deliver to mbox
Err codemadness.org 70 i 56998Err codemadness.org 70 i 57000 Err codemadness.org 70 i 57001Which can essentially be split into three units:
Err codemadness.org 70 i 56999
Err codemadness.org 70 i 57008Err codemadness.org 70 i 57011 Err codemadness.org 70 i 57012To ensure that we meet the requirements of the transactions, the matching must be performed during the SMTP transaction before we take a decision for the recipient.
Err codemadness.org 70 i 57010
Err codemadness.org 70 i 57009 Given that the rule is atomic, that it doesn’t have an identifier and that the action is part of it, the two only ways to make sure we can remember the action to take later on at delivery time is to either:
Err codemadness.org 70 i 57019Err codemadness.org 70 i 57021 Err codemadness.org 70 i 57022The first solution, which we’ve been using for a decade, was to save the action within the envelope and kind of carve it in stone. This works fine… however it comes with the downsides that errors fixed in configuration files can’t be caught up by envelopes, that delivery action must be validated way ahead of time during the SMTP transaction which is much trickier, that the parsing of delivery methods takes place as the _smtpd user rather than the recipient user, and that envelope structures that are passed all over OpenSMTPD carry delivery-time informations, and more, and more, and more. The code becomes more complex in general, less safe in some particular places, and some areas are nightmarish to deal with because they have to deal with completely unrelated code that can’t be dealt with later in the code path.
Err codemadness.org 70 i 57020
Err codemadness.org 70 i 57023Err codemadness.org 70 i 57025 Err codemadness.org 70 i 57026The second solution can’t be done. An envelope may be the result of nested rules, for example an external client, hitting an alias, hitting a user with a .forward file resolving to a user. An envelope on disk may no longer match any rule or it may match a completely different rule If we could ensure that it matched the same rule, evaluating the ruleset may spawn new envelopes which would violate the transaction. Trying to imagine how we could work around this leads to more and more and more RFC violations, incoherent states, duplicate mails, etc…
Err codemadness.org 70 i 57024
Err codemadness.org 70 i 57027Err codemadness.org 70 i 57029 Err codemadness.org 70 i 57030There is simply no way to deal with this with atomic rules, the matching and the action must be two separate units that are evaluated at two different times, failure to do so will necessarily imply that you’re either using our first solution and all its downsides, or that you are currently in a world of pain trying to figure out why everything is burning around you. The minute the action is written to an on-disk envelope, you have failed.
Err codemadness.org 70 i 57028
Err codemadness.org 70 i 57031Err codemadness.org 70 i 57033 Err codemadness.org 70 i 57034A proper ruleset must define a set of matching patterns resolving to an action identifier that is carved in stone, AND a set of named action set that is resolved dynamically at delivery time.
Err codemadness.org 70 i 57032
Break
Err codemadness.org 70 i 57041 Err codemadness.org 70 i 57042##News Roundup
Err codemadness.org 70
i 57043 ###Backing up a legacy Windows machine to a FreeNAS with rsync
Err codemadness.org 70 i 57046Err codemadness.org 70 i 57048 Err codemadness.org 70 i 57049I have some old Windows servers (10 years and counting) and I have been using rsync to back them up to my FreeNAS box. It has been working great for me.
Err codemadness.org 70 i 57047
Err codemadness.org 70 i 57050Err codemadness.org 70 i 57052 Err codemadness.org 70 i 57053First of all, I do have my Windows servers backup in virtualized format. However, those are only one-time snapshops that I run once in a while. These are classic ASP IIS web servers that I can easily put up on a new VM. However, many of these legacy servers generate gigabytes of data a day in their repositories. Running VM conversion daily is not ideal.
Err codemadness.org 70 i 57051
Err codemadness.org 70 i 57054Err codemadness.org 70 i 57056 Err codemadness.org 70 i 57057My solution was to use some sort of rsync solution just for the data repos. I’ve tried some applications that didn’t work too well with Samba shares and these old servers have slow I/O. Copying files to external sata or usb drive was not ideal. We’ve moved on from Windows to Linux and do not have any Windows file servers of capacity to provide network backups. Hence, I decided to use Delta Copy with FreeNAS. So here is a little write up on how to set it up. I have 4 Windows 2000 servers backing up daily with this method.
Err codemadness.org 70 i 57055
Err codemadness.org 70 i 57058Err codemadness.org 70 i 57060 Err codemadness.org 70 i 57061First, download Delta Copy and install it. It is open-source and pretty much free. It is basically a wrapper for cygwin’s rsync. When you install it, it will ask you to install the Server services which allows you to run it as a Rsync server on Windows. You don’t need to do this. Instead, you will be just using the Delta Copy Client application. But before we do that, we will need to configure our Rsync service for our Windows Clients on FreeNAS.
Err codemadness.org 70 i 57059
Err codemadness.org 70 i 57075Err codemadness.org 70 i 57078 Err codemadness.org 70 i 57079There you have it. Windows rsync to FreeNAS using DeltaCopy.
Err codemadness.org 70 i 57077
Err codemadness.org 70 i 57076 The nice thing about FreeNAS is you don’t have to modify /etc/rsyncd.conf files. Everything can be done in the web admin.
iXsystems
Err codemadness.org 70 i 57082 Err codemadness.org 70 i 57083###How to write ATF tests for NetBSD
Err codemadness.org 70 i 57084 Err codemadness.org 70 i 57085Err codemadness.org 70 i 57086Err codemadness.org 70 i 57088 Err codemadness.org 70 i 57089I have recently started contributing to the amazing NetBSD foundation. I was thinking of trying out a new OS for a long time. Switching to the NetBSD OS has been a fun change.
Err codemadness.org 70 i 57087
Err codemadness.org 70 i 57090Err codemadness.org 70 i 57092 Err codemadness.org 70 i 57093My first contribution to the NetBSD foundation was adding regression tests for the Address Sanitizer (ASan) in the Automated Testing Framework(ATF) which NetBSD has. I managed to complete it with the help of my really amazing mentor Kamil. This post is gonna be about the ATF framework that NetBSD has and how to you can add multiple tests with ease.
Err codemadness.org 70 i 57091
Err codemadness.org 70 i 57098Err codemadness.org 70 i 57100 Err codemadness.org 70 i 57101In ATF tests we will basically be talking about test programs which are a suite of test cases for a specific application or program.
Err codemadness.org 70 i 57099
Err codemadness.org 70 i 57106Err codemadness.org 70 i 57108 Err codemadness.org 70 i 57109There are a variety of commands that the atf suite offers. These include :
Err codemadness.org 70 i 57107
atf-check: The versatile command that is a vital part of the checking process. man page
Err codemadness.org 70 i 57112atf-run: Command used to run a test program. man page
Err codemadness.org 70 i 57115atf-fail: Report failure of a test case.
Err codemadness.org 70 i 57118atf-report: used to pretty print the atf-run. man page
Err codemadness.org 70 i 57121atf-set: To set atf test conditions.
Err codemadness.org 70 i 57124We will be taking a better look at the syntax and usage later.
Err codemadness.org 70 i 57127Let’s start with the Basics
Err codemadness.org 70 i 57130Err codemadness.org 70 i 57134Err codemadness.org 70 i 57136 Err codemadness.org 70 i 57137The ATF testing framework comes preinstalled with a default NetBSD installation. It is used to write tests for various applications and commands in NetBSD. One can write the Test programs in either the C language or in shell script. In this post I will be dealing with the Bash part.
Err codemadness.org 70 i 57135
###The Importance of ZFS Block Size
Err codemadness.org 70 i 57144 Err codemadness.org 70 i 57145Err codemadness.org 70 i 57150Err codemadness.org 70 i 57158 Err codemadness.org 70 i 57159One of the important tunables in ZFS is the recordsize (for normal datasets) and volblocksize (for zvols). These default to 128KB and 8KB respectively.
Err codemadness.org 70 i 57157
Err codemadness.org 70 i 57151 As I understand it, this is the unit of work in ZFS. If you modify one byte in a large file with the default 128KB record size, it causes the whole 128KB to be read in, one byte to be changed, and a new 128KB block to be written out.
Err codemadness.org 70 i 57152 As a result, the official recommendation is to use a block size which aligns with the underlying workload: so for example if you are using a database which reads and writes 16KB chunks then you should use a 16KB block size, and if you are running VMs containing an ext4 filesystem, which uses a 4KB block size, you should set a 4KB block size
Err codemadness.org 70 i 57153 You can see it has a 16GB total file size, of which 8.5G has been touched and consumes space - that is, it’s a “sparse” file. The used space is also visible by looking at the zfs filesystem which this file resides in
Err codemadness.org 70 i 57154 Then I tried to copy the image file whilst maintaining its “sparseness”, that is, only touching the blocks of the zvol which needed to be touched. The original used only 8.42G, but the copy uses 14.6GB - almost the entire 16GB has been touched! What’s gone wrong?
Err codemadness.org 70 i 57155 I finally realised that the difference between the zfs filesystem and the zvol is the block size. I recreated the zvol with a 128K block size
Err codemadness.org 70 i 57156 That’s better. The disk usage of the zvol is now exactly the same as for the sparse file in the filesystem dataset
###Using a Raspberry Pi 2 as a Router on a Stick Starring NetBSD
Err codemadness.org 70 i 57170 Err codemadness.org 70 i 57171Err codemadness.org 70 i 57176Err codemadness.org 70 i 57178 Err codemadness.org 70 i 57179A few weeks ago I set about upgrading my feeble networking skills by playing around with a Cisco 2970 switch. I set up a couple of VLANs and found the urge to set up a router to route between them. The 2970 isn’t a modern layer 3 switch so what am I to do?
Err codemadness.org 70 i 57177
Err codemadness.org 70 i 57180Err codemadness.org 70 i 57182 Err codemadness.org 70 i 57183Why not make use of the Raspberry Pi 2 that I’ve never used and put it to some good use as a ‘router on a stick’.
Err codemadness.org 70 i 57181
Err codemadness.org 70 i 57184Err codemadness.org 70 i 57186 Err codemadness.org 70 i 57187I could install a Linux based OS as I am quite familiar with it but where’s the fun in that? In my home lab I use SmartOS which by the way is a shit hot hypervisor but as far as I know there aren’t any Illumos distributions for the Raspberry Pi. On the desktop I use Solus OS which is by far the slickest Linux based OS that I’ve had the pleasure to use but Solus’ focus is purely desktop. It’s looking like BSD then!
Err codemadness.org 70 i 57185
Err codemadness.org 70 i 57188Err codemadness.org 70 i 57190 Err codemadness.org 70 i 57191I believe FreeBSD is renowned for it’s top notch networking stack and so I wrote to the BSDNow show on Jupiter Broadcasting for some help but it seems that the FreeBSD chaps from the show are off on a jolly to some BSD conference or another(love the show by the way).
Err codemadness.org 70 i 57189
Err codemadness.org 70 i 57192Err codemadness.org 70 i 57194 Err codemadness.org 70 i 57195It looks like me and the luvverly NetBSD are on a date this Saturday. I’ve always had a secret love for NetBSD. She’s a beautiful, charming and promiscuous lover(looking at the supported architectures) and I just can’t stop going back to her despite her misgivings(ahem, zfs). Just my type of grrrl!
Err codemadness.org 70 i 57193
Err codemadness.org 70 i 57196Err codemadness.org 70 i 57198 Err codemadness.org 70 i 57199Let’s crack on…
Err codemadness.org 70 i 57197
##Beastie Bits
Err codemadness.org 70 i 57206 Err codemadness.org 70 i 57207Tarsnap
Err codemadness.org 70 i 57220 Err codemadness.org 70 i 57221##Feedback/Questions
Err codemadness.org 70 i 57222 Err codemadness.org 70 i 57223Err codemadness.org 70 i 57633 Meltdown and Spectre mitigation support Err codemadness.org 70 i 57634 Meltdown isolation and spectre mitigation support added. Meltdown mitigation is automatically enabled for all Intel cpus. Spectre mitigation must be enabled manually via sysctl if desired, using sysctls machdep.spectremitigation and machdep.meltdownmitigation. Err codemadness.org 70 i 57635 HAMMER2 Err codemadness.org 70 i 57636 H2 has received a very large number of bug fixes and performance improvements. We can now recommend H2 as the default root filesystem in non-clustered mode. Err codemadness.org 70 i 57637 Clustered support is not yet available. Err codemadness.org 70 i 57638 ipfw Updates Err codemadness.org 70 i 57639 Implement state based "redirect", i.e. without using libalias. Err codemadness.org 70 i 57640 ipfw now supports all possible ICMP types. Err codemadness.org 70 i 57641 Fix ICMPMAXTYPE assumptions (now 40 as of this release). Err codemadness.org 70 i 57642 Improved graphics support Err codemadness.org 70 i 57643 The drm/i915 kernel driver has been updated to support Intel Coffeelake GPUs Err codemadness.org 70 i 57644 Add 24-bit pixel format support to the EFI frame buffer code. Err codemadness.org 70 i 57645 Significantly improve fbio support for the "scfb" XOrg driver. This allows EFI frame buffers to be used by X in situations where we do not otherwise support the GPU. Err codemadness.org 70 i 57646 Partly implement the FBIOBLANK ioctl for display powersaving. Err codemadness.org 70 i 57647 Syscons waits for drm modesetting at appropriate places, avoiding races.
Err codemadness.org 70 i 57657Err codemadness.org 70 i 57659 Err codemadness.org 70 i 57660Note: While this bug is primarily interesting for exploitation on the PS4, this bug can also potentially be exploited on other unpatched platforms using FreeBSD if the attacker has read/write permissions on /dev/bpf, or if they want to escalate from root user to kernel code execution. As such, I've published it under the "FreeBSD" folder and not the "PS4" folder.
Err codemadness.org 70 i 57658
Err codemadness.org 70 i 57665Err codemadness.org 70 i 57667 Err codemadness.org 70 i 57668Welcome to the kernel portion of the PS4 4.55FW full exploit chain write-up. This bug was found by qwerty, and is fairly unique in the way it's exploited, so I wanted to do a detailed write-up on how it worked. The full source of the exploit can be found here. I've previously covered the webkit exploit implementation for userland access here.
Err codemadness.org 70 i 57666
Err codemadness.org 70 i 57673Err codemadness.org 70 i 57675 Err codemadness.org 70 i 57676Interestingly, this bug is actually a FreeBSD bug and was not (at least directly) introduced by Sony code. While this is a FreeBSD bug however, it's not very useful for most systems because the /dev/bpf device driver is root-owned, and the permissions for it are set to 0600 (meaning owner has read/write privileges, and nobody else does) - though it can be used for escalating from root to kernel mode code execution. However, let’s take a look at the make_dev() call inside the PS4 kernel for /dev/bpf (taken from a 4.05 kernel dump).
Err codemadness.org 70 i 57674
Err codemadness.org 70
i 57677 seg000:FFFFFFFFA181F15B lea rdi, unk_FFFFFFFFA2D77640 Err codemadness.org 70
i 57678 seg000:FFFFFFFFA181F162 lea r9, aBpf ; "bpf" Err codemadness.org 70
i 57679 seg000:FFFFFFFFA181F169 mov esi, 0 Err codemadness.org 70
i 57680 seg000:FFFFFFFFA181F16E mov edx, 0 Err codemadness.org 70
i 57681 seg000:FFFFFFFFA181F173 xor ecx, ecx Err codemadness.org 70
i 57682 seg000:FFFFFFFFA181F175 mov r8d, 1B6h Err codemadness.org 70
i 57683 seg000:FFFFFFFFA181F17B xor eax, eax Err codemadness.org 70
i 57684 seg000:FFFFFFFFA181F17D mov cs:qword_FFFFFFFFA34EC770, 0 Err codemadness.org 70
i 57685 seg000:FFFFFFFFA181F188 call make_dev Err codemadness.org 70
i 57686
Err codemadness.org 70 i 57689Err codemadness.org 70 i 57691 Err codemadness.org 70 i 57692We see UID 0 (the UID for the root user) getting moved into the register for the 3rd argument, which is the owner argument. However, the permissions bits are being set to 0x1B6, which in octal is 0666. This means anyone can open /dev/bpf with read/write privileges. I’m not sure why this is the case, qwerty speculates that perhaps bpf is used for LAN gaming. In any case, this was a poor design decision because bpf is usually considered privileged, and should not be accessible to a process that is completely untrusted, such as WebKit. On most platforms, permissions for /dev/bpf will be set to 0x180, or 0600.
Err codemadness.org 70 i 57690
Err codemadness.org 70 i 57697Err codemadness.org 70 i 57703 Err codemadness.org 70 i 57704The class of the bug abused in this exploit is known as a "race condition". Before we get into bug specifics, it's important for the reader to understand what race conditions are and how they can be an issue (especially in something like a kernel). Often in complex software (such as a kernel), resources will be shared (or "global"). This means other threads could potentially execute code that will access some resource that could be accessed by another thread at the same point in time. What happens if one thread accesses this resource while another thread does without exclusive access? Race conditions are introduced.
Err codemadness.org 70 i 57698 Err codemadness.org 70 i 57699Race conditions are defined as possible scenarios where events happen in a sequence different than the developer intended which leads to undefined behavior. In simple, single-threaded programs, this is not an issue because execution is linear. In more complex programs where code can be running in parallel however, this becomes a real issue. To prevent these problems, atomic instructions and locking mechanisms were introduced. When one thread wants to access a critical resource, it will attempt to acquire a "lock". If another thread is already using this resource, generally the thread attempting to acquire the lock will wait until the other thread is finished with it. Each thread must release the lock to the resource after they're done with it, failure to do so could result in a deadlock.
Err codemadness.org 70 i 57700 Err codemadness.org 70 i 57701While locking mechanisms such as mutexes have been introduced, developers sometimes struggle to use them properly. For example, what if a piece of shared data gets validated and processed, but while the processing of the data is locked, the validation is not? There is a window between validation and locking where that data can change, and while the developer thinks the data has been validated, it could be substituted with something malicious after it is validated, but before it is used. Parallel programming can be difficult, especially when, as a developer, you also want to factor in the fact that you don't want to put too much code in between locking and unlocking as it can impact performance.
Err codemadness.org 70 i 57702
iXsystems
Err codemadness.org 70 i 57711 Err codemadness.org 70 i 57712Err codemadness.org 70 i 57724 $ qemu-img create -f raw disk.raw 5G Err codemadness.org 70 i 57725 $ qemu-system-x8664 -m 256M \ Err codemadness.org 70 i 57726 -drive format=raw,file=install63.fs \ Err codemadness.org 70 i 57727 -drive format=raw,file=disk.raw Err codemadness.org 70 i 57728 +> Custom Kernel Err codemadness.org 70 i 57729 +> To debug the kernel, we need a version of the kernel with debugging symbols and for that we have to recompile it first. The process is documented at Building the System from Source: Err codemadness.org 70 i 57730 ... Err codemadness.org 70 i 57731 +> Then we can copy the bsd kernel to the guest machine and keep the bsd.gdb on the host to start the remote debugging via gdb. Err codemadness.org 70 i 57732 +> Remote debugging kernel Err codemadness.org 70 i 57733 +> Now it's to time to boot the guest with the new custom kernel. Remember that the -s argument enables the gdb server on qemu on localhost port 1234 by default: Err codemadness.org 70 i 57734 $ qemu-system-x8664 -m 256M -s \ Err codemadness.org 70 i 57735 -net nic -net user \ Err codemadness.org 70 i 57736 -drive format=raw,file=install63.fs \ Err codemadness.org 70 i 57737 +> Now to finally attach to the running kernel:
Err codemadness.org 70 i 57767Err codemadness.org 70 i 57769 Err codemadness.org 70 i 57770In this article, I would like to present a tutorial to set up buildbot, a continuous integration (CI) software (like Jenkins, drone, etc.), making use of FreeBSD’s containerization mechanism "jails". We will cover terminology, rationale for using both buildbot and jails together, and installation steps. At the end, you will have a working buildbot instance using its sample build configuration, ready to play around with your own CI plans (or even CD, it’s very flexible!). Some hints for production-grade installations are given, but the tutorial steps are meant for a test environment (namely a virtual machine). Buildbot’s configuration and detailed concepts are not in scope here.
Err codemadness.org 70 i 57768
Table of contents
Err codemadness.org 70 i 57772 Err codemadness.org 70 i 57773Choosing host operating system and version for buildbot
Err codemadness.org 70 i 57790Err codemadness.org 70 i 57798 Err codemadness.org 70 i 57799We choose the released version of FreeBSD (11.1-RELEASE at the moment). There is no particular reason for it, and as a matter of fact buildbot as a Python-based server is very cross-platform; therefore the underlying OS platform and version should not make a large difference.
Err codemadness.org 70 i 57791 Err codemadness.org 70 i 57792It will make a difference for what you do with buildbot, however. For instance, poudriere is the de-facto standard for building packages from source on FreeBSD. Builds run in jails which may be any FreeBSD base system version older or equal to the host’s version (reason will be explained below). In other words, if the host is FreeBSD 11.1, build jails created by poudriere could e.g. use 9.1, 10.3, 11.0, 11.1, but potentially not version 12 or newer because of incompatibilities with the host’s kernel (jails do not run their own kernel as full virtual machines do). To not prolong this article over the intended scope, the details of which nice things could be done or automated with buildbot are not covered.
Err codemadness.org 70 i 57793 Err codemadness.org 70 i 57794Package names on the FreeBSD platform are independent of the OS version, since external software (as in: not part of base system) is maintained in FreeBSD ports. So, if your chosen FreeBSD version (here: 11) is still officially supported, the packages mentioned in this post should work. In the unlikely event of package name changes before you read this article, you should be able to find the actual package names like pkg search buildbot.
Err codemadness.org 70 i 57795 Err codemadness.org 70 i 57796Other operating systems like the various Linux distributions will use different package names but might also offer buildbot pre-packaged. If not, the buildbot installation manual offers steps to install it manually. In such case, the downside is that you will have to maintain and update the buildbot modules outside the stability and (semi-)automatic updates of your OS packages.
Err codemadness.org 70 i 57797
DigitalOcean
Err codemadness.org 70 i 57806 Err codemadness.org 70 i 57807Err codemadness.org 70 i 57810Err codemadness.org 70 i 57812 Err codemadness.org 70 i 57813One of the many new features of OpenBSD 6.3 is the possibility to dump USB traffic to userland via bpf(4). This can be done with tcpdump(8) by specifying a USB bus as interface:
Err codemadness.org 70 i 57811
```
Err codemadness.org 70 i 57814 Err codemadness.org 70 i 57815tcpdump: listening on usb0, link-type USBPCAP Err codemadness.org 70 i 57818 12:28:03.317945 bus 0 < addr 1: ep1 intr 2 Err codemadness.org 70 i 57819 0000: 0400 ..
Err codemadness.org 70 i 57820 Err codemadness.org 70 i 5782112:28:03.318018 bus 0 > addr 1: ep0 ctrl 8 Err codemadness.org 70
i 57822 0000: 00a3 0000 0002 0004 00 .........
Err codemadness.org 70
i 57823 [...] Err codemadness.org 70
i 57824 ```
Err codemadness.org 70 i 57827Err codemadness.org 70 i 57831 Err codemadness.org 70 i 57832As you might have noted I decided to implement the existing USBPcap capture format. A capture format is required because USB packets do not include all the necessary information to properly interpret them. I first thought I would implement libpcap's DLTUSB but then I quickly realize that this was not a standard. It is instead a FreeBSD specific format which has been since then renamed DLTUSBFREEBSD. Err codemadness.org 70 i 57828 But I didn't want to embrace xkcd #927, so I look at the existing formats: DLTUSBFREEBSD, DLTUSBLINUX, DLTUSBLINUXMMAPPED, DLTUSBDARWIN and DLT_USBPCAP. I was first a bit sad to see that nobody could agree on a common format then I moved on and picked the simplest one: USBPcap. Err codemadness.org 70 i 57829 Implementing an already existing format gives us out-of-box support for all the tools supporting it. That's why having common formats let us share our energy. In the case of USBPcap it is already supported by Wireshark, so you can already inspect your packet graphically. For that you need to first capture raw packets:
Err codemadness.org 70 i 57830
```
Err codemadness.org 70 i 57833 Err codemadness.org 70 i 57834tcpdump: listening on usb0, link-type USBPCAP Err codemadness.org 70 i 57837 ^C Err codemadness.org 70 i 57838 208 packets received by filter Err codemadness.org 70 i 57839 0 packets dropped by kernel Err codemadness.org 70 i 57840 ```
Err codemadness.org 70 i 57841 Err codemadness.org 70 i 57842Err codemadness.org 70 i 57843Err codemadness.org 70 i 57846 Err codemadness.org 70 i 57847USB packets can be quite big, that's why I'm not using tcpdump(8)'s default packet size. In this case, I want to make sure I can dump the complete uaudio(4) frames. Err codemadness.org 70 i 57844 It is important to say that what is dumped to userland is what the USB stack sees. Packets sent on the wire might differ, especially when it comes to retries and timing. So this feature is not here to replace any USB analyser, however I hope that it will help people understand how things work and what the USB stack is doing. Even I found some interesting timing issues while implementing isochronous support.
Err codemadness.org 70 i 57845
Err codemadness.org 70 i 57856Err codemadness.org 70 i 57858 Err codemadness.org 70 i 57859As soon as you're there you can enable an httpd(8) daemon, it's already installed on OpenBSD, you just need to configure it:
Err codemadness.org 70 i 57857
www# vi /etc/httpd.conf
``` Err codemadness.org 70 i 57866 server "www.example.com" { Err codemadness.org 70 i 57867 listen on * port 80 Err codemadness.org 70 i 57868 root "/htdocs/www.example.com" Err codemadness.org 70 i 57869 }
Err codemadness.org 70 i 57870 Err codemadness.org 70 i 57871server "example.com" { Err codemadness.org 70 i 57872 listen on * port 80 Err codemadness.org 70 i 57873 block return 301 "http://www.example.com$REQUEST_URI" Err codemadness.org 70 i 57874 } Err codemadness.org 70 i 57875 ```
Err codemadness.org 70 i 57876 Err codemadness.org 70 i 57877www# mkdir -p /var/www/htdocs/www.example.com
Err codemadness.org 70
i 57888 www# httpd -n Err codemadness.org 70
i 57889 configuration ok Err codemadness.org 70
i 57890
Err codemadness.org 70
i 57897 www# rcctl enable httpd Err codemadness.org 70
i 57898 www# rcctl start httpd Err codemadness.org 70
i 57899
Publish your website
Copy your website content into /var/www/htdocs/www.example.com and then test it your web browser.
http://XXX.XXX.XXX.XXX/
Err codemadness.org 70 i 57909Err codemadness.org 70 i 57911 Err codemadness.org 70 i 57912Your web server should be up and running.
Err codemadness.org 70 i 57910
Err codemadness.org 70 i 57917Err codemadness.org 70 i 57921 Err codemadness.org 70 i 57922If there is another HTTPS server using this domain, configure that server to redirect all HTTPS requests to HTTP.
Err codemadness.org 70 i 57918 Err codemadness.org 70 i 57919Now as your new server is ready you can update DNS records accordingly.
Err codemadness.org 70 i 57920
Err codemadness.org 70
i 57923 example.com. 300 IN A XXX.XXX.XXX.XXX Err codemadness.org 70
i 57924 www.example.com. 300 IN A XXX.XXX.XXX.XXX Err codemadness.org 70
i 57925
$ dig example.com www.example.com
Check IP addresses it answer sections. If they are correct, you should be able to access your new web server by its domain name.
Err codemadness.org 70 i 57943Err codemadness.org 70 i 57949 Err codemadness.org 70 i 57950For, quite literally a year or more, KMail and Akonadi on FreeBSD have been only marginally useful, at best. KDE4 era KMail was pretty darn good, but everything after that has had a number of FreeBSD users tearing out their hair. Sure, you can go to Trojitá, which has its own special problems and is generally “meh”, or bail out entirely to webmail, but .. KMail is a really great mail client when it works. Which, on Linux desktops, is nearly always, and on FreeBSD, is was nearly never.
Err codemadness.org 70 i 57944 Err codemadness.org 70 i 57945I looked at it with Dan and Volker last summer, briefly, and we got not much further than “hmm”. There’s a message about “The world is going to end!” which hardly makes sense, it means that a message has been truncated or corrupted while traversing a UNIX domain socket.
Err codemadness.org 70 i 57946 Err codemadness.org 70 i 57947Now Alexandre Martins — praise be! — has wandered in with a likely solution. KDE Bug 381850 contains a suggestion, which deserves to be publicised (and tested):
Err codemadness.org 70 i 57948
sysctl net.local.stream.recvspace=65536 Err codemadness.org 70
i 57951 sysctl net.local.stream.sendspace=65536
Err codemadness.org 70 i 57954Err codemadness.org 70 i 57960 Err codemadness.org 70 i 57961The default FreeBSD UNIX local socket buffer space is 8kiB. Bumping the size up to 64kiB — which matches the size that Linux has by default — suddenly makes KMail and Akonadi shine again. No other changes, no recompiling, just .. bump the sysctls (perhaps also in /etc/sysctl.conf) and KMail from Area51 hums along all day without ending the world.
Err codemadness.org 70 i 57955 Err codemadness.org 70 i 57956Since changing this value may have other effects, and Akonadi shouldn’t be dependent on a specific buffer size anyway, I’m looking into the Akonadi code (encouraged by Dan) to either automatically size the socket buffers, or to figure out where in the underlying code the assumption about buffer size lives. So for now, sysctl can make KMail users on FreeBSD happy, and later we hope to have things fully automatic (and if that doesn’t pan out, well, pkg-message exists).
Err codemadness.org 70 i 57957 Err codemadness.org 70 i 57958PS. Modern KDE PIM applications — Akonadi, KMail — which live in the deskutils/ category of the official FreeBSD ports were added to the official tree April 10th, so you can get your fix now from the official tree.
Err codemadness.org 70 i 57959
Tarsnap ad
Err codemadness.org 70 i 57978 Err codemadness.org 70 i 57979Err codemadness.org 70 i 58007 Meltdown and Spectre mitigation support Err codemadness.org 70 i 58008 Meltdown isolation and spectre mitigation support added. Meltdown mitigation is automatically enabled for all Intel cpus. Spectre mitigation must be enabled manually via sysctl if desired, using sysctls machdep.spectremitigation and machdep.meltdownmitigation. Err codemadness.org 70 i 58009 HAMMER2 Err codemadness.org 70 i 58010 H2 has received a very large number of bug fixes and performance improvements. We can now recommend H2 as the default root filesystem in non-clustered mode. Err codemadness.org 70 i 58011 Clustered support is not yet available. Err codemadness.org 70 i 58012 ipfw Updates Err codemadness.org 70 i 58013 Implement state based "redirect", i.e. without using libalias. Err codemadness.org 70 i 58014 ipfw now supports all possible ICMP types. Err codemadness.org 70 i 58015 Fix ICMPMAXTYPE assumptions (now 40 as of this release). Err codemadness.org 70 i 58016 Improved graphics support Err codemadness.org 70 i 58017 The drm/i915 kernel driver has been updated to support Intel Coffeelake GPUs Err codemadness.org 70 i 58018 Add 24-bit pixel format support to the EFI frame buffer code. Err codemadness.org 70 i 58019 Significantly improve fbio support for the "scfb" XOrg driver. This allows EFI frame buffers to be used by X in situations where we do not otherwise support the GPU. Err codemadness.org 70 i 58020 Partly implement the FBIOBLANK ioctl for display powersaving. Err codemadness.org 70 i 58021 Syscons waits for drm modesetting at appropriate places, avoiding races.
Err codemadness.org 70 i 58031Err codemadness.org 70 i 58033 Err codemadness.org 70 i 58034Note: While this bug is primarily interesting for exploitation on the PS4, this bug can also potentially be exploited on other unpatched platforms using FreeBSD if the attacker has read/write permissions on /dev/bpf, or if they want to escalate from root user to kernel code execution. As such, I've published it under the "FreeBSD" folder and not the "PS4" folder.
Err codemadness.org 70 i 58032
Err codemadness.org 70 i 58039Err codemadness.org 70 i 58041 Err codemadness.org 70 i 58042Welcome to the kernel portion of the PS4 4.55FW full exploit chain write-up. This bug was found by qwerty, and is fairly unique in the way it's exploited, so I wanted to do a detailed write-up on how it worked. The full source of the exploit can be found here. I've previously covered the webkit exploit implementation for userland access here.
Err codemadness.org 70 i 58040
Err codemadness.org 70 i 58047Err codemadness.org 70 i 58049 Err codemadness.org 70 i 58050Interestingly, this bug is actually a FreeBSD bug and was not (at least directly) introduced by Sony code. While this is a FreeBSD bug however, it's not very useful for most systems because the /dev/bpf device driver is root-owned, and the permissions for it are set to 0600 (meaning owner has read/write privileges, and nobody else does) - though it can be used for escalating from root to kernel mode code execution. However, let’s take a look at the make_dev() call inside the PS4 kernel for /dev/bpf (taken from a 4.05 kernel dump).
Err codemadness.org 70 i 58048
Err codemadness.org 70
i 58051 seg000:FFFFFFFFA181F15B lea rdi, unk_FFFFFFFFA2D77640 Err codemadness.org 70
i 58052 seg000:FFFFFFFFA181F162 lea r9, aBpf ; "bpf" Err codemadness.org 70
i 58053 seg000:FFFFFFFFA181F169 mov esi, 0 Err codemadness.org 70
i 58054 seg000:FFFFFFFFA181F16E mov edx, 0 Err codemadness.org 70
i 58055 seg000:FFFFFFFFA181F173 xor ecx, ecx Err codemadness.org 70
i 58056 seg000:FFFFFFFFA181F175 mov r8d, 1B6h Err codemadness.org 70
i 58057 seg000:FFFFFFFFA181F17B xor eax, eax Err codemadness.org 70
i 58058 seg000:FFFFFFFFA181F17D mov cs:qword_FFFFFFFFA34EC770, 0 Err codemadness.org 70
i 58059 seg000:FFFFFFFFA181F188 call make_dev Err codemadness.org 70
i 58060
Err codemadness.org 70 i 58063Err codemadness.org 70 i 58065 Err codemadness.org 70 i 58066We see UID 0 (the UID for the root user) getting moved into the register for the 3rd argument, which is the owner argument. However, the permissions bits are being set to 0x1B6, which in octal is 0666. This means anyone can open /dev/bpf with read/write privileges. I’m not sure why this is the case, qwerty speculates that perhaps bpf is used for LAN gaming. In any case, this was a poor design decision because bpf is usually considered privileged, and should not be accessible to a process that is completely untrusted, such as WebKit. On most platforms, permissions for /dev/bpf will be set to 0x180, or 0600.
Err codemadness.org 70 i 58064
Err codemadness.org 70 i 58071Err codemadness.org 70 i 58077 Err codemadness.org 70 i 58078The class of the bug abused in this exploit is known as a "race condition". Before we get into bug specifics, it's important for the reader to understand what race conditions are and how they can be an issue (especially in something like a kernel). Often in complex software (such as a kernel), resources will be shared (or "global"). This means other threads could potentially execute code that will access some resource that could be accessed by another thread at the same point in time. What happens if one thread accesses this resource while another thread does without exclusive access? Race conditions are introduced.
Err codemadness.org 70 i 58072 Err codemadness.org 70 i 58073Race conditions are defined as possible scenarios where events happen in a sequence different than the developer intended which leads to undefined behavior. In simple, single-threaded programs, this is not an issue because execution is linear. In more complex programs where code can be running in parallel however, this becomes a real issue. To prevent these problems, atomic instructions and locking mechanisms were introduced. When one thread wants to access a critical resource, it will attempt to acquire a "lock". If another thread is already using this resource, generally the thread attempting to acquire the lock will wait until the other thread is finished with it. Each thread must release the lock to the resource after they're done with it, failure to do so could result in a deadlock.
Err codemadness.org 70 i 58074 Err codemadness.org 70 i 58075While locking mechanisms such as mutexes have been introduced, developers sometimes struggle to use them properly. For example, what if a piece of shared data gets validated and processed, but while the processing of the data is locked, the validation is not? There is a window between validation and locking where that data can change, and while the developer thinks the data has been validated, it could be substituted with something malicious after it is validated, but before it is used. Parallel programming can be difficult, especially when, as a developer, you also want to factor in the fact that you don't want to put too much code in between locking and unlocking as it can impact performance.
Err codemadness.org 70 i 58076
iXsystems
Err codemadness.org 70 i 58085 Err codemadness.org 70 i 58086Err codemadness.org 70 i 58098 $ qemu-img create -f raw disk.raw 5G Err codemadness.org 70 i 58099 $ qemu-system-x8664 -m 256M \ Err codemadness.org 70 i 58100 -drive format=raw,file=install63.fs \ Err codemadness.org 70 i 58101 -drive format=raw,file=disk.raw Err codemadness.org 70 i 58102 +> Custom Kernel Err codemadness.org 70 i 58103 +> To debug the kernel, we need a version of the kernel with debugging symbols and for that we have to recompile it first. The process is documented at Building the System from Source: Err codemadness.org 70 i 58104 ... Err codemadness.org 70 i 58105 +> Then we can copy the bsd kernel to the guest machine and keep the bsd.gdb on the host to start the remote debugging via gdb. Err codemadness.org 70 i 58106 +> Remote debugging kernel Err codemadness.org 70 i 58107 +> Now it's to time to boot the guest with the new custom kernel. Remember that the -s argument enables the gdb server on qemu on localhost port 1234 by default: Err codemadness.org 70 i 58108 $ qemu-system-x8664 -m 256M -s \ Err codemadness.org 70 i 58109 -net nic -net user \ Err codemadness.org 70 i 58110 -drive format=raw,file=install63.fs \ Err codemadness.org 70 i 58111 +> Now to finally attach to the running kernel:
Err codemadness.org 70 i 58141Err codemadness.org 70 i 58143 Err codemadness.org 70 i 58144In this article, I would like to present a tutorial to set up buildbot, a continuous integration (CI) software (like Jenkins, drone, etc.), making use of FreeBSD’s containerization mechanism "jails". We will cover terminology, rationale for using both buildbot and jails together, and installation steps. At the end, you will have a working buildbot instance using its sample build configuration, ready to play around with your own CI plans (or even CD, it’s very flexible!). Some hints for production-grade installations are given, but the tutorial steps are meant for a test environment (namely a virtual machine). Buildbot’s configuration and detailed concepts are not in scope here.
Err codemadness.org 70 i 58142
Table of contents
Err codemadness.org 70 i 58146 Err codemadness.org 70 i 58147Choosing host operating system and version for buildbot
Err codemadness.org 70 i 58164Err codemadness.org 70 i 58172 Err codemadness.org 70 i 58173We choose the released version of FreeBSD (11.1-RELEASE at the moment). There is no particular reason for it, and as a matter of fact buildbot as a Python-based server is very cross-platform; therefore the underlying OS platform and version should not make a large difference.
Err codemadness.org 70 i 58165 Err codemadness.org 70 i 58166It will make a difference for what you do with buildbot, however. For instance, poudriere is the de-facto standard for building packages from source on FreeBSD. Builds run in jails which may be any FreeBSD base system version older or equal to the host’s version (reason will be explained below). In other words, if the host is FreeBSD 11.1, build jails created by poudriere could e.g. use 9.1, 10.3, 11.0, 11.1, but potentially not version 12 or newer because of incompatibilities with the host’s kernel (jails do not run their own kernel as full virtual machines do). To not prolong this article over the intended scope, the details of which nice things could be done or automated with buildbot are not covered.
Err codemadness.org 70 i 58167 Err codemadness.org 70 i 58168Package names on the FreeBSD platform are independent of the OS version, since external software (as in: not part of base system) is maintained in FreeBSD ports. So, if your chosen FreeBSD version (here: 11) is still officially supported, the packages mentioned in this post should work. In the unlikely event of package name changes before you read this article, you should be able to find the actual package names like pkg search buildbot.
Err codemadness.org 70 i 58169 Err codemadness.org 70 i 58170Other operating systems like the various Linux distributions will use different package names but might also offer buildbot pre-packaged. If not, the buildbot installation manual offers steps to install it manually. In such case, the downside is that you will have to maintain and update the buildbot modules outside the stability and (semi-)automatic updates of your OS packages.
Err codemadness.org 70 i 58171
DigitalOcean
Err codemadness.org 70 i 58180 Err codemadness.org 70 i 58181Err codemadness.org 70 i 58184Err codemadness.org 70 i 58186 Err codemadness.org 70 i 58187One of the many new features of OpenBSD 6.3 is the possibility to dump USB traffic to userland via bpf(4). This can be done with tcpdump(8) by specifying a USB bus as interface:
Err codemadness.org 70 i 58185
```
Err codemadness.org 70 i 58188 Err codemadness.org 70 i 58189tcpdump: listening on usb0, link-type USBPCAP Err codemadness.org 70 i 58192 12:28:03.317945 bus 0 < addr 1: ep1 intr 2 Err codemadness.org 70 i 58193 0000: 0400 ..
Err codemadness.org 70 i 58194 Err codemadness.org 70 i 5819512:28:03.318018 bus 0 > addr 1: ep0 ctrl 8 Err codemadness.org 70
i 58196 0000: 00a3 0000 0002 0004 00 .........
Err codemadness.org 70
i 58197 [...] Err codemadness.org 70
i 58198 ```
Err codemadness.org 70 i 58201Err codemadness.org 70 i 58205 Err codemadness.org 70 i 58206As you might have noted I decided to implement the existing USBPcap capture format. A capture format is required because USB packets do not include all the necessary information to properly interpret them. I first thought I would implement libpcap's DLTUSB but then I quickly realize that this was not a standard. It is instead a FreeBSD specific format which has been since then renamed DLTUSBFREEBSD. Err codemadness.org 70 i 58202 But I didn't want to embrace xkcd #927, so I look at the existing formats: DLTUSBFREEBSD, DLTUSBLINUX, DLTUSBLINUXMMAPPED, DLTUSBDARWIN and DLT_USBPCAP. I was first a bit sad to see that nobody could agree on a common format then I moved on and picked the simplest one: USBPcap. Err codemadness.org 70 i 58203 Implementing an already existing format gives us out-of-box support for all the tools supporting it. That's why having common formats let us share our energy. In the case of USBPcap it is already supported by Wireshark, so you can already inspect your packet graphically. For that you need to first capture raw packets:
Err codemadness.org 70 i 58204
```
Err codemadness.org 70 i 58207 Err codemadness.org 70 i 58208tcpdump: listening on usb0, link-type USBPCAP Err codemadness.org 70 i 58211 ^C Err codemadness.org 70 i 58212 208 packets received by filter Err codemadness.org 70 i 58213 0 packets dropped by kernel Err codemadness.org 70 i 58214 ```
Err codemadness.org 70 i 58215 Err codemadness.org 70 i 58216Err codemadness.org 70 i 58217Err codemadness.org 70 i 58220 Err codemadness.org 70 i 58221USB packets can be quite big, that's why I'm not using tcpdump(8)'s default packet size. In this case, I want to make sure I can dump the complete uaudio(4) frames. Err codemadness.org 70 i 58218 It is important to say that what is dumped to userland is what the USB stack sees. Packets sent on the wire might differ, especially when it comes to retries and timing. So this feature is not here to replace any USB analyser, however I hope that it will help people understand how things work and what the USB stack is doing. Even I found some interesting timing issues while implementing isochronous support.
Err codemadness.org 70 i 58219
Err codemadness.org 70 i 58230Err codemadness.org 70 i 58232 Err codemadness.org 70 i 58233As soon as you're there you can enable an httpd(8) daemon, it's already installed on OpenBSD, you just need to configure it:
Err codemadness.org 70 i 58231
www# vi /etc/httpd.conf
``` Err codemadness.org 70 i 58240 server "www.example.com" { Err codemadness.org 70 i 58241 listen on * port 80 Err codemadness.org 70 i 58242 root "/htdocs/www.example.com" Err codemadness.org 70 i 58243 }
Err codemadness.org 70 i 58244 Err codemadness.org 70 i 58245server "example.com" { Err codemadness.org 70 i 58246 listen on * port 80 Err codemadness.org 70 i 58247 block return 301 "http://www.example.com$REQUEST_URI" Err codemadness.org 70 i 58248 } Err codemadness.org 70 i 58249 ```
Err codemadness.org 70 i 58250 Err codemadness.org 70 i 58251www# mkdir -p /var/www/htdocs/www.example.com
Err codemadness.org 70
i 58262 www# httpd -n Err codemadness.org 70
i 58263 configuration ok Err codemadness.org 70
i 58264
Err codemadness.org 70
i 58271 www# rcctl enable httpd Err codemadness.org 70
i 58272 www# rcctl start httpd Err codemadness.org 70
i 58273
Publish your website
Copy your website content into /var/www/htdocs/www.example.com and then test it your web browser.
http://XXX.XXX.XXX.XXX/
Err codemadness.org 70 i 58283Err codemadness.org 70 i 58285 Err codemadness.org 70 i 58286Your web server should be up and running.
Err codemadness.org 70 i 58284
Err codemadness.org 70 i 58291Err codemadness.org 70 i 58295 Err codemadness.org 70 i 58296If there is another HTTPS server using this domain, configure that server to redirect all HTTPS requests to HTTP.
Err codemadness.org 70 i 58292 Err codemadness.org 70 i 58293Now as your new server is ready you can update DNS records accordingly.
Err codemadness.org 70 i 58294
Err codemadness.org 70
i 58297 example.com. 300 IN A XXX.XXX.XXX.XXX Err codemadness.org 70
i 58298 www.example.com. 300 IN A XXX.XXX.XXX.XXX Err codemadness.org 70
i 58299
$ dig example.com www.example.com
Check IP addresses it answer sections. If they are correct, you should be able to access your new web server by its domain name.
Err codemadness.org 70 i 58317Err codemadness.org 70 i 58323 Err codemadness.org 70 i 58324For, quite literally a year or more, KMail and Akonadi on FreeBSD have been only marginally useful, at best. KDE4 era KMail was pretty darn good, but everything after that has had a number of FreeBSD users tearing out their hair. Sure, you can go to Trojitá, which has its own special problems and is generally “meh”, or bail out entirely to webmail, but .. KMail is a really great mail client when it works. Which, on Linux desktops, is nearly always, and on FreeBSD, is was nearly never.
Err codemadness.org 70 i 58318 Err codemadness.org 70 i 58319I looked at it with Dan and Volker last summer, briefly, and we got not much further than “hmm”. There’s a message about “The world is going to end!” which hardly makes sense, it means that a message has been truncated or corrupted while traversing a UNIX domain socket.
Err codemadness.org 70 i 58320 Err codemadness.org 70 i 58321Now Alexandre Martins — praise be! — has wandered in with a likely solution. KDE Bug 381850 contains a suggestion, which deserves to be publicised (and tested):
Err codemadness.org 70 i 58322
sysctl net.local.stream.recvspace=65536 Err codemadness.org 70
i 58325 sysctl net.local.stream.sendspace=65536
Err codemadness.org 70 i 58328Err codemadness.org 70 i 58334 Err codemadness.org 70 i 58335The default FreeBSD UNIX local socket buffer space is 8kiB. Bumping the size up to 64kiB — which matches the size that Linux has by default — suddenly makes KMail and Akonadi shine again. No other changes, no recompiling, just .. bump the sysctls (perhaps also in /etc/sysctl.conf) and KMail from Area51 hums along all day without ending the world.
Err codemadness.org 70 i 58329 Err codemadness.org 70 i 58330Since changing this value may have other effects, and Akonadi shouldn’t be dependent on a specific buffer size anyway, I’m looking into the Akonadi code (encouraged by Dan) to either automatically size the socket buffers, or to figure out where in the underlying code the assumption about buffer size lives. So for now, sysctl can make KMail users on FreeBSD happy, and later we hope to have things fully automatic (and if that doesn’t pan out, well, pkg-message exists).
Err codemadness.org 70 i 58331 Err codemadness.org 70 i 58332PS. Modern KDE PIM applications — Akonadi, KMail — which live in the deskutils/ category of the official FreeBSD ports were added to the official tree April 10th, so you can get your fix now from the official tree.
Err codemadness.org 70 i 58333
Tarsnap ad
Err codemadness.org 70 i 58352 Err codemadness.org 70 i 58353Err codemadness.org 70 i 58715Err codemadness.org 70 i 58719 Err codemadness.org 70 i 58720Hi, my name is Mitchell Horne. I am a computer engineering student at the University of Waterloo, currently in my third year of studies, and fortunate to have been one of the FreeBSD Foundation’s co-op students this past term (January to April). During this time I worked under Ed Maste, in the Foundation’s small Kitchener office, along with another co-op student Arshan Khanifar. My term has now come to an end, and so I’d like to share a little bit about my experience as a newcomer to FreeBSD and open-source development.
Err codemadness.org 70 i 58716 Err codemadness.org 70 i 58717I’ll begin with some quick background — and a small admission of guilt. I have been an open-source user for a large part of my life. When I was a teenager I started playing around with Linux, which opened my eyes to the wider world of free software. Other than some small contributions to GNOME, my experience has been mostly as an end user; however, the value of these projects and the open-source philosophy was not lost on me, and is most of what motivated my interest in this position. Before beginning this term I had no personal experience with any of the BSDs, although I knew of their existence and was extremely excited to receive the position. I knew it would be a great opportunity for growth, but I must confess that my naivety about FreeBSD caused me to make the silent assumption that this would be a form of compromise — a stepping stone that would eventually allow me to work on open-source projects that are somehow “greater” or more “legitimate”. After four months spent immersed in this project I have learned how it operates, witnessed its community, and learned about its history. I am happy to admit that I was completely mistaken. Saying it now seems obvious, but FreeBSD is a project with its own distinct uses, goals, and identity. For many there may exist no greater opportunity than to work on FreeBSD full time, and with what I know now I would have a hard time coming up with a project that is more “legitimate”.
Err codemadness.org 70 i 58718
Err codemadness.org 70 i 58725Err codemadness.org 70 i 58729 Err codemadness.org 70 i 58730In all cases, the work I submitted this term was reviewed by no less than two people before being committed. The feedback and criticism I received was always both constructive and to the point, and it commented on everything from high-level ideas to small style issues. I appreciate having these thorough reviews in place, since I believe it ultimately encourages people to accept only their best work. It is indicative of the high quality that already exists within every aspect of this project, and this commitment to quality is something that should continue to be honored as a core value. As I’ve discovered in some of my previous work terms, it is all too easy cut corners in the name of a deadline or changing priorities, but the fact that FreeBSD doesn’t need to make these types of compromises is a testament to the power of free software.
Err codemadness.org 70 i 58726 Err codemadness.org 70 i 58727It’s a small thing, but the quality and completeness of the FreeBSD documentation was hugely helpful throughout my term. Everything you might need to know about utilities, library functions, the kernel, and more can be found in a man page; and the handbook is a great resource as both an introduction to the operating system and a reference. I only wish I had taken some time earlier in the term to explore the different documents more thoroughly, as they cover a wide range of interesting and useful topics. The effort people put into writing and maintaining FreeBSD’s documentation is easy to overlook, but its value cannot be overstated.
Err codemadness.org 70 i 58728
Err codemadness.org 70 i 58735Err codemadness.org 70 i 58749 Err codemadness.org 70 i 58750Although there was a lot I enjoyed, there were certainly many struggles I faced throughout the term, and lessons to be learned from them. I expect that some of issues I faced may be specific to FreeBSD, while others may be common to open-source projects in general. I don’t have enough experience to speculate on which is which, so I will leave this to the reader.
Err codemadness.org 70 i 58736 Err codemadness.org 70 i 58737The first lesson can be summed up simply: you have to advocate for your own work. FreeBSD is made up in large part by volunteer efforts, and in many cases there is more work to go around than people available to do it. A consequence of this is that there will not be anybody there to check up on you. Even in my position where I actually had a direct supervisor, Ed often had his plate full with so many other things that the responsibility to find someone to look at my work fell to me. Admittedly, a couple of smaller changes I worked on got left behind or stuck in review simply because there wasn’t a clear person/place to reach out to.
Err codemadness.org 70 i 58738 Err codemadness.org 70 i 58739I think this is both a barrier of entry to FreeBSD and a mental hurdle that I needed to get over. If there’s a change you want to see included or reviewed, then you may have to be the one to push for it, and there’s nothing wrong with that. Perhaps this process should be easier for newcomers or infrequent contributors (the disconnect between Bugzilla and Phabricator definitely leaves a lot to be desired), but we also have to be aware that this simply isn’t the reality right now. Getting your work looked at may require a little bit more self-motivation, but I’d argue that there are much worse problems a project like FreeBSD could have than this.
Err codemadness.org 70 i 58740 Err codemadness.org 70 i 58741I understand this a lot better now, but it is still something I struggle with. I’m not naturally the type of person who easily connects with others or asks for help, so I see this as an area for future growth rather than simply a struggle I encountered and overcame over the course of this work term. Certainly it is an important skill to understand the value of your own work, and equally important is the ability to communicate that value to others.
Err codemadness.org 70 i 58742 Err codemadness.org 70 i 58743I also learned the importance of starting small. My first week or two on the job mainly involved getting set up and comfortable with the workflow. After this initial stage, I began exploring the project and found myself overwhelmed by its scale. With so many possible areas to investigate, and so much work happening at once, I felt quite lost on where to begin. Many of the potential projects I found were too far beyond my experience level, and most small bugs were picked up and fixed quickly by more experienced contributors before I could even get to them.
Err codemadness.org 70 i 58744 Err codemadness.org 70 i 58745It’s easy to make the mistake that FreeBSD is made up solely of a few rock-star committers that do everything. This is how it appears at face-value, as reading through commits, bug reports, and mailing lists yields a few of the same names over and over. The reality is that just as important are the hundreds of users and infrequent contributors who take the time to submit bug reports, patches, or feedback. Even though there are some people who would fall under the umbrella of a rock-star committer, they didn’t get there overnight. Rather, they have built their skills and knowledge through many years of involvement in FreeBSD and similar projects.
Err codemadness.org 70 i 58746 Err codemadness.org 70 i 58747As a student coming into this project and having high expectations of myself, it was easy to set the bar too high by comparing myself against those big committers, and feel that my work was insignificant, inadequate, and simply too infrequent. In reality, there is no reason I should have felt this way. In a way, this comparison is disrespectful to those who have reached this level, as it took them a long time to get there, and it’s a humbling reminder that any skill worth learning requires time, patience, and dedication. It is easy to focus on an end product and simply wish to be there, but in order to be truly successful one must start small, and find satisfaction in the struggle of learning something new. I take pride in the many small successes I’ve had throughout my term here, and appreciate the fact that my journey into FreeBSD and open-source software is only just beginning.
Err codemadness.org 70 i 58748
Err codemadness.org 70 i 58755Err codemadness.org 70 i 58759 Err codemadness.org 70 i 58760I would like to close with some brief thank-you’s. First, to everyone at the Foundation for being so helpful, and allowing this position to exist in the first place. I am extremely grateful to have been given this unique opportunity to learn about and give back to the open-source world. I’d also like to thank my office mates; Ed: for being an excellent mentor, who offered an endless wealth of knowledge and willingness to share it. My classmate and fellow intern Arshan: for giving me a sense of camaraderie and the comforting reminder that at many moments he was as lost as I was. Finally, a quick thanks to everyone else I crossed paths with who offered reviews and advice. I appreciate your help and look forward to working with you all further.
Err codemadness.org 70 i 58756 Err codemadness.org 70 i 58757I am walking away from this co-op with a much greater appreciation for this project, and have made it a goal to remain involved in some capacity. I feel that I’ve gained a little bit of a wider perspective on my place in the software world, something I never really got from my previous co-ops. Whether it ends up being just a stepping stone, or the beginning of much larger involvement, I thoroughly enjoyed my time here.
Err codemadness.org 70 i 58758
DigitalOcean Err codemadness.org 70 i 58779 Digital Ocean Promo Link for BSD Now Listeners
Err codemadness.org 70 i 58780 Err codemadness.org 70 i 58781I just remind the scope of this small tool:
Err codemadness.org 70 i 58810 Err codemadness.org 70 i 58811Enhancements in this version
Err codemadness.org 70 i 58819Err codemadness.org 70 i 58822 Err codemadness.org 70 i 58823This is my second development version: 0.2. Err codemadness.org 70 i 58820 I've added performed several changes in the code:
Err codemadness.org 70 i 58821
Err codemadness.org 70 i 58830Err codemadness.org 70 i 58835 Err codemadness.org 70 i 58836The source code is still on the git of Sourceforge.net. Err codemadness.org 70 i 58831 You can see the files here
Err codemadness.org 70 i 58832 Err codemadness.org 70 i 58833And you can download the last version here
Err codemadness.org 70 i 58834
Err codemadness.org 70 i 58841Err codemadness.org 70 i 58843 Err codemadness.org 70 i 58844I'm using this script on my OpenBSD laptop since about 5 months. In my case, I'm mainly using the openbox menus and the --restart option.
Err codemadness.org 70 i 58842
Err codemadness.org 70 i 58849Err codemadness.org 70 i 58852 Err codemadness.org 70 i 58853The openbox menus are working fine. As explain in my previous blog, I just have to create 2 entries in my openbox's menu.xml file, and all the rest comes automatically from nmctl itself thanks to the --list and --scan options. Err codemadness.org 70 i 58850 I've not changed this part of nmctl since it works as expected (for me :-) ).
Err codemadness.org 70 i 58851
Err codemadness.org 70 i 58858Err codemadness.org 70 i 58865 Err codemadness.org 70 i 58866Because I'm very lazy, and because OpenBSD is very simple to use, I've added the command "nmctl --restart" in the /etc/apm/resume script. Thanks to apmd, this script will be used each time I'm opening the lid of my laptop. Err codemadness.org 70 i 58859 In other words, each time I'll opening my laptop, nmctl will search the optimum network connection for me. Err codemadness.org 70 i 58860 But I had several issues in this scenario. Err codemadness.org 70 i 58861 Most of the problems were linked to the arp table issues. Indeed, in some circumstances, my proxy IP address was associated to the cable interface instead of the wifi interface or vice-versa. As consequence I'm not able to connect to the proxy, thus not able to connect to internet. So the ping to google (final test nmctl perform) is failing. Err codemadness.org 70 i 58862 Knowing that anyhow, I'm doing a full arp cleanup, it's not clear for me from where this problem come from. To solve this situation I've implemented a "retry" concept. In other words, before testing an another possible network connection (as listed in my /etc/nmctl.conf file), the script try 3x the current connection's parameters. Err codemadness.org 70 i 58863 If you want to reduce or increase this figures, you can do it via the --retry parameter.
Err codemadness.org 70 i 58864
Err codemadness.org 70 i 58871Err codemadness.org 70 i 58876 Err codemadness.org 70 i 58877Where ever I'm located, my laptop is now connecting automatically to the wifi / cable connection previously identified for this location. Err codemadness.org 70 i 58872 Currently I have 3 places where I have Wifi credentials and 2 offices places where I just have to plug the network cable. Err codemadness.org 70 i 58873 Since the /etc/apm/resume scripts is triggered when I open the lid of the laptop, I just have to make sure that I plug the RJ45 before opening the laptop. For the rest, I do not have to type any commands, OpenBSD do all what is needed ;-). Err codemadness.org 70 i 58874 I hotels or restaurants, I can just connect to the Open Wifi thanks to the openbox menu created by "nmctl --scan".
Err codemadness.org 70 i 58875
Next steps
Documentation
Err codemadness.org 70 i 58883Err codemadness.org 70 i 58887 Err codemadness.org 70 i 58888The tool is missing lot of documentation. I appreciate OpenBSD for his great documentation, so I have to do the same. Err codemadness.org 70 i 58884 I plan to write a README and a man page at first instances. Err codemadness.org 70 i 58885 But since my laziness, I will do it as soon as I see some interest for this tool from other persons.
Err codemadness.org 70 i 58886
Err codemadness.org 70 i 58893Err codemadness.org 70 i 58897 Err codemadness.org 70 i 58898I now have to travel and see how to see the script react on the different situations. Err codemadness.org 70 i 58894 Interested persons are welcome to share with me the outcome of their tests. Err codemadness.org 70 i 58895 I'm curious how it work.
Err codemadness.org 70 i 58896
Err codemadness.org 70 i 58907Err codemadness.org 70 i 58910 Err codemadness.org 70 i 58911OpenBSD 6.3 oceton upgrade instructions may not factor that your ERL is running from the USB key they want wiped with the miniroot63.fs image loaded on. Err codemadness.org 70 i 58908 Place the bsd.rd for OpenBSD 6.3 on the sd0i slice used by U-Boot for the kernel, and then edit the boot command to run it.
Err codemadness.org 70 i 58909
Err codemadness.org 70 i 58916Err codemadness.org 70 i 58921 Err codemadness.org 70 i 58922The OpenBSD documentation is comprehensive, but there might be rough corners around what are probably edge cases in their user base. People running EdgeRouter Lite hardware for example, who are looking to upgrade from 6.2 to 6.3. Err codemadness.org 70 i 58917 The documentation, which gave us everything we needed last time, left me with some questions about how to upgrade. In INSTALL.octeon, the Upgrading section does mention: Err codemadness.org 70 i 58918 The best solution, whenever possible, is to backup your data and reinstall from scratch Err codemadness.org 70 i 58919 I had to check if that directive existed in the documentation for other architectures. I wondered if oceton users were getting singled out. We were not. Just simplicity and pragmatism.
Err codemadness.org 70 i 58920
Err codemadness.org 70 i 58927Err codemadness.org 70 i 58934 Err codemadness.org 70 i 58935To upgrade OpenBSD 6.3 from a previous version, start with the general instructions in the section "Installing OpenBSD". Err codemadness.org 70 i 58928 But that section requires us to boot off of TFTP or NFS. Which I don’t want to do right now. Could also use a USB stick with the miniroot63.fs installed on it. Err codemadness.org 70 i 58929 But as the ERL only has a single USB port, we would have to remove the USB stick with the current install on it. Once we get to the Install or Upgrade prompt, there would be nothing to upgrade. Err codemadness.org 70 i 58930 Well, I guess I could use a USB hub. But the ERL’s USB port is inside the case. With all the screws in. And the tools are neatly put away. And I’d have to pull the USB hub from behind a workstation. And it’s two am. And I cleaned up the cabling in the lab this past weekend. Looks nice for once. Err codemadness.org 70 i 58931 So I don’t want to futz around with all that. Err codemadness.org 70 i 58932 There must be an almost imperceptibly easier way of doing this than setting up a TFTP server or NFS share in five minutes… Right?
Err codemadness.org 70 i 58933
iXsystems Err codemadness.org 70 i 58938 Boise Technology Show 2018 Recap
Err codemadness.org 70 i 58939 Err codemadness.org 70 i 58940Err codemadness.org 70 i 58964Err codemadness.org 70 i 58966 Err codemadness.org 70 i 58967ed is this sort of terrifying text editor. A typical interaction with ed for me in the past has gone something like this:
Err codemadness.org 70 i 58965
Err codemadness.org 70
i 58968 $ ed Err codemadness.org 70
i 58969 help Err codemadness.org 70
i 58970 ? Err codemadness.org 70
i 58971 h Err codemadness.org 70
i 58972 ? Err codemadness.org 70
i 58973 asdfasdfasdfsadf Err codemadness.org 70
i 58974 ? Err codemadness.org 70
i 58975 <close terminal in frustration> Err codemadness.org 70
i 58976
Err codemadness.org 70 i 58979Err codemadness.org 70 i 58982 Err codemadness.org 70 i 58983Basically if you do something wrong, ed will just print out a single, unhelpful, ?. So I’d basically dismissed ed as an old arcane Unix tool that had no practical use today. Err codemadness.org 70 i 58980 vi is a successor to ed, except with a visual interface instead of this ?
Err codemadness.org 70 i 58981
Err codemadness.org 70 i 58988Err codemadness.org 70 i 58992 Err codemadness.org 70 i 58993So if Ed is a terrifying thing that only prints ? at you, why am I writing a blog post about it? WELL!!!! Err codemadness.org 70 i 58989 On April 1 this year, Michael W Lucas published a new short book called Ed Mastery. I like his writing, and even though it was sort of an april fool’s joke, it was ALSO a legitimate actual real book, and so I bought it and read it to see if his claims that Ed is actually interesting were true. Err codemadness.org 70 i 58990 And it was so cool!!!! I found out:
Err codemadness.org 70 i 58991
Err codemadness.org 70 i 59000Err codemadness.org 70 i 59004 Err codemadness.org 70 i 59005All of that was a cool Unix history lesson, but did not make me want to actually use Ed in real life. But!!!
Err codemadness.org 70 i 59001 Err codemadness.org 70 i 59002The other neat thing about Ed (that did make me want to use it!) is that any Ed session corresponds to a script that you can replay! So if I know Ed, then I can use Ed basically as a way to easily apply vim-macro-like programs to my files.
Err codemadness.org 70 i 59003
Tarsnap
Err codemadness.org 70 i 59024 Err codemadness.org 70 i 59025Err codemadness.org 70 i 59048Err codemadness.org 70 i 59052 Err codemadness.org 70 i 59053Hi, my name is Mitchell Horne. I am a computer engineering student at the University of Waterloo, currently in my third year of studies, and fortunate to have been one of the FreeBSD Foundation’s co-op students this past term (January to April). During this time I worked under Ed Maste, in the Foundation’s small Kitchener office, along with another co-op student Arshan Khanifar. My term has now come to an end, and so I’d like to share a little bit about my experience as a newcomer to FreeBSD and open-source development.
Err codemadness.org 70 i 59049 Err codemadness.org 70 i 59050I’ll begin with some quick background — and a small admission of guilt. I have been an open-source user for a large part of my life. When I was a teenager I started playing around with Linux, which opened my eyes to the wider world of free software. Other than some small contributions to GNOME, my experience has been mostly as an end user; however, the value of these projects and the open-source philosophy was not lost on me, and is most of what motivated my interest in this position. Before beginning this term I had no personal experience with any of the BSDs, although I knew of their existence and was extremely excited to receive the position. I knew it would be a great opportunity for growth, but I must confess that my naivety about FreeBSD caused me to make the silent assumption that this would be a form of compromise — a stepping stone that would eventually allow me to work on open-source projects that are somehow “greater” or more “legitimate”. After four months spent immersed in this project I have learned how it operates, witnessed its community, and learned about its history. I am happy to admit that I was completely mistaken. Saying it now seems obvious, but FreeBSD is a project with its own distinct uses, goals, and identity. For many there may exist no greater opportunity than to work on FreeBSD full time, and with what I know now I would have a hard time coming up with a project that is more “legitimate”.
Err codemadness.org 70 i 59051
Err codemadness.org 70 i 59058Err codemadness.org 70 i 59062 Err codemadness.org 70 i 59063In all cases, the work I submitted this term was reviewed by no less than two people before being committed. The feedback and criticism I received was always both constructive and to the point, and it commented on everything from high-level ideas to small style issues. I appreciate having these thorough reviews in place, since I believe it ultimately encourages people to accept only their best work. It is indicative of the high quality that already exists within every aspect of this project, and this commitment to quality is something that should continue to be honored as a core value. As I’ve discovered in some of my previous work terms, it is all too easy cut corners in the name of a deadline or changing priorities, but the fact that FreeBSD doesn’t need to make these types of compromises is a testament to the power of free software.
Err codemadness.org 70 i 59059 Err codemadness.org 70 i 59060It’s a small thing, but the quality and completeness of the FreeBSD documentation was hugely helpful throughout my term. Everything you might need to know about utilities, library functions, the kernel, and more can be found in a man page; and the handbook is a great resource as both an introduction to the operating system and a reference. I only wish I had taken some time earlier in the term to explore the different documents more thoroughly, as they cover a wide range of interesting and useful topics. The effort people put into writing and maintaining FreeBSD’s documentation is easy to overlook, but its value cannot be overstated.
Err codemadness.org 70 i 59061
Err codemadness.org 70 i 59068Err codemadness.org 70 i 59082 Err codemadness.org 70 i 59083Although there was a lot I enjoyed, there were certainly many struggles I faced throughout the term, and lessons to be learned from them. I expect that some of issues I faced may be specific to FreeBSD, while others may be common to open-source projects in general. I don’t have enough experience to speculate on which is which, so I will leave this to the reader.
Err codemadness.org 70 i 59069 Err codemadness.org 70 i 59070The first lesson can be summed up simply: you have to advocate for your own work. FreeBSD is made up in large part by volunteer efforts, and in many cases there is more work to go around than people available to do it. A consequence of this is that there will not be anybody there to check up on you. Even in my position where I actually had a direct supervisor, Ed often had his plate full with so many other things that the responsibility to find someone to look at my work fell to me. Admittedly, a couple of smaller changes I worked on got left behind or stuck in review simply because there wasn’t a clear person/place to reach out to.
Err codemadness.org 70 i 59071 Err codemadness.org 70 i 59072I think this is both a barrier of entry to FreeBSD and a mental hurdle that I needed to get over. If there’s a change you want to see included or reviewed, then you may have to be the one to push for it, and there’s nothing wrong with that. Perhaps this process should be easier for newcomers or infrequent contributors (the disconnect between Bugzilla and Phabricator definitely leaves a lot to be desired), but we also have to be aware that this simply isn’t the reality right now. Getting your work looked at may require a little bit more self-motivation, but I’d argue that there are much worse problems a project like FreeBSD could have than this.
Err codemadness.org 70 i 59073 Err codemadness.org 70 i 59074I understand this a lot better now, but it is still something I struggle with. I’m not naturally the type of person who easily connects with others or asks for help, so I see this as an area for future growth rather than simply a struggle I encountered and overcame over the course of this work term. Certainly it is an important skill to understand the value of your own work, and equally important is the ability to communicate that value to others.
Err codemadness.org 70 i 59075 Err codemadness.org 70 i 59076I also learned the importance of starting small. My first week or two on the job mainly involved getting set up and comfortable with the workflow. After this initial stage, I began exploring the project and found myself overwhelmed by its scale. With so many possible areas to investigate, and so much work happening at once, I felt quite lost on where to begin. Many of the potential projects I found were too far beyond my experience level, and most small bugs were picked up and fixed quickly by more experienced contributors before I could even get to them.
Err codemadness.org 70 i 59077 Err codemadness.org 70 i 59078It’s easy to make the mistake that FreeBSD is made up solely of a few rock-star committers that do everything. This is how it appears at face-value, as reading through commits, bug reports, and mailing lists yields a few of the same names over and over. The reality is that just as important are the hundreds of users and infrequent contributors who take the time to submit bug reports, patches, or feedback. Even though there are some people who would fall under the umbrella of a rock-star committer, they didn’t get there overnight. Rather, they have built their skills and knowledge through many years of involvement in FreeBSD and similar projects.
Err codemadness.org 70 i 59079 Err codemadness.org 70 i 59080As a student coming into this project and having high expectations of myself, it was easy to set the bar too high by comparing myself against those big committers, and feel that my work was insignificant, inadequate, and simply too infrequent. In reality, there is no reason I should have felt this way. In a way, this comparison is disrespectful to those who have reached this level, as it took them a long time to get there, and it’s a humbling reminder that any skill worth learning requires time, patience, and dedication. It is easy to focus on an end product and simply wish to be there, but in order to be truly successful one must start small, and find satisfaction in the struggle of learning something new. I take pride in the many small successes I’ve had throughout my term here, and appreciate the fact that my journey into FreeBSD and open-source software is only just beginning.
Err codemadness.org 70 i 59081
Err codemadness.org 70 i 59088Err codemadness.org 70 i 59092 Err codemadness.org 70 i 59093I would like to close with some brief thank-you’s. First, to everyone at the Foundation for being so helpful, and allowing this position to exist in the first place. I am extremely grateful to have been given this unique opportunity to learn about and give back to the open-source world. I’d also like to thank my office mates; Ed: for being an excellent mentor, who offered an endless wealth of knowledge and willingness to share it. My classmate and fellow intern Arshan: for giving me a sense of camaraderie and the comforting reminder that at many moments he was as lost as I was. Finally, a quick thanks to everyone else I crossed paths with who offered reviews and advice. I appreciate your help and look forward to working with you all further.
Err codemadness.org 70 i 59089 Err codemadness.org 70 i 59090I am walking away from this co-op with a much greater appreciation for this project, and have made it a goal to remain involved in some capacity. I feel that I’ve gained a little bit of a wider perspective on my place in the software world, something I never really got from my previous co-ops. Whether it ends up being just a stepping stone, or the beginning of much larger involvement, I thoroughly enjoyed my time here.
Err codemadness.org 70 i 59091
DigitalOcean Err codemadness.org 70 i 59112 Digital Ocean Promo Link for BSD Now Listeners
Err codemadness.org 70 i 59113 Err codemadness.org 70 i 59114I just remind the scope of this small tool:
Err codemadness.org 70 i 59143 Err codemadness.org 70 i 59144Enhancements in this version
Err codemadness.org 70 i 59152Err codemadness.org 70 i 59155 Err codemadness.org 70 i 59156This is my second development version: 0.2. Err codemadness.org 70 i 59153 I've added performed several changes in the code:
Err codemadness.org 70 i 59154
Err codemadness.org 70 i 59163Err codemadness.org 70 i 59168 Err codemadness.org 70 i 59169The source code is still on the git of Sourceforge.net. Err codemadness.org 70 i 59164 You can see the files here
Err codemadness.org 70 i 59165 Err codemadness.org 70 i 59166And you can download the last version here
Err codemadness.org 70 i 59167
Err codemadness.org 70 i 59174Err codemadness.org 70 i 59176 Err codemadness.org 70 i 59177I'm using this script on my OpenBSD laptop since about 5 months. In my case, I'm mainly using the openbox menus and the --restart option.
Err codemadness.org 70 i 59175
Err codemadness.org 70 i 59182Err codemadness.org 70 i 59185 Err codemadness.org 70 i 59186The openbox menus are working fine. As explain in my previous blog, I just have to create 2 entries in my openbox's menu.xml file, and all the rest comes automatically from nmctl itself thanks to the --list and --scan options. Err codemadness.org 70 i 59183 I've not changed this part of nmctl since it works as expected (for me :-) ).
Err codemadness.org 70 i 59184
Err codemadness.org 70 i 59191Err codemadness.org 70 i 59198 Err codemadness.org 70 i 59199Because I'm very lazy, and because OpenBSD is very simple to use, I've added the command "nmctl --restart" in the /etc/apm/resume script. Thanks to apmd, this script will be used each time I'm opening the lid of my laptop. Err codemadness.org 70 i 59192 In other words, each time I'll opening my laptop, nmctl will search the optimum network connection for me. Err codemadness.org 70 i 59193 But I had several issues in this scenario. Err codemadness.org 70 i 59194 Most of the problems were linked to the arp table issues. Indeed, in some circumstances, my proxy IP address was associated to the cable interface instead of the wifi interface or vice-versa. As consequence I'm not able to connect to the proxy, thus not able to connect to internet. So the ping to google (final test nmctl perform) is failing. Err codemadness.org 70 i 59195 Knowing that anyhow, I'm doing a full arp cleanup, it's not clear for me from where this problem come from. To solve this situation I've implemented a "retry" concept. In other words, before testing an another possible network connection (as listed in my /etc/nmctl.conf file), the script try 3x the current connection's parameters. Err codemadness.org 70 i 59196 If you want to reduce or increase this figures, you can do it via the --retry parameter.
Err codemadness.org 70 i 59197
Err codemadness.org 70 i 59204Err codemadness.org 70 i 59209 Err codemadness.org 70 i 59210Where ever I'm located, my laptop is now connecting automatically to the wifi / cable connection previously identified for this location. Err codemadness.org 70 i 59205 Currently I have 3 places where I have Wifi credentials and 2 offices places where I just have to plug the network cable. Err codemadness.org 70 i 59206 Since the /etc/apm/resume scripts is triggered when I open the lid of the laptop, I just have to make sure that I plug the RJ45 before opening the laptop. For the rest, I do not have to type any commands, OpenBSD do all what is needed ;-). Err codemadness.org 70 i 59207 I hotels or restaurants, I can just connect to the Open Wifi thanks to the openbox menu created by "nmctl --scan".
Err codemadness.org 70 i 59208
Next steps
Documentation
Err codemadness.org 70 i 59216Err codemadness.org 70 i 59220 Err codemadness.org 70 i 59221The tool is missing lot of documentation. I appreciate OpenBSD for his great documentation, so I have to do the same. Err codemadness.org 70 i 59217 I plan to write a README and a man page at first instances. Err codemadness.org 70 i 59218 But since my laziness, I will do it as soon as I see some interest for this tool from other persons.
Err codemadness.org 70 i 59219
Err codemadness.org 70 i 59226Err codemadness.org 70 i 59230 Err codemadness.org 70 i 59231I now have to travel and see how to see the script react on the different situations. Err codemadness.org 70 i 59227 Interested persons are welcome to share with me the outcome of their tests. Err codemadness.org 70 i 59228 I'm curious how it work.
Err codemadness.org 70 i 59229
Err codemadness.org 70 i 59240Err codemadness.org 70 i 59243 Err codemadness.org 70 i 59244OpenBSD 6.3 oceton upgrade instructions may not factor that your ERL is running from the USB key they want wiped with the miniroot63.fs image loaded on. Err codemadness.org 70 i 59241 Place the bsd.rd for OpenBSD 6.3 on the sd0i slice used by U-Boot for the kernel, and then edit the boot command to run it.
Err codemadness.org 70 i 59242
Err codemadness.org 70 i 59249Err codemadness.org 70 i 59254 Err codemadness.org 70 i 59255The OpenBSD documentation is comprehensive, but there might be rough corners around what are probably edge cases in their user base. People running EdgeRouter Lite hardware for example, who are looking to upgrade from 6.2 to 6.3. Err codemadness.org 70 i 59250 The documentation, which gave us everything we needed last time, left me with some questions about how to upgrade. In INSTALL.octeon, the Upgrading section does mention: Err codemadness.org 70 i 59251 The best solution, whenever possible, is to backup your data and reinstall from scratch Err codemadness.org 70 i 59252 I had to check if that directive existed in the documentation for other architectures. I wondered if oceton users were getting singled out. We were not. Just simplicity and pragmatism.
Err codemadness.org 70 i 59253
Err codemadness.org 70 i 59260Err codemadness.org 70 i 59267 Err codemadness.org 70 i 59268To upgrade OpenBSD 6.3 from a previous version, start with the general instructions in the section "Installing OpenBSD". Err codemadness.org 70 i 59261 But that section requires us to boot off of TFTP or NFS. Which I don’t want to do right now. Could also use a USB stick with the miniroot63.fs installed on it. Err codemadness.org 70 i 59262 But as the ERL only has a single USB port, we would have to remove the USB stick with the current install on it. Once we get to the Install or Upgrade prompt, there would be nothing to upgrade. Err codemadness.org 70 i 59263 Well, I guess I could use a USB hub. But the ERL’s USB port is inside the case. With all the screws in. And the tools are neatly put away. And I’d have to pull the USB hub from behind a workstation. And it’s two am. And I cleaned up the cabling in the lab this past weekend. Looks nice for once. Err codemadness.org 70 i 59264 So I don’t want to futz around with all that. Err codemadness.org 70 i 59265 There must be an almost imperceptibly easier way of doing this than setting up a TFTP server or NFS share in five minutes… Right?
Err codemadness.org 70 i 59266
iXsystems Err codemadness.org 70 i 59271 Boise Technology Show 2018 Recap
Err codemadness.org 70 i 59272 Err codemadness.org 70 i 59273Err codemadness.org 70 i 59297Err codemadness.org 70 i 59299 Err codemadness.org 70 i 59300ed is this sort of terrifying text editor. A typical interaction with ed for me in the past has gone something like this:
Err codemadness.org 70 i 59298
Err codemadness.org 70
i 59301 $ ed Err codemadness.org 70
i 59302 help Err codemadness.org 70
i 59303 ? Err codemadness.org 70
i 59304 h Err codemadness.org 70
i 59305 ? Err codemadness.org 70
i 59306 asdfasdfasdfsadf Err codemadness.org 70
i 59307 ? Err codemadness.org 70
i 59308 <close terminal in frustration> Err codemadness.org 70
i 59309
Err codemadness.org 70 i 59312Err codemadness.org 70 i 59315 Err codemadness.org 70 i 59316Basically if you do something wrong, ed will just print out a single, unhelpful, ?. So I’d basically dismissed ed as an old arcane Unix tool that had no practical use today. Err codemadness.org 70 i 59313 vi is a successor to ed, except with a visual interface instead of this ?
Err codemadness.org 70 i 59314
Err codemadness.org 70 i 59321Err codemadness.org 70 i 59325 Err codemadness.org 70 i 59326So if Ed is a terrifying thing that only prints ? at you, why am I writing a blog post about it? WELL!!!! Err codemadness.org 70 i 59322 On April 1 this year, Michael W Lucas published a new short book called Ed Mastery. I like his writing, and even though it was sort of an april fool’s joke, it was ALSO a legitimate actual real book, and so I bought it and read it to see if his claims that Ed is actually interesting were true. Err codemadness.org 70 i 59323 And it was so cool!!!! I found out:
Err codemadness.org 70 i 59324
Err codemadness.org 70 i 59333Err codemadness.org 70 i 59337 Err codemadness.org 70 i 59338All of that was a cool Unix history lesson, but did not make me want to actually use Ed in real life. But!!!
Err codemadness.org 70 i 59334 Err codemadness.org 70 i 59335The other neat thing about Ed (that did make me want to use it!) is that any Ed session corresponds to a script that you can replay! So if I know Ed, then I can use Ed basically as a way to easily apply vim-macro-like programs to my files.
Err codemadness.org 70 i 59336
Tarsnap
Err codemadness.org 70 i 59357 Err codemadness.org 70 i 59358Err codemadness.org 70 i 59591Err codemadness.org 70 i 59603 Err codemadness.org 70 i 59604A statement in the System Programming Guide of the Intel 64 and IA-32 Architectures Software Developer's Manual (SDM) was mishandled in the development of some or all operating-system kernels, resulting in unexpected behavior for #DB exceptions that are deferred by MOV SS or POP SS, as demonstrated by (for example) privilege escalation in Windows, macOS, some Xen configurations, or FreeBSD, or a Linux kernel crash. Err codemadness.org 70 i 59592 OS kernels may not expect this order of events and may therefore experience unexpected behavior when it occurs. Err codemadness.org 70 i 59593 + A detailed white paper describes this behavior here Err codemadness.org 70 i 59594 + FreeBSD Commit Err codemadness.org 70 i 59595 Thank you to the MSRC Incident Response Team, and in particular Greg Lenti and Nate Warfield, for coordinating the response to this issue across multiple vendors. Err codemadness.org 70 i 59596 Thanks to Computer Recycling at The Working Center of Kitchener for making hardware available to allow us to test the patch on additional CPU families. Err codemadness.org 70 i 59597 + FreeBSD Security Advisory Err codemadness.org 70 i 59598 + DragonFlyBSD Post Err codemadness.org 70 i 59599 + NetBSD does not support debug register and so is not affected. Err codemadness.org 70 i 59600 + OpenBSD also appears to not be affected, “We are not aware of further vendor information regarding this vulnerability.” Err codemadness.org 70 i 59601 + IllumOS Not Impacted
Err codemadness.org 70 i 59602
Err codemadness.org 70 i 59613 At this year’s AsiaBSDCon, I presented a talk about a SDN network emulator called Mininet, and my ongoing work to make it more portable. That presentation was focused on the OpenBSD version of the port, and I breezed past the detail that I also had a version or Mininet working on FreeBSD. Because I was given the opportunity, I’d like to share a bit about the FreeBSD version of Mininet. It will not only be about what Mininet is and why it might be interesting, but also a recounting of my experience as a user making a first-time attempt at porting an application to FreeBSD. Err codemadness.org 70 i 59614 Mininet started off as a tool used by academic researchers to emulate OpenFlow networks when they didn’t have convenient access to actual networks. Because of its history, Mininet became associated strongly with networks that use OpenFlow for their control channels. But, it has also become fairly popular among developers working in, and among several universities for research and teaching about, SDN (Software Defined Networking) Err codemadness.org 70 i 59615 I began using Mininet as an intern at my university’s network research lab. I was using FreeBSD by that time, and wasn’t too happy to learn that Mininet wouldn’t work on anything but Linux. I gradually got tired of having to run a Linux VM just to use Mininet, and one day it clicked in my mind that I can actually try porting it to FreeBSD. Err codemadness.org 70 i 59616 Mininet creates a topology using the resource virtualization features that Linux has. Specifically, nodes are bash processes running in network namespaces, and the nodes are interconnected using veth virtual Ethernet links. Switches and controllers are just nodes whose shells have run the right commands to configure a software switch or start a controller application. Mininet can therefore be viewed as a series of Python libraries that run the system commands necessary to create network namespaces and veth interfaces, assemble a specified topology, and coordinate how user commands aimed at nodes (since they are just shells) are run. Err codemadness.org 70 i 59617 Coming back to the port, I chose to use vnet jails to replace the network namespaces, and epair(4) links to replace the veth links. For the SDN functionality, I needed at least one switch and controller that can be run on FreeBSD. I chose OpenvSwitch(OVS) for the switch, since it was available in ports and is well-known by the SDN world, and Ryu for the controller since it’s being actively developed and used and supports more recent versions of OpenFlow. Err codemadness.org 70 i 59618 I have discussed the possibility of upstreaming my work. Although they were excited about it, I was asked about a script for creating VMs with Mininet preinstalled, and continuous integration support for my fork of the repository. I started taking a look at the release scripts for creating a VM, and after seeing that it would be much easier to use the scripts if I can get Mininet and Ryu added to the ports tree, I also tried a hand at submitting some ports. For CI support, Mininet uses Travis, which unfortunately doesn’t support FreeBSD. For this, I plan to look at a minimalistic CI tool called contbuild, which looks simple enough to get running and is written portably. Err codemadness.org 70 i 59619 This is very much a work-in-progress, and one going at a glacial pace. Even though the company that I work for does use Mininet, but doesn’t use FreeBSD, so this is something that I’ve been working on in my free time. Earlier on, it was the learning curve that made progress slow. When I started, I hadn’t done anything more than run FreeBSD on a laptop, and uneventfully build a few applications from the ports tree. Right off the bat, using vnet jails meant learning how to build and run a custom kernel. This was the easy part, as the handbook was clear about how to do this. When I moved from using FreeBSD 10.3 to 11, I found that I can panic my machine by quickly creating and destroying OVS switches and jails. I submitted a bug report, but decided to go one step further and actually try to debug the panic for myself. With the help of a few people well-versed in systems programming and the developer’s handbook, I was able to come up with a fix, and get it accepted. This pretty much brings my porting experiment to the present day, where I’m slowly working out the pieces that I mentioned earlier. Err codemadness.org 70 i 59620 In the beginning, I thought that this Mininet port would be a weekend project where I come out knowing thing or two about using vnet jails and with one less VM to run. Instead, it became a crash course in building and debugging kernels and submitting bug reports, patches, and ports. It’d like to mention that I wouldn’t have gotten far at all if it weren’t for the helpful folks, the documentation, and how debuggable FreeBSD is. I enjoy good challenges and learning experiences, and this has definitely been both.
``` Err codemadness.org 70 i 59663 Monthly paypal donations from the OpenBSD community have made the community the OpenBSD Foundation's first Gold level contributor for 2018!
Err codemadness.org 70 i 59664 Err codemadness.org 70 i 596652018 is the third consecutive year that the community has reached Gold status or better.
Err codemadness.org 70 i 59666 Err codemadness.org 70 i 59667These monthly paypal commitments by the community are our most reliable source of funds and thus the most useful for financial planning purposes. We are extremely thankful for the continuing support and hope the community matches their 2017 achievement of Platinum status. Or even their 2016 achievement of Iridium status.
Err codemadness.org 70 i 59668 Err codemadness.org 70 i 59669Sign up now for a monthly donation!
Err codemadness.org 70 i 59670 Err codemadness.org 70 i 59671Note that Bitcoin contributions have been re-enabled now that our Bitcoin intermediary has re-certified our Canadian paperwork.
Err codemadness.org 70 i 59672 Err codemadness.org 70 i 59673https://www.openbsdfoundation.org/donations.html Err codemadness.org 70 i 59674 ```
Err codemadness.org 70 i 59675 Err codemadness.org 70 i 59676Err codemadness.org 70 i 59681Err codemadness.org 70 i 59695 Err codemadness.org 70 i 59696In some circles on the Internet, your choice of text editor is a serious matter.
Err codemadness.org 70 i 59682 Err codemadness.org 70 i 59683We've all seen the threads on mailing lits, USENET news groups and web forums about the relative merits of Emacs vs vi, including endless iterations of flame wars, and sometimes even involving lesser known or non-portable editing environments.
Err codemadness.org 70 i 59684 Err codemadness.org 70 i 59685And then of course, from the Linux newbies we have seen an endless stream of tweeted graphical 'memes' about the editor vim (aka 'vi Improved') versus the various apparently friendlier-to-some options such as GNU nano. Apparently even the 'improved' version of the classical and ubiquitous vi(1) editor is a challenge even to exit for a significant subset of the younger generation.
Err codemadness.org 70 i 59686 Err codemadness.org 70 i 59687Yes, your choice of text editor or editing environment is a serious matter. Mainly because text processing is so fundamental to our interactions with computers.
Err codemadness.org 70 i 59688 Err codemadness.org 70 i 59689But for those of us who keep our systems on a real Unix (such as OpenBSD or FreeBSD), there is no real contest. The OpenBSD base system contains several text editors including vi(1) and the almost-emacs mg(1), but ed(1) remains the standard editor.
Err codemadness.org 70 i 59690 Err codemadness.org 70 i 59691Now Michael Lucas has written a book to guide the as yet uninitiated to the fundamentals of the original Unix text editor. It is worth keeping in mind that much of Unix and its original standard text editor written back when the standard output and default user interface was more likely than not a printing terminal.
Err codemadness.org 70 i 59692 Err codemadness.org 70 i 59693To some of us, reading and following the narrative of Ed Mastery is a trip down memory lane. To others, following along the text will illustrate the horror of the world of pre-graphic computer interfaces. For others again, the fact that ed(1) doesn't use your terminal settings much at all offers hope of fixing things when something or somebody screwed up your system so you don't have a working terminal for that visual editor.
Err codemadness.org 70 i 59694
DigitalOcean Err codemadness.org 70 i 59699 Digital Ocean Promo Link for BSD Now Listeners
Err codemadness.org 70 i 59700 Err codemadness.org 70 i 59701Err codemadness.org 70 i 59706Err codemadness.org 70 i 59708 Err codemadness.org 70 i 59709Free and open source distributed object storage server compatible with Amazon S3 v2/v4 API. Offers data protection against hardware failures using erasure code and bitrot detection. Supports highly available distributed setup. Provides confidentiality, integrity and authenticity assurances for encrypted data with negligible performance overhead. Both server side and client side encryption are supported. Below is the image of example Minio setup.
Err codemadness.org 70 i 59707
The Minio identifies itself as the ZFS of Cloud Object Storage. This guide will show You how to setup highly available distributed Minio storage on the FreeBSD operating system with ZFS as backend for Minio data. For convenience we will use FreeBSD Jails operating system level virtualization.
Err codemadness.org 70 i 59714 Err codemadness.org 70 i 59715Err codemadness.org 70 i 59720Err codemadness.org 70 i 59722 Err codemadness.org 70 i 59723The setup will assume that You have 3 datacenters and assumption that you have two datacenters in whose the most of the data must reside and that the third datacenter is used as a ‘quorum/witness’ role. Distributed Minio supports up to 16 nodes/drives total, so we may juggle with that number to balance data between desired datacenters. As we have 16 drives to allocate resources on 3 sites we will use 7 + 7 + 2 approach here. The datacenters where most of the data must reside have 7/16 ratio while the ‘quorum/witness’ datacenter have only 2/16 ratio. Thanks to built in Minio redundancy we may loose (turn off for example) any one of those machines and our object storage will still be available and ready to use for any purpose.
Err codemadness.org 70 i 59721
Err codemadness.org 70 i 59728Err codemadness.org 70 i 59730 Err codemadness.org 70 i 59731First we will create 3 jails for our proof of concept Minio setup, storage1 will have the ‘quorum/witness’ role while storage2 and storage3 will have the ‘data’ role. To distinguish commands I type on the host system and storageX Jail I use two different prompts, this way it should be obvious what command to execute and where.
Err codemadness.org 70 i 59729
Err codemadness.org 70 i 59740Err codemadness.org 70 i 59742 Err codemadness.org 70 i 59743Let's set the record straight for securing kcgi CGI and FastCGI applications with pledge(2). This is focussed on secure OpenBSD deployments.
Err codemadness.org 70 i 59741
Err codemadness.org 70 i 59748Err codemadness.org 70 i 59754 Err codemadness.org 70 i 59755Internally, kcgi makes considerable use of available security tools. But it's also designed to be invoked in a secure environment. We'll start with pledge(2), which has been around on OpenBSD since version 5.9. If you're reading this tutorial, you're probably on OpenBSD, and you probably have knowledge of pledge(2).
Err codemadness.org 70 i 59749 Err codemadness.org 70 i 59750How to begin? Read kcgi(3). It includes canonical information on which pledge(2) promises you'll need for each function in the library. This is just a tutorial—the manpage is canonical and overrides what you may read here.
Err codemadness.org 70 i 59751 Err codemadness.org 70 i 59752Next, assess the promises that your application needs. From kcgi(3), it's easy to see which promises we'll need to start. You'll need to augment this list with whichever tools you're also using. The general push is to start with the broadest set of required promises, then restrict as quickly as possible. Sometimes this can be done in a single pledge(2), but other times it takes a few.
Err codemadness.org 70 i 59753
Err codemadness.org 70 i 59794Err codemadness.org 70 i 59806 Err codemadness.org 70 i 59807A statement in the System Programming Guide of the Intel 64 and IA-32 Architectures Software Developer's Manual (SDM) was mishandled in the development of some or all operating-system kernels, resulting in unexpected behavior for #DB exceptions that are deferred by MOV SS or POP SS, as demonstrated by (for example) privilege escalation in Windows, macOS, some Xen configurations, or FreeBSD, or a Linux kernel crash. Err codemadness.org 70 i 59795 OS kernels may not expect this order of events and may therefore experience unexpected behavior when it occurs. Err codemadness.org 70 i 59796 + A detailed white paper describes this behavior here Err codemadness.org 70 i 59797 + FreeBSD Commit Err codemadness.org 70 i 59798 Thank you to the MSRC Incident Response Team, and in particular Greg Lenti and Nate Warfield, for coordinating the response to this issue across multiple vendors. Err codemadness.org 70 i 59799 Thanks to Computer Recycling at The Working Center of Kitchener for making hardware available to allow us to test the patch on additional CPU families. Err codemadness.org 70 i 59800 + FreeBSD Security Advisory Err codemadness.org 70 i 59801 + DragonFlyBSD Post Err codemadness.org 70 i 59802 + NetBSD does not support debug register and so is not affected. Err codemadness.org 70 i 59803 + OpenBSD also appears to not be affected, “We are not aware of further vendor information regarding this vulnerability.” Err codemadness.org 70 i 59804 + IllumOS Not Impacted
Err codemadness.org 70 i 59805
Err codemadness.org 70 i 59816 At this year’s AsiaBSDCon, I presented a talk about a SDN network emulator called Mininet, and my ongoing work to make it more portable. That presentation was focused on the OpenBSD version of the port, and I breezed past the detail that I also had a version or Mininet working on FreeBSD. Because I was given the opportunity, I’d like to share a bit about the FreeBSD version of Mininet. It will not only be about what Mininet is and why it might be interesting, but also a recounting of my experience as a user making a first-time attempt at porting an application to FreeBSD. Err codemadness.org 70 i 59817 Mininet started off as a tool used by academic researchers to emulate OpenFlow networks when they didn’t have convenient access to actual networks. Because of its history, Mininet became associated strongly with networks that use OpenFlow for their control channels. But, it has also become fairly popular among developers working in, and among several universities for research and teaching about, SDN (Software Defined Networking) Err codemadness.org 70 i 59818 I began using Mininet as an intern at my university’s network research lab. I was using FreeBSD by that time, and wasn’t too happy to learn that Mininet wouldn’t work on anything but Linux. I gradually got tired of having to run a Linux VM just to use Mininet, and one day it clicked in my mind that I can actually try porting it to FreeBSD. Err codemadness.org 70 i 59819 Mininet creates a topology using the resource virtualization features that Linux has. Specifically, nodes are bash processes running in network namespaces, and the nodes are interconnected using veth virtual Ethernet links. Switches and controllers are just nodes whose shells have run the right commands to configure a software switch or start a controller application. Mininet can therefore be viewed as a series of Python libraries that run the system commands necessary to create network namespaces and veth interfaces, assemble a specified topology, and coordinate how user commands aimed at nodes (since they are just shells) are run. Err codemadness.org 70 i 59820 Coming back to the port, I chose to use vnet jails to replace the network namespaces, and epair(4) links to replace the veth links. For the SDN functionality, I needed at least one switch and controller that can be run on FreeBSD. I chose OpenvSwitch(OVS) for the switch, since it was available in ports and is well-known by the SDN world, and Ryu for the controller since it’s being actively developed and used and supports more recent versions of OpenFlow. Err codemadness.org 70 i 59821 I have discussed the possibility of upstreaming my work. Although they were excited about it, I was asked about a script for creating VMs with Mininet preinstalled, and continuous integration support for my fork of the repository. I started taking a look at the release scripts for creating a VM, and after seeing that it would be much easier to use the scripts if I can get Mininet and Ryu added to the ports tree, I also tried a hand at submitting some ports. For CI support, Mininet uses Travis, which unfortunately doesn’t support FreeBSD. For this, I plan to look at a minimalistic CI tool called contbuild, which looks simple enough to get running and is written portably. Err codemadness.org 70 i 59822 This is very much a work-in-progress, and one going at a glacial pace. Even though the company that I work for does use Mininet, but doesn’t use FreeBSD, so this is something that I’ve been working on in my free time. Earlier on, it was the learning curve that made progress slow. When I started, I hadn’t done anything more than run FreeBSD on a laptop, and uneventfully build a few applications from the ports tree. Right off the bat, using vnet jails meant learning how to build and run a custom kernel. This was the easy part, as the handbook was clear about how to do this. When I moved from using FreeBSD 10.3 to 11, I found that I can panic my machine by quickly creating and destroying OVS switches and jails. I submitted a bug report, but decided to go one step further and actually try to debug the panic for myself. With the help of a few people well-versed in systems programming and the developer’s handbook, I was able to come up with a fix, and get it accepted. This pretty much brings my porting experiment to the present day, where I’m slowly working out the pieces that I mentioned earlier. Err codemadness.org 70 i 59823 In the beginning, I thought that this Mininet port would be a weekend project where I come out knowing thing or two about using vnet jails and with one less VM to run. Instead, it became a crash course in building and debugging kernels and submitting bug reports, patches, and ports. It’d like to mention that I wouldn’t have gotten far at all if it weren’t for the helpful folks, the documentation, and how debuggable FreeBSD is. I enjoy good challenges and learning experiences, and this has definitely been both.
``` Err codemadness.org 70 i 59866 Monthly paypal donations from the OpenBSD community have made the community the OpenBSD Foundation's first Gold level contributor for 2018!
Err codemadness.org 70 i 59867 Err codemadness.org 70 i 598682018 is the third consecutive year that the community has reached Gold status or better.
Err codemadness.org 70 i 59869 Err codemadness.org 70 i 59870These monthly paypal commitments by the community are our most reliable source of funds and thus the most useful for financial planning purposes. We are extremely thankful for the continuing support and hope the community matches their 2017 achievement of Platinum status. Or even their 2016 achievement of Iridium status.
Err codemadness.org 70 i 59871 Err codemadness.org 70 i 59872Sign up now for a monthly donation!
Err codemadness.org 70 i 59873 Err codemadness.org 70 i 59874Note that Bitcoin contributions have been re-enabled now that our Bitcoin intermediary has re-certified our Canadian paperwork.
Err codemadness.org 70 i 59875 Err codemadness.org 70 i 59876https://www.openbsdfoundation.org/donations.html Err codemadness.org 70 i 59877 ```
Err codemadness.org 70 i 59878 Err codemadness.org 70 i 59879Err codemadness.org 70 i 59884Err codemadness.org 70 i 59898 Err codemadness.org 70 i 59899In some circles on the Internet, your choice of text editor is a serious matter.
Err codemadness.org 70 i 59885 Err codemadness.org 70 i 59886We've all seen the threads on mailing lits, USENET news groups and web forums about the relative merits of Emacs vs vi, including endless iterations of flame wars, and sometimes even involving lesser known or non-portable editing environments.
Err codemadness.org 70 i 59887 Err codemadness.org 70 i 59888And then of course, from the Linux newbies we have seen an endless stream of tweeted graphical 'memes' about the editor vim (aka 'vi Improved') versus the various apparently friendlier-to-some options such as GNU nano. Apparently even the 'improved' version of the classical and ubiquitous vi(1) editor is a challenge even to exit for a significant subset of the younger generation.
Err codemadness.org 70 i 59889 Err codemadness.org 70 i 59890Yes, your choice of text editor or editing environment is a serious matter. Mainly because text processing is so fundamental to our interactions with computers.
Err codemadness.org 70 i 59891 Err codemadness.org 70 i 59892But for those of us who keep our systems on a real Unix (such as OpenBSD or FreeBSD), there is no real contest. The OpenBSD base system contains several text editors including vi(1) and the almost-emacs mg(1), but ed(1) remains the standard editor.
Err codemadness.org 70 i 59893 Err codemadness.org 70 i 59894Now Michael Lucas has written a book to guide the as yet uninitiated to the fundamentals of the original Unix text editor. It is worth keeping in mind that much of Unix and its original standard text editor written back when the standard output and default user interface was more likely than not a printing terminal.
Err codemadness.org 70 i 59895 Err codemadness.org 70 i 59896To some of us, reading and following the narrative of Ed Mastery is a trip down memory lane. To others, following along the text will illustrate the horror of the world of pre-graphic computer interfaces. For others again, the fact that ed(1) doesn't use your terminal settings much at all offers hope of fixing things when something or somebody screwed up your system so you don't have a working terminal for that visual editor.
Err codemadness.org 70 i 59897
DigitalOcean Err codemadness.org 70 i 59902 Digital Ocean Promo Link for BSD Now Listeners
Err codemadness.org 70 i 59903 Err codemadness.org 70 i 59904Err codemadness.org 70 i 59909Err codemadness.org 70 i 59911 Err codemadness.org 70 i 59912Free and open source distributed object storage server compatible with Amazon S3 v2/v4 API. Offers data protection against hardware failures using erasure code and bitrot detection. Supports highly available distributed setup. Provides confidentiality, integrity and authenticity assurances for encrypted data with negligible performance overhead. Both server side and client side encryption are supported. Below is the image of example Minio setup.
Err codemadness.org 70 i 59910
The Minio identifies itself as the ZFS of Cloud Object Storage. This guide will show You how to setup highly available distributed Minio storage on the FreeBSD operating system with ZFS as backend for Minio data. For convenience we will use FreeBSD Jails operating system level virtualization.
Err codemadness.org 70 i 59917 Err codemadness.org 70 i 59918Err codemadness.org 70 i 59923Err codemadness.org 70 i 59925 Err codemadness.org 70 i 59926The setup will assume that You have 3 datacenters and assumption that you have two datacenters in whose the most of the data must reside and that the third datacenter is used as a ‘quorum/witness’ role. Distributed Minio supports up to 16 nodes/drives total, so we may juggle with that number to balance data between desired datacenters. As we have 16 drives to allocate resources on 3 sites we will use 7 + 7 + 2 approach here. The datacenters where most of the data must reside have 7/16 ratio while the ‘quorum/witness’ datacenter have only 2/16 ratio. Thanks to built in Minio redundancy we may loose (turn off for example) any one of those machines and our object storage will still be available and ready to use for any purpose.
Err codemadness.org 70 i 59924
Err codemadness.org 70 i 59931Err codemadness.org 70 i 59933 Err codemadness.org 70 i 59934First we will create 3 jails for our proof of concept Minio setup, storage1 will have the ‘quorum/witness’ role while storage2 and storage3 will have the ‘data’ role. To distinguish commands I type on the host system and storageX Jail I use two different prompts, this way it should be obvious what command to execute and where.
Err codemadness.org 70 i 59932
Err codemadness.org 70 i 59943Err codemadness.org 70 i 59945 Err codemadness.org 70 i 59946Let's set the record straight for securing kcgi CGI and FastCGI applications with pledge(2). This is focussed on secure OpenBSD deployments.
Err codemadness.org 70 i 59944
Err codemadness.org 70 i 59951Err codemadness.org 70 i 59957 Err codemadness.org 70 i 59958Internally, kcgi makes considerable use of available security tools. But it's also designed to be invoked in a secure environment. We'll start with pledge(2), which has been around on OpenBSD since version 5.9. If you're reading this tutorial, you're probably on OpenBSD, and you probably have knowledge of pledge(2).
Err codemadness.org 70 i 59952 Err codemadness.org 70 i 59953How to begin? Read kcgi(3). It includes canonical information on which pledge(2) promises you'll need for each function in the library. This is just a tutorial—the manpage is canonical and overrides what you may read here.
Err codemadness.org 70 i 59954 Err codemadness.org 70 i 59955Next, assess the promises that your application needs. From kcgi(3), it's easy to see which promises we'll need to start. You'll need to augment this list with whichever tools you're also using. The general push is to start with the broadest set of required promises, then restrict as quickly as possible. Sometimes this can be done in a single pledge(2), but other times it takes a few.
Err codemadness.org 70 i 59956
Err codemadness.org 70 i 60354Err codemadness.org 70 i 60360 Err codemadness.org 70 i 60361I had been using FreeBSD as my main web server OS since 2012 and I liked it so much that I even contributed money and code to it. However, since the FreeBSD guys (and gals) decided to install anti-tech feminism, I have been considering to move away from it for quite some time now.
Err codemadness.org 70 i 60355 Err codemadness.org 70 i 60356As my growing needs require stronger hardware, it was finally time to rent a new server. I do not intend to run FreeBSD on it. Although the most obvious choice would be OpenBSD (I run it on another server and it works just fine), I plan to have a couple of databases running on the new machine, and database throughput has never been one of OpenBSD's strong points. This is my chance to give illumos another try. As neither WiFi nor desktop environments are relevant on a no-X11 server, the server-focused OmniOS seemed to fit my needs.
Err codemadness.org 70 i 60357 Err codemadness.org 70 i 60358My current (to be phased out) setup on FreeBSD is:
Err codemadness.org 70 i 60359
Err codemadness.org 70 i 60371Err codemadness.org 70 i 60375 Err codemadness.org 70 i 60376I would not consider anything of that too esoteric for a modern operating system. Since I was not really using anything mod_rewrite-related, I was perfectly ready to replace apache24 by nginx, remembering that the prepackaged apache24 on FreeBSD did not support HTTPS out of the box and I had ended up installing it from the ports. That is the only change in my setup which I am actively planning.
Err codemadness.org 70 i 60372 Err codemadness.org 70 i 60373So here's what I noticed.
Err codemadness.org 70 i 60374
Err codemadness.org 70 i 60381Err codemadness.org 70 i 60385 Err codemadness.org 70 i 60386Hooray, a BSD boot loader! Finally an operating system without grub - I made my experiences with that and I don't want to repeat them too often.
Err codemadness.org 70 i 60382 Err codemadness.org 70 i 60383It is weird that the installer won't accept "mydomain.org" as a hostname but sendmail complains that "mydomain" is not a valid hostname right from the start, OmniOS sent me into Maintenance Mode to fix that. A good start, right? So the first completely new thing I had to find out on my new shiny toy was how to change the hostname. There is no /etc/rc.conf in it and hostname mydomain.org was only valid for one login session. I found out that the hostname has to be changed in three different files under /etc on Solaris - the third one did not even exist for me. Changing the other two files seems to have solved this problem for me.
Err codemadness.org 70 i 60384
Err codemadness.org 70 i 60391Err codemadness.org 70 i 60405 Err codemadness.org 70 i 60406~ I was wondering how many resources my (mostly idle) new web server was using - I always thought Solaris was rather fat, but it still felt fast to me.
Err codemadness.org 70 i 60392 Err codemadness.org 70 i 60393Ah, right - we're in Unixland and we need to think outside of the box. This table was really helpful: although a number of things are different between OmniOS and SmartOS, I found out that the *stat tools do what top does. I could probably just install top from one of the package managers, but I failed to find a reason to do so. I had 99% idle CPU and RAM - that's all I wanted to know.
Err codemadness.org 70 i 60394 Err codemadness.org 70 i 60395~ Trying to set up twtxt informed me that Python 3.6 (from pkgin) expects LANG and LC_ALL to be set. Weird - did FreeBSD do that for me? It's been a while ... at least that was easy to fix.
Err codemadness.org 70 i 60396 Err codemadness.org 70 i 60397~ SMF - Solaris's version of init - confuses me. It has "levels" similar to Gentoo's OpenRC, but it mostly shuts up during the boot process. Stuff from pkgsrc, e.g. nginx, comes with a description how to set up the particular service, but I should probably read more about it. What if, one day, I install a package which is not made ready for OmniOS? I'll have to find out how to write SMF scripts. But that should not be my highest priority.
Err codemadness.org 70 i 60398 Err codemadness.org 70 i 60399~ The OmniOS documentation talks a lot about "zones" which, if I understand that correctly, mostly equal FreeBSD's "jails". This could be my chance to try to respect a better separation between my various services - if my lazyness won't take over again. (It probably will.)
Err codemadness.org 70 i 60400 Err codemadness.org 70 i 60401~ OmniOS's default shell - rather un-unixy - seems to be the bash. Update: I was informed about a mistake here: the default shell is ksh93, there are bogus .bashrc files lying around though.
Err codemadness.org 70 i 60402 Err codemadness.org 70 i 60403~ Somewhere in between, my sshd had a hiccup or, at least, logging into it took longer than usual. If that happens again, I should investigate.
Err codemadness.org 70 i 60404
Err codemadness.org 70 i 60411Err codemadness.org 70 i 60415 Err codemadness.org 70 i 60416By the time of me writing this, I have a basic web server with an awesome performance and a lot of applications ready to be configured only one click away. The more I play with it, the more I have the feeling that I have missed a lot while wasting my time with FreeBSD. For a system that is said to be "dying", OmniOS feels well-thought and, when equipped with a reasonable package management, comes with everything I need to reproduce my FreeBSD setup without losing functionality.
Err codemadness.org 70 i 60412 Err codemadness.org 70 i 60413I'm looking forward to what will happen with it.
Err codemadness.org 70 i 60414
DigitalOcean Err codemadness.org 70 i 60419 http://do.co/bsdnow
Err codemadness.org 70 i 60420 Err codemadness.org 70 i 60421(includes 'Open-source RISC-V core quickstart' and 'An introductory workshop to NetBSD on embedded platforms')](http://oshug.org/pipermail/oshug/2018-April/000635.html)
Err codemadness.org 70 i 60424 Err codemadness.org 70 i 60425``` Err codemadness.org 70 i 60426 Hi All,
Err codemadness.org 70 i 60427 Err codemadness.org 70 i 60428I'm pleased to announce that we have 10 talks and 7 workshops confirmed Err codemadness.org 70 i 60429 for Open Source Hardware Camp 2018, with the possibility of one or two Err codemadness.org 70 i 60430 more. Registration is now open!
Err codemadness.org 70 i 60431 Err codemadness.org 70 i 60432For the first time ever we will be hosting OSHCamp in Lincoln and a huge Err codemadness.org 70 i 60433 thanks to Sarah Markall for helping to make this happen.
Err codemadness.org 70 i 60434 Err codemadness.org 70 i 60435As in previous years, there will be a social event on the Saturday Err codemadness.org 70 i 60436 evening and we have a room booked at the Wig and Mitre. Food will be Err codemadness.org 70 i 60437 available.
Err codemadness.org 70 i 60438 Err codemadness.org 70 i 60439There will likely be a few of us meeting up for pre-conference drinks on Err codemadness.org 70 i 60440 the Friday evening also.
Err codemadness.org 70 i 60441 Err codemadness.org 70 i 60442Details of the programme can be found below and, as ever, we have an Err codemadness.org 70 i 60443 excellent mix of topics being covered.
Err codemadness.org 70 i 60444 Err codemadness.org 70 i 60445Cheers,
Err codemadness.org 70 i 60446 Err codemadness.org 70 i 60447Andrew Err codemadness.org 70 i 60448 ```
Err codemadness.org 70 i 60449 Err codemadness.org 70 i 60450Err codemadness.org 70 i 60455Err codemadness.org 70 i 60458 Err codemadness.org 70 i 60459On the 30th June 2018, 09:00 Saturday morning - 16:00 on the Sunday Err codemadness.org 70 i 60456 afternoon at The Blue Room, The Lawn, Union Rd, Lincoln, LN1 3BU.
Err codemadness.org 70 i 60457
Err codemadness.org 70 i 60478Err codemadness.org 70 i 60482 Err codemadness.org 70 i 60483Today I would like to share a setup of Nextcloud 13 running on a FreeBSD system. To make things more interesting it would be running inside a FreeBSD Jail. I will not describe the Nextcloud setup itself here as its large enough for several blog posts.
Err codemadness.org 70 i 60479 Err codemadness.org 70 i 60480Official Nextcloud 13 documentation recommends following setup:
Err codemadness.org 70 i 60481
Err codemadness.org 70 i 60490Err codemadness.org 70 i 60492 Err codemadness.org 70 i 60493I prefer PostgreSQL database to MySQL/MariaDB and I prefer fast and lean Nginx web server to Apache, so my setup is based on these components:
Err codemadness.org 70 i 60491
Err codemadness.org 70 i 60501Err codemadness.org 70 i 60503 Err codemadness.org 70 i 60504The Memcached subsystem is least important, it can be easily changed into something more modern like Redis for example. I prefer not to use any third party tools for FreeBSD Jails management. Not because they are bad or something like that. There are just many choices for good FreeBSD Jails management and I want to provide a GENERIC example for Nextcloud 13 in a Jail, not for a specific management tool.
Err codemadness.org 70 i 60502
Err codemadness.org 70 i 60509Err codemadness.org 70 i 60511 Err codemadness.org 70 i 60512Lets start with preparing the FreeBSD Host with needed settings. We need to allow using raw sockets in Jails. For the future optional upgrades of the Jail we will also allow using chflags(1) in Jails.
Err codemadness.org 70 i 60510
Err codemadness.org 70 i 60517Err codemadness.org 70 i 60523 Err codemadness.org 70 i 60524You asked me about my setup. Here you go.
Err codemadness.org 70 i 60518 Err codemadness.org 70 i 60519I’ve been using OpenBSD on servers for years as a web developer, but never had a chance to dive in to system administration before. If you appreciate the simplicity of OpenBSD and you have to give it a try on your desktop.
Err codemadness.org 70 i 60520 Err codemadness.org 70 i 60521Bear in mind, this is a relatively cheap ergonomic setup, because all I need is xterm(1) with Vim and Firefox, I don’t care about CPU/GPU performance or mobility too much, but I want a large screen and a good keyboard.
Err codemadness.org 70 i 60522
Err codemadness.org 70
i 60525 Item Price, USD Err codemadness.org 70
i 60526 Zotac CI527 NANO-BE $371 Err codemadness.org 70
i 60527 16GB RAM Crucial DDR4-2133 $127 Err codemadness.org 70
i 60528 250GB SSD Samsung 850 EVO $104 Err codemadness.org 70
i 60529 Asus VZ249HE 23.8" IPS Full HD $129 Err codemadness.org 70
i 60530 ErgoDox EZ V3, Cherry MX Brown, blank DCS $325 Err codemadness.org 70
i 60531 Kensington Orbit Trackball $33 Err codemadness.org 70
i 60532 Total $1,107 Err codemadness.org 70
i 60533
Err codemadness.org 70 i 60540Err codemadness.org 70 i 60544 Err codemadness.org 70 i 60545I tried few times to install OpenBSD on my MacBooks—I heard some models are compatible with it,—but in my case it was a bit of a fiasco (thanks to Nvidia and Broadcom). That’s why I bought a new computer, just to be able to run this wonderful operating system.
Err codemadness.org 70 i 60541 Err codemadness.org 70 i 60542Now I run -stable on my desktop and servers. Servers are supposed to be reliable, that’s obvious, why not run -current on a desktop? Because -stable is shipped every six months and I that’s is often enough for me. I prefer slow fashion.
Err codemadness.org 70 i 60543
iXsystems Err codemadness.org 70 i 60548 iX Ad Spot NAB 2018 – Michael Dexter’s Recap
Err codemadness.org 70 i 60549 Err codemadness.org 70 i 60550Err codemadness.org 70 i 60553Err codemadness.org 70 i 60565 Err codemadness.org 70 i 60566HardenedBSD is a security enhanced fork of FreeBSD which happened in 2014. HardenedBSD is implementing many exploit mitigation and security technologies on top of FreeBSD which all started with implementation of Address Space Layout Randomization (ASLR). The fork has been created for ease of development.
Err codemadness.org 70 i 60554 Err codemadness.org 70 i 60555To cite the https://hardenedbsd.org/content/about page – “HardenedBSD aims to implement innovative exploit mitigation and security solutions for the FreeBSD community. (…) HardenedBSD takes a holistic approach to security by hardening the system and implementing exploit mitigation technologies.”
Err codemadness.org 70 i 60556 Err codemadness.org 70 i 60557Most FreeBSD enthusiasts know mfsBSD project by Martin Matuska – http://mfsbsd.vx.sk/ – FreeBSD system loaded completely into memory. The mfsBSD synonym for the HardenedBSD world is SoloBSD – http://www.solobsd.org/ – which is based on HardenedBSD sources.
Err codemadness.org 70 i 60558 Err codemadness.org 70 i 60559One may ask how HardenedBSD project compared to more well know for its security OpenBSD system and it is very important question. The OpenBSD developers try to write ‘good’ code without dirty hacks for performance or other reasons. Clean and secure code is most important in OpenBSD world. The OpenBSD project even made security audit of all OpenBSD code available, line by line. This was easier to achieve in FreeBSD or HardenedBSD because OpenBSD code base its about ten times smaller. This has also other implications, possibilities. While FreeBSD (and HardenedBSD) offer many new features like mature SMP subsystem even with some NUMA support, ZFS filesystem, GEOM storage framework, Bhyve virtualization, Virtualbox option and many other new modern features the OpenBSD remains classic UNIX system with UFS filesystem and with very ‘theoretical’ SMP support. The vmm project tried to implement new hypervisor in OpenBSD world, but because of lack of support for graphics its for OpenBSD, Illumos and Linux currently, You will not virtualize Windows or Mac OS X there. This is also only virtualization option for OpenBSD as there are no Jails on OpenBSD. Current Bhyve implementation allows one even to boot latest Windows 2019 Technology Preview.
Err codemadness.org 70 i 60560 Err codemadness.org 70 i 60561A HardenedBSD project is FreeBSD system code base with LOTS of security mechanisms and mitigations that are not available on FreeBSD system. For example entire lib32 tree has been disabled by default on HardenedBSD to make it more secure. Also LibreSSL is the default SSL library on HardenedBSD, same as OpenBSD while FreeBSD uses OpenSSL for compatibility reasons.
Err codemadness.org 70 i 60562 Err codemadness.org 70 i 60563Comparison between LibreSSL and OpenSSL vulnerabilities.
Err codemadness.org 70 i 60564
Err codemadness.org 70 i 60572Err codemadness.org 70 i 60576 Err codemadness.org 70 i 60577One may see HardenedBSD as FreeBSD being successfully pulled up to the OpenBSD level (at least that is the goal), but as FreeBSD has tons more code and features it will be harder and longer process to achieve the goal.
Err codemadness.org 70 i 60573 Err codemadness.org 70 i 60574As I do not have that much competence on the security field I will just repost the comparison from the HardenedBSD project versus other BSD systems. The comparison is also available here – https://hardenedbsd.org/content/easy-feature-comparison – on the HardenedBSD website.
Err codemadness.org 70 i 60575
Err codemadness.org 70 i 60582Err codemadness.org 70 i 60586 Err codemadness.org 70 i 60587Note: This article is predominantly based on work by Hiltjo Posthuma who you should read because I would have spent far too much time failing to set things up if it wasn’t for their post. Not only have they written lots of very interesting posts, they write some really brilliant programs
Err codemadness.org 70 i 60583 Err codemadness.org 70 i 60584Since I started university 3 years ago, I started using lots of services from lots of different companies. The “cloud” trend led me to believe that I wanted other people to look after my data for me. I was wrong. Since finding myself loving the ethos of OpenBSD, I found myself wanting to apply this ethos to the services I use as well. Not only is it important to me because of the security benefits, but also because I like the minimalist style OpenBSD portrays. This is the first in a mini-series documenting my move from bloated, hosted, sometimes proprietary services to minimal, well-written, free, self-hosted services.
Err codemadness.org 70 i 60585
Err codemadness.org 70 i 60592Err codemadness.org 70 i 60594 Err codemadness.org 70 i 60595These are the programs I am going to be using to get my git server up and running:
Err codemadness.org 70 i 60593
Err codemadness.org 70
i 60596 httpd(8) Err codemadness.org 70
i 60597 acme-client(1) Err codemadness.org 70
i 60598 git(1) Err codemadness.org 70
i 60599 cgit(1) Err codemadness.org 70
i 60600 slowcgi(8) Err codemadness.org 70
i 60601
Err codemadness.org 70 i 60608Err codemadness.org 70 i 60610 Err codemadness.org 70 i 60611Ensure you have the necessary flags enabled in your /etc/rc.conf.local:
Err codemadness.org 70 i 60609
Err codemadness.org 70 i 60616Err codemadness.org 70 i 60620 Err codemadness.org 70 i 60621When using the OpenBSD httpd(8), it will serve it’s content in a chrooted environment,which defaults to the home directory of the user it runs as, which is www in this case. This means that the chroot is limited to the directory /var/www and it’s contents.
Err codemadness.org 70 i 60617 Err codemadness.org 70 i 60618In order to configure cgit, there must be a cgitrc file available to cgit. This is found at the location stored in $CGIT_CONFIG, which defaults to /conf/cgitrc. Because of the chroot, this file is actually stored at /var/www/conf/cgitrc.
Err codemadness.org 70 i 60619
Tarsnap ad
Err codemadness.org 70 i 60634 Err codemadness.org 70 i 60635Err codemadness.org 70 i 60681Err codemadness.org 70 i 60687 Err codemadness.org 70 i 60688I had been using FreeBSD as my main web server OS since 2012 and I liked it so much that I even contributed money and code to it. However, since the FreeBSD guys (and gals) decided to install anti-tech feminism, I have been considering to move away from it for quite some time now.
Err codemadness.org 70 i 60682 Err codemadness.org 70 i 60683As my growing needs require stronger hardware, it was finally time to rent a new server. I do not intend to run FreeBSD on it. Although the most obvious choice would be OpenBSD (I run it on another server and it works just fine), I plan to have a couple of databases running on the new machine, and database throughput has never been one of OpenBSD's strong points. This is my chance to give illumos another try. As neither WiFi nor desktop environments are relevant on a no-X11 server, the server-focused OmniOS seemed to fit my needs.
Err codemadness.org 70 i 60684 Err codemadness.org 70 i 60685My current (to be phased out) setup on FreeBSD is:
Err codemadness.org 70 i 60686
Err codemadness.org 70 i 60698Err codemadness.org 70 i 60702 Err codemadness.org 70 i 60703I would not consider anything of that too esoteric for a modern operating system. Since I was not really using anything mod_rewrite-related, I was perfectly ready to replace apache24 by nginx, remembering that the prepackaged apache24 on FreeBSD did not support HTTPS out of the box and I had ended up installing it from the ports. That is the only change in my setup which I am actively planning.
Err codemadness.org 70 i 60699 Err codemadness.org 70 i 60700So here's what I noticed.
Err codemadness.org 70 i 60701
Err codemadness.org 70 i 60708Err codemadness.org 70 i 60712 Err codemadness.org 70 i 60713Hooray, a BSD boot loader! Finally an operating system without grub - I made my experiences with that and I don't want to repeat them too often.
Err codemadness.org 70 i 60709 Err codemadness.org 70 i 60710It is weird that the installer won't accept "mydomain.org" as a hostname but sendmail complains that "mydomain" is not a valid hostname right from the start, OmniOS sent me into Maintenance Mode to fix that. A good start, right? So the first completely new thing I had to find out on my new shiny toy was how to change the hostname. There is no /etc/rc.conf in it and hostname mydomain.org was only valid for one login session. I found out that the hostname has to be changed in three different files under /etc on Solaris - the third one did not even exist for me. Changing the other two files seems to have solved this problem for me.
Err codemadness.org 70 i 60711
Err codemadness.org 70 i 60718Err codemadness.org 70 i 60732 Err codemadness.org 70 i 60733~ I was wondering how many resources my (mostly idle) new web server was using - I always thought Solaris was rather fat, but it still felt fast to me.
Err codemadness.org 70 i 60719 Err codemadness.org 70 i 60720Ah, right - we're in Unixland and we need to think outside of the box. This table was really helpful: although a number of things are different between OmniOS and SmartOS, I found out that the *stat tools do what top does. I could probably just install top from one of the package managers, but I failed to find a reason to do so. I had 99% idle CPU and RAM - that's all I wanted to know.
Err codemadness.org 70 i 60721 Err codemadness.org 70 i 60722~ Trying to set up twtxt informed me that Python 3.6 (from pkgin) expects LANG and LC_ALL to be set. Weird - did FreeBSD do that for me? It's been a while ... at least that was easy to fix.
Err codemadness.org 70 i 60723 Err codemadness.org 70 i 60724~ SMF - Solaris's version of init - confuses me. It has "levels" similar to Gentoo's OpenRC, but it mostly shuts up during the boot process. Stuff from pkgsrc, e.g. nginx, comes with a description how to set up the particular service, but I should probably read more about it. What if, one day, I install a package which is not made ready for OmniOS? I'll have to find out how to write SMF scripts. But that should not be my highest priority.
Err codemadness.org 70 i 60725 Err codemadness.org 70 i 60726~ The OmniOS documentation talks a lot about "zones" which, if I understand that correctly, mostly equal FreeBSD's "jails". This could be my chance to try to respect a better separation between my various services - if my lazyness won't take over again. (It probably will.)
Err codemadness.org 70 i 60727 Err codemadness.org 70 i 60728~ OmniOS's default shell - rather un-unixy - seems to be the bash. Update: I was informed about a mistake here: the default shell is ksh93, there are bogus .bashrc files lying around though.
Err codemadness.org 70 i 60729 Err codemadness.org 70 i 60730~ Somewhere in between, my sshd had a hiccup or, at least, logging into it took longer than usual. If that happens again, I should investigate.
Err codemadness.org 70 i 60731
Err codemadness.org 70 i 60738Err codemadness.org 70 i 60742 Err codemadness.org 70 i 60743By the time of me writing this, I have a basic web server with an awesome performance and a lot of applications ready to be configured only one click away. The more I play with it, the more I have the feeling that I have missed a lot while wasting my time with FreeBSD. For a system that is said to be "dying", OmniOS feels well-thought and, when equipped with a reasonable package management, comes with everything I need to reproduce my FreeBSD setup without losing functionality.
Err codemadness.org 70 i 60739 Err codemadness.org 70 i 60740I'm looking forward to what will happen with it.
Err codemadness.org 70 i 60741
DigitalOcean Err codemadness.org 70 i 60746 http://do.co/bsdnow
Err codemadness.org 70 i 60747 Err codemadness.org 70 i 60748(includes 'Open-source RISC-V core quickstart' and 'An introductory workshop to NetBSD on embedded platforms')](http://oshug.org/pipermail/oshug/2018-April/000635.html)
Err codemadness.org 70 i 60751 Err codemadness.org 70 i 60752``` Err codemadness.org 70 i 60753 Hi All,
Err codemadness.org 70 i 60754 Err codemadness.org 70 i 60755I'm pleased to announce that we have 10 talks and 7 workshops confirmed Err codemadness.org 70 i 60756 for Open Source Hardware Camp 2018, with the possibility of one or two Err codemadness.org 70 i 60757 more. Registration is now open!
Err codemadness.org 70 i 60758 Err codemadness.org 70 i 60759For the first time ever we will be hosting OSHCamp in Lincoln and a huge Err codemadness.org 70 i 60760 thanks to Sarah Markall for helping to make this happen.
Err codemadness.org 70 i 60761 Err codemadness.org 70 i 60762As in previous years, there will be a social event on the Saturday Err codemadness.org 70 i 60763 evening and we have a room booked at the Wig and Mitre. Food will be Err codemadness.org 70 i 60764 available.
Err codemadness.org 70 i 60765 Err codemadness.org 70 i 60766There will likely be a few of us meeting up for pre-conference drinks on Err codemadness.org 70 i 60767 the Friday evening also.
Err codemadness.org 70 i 60768 Err codemadness.org 70 i 60769Details of the programme can be found below and, as ever, we have an Err codemadness.org 70 i 60770 excellent mix of topics being covered.
Err codemadness.org 70 i 60771 Err codemadness.org 70 i 60772Cheers,
Err codemadness.org 70 i 60773 Err codemadness.org 70 i 60774Andrew Err codemadness.org 70 i 60775 ```
Err codemadness.org 70 i 60776 Err codemadness.org 70 i 60777Err codemadness.org 70 i 60782Err codemadness.org 70 i 60785 Err codemadness.org 70 i 60786On the 30th June 2018, 09:00 Saturday morning - 16:00 on the Sunday Err codemadness.org 70 i 60783 afternoon at The Blue Room, The Lawn, Union Rd, Lincoln, LN1 3BU.
Err codemadness.org 70 i 60784
Err codemadness.org 70 i 60805Err codemadness.org 70 i 60809 Err codemadness.org 70 i 60810Today I would like to share a setup of Nextcloud 13 running on a FreeBSD system. To make things more interesting it would be running inside a FreeBSD Jail. I will not describe the Nextcloud setup itself here as its large enough for several blog posts.
Err codemadness.org 70 i 60806 Err codemadness.org 70 i 60807Official Nextcloud 13 documentation recommends following setup:
Err codemadness.org 70 i 60808
Err codemadness.org 70 i 60817Err codemadness.org 70 i 60819 Err codemadness.org 70 i 60820I prefer PostgreSQL database to MySQL/MariaDB and I prefer fast and lean Nginx web server to Apache, so my setup is based on these components:
Err codemadness.org 70 i 60818
Err codemadness.org 70 i 60828Err codemadness.org 70 i 60830 Err codemadness.org 70 i 60831The Memcached subsystem is least important, it can be easily changed into something more modern like Redis for example. I prefer not to use any third party tools for FreeBSD Jails management. Not because they are bad or something like that. There are just many choices for good FreeBSD Jails management and I want to provide a GENERIC example for Nextcloud 13 in a Jail, not for a specific management tool.
Err codemadness.org 70 i 60829
Err codemadness.org 70 i 60836Err codemadness.org 70 i 60838 Err codemadness.org 70 i 60839Lets start with preparing the FreeBSD Host with needed settings. We need to allow using raw sockets in Jails. For the future optional upgrades of the Jail we will also allow using chflags(1) in Jails.
Err codemadness.org 70 i 60837
Err codemadness.org 70 i 60844Err codemadness.org 70 i 60850 Err codemadness.org 70 i 60851You asked me about my setup. Here you go.
Err codemadness.org 70 i 60845 Err codemadness.org 70 i 60846I’ve been using OpenBSD on servers for years as a web developer, but never had a chance to dive in to system administration before. If you appreciate the simplicity of OpenBSD and you have to give it a try on your desktop.
Err codemadness.org 70 i 60847 Err codemadness.org 70 i 60848Bear in mind, this is a relatively cheap ergonomic setup, because all I need is xterm(1) with Vim and Firefox, I don’t care about CPU/GPU performance or mobility too much, but I want a large screen and a good keyboard.
Err codemadness.org 70 i 60849
Err codemadness.org 70
i 60852 Item Price, USD Err codemadness.org 70
i 60853 Zotac CI527 NANO-BE $371 Err codemadness.org 70
i 60854 16GB RAM Crucial DDR4-2133 $127 Err codemadness.org 70
i 60855 250GB SSD Samsung 850 EVO $104 Err codemadness.org 70
i 60856 Asus VZ249HE 23.8" IPS Full HD $129 Err codemadness.org 70
i 60857 ErgoDox EZ V3, Cherry MX Brown, blank DCS $325 Err codemadness.org 70
i 60858 Kensington Orbit Trackball $33 Err codemadness.org 70
i 60859 Total $1,107 Err codemadness.org 70
i 60860
Err codemadness.org 70 i 60867Err codemadness.org 70 i 60871 Err codemadness.org 70 i 60872I tried few times to install OpenBSD on my MacBooks—I heard some models are compatible with it,—but in my case it was a bit of a fiasco (thanks to Nvidia and Broadcom). That’s why I bought a new computer, just to be able to run this wonderful operating system.
Err codemadness.org 70 i 60868 Err codemadness.org 70 i 60869Now I run -stable on my desktop and servers. Servers are supposed to be reliable, that’s obvious, why not run -current on a desktop? Because -stable is shipped every six months and I that’s is often enough for me. I prefer slow fashion.
Err codemadness.org 70 i 60870
iXsystems Err codemadness.org 70 i 60875 iX Ad Spot NAB 2018 – Michael Dexter’s Recap
Err codemadness.org 70 i 60876 Err codemadness.org 70 i 60877Err codemadness.org 70 i 60880Err codemadness.org 70 i 60892 Err codemadness.org 70 i 60893HardenedBSD is a security enhanced fork of FreeBSD which happened in 2014. HardenedBSD is implementing many exploit mitigation and security technologies on top of FreeBSD which all started with implementation of Address Space Layout Randomization (ASLR). The fork has been created for ease of development.
Err codemadness.org 70 i 60881 Err codemadness.org 70 i 60882To cite the https://hardenedbsd.org/content/about page – “HardenedBSD aims to implement innovative exploit mitigation and security solutions for the FreeBSD community. (…) HardenedBSD takes a holistic approach to security by hardening the system and implementing exploit mitigation technologies.”
Err codemadness.org 70 i 60883 Err codemadness.org 70 i 60884Most FreeBSD enthusiasts know mfsBSD project by Martin Matuska – http://mfsbsd.vx.sk/ – FreeBSD system loaded completely into memory. The mfsBSD synonym for the HardenedBSD world is SoloBSD – http://www.solobsd.org/ – which is based on HardenedBSD sources.
Err codemadness.org 70 i 60885 Err codemadness.org 70 i 60886One may ask how HardenedBSD project compared to more well know for its security OpenBSD system and it is very important question. The OpenBSD developers try to write ‘good’ code without dirty hacks for performance or other reasons. Clean and secure code is most important in OpenBSD world. The OpenBSD project even made security audit of all OpenBSD code available, line by line. This was easier to achieve in FreeBSD or HardenedBSD because OpenBSD code base its about ten times smaller. This has also other implications, possibilities. While FreeBSD (and HardenedBSD) offer many new features like mature SMP subsystem even with some NUMA support, ZFS filesystem, GEOM storage framework, Bhyve virtualization, Virtualbox option and many other new modern features the OpenBSD remains classic UNIX system with UFS filesystem and with very ‘theoretical’ SMP support. The vmm project tried to implement new hypervisor in OpenBSD world, but because of lack of support for graphics its for OpenBSD, Illumos and Linux currently, You will not virtualize Windows or Mac OS X there. This is also only virtualization option for OpenBSD as there are no Jails on OpenBSD. Current Bhyve implementation allows one even to boot latest Windows 2019 Technology Preview.
Err codemadness.org 70 i 60887 Err codemadness.org 70 i 60888A HardenedBSD project is FreeBSD system code base with LOTS of security mechanisms and mitigations that are not available on FreeBSD system. For example entire lib32 tree has been disabled by default on HardenedBSD to make it more secure. Also LibreSSL is the default SSL library on HardenedBSD, same as OpenBSD while FreeBSD uses OpenSSL for compatibility reasons.
Err codemadness.org 70 i 60889 Err codemadness.org 70 i 60890Comparison between LibreSSL and OpenSSL vulnerabilities.
Err codemadness.org 70 i 60891
Err codemadness.org 70 i 60899Err codemadness.org 70 i 60903 Err codemadness.org 70 i 60904One may see HardenedBSD as FreeBSD being successfully pulled up to the OpenBSD level (at least that is the goal), but as FreeBSD has tons more code and features it will be harder and longer process to achieve the goal.
Err codemadness.org 70 i 60900 Err codemadness.org 70 i 60901As I do not have that much competence on the security field I will just repost the comparison from the HardenedBSD project versus other BSD systems. The comparison is also available here – https://hardenedbsd.org/content/easy-feature-comparison – on the HardenedBSD website.
Err codemadness.org 70 i 60902
Err codemadness.org 70 i 60909Err codemadness.org 70 i 60913 Err codemadness.org 70 i 60914Note: This article is predominantly based on work by Hiltjo Posthuma who you should read because I would have spent far too much time failing to set things up if it wasn’t for their post. Not only have they written lots of very interesting posts, they write some really brilliant programs
Err codemadness.org 70 i 60910 Err codemadness.org 70 i 60911Since I started university 3 years ago, I started using lots of services from lots of different companies. The “cloud” trend led me to believe that I wanted other people to look after my data for me. I was wrong. Since finding myself loving the ethos of OpenBSD, I found myself wanting to apply this ethos to the services I use as well. Not only is it important to me because of the security benefits, but also because I like the minimalist style OpenBSD portrays. This is the first in a mini-series documenting my move from bloated, hosted, sometimes proprietary services to minimal, well-written, free, self-hosted services.
Err codemadness.org 70 i 60912
Err codemadness.org 70 i 60919Err codemadness.org 70 i 60921 Err codemadness.org 70 i 60922These are the programs I am going to be using to get my git server up and running:
Err codemadness.org 70 i 60920
Err codemadness.org 70
i 60923 httpd(8) Err codemadness.org 70
i 60924 acme-client(1) Err codemadness.org 70
i 60925 git(1) Err codemadness.org 70
i 60926 cgit(1) Err codemadness.org 70
i 60927 slowcgi(8) Err codemadness.org 70
i 60928
Err codemadness.org 70 i 60935Err codemadness.org 70 i 60937 Err codemadness.org 70 i 60938Ensure you have the necessary flags enabled in your /etc/rc.conf.local:
Err codemadness.org 70 i 60936
Err codemadness.org 70 i 60943Err codemadness.org 70 i 60947 Err codemadness.org 70 i 60948When using the OpenBSD httpd(8), it will serve it’s content in a chrooted environment,which defaults to the home directory of the user it runs as, which is www in this case. This means that the chroot is limited to the directory /var/www and it’s contents.
Err codemadness.org 70 i 60944 Err codemadness.org 70 i 60945In order to configure cgit, there must be a cgitrc file available to cgit. This is found at the location stored in $CGIT_CONFIG, which defaults to /conf/cgitrc. Because of the chroot, this file is actually stored at /var/www/conf/cgitrc.
Err codemadness.org 70 i 60946
Tarsnap ad
Err codemadness.org 70 i 60961 Err codemadness.org 70 i 60962Err codemadness.org 70 i 61236Err codemadness.org 70 i 61242 Err codemadness.org 70 i 61243Let me preface this by saying that this is a (very) long and medium-rare technical article about the security considerations and minutiae of porting (most of) the Arcan ecosystem to work under OpenBSD. The main point of this article is not so much flirting with the OpenBSD crowd or adding further noise to software engineering topics, but to go through the special considerations that had to be taken, as notes to anyone else that decides to go down this overgrown and lonesome trail, or are curious about some less than obvious differences between how these things “work” on Linux vs. other parts of the world.
Err codemadness.org 70 i 61237 Err codemadness.org 70 i 61238A disclaimer is also that most of this have been discovered by experimentation and combining bits and pieces scattered in everything from Xorg code to man pages, there may be smarter ways to solve some of the problems mentioned – this is just the best I could find within the time allotted. I’d be happy to be corrected, in patch/pull request form that is 😉
Err codemadness.org 70 i 61239 Err codemadness.org 70 i 61240Each section will start with a short rant-like explanation of how it works in Linux, and what the translation to OpenBSD involved or, in the cases that are still partly or fully missing, will require. The topics that will be covered this time are:
Err codemadness.org 70 i 61241
Err codemadness.org 70 i 61262Err codemadness.org 70 i 61266 Err codemadness.org 70 i 61267Installing the OpenBSD on raspberry pi 3 is very easy and well documented which almost convinced me of not writing about it, but still I felt like it may help somebody new to the project (But again I really recommend reading the document if you are interested and have the time).
Err codemadness.org 70 i 61263 Err codemadness.org 70 i 61264Note: I'm always running snapshots and recommend anybody to do it as well. But the snapshots links will change to the next version every 6 month, so I changed the links to the 6.3 version to keep the blog post valid over times. If you're familiar to the OpenBSD flavors, feel free to use the snapshots links instead.
Err codemadness.org 70 i 61265
Err codemadness.org 70 i 61272Err codemadness.org 70 i 61274 Err codemadness.org 70 i 61275Due to the lack of driver, the OpenBSD can not boot directly from the SD Card yet, So we'll need an USB Stick for the installtion target aside the SD Card for the U-Boot and installer. Also, a Serial Console connection is required. I Used a PL2303 USB to Serial (TTL) adapter connected to my Laptop via USB port and connected to the Raspberry via TX, RX and GND pins.
Err codemadness.org 70 i 61273
iXsystems Err codemadness.org 70 i 61278 https://www.ixsystems.com/blog/truenas-m-series-veeam-pr-2018/
Err codemadness.org 70 i 61279 Err codemadness.org 70 i 61280Err codemadness.org 70 i 61283Err codemadness.org 70 i 61289 Err codemadness.org 70 i 61290Every month or so, someone will ask me what happened to Larrabee and why it failed so badly. And I then try to explain to them that not only didn't it fail, it was a pretty huge success. And they are understandably very puzzled by this, because in the public consciousness Larrabee was like the Itanic and the SPU rolled into one, wasn't it? Well, not quite. So rather than explain it in person a whole bunch more times, I thought I should write it down.
Err codemadness.org 70 i 61284 Err codemadness.org 70 i 61285This is not a history, and I'm going to skip a TON of details for brevity. One day I'll write the whole story down, because it's a pretty decent escapade with lots of fun characters. But not today. Today you just get the very start and the very end.
Err codemadness.org 70 i 61286 Err codemadness.org 70 i 61287When I say "Larrabee" I mean all of Knights, all of MIC, all of Xeon Phi, all of the "Isle" cards - they're all exactly the same chip and the same people and the same software effort. Marketing seemed to dream up a new codeword every week, but there was only ever three chips:
Err codemadness.org 70 i 61288
Err codemadness.org 70 i 61297Err codemadness.org 70 i 61301 Err codemadness.org 70 i 61302That's it. There were some other codenames I've forgotten over the years, but they're all of one of the above chips. Behind all the marketing smoke and mirrors there were only three chips ever made (so far), and only four planned in total (we had a thing called LRB3 planned between KNC and KNL for a while). All of them are "Larrabee", whether they do graphics or not.
Err codemadness.org 70 i 61298 Err codemadness.org 70 i 61299When Larrabee was originally conceived back in about 2005, it was called "SMAC", and its original goals were, from most to least important:
Err codemadness.org 70 i 61300
Err codemadness.org 70 i 61311Err codemadness.org 70 i 61317 Err codemadness.org 70 i 61318That ordering is important - in terms of engineering and focus, Larrabee was never primarily a graphics card. If Intel had wanted a kick-ass graphics card, they already had a very good graphics team begging to be allowed to build a nice big fat hot discrete GPU - and the Gen architecture is such that they'd build a great one, too. But Intel management didn't want one, and still doesn't. But if we were going to build Larrabee anyway, they wanted us to cover that market as well.
Err codemadness.org 70 i 61312 Err codemadness.org 70 i 61313... the design of Larrabee was of a CPU with a very wide SIMD unit, designed above all to be a real grown-up CPU - coherent caches, well-ordered memory rules, good memory protection, true multitasking, real threads, runs Linux/FreeBSD, etc. Larrabee, in the form of KNC, went on to become the fastest supercomputer in the world for a couple of years, and it's still making a ton of money for Intel in the HPC market that it was designed for, fighting very nicely against the GPUs and other custom architectures. Its successor, KNL, is just being released right now (mid 2016) and should do very nicely in that space too. Remember - KNC is literally the same chip as LRB2. It has texture samplers and a video out port sitting on the die. They don't test them or turn them on or expose them to software, but they're still there - it's still a graphics-capable part.
Err codemadness.org 70 i 61314 Err codemadness.org 70 i 61315But it's still actually running FreeBSD on that card, and under FreeBSD it's just running an x86 program called DirectXGfx (248 threads of it).
Err codemadness.org 70 i 61316
Err codemadness.org 70 i 61325Err codemadness.org 70 i 61329 Err codemadness.org 70 i 61330In the wake of the recent Meltdown and Spectre vulnerabilities, it's worth spending some time looking at root causes. Both of these vulnerabilities involved processors speculatively executing instructions past some kind of access check and allowing the attacker to observe the results via a side channel. The features that led to these vulnerabilities, along with several others, were added to let C programmers continue to believe they were programming in a low-level language, when this hasn't been the case for decades.
Err codemadness.org 70 i 61326 Err codemadness.org 70 i 61327Processor vendors are not alone in this. Those of us working on C/C++ compilers have also participated.
Err codemadness.org 70 i 61328
Err codemadness.org 70 i 61335Err codemadness.org 70 i 61341 Err codemadness.org 70 i 61342Computer science pioneer Alan Perlis defined low-level languages this way: "A programming language is low level when its programs require attention to the irrelevant."
Err codemadness.org 70 i 61336 Err codemadness.org 70 i 61337While, yes, this definition applies to C, it does not capture what people desire in a low-level language. Various attributes cause people to regard a language as low-level. Think of programming languages as belonging on a continuum, with assembly at one end and the interface to the Starship Enterprise's computer at the other. Low-level languages are "close to the metal," whereas high-level languages are closer to how humans think.
Err codemadness.org 70 i 61338 Err codemadness.org 70 i 61339For a language to be "close to the metal," it must provide an abstract machine that maps easily to the abstractions exposed by the target platform. It's easy to argue that C was a low-level language for the PDP-11. They both described a model in which programs executed sequentially, in which memory was a flat space, and even the pre- and post-increment operators cleanly lined up with the PDP-11 addressing modes.
Err codemadness.org 70 i 61340
Fast PDP-11 Emulators
Err codemadness.org 70 i 61343 Err codemadness.org 70 i 61344Err codemadness.org 70 i 61345Err codemadness.org 70 i 61357 Err codemadness.org 70 i 61358The root cause of the Spectre and Meltdown vulnerabilities was that processor architects were trying to build not just fast processors, but fast processors that expose the same abstract machine as a PDP-11. This is essential because it allows C programmers to continue in the belief that their language is close to the underlying hardware.
Err codemadness.org 70 i 61346 Err codemadness.org 70 i 61347C code provides a mostly serial abstract machine (until C11, an entirely serial machine if nonstandard vendor extensions were excluded). Creating a new thread is a library operation known to be expensive, so processors wishing to keep their execution units busy running C code rely on ILP (instruction-level parallelism). They inspect adjacent operations and issue independent ones in parallel. This adds a significant amount of complexity (and power consumption) to allow programmers to write mostly sequential code. In contrast, GPUs achieve very high performance without any of this logic, at the expense of requiring explicitly parallel programs.
Err codemadness.org 70 i 61348 Err codemadness.org 70 i 61349The quest for high ILP was the direct cause of Spectre and Meltdown. A modern Intel processor has up to 180 instructions in flight at a time (in stark contrast to a sequential C abstract machine, which expects each operation to complete before the next one begins). A typical heuristic for C code is that there is a branch, on average, every seven instructions. If you wish to keep such a pipeline full from a single thread, then you must guess the targets of the next 25 branches. This, again, adds complexity; it also means that an incorrect guess results in work being done and then discarded, which is not ideal for power consumption. This discarded work has visible side effects, which the Spectre and Meltdown attacks could exploit.
Err codemadness.org 70 i 61350 Err codemadness.org 70 i 61351On a modern high-end core, the register rename engine is one of the largest consumers of die area and power. To make matters worse, it cannot be turned off or power gated while any instructions are running, which makes it inconvenient in a dark silicon era when transistors are cheap but powered transistors are an expensive resource. This unit is conspicuously absent on GPUs, where parallelism again comes from multiple threads rather than trying to extract instruction-level parallelism from intrinsically scalar code. If instructions do not have dependencies that need to be reordered, then register renaming is not necessary.
Err codemadness.org 70 i 61352 Err codemadness.org 70 i 61353Consider another core part of the C abstract machine's memory model: flat memory. This hasn't been true for more than two decades. A modern processor often has three levels of cache in between registers and main memory, which attempt to hide latency.
Err codemadness.org 70 i 61354 Err codemadness.org 70 i 61355The cache is, as its name implies, hidden from the programmer and so is not visible to C. Efficient use of the cache is one of the most important ways of making code run quickly on a modern processor, yet this is completely hidden by the abstract machine, and programmers must rely on knowing implementation details of the cache (for example, two values that are 64-byte-aligned may end up in the same cache line) to write efficient code.
Err codemadness.org 70 i 61356
Err codemadness.org 70 i 61368Err codemadness.org 70 i 61382 Err codemadness.org 70 i 61383Over a year ago, HardenedBSD switched to LibreSSL as the default cryptographic library in base for 12-CURRENT. 11-STABLE followed suit later on. Bernard Spil has done an excellent job at keeping our users up-to-date with the latest security patches from LibreSSL.
Err codemadness.org 70 i 61369 Err codemadness.org 70 i 61370After recently updating 12-CURRENT to LibreSSL 2.7.2 from 2.6.4, it has become increasingly clear to us that performing major upgrades requires a team larger than a single person. Upgrading to 2.7.2 caused a lot of fallout in our ports tree. As of 28 Apr 2018, several ports we consider high priority are still broken. As it stands right now, it would take Bernard a significant amount of his spare personal time to fix these issues.
Err codemadness.org 70 i 61371 Err codemadness.org 70 i 61372Until we have a multi-person team dedicated to maintaining LibreSSL in base along with the patches required in ports, HardenedBSD will use OpenSSL going forward as the default cryptographic library in base. LibreSSL will co-exist with OpenSSL in the source tree, as it does now. However, MK_LIBRESSL will default to "no" instead of the current "yes". Bernard will continue maintaining LibreSSL in base along with addressing the various problematic ports entries.
Err codemadness.org 70 i 61373 Err codemadness.org 70 i 61374To provide our users with ample time to plan and perform updates, we will wait a period of two months prior to making the switch. The switch will occur on 01 Jul 2018 and will be performed simultaneously in 12-CURRENT and 11-STABLE. HardenedBSD will archive a copy of the LibreSSL-centric package repositories and binary updates for base for a period of six months after the switch (expiring the package repos on 01 Jan 2019). This essentially gives our users eight full months for an upgrade path.
Err codemadness.org 70 i 61375 Err codemadness.org 70 i 61376As part of the switch back to OpenSSL, the default NTP daemon in base will switch back from OpenNTPd to ISC NTP. Users who have localopenntpdenable="YES" set in rc.conf will need to switch back to ntpd_enable="YES".
Err codemadness.org 70 i 61377 Err codemadness.org 70 i 61378Users who build base from source will want to fully clean their object directories. Any and all packages that link with libcrypto or libssl will need to be rebuilt or reinstalled.
Err codemadness.org 70 i 61379 Err codemadness.org 70 i 61380With the community's help, we look forward to the day when we can make the switch back to LibreSSL. We at HardenedBSD believe that providing our users options to rid themselves of software monocultures can better increase security and manage risk.
Err codemadness.org 70 i 61381
DigitalOcean Err codemadness.org 70 i 61386 http://do.co/bsdnow -- $100 credit for 60 days
Err codemadness.org 70 i 61387 Err codemadness.org 70 i 61388Err codemadness.org 70 i 61391Err codemadness.org 70 i 61417 Err codemadness.org 70 i 61418In the summer of 2008, security researcher Dan Kaminsky disclosed how he had found a huge flaw in the Internet that could let attackers redirect web traffic to alternate servers and disrupt normal operations. In this Hacker History video, Kaminsky describes the flaw and notes the issue remains unfixed.
Err codemadness.org 70 i 61392 Err codemadness.org 70 i 61393“We were really concerned about web pages and emails 'cause that’s what you get to compromise when you compromise DNS,” Kaminsky says. “You think you’re sending an email to IBM but it really goes to the bad guy.”
Err codemadness.org 70 i 61394 Err codemadness.org 70 i 61395As the phone book of the Internet, DNS translates easy-to-remember domain names into IP addresses so that users don’t have to remember strings of numbers to reach web applications and services. Authoritative nameservers publish the IP addresses of domain names. Recursive nameservers talk to authoritative servers to find addresses for those domain names and saves the information into its cache to speed up the response time the next time it is asked about that site. While anyone can set up a nameserver and configure an authoritative zone for any site, if recursive nameservers don’t point to it to ask questions, no one will get those wrong answers.
Err codemadness.org 70 i 61396 Err codemadness.org 70 i 61397We made the Internet less flammable.
Err codemadness.org 70 i 61398 Err codemadness.org 70 i 61399Kaminsky found a fundamental design flaw in DNS that made it possible to inject incorrect information into the nameserver's cache, or DNS cache poisoning. In this case, if an attacker crafted DNS queries looking for sibling names to existing domains, such as 1.example.com, 2.example.com, and 3.example.com, while claiming to be the official "www" server for example.com, the nameserver will save that server IP address for “www” in its cache.
Err codemadness.org 70 i 61400 Err codemadness.org 70 i 61401“The server will go, ‘You are the official. Go right ahead. Tell me what it’s supposed to be,’” Kaminsky says in the video.
Err codemadness.org 70 i 61402 Err codemadness.org 70 i 61403Since the issue affected nearly every DNS server on the planet, it required a coordinated response to address it. Kaminsky informed Paul Vixie, creator of several DNS protocol extensions and application, and Vixie called an emergency summit of major IT vendors at Microsoft’s headquarters to figure out what to do.
Err codemadness.org 70 i 61404 Err codemadness.org 70 i 61405The “fix” involved combining the 16-bit transaction identifier that DNS lookups used with UDP source ports to create 32-bit transaction identifiers. Instead of fixing the flaw so that it can’t be exploited, the resolution focused on making it take more than ten seconds, eliminating the instantaneous attack.
Err codemadness.org 70 i 61406 Err codemadness.org 70 i 61407“[It’s] not like we repaired DNS,” Kaminsky says. “We made the Internet less flammable.”
Err codemadness.org 70 i 61408 Err codemadness.org 70 i 61409DNSSEC (Domain Name System Security Extensions), is intended to secure DNS by adding a cryptographic layer to DNS information. The root zone of the internet was signed for DNSSEC in July 2010 and the .com Top Level Domain (TLD) was finally signed for DNSSEC in April 2011. Unfortunately, adoption has been slow, even ten years after Kaminsky first raised the alarm about DNS, as less than 15 percent of users pass their queries to DNSSEC validating resolvers.
Err codemadness.org 70 i 61410 Err codemadness.org 70 i 61411The Internet was never designed to be secure. The Internet was designed to move pictures of cats.
Err codemadness.org 70 i 61412 Err codemadness.org 70 i 61413No one expected the Internet to be used for commerce and critical communications. If people lose faith in DNS, then all the things that depend on it are at risk.
Err codemadness.org 70 i 61414 Err codemadness.org 70 i 61415“What are we going to do? Here is the answer. Some of us gotta go out fix it,” Kaminsky says.
Err codemadness.org 70 i 61416
We have released a new OpenIndiana Hipster snapshot 2018.04. The noticeable changes:
Err codemadness.org 70 i 61424 Err codemadness.org 70 i 61425More information can be found in 2018.04 Release notes and new medias can be downloaded from http://dlc.openindiana.org.
Tarsnap ad
Err codemadness.org 70 i 61452 Err codemadness.org 70 i 61453iX Ad spot: iXsystems TrueNAS M-Series Blows Away Veeam Backup Certification Tests
]]> Err codemadness.org 70 i 61473Err codemadness.org 70 i 61482Err codemadness.org 70 i 61488 Err codemadness.org 70 i 61489Let me preface this by saying that this is a (very) long and medium-rare technical article about the security considerations and minutiae of porting (most of) the Arcan ecosystem to work under OpenBSD. The main point of this article is not so much flirting with the OpenBSD crowd or adding further noise to software engineering topics, but to go through the special considerations that had to be taken, as notes to anyone else that decides to go down this overgrown and lonesome trail, or are curious about some less than obvious differences between how these things “work” on Linux vs. other parts of the world.
Err codemadness.org 70 i 61483 Err codemadness.org 70 i 61484A disclaimer is also that most of this have been discovered by experimentation and combining bits and pieces scattered in everything from Xorg code to man pages, there may be smarter ways to solve some of the problems mentioned – this is just the best I could find within the time allotted. I’d be happy to be corrected, in patch/pull request form that is 😉
Err codemadness.org 70 i 61485 Err codemadness.org 70 i 61486Each section will start with a short rant-like explanation of how it works in Linux, and what the translation to OpenBSD involved or, in the cases that are still partly or fully missing, will require. The topics that will be covered this time are:
Err codemadness.org 70 i 61487
Err codemadness.org 70 i 61508Err codemadness.org 70 i 61512 Err codemadness.org 70 i 61513Installing the OpenBSD on raspberry pi 3 is very easy and well documented which almost convinced me of not writing about it, but still I felt like it may help somebody new to the project (But again I really recommend reading the document if you are interested and have the time).
Err codemadness.org 70 i 61509 Err codemadness.org 70 i 61510Note: I'm always running snapshots and recommend anybody to do it as well. But the snapshots links will change to the next version every 6 month, so I changed the links to the 6.3 version to keep the blog post valid over times. If you're familiar to the OpenBSD flavors, feel free to use the snapshots links instead.
Err codemadness.org 70 i 61511
Err codemadness.org 70 i 61518Err codemadness.org 70 i 61520 Err codemadness.org 70 i 61521Due to the lack of driver, the OpenBSD can not boot directly from the SD Card yet, So we'll need an USB Stick for the installtion target aside the SD Card for the U-Boot and installer. Also, a Serial Console connection is required. I Used a PL2303 USB to Serial (TTL) adapter connected to my Laptop via USB port and connected to the Raspberry via TX, RX and GND pins.
Err codemadness.org 70 i 61519
iXsystems Err codemadness.org 70 i 61524 https://www.ixsystems.com/blog/truenas-m-series-veeam-pr-2018/
Err codemadness.org 70 i 61525 Err codemadness.org 70 i 61526Err codemadness.org 70 i 61529Err codemadness.org 70 i 61535 Err codemadness.org 70 i 61536Every month or so, someone will ask me what happened to Larrabee and why it failed so badly. And I then try to explain to them that not only didn't it fail, it was a pretty huge success. And they are understandably very puzzled by this, because in the public consciousness Larrabee was like the Itanic and the SPU rolled into one, wasn't it? Well, not quite. So rather than explain it in person a whole bunch more times, I thought I should write it down.
Err codemadness.org 70 i 61530 Err codemadness.org 70 i 61531This is not a history, and I'm going to skip a TON of details for brevity. One day I'll write the whole story down, because it's a pretty decent escapade with lots of fun characters. But not today. Today you just get the very start and the very end.
Err codemadness.org 70 i 61532 Err codemadness.org 70 i 61533When I say "Larrabee" I mean all of Knights, all of MIC, all of Xeon Phi, all of the "Isle" cards - they're all exactly the same chip and the same people and the same software effort. Marketing seemed to dream up a new codeword every week, but there was only ever three chips:
Err codemadness.org 70 i 61534
Err codemadness.org 70 i 61543Err codemadness.org 70 i 61547 Err codemadness.org 70 i 61548That's it. There were some other codenames I've forgotten over the years, but they're all of one of the above chips. Behind all the marketing smoke and mirrors there were only three chips ever made (so far), and only four planned in total (we had a thing called LRB3 planned between KNC and KNL for a while). All of them are "Larrabee", whether they do graphics or not.
Err codemadness.org 70 i 61544 Err codemadness.org 70 i 61545When Larrabee was originally conceived back in about 2005, it was called "SMAC", and its original goals were, from most to least important:
Err codemadness.org 70 i 61546
Err codemadness.org 70 i 61557Err codemadness.org 70 i 61563 Err codemadness.org 70 i 61564That ordering is important - in terms of engineering and focus, Larrabee was never primarily a graphics card. If Intel had wanted a kick-ass graphics card, they already had a very good graphics team begging to be allowed to build a nice big fat hot discrete GPU - and the Gen architecture is such that they'd build a great one, too. But Intel management didn't want one, and still doesn't. But if we were going to build Larrabee anyway, they wanted us to cover that market as well.
Err codemadness.org 70 i 61558 Err codemadness.org 70 i 61559... the design of Larrabee was of a CPU with a very wide SIMD unit, designed above all to be a real grown-up CPU - coherent caches, well-ordered memory rules, good memory protection, true multitasking, real threads, runs Linux/FreeBSD, etc. Larrabee, in the form of KNC, went on to become the fastest supercomputer in the world for a couple of years, and it's still making a ton of money for Intel in the HPC market that it was designed for, fighting very nicely against the GPUs and other custom architectures. Its successor, KNL, is just being released right now (mid 2016) and should do very nicely in that space too. Remember - KNC is literally the same chip as LRB2. It has texture samplers and a video out port sitting on the die. They don't test them or turn them on or expose them to software, but they're still there - it's still a graphics-capable part.
Err codemadness.org 70 i 61560 Err codemadness.org 70 i 61561But it's still actually running FreeBSD on that card, and under FreeBSD it's just running an x86 program called DirectXGfx (248 threads of it).
Err codemadness.org 70 i 61562
Err codemadness.org 70 i 61571Err codemadness.org 70 i 61575 Err codemadness.org 70 i 61576In the wake of the recent Meltdown and Spectre vulnerabilities, it's worth spending some time looking at root causes. Both of these vulnerabilities involved processors speculatively executing instructions past some kind of access check and allowing the attacker to observe the results via a side channel. The features that led to these vulnerabilities, along with several others, were added to let C programmers continue to believe they were programming in a low-level language, when this hasn't been the case for decades.
Err codemadness.org 70 i 61572 Err codemadness.org 70 i 61573Processor vendors are not alone in this. Those of us working on C/C++ compilers have also participated.
Err codemadness.org 70 i 61574
Err codemadness.org 70 i 61581Err codemadness.org 70 i 61587 Err codemadness.org 70 i 61588Computer science pioneer Alan Perlis defined low-level languages this way: "A programming language is low level when its programs require attention to the irrelevant."
Err codemadness.org 70 i 61582 Err codemadness.org 70 i 61583While, yes, this definition applies to C, it does not capture what people desire in a low-level language. Various attributes cause people to regard a language as low-level. Think of programming languages as belonging on a continuum, with assembly at one end and the interface to the Starship Enterprise's computer at the other. Low-level languages are "close to the metal," whereas high-level languages are closer to how humans think.
Err codemadness.org 70 i 61584 Err codemadness.org 70 i 61585For a language to be "close to the metal," it must provide an abstract machine that maps easily to the abstractions exposed by the target platform. It's easy to argue that C was a low-level language for the PDP-11. They both described a model in which programs executed sequentially, in which memory was a flat space, and even the pre- and post-increment operators cleanly lined up with the PDP-11 addressing modes.
Err codemadness.org 70 i 61586
Fast PDP-11 Emulators
Err codemadness.org 70 i 61589 Err codemadness.org 70 i 61590Err codemadness.org 70 i 61591Err codemadness.org 70 i 61603 Err codemadness.org 70 i 61604The root cause of the Spectre and Meltdown vulnerabilities was that processor architects were trying to build not just fast processors, but fast processors that expose the same abstract machine as a PDP-11. This is essential because it allows C programmers to continue in the belief that their language is close to the underlying hardware.
Err codemadness.org 70 i 61592 Err codemadness.org 70 i 61593C code provides a mostly serial abstract machine (until C11, an entirely serial machine if nonstandard vendor extensions were excluded). Creating a new thread is a library operation known to be expensive, so processors wishing to keep their execution units busy running C code rely on ILP (instruction-level parallelism). They inspect adjacent operations and issue independent ones in parallel. This adds a significant amount of complexity (and power consumption) to allow programmers to write mostly sequential code. In contrast, GPUs achieve very high performance without any of this logic, at the expense of requiring explicitly parallel programs.
Err codemadness.org 70 i 61594 Err codemadness.org 70 i 61595The quest for high ILP was the direct cause of Spectre and Meltdown. A modern Intel processor has up to 180 instructions in flight at a time (in stark contrast to a sequential C abstract machine, which expects each operation to complete before the next one begins). A typical heuristic for C code is that there is a branch, on average, every seven instructions. If you wish to keep such a pipeline full from a single thread, then you must guess the targets of the next 25 branches. This, again, adds complexity; it also means that an incorrect guess results in work being done and then discarded, which is not ideal for power consumption. This discarded work has visible side effects, which the Spectre and Meltdown attacks could exploit.
Err codemadness.org 70 i 61596 Err codemadness.org 70 i 61597On a modern high-end core, the register rename engine is one of the largest consumers of die area and power. To make matters worse, it cannot be turned off or power gated while any instructions are running, which makes it inconvenient in a dark silicon era when transistors are cheap but powered transistors are an expensive resource. This unit is conspicuously absent on GPUs, where parallelism again comes from multiple threads rather than trying to extract instruction-level parallelism from intrinsically scalar code. If instructions do not have dependencies that need to be reordered, then register renaming is not necessary.
Err codemadness.org 70 i 61598 Err codemadness.org 70 i 61599Consider another core part of the C abstract machine's memory model: flat memory. This hasn't been true for more than two decades. A modern processor often has three levels of cache in between registers and main memory, which attempt to hide latency.
Err codemadness.org 70 i 61600 Err codemadness.org 70 i 61601The cache is, as its name implies, hidden from the programmer and so is not visible to C. Efficient use of the cache is one of the most important ways of making code run quickly on a modern processor, yet this is completely hidden by the abstract machine, and programmers must rely on knowing implementation details of the cache (for example, two values that are 64-byte-aligned may end up in the same cache line) to write efficient code.
Err codemadness.org 70 i 61602
Err codemadness.org 70 i 61614Err codemadness.org 70 i 61628 Err codemadness.org 70 i 61629Over a year ago, HardenedBSD switched to LibreSSL as the default cryptographic library in base for 12-CURRENT. 11-STABLE followed suit later on. Bernard Spil has done an excellent job at keeping our users up-to-date with the latest security patches from LibreSSL.
Err codemadness.org 70 i 61615 Err codemadness.org 70 i 61616After recently updating 12-CURRENT to LibreSSL 2.7.2 from 2.6.4, it has become increasingly clear to us that performing major upgrades requires a team larger than a single person. Upgrading to 2.7.2 caused a lot of fallout in our ports tree. As of 28 Apr 2018, several ports we consider high priority are still broken. As it stands right now, it would take Bernard a significant amount of his spare personal time to fix these issues.
Err codemadness.org 70 i 61617 Err codemadness.org 70 i 61618Until we have a multi-person team dedicated to maintaining LibreSSL in base along with the patches required in ports, HardenedBSD will use OpenSSL going forward as the default cryptographic library in base. LibreSSL will co-exist with OpenSSL in the source tree, as it does now. However, MK_LIBRESSL will default to "no" instead of the current "yes". Bernard will continue maintaining LibreSSL in base along with addressing the various problematic ports entries.
Err codemadness.org 70 i 61619 Err codemadness.org 70 i 61620To provide our users with ample time to plan and perform updates, we will wait a period of two months prior to making the switch. The switch will occur on 01 Jul 2018 and will be performed simultaneously in 12-CURRENT and 11-STABLE. HardenedBSD will archive a copy of the LibreSSL-centric package repositories and binary updates for base for a period of six months after the switch (expiring the package repos on 01 Jan 2019). This essentially gives our users eight full months for an upgrade path.
Err codemadness.org 70 i 61621 Err codemadness.org 70 i 61622As part of the switch back to OpenSSL, the default NTP daemon in base will switch back from OpenNTPd to ISC NTP. Users who have localopenntpdenable="YES" set in rc.conf will need to switch back to ntpd_enable="YES".
Err codemadness.org 70 i 61623 Err codemadness.org 70 i 61624Users who build base from source will want to fully clean their object directories. Any and all packages that link with libcrypto or libssl will need to be rebuilt or reinstalled.
Err codemadness.org 70 i 61625 Err codemadness.org 70 i 61626With the community's help, we look forward to the day when we can make the switch back to LibreSSL. We at HardenedBSD believe that providing our users options to rid themselves of software monocultures can better increase security and manage risk.
Err codemadness.org 70 i 61627
DigitalOcean Err codemadness.org 70 i 61632 http://do.co/bsdnow -- $100 credit for 60 days
Err codemadness.org 70 i 61633 Err codemadness.org 70 i 61634Err codemadness.org 70 i 61637Err codemadness.org 70 i 61663 Err codemadness.org 70 i 61664In the summer of 2008, security researcher Dan Kaminsky disclosed how he had found a huge flaw in the Internet that could let attackers redirect web traffic to alternate servers and disrupt normal operations. In this Hacker History video, Kaminsky describes the flaw and notes the issue remains unfixed.
Err codemadness.org 70 i 61638 Err codemadness.org 70 i 61639“We were really concerned about web pages and emails 'cause that’s what you get to compromise when you compromise DNS,” Kaminsky says. “You think you’re sending an email to IBM but it really goes to the bad guy.”
Err codemadness.org 70 i 61640 Err codemadness.org 70 i 61641As the phone book of the Internet, DNS translates easy-to-remember domain names into IP addresses so that users don’t have to remember strings of numbers to reach web applications and services. Authoritative nameservers publish the IP addresses of domain names. Recursive nameservers talk to authoritative servers to find addresses for those domain names and saves the information into its cache to speed up the response time the next time it is asked about that site. While anyone can set up a nameserver and configure an authoritative zone for any site, if recursive nameservers don’t point to it to ask questions, no one will get those wrong answers.
Err codemadness.org 70 i 61642 Err codemadness.org 70 i 61643We made the Internet less flammable.
Err codemadness.org 70 i 61644 Err codemadness.org 70 i 61645Kaminsky found a fundamental design flaw in DNS that made it possible to inject incorrect information into the nameserver's cache, or DNS cache poisoning. In this case, if an attacker crafted DNS queries looking for sibling names to existing domains, such as 1.example.com, 2.example.com, and 3.example.com, while claiming to be the official "www" server for example.com, the nameserver will save that server IP address for “www” in its cache.
Err codemadness.org 70 i 61646 Err codemadness.org 70 i 61647“The server will go, ‘You are the official. Go right ahead. Tell me what it’s supposed to be,’” Kaminsky says in the video.
Err codemadness.org 70 i 61648 Err codemadness.org 70 i 61649Since the issue affected nearly every DNS server on the planet, it required a coordinated response to address it. Kaminsky informed Paul Vixie, creator of several DNS protocol extensions and application, and Vixie called an emergency summit of major IT vendors at Microsoft’s headquarters to figure out what to do.
Err codemadness.org 70 i 61650 Err codemadness.org 70 i 61651The “fix” involved combining the 16-bit transaction identifier that DNS lookups used with UDP source ports to create 32-bit transaction identifiers. Instead of fixing the flaw so that it can’t be exploited, the resolution focused on making it take more than ten seconds, eliminating the instantaneous attack.
Err codemadness.org 70 i 61652 Err codemadness.org 70 i 61653“[It’s] not like we repaired DNS,” Kaminsky says. “We made the Internet less flammable.”
Err codemadness.org 70 i 61654 Err codemadness.org 70 i 61655DNSSEC (Domain Name System Security Extensions), is intended to secure DNS by adding a cryptographic layer to DNS information. The root zone of the internet was signed for DNSSEC in July 2010 and the .com Top Level Domain (TLD) was finally signed for DNSSEC in April 2011. Unfortunately, adoption has been slow, even ten years after Kaminsky first raised the alarm about DNS, as less than 15 percent of users pass their queries to DNSSEC validating resolvers.
Err codemadness.org 70 i 61656 Err codemadness.org 70 i 61657The Internet was never designed to be secure. The Internet was designed to move pictures of cats.
Err codemadness.org 70 i 61658 Err codemadness.org 70 i 61659No one expected the Internet to be used for commerce and critical communications. If people lose faith in DNS, then all the things that depend on it are at risk.
Err codemadness.org 70 i 61660 Err codemadness.org 70 i 61661“What are we going to do? Here is the answer. Some of us gotta go out fix it,” Kaminsky says.
Err codemadness.org 70 i 61662
We have released a new OpenIndiana Hipster snapshot 2018.04. The noticeable changes:
Err codemadness.org 70 i 61670 Err codemadness.org 70 i 61671More information can be found in 2018.04 Release notes and new medias can be downloaded from http://dlc.openindiana.org.
Tarsnap ad
Err codemadness.org 70 i 61698 Err codemadness.org 70 i 61699iX Ad spot: iXsystems TrueNAS M-Series Blows Away Veeam Backup Certification Tests
]]> Err codemadness.org 70 i 61719Err codemadness.org 70 i 62120 Improved HW support, including: Err codemadness.org 70 i 62121 SMP support on OpenBSD/arm64 platforms Err codemadness.org 70 i 62122 vmm/vmd improvements: Err codemadness.org 70 i 62123 IEEE 802.11 wireless stack improvements Err codemadness.org 70 i 62124 Generic network stack improvements Err codemadness.org 70 i 62125 Installer improvements Err codemadness.org 70 i 62126 Routing daemons and other userland network improvements Err codemadness.org 70 i 62127 Security improvements Err codemadness.org 70 i 62128 dhclient(8) improvements Err codemadness.org 70 i 62129 Assorted improvements Err codemadness.org 70 i 62130 OpenSMTPD 6.0.4 Err codemadness.org 70 i 62131 OpenSSH 7.7 Err codemadness.org 70 i 62132 LibreSSL 2.7.2
Err codemadness.org 70 i 62142Err codemadness.org 70 i 62160 Err codemadness.org 70 i 62161Big-ticket items Err codemadness.org 70 i 62143 Meltdown and Spectre mitigation support Err codemadness.org 70 i 62144 Meltdown isolation and spectre mitigation support added. Meltdown mitigation is automatically enabled for all Intel cpus. Spectre mitigation must be enabled manually via sysctl if desired, using sysctls machdep.spectremitigation and machdep.meltdownmitigation. Err codemadness.org 70 i 62145 HAMMER2 Err codemadness.org 70 i 62146 H2 has received a very large number of bug fixes and performance improvements. We can now recommend H2 as the default root filesystem in non-clustered mode. Err codemadness.org 70 i 62147 Clustered support is not yet available. Err codemadness.org 70 i 62148 ipfw Updates Err codemadness.org 70 i 62149 Implement state based "redirect", i.e. without using libalias. Err codemadness.org 70 i 62150 ipfw now supports all possible ICMP types. Err codemadness.org 70 i 62151 Fix ICMPMAXTYPE assumptions (now 40 as of this release). Err codemadness.org 70 i 62152 Improved graphics support Err codemadness.org 70 i 62153 The drm/i915 kernel driver has been updated to support Intel Coffeelake GPUs Err codemadness.org 70 i 62154 Add 24-bit pixel format support to the EFI frame buffer code. Err codemadness.org 70 i 62155 Significantly improve fbio support for the "scfb" XOrg driver. This allows EFI frame buffers to be used by X in situations where we do not otherwise support the GPU. Err codemadness.org 70 i 62156 Partly implement the FBIOBLANK ioctl for display powersaving. Err codemadness.org 70 i 62157 Syscons waits for drm modesetting at appropriate places, avoiding races. Err codemadness.org 70 i 62158 + For more details, check out the “All changes since DragonFly 5.0” section.
Err codemadness.org 70 i 62159
Err codemadness.org 70 i 62180 Commit cc63068 caused ENOSPC error when copy a large amount of files between two directories. The reason is that the patch limits zap leaf expansion to 2 retries, and return ENOSPC when failed.
Err codemadness.org 70 i 62204Err codemadness.org 70 i 62218 Err codemadness.org 70 i 62219Yesterday was the twentieth anniversary of my FreeBSD commit bit, and tomorrow will be the twentieth anniversary of my first commit. I figured I’d split the difference and write a few words about it today.
Err codemadness.org 70 i 62205 Err codemadness.org 70 i 62206My level of engagement with the FreeBSD project has varied greatly over the twenty years I’ve been a committer. There have been times when I worked on it full-time, and times when I did not touch it for months. The last few years, health issues and life events have consumed my time and sapped my energy, and my contributions have come in bursts. Commit statistics do not tell the whole story, though: even when not working on FreeBSD directly, I have worked on side projects which, like OpenPAM, may one day find their way into FreeBSD.
Err codemadness.org 70 i 62207 Err codemadness.org 70 i 62208My contributions have not been limited to code. I was the project’s first Bugmeister; I’ve served on the Security Team for a long time, and have been both Security Officer and Deputy Security Officer; I managed the last four Core Team elections and am doing so again this year.
Err codemadness.org 70 i 62209 Err codemadness.org 70 i 62210In return, the project has taught me much about programming and software engineering. It taught me code hygiene and the importance of clarity over cleverness; it taught me the ins and outs of revision control; it taught me the importance of good documentation, and how to write it; and it taught me good release engineering practices.
Err codemadness.org 70 i 62211 Err codemadness.org 70 i 62212Last but not least, it has provided me with the opportunity to work with some of the best people in the field. I have the privilege today to count several of them among my friends.
Err codemadness.org 70 i 62213 Err codemadness.org 70 i 62214For better or worse, the FreeBSD project has shaped my career and my life. It set me on the path to information security in general and IAA in particular, and opened many a door for me. I would not be where I am now without it.
Err codemadness.org 70 i 62215 Err codemadness.org 70 i 62216I won’t pretend to be able to tell the future. I don’t know how long I will remain active in the FreeBSD project and community. It could be another twenty years; or it could be ten, or five, or less. All I know is that FreeBSD and I still have things to teach each other, and I don’t intend to call it quits any time soon.
Err codemadness.org 70 i 62217
Err codemadness.org 70 i 62231Err codemadness.org 70 i 62233 Err codemadness.org 70 i 62234San Jose, Calif., April 10, 2018 — iXsystems, the leader in Enterprise Open Source servers and software-defined storage, announced the TrueNAS M40 and M50 as the newest high-performance models in its hybrid, unified storage product line. The TrueNAS M-Series harnesses NVMe and NVDIMM to bring all-flash array performance to the award-winning TrueNAS hybrid arrays. It also includes the Intel® Xeon® Scalable Family of Processors and supports up to 100GbE and 32Gb Fibre Channel networking. Sitting between the all-flash TrueNAS Z50 and the hybrid TrueNAS X-Series in the product line, the TrueNAS M-Series delivers up to 10 Petabytes of highly-available and flash-powered network attached storage and rounds out a comprehensive product set that has a capacity and performance option for every storage budget.
Err codemadness.org 70 i 62232
Err codemadness.org 70 i 62239Err codemadness.org 70 i 62245 Err codemadness.org 70 i 62246As a unified file, block, and object sharing solution, TrueNAS can meet the needs of file serving, backup, virtualization, media production, and private cloud users thanks to its support for the SMB, NFS, AFP, iSCSI, Fibre Channel, and S3 protocols.
Err codemadness.org 70 i 62240 Err codemadness.org 70 i 62241At the heart of the TrueNAS M-Series is a custom 4U, dual-controller head unit that supports up to 24 3.5” drives and comes in two models, the M40 and M50, for maximum flexibility and scalability. The TrueNAS M40 uses NVDIMMs for write cache, SSDs for read cache, and up to two external 60-bay expansion shelves that unlock up to 2PB in capacity. The TrueNAS M50 uses NVDIMMs for write caching, NVMe drives for read caching, and up to twelve external 60-bay expansion shelves to scale upwards of 10PB. The dual-controller design provides high-availability failover and non-disruptive upgrades for mission-critical enterprise environments.
Err codemadness.org 70 i 62242 Err codemadness.org 70 i 62243By design, the TrueNAS M-Series unleashes cutting-edge persistent memory technology for demanding performance and capacity workloads, enabling businesses to accelerate enterprise applications and deploy enterprise private clouds that are twice the capacity of previous TrueNAS models. It also supports replication to the Amazon S3, BackBlaze B2, Google Cloud, and Microsoft Azure cloud platforms and can deliver an object store using the ubiquitous S3 object storage protocol at a fraction of the cost of the public cloud.
Err codemadness.org 70 i 62244
Err codemadness.org 70 i 62251Err codemadness.org 70 i 62253 Err codemadness.org 70 i 62254As a true enterprise storage platform, the TrueNAS M50 supports very demanding performance workloads with up to four active 100GbE ports, 3TB of RAM, 32GB of NVDIMM write cache and up to 15TB of NVMe flash read cache. The TrueNAS M40 and M50 include up to 24/7 and global next-business-day support, putting IT at ease. The modular and tool-less design of the M-Series allows for easy, non-disruptive servicing and upgrading by end-users and support technicians for guaranteed uptime. TrueNAS has US-Based support provided by the engineering team that developed it, offering the rapid response that every enterprise needs.
Err codemadness.org 70 i 62252
Award-Winning TrueNAS Features
Err codemadness.org 70 i 62256 Err codemadness.org 70 i 62257Availability
Err codemadness.org 70 i 62269Err codemadness.org 70 i 62271 Err codemadness.org 70 i 62272The TrueNAS M40 and M50 will be generally available in April 2018 through the iXsystems global channel partner network. The TrueNAS M-Series starts at under $20,000 USD and can be easily expanded using a linear “per terabyte” pricing model. With typical compression, a Petabtye can be stored for under $100,000 USD. TrueNAS comes with an all-inclusive software suite that provides NFS, Windows SMB, iSCSI, snapshots, clones and replication.
Err codemadness.org 70 i 62270
``` Err codemadness.org 70 i 62282 Occasionally I noticed that the system would not quickly process the Err codemadness.org 70 i 62283 tasks i need done, but instead prefer other, longrunning tasks. I Err codemadness.org 70 i 62284 figured it must be related to the scheduler, and decided it hates me.
Err codemadness.org 70 i 62285 Err codemadness.org 70 i 62286A closer look shows the behaviour as follows (single CPU):
Err codemadness.org 70 i 62287 Err codemadness.org 70 i 62288Lets run an I/O-active task, e.g, postgres VACUUM that would Err codemadness.org 70 i 62289 continuously read from big files (while doing compute as well [1]):
Err codemadness.org 70 i 62290 Err codemadness.org 70 i 62291Err codemadness.org 70 i 62292Err codemadness.org 70 i 62296 Err codemadness.org 70 i 62297pool alloc free read write read write Err codemadness.org 70 i 62293 cache - - - - - - Err codemadness.org 70 i 62294 ada1s4 7.08G 10.9G 1.58K 0 12.9M 0
Err codemadness.org 70 i 62295
Now start an endless loop:
Err codemadness.org 70 i 62298 Err codemadness.org 70 i 62299And the effect is:
Err codemadness.org 70 i 62302 Err codemadness.org 70 i 62303Err codemadness.org 70 i 62304Err codemadness.org 70 i 62308 Err codemadness.org 70 i 62309pool alloc free read write read write Err codemadness.org 70 i 62305 cache - - - - - - Err codemadness.org 70 i 62306 ada1s4 7.08G 10.9G 9 0 76.8K 0
Err codemadness.org 70 i 62307
The VACUUM gets almost stuck! This figures with WCPU in "top":
Err codemadness.org 70 i 62310 Err codemadness.org 70 i 62311Err codemadness.org 70 i 62312Err codemadness.org 70 i 62316 Err codemadness.org 70 i 62317PID USERNAME PRI NICE SIZE RES STATE TIME WCPU COMMAND Err codemadness.org 70 i 62313 85583 root 99 0 7044K 1944K RUN 1:06 92.21% bash Err codemadness.org 70 i 62314 53005 pgsql 52 0 620M 91856K RUN 5:47 0.50% postgres
Err codemadness.org 70 i 62315
Hacking on kern.sched.quantum makes it quite a bit better:
Err codemadness.org 70 i 62318 Err codemadness.org 70 i 62319kern.sched.quantum: 94488 -> 7874
Err codemadness.org 70 i 62322 Err codemadness.org 70 i 62323Err codemadness.org 70 i 62324Err codemadness.org 70 i 62332 Err codemadness.org 70 i 62333pool alloc free read write read write Err codemadness.org 70 i 62325 cache - - - - - - Err codemadness.org 70 i 62326 ada1s4 7.08G 10.9G 395 0 3.12M 0
Err codemadness.org 70 i 62327 Err codemadness.org 70 i 62328PID USERNAME PRI NICE SIZE RES STATE TIME WCPU COMMAND Err codemadness.org 70 i 62329 85583 root 94 0 7044K 1944K RUN 4:13 70.80% bash Err codemadness.org 70 i 62330 53005 pgsql 52 0 276M 91856K RUN 5:52 11.83% postgres
Err codemadness.org 70 i 62331
Now, as usual, the "root-cause" questions arise: What exactly does Err codemadness.org 70 i 62334 this "quantum"? Is this solution a workaround, i.e. actually something Err codemadness.org 70 i 62335 else is wrong, and has it tradeoff in other situations? Or otherwise, Err codemadness.org 70 i 62336 why is such a default value chosen, which appears to be ill-deceived?
Err codemadness.org 70 i 62337 Err codemadness.org 70 i 62338The docs for the quantum parameter are a bit unsatisfying - they say Err codemadness.org 70 i 62339 its the max num of ticks a process gets - and what happens when Err codemadness.org 70 i 62340 they're exhausted? If by default the endless loop is actually allowed Err codemadness.org 70 i 62341 to continue running for 94k ticks (or 94ms, more likely) uninterrupted, Err codemadness.org 70 i 62342 then that explains the perceived behaviour - buts thats certainly not Err codemadness.org 70 i 62343 what a scheduler should do when other procs are ready to run.
Err codemadness.org 70 i 62344 Err codemadness.org 70 i 6234511.1-RELEASE-p7, kern.hz=200. Switching tickless mode on or off does Err codemadness.org 70 i 62346 not influence the matter. Starting the endless loop with "nice" does Err codemadness.org 70 i 62347 not influence the matter.
Err codemadness.org 70 i 62348 Err codemadness.org 70 i 62349[1] Err codemadness.org 70 i 62350 A pure-I/O job without compute load, like "dd", does not show Err codemadness.org 70 i 62351 this behaviour. Also, when other tasks are running, the unjust Err codemadness.org 70 i 62352 behaviour is not so stongly pronounced. Err codemadness.org 70 i 62353 ```
Err codemadness.org 70 i 62354 Err codemadness.org 70 i 62355Err codemadness.org 70 i 62360Err codemadness.org 70 i 62362 Err codemadness.org 70 i 62363I have committed about adding initial support for aarch64.
Err codemadness.org 70 i 62361
``` Err codemadness.org 70 i 62368 boot NetBSD/evbarm (aarch64) Err codemadness.org 70 i 62369 Drop to EL1...OK Err codemadness.org 70 i 62370 Creating VA=PA tables Err codemadness.org 70 i 62371 Creating KSEG tables Err codemadness.org 70 i 62372 Creating KVA=PA tables Err codemadness.org 70 i 62373 Creating devmap tables Err codemadness.org 70 i 62374 MMU Enable...OK Err codemadness.org 70 i 62375 VSTART = ffffffc000001ff4 Err codemadness.org 70 i 62376 FDT<3ab46000> devmap cpufunc bootstrap consinit ok Err codemadness.org 70 i 62377 uboot: args 0x3ab46000, 0, 0, 0
Err codemadness.org 70 i 62378 Err codemadness.org 70 i 62379NetBSD/evbarm (fdt) booting ... Err codemadness.org 70
i 62380 FDT /memory [0] @ 0x0 size 0x3b000000 Err codemadness.org 70
i 62381 MEM: add 0-3b000000 Err codemadness.org 70
i 62382 MEM: res 0-1000 Err codemadness.org 70
i 62383 MEM: res 3ab46000-3ab4a000 Err codemadness.org 70
i 62384 Usable memory: Err codemadness.org 70
i 62385 1000 - 3ab45fff Err codemadness.org 70
i 62386 3ab4a000 - 3affffff Err codemadness.org 70
i 62387 initarm: kernel phys start 1000000 end 17bd000 Err codemadness.org 70
i 62388 MEM: res 1000000-17bd000 Err codemadness.org 70
i 62389 bootargs: root=axe0 Err codemadness.org 70
i 62390 1000 - ffffff Err codemadness.org 70
i 62391 17bd000 - 3ab45fff Err codemadness.org 70
i 62392 3ab4a000 - 3affffff Err codemadness.org 70
i 62393 ------------------------------------------ Err codemadness.org 70
i 62394 kern_vtopdiff = 0xffffffbfff000000 Err codemadness.org 70
i 62395 physical_start = 0x0000000000001000 Err codemadness.org 70
i 62396 kernel_start_phys = 0x0000000001000000 Err codemadness.org 70
i 62397 kernel_end_phys = 0x00000000017bd000 Err codemadness.org 70
i 62398 physical_end = 0x000000003ab45000 Err codemadness.org 70
i 62399 VM_MIN_KERNEL_ADDRESS = 0xffffffc000000000 Err codemadness.org 70
i 62400 kernel_start_l2 = 0xffffffc000000000 Err codemadness.org 70
i 62401 kernel_start = 0xffffffc000000000 Err codemadness.org 70
i 62402 kernel_end = 0xffffffc0007bd000 Err codemadness.org 70
i 62403 kernel_end_l2 = 0xffffffc000800000 Err codemadness.org 70
i 62404 (kernel va area) Err codemadness.org 70
i 62405 (devmap va area) Err codemadness.org 70
i 62406 VM_MAX_KERNEL_ADDRESS = 0xffffffffffe00000 Err codemadness.org 70
i 62407 ------------------------------------------ Err codemadness.org 70
i 62408 Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, Err codemadness.org 70
i 62409 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, Err codemadness.org 70
i 62410 2018 The NetBSD Foundation, Inc. All rights reserved. Err codemadness.org 70
i 62411 Copyright (c) 1982, 1986, 1989, 1991, 1993 Err codemadness.org 70
i 62412 The Regents of the University of California. All rights reserved. Err codemadness.org 70
i 62413 Err codemadness.org 70
i 62414 NetBSD 8.99.14 (RPI64) #11: Fri Mar 30 12:34:19 JST 2018 Err codemadness.org 70
i 62415 ryo@moveq:/usr/home/ryo/tmp/netbsd-src-ryo-wip/sys/arch/evbarm/compile/RPI64 Err codemadness.org 70
i 62416 total memory = 936 MB Err codemadness.org 70
i 62417 avail memory = 877 MB Err codemadness.org 70
i 62418 Err codemadness.org 70
i 62419 Err codemadness.org 70
i 62420 …
Err codemadness.org 70 i 62421 Err codemadness.org 70 i 62422Starting local daemons:. Err codemadness.org 70
i 62423 Updating motd. Err codemadness.org 70
i 62424 Starting sshd. Err codemadness.org 70
i 62425 Starting inetd. Err codemadness.org 70
i 62426 Starting cron. Err codemadness.org 70
i 62427 The following components reported failures: Err codemadness.org 70
i 62428 /etc/rc.d/swap2 Err codemadness.org 70
i 62429 See /var/run/rc.log for more information. Err codemadness.org 70
i 62430 Fri Mar 30 12:35:31 JST 2018 Err codemadness.org 70
i 62431 Err codemadness.org 70
i 62432 NetBSD/evbarm (rpi3) (console) Err codemadness.org 70
i 62433 Err codemadness.org 70
i 62434 login: root Err codemadness.org 70
i 62435 Last login: Fri Mar 30 12:30:24 2018 on console Err codemadness.org 70
i 62436 Err codemadness.org 70
i 62437 rpi3# uname -ap Err codemadness.org 70
i 62438 NetBSD rpi3 8.99.14 NetBSD 8.99.14 (RPI64) #11: Fri Mar 30 12:34:19 JST 2018 ryo@moveq:/usr/home/ryo/tmp/netbsd-src-ryo-wip/sys/arch/evbarm/compile/RPI64 evbarm aarch64 Err codemadness.org 70
i 62439 rpi3# Err codemadness.org 70
i 62440 Err codemadness.org 70
i 62441 Err codemadness.org 70
i 62442 ```
Err codemadness.org 70 i 62443 Err codemadness.org 70 i 62444Err codemadness.org 70 i 62445Err codemadness.org 70 i 62452 Err codemadness.org 70 i 62453Now, multiuser mode works stably on fdt based boards (RPI3,SUNXI,TEGRA). But there are still some problems, more time is required for release. also SMP is not yet. See sys/arch/aarch64/aarch64/TODO for more detail. Especially the problems around TLS of rtld, and C++ stack unwindings are too difficult for me to solve, I give up and need someone's help (^o^)/ Since C++ doesn't work, ATF also doesn't work. If the ATF works, it will clarify more issues.
Err codemadness.org 70 i 62446 Err codemadness.org 70 i 62447sys/arch/evbarm64 is gone and integrated into sys/arch/evbarm. One evbarm/conf/GENERIC64 kernel binary supports all fdt (bcm2837,sunxi,tegra) based boards. While on 32bit, sys/arch/evbarm/conf/GENERIC will support all fdt based boards...but doesn't work yet. (WIP)
Err codemadness.org 70 i 62448 Err codemadness.org 70 i 62449My deepest appreciation goes to Tohru Nishimura (nisimura@) whose writes vector handlers, context switchings, and so on. and his comments and suggestions were innumerably valuable. I would also like to thank Nick Hudson (skrll@) and Jared McNeill (jmcneill@) whose added support FDT and integrated into evbarm. Finally, I would like to thank Matt Thomas (matt@) whose commited aarch64 Err codemadness.org 70 i 62450 toolchains and preliminary support for aarch64.
Err codemadness.org 70 i 62451
Err codemadness.org 70 i 62497 Improved HW support, including: Err codemadness.org 70 i 62498 SMP support on OpenBSD/arm64 platforms Err codemadness.org 70 i 62499 vmm/vmd improvements: Err codemadness.org 70 i 62500 IEEE 802.11 wireless stack improvements Err codemadness.org 70 i 62501 Generic network stack improvements Err codemadness.org 70 i 62502 Installer improvements Err codemadness.org 70 i 62503 Routing daemons and other userland network improvements Err codemadness.org 70 i 62504 Security improvements Err codemadness.org 70 i 62505 dhclient(8) improvements Err codemadness.org 70 i 62506 Assorted improvements Err codemadness.org 70 i 62507 OpenSMTPD 6.0.4 Err codemadness.org 70 i 62508 OpenSSH 7.7 Err codemadness.org 70 i 62509 LibreSSL 2.7.2
Err codemadness.org 70 i 62519Err codemadness.org 70 i 62537 Err codemadness.org 70 i 62538Big-ticket items Err codemadness.org 70 i 62520 Meltdown and Spectre mitigation support Err codemadness.org 70 i 62521 Meltdown isolation and spectre mitigation support added. Meltdown mitigation is automatically enabled for all Intel cpus. Spectre mitigation must be enabled manually via sysctl if desired, using sysctls machdep.spectremitigation and machdep.meltdownmitigation. Err codemadness.org 70 i 62522 HAMMER2 Err codemadness.org 70 i 62523 H2 has received a very large number of bug fixes and performance improvements. We can now recommend H2 as the default root filesystem in non-clustered mode. Err codemadness.org 70 i 62524 Clustered support is not yet available. Err codemadness.org 70 i 62525 ipfw Updates Err codemadness.org 70 i 62526 Implement state based "redirect", i.e. without using libalias. Err codemadness.org 70 i 62527 ipfw now supports all possible ICMP types. Err codemadness.org 70 i 62528 Fix ICMPMAXTYPE assumptions (now 40 as of this release). Err codemadness.org 70 i 62529 Improved graphics support Err codemadness.org 70 i 62530 The drm/i915 kernel driver has been updated to support Intel Coffeelake GPUs Err codemadness.org 70 i 62531 Add 24-bit pixel format support to the EFI frame buffer code. Err codemadness.org 70 i 62532 Significantly improve fbio support for the "scfb" XOrg driver. This allows EFI frame buffers to be used by X in situations where we do not otherwise support the GPU. Err codemadness.org 70 i 62533 Partly implement the FBIOBLANK ioctl for display powersaving. Err codemadness.org 70 i 62534 Syscons waits for drm modesetting at appropriate places, avoiding races. Err codemadness.org 70 i 62535 + For more details, check out the “All changes since DragonFly 5.0” section.
Err codemadness.org 70 i 62536
Err codemadness.org 70 i 62557 Commit cc63068 caused ENOSPC error when copy a large amount of files between two directories. The reason is that the patch limits zap leaf expansion to 2 retries, and return ENOSPC when failed.
Err codemadness.org 70 i 62581Err codemadness.org 70 i 62595 Err codemadness.org 70 i 62596Yesterday was the twentieth anniversary of my FreeBSD commit bit, and tomorrow will be the twentieth anniversary of my first commit. I figured I’d split the difference and write a few words about it today.
Err codemadness.org 70 i 62582 Err codemadness.org 70 i 62583My level of engagement with the FreeBSD project has varied greatly over the twenty years I’ve been a committer. There have been times when I worked on it full-time, and times when I did not touch it for months. The last few years, health issues and life events have consumed my time and sapped my energy, and my contributions have come in bursts. Commit statistics do not tell the whole story, though: even when not working on FreeBSD directly, I have worked on side projects which, like OpenPAM, may one day find their way into FreeBSD.
Err codemadness.org 70 i 62584 Err codemadness.org 70 i 62585My contributions have not been limited to code. I was the project’s first Bugmeister; I’ve served on the Security Team for a long time, and have been both Security Officer and Deputy Security Officer; I managed the last four Core Team elections and am doing so again this year.
Err codemadness.org 70 i 62586 Err codemadness.org 70 i 62587In return, the project has taught me much about programming and software engineering. It taught me code hygiene and the importance of clarity over cleverness; it taught me the ins and outs of revision control; it taught me the importance of good documentation, and how to write it; and it taught me good release engineering practices.
Err codemadness.org 70 i 62588 Err codemadness.org 70 i 62589Last but not least, it has provided me with the opportunity to work with some of the best people in the field. I have the privilege today to count several of them among my friends.
Err codemadness.org 70 i 62590 Err codemadness.org 70 i 62591For better or worse, the FreeBSD project has shaped my career and my life. It set me on the path to information security in general and IAA in particular, and opened many a door for me. I would not be where I am now without it.
Err codemadness.org 70 i 62592 Err codemadness.org 70 i 62593I won’t pretend to be able to tell the future. I don’t know how long I will remain active in the FreeBSD project and community. It could be another twenty years; or it could be ten, or five, or less. All I know is that FreeBSD and I still have things to teach each other, and I don’t intend to call it quits any time soon.
Err codemadness.org 70 i 62594
Err codemadness.org 70 i 62608Err codemadness.org 70 i 62610 Err codemadness.org 70 i 62611San Jose, Calif., April 10, 2018 — iXsystems, the leader in Enterprise Open Source servers and software-defined storage, announced the TrueNAS M40 and M50 as the newest high-performance models in its hybrid, unified storage product line. The TrueNAS M-Series harnesses NVMe and NVDIMM to bring all-flash array performance to the award-winning TrueNAS hybrid arrays. It also includes the Intel® Xeon® Scalable Family of Processors and supports up to 100GbE and 32Gb Fibre Channel networking. Sitting between the all-flash TrueNAS Z50 and the hybrid TrueNAS X-Series in the product line, the TrueNAS M-Series delivers up to 10 Petabytes of highly-available and flash-powered network attached storage and rounds out a comprehensive product set that has a capacity and performance option for every storage budget.
Err codemadness.org 70 i 62609
Err codemadness.org 70 i 62616Err codemadness.org 70 i 62622 Err codemadness.org 70 i 62623As a unified file, block, and object sharing solution, TrueNAS can meet the needs of file serving, backup, virtualization, media production, and private cloud users thanks to its support for the SMB, NFS, AFP, iSCSI, Fibre Channel, and S3 protocols.
Err codemadness.org 70 i 62617 Err codemadness.org 70 i 62618At the heart of the TrueNAS M-Series is a custom 4U, dual-controller head unit that supports up to 24 3.5” drives and comes in two models, the M40 and M50, for maximum flexibility and scalability. The TrueNAS M40 uses NVDIMMs for write cache, SSDs for read cache, and up to two external 60-bay expansion shelves that unlock up to 2PB in capacity. The TrueNAS M50 uses NVDIMMs for write caching, NVMe drives for read caching, and up to twelve external 60-bay expansion shelves to scale upwards of 10PB. The dual-controller design provides high-availability failover and non-disruptive upgrades for mission-critical enterprise environments.
Err codemadness.org 70 i 62619 Err codemadness.org 70 i 62620By design, the TrueNAS M-Series unleashes cutting-edge persistent memory technology for demanding performance and capacity workloads, enabling businesses to accelerate enterprise applications and deploy enterprise private clouds that are twice the capacity of previous TrueNAS models. It also supports replication to the Amazon S3, BackBlaze B2, Google Cloud, and Microsoft Azure cloud platforms and can deliver an object store using the ubiquitous S3 object storage protocol at a fraction of the cost of the public cloud.
Err codemadness.org 70 i 62621
Err codemadness.org 70 i 62628Err codemadness.org 70 i 62630 Err codemadness.org 70 i 62631As a true enterprise storage platform, the TrueNAS M50 supports very demanding performance workloads with up to four active 100GbE ports, 3TB of RAM, 32GB of NVDIMM write cache and up to 15TB of NVMe flash read cache. The TrueNAS M40 and M50 include up to 24/7 and global next-business-day support, putting IT at ease. The modular and tool-less design of the M-Series allows for easy, non-disruptive servicing and upgrading by end-users and support technicians for guaranteed uptime. TrueNAS has US-Based support provided by the engineering team that developed it, offering the rapid response that every enterprise needs.
Err codemadness.org 70 i 62629
Award-Winning TrueNAS Features
Err codemadness.org 70 i 62633 Err codemadness.org 70 i 62634Availability
Err codemadness.org 70 i 62646Err codemadness.org 70 i 62648 Err codemadness.org 70 i 62649The TrueNAS M40 and M50 will be generally available in April 2018 through the iXsystems global channel partner network. The TrueNAS M-Series starts at under $20,000 USD and can be easily expanded using a linear “per terabyte” pricing model. With typical compression, a Petabtye can be stored for under $100,000 USD. TrueNAS comes with an all-inclusive software suite that provides NFS, Windows SMB, iSCSI, snapshots, clones and replication.
Err codemadness.org 70 i 62647
``` Err codemadness.org 70 i 62659 Occasionally I noticed that the system would not quickly process the Err codemadness.org 70 i 62660 tasks i need done, but instead prefer other, longrunning tasks. I Err codemadness.org 70 i 62661 figured it must be related to the scheduler, and decided it hates me.
Err codemadness.org 70 i 62662 Err codemadness.org 70 i 62663A closer look shows the behaviour as follows (single CPU):
Err codemadness.org 70 i 62664 Err codemadness.org 70 i 62665Lets run an I/O-active task, e.g, postgres VACUUM that would Err codemadness.org 70 i 62666 continuously read from big files (while doing compute as well [1]):
Err codemadness.org 70 i 62667 Err codemadness.org 70 i 62668Err codemadness.org 70 i 62669Err codemadness.org 70 i 62673 Err codemadness.org 70 i 62674pool alloc free read write read write Err codemadness.org 70 i 62670 cache - - - - - - Err codemadness.org 70 i 62671 ada1s4 7.08G 10.9G 1.58K 0 12.9M 0
Err codemadness.org 70 i 62672
Now start an endless loop:
Err codemadness.org 70 i 62675 Err codemadness.org 70 i 62676And the effect is:
Err codemadness.org 70 i 62679 Err codemadness.org 70 i 62680Err codemadness.org 70 i 62681Err codemadness.org 70 i 62685 Err codemadness.org 70 i 62686pool alloc free read write read write Err codemadness.org 70 i 62682 cache - - - - - - Err codemadness.org 70 i 62683 ada1s4 7.08G 10.9G 9 0 76.8K 0
Err codemadness.org 70 i 62684
The VACUUM gets almost stuck! This figures with WCPU in "top":
Err codemadness.org 70 i 62687 Err codemadness.org 70 i 62688Err codemadness.org 70 i 62689Err codemadness.org 70 i 62693 Err codemadness.org 70 i 62694PID USERNAME PRI NICE SIZE RES STATE TIME WCPU COMMAND Err codemadness.org 70 i 62690 85583 root 99 0 7044K 1944K RUN 1:06 92.21% bash Err codemadness.org 70 i 62691 53005 pgsql 52 0 620M 91856K RUN 5:47 0.50% postgres
Err codemadness.org 70 i 62692
Hacking on kern.sched.quantum makes it quite a bit better:
Err codemadness.org 70 i 62695 Err codemadness.org 70 i 62696kern.sched.quantum: 94488 -> 7874
Err codemadness.org 70 i 62699 Err codemadness.org 70 i 62700Err codemadness.org 70 i 62701Err codemadness.org 70 i 62709 Err codemadness.org 70 i 62710pool alloc free read write read write Err codemadness.org 70 i 62702 cache - - - - - - Err codemadness.org 70 i 62703 ada1s4 7.08G 10.9G 395 0 3.12M 0
Err codemadness.org 70 i 62704 Err codemadness.org 70 i 62705PID USERNAME PRI NICE SIZE RES STATE TIME WCPU COMMAND Err codemadness.org 70 i 62706 85583 root 94 0 7044K 1944K RUN 4:13 70.80% bash Err codemadness.org 70 i 62707 53005 pgsql 52 0 276M 91856K RUN 5:52 11.83% postgres
Err codemadness.org 70 i 62708
Now, as usual, the "root-cause" questions arise: What exactly does Err codemadness.org 70 i 62711 this "quantum"? Is this solution a workaround, i.e. actually something Err codemadness.org 70 i 62712 else is wrong, and has it tradeoff in other situations? Or otherwise, Err codemadness.org 70 i 62713 why is such a default value chosen, which appears to be ill-deceived?
Err codemadness.org 70 i 62714 Err codemadness.org 70 i 62715The docs for the quantum parameter are a bit unsatisfying - they say Err codemadness.org 70 i 62716 its the max num of ticks a process gets - and what happens when Err codemadness.org 70 i 62717 they're exhausted? If by default the endless loop is actually allowed Err codemadness.org 70 i 62718 to continue running for 94k ticks (or 94ms, more likely) uninterrupted, Err codemadness.org 70 i 62719 then that explains the perceived behaviour - buts thats certainly not Err codemadness.org 70 i 62720 what a scheduler should do when other procs are ready to run.
Err codemadness.org 70 i 62721 Err codemadness.org 70 i 6272211.1-RELEASE-p7, kern.hz=200. Switching tickless mode on or off does Err codemadness.org 70 i 62723 not influence the matter. Starting the endless loop with "nice" does Err codemadness.org 70 i 62724 not influence the matter.
Err codemadness.org 70 i 62725 Err codemadness.org 70 i 62726[1] Err codemadness.org 70 i 62727 A pure-I/O job without compute load, like "dd", does not show Err codemadness.org 70 i 62728 this behaviour. Also, when other tasks are running, the unjust Err codemadness.org 70 i 62729 behaviour is not so stongly pronounced. Err codemadness.org 70 i 62730 ```
Err codemadness.org 70 i 62731 Err codemadness.org 70 i 62732Err codemadness.org 70 i 62737Err codemadness.org 70 i 62739 Err codemadness.org 70 i 62740I have committed about adding initial support for aarch64.
Err codemadness.org 70 i 62738
``` Err codemadness.org 70 i 62745 boot NetBSD/evbarm (aarch64) Err codemadness.org 70 i 62746 Drop to EL1...OK Err codemadness.org 70 i 62747 Creating VA=PA tables Err codemadness.org 70 i 62748 Creating KSEG tables Err codemadness.org 70 i 62749 Creating KVA=PA tables Err codemadness.org 70 i 62750 Creating devmap tables Err codemadness.org 70 i 62751 MMU Enable...OK Err codemadness.org 70 i 62752 VSTART = ffffffc000001ff4 Err codemadness.org 70 i 62753 FDT<3ab46000> devmap cpufunc bootstrap consinit ok Err codemadness.org 70 i 62754 uboot: args 0x3ab46000, 0, 0, 0
Err codemadness.org 70 i 62755 Err codemadness.org 70 i 62756NetBSD/evbarm (fdt) booting ... Err codemadness.org 70
i 62757 FDT /memory [0] @ 0x0 size 0x3b000000 Err codemadness.org 70
i 62758 MEM: add 0-3b000000 Err codemadness.org 70
i 62759 MEM: res 0-1000 Err codemadness.org 70
i 62760 MEM: res 3ab46000-3ab4a000 Err codemadness.org 70
i 62761 Usable memory: Err codemadness.org 70
i 62762 1000 - 3ab45fff Err codemadness.org 70
i 62763 3ab4a000 - 3affffff Err codemadness.org 70
i 62764 initarm: kernel phys start 1000000 end 17bd000 Err codemadness.org 70
i 62765 MEM: res 1000000-17bd000 Err codemadness.org 70
i 62766 bootargs: root=axe0 Err codemadness.org 70
i 62767 1000 - ffffff Err codemadness.org 70
i 62768 17bd000 - 3ab45fff Err codemadness.org 70
i 62769 3ab4a000 - 3affffff Err codemadness.org 70
i 62770 ------------------------------------------ Err codemadness.org 70
i 62771 kern_vtopdiff = 0xffffffbfff000000 Err codemadness.org 70
i 62772 physical_start = 0x0000000000001000 Err codemadness.org 70
i 62773 kernel_start_phys = 0x0000000001000000 Err codemadness.org 70
i 62774 kernel_end_phys = 0x00000000017bd000 Err codemadness.org 70
i 62775 physical_end = 0x000000003ab45000 Err codemadness.org 70
i 62776 VM_MIN_KERNEL_ADDRESS = 0xffffffc000000000 Err codemadness.org 70
i 62777 kernel_start_l2 = 0xffffffc000000000 Err codemadness.org 70
i 62778 kernel_start = 0xffffffc000000000 Err codemadness.org 70
i 62779 kernel_end = 0xffffffc0007bd000 Err codemadness.org 70
i 62780 kernel_end_l2 = 0xffffffc000800000 Err codemadness.org 70
i 62781 (kernel va area) Err codemadness.org 70
i 62782 (devmap va area) Err codemadness.org 70
i 62783 VM_MAX_KERNEL_ADDRESS = 0xffffffffffe00000 Err codemadness.org 70
i 62784 ------------------------------------------ Err codemadness.org 70
i 62785 Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, Err codemadness.org 70
i 62786 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, Err codemadness.org 70
i 62787 2018 The NetBSD Foundation, Inc. All rights reserved. Err codemadness.org 70
i 62788 Copyright (c) 1982, 1986, 1989, 1991, 1993 Err codemadness.org 70
i 62789 The Regents of the University of California. All rights reserved. Err codemadness.org 70
i 62790 Err codemadness.org 70
i 62791 NetBSD 8.99.14 (RPI64) #11: Fri Mar 30 12:34:19 JST 2018 Err codemadness.org 70
i 62792 ryo@moveq:/usr/home/ryo/tmp/netbsd-src-ryo-wip/sys/arch/evbarm/compile/RPI64 Err codemadness.org 70
i 62793 total memory = 936 MB Err codemadness.org 70
i 62794 avail memory = 877 MB Err codemadness.org 70
i 62795 Err codemadness.org 70
i 62796 Err codemadness.org 70
i 62797 …
Err codemadness.org 70 i 62798 Err codemadness.org 70 i 62799Starting local daemons:. Err codemadness.org 70
i 62800 Updating motd. Err codemadness.org 70
i 62801 Starting sshd. Err codemadness.org 70
i 62802 Starting inetd. Err codemadness.org 70
i 62803 Starting cron. Err codemadness.org 70
i 62804 The following components reported failures: Err codemadness.org 70
i 62805 /etc/rc.d/swap2 Err codemadness.org 70
i 62806 See /var/run/rc.log for more information. Err codemadness.org 70
i 62807 Fri Mar 30 12:35:31 JST 2018 Err codemadness.org 70
i 62808 Err codemadness.org 70
i 62809 NetBSD/evbarm (rpi3) (console) Err codemadness.org 70
i 62810 Err codemadness.org 70
i 62811 login: root Err codemadness.org 70
i 62812 Last login: Fri Mar 30 12:30:24 2018 on console Err codemadness.org 70
i 62813 Err codemadness.org 70
i 62814 rpi3# uname -ap Err codemadness.org 70
i 62815 NetBSD rpi3 8.99.14 NetBSD 8.99.14 (RPI64) #11: Fri Mar 30 12:34:19 JST 2018 ryo@moveq:/usr/home/ryo/tmp/netbsd-src-ryo-wip/sys/arch/evbarm/compile/RPI64 evbarm aarch64 Err codemadness.org 70
i 62816 rpi3# Err codemadness.org 70
i 62817 Err codemadness.org 70
i 62818 Err codemadness.org 70
i 62819 ```
Err codemadness.org 70 i 62820 Err codemadness.org 70 i 62821Err codemadness.org 70 i 62822Err codemadness.org 70 i 62829 Err codemadness.org 70 i 62830Now, multiuser mode works stably on fdt based boards (RPI3,SUNXI,TEGRA). But there are still some problems, more time is required for release. also SMP is not yet. See sys/arch/aarch64/aarch64/TODO for more detail. Especially the problems around TLS of rtld, and C++ stack unwindings are too difficult for me to solve, I give up and need someone's help (^o^)/ Since C++ doesn't work, ATF also doesn't work. If the ATF works, it will clarify more issues.
Err codemadness.org 70 i 62823 Err codemadness.org 70 i 62824sys/arch/evbarm64 is gone and integrated into sys/arch/evbarm. One evbarm/conf/GENERIC64 kernel binary supports all fdt (bcm2837,sunxi,tegra) based boards. While on 32bit, sys/arch/evbarm/conf/GENERIC will support all fdt based boards...but doesn't work yet. (WIP)
Err codemadness.org 70 i 62825 Err codemadness.org 70 i 62826My deepest appreciation goes to Tohru Nishimura (nisimura@) whose writes vector handlers, context switchings, and so on. and his comments and suggestions were innumerably valuable. I would also like to thank Nick Hudson (skrll@) and Jared McNeill (jmcneill@) whose added support FDT and integrated into evbarm. Finally, I would like to thank Matt Thomas (matt@) whose commited aarch64 Err codemadness.org 70 i 62827 toolchains and preliminary support for aarch64.
Err codemadness.org 70 i 62828
Err codemadness.org 70 i 63135Err codemadness.org 70 i 63137 Err codemadness.org 70 i 63138The TrueOS team is pleased to announce the availability of a new STABLE release of the TrueOS project (version 18.03). This is a special release due to the security issues impacting the computing world since the beginning of 2018. In particular, mitigating the “Meltdown” and “Spectre” system exploits make it necessary to update the entire package ecosystem for TrueOS. This release does not replace the scheduled June STABLE update, but provides the necessary and expected security updates for the STABLE release branch of TrueOS, even though this is part-way through our normal release cycle.
Err codemadness.org 70 i 63136
Important changes between version 17.12 and 18.03
Err codemadness.org 70 i 63140 Err codemadness.org 70 i 63141Err codemadness.org 70 i 63146Err codemadness.org 70 i 63148 Err codemadness.org 70 i 63149Most systems will need microcode updates for additional Spectre mitigations. The microcode updates are not enabled by default. This work is considered experimental because it is in active development by the upstream vendors. If desired, the microcode updates are available with the new devcpu-data package, which is available in the Appcafe. Install this package and enable the new microcode_update service to apply the latest runtime code when booting the system.
Err codemadness.org 70 i 63147
Important security-based package updates
Err codemadness.org 70 i 63151 Err codemadness.org 70 i 63152All pre-compiled packages for this release are built with the latest versions of LLVM/Clang, unless the package explicitly requires GCC. These packages also utilize the latest compile-time mitigations for memory-access security concerns.
Err codemadness.org 70 i 63166Err codemadness.org 70 i 63168 Err codemadness.org 70 i 63169F-Stack is an user space network development kit with high performance based on DPDK, FreeBSD TCP/IP stack and coroutine API. http://www.f-stack.org
Err codemadness.org 70 i 63167
Introduction Err codemadness.org 70 i 63171 With the rapid development of NIC, the poor performance of data packets processing with Linux kernel has become the bottleneck. However, the rapid development of the Internet needs high performance of network processing, kernel bypass has caught more and more attentions. There are various similar technologies appear, such as DPDK, NETMAP and PF_RING. The main idea of kernel bypass is that Linux is only used to deal with control flow, all data streams are processed in user space. Therefore, kernel bypass can avoid performance bottlenecks caused by kernel packet copying, thread scheduling, system calls and interrupts. Furthermore, kernel bypass can achieve higher performance with multi optimizing methods. Within various techniques, DPDK has been widely used because of its more thorough isolation from kernel scheduling and active community support.
F-Stack is an open source network framework with high performance based on DPDK. With following characteristics
Err codemadness.org 70 i 63173 Err codemadness.org 70 i 63174History
Err codemadness.org 70 i 63184Err codemadness.org 70 i 63194 Err codemadness.org 70 i 63195In order to deal with the increasingly severe DDoS attacks, authorized DNS server of Tencent Cloud DNSPod switched from Gigabit Ethernet to 10-Gigabit at the end of 2012. We faced several options, one is to continue to use the original model another is to use kernel bypass technology. After several rounds of investigation, we finally chose to develop our next generation of DNS server based on DPDK. The reason is DPDK provides ultra-high performance and can be seamlessly extended to 40G, or even 100G NIC in the future.
Err codemadness.org 70 i 63185 Err codemadness.org 70 i 63186After several months of development and testing, DKDNS, high-performance DNS server based on DPDK officially released in October 2013. It's capable of achieving up to 11 million QPS with a single 10GE port and 18.2 million QPS with two 10GE ports. And then we developed a user-space TCP/IP stack called F-Stack that can process 0.6 million RPS with a single 10GE port.
Err codemadness.org 70 i 63187 Err codemadness.org 70 i 63188With the fast growth of Tencent Cloud, more and more services need higher network access performance. Meanwhile, F-Stack was continuous improving driven by the business growth, and ultimately developed into a general network access framework. But this TCP/IP stack couldn't meet the needs of these services while continue to develop and maintain a complete network stack will cost high, we've tried several plans and finally determined to port FreeBSD(11.0 stable) TCP/IP stack into F-Stack. Thus, we can reduce the cost of maintenance and follow up the improvement from community quickly.Thanks to libplebnet and libuinet, this work becomes a lot easier.
Err codemadness.org 70 i 63189 Err codemadness.org 70 i 63190With the rapid development of all kinds of application, in order to help different APPs quick and easily use F-Stack, F-Stack has integrated Nginx, Redis and other commonly used APPs, and a micro thread framework, and provides a standard Epoll/Kqueue interface.
Err codemadness.org 70 i 63191 Err codemadness.org 70 i 63192Currently, besides authorized DNS server of DNSPod, there are various products in Tencent Cloud has used the F-Stack, such as HttpDNS (D+), COS access module, CDN access module, etc..
Err codemadness.org 70 i 63193
iXsystems
Err codemadness.org 70 i 63198 Err codemadness.org 70 i 63199Err codemadness.org 70 i 63206 There is a good chance you’ve never heard of open source software and an even greater one that you’re using it every day without even realizing it. Open source software is computer software that is available under a variety of licenses that all encourage the sharing of the software and its underlying source code. Open source has powered the internet from day one and today powers the cloud and just about everything connected to it from your mobile phone to virtually every internet of things device. Err codemadness.org 70 i 63207 FreeNAS is one of two open source operating systems that my company, iXsystems, develops and distributes free of charge and is at the heart of our line of TrueNAS enterprise storage products. While some of our competitors sell storage software similar to FreeNAS, we not only give it away but also do so with truly no strings attached -- competitors can and do take FreeNAS and build products based on it with zero obligation to share their changes. The freedom to do so is the fundamental tenet of permissively licensed open source software, and while it sounds self-defeating to be this generous, we’ve proven that leadership, not licensing, is the true secret to a successful open source business model. Err codemadness.org 70 i 63208 We each have our own personal definition of what is fair when it comes to open source. At iXsystems, we made a conscious decision to base FreeNAS and TrueOS on the FreeBSD operating system developed by the FreeBSD project. We stand on the shoulders of giants by using FreeBSD and we consider it quite reasonable to give back on the same generous terms that the FreeBSD project offers us. We could be selective in what we provide free of charge, but we believe that doing so would be short-sighted. In the long game we’re playing, the leadership we provide over the open source projects we produce is infinitely more important than any restrictions provided by the licenses of those and other open source projects. Err codemadness.org 70 i 63209 Twenty years in, we have no reason to change our free-software-on-great-hardware business model and giving away the software has brought an unexpected side-benefit: the largest Q/A department in the world, staffed by our passionate users who volunteer to let us know every thought they have about our software. We wouldn’t change a thing, and I encourage you to find exactly what win-win goodwill you and your company can provide to your constituents to make them not just a customer base but a community.
Err codemadness.org 70 i 63231Err codemadness.org 70 i 63249 Err codemadness.org 70 i 63250Jails basically partition a FreeBSD system into various isolated sub-systems called jails. The syscall and userspace tools first appeared in FreeBSD 4.0 (~ March 2000) with subsequent releases expanding functionality and improving existing features as well as usability. Err codemadness.org 70 i 63232 + For Linux users, jails are similar to LXC, used for resource/process isolation. Unlike LXC however, jails are a first-class concept and are well integrated into the base system. Essentially however, both offer a chroot-with-extra-separation feeling. Err codemadness.org 70 i 63233 Setting up a jail is a fairly simple process, which can essentially be split into three steps: Err codemadness.org 70 i 63234 + Place the stuff you want to run and the stuff it needs to run somewhere on your filesystem. Err codemadness.org 70 i 63235 + Add some basic configuration for the jail in jail.conf. Err codemadness.org 70 i 63236 + Fire up the jail. Err codemadness.org 70 i 63237 To confirm that the jail started successfully we can use the jls utility: Err codemadness.org 70 i 63238 We can now enter the jailed environment by using jexec, which will by default execute a root shell inside the named jail Err codemadness.org 70 i 63239 A jail can only see and use addresses that have been passed down to it by the parent system. This creates a slight problem with the loopback address: The host would probably like to keep that address to itself and not share it with any jail. Err codemadness.org 70 i 63240 Because of this, the loopback-address inside a jail is emulated by the system: Err codemadness.org 70 i 63241 + 127.0.0.1 is an alias for the first IPv4-address assigned to the jail. Err codemadness.org 70 i 63242 + ::1 is an alias for the first IPv6-address assigned to the jail. Err codemadness.org 70 i 63243 While this looks simple enough and usually works just fine[tm], it is also a source of many problems. Just imagine if your jail has only one single global IPv4 assigned to it. A daemon binding its (possibly unsecured) control port to the loopback-address would then unwillingly be exposed to the rest of the internet, which is hardly ever a good idea. Err codemadness.org 70 i 63244 + So, create an extra loopback adapter, and make the first IP in each jail a private loopback address Err codemadness.org 70 i 63245 + The tutorial goes on to cover making multiple jails share a single public IP address using NAT Err codemadness.org 70 i 63246 + It also covers more advanced concepts like ‘thin’ jails, to save some disk space if you are going to create a large number of jails, and how to upgrade them after the fact Err codemadness.org 70 i 63247 + Finally, it covers the integration with a lot of common tools, like identifying and filter jailed processes using top and ps, or using the package managers support for jails to install packages in a jail from the outside.
Err codemadness.org 70 i 63248
curl -C - -O https://us-east.manta.joyent.com/Joyent_Dev/public/SmartOS/smartos-latest.iso Err codemadness.org 70
i 63268 curl -C - -O https://us-east.manta.joyent.com/Joyent_Dev/public/SmartOS/smartos-latest-USB.img.bz2 Err codemadness.org 70
i 63269 curl -C - -O https://us-east.manta.joyent.com/Joyent_Dev/public/SmartOS/smartos-latest.vmwarevm.tar.bz2 Err codemadness.org 70
i 63270 Err codemadness.org 70
i 63271 Err codemadness.org 70
i 63272 A generated changelog is here: Err codemadness.org 70
i 63273 Err codemadness.org 70
i 63274 https://us-east.manta.joyent.com/Joyent_Dev/public/SmartOS/smartos.html#20180329T002644Z Err codemadness.org 70
i 63275 Err codemadness.org 70
i 63276 Err codemadness.org 70
i 63277 The full build bits directory, for those interested, is here in Manta: Err codemadness.org 70
i 63278 Err codemadness.org 70
i 63279 /Joyent_Dev/public/SmartOS/20180329T002644Z Err codemadness.org 70
i 63280 Err codemadness.org 70
i 63281 Err codemadness.org 70
i 63282 Err codemadness.org 70 i 63332Next year, we have the opportunity to have a BSD track, similar to the BSD Devroom at FOSDEM. We are looking for some volunteers in Southern California who can help organize this one or two-day event and help us educate more people about the BSDs. Let us know if you Err codemadness.org 70 i 63333 would like to help with this effort.
Err codemadness.org 70 i 63334
Err codemadness.org 70 i 63336Roll Call: #WhoUsesFreeBSD
Err codemadness.org 70 i 63337
Err codemadness.org 70 i 63339Many of you probably saw our post on social media asking Who Uses FreeBSD. Please help us answer this question to assist us in determining FreeBSD market share data, promote how companies are successfully using FreeBSD to encourage more companies to embrace Err codemadness.org 70 i 63340 FreeBSD, and to update the list of users on our website. Knowing who uses FreeBSD helps our contributors know where to look for jobs; knowing what universities teach with FreeBSD, helps companies know where to recruit, and knowing what products use FreeBSD helps us determine what features and technologies to support.
Err codemadness.org 70 i 63341
Err codemadness.org 70 i 63343New Hosting Partner: Oregon State University Open Source Lab
Err codemadness.org 70 i 63344
Tarsnap
Err codemadness.org 70 i 63364 Err codemadness.org 70 i 63365Err codemadness.org 70 i 63390Err codemadness.org 70 i 63392 Err codemadness.org 70 i 63393The TrueOS team is pleased to announce the availability of a new STABLE release of the TrueOS project (version 18.03). This is a special release due to the security issues impacting the computing world since the beginning of 2018. In particular, mitigating the “Meltdown” and “Spectre” system exploits make it necessary to update the entire package ecosystem for TrueOS. This release does not replace the scheduled June STABLE update, but provides the necessary and expected security updates for the STABLE release branch of TrueOS, even though this is part-way through our normal release cycle.
Err codemadness.org 70 i 63391
Important changes between version 17.12 and 18.03
Err codemadness.org 70 i 63395 Err codemadness.org 70 i 63396Err codemadness.org 70 i 63401Err codemadness.org 70 i 63403 Err codemadness.org 70 i 63404Most systems will need microcode updates for additional Spectre mitigations. The microcode updates are not enabled by default. This work is considered experimental because it is in active development by the upstream vendors. If desired, the microcode updates are available with the new devcpu-data package, which is available in the Appcafe. Install this package and enable the new microcode_update service to apply the latest runtime code when booting the system.
Err codemadness.org 70 i 63402
Important security-based package updates
Err codemadness.org 70 i 63406 Err codemadness.org 70 i 63407All pre-compiled packages for this release are built with the latest versions of LLVM/Clang, unless the package explicitly requires GCC. These packages also utilize the latest compile-time mitigations for memory-access security concerns.
Err codemadness.org 70 i 63421Err codemadness.org 70 i 63423 Err codemadness.org 70 i 63424F-Stack is an user space network development kit with high performance based on DPDK, FreeBSD TCP/IP stack and coroutine API. http://www.f-stack.org
Err codemadness.org 70 i 63422
Introduction Err codemadness.org 70 i 63426 With the rapid development of NIC, the poor performance of data packets processing with Linux kernel has become the bottleneck. However, the rapid development of the Internet needs high performance of network processing, kernel bypass has caught more and more attentions. There are various similar technologies appear, such as DPDK, NETMAP and PF_RING. The main idea of kernel bypass is that Linux is only used to deal with control flow, all data streams are processed in user space. Therefore, kernel bypass can avoid performance bottlenecks caused by kernel packet copying, thread scheduling, system calls and interrupts. Furthermore, kernel bypass can achieve higher performance with multi optimizing methods. Within various techniques, DPDK has been widely used because of its more thorough isolation from kernel scheduling and active community support.
F-Stack is an open source network framework with high performance based on DPDK. With following characteristics
Err codemadness.org 70 i 63428 Err codemadness.org 70 i 63429History
Err codemadness.org 70 i 63439Err codemadness.org 70 i 63449 Err codemadness.org 70 i 63450In order to deal with the increasingly severe DDoS attacks, authorized DNS server of Tencent Cloud DNSPod switched from Gigabit Ethernet to 10-Gigabit at the end of 2012. We faced several options, one is to continue to use the original model another is to use kernel bypass technology. After several rounds of investigation, we finally chose to develop our next generation of DNS server based on DPDK. The reason is DPDK provides ultra-high performance and can be seamlessly extended to 40G, or even 100G NIC in the future.
Err codemadness.org 70 i 63440 Err codemadness.org 70 i 63441After several months of development and testing, DKDNS, high-performance DNS server based on DPDK officially released in October 2013. It's capable of achieving up to 11 million QPS with a single 10GE port and 18.2 million QPS with two 10GE ports. And then we developed a user-space TCP/IP stack called F-Stack that can process 0.6 million RPS with a single 10GE port.
Err codemadness.org 70 i 63442 Err codemadness.org 70 i 63443With the fast growth of Tencent Cloud, more and more services need higher network access performance. Meanwhile, F-Stack was continuous improving driven by the business growth, and ultimately developed into a general network access framework. But this TCP/IP stack couldn't meet the needs of these services while continue to develop and maintain a complete network stack will cost high, we've tried several plans and finally determined to port FreeBSD(11.0 stable) TCP/IP stack into F-Stack. Thus, we can reduce the cost of maintenance and follow up the improvement from community quickly.Thanks to libplebnet and libuinet, this work becomes a lot easier.
Err codemadness.org 70 i 63444 Err codemadness.org 70 i 63445With the rapid development of all kinds of application, in order to help different APPs quick and easily use F-Stack, F-Stack has integrated Nginx, Redis and other commonly used APPs, and a micro thread framework, and provides a standard Epoll/Kqueue interface.
Err codemadness.org 70 i 63446 Err codemadness.org 70 i 63447Currently, besides authorized DNS server of DNSPod, there are various products in Tencent Cloud has used the F-Stack, such as HttpDNS (D+), COS access module, CDN access module, etc..
Err codemadness.org 70 i 63448
iXsystems
Err codemadness.org 70 i 63453 Err codemadness.org 70 i 63454Err codemadness.org 70 i 63461 There is a good chance you’ve never heard of open source software and an even greater one that you’re using it every day without even realizing it. Open source software is computer software that is available under a variety of licenses that all encourage the sharing of the software and its underlying source code. Open source has powered the internet from day one and today powers the cloud and just about everything connected to it from your mobile phone to virtually every internet of things device. Err codemadness.org 70 i 63462 FreeNAS is one of two open source operating systems that my company, iXsystems, develops and distributes free of charge and is at the heart of our line of TrueNAS enterprise storage products. While some of our competitors sell storage software similar to FreeNAS, we not only give it away but also do so with truly no strings attached -- competitors can and do take FreeNAS and build products based on it with zero obligation to share their changes. The freedom to do so is the fundamental tenet of permissively licensed open source software, and while it sounds self-defeating to be this generous, we’ve proven that leadership, not licensing, is the true secret to a successful open source business model. Err codemadness.org 70 i 63463 We each have our own personal definition of what is fair when it comes to open source. At iXsystems, we made a conscious decision to base FreeNAS and TrueOS on the FreeBSD operating system developed by the FreeBSD project. We stand on the shoulders of giants by using FreeBSD and we consider it quite reasonable to give back on the same generous terms that the FreeBSD project offers us. We could be selective in what we provide free of charge, but we believe that doing so would be short-sighted. In the long game we’re playing, the leadership we provide over the open source projects we produce is infinitely more important than any restrictions provided by the licenses of those and other open source projects. Err codemadness.org 70 i 63464 Twenty years in, we have no reason to change our free-software-on-great-hardware business model and giving away the software has brought an unexpected side-benefit: the largest Q/A department in the world, staffed by our passionate users who volunteer to let us know every thought they have about our software. We wouldn’t change a thing, and I encourage you to find exactly what win-win goodwill you and your company can provide to your constituents to make them not just a customer base but a community.
Err codemadness.org 70 i 63486Err codemadness.org 70 i 63504 Err codemadness.org 70 i 63505Jails basically partition a FreeBSD system into various isolated sub-systems called jails. The syscall and userspace tools first appeared in FreeBSD 4.0 (~ March 2000) with subsequent releases expanding functionality and improving existing features as well as usability. Err codemadness.org 70 i 63487 + For Linux users, jails are similar to LXC, used for resource/process isolation. Unlike LXC however, jails are a first-class concept and are well integrated into the base system. Essentially however, both offer a chroot-with-extra-separation feeling. Err codemadness.org 70 i 63488 Setting up a jail is a fairly simple process, which can essentially be split into three steps: Err codemadness.org 70 i 63489 + Place the stuff you want to run and the stuff it needs to run somewhere on your filesystem. Err codemadness.org 70 i 63490 + Add some basic configuration for the jail in jail.conf. Err codemadness.org 70 i 63491 + Fire up the jail. Err codemadness.org 70 i 63492 To confirm that the jail started successfully we can use the jls utility: Err codemadness.org 70 i 63493 We can now enter the jailed environment by using jexec, which will by default execute a root shell inside the named jail Err codemadness.org 70 i 63494 A jail can only see and use addresses that have been passed down to it by the parent system. This creates a slight problem with the loopback address: The host would probably like to keep that address to itself and not share it with any jail. Err codemadness.org 70 i 63495 Because of this, the loopback-address inside a jail is emulated by the system: Err codemadness.org 70 i 63496 + 127.0.0.1 is an alias for the first IPv4-address assigned to the jail. Err codemadness.org 70 i 63497 + ::1 is an alias for the first IPv6-address assigned to the jail. Err codemadness.org 70 i 63498 While this looks simple enough and usually works just fine[tm], it is also a source of many problems. Just imagine if your jail has only one single global IPv4 assigned to it. A daemon binding its (possibly unsecured) control port to the loopback-address would then unwillingly be exposed to the rest of the internet, which is hardly ever a good idea. Err codemadness.org 70 i 63499 + So, create an extra loopback adapter, and make the first IP in each jail a private loopback address Err codemadness.org 70 i 63500 + The tutorial goes on to cover making multiple jails share a single public IP address using NAT Err codemadness.org 70 i 63501 + It also covers more advanced concepts like ‘thin’ jails, to save some disk space if you are going to create a large number of jails, and how to upgrade them after the fact Err codemadness.org 70 i 63502 + Finally, it covers the integration with a lot of common tools, like identifying and filter jailed processes using top and ps, or using the package managers support for jails to install packages in a jail from the outside.
Err codemadness.org 70 i 63503
curl -C - -O https://us-east.manta.joyent.com/Joyent_Dev/public/SmartOS/smartos-latest.iso Err codemadness.org 70
i 63523 curl -C - -O https://us-east.manta.joyent.com/Joyent_Dev/public/SmartOS/smartos-latest-USB.img.bz2 Err codemadness.org 70
i 63524 curl -C - -O https://us-east.manta.joyent.com/Joyent_Dev/public/SmartOS/smartos-latest.vmwarevm.tar.bz2 Err codemadness.org 70
i 63525 Err codemadness.org 70
i 63526 Err codemadness.org 70
i 63527 A generated changelog is here: Err codemadness.org 70
i 63528 Err codemadness.org 70
i 63529 https://us-east.manta.joyent.com/Joyent_Dev/public/SmartOS/smartos.html#20180329T002644Z Err codemadness.org 70
i 63530 Err codemadness.org 70
i 63531 Err codemadness.org 70
i 63532 The full build bits directory, for those interested, is here in Manta: Err codemadness.org 70
i 63533 Err codemadness.org 70
i 63534 /Joyent_Dev/public/SmartOS/20180329T002644Z Err codemadness.org 70
i 63535 Err codemadness.org 70
i 63536 Err codemadness.org 70
i 63537 Err codemadness.org 70 i 63587Next year, we have the opportunity to have a BSD track, similar to the BSD Devroom at FOSDEM. We are looking for some volunteers in Southern California who can help organize this one or two-day event and help us educate more people about the BSDs. Let us know if you Err codemadness.org 70 i 63588 would like to help with this effort.
Err codemadness.org 70 i 63589
Err codemadness.org 70 i 63591Roll Call: #WhoUsesFreeBSD
Err codemadness.org 70 i 63592
Err codemadness.org 70 i 63594Many of you probably saw our post on social media asking Who Uses FreeBSD. Please help us answer this question to assist us in determining FreeBSD market share data, promote how companies are successfully using FreeBSD to encourage more companies to embrace Err codemadness.org 70 i 63595 FreeBSD, and to update the list of users on our website. Knowing who uses FreeBSD helps our contributors know where to look for jobs; knowing what universities teach with FreeBSD, helps companies know where to recruit, and knowing what products use FreeBSD helps us determine what features and technologies to support.
Err codemadness.org 70 i 63596
Err codemadness.org 70 i 63598New Hosting Partner: Oregon State University Open Source Lab
Err codemadness.org 70 i 63599
Tarsnap
Err codemadness.org 70 i 63619 Err codemadness.org 70 i 63620Err codemadness.org 70 i 63984One of the first tasks during the pool load process is to parse a config provided from userland that describes what devices the pool is composed of. A vdev tree is generated from that config, and then all the vdevs are opened. Err codemadness.org 70 i 63985 The Meta Object Set (MOS) of the pool is accessed, and several metadata objects that are necessary to load the pool are read. The exact configuration of the pool is also stored inside the MOS. Since the configuration provided from userland is external and might not accurately describe the vdev tree of the pool at the txg that is being loaded, it cannot be relied upon to safely operate the pool. For that reason, the configuration in the MOS is read early on. In the past, the two configurations were compared together and if there was a mismatch then the load process was aborted and an error was returned. Err codemadness.org 70 i 63986 The latter was a good way to ensure a pool does not get corrupted, however it made the pool load process needlessly fragile in cases where the vdev configuration changed or the userland configuration was outdated. Since the MOS is stored in 3 copies, the configuration provided by userland doesn't have to be perfect in order to read its contents. Hence, a new approach has been adopted: The pool is first opened with the untrusted userland configuration just so that the real configuration can be read from the MOS. The trusted MOS configuration is then used to generate a new vdev tree and the pool is re-opened. Err codemadness.org 70 i 63987 When the pool is opened with an untrusted configuration, writes are disabled to avoid accidentally damaging it. During reads, some sanity checks are performed on block pointers to see if each DVA points to a known vdev; when the configuration is untrusted, instead of panicking the system if those checks fail we simply avoid issuing reads to the invalid DVAs. Err codemadness.org 70 i 63988 This new two-step pool load process now allows rewinding pools across vdev tree changes such as device replacement, addition, etc. Loading a pool from an external config file in a clustering environment also becomes much safer now since the pool will import even if the config is outdated and didn't, for instance, register a recent device addition. Err codemadness.org 70 i 63989 With this code in place, it became relatively easy to implement a long-sought-after feature: the ability to import a pool with missing top level (i.e. non-redundant) devices. Note that since this almost guarantees some loss Of data, this feature is for now restricted to a read-only import.
Err codemadness.org 70 i 64015Err codemadness.org 70 i 64033 Err codemadness.org 70 i 64034Some time ago I ran into an issue where a user encountered data corruption after a storage error. PostgreSQL played a part in that corruption by allowing checkpoint what should've been a fatal error. Err codemadness.org 70 i 64016 TL;DR: Pg should PANIC on fsync() EIO return. Retrying fsync() is not OK at least on Linux. When fsync() returns success it means "all writes since the last fsync have hit disk" but we assume it means "all writes since the last SUCCESSFUL fsync have hit disk". Err codemadness.org 70 i 64017 Pg wrote some blocks, which went to OS dirty buffers for writeback. Writeback failed due to an underlying storage error. The block I/O layer and XFS marked the writeback page as failed (ASEIO), but had no way to tell the app about the failure. When Pg called fsync() on the FD during the next checkpoint, fsync() returned EIO because of the flagged page, to tell Pg that a previous async write failed. Pg treated the checkpoint as failed and didn't advance the redo start position in the control file. Err codemadness.org 70 i 64018 + All good so far. Err codemadness.org 70 i 64019 But then we retried the checkpoint, which retried the fsync(). The retry succeeded, because the prior fsync() *cleared the ASEIO bad page flag*. Err codemadness.org 70 i 64020 The write never made it to disk, but we completed the checkpoint, and merrily carried on our way. Whoops, data loss. Err codemadness.org 70 i 64021 The clear-error-and-continue behaviour of fsync is not documented as far as I can tell. Nor is fsync() returning EIO unless you have a very new linux man-pages with the patch I wrote to add it. But from what I can see in the POSIX standard we are not given any guarantees about what happens on fsync() failure at all, so we're probably wrong to assume that retrying fsync() is safe. Err codemadness.org 70 i 64022 We already PANIC on fsync() failure for WAL segments. We just need to do the same for data forks at least for EIO. This isn't as bad as it seems because AFAICS fsync only returns EIO in cases where we should be stopping the world anyway, and many FSes will do that for us. Err codemadness.org 70 i 64023 + Upon further looking, it turns out it is not just Linux brain damage: Err codemadness.org 70 i 64024 Apparently I was too optimistic. I had looked only at FreeBSD, which keeps the page around and dirties it so we can retry, but the other BSDs apparently don't (FreeBSD changed that in 1999). Err codemadness.org 70 i 64025 From what I can tell from the sources below, we have: Linux, OpenBSD, NetBSD: retrying fsync() after EIO lies Err codemadness.org 70 i 64026 FreeBSD, Illumos: retrying fsync() after EIO tells the truth Err codemadness.org 70 i 64027 + NetBSD PR to solve the issues Err codemadness.org 70 i 64028 + I/O errors are not reported back to fsync at all. Err codemadness.org 70 i 64029 + Write errors during genfs_putpages that fail for any reason other than ENOMEM cause the data to be semi-silently discarded. Err codemadness.org 70 i 64030 + It appears that UVM pages are marked clean when they're selected to be written out, not after the write succeeds; so there are a bunch of potential races when writes fail. Err codemadness.org 70 i 64031 + It appears that write errors for buffercache buffers are semi-silently discarded as well.
Err codemadness.org 70 i 64032
iXsystems
Err codemadness.org 70 i 64076 Err codemadness.org 70 i 64077Err codemadness.org 70 i 64088We’re less interested in empowering developers and a lot more pessimistic about the prospects of getting this stuff right.
But if you’re a developer and not a cryptography engineer, you shouldn’t do any of that. You should keep things simple and conventional and easy to analyze; “boring”, as the Google TLS people would say.
Err codemadness.org 70 i 64093 Err codemadness.org 70 i 64094 Err codemadness.org 70 i 64095Cryptographic Right Answers
Encrypting Data
Err codemadness.org 70 i 64101Err codemadness.org 70 i 64105 Err codemadness.org 70 i 64106Percival, 2009: AES-CTR with HMAC. Err codemadness.org 70 i 64102 Ptacek, 2015: (1) NaCl/libsodium’s default, (2) ChaCha20-Poly1305, or (3) AES-GCM. Err codemadness.org 70 i 64103 Latacora, 2018: KMS or XSalsa20+Poly1305
Err codemadness.org 70 i 64104
Err codemadness.org 70 i 64111Err codemadness.org 70 i 64115 Err codemadness.org 70 i 64116Percival, 2009: Use 256-bit keys. Err codemadness.org 70 i 64112 Ptacek, 2015: Use 256-bit keys. Err codemadness.org 70 i 64113 Latacora, 2018: Go ahead and use 256 bit keys.
Err codemadness.org 70 i 64114
Err codemadness.org 70 i 64121Err codemadness.org 70 i 64125 Err codemadness.org 70 i 64126Percival, 2009: Use HMAC. Err codemadness.org 70 i 64122 Ptacek, 2015: Yep, use HMAC. Err codemadness.org 70 i 64123 Latacora, 2018: Still HMAC.
Err codemadness.org 70 i 64124
Err codemadness.org 70 i 64131Err codemadness.org 70 i 64135 Err codemadness.org 70 i 64136Percival, 2009: Use SHA256 (SHA-2). Err codemadness.org 70 i 64132 Ptacek, 2015: Use SHA-2. Err codemadness.org 70 i 64133 Latacora, 2018: Still SHA-2.
Err codemadness.org 70 i 64134
Err codemadness.org 70 i 64141Err codemadness.org 70 i 64145 Err codemadness.org 70 i 64146Percival, 2009: Use 256-bit random numbers. Err codemadness.org 70 i 64142 Ptacek, 2015: Use 256-bit random numbers. Err codemadness.org 70 i 64143 Latacora, 2018: Use 256-bit random numbers.
Err codemadness.org 70 i 64144
Err codemadness.org 70 i 64151Err codemadness.org 70 i 64155 Err codemadness.org 70 i 64156Percival, 2009: scrypt or PBKDF2. Err codemadness.org 70 i 64152 Ptacek, 2015: In order of preference, use scrypt, bcrypt, and then if nothing else is available PBKDF2. Err codemadness.org 70 i 64153 Latacora, 2018: In order of preference, use scrypt, argon2, bcrypt, and then if nothing else is available PBKDF2.
Err codemadness.org 70 i 64154
Err codemadness.org 70 i 64161Err codemadness.org 70 i 64165 Err codemadness.org 70 i 64166Percival, 2009: Use RSAES-OAEP with SHA256 and MGF1+SHA256 bzzrt pop ffssssssst exponent 65537. Err codemadness.org 70 i 64162 Ptacek, 2015: Use NaCl/libsodium (box / cryptobox). Err codemadness.org 70 i 64163 Latacora, 2018: Use Nacl/libsodium (box / cryptobox).
Err codemadness.org 70 i 64164
Err codemadness.org 70 i 64171Err codemadness.org 70 i 64175 Err codemadness.org 70 i 64176Percival, 2009: Use RSASSA-PSS with SHA256 then MGF1+SHA256 in tricolor systemic silicate orientation. Err codemadness.org 70 i 64172 Ptacek, 2015: Use Nacl, Ed25519, or RFC6979. Err codemadness.org 70 i 64173 Latacora, 2018: Use Nacl or Ed25519.
Err codemadness.org 70 i 64174
Err codemadness.org 70 i 64181Err codemadness.org 70 i 64185 Err codemadness.org 70 i 64186Percival, 2009: Operate over the 2048-bit Group #14 with a generator of 2. Err codemadness.org 70 i 64182 Ptacek, 2015: Probably still DH-2048, or Nacl. Err codemadness.org 70 i 64183 Latacora, 2018: Probably nothing. Or use Curve25519.
Err codemadness.org 70 i 64184
Err codemadness.org 70 i 64191Err codemadness.org 70 i 64195 Err codemadness.org 70 i 64196Percival, 2009: Use OpenSSL. Err codemadness.org 70 i 64192 Ptacek, 2015: Remains: OpenSSL, or BoringSSL if you can. Or just use AWS ELBs Err codemadness.org 70 i 64193 Latacora, 2018: Use AWS ALB/ELB or OpenSSL, with LetsEncrypt
Err codemadness.org 70 i 64194
Err codemadness.org 70 i 64201Err codemadness.org 70 i 64205 Err codemadness.org 70 i 64206Percival, 2009: Distribute the server’s public RSA key with the client code, and do not use SSL. Err codemadness.org 70 i 64202 Ptacek, 2015: Use OpenSSL, or BoringSSL if you can. Or just use AWS ELBs Err codemadness.org 70 i 64203 Latacora, 2018: Use AWS ALB/ELB or OpenSSL, with LetsEncrypt
Err codemadness.org 70 i 64204
Err codemadness.org 70 i 64211Err codemadness.org 70 i 64215 Err codemadness.org 70 i 64216Percival, 2009: Use Tarsnap. Err codemadness.org 70 i 64212 Ptacek, 2015: Use Tarsnap. Err codemadness.org 70 i 64213 Latacora, 2018: Store PMAC-SIV-encrypted arc files to S3 and save fingerprints of your backups to an ERC20-compatible blockchain. Just kidding. You should still use Tarsnap.
Err codemadness.org 70 i 64214
Err codemadness.org 70 i 64225Err codemadness.org 70 i 64233 Err codemadness.org 70 i 64234I am adding IPv6 addresses to each of my servers. This post assumes the server is up and running FreeBSD 11.1 and you already have an IPv6 address block. This does not cover the creation of an IPv6 tunnel, such as that provided by HE.net. This assumes native IPv6.
Err codemadness.org 70 i 64226 Err codemadness.org 70 i 64227In this post, I am using the IPv6 addresses from the IPv6 Address Prefix Reserved for Documentation (i.e. 2001:DB8::/32). You should use your own addresses.
Err codemadness.org 70 i 64228 Err codemadness.org 70 i 64229The IPv6 block I have been assigned is 2001:DB8:1001:8d00/64.
Err codemadness.org 70 i 64230 Err codemadness.org 70 i 64231I added this to /etc/rc.conf:
Err codemadness.org 70 i 64232
Err codemadness.org 70
i 64235 ipv6_activate_all_interfaces="YES" Err codemadness.org 70
i 64236 ipv6_defaultrouter="2001:DB8:1001:8d00::1" Err codemadness.org 70
i 64237 ifconfig_em1_ipv6="inet6 2001:DB8:1001:8d00:d389:119c:9b57:396b prefixlen 64 accept_rtadv" # ns1 Err codemadness.org 70
i 64238
Err codemadness.org 70 i 64241Err codemadness.org 70 i 64247 Err codemadness.org 70 i 64248The IPv6 address I have assigned to this host is completely random (with the given block). I found a random IPv6 address generator and used it to select d389:119c:9b57:396b as the address for this service within my address block.
Err codemadness.org 70 i 64242 Err codemadness.org 70 i 64243I don’t have the reference, but I did read that randomly selecting addresses within your block is a better approach.
Err codemadness.org 70 i 64244 Err codemadness.org 70 i 64245In order to invoke these changes without rebooting, I issued these commands:
Err codemadness.org 70 i 64246
``` Err codemadness.org 70 i 64249 [dan@tallboy:~] $ sudo ifconfig em1 inet6 2001:DB8:1001:8d00:d389:119c:9b57:396b prefixlen 64 accept_rtadv Err codemadness.org 70 i 64250 [dan@tallboy:~] $
Err codemadness.org 70 i 64251 Err codemadness.org 70 i 64252[dan@tallboy:~] $ sudo route add -inet6 default 2001:DB8:1001:8d00::1 Err codemadness.org 70 i 64253 add net default: gateway 2001:DB8:1001:8d00::1 Err codemadness.org 70 i 64254 ```
Err codemadness.org 70 i 64255 Err codemadness.org 70 i 64256Err codemadness.org 70 i 64257Err codemadness.org 70 i 64259 Err codemadness.org 70 i 64260If you do the route add first, you will get this error:
Err codemadness.org 70 i 64258
Err codemadness.org 70
i 64261 [dan@tallboy:~] $ sudo route add -inet6 default 2001:DB8:1001:8d00::1 Err codemadness.org 70
i 64262 route: writing to routing socket: Network is unreachable Err codemadness.org 70
i 64263 add net default: gateway 2001:DB8:1001:8d00::1 fib 0: Network is unreachable Err codemadness.org 70
i 64264
Tarsnap
Err codemadness.org 70 i 64282 Err codemadness.org 70 i 64283Err codemadness.org 70 i 64310One of the first tasks during the pool load process is to parse a config provided from userland that describes what devices the pool is composed of. A vdev tree is generated from that config, and then all the vdevs are opened. Err codemadness.org 70 i 64311 The Meta Object Set (MOS) of the pool is accessed, and several metadata objects that are necessary to load the pool are read. The exact configuration of the pool is also stored inside the MOS. Since the configuration provided from userland is external and might not accurately describe the vdev tree of the pool at the txg that is being loaded, it cannot be relied upon to safely operate the pool. For that reason, the configuration in the MOS is read early on. In the past, the two configurations were compared together and if there was a mismatch then the load process was aborted and an error was returned. Err codemadness.org 70 i 64312 The latter was a good way to ensure a pool does not get corrupted, however it made the pool load process needlessly fragile in cases where the vdev configuration changed or the userland configuration was outdated. Since the MOS is stored in 3 copies, the configuration provided by userland doesn't have to be perfect in order to read its contents. Hence, a new approach has been adopted: The pool is first opened with the untrusted userland configuration just so that the real configuration can be read from the MOS. The trusted MOS configuration is then used to generate a new vdev tree and the pool is re-opened. Err codemadness.org 70 i 64313 When the pool is opened with an untrusted configuration, writes are disabled to avoid accidentally damaging it. During reads, some sanity checks are performed on block pointers to see if each DVA points to a known vdev; when the configuration is untrusted, instead of panicking the system if those checks fail we simply avoid issuing reads to the invalid DVAs. Err codemadness.org 70 i 64314 This new two-step pool load process now allows rewinding pools across vdev tree changes such as device replacement, addition, etc. Loading a pool from an external config file in a clustering environment also becomes much safer now since the pool will import even if the config is outdated and didn't, for instance, register a recent device addition. Err codemadness.org 70 i 64315 With this code in place, it became relatively easy to implement a long-sought-after feature: the ability to import a pool with missing top level (i.e. non-redundant) devices. Note that since this almost guarantees some loss Of data, this feature is for now restricted to a read-only import.
Err codemadness.org 70 i 64341Err codemadness.org 70 i 64359 Err codemadness.org 70 i 64360Some time ago I ran into an issue where a user encountered data corruption after a storage error. PostgreSQL played a part in that corruption by allowing checkpoint what should've been a fatal error. Err codemadness.org 70 i 64342 TL;DR: Pg should PANIC on fsync() EIO return. Retrying fsync() is not OK at least on Linux. When fsync() returns success it means "all writes since the last fsync have hit disk" but we assume it means "all writes since the last SUCCESSFUL fsync have hit disk". Err codemadness.org 70 i 64343 Pg wrote some blocks, which went to OS dirty buffers for writeback. Writeback failed due to an underlying storage error. The block I/O layer and XFS marked the writeback page as failed (ASEIO), but had no way to tell the app about the failure. When Pg called fsync() on the FD during the next checkpoint, fsync() returned EIO because of the flagged page, to tell Pg that a previous async write failed. Pg treated the checkpoint as failed and didn't advance the redo start position in the control file. Err codemadness.org 70 i 64344 + All good so far. Err codemadness.org 70 i 64345 But then we retried the checkpoint, which retried the fsync(). The retry succeeded, because the prior fsync() *cleared the ASEIO bad page flag*. Err codemadness.org 70 i 64346 The write never made it to disk, but we completed the checkpoint, and merrily carried on our way. Whoops, data loss. Err codemadness.org 70 i 64347 The clear-error-and-continue behaviour of fsync is not documented as far as I can tell. Nor is fsync() returning EIO unless you have a very new linux man-pages with the patch I wrote to add it. But from what I can see in the POSIX standard we are not given any guarantees about what happens on fsync() failure at all, so we're probably wrong to assume that retrying fsync() is safe. Err codemadness.org 70 i 64348 We already PANIC on fsync() failure for WAL segments. We just need to do the same for data forks at least for EIO. This isn't as bad as it seems because AFAICS fsync only returns EIO in cases where we should be stopping the world anyway, and many FSes will do that for us. Err codemadness.org 70 i 64349 + Upon further looking, it turns out it is not just Linux brain damage: Err codemadness.org 70 i 64350 Apparently I was too optimistic. I had looked only at FreeBSD, which keeps the page around and dirties it so we can retry, but the other BSDs apparently don't (FreeBSD changed that in 1999). Err codemadness.org 70 i 64351 From what I can tell from the sources below, we have: Linux, OpenBSD, NetBSD: retrying fsync() after EIO lies Err codemadness.org 70 i 64352 FreeBSD, Illumos: retrying fsync() after EIO tells the truth Err codemadness.org 70 i 64353 + NetBSD PR to solve the issues Err codemadness.org 70 i 64354 + I/O errors are not reported back to fsync at all. Err codemadness.org 70 i 64355 + Write errors during genfs_putpages that fail for any reason other than ENOMEM cause the data to be semi-silently discarded. Err codemadness.org 70 i 64356 + It appears that UVM pages are marked clean when they're selected to be written out, not after the write succeeds; so there are a bunch of potential races when writes fail. Err codemadness.org 70 i 64357 + It appears that write errors for buffercache buffers are semi-silently discarded as well.
Err codemadness.org 70 i 64358
iXsystems
Err codemadness.org 70 i 64402 Err codemadness.org 70 i 64403Err codemadness.org 70 i 64414We’re less interested in empowering developers and a lot more pessimistic about the prospects of getting this stuff right.
But if you’re a developer and not a cryptography engineer, you shouldn’t do any of that. You should keep things simple and conventional and easy to analyze; “boring”, as the Google TLS people would say.
Err codemadness.org 70 i 64419 Err codemadness.org 70 i 64420 Err codemadness.org 70 i 64421Cryptographic Right Answers
Encrypting Data
Err codemadness.org 70 i 64427Err codemadness.org 70 i 64431 Err codemadness.org 70 i 64432Percival, 2009: AES-CTR with HMAC. Err codemadness.org 70 i 64428 Ptacek, 2015: (1) NaCl/libsodium’s default, (2) ChaCha20-Poly1305, or (3) AES-GCM. Err codemadness.org 70 i 64429 Latacora, 2018: KMS or XSalsa20+Poly1305
Err codemadness.org 70 i 64430
Err codemadness.org 70 i 64437Err codemadness.org 70 i 64441 Err codemadness.org 70 i 64442Percival, 2009: Use 256-bit keys. Err codemadness.org 70 i 64438 Ptacek, 2015: Use 256-bit keys. Err codemadness.org 70 i 64439 Latacora, 2018: Go ahead and use 256 bit keys.
Err codemadness.org 70 i 64440
Err codemadness.org 70 i 64447Err codemadness.org 70 i 64451 Err codemadness.org 70 i 64452Percival, 2009: Use HMAC. Err codemadness.org 70 i 64448 Ptacek, 2015: Yep, use HMAC. Err codemadness.org 70 i 64449 Latacora, 2018: Still HMAC.
Err codemadness.org 70 i 64450
Err codemadness.org 70 i 64457Err codemadness.org 70 i 64461 Err codemadness.org 70 i 64462Percival, 2009: Use SHA256 (SHA-2). Err codemadness.org 70 i 64458 Ptacek, 2015: Use SHA-2. Err codemadness.org 70 i 64459 Latacora, 2018: Still SHA-2.
Err codemadness.org 70 i 64460
Err codemadness.org 70 i 64467Err codemadness.org 70 i 64471 Err codemadness.org 70 i 64472Percival, 2009: Use 256-bit random numbers. Err codemadness.org 70 i 64468 Ptacek, 2015: Use 256-bit random numbers. Err codemadness.org 70 i 64469 Latacora, 2018: Use 256-bit random numbers.
Err codemadness.org 70 i 64470
Err codemadness.org 70 i 64477Err codemadness.org 70 i 64481 Err codemadness.org 70 i 64482Percival, 2009: scrypt or PBKDF2. Err codemadness.org 70 i 64478 Ptacek, 2015: In order of preference, use scrypt, bcrypt, and then if nothing else is available PBKDF2. Err codemadness.org 70 i 64479 Latacora, 2018: In order of preference, use scrypt, argon2, bcrypt, and then if nothing else is available PBKDF2.
Err codemadness.org 70 i 64480
Err codemadness.org 70 i 64487Err codemadness.org 70 i 64491 Err codemadness.org 70 i 64492Percival, 2009: Use RSAES-OAEP with SHA256 and MGF1+SHA256 bzzrt pop ffssssssst exponent 65537. Err codemadness.org 70 i 64488 Ptacek, 2015: Use NaCl/libsodium (box / cryptobox). Err codemadness.org 70 i 64489 Latacora, 2018: Use Nacl/libsodium (box / cryptobox).
Err codemadness.org 70 i 64490
Err codemadness.org 70 i 64497Err codemadness.org 70 i 64501 Err codemadness.org 70 i 64502Percival, 2009: Use RSASSA-PSS with SHA256 then MGF1+SHA256 in tricolor systemic silicate orientation. Err codemadness.org 70 i 64498 Ptacek, 2015: Use Nacl, Ed25519, or RFC6979. Err codemadness.org 70 i 64499 Latacora, 2018: Use Nacl or Ed25519.
Err codemadness.org 70 i 64500
Err codemadness.org 70 i 64507Err codemadness.org 70 i 64511 Err codemadness.org 70 i 64512Percival, 2009: Operate over the 2048-bit Group #14 with a generator of 2. Err codemadness.org 70 i 64508 Ptacek, 2015: Probably still DH-2048, or Nacl. Err codemadness.org 70 i 64509 Latacora, 2018: Probably nothing. Or use Curve25519.
Err codemadness.org 70 i 64510
Err codemadness.org 70 i 64517Err codemadness.org 70 i 64521 Err codemadness.org 70 i 64522Percival, 2009: Use OpenSSL. Err codemadness.org 70 i 64518 Ptacek, 2015: Remains: OpenSSL, or BoringSSL if you can. Or just use AWS ELBs Err codemadness.org 70 i 64519 Latacora, 2018: Use AWS ALB/ELB or OpenSSL, with LetsEncrypt
Err codemadness.org 70 i 64520
Err codemadness.org 70 i 64527Err codemadness.org 70 i 64531 Err codemadness.org 70 i 64532Percival, 2009: Distribute the server’s public RSA key with the client code, and do not use SSL. Err codemadness.org 70 i 64528 Ptacek, 2015: Use OpenSSL, or BoringSSL if you can. Or just use AWS ELBs Err codemadness.org 70 i 64529 Latacora, 2018: Use AWS ALB/ELB or OpenSSL, with LetsEncrypt
Err codemadness.org 70 i 64530
Err codemadness.org 70 i 64537Err codemadness.org 70 i 64541 Err codemadness.org 70 i 64542Percival, 2009: Use Tarsnap. Err codemadness.org 70 i 64538 Ptacek, 2015: Use Tarsnap. Err codemadness.org 70 i 64539 Latacora, 2018: Store PMAC-SIV-encrypted arc files to S3 and save fingerprints of your backups to an ERC20-compatible blockchain. Just kidding. You should still use Tarsnap.
Err codemadness.org 70 i 64540
Err codemadness.org 70 i 64551Err codemadness.org 70 i 64559 Err codemadness.org 70 i 64560I am adding IPv6 addresses to each of my servers. This post assumes the server is up and running FreeBSD 11.1 and you already have an IPv6 address block. This does not cover the creation of an IPv6 tunnel, such as that provided by HE.net. This assumes native IPv6.
Err codemadness.org 70 i 64552 Err codemadness.org 70 i 64553In this post, I am using the IPv6 addresses from the IPv6 Address Prefix Reserved for Documentation (i.e. 2001:DB8::/32). You should use your own addresses.
Err codemadness.org 70 i 64554 Err codemadness.org 70 i 64555The IPv6 block I have been assigned is 2001:DB8:1001:8d00/64.
Err codemadness.org 70 i 64556 Err codemadness.org 70 i 64557I added this to /etc/rc.conf:
Err codemadness.org 70 i 64558
Err codemadness.org 70
i 64561 ipv6_activate_all_interfaces="YES" Err codemadness.org 70
i 64562 ipv6_defaultrouter="2001:DB8:1001:8d00::1" Err codemadness.org 70
i 64563 ifconfig_em1_ipv6="inet6 2001:DB8:1001:8d00:d389:119c:9b57:396b prefixlen 64 accept_rtadv" # ns1 Err codemadness.org 70
i 64564
Err codemadness.org 70 i 64567Err codemadness.org 70 i 64573 Err codemadness.org 70 i 64574The IPv6 address I have assigned to this host is completely random (with the given block). I found a random IPv6 address generator and used it to select d389:119c:9b57:396b as the address for this service within my address block.
Err codemadness.org 70 i 64568 Err codemadness.org 70 i 64569I don’t have the reference, but I did read that randomly selecting addresses within your block is a better approach.
Err codemadness.org 70 i 64570 Err codemadness.org 70 i 64571In order to invoke these changes without rebooting, I issued these commands:
Err codemadness.org 70 i 64572
``` Err codemadness.org 70 i 64575 [dan@tallboy:~] $ sudo ifconfig em1 inet6 2001:DB8:1001:8d00:d389:119c:9b57:396b prefixlen 64 accept_rtadv Err codemadness.org 70 i 64576 [dan@tallboy:~] $
Err codemadness.org 70 i 64577 Err codemadness.org 70 i 64578[dan@tallboy:~] $ sudo route add -inet6 default 2001:DB8:1001:8d00::1 Err codemadness.org 70 i 64579 add net default: gateway 2001:DB8:1001:8d00::1 Err codemadness.org 70 i 64580 ```
Err codemadness.org 70 i 64581 Err codemadness.org 70 i 64582Err codemadness.org 70 i 64583Err codemadness.org 70 i 64585 Err codemadness.org 70 i 64586If you do the route add first, you will get this error:
Err codemadness.org 70 i 64584
Err codemadness.org 70
i 64587 [dan@tallboy:~] $ sudo route add -inet6 default 2001:DB8:1001:8d00::1 Err codemadness.org 70
i 64588 route: writing to routing socket: Network is unreachable Err codemadness.org 70
i 64589 add net default: gateway 2001:DB8:1001:8d00::1 fib 0: Network is unreachable Err codemadness.org 70
i 64590
Tarsnap
Err codemadness.org 70 i 64608 Err codemadness.org 70 i 646099188 increase size of dbuf cache to reduce indirect block decompression
Err codemadness.org 70 i 64935 Err codemadness.org 70 i 64936Err codemadness.org 70 i 64937With compressed ARC (6950) we use up to 25% of our CPU to decompress indirect blocks, under a workload of random cached reads. To reduce this decompression cost, we would like to increase the size of the dbuf cache so that more indirect blocks can be stored uncompressed. Err codemadness.org 70 i 64938 If we are caching entire large files of recordsize=8K, the indirect blocks use 1/64th as much memory as the data blocks (assuming they have the same compression ratio). We suggest making the dbuf cache be 1/32nd of all memory, so that in this scenario we should be able to keep all the indirect blocks decompressed in the dbuf cache. (We want it to be more than the 1/64th that the indirect blocks would use because we need to cache other stuff in the dbuf cache as well.) Err codemadness.org 70 i 64939 In real world workloads, this won't help as dramatically as the example above, but we think it's still worth it because the risk of decreasing performance is low. The potential negative performance impact is that we will be slightly reducing the size of the ARC (by ~3%).
Err codemadness.org 70 i 64940
9166 zfs storage pool checkpoint
Err codemadness.org 70 i 64942 Err codemadness.org 70 i 64943Err codemadness.org 70 i 64944The idea of Storage Pool Checkpoint (aka zpool checkpoint) deals with exactly that. It can be thought of as a “pool-wide snapshot” (or a variation of extreme rewind that doesn’t corrupt your data). It remembers the entire state of the pool at the point that it was taken and the user can revert back to it later or discard it. Its generic use case is an administrator that is about to perform a set of destructive actions to ZFS as part of a critical procedure. She takes a checkpoint of the pool before performing the actions, then rewinds back to it if one of them fails or puts the pool into an unexpected state. Otherwise, she discards it. With the assumption that no one else is making modifications to ZFS, she basically wraps all these actions into a “high-level transaction”.
Err codemadness.org 70 i 64945
8484 Implement aggregate sum and use for arc counters
Err codemadness.org 70 i 64948 Err codemadness.org 70 i 64949Err codemadness.org 70 i 64950In pursuit of improving performance on multi-core systems, we should implements fanned out counters and use them to improve the performance of some of the arc statistics. These stats are updated extremely frequently, and can consume a significant amount of CPU time.
Err codemadness.org 70 i 64951
And a small bug fix authored by me:
Err codemadness.org 70 i 64957 arcloancompressedbuf() increments arcloanedbytes by psize unconditionally In the case of zfscompressedarcenabled=0, when the buf is returned via arcreturnbuf(), if ARCBUFCOMPRESSED(buf) is false, then arcloanedbytes is decremented by lsize, not psize. Err codemadness.org 70 i 64958 Switch to using arcbufsize(buf), instead of psize, which will return psize or lsize, depending on the result of ARCBUF_COMPRESSED(buf).
Err codemadness.org 70 i 64968Err codemadness.org 70 i 64976 Err codemadness.org 70 i 64977Almost 2 decades ago we started work on W^X. The concept was simple. Pages that are writable, should not be executable. We applied this concept object by object, trying to seperate objects with different qualities to different pages. The first one we handled was the signal trampoline at the top of the stack. We just kept making changes in the same vein. Eventually W^X came to some of our kernel address spaces also. Err codemadness.org 70 i 64969 The fundamental concept is that an object should only have the Err codemadness.org 70 i 64970 permissions necessary, and any other operation should fault. The only permission separations we have are kernel vs userland, and then read, write, and execute. Err codemadness.org 70 i 64971 How about we add another new permission! This is not a hardware permission, but a software permission. It is opportunistically enforced by the kernel. Err codemadness.org 70 i 64972 the permission is MAPSTACK. If you want to use memory as a stack, you must mmap it with that flag bit. The kernel does so automatically for the stack region of a process's stack. Two other types of stack occur: thread stacks, and alternate signal stacks. Those are handled in clever ways. Err codemadness.org 70 i 64973 When a system call happens, we check if the stack-pointer register points to such a page. If it doesn't, the program is killed. We have tightened the ABI. You may no longer point your stack register at non-stack memory. You'll be killed. This checking code is MI, so it works for all platforms. Err codemadness.org 70 i 64974 Since page-permissions are generally done on page boundaries, there is caveat that thread and altstacks must now be page-sized and page-aligned, so that we can enforce the MAPSTACK attribute correctly. It is possible that a few ports need some massaging to satisfy this condition, but we haven't found any which break yet. A syslog_r has been added so that we can identify these failure cases. Also, the faulting cases are quite verbose for now, to help identify the programs we need to repair.
Err codemadness.org 70 i 64975
Err codemadness.org 70 i 64990Err codemadness.org 70 i 65009 Err codemadness.org 70 i 65010We wanted to improve our password strength algorithm, and decided to go for the industry-standard zxcvbn, from the people at Dropbox. Our web front-end would use the default Javascript library, and for mobile and desktop, we chose to use the C implementation as it was the lowest common denominator for all platforms. Err codemadness.org 70 i 64991 Bootstrapping all of this together was done pretty fast. I had toyed around with a few sample passwords so I decided to run it through the test suite we had for the previous password strength evaluator. The test generates a large number of random passwords according to different rules and expects the strength to be in a given range. But the test runner kept crashing with segmentation faults. Err codemadness.org 70 i 64992 It turns out the library has a lot of buffer overflow cases that are usually "harmless", but eventually crash your program when you run the evaluator function too much. I started fixing the cases I could see, but reading someone else's algorithms to track down tiny memory errors got old pretty fast. I needed a tool to help me. Err codemadness.org 70 i 64993 That's when I thought of Clang's Address Sanitizer. Err codemadness.org 70 i 64994 AddressSanitizer is a fast memory error detector. It consists of a compiler instrumentation module and a run-time library Err codemadness.org 70 i 64995 Let's try the sanitizer on a simple program. We'll allocate a buffer on the heap, copy each character of a string into it, and print it to standard output. Err codemadness.org 70 i 64996 + The site walks through a simple example which contains an error, it writes past the end of a buffer Err codemadness.org 70 i 64997 + The code works as expected, and nothing bad happens. It must be fine… Err codemadness.org 70 i 64998 + Then they compile it again with the address sanitizer actived Err codemadness.org 70 i 64999 So what can we gather from that pile of hex? Let's go through it line by line. Err codemadness.org 70 i 65000 AddressSanitizer found a heap buffer overflow at 0x60200000ef3d, a seemingly valid address (not NULL or any other clearly faulty value). Err codemadness.org 70 i 65001 + ASAN points directly to the line of code that is causing the problem Err codemadness.org 70 i 65002 We're writing outside of the heap in this instruction. And AddressSanitizer isn't having it. Err codemadness.org 70 i 65003 This is definitely one of my favorite indications. In addition to telling which line in the code failed and where in the memory the failure happened, you get a complete description of the closest allocated region in memory (which is probably the region you were trying to access). Err codemadness.org 70 i 65004 + They then walk through combining this with lldb, the Clang debugger, to actually interactively inspect the state of the problem when an invalid memory access happens Err codemadness.org 70 i 65005 Back to my practical case, how did I put the address sanitizer to good use? I simply ran the test suite, compiled with the sanitizer, with lldb. Sure enough, it stopped on every line that could cause a crash. It turns out there were many cases where zxcvbn-c wrote past the end of allocated buffers, on the heap and on the stack. I fixed those cases in the C library and ran the tests again. Not a segfault in sight! Err codemadness.org 70 i 65006 I've used memory tools in the past, but they were usually unwieldy, or put such a toll on performance that they were useless in any real-life case. Clang's address sanitizer turned out to be detailed, reliable, and surprisingly easy to use. I've heard of the miracles of Valgrind but macOS hardly supports it, making it a pain to use on my MacBook Pro. Err codemadness.org 70 i 65007 Coupled with Clang's static analyzer, AddressSanitizer is going to become a mandatory stop for evaluating code quality. It's also going to be the first tool I grab when facing confusing memory issues. There are many more case where I could use early failure and memory history to debug my code. For example, if a program crashes when accessing member of a deallocated object, we could easily trace the event that caused the deallocation, saving hours of adding and reading logs to retrace just what happened.
Err codemadness.org 70 i 65008
Err codemadness.org 70 i 65027Err codemadness.org 70 i 65043 Err codemadness.org 70 i 65044Note the little stack of customs forms off to the side. It’s like I’ve learned a lesson from standing at the post office counter filling out those stupid forms. Sponsors should get their books soon.
Err codemadness.org 70 i 65028 Err codemadness.org 70 i 65029This seems like an apropos moment to talk about what I do for print sponsors. I say I send them “a gift,” but what does that really mean? The obvious thing to ship them is a copy of the book I’ve written. Flat-out selling print books online has tax implications, though.
Err codemadness.org 70 i 65030 Err codemadness.org 70 i 65031Sponsors might have guessed that they’d get a copy of the book. But I shipped them the hardcover, which isn’t my usual practice.
Err codemadness.org 70 i 65032 Err codemadness.org 70 i 65033That’s because I send sponsors a gift. As it’s a gift, I get to choose what I send. I want to send them something nice, to encourage them to sponsor another book. It makes no sense for me to send a sponsor a Singing Wedgie-O-Gram. (Well, maybe a couple sponsors. You know who you are.)
Err codemadness.org 70 i 65034 Err codemadness.org 70 i 65035The poor bastards who bought into my scam–er, sponsored my untitled book–have no idea what’s coming. As of right now, their sensible guesses are woefully incomplete.
Err codemadness.org 70 i 65036 Err codemadness.org 70 i 65037Future books? They might get a copy of the book. They might get book plus something. They might just get the something. Folks who sponsor the jails book might get a cake with a file in it. Who knows?
Err codemadness.org 70 i 65038 Err codemadness.org 70 i 65039It’s a gift. It’s my job to make that gift worthwhile.
Err codemadness.org 70 i 65040 Err codemadness.org 70 i 65041And to amuse myself. Because otherwise, what’s the point?
Err codemadness.org 70 i 65042
Err codemadness.org 70 i 65101Err codemadness.org 70 i 65108 Err codemadness.org 70 i 65109KDE4 has been rudely moved aside on FreeBSD. It still installs (use x11/kde4) and should update without a problem, but this is another step towards adding modern KDE (Plasma 5 and Applications) to the official FreeBSD Ports tree. Err codemadness.org 70 i 65102 This has taken a long time mostly for administrative reasons, getting all the bits lined up so that people sticking with KDE4 (which, right now, would be everyone using KDE from official ports and packages on FreeBSD) don’t end up with a broken desktop. We don’t want that. But now that everything Qt4 and kdelibs4-based has been moved aside by suffixing it with -kde4, we have the unsuffixed names free to indicate the latest-and-greatest from upstream.
Err codemadness.org 70 i 65103 Err codemadness.org 70 i 65104KDE4 users will see a lot of packages moving around and being renamed, but no functional changes. Curiously, the KDE4 desktop depends on Qt5 and KDE Frameworks 5 — and it has for quite some time already, because the Oxygen icons are shared with KDE Frameworks, but primarily because FileLight was updated to the modern KDE Applications version some time ago (the KDE4 version had some serious bugs, although I can not remember what they were). Now that the names are cleaned up, we could consider giving KDE4 users the buggy version back.
Err codemadness.org 70 i 65105 Err codemadness.org 70 i 65106From here on, we’ve got the following things lined up:
Err codemadness.org 70 i 65107
Err codemadness.org 70 i 65116Err codemadness.org 70 i 65118 Err codemadness.org 70 i 65119So we’ve been saying Real Soon Now ™ for years, but things are Realer Sooner Nower ™ now.
Err codemadness.org 70 i 65117
Err codemadness.org 70 i 65124Err codemadness.org 70 i 65179 Err codemadness.org 70 i 65180A while back I reviewed the Dell FS12-NV7 – a 2U rack server being sold cheap by all and sundry. It’s a powerful box, even by modern standards, but one of its big drawbacks is the disk system it comes with. But it needn’t be.
Err codemadness.org 70 i 65125 Err codemadness.org 70 i 65126There are two viable solutions, depending on what you want to do. You can make use of the SAS backplane, using SAS and/or SATA drives, or you can go for fewer SATA drives and free up one or more PCIe slots as Plan B. You probably have an FS12 because it looks good for building a drive array (or even FreeNAS) so I’ll deal with Plan A first.
Err codemadness.org 70 i 65127 Err codemadness.org 70 i 65128Like most Dell servers, this comes with a Dell PERC RAID SAS controller – a PERC6/i to be precise. This ‘I’ means it has internal connectors; the /E is the same but its sockets are external.
Err codemadness.org 70 i 65129 Err codemadness.org 70 i 65130The PERC connects to a twelve-slot backplane forming a drive array at the front of the box. More on the backplane later; it’s the PERCs you need to worry about.
Err codemadness.org 70 i 65131 Err codemadness.org 70 i 65132The PERC6 is actually an LSI Megaraid 1078 card, which is just the thing you need if you’re running an operating system like Windows that doesn’t support a volume manager, striping and other grown-up stuff. Or if your OS does have these features, but you just don’t trust it. If you are running such an OS you may as well stick to the PERC6, and good luck to you. If you’re using BSD (including FreeNAS), Solaris or a Linux distribution that handles disk arrays, read on. The PERC6 is a solution to a problem you probably don’t have, but in all other respects its a turkey. You really want a straightforward HBA (Host Bus Adapter) that allows your clever operating system to talk directly with the drives.
Err codemadness.org 70 i 65133 Err codemadness.org 70 i 65134Any SAS card based on the 1078 (such as the PERC6) is likely to have problems with drives larger than 2Tb. I’m not completely sure why, but I suspect it only applies to SATA. Unfortunately I don’t have any very large SAS drives to test this theory. A 2Tb limit isn’t really such a problem when you’re talking about a high performance array, as lots of small drives are a better option anyway. But it does matter if you’re building a very large datastore and don’t mind slower access and very significant resilvering times when you replace a drive. And for large datastores, very large SATA drives save you a whole lot of cash. The best capacity/cost ratio is for 5Gb SATA drives
Err codemadness.org 70 i 65135 Err codemadness.org 70 i 65136Some Dell PERCs can be re-flashed with LSI firmware and used as a normal HBA. Unfortunately the PERC6 isn’t one of them. I believe the PERC6/R can be, but those I’ve seen in a FS12 are just a bit too old. So the first thing you’ll need to do is dump them in the recycling or try and sell them on eBay.
Err codemadness.org 70 i 65137 Err codemadness.org 70 i 65138There are actually two PERC6 cards in most machine, and they each support eight SAS channels through two SFF-8484 connectors on each card. Given there are twelve drives slots, one of the PERCs is only half used. Sometimes they have a cable going off to a battery located near the fans. This is used in a desperate attempt to keep the data in the card’s cache safe in order to avoid write holes corrupting NTFS during a power failure, although the data on the on-drive caches won’t be so lucky. If you’re using a file system like that, make sure you have a UPS for the whole lot.
Err codemadness.org 70 i 65139 Err codemadness.org 70 i 65140But we’re going to put the PERCs out of our misery and replace them with some nice new LSI HBAs that will do our operating system’s bidding and let it talk to the drives as it knows best. But which to pick? First we need to know what we’re connecting.
Err codemadness.org 70 i 65141 Err codemadness.org 70 i 65142Moving to the front of the case there are twelve metal drive slots with a backplane behind. Dell makes machines with either backplanes or expanders. A backplane has a 1:1 SAS channel to drive connection; an expander takes one SAS channel and multiplexes it to (usually) four drives. You could always swap the blackplane with an expander, but I like the 1:1 nature of a backplane. It’s faster, especially if you’re configured as an array. And besides, we don’t want to spend more money than we need to, otherwise we wouldn’t be hot-rodding a cheap 2U server in the first place – expanders are expensive. Bizarrely, HBAs are cheap in comparison. So we need twelve channels of SAS that will connect to the sockets on the backplane.
Err codemadness.org 70 i 65143 Err codemadness.org 70 i 65144The HBA you will probably want to go with is an LSI, as these have great OS support. Other cards are available, but check that the drivers are also available. The obvious choice for SAS aficionados is the LSI 9211-8i, which has eight internal channels. This is based on an LSI 2000 series chip, the 2008, which is the de-facto standard. There’s also four-channel -4i version, so you could get your twelve channels using one of each – but the price difference is small these days, so you might as well go for two -8i cards. If you want cheaper there are 1068-based equivalent cards, and these work just fine at about half the price. They probably won’t work with larger disks, only operate at 3Gb and the original SAS standard. However, the 2000 series is only about £25 extra and gives you more options for the future. A good investment. Conversely, the latest 3000 series cards can do some extra stuff (particularly to do with active cables) but I can’t see any great advantage in paying megabucks for one unless you’re going really high-end – in which case the NV12 isn’t the box for you anyway. And you’d need some very fast drives and a faster backplane to see any speed advantage. And probably a new motherboard….
Err codemadness.org 70 i 65145 Err codemadness.org 70 i 65146Whether the 6Gb SAS2 of the 9211-8i is any use on the backplane, which was designed for 3Gb, I don’t know. If it matters that much to you you probably need to spend a lot more money. A drive array with a direct 3Gb to each drive is going to shift fast enough for most purposes.
Err codemadness.org 70 i 65147 Err codemadness.org 70 i 65148Once you have removed the PERCs and plugged in your modern-ish 9211 HBAs, your next problem is going to be the cable. Both the PERCs and the backplane have SFF-8484 multi-lane connectors, which you might not recognise. SAS is a point-to-point system, the same as SATA, and a multi-lane cable is simply four single cables in a bundle with one plug. (Newer versions of SAS have more). SFF-8484 multi-lane connectors are somewhat rare, (but unfortunately this doesn’t make them valuable if you were hoping to flog them on eBay). The world switched quickly to the SFF-8087 for multi-lane SAS. The signals are electrically the same, but the connector is not.
Err codemadness.org 70 i 65149 Err codemadness.org 70 i 65150Please generate and paste your ad code here. If left empty, the ad location will be highlighted on your blog pages with a reminder to enter your code. Mid-Post Err codemadness.org 70 i 65151 So there are two snags with this backplane. Firstly it’s designed to work with PERC controllers; secondly it has the old SFF-8484 connectors on the back, and any SAS cables you find are likely to have SFF-8087.
Err codemadness.org 70 i 65152 Err codemadness.org 70 i 65153First things first – there is actually a jumper on the backplane to tell it whether it’s talking to a PERC or a standard LSI HBA. All you need to do is find it and change it. Fortunately there are very few jumpers to choose from (i.e. two), and you know the link is already in the wrong place. So try them one at a time until it works. The one you want may be labelled J15, but I wouldn’t like to say this was the same on every variant.
Err codemadness.org 70 i 65154 Err codemadness.org 70 i 65155Second problem: the cable. You can get cables with an SFF-8087 on one end and an SFF-8484 on the other. These should work. But they’re usually rather expensive. If you want to make your own, it’s a PITA but at least you have the connectors already (assuming you didn’t bin the ones on the PERC cables).
Err codemadness.org 70 i 65156 Err codemadness.org 70 i 65157I don’t know what committee designed SAS cable connectors, but ease of construction wasn’t foremost in their collective minds. You’re basically soldering twisted pair to a tiny PCB. This is mechanically rubbish, of course, as the slightest force on the cable will lift the track. Therefore its usual to cover the whole joint in solidified gunk (technical term) to protect it. Rewiring SAS connectors is definitely not easy.
Err codemadness.org 70 i 65158 Err codemadness.org 70 i 65159I’ve tried various ways of soldering to them, none of which were satisfactory or rewarding. One method is to clip the all bare wires you wish to solder using something like a bulldog clip so they’re at lined up horizontally and then press then adjust the clamp so they’re gently pressed to the tracks on the board, making final adjustments with a strong magnifying glass and a fine tweezers. You can then either solder them with a fine temperature-controlled iron, or have pre-coated the pads with solder paste and flash across it with an SMD rework station. I’d love to know how they’re actually manufactured – using a precision jig I assume.
Err codemadness.org 70 i 65160 Err codemadness.org 70 i 65161The “easy” way is to avoid soldering the connectors at all; simply cut existing cables in half and join one to the other. I’ve used prototyping matrix board for this. Strip and twist the conductors, push them through a hole and solder. This keeps things compact but manageable. We’re dealing with twisted pair here, so maintain the twists as close as possible to the board – it actually works quite well.
Err codemadness.org 70 i 65162 Err codemadness.org 70 i 65163However, I’ve now found a reasonably-priced source of the appropriate cable so I don’t do this any more. Contact me if you need some in the UK.
Err codemadness.org 70 i 65164 Err codemadness.org 70 i 65165So all that remains is to plug your HBAs to the backplane, shove in some drives and you’re away. If you’re at this stage, it “just works”. The access lights for all the drives do their thing as they should. The only mystery is how you can get the ident LED to come on; this may be controlled by the PERC when it detects a failure using the so-called sideband channel, or it may be operated by the electronics on the backplane. It’s workings are, I’m afraid, something of a mystery still – it’s got too much electronics on board to be a completely passive backplane.
Err codemadness.org 70 i 65166 Err codemadness.org 70 i 65167Plan B: SATA
Err codemadness.org 70 i 65168 Err codemadness.org 70 i 65169If you plan to use only SATA drives, especially if you don’t intend using more than six, it makes little sense to bother with SAS at all. The Gigabyte motherboard comes with half a dozen perfectly good 3Gb SATA channels, and if you need more you can always put another controller in a PCIe slot, or even USB. The advantages are lower cost and you get to free up two PCIe slots for more interesting things.
Err codemadness.org 70 i 65170 Err codemadness.org 70 i 65171The down-side is that you can’t use the SAS backplane, but you can still use the mounting bays.
Err codemadness.org 70 i 65172 Err codemadness.org 70 i 65173Removing the backplane looks tricky, but it really isn’t when you look a bit closer. Take out the fans first (held in place by rubber blocks), undo a couple of screws and it just lifts and slides out. You can then slot and lock in the drives and connect the SATA connectors directly to the back of the drives. You could even slide them out again without opening the case, as long as the cable was long enough and you manually detached the cable it when it was withdrawn. And let’s face it – drives are likely to last for years so even with half a dozen it’s not that great a hardship to open the case occasionally.
Err codemadness.org 70 i 65174 Err codemadness.org 70 i 65175Next comes power. The PSU has a special connector for the backplane and two standard SATA power plugs. You could split these three ways using an adapter, but if you have a lot of drives you might want to re-wire the cables going to the backplane plug. It can definitely power twelve drives.
Err codemadness.org 70 i 65176 Err codemadness.org 70 i 65177And that’s almost all there is to it. Unfortunately the main fans are connected to the backplane, which you’ve just removed. You can power them from an adapter on the drive power cables, but there are unused fan connectors on the motherboard. I’m doing a bit more research on cooling options, but this approach has promising possibilities for noise reduction.
Err codemadness.org 70 i 65178
Tarsnap
Err codemadness.org 70 i 65197 Err codemadness.org 70 i 651989188 increase size of dbuf cache to reduce indirect block decompression
Err codemadness.org 70 i 65225 Err codemadness.org 70 i 65226Err codemadness.org 70 i 65227With compressed ARC (6950) we use up to 25% of our CPU to decompress indirect blocks, under a workload of random cached reads. To reduce this decompression cost, we would like to increase the size of the dbuf cache so that more indirect blocks can be stored uncompressed. Err codemadness.org 70 i 65228 If we are caching entire large files of recordsize=8K, the indirect blocks use 1/64th as much memory as the data blocks (assuming they have the same compression ratio). We suggest making the dbuf cache be 1/32nd of all memory, so that in this scenario we should be able to keep all the indirect blocks decompressed in the dbuf cache. (We want it to be more than the 1/64th that the indirect blocks would use because we need to cache other stuff in the dbuf cache as well.) Err codemadness.org 70 i 65229 In real world workloads, this won't help as dramatically as the example above, but we think it's still worth it because the risk of decreasing performance is low. The potential negative performance impact is that we will be slightly reducing the size of the ARC (by ~3%).
Err codemadness.org 70 i 65230
9166 zfs storage pool checkpoint
Err codemadness.org 70 i 65232 Err codemadness.org 70 i 65233Err codemadness.org 70 i 65234The idea of Storage Pool Checkpoint (aka zpool checkpoint) deals with exactly that. It can be thought of as a “pool-wide snapshot” (or a variation of extreme rewind that doesn’t corrupt your data). It remembers the entire state of the pool at the point that it was taken and the user can revert back to it later or discard it. Its generic use case is an administrator that is about to perform a set of destructive actions to ZFS as part of a critical procedure. She takes a checkpoint of the pool before performing the actions, then rewinds back to it if one of them fails or puts the pool into an unexpected state. Otherwise, she discards it. With the assumption that no one else is making modifications to ZFS, she basically wraps all these actions into a “high-level transaction”.
Err codemadness.org 70 i 65235
8484 Implement aggregate sum and use for arc counters
Err codemadness.org 70 i 65238 Err codemadness.org 70 i 65239Err codemadness.org 70 i 65240In pursuit of improving performance on multi-core systems, we should implements fanned out counters and use them to improve the performance of some of the arc statistics. These stats are updated extremely frequently, and can consume a significant amount of CPU time.
Err codemadness.org 70 i 65241
And a small bug fix authored by me:
Err codemadness.org 70 i 65247 arcloancompressedbuf() increments arcloanedbytes by psize unconditionally In the case of zfscompressedarcenabled=0, when the buf is returned via arcreturnbuf(), if ARCBUFCOMPRESSED(buf) is false, then arcloanedbytes is decremented by lsize, not psize. Err codemadness.org 70 i 65248 Switch to using arcbufsize(buf), instead of psize, which will return psize or lsize, depending on the result of ARCBUF_COMPRESSED(buf).
Err codemadness.org 70 i 65258Err codemadness.org 70 i 65266 Err codemadness.org 70 i 65267Almost 2 decades ago we started work on W^X. The concept was simple. Pages that are writable, should not be executable. We applied this concept object by object, trying to seperate objects with different qualities to different pages. The first one we handled was the signal trampoline at the top of the stack. We just kept making changes in the same vein. Eventually W^X came to some of our kernel address spaces also. Err codemadness.org 70 i 65259 The fundamental concept is that an object should only have the Err codemadness.org 70 i 65260 permissions necessary, and any other operation should fault. The only permission separations we have are kernel vs userland, and then read, write, and execute. Err codemadness.org 70 i 65261 How about we add another new permission! This is not a hardware permission, but a software permission. It is opportunistically enforced by the kernel. Err codemadness.org 70 i 65262 the permission is MAPSTACK. If you want to use memory as a stack, you must mmap it with that flag bit. The kernel does so automatically for the stack region of a process's stack. Two other types of stack occur: thread stacks, and alternate signal stacks. Those are handled in clever ways. Err codemadness.org 70 i 65263 When a system call happens, we check if the stack-pointer register points to such a page. If it doesn't, the program is killed. We have tightened the ABI. You may no longer point your stack register at non-stack memory. You'll be killed. This checking code is MI, so it works for all platforms. Err codemadness.org 70 i 65264 Since page-permissions are generally done on page boundaries, there is caveat that thread and altstacks must now be page-sized and page-aligned, so that we can enforce the MAPSTACK attribute correctly. It is possible that a few ports need some massaging to satisfy this condition, but we haven't found any which break yet. A syslog_r has been added so that we can identify these failure cases. Also, the faulting cases are quite verbose for now, to help identify the programs we need to repair.
Err codemadness.org 70 i 65265
Err codemadness.org 70 i 65280Err codemadness.org 70 i 65299 Err codemadness.org 70 i 65300We wanted to improve our password strength algorithm, and decided to go for the industry-standard zxcvbn, from the people at Dropbox. Our web front-end would use the default Javascript library, and for mobile and desktop, we chose to use the C implementation as it was the lowest common denominator for all platforms. Err codemadness.org 70 i 65281 Bootstrapping all of this together was done pretty fast. I had toyed around with a few sample passwords so I decided to run it through the test suite we had for the previous password strength evaluator. The test generates a large number of random passwords according to different rules and expects the strength to be in a given range. But the test runner kept crashing with segmentation faults. Err codemadness.org 70 i 65282 It turns out the library has a lot of buffer overflow cases that are usually "harmless", but eventually crash your program when you run the evaluator function too much. I started fixing the cases I could see, but reading someone else's algorithms to track down tiny memory errors got old pretty fast. I needed a tool to help me. Err codemadness.org 70 i 65283 That's when I thought of Clang's Address Sanitizer. Err codemadness.org 70 i 65284 AddressSanitizer is a fast memory error detector. It consists of a compiler instrumentation module and a run-time library Err codemadness.org 70 i 65285 Let's try the sanitizer on a simple program. We'll allocate a buffer on the heap, copy each character of a string into it, and print it to standard output. Err codemadness.org 70 i 65286 + The site walks through a simple example which contains an error, it writes past the end of a buffer Err codemadness.org 70 i 65287 + The code works as expected, and nothing bad happens. It must be fine… Err codemadness.org 70 i 65288 + Then they compile it again with the address sanitizer actived Err codemadness.org 70 i 65289 So what can we gather from that pile of hex? Let's go through it line by line. Err codemadness.org 70 i 65290 AddressSanitizer found a heap buffer overflow at 0x60200000ef3d, a seemingly valid address (not NULL or any other clearly faulty value). Err codemadness.org 70 i 65291 + ASAN points directly to the line of code that is causing the problem Err codemadness.org 70 i 65292 We're writing outside of the heap in this instruction. And AddressSanitizer isn't having it. Err codemadness.org 70 i 65293 This is definitely one of my favorite indications. In addition to telling which line in the code failed and where in the memory the failure happened, you get a complete description of the closest allocated region in memory (which is probably the region you were trying to access). Err codemadness.org 70 i 65294 + They then walk through combining this with lldb, the Clang debugger, to actually interactively inspect the state of the problem when an invalid memory access happens Err codemadness.org 70 i 65295 Back to my practical case, how did I put the address sanitizer to good use? I simply ran the test suite, compiled with the sanitizer, with lldb. Sure enough, it stopped on every line that could cause a crash. It turns out there were many cases where zxcvbn-c wrote past the end of allocated buffers, on the heap and on the stack. I fixed those cases in the C library and ran the tests again. Not a segfault in sight! Err codemadness.org 70 i 65296 I've used memory tools in the past, but they were usually unwieldy, or put such a toll on performance that they were useless in any real-life case. Clang's address sanitizer turned out to be detailed, reliable, and surprisingly easy to use. I've heard of the miracles of Valgrind but macOS hardly supports it, making it a pain to use on my MacBook Pro. Err codemadness.org 70 i 65297 Coupled with Clang's static analyzer, AddressSanitizer is going to become a mandatory stop for evaluating code quality. It's also going to be the first tool I grab when facing confusing memory issues. There are many more case where I could use early failure and memory history to debug my code. For example, if a program crashes when accessing member of a deallocated object, we could easily trace the event that caused the deallocation, saving hours of adding and reading logs to retrace just what happened.
Err codemadness.org 70 i 65298
Err codemadness.org 70 i 65317Err codemadness.org 70 i 65333 Err codemadness.org 70 i 65334Note the little stack of customs forms off to the side. It’s like I’ve learned a lesson from standing at the post office counter filling out those stupid forms. Sponsors should get their books soon.
Err codemadness.org 70 i 65318 Err codemadness.org 70 i 65319This seems like an apropos moment to talk about what I do for print sponsors. I say I send them “a gift,” but what does that really mean? The obvious thing to ship them is a copy of the book I’ve written. Flat-out selling print books online has tax implications, though.
Err codemadness.org 70 i 65320 Err codemadness.org 70 i 65321Sponsors might have guessed that they’d get a copy of the book. But I shipped them the hardcover, which isn’t my usual practice.
Err codemadness.org 70 i 65322 Err codemadness.org 70 i 65323That’s because I send sponsors a gift. As it’s a gift, I get to choose what I send. I want to send them something nice, to encourage them to sponsor another book. It makes no sense for me to send a sponsor a Singing Wedgie-O-Gram. (Well, maybe a couple sponsors. You know who you are.)
Err codemadness.org 70 i 65324 Err codemadness.org 70 i 65325The poor bastards who bought into my scam–er, sponsored my untitled book–have no idea what’s coming. As of right now, their sensible guesses are woefully incomplete.
Err codemadness.org 70 i 65326 Err codemadness.org 70 i 65327Future books? They might get a copy of the book. They might get book plus something. They might just get the something. Folks who sponsor the jails book might get a cake with a file in it. Who knows?
Err codemadness.org 70 i 65328 Err codemadness.org 70 i 65329It’s a gift. It’s my job to make that gift worthwhile.
Err codemadness.org 70 i 65330 Err codemadness.org 70 i 65331And to amuse myself. Because otherwise, what’s the point?
Err codemadness.org 70 i 65332
Err codemadness.org 70 i 65391Err codemadness.org 70 i 65398 Err codemadness.org 70 i 65399KDE4 has been rudely moved aside on FreeBSD. It still installs (use x11/kde4) and should update without a problem, but this is another step towards adding modern KDE (Plasma 5 and Applications) to the official FreeBSD Ports tree. Err codemadness.org 70 i 65392 This has taken a long time mostly for administrative reasons, getting all the bits lined up so that people sticking with KDE4 (which, right now, would be everyone using KDE from official ports and packages on FreeBSD) don’t end up with a broken desktop. We don’t want that. But now that everything Qt4 and kdelibs4-based has been moved aside by suffixing it with -kde4, we have the unsuffixed names free to indicate the latest-and-greatest from upstream.
Err codemadness.org 70 i 65393 Err codemadness.org 70 i 65394KDE4 users will see a lot of packages moving around and being renamed, but no functional changes. Curiously, the KDE4 desktop depends on Qt5 and KDE Frameworks 5 — and it has for quite some time already, because the Oxygen icons are shared with KDE Frameworks, but primarily because FileLight was updated to the modern KDE Applications version some time ago (the KDE4 version had some serious bugs, although I can not remember what they were). Now that the names are cleaned up, we could consider giving KDE4 users the buggy version back.
Err codemadness.org 70 i 65395 Err codemadness.org 70 i 65396From here on, we’ve got the following things lined up:
Err codemadness.org 70 i 65397
Err codemadness.org 70 i 65406Err codemadness.org 70 i 65408 Err codemadness.org 70 i 65409So we’ve been saying Real Soon Now ™ for years, but things are Realer Sooner Nower ™ now.
Err codemadness.org 70 i 65407
Err codemadness.org 70 i 65414Err codemadness.org 70 i 65469 Err codemadness.org 70 i 65470A while back I reviewed the Dell FS12-NV7 – a 2U rack server being sold cheap by all and sundry. It’s a powerful box, even by modern standards, but one of its big drawbacks is the disk system it comes with. But it needn’t be.
Err codemadness.org 70 i 65415 Err codemadness.org 70 i 65416There are two viable solutions, depending on what you want to do. You can make use of the SAS backplane, using SAS and/or SATA drives, or you can go for fewer SATA drives and free up one or more PCIe slots as Plan B. You probably have an FS12 because it looks good for building a drive array (or even FreeNAS) so I’ll deal with Plan A first.
Err codemadness.org 70 i 65417 Err codemadness.org 70 i 65418Like most Dell servers, this comes with a Dell PERC RAID SAS controller – a PERC6/i to be precise. This ‘I’ means it has internal connectors; the /E is the same but its sockets are external.
Err codemadness.org 70 i 65419 Err codemadness.org 70 i 65420The PERC connects to a twelve-slot backplane forming a drive array at the front of the box. More on the backplane later; it’s the PERCs you need to worry about.
Err codemadness.org 70 i 65421 Err codemadness.org 70 i 65422The PERC6 is actually an LSI Megaraid 1078 card, which is just the thing you need if you’re running an operating system like Windows that doesn’t support a volume manager, striping and other grown-up stuff. Or if your OS does have these features, but you just don’t trust it. If you are running such an OS you may as well stick to the PERC6, and good luck to you. If you’re using BSD (including FreeNAS), Solaris or a Linux distribution that handles disk arrays, read on. The PERC6 is a solution to a problem you probably don’t have, but in all other respects its a turkey. You really want a straightforward HBA (Host Bus Adapter) that allows your clever operating system to talk directly with the drives.
Err codemadness.org 70 i 65423 Err codemadness.org 70 i 65424Any SAS card based on the 1078 (such as the PERC6) is likely to have problems with drives larger than 2Tb. I’m not completely sure why, but I suspect it only applies to SATA. Unfortunately I don’t have any very large SAS drives to test this theory. A 2Tb limit isn’t really such a problem when you’re talking about a high performance array, as lots of small drives are a better option anyway. But it does matter if you’re building a very large datastore and don’t mind slower access and very significant resilvering times when you replace a drive. And for large datastores, very large SATA drives save you a whole lot of cash. The best capacity/cost ratio is for 5Gb SATA drives
Err codemadness.org 70 i 65425 Err codemadness.org 70 i 65426Some Dell PERCs can be re-flashed with LSI firmware and used as a normal HBA. Unfortunately the PERC6 isn’t one of them. I believe the PERC6/R can be, but those I’ve seen in a FS12 are just a bit too old. So the first thing you’ll need to do is dump them in the recycling or try and sell them on eBay.
Err codemadness.org 70 i 65427 Err codemadness.org 70 i 65428There are actually two PERC6 cards in most machine, and they each support eight SAS channels through two SFF-8484 connectors on each card. Given there are twelve drives slots, one of the PERCs is only half used. Sometimes they have a cable going off to a battery located near the fans. This is used in a desperate attempt to keep the data in the card’s cache safe in order to avoid write holes corrupting NTFS during a power failure, although the data on the on-drive caches won’t be so lucky. If you’re using a file system like that, make sure you have a UPS for the whole lot.
Err codemadness.org 70 i 65429 Err codemadness.org 70 i 65430But we’re going to put the PERCs out of our misery and replace them with some nice new LSI HBAs that will do our operating system’s bidding and let it talk to the drives as it knows best. But which to pick? First we need to know what we’re connecting.
Err codemadness.org 70 i 65431 Err codemadness.org 70 i 65432Moving to the front of the case there are twelve metal drive slots with a backplane behind. Dell makes machines with either backplanes or expanders. A backplane has a 1:1 SAS channel to drive connection; an expander takes one SAS channel and multiplexes it to (usually) four drives. You could always swap the blackplane with an expander, but I like the 1:1 nature of a backplane. It’s faster, especially if you’re configured as an array. And besides, we don’t want to spend more money than we need to, otherwise we wouldn’t be hot-rodding a cheap 2U server in the first place – expanders are expensive. Bizarrely, HBAs are cheap in comparison. So we need twelve channels of SAS that will connect to the sockets on the backplane.
Err codemadness.org 70 i 65433 Err codemadness.org 70 i 65434The HBA you will probably want to go with is an LSI, as these have great OS support. Other cards are available, but check that the drivers are also available. The obvious choice for SAS aficionados is the LSI 9211-8i, which has eight internal channels. This is based on an LSI 2000 series chip, the 2008, which is the de-facto standard. There’s also four-channel -4i version, so you could get your twelve channels using one of each – but the price difference is small these days, so you might as well go for two -8i cards. If you want cheaper there are 1068-based equivalent cards, and these work just fine at about half the price. They probably won’t work with larger disks, only operate at 3Gb and the original SAS standard. However, the 2000 series is only about £25 extra and gives you more options for the future. A good investment. Conversely, the latest 3000 series cards can do some extra stuff (particularly to do with active cables) but I can’t see any great advantage in paying megabucks for one unless you’re going really high-end – in which case the NV12 isn’t the box for you anyway. And you’d need some very fast drives and a faster backplane to see any speed advantage. And probably a new motherboard….
Err codemadness.org 70 i 65435 Err codemadness.org 70 i 65436Whether the 6Gb SAS2 of the 9211-8i is any use on the backplane, which was designed for 3Gb, I don’t know. If it matters that much to you you probably need to spend a lot more money. A drive array with a direct 3Gb to each drive is going to shift fast enough for most purposes.
Err codemadness.org 70 i 65437 Err codemadness.org 70 i 65438Once you have removed the PERCs and plugged in your modern-ish 9211 HBAs, your next problem is going to be the cable. Both the PERCs and the backplane have SFF-8484 multi-lane connectors, which you might not recognise. SAS is a point-to-point system, the same as SATA, and a multi-lane cable is simply four single cables in a bundle with one plug. (Newer versions of SAS have more). SFF-8484 multi-lane connectors are somewhat rare, (but unfortunately this doesn’t make them valuable if you were hoping to flog them on eBay). The world switched quickly to the SFF-8087 for multi-lane SAS. The signals are electrically the same, but the connector is not.
Err codemadness.org 70 i 65439 Err codemadness.org 70 i 65440Please generate and paste your ad code here. If left empty, the ad location will be highlighted on your blog pages with a reminder to enter your code. Mid-Post Err codemadness.org 70 i 65441 So there are two snags with this backplane. Firstly it’s designed to work with PERC controllers; secondly it has the old SFF-8484 connectors on the back, and any SAS cables you find are likely to have SFF-8087.
Err codemadness.org 70 i 65442 Err codemadness.org 70 i 65443First things first – there is actually a jumper on the backplane to tell it whether it’s talking to a PERC or a standard LSI HBA. All you need to do is find it and change it. Fortunately there are very few jumpers to choose from (i.e. two), and you know the link is already in the wrong place. So try them one at a time until it works. The one you want may be labelled J15, but I wouldn’t like to say this was the same on every variant.
Err codemadness.org 70 i 65444 Err codemadness.org 70 i 65445Second problem: the cable. You can get cables with an SFF-8087 on one end and an SFF-8484 on the other. These should work. But they’re usually rather expensive. If you want to make your own, it’s a PITA but at least you have the connectors already (assuming you didn’t bin the ones on the PERC cables).
Err codemadness.org 70 i 65446 Err codemadness.org 70 i 65447I don’t know what committee designed SAS cable connectors, but ease of construction wasn’t foremost in their collective minds. You’re basically soldering twisted pair to a tiny PCB. This is mechanically rubbish, of course, as the slightest force on the cable will lift the track. Therefore its usual to cover the whole joint in solidified gunk (technical term) to protect it. Rewiring SAS connectors is definitely not easy.
Err codemadness.org 70 i 65448 Err codemadness.org 70 i 65449I’ve tried various ways of soldering to them, none of which were satisfactory or rewarding. One method is to clip the all bare wires you wish to solder using something like a bulldog clip so they’re at lined up horizontally and then press then adjust the clamp so they’re gently pressed to the tracks on the board, making final adjustments with a strong magnifying glass and a fine tweezers. You can then either solder them with a fine temperature-controlled iron, or have pre-coated the pads with solder paste and flash across it with an SMD rework station. I’d love to know how they’re actually manufactured – using a precision jig I assume.
Err codemadness.org 70 i 65450 Err codemadness.org 70 i 65451The “easy” way is to avoid soldering the connectors at all; simply cut existing cables in half and join one to the other. I’ve used prototyping matrix board for this. Strip and twist the conductors, push them through a hole and solder. This keeps things compact but manageable. We’re dealing with twisted pair here, so maintain the twists as close as possible to the board – it actually works quite well.
Err codemadness.org 70 i 65452 Err codemadness.org 70 i 65453However, I’ve now found a reasonably-priced source of the appropriate cable so I don’t do this any more. Contact me if you need some in the UK.
Err codemadness.org 70 i 65454 Err codemadness.org 70 i 65455So all that remains is to plug your HBAs to the backplane, shove in some drives and you’re away. If you’re at this stage, it “just works”. The access lights for all the drives do their thing as they should. The only mystery is how you can get the ident LED to come on; this may be controlled by the PERC when it detects a failure using the so-called sideband channel, or it may be operated by the electronics on the backplane. It’s workings are, I’m afraid, something of a mystery still – it’s got too much electronics on board to be a completely passive backplane.
Err codemadness.org 70 i 65456 Err codemadness.org 70 i 65457Plan B: SATA
Err codemadness.org 70 i 65458 Err codemadness.org 70 i 65459If you plan to use only SATA drives, especially if you don’t intend using more than six, it makes little sense to bother with SAS at all. The Gigabyte motherboard comes with half a dozen perfectly good 3Gb SATA channels, and if you need more you can always put another controller in a PCIe slot, or even USB. The advantages are lower cost and you get to free up two PCIe slots for more interesting things.
Err codemadness.org 70 i 65460 Err codemadness.org 70 i 65461The down-side is that you can’t use the SAS backplane, but you can still use the mounting bays.
Err codemadness.org 70 i 65462 Err codemadness.org 70 i 65463Removing the backplane looks tricky, but it really isn’t when you look a bit closer. Take out the fans first (held in place by rubber blocks), undo a couple of screws and it just lifts and slides out. You can then slot and lock in the drives and connect the SATA connectors directly to the back of the drives. You could even slide them out again without opening the case, as long as the cable was long enough and you manually detached the cable it when it was withdrawn. And let’s face it – drives are likely to last for years so even with half a dozen it’s not that great a hardship to open the case occasionally.
Err codemadness.org 70 i 65464 Err codemadness.org 70 i 65465Next comes power. The PSU has a special connector for the backplane and two standard SATA power plugs. You could split these three ways using an adapter, but if you have a lot of drives you might want to re-wire the cables going to the backplane plug. It can definitely power twelve drives.
Err codemadness.org 70 i 65466 Err codemadness.org 70 i 65467And that’s almost all there is to it. Unfortunately the main fans are connected to the backplane, which you’ve just removed. You can power them from an adapter on the drive power cables, but there are unused fan connectors on the motherboard. I’m doing a bit more research on cooling options, but this approach has promising possibilities for noise reduction.
Err codemadness.org 70 i 65468
Tarsnap
Err codemadness.org 70 i 65487 Err codemadness.org 70 i 65488MP3 Feed | iTunes Feed | HD Vid Feed | HD Torrent Feed
Err codemadness.org 70 i 66141 Err codemadness.org 70 i 66142Err codemadness.org 70 i 66153Err codemadness.org 70 i 66159 Err codemadness.org 70 i 66160Whilst setting up one of my development laptops to port some software to Windows I noticed Windows 10 doing crazy things like installing or updating apps and games by default after initial setup. The one I noticed in particular was Candy Crush Soda Saga which for those who don't know of it is some cheesy little puzzle game originally for consumer devices. I honestly did not want software like this near to a development machine. It has also been reported that Windows 10 now also updates core system software without notifying the user. Surely this destroys any vaguely deterministic behaviour, in my opinion making Windows 10 by default almost useless for development testbeds.
Err codemadness.org 70 i 66154 Err codemadness.org 70 i 66155Deciding instead to start from scratch but this time to set the inbuilt Windows Firewall to be very restrictive and only allow a few select programs to communicate. In this case all I really needed to be online was Firefox, Subversion and Putty. To my amusement (and astonishment) I found out that the Windows firewall could be modified to give access very easily by programs during installation (usually because this task needs to be done with admin privileges). It also seems that Windows store Apps can change the windows firewall settings at any point. One way to get around this issue could be to install a 3rd party firewall that most software will not have knowledge about and thus not attempt to break through. However the only decent firewall I have used was Sygate Pro which unfortunately is no longer supported by recent operating systems. The last supported versions was 2003, XP and 2000. In short, I avoid 3rd party firewalls.
Err codemadness.org 70 i 66156 Err codemadness.org 70 i 66157Instead I decided to trap Windows 10 (and all of it's rogue updaters) behind a virtual machine running OpenBSD. This effectively provided me with a full blown firewall appliance. From here I could then allow specific software I trusted through the firewall (via a proxy) in a safe, controlled and deterministic manner. For other interested developers (and security conscious users) and for my own reference, I have listed the steps taken here:
Err codemadness.org 70 i 66158
1) First and foremost disable the Windows DHCP service - this is so no IP can be obtained on any interface. This effectively stops any communication with any network on the host system. This can be done by running services.msc with admin privileges and stopping and disabling the service called DHCP Client.
2) Install or enable your favorite virtualization software - I have tested this with both VirtualBox and Hyper-V. Note that on non-server versions of Windows, in order to get Hyper-V working, your processor also needs to support SLAT which is daft so to avoid faffing about, I recommend using VirtualBox to get round this seemingly arbitrary restriction.
3) Install OpenBSD on the VM - Note, if you decide to use Hyper-V, its hardware support isn't 100% perfect to run OpenBSD and you will need to disable a couple of things in the kernel. At the initial boot prompt, run the following commands.
Err codemadness.org 70
i 66167 config -e -o /bsd /bsd Err codemadness.org 70
i 66168 disable acpi Err codemadness.org 70
i 66169 disable mpbios Err codemadness.org 70
i 66170
4) Add a host only virtual adapter to the VM - This is the one which we are going to connect through the VM with. Look at the IP that VirtualBox assigns this in network manager on the host machine. Mine was [b]192.168.56.1[/b]. Set up the adapter in the OpenBSD VM to have a static address on the same subnet. For example [b]192.168.56.2[/b]. If you are using Hyper-V and OpenBSD, make sure you add a "Legacy Interface" because no guest additions are available. Then set up a virtual switch which is host only.
5) Add a bridged adapter to the VM - then assign it to whichever interface you wanted to connect to the external network with. Note that if using Wireless, set the bridged adapters MAC address to the same as your physical device or the access point will reject it. This is not needed (or possible) on Hyper-V because the actual device is "shared" rather than bridged so the same MAC address is used. Again, if you use Hyper-V, then add another virtual switch and attach it to your chosen external interface. VMs in Hyper-V "share" an adapter within a virtual switch and there is the option to also disable the hosts ability to use this interface at the same time which is fine for an additional level of security if those pesky rogue apps and updaters can also enable / disable DHCP service one day which wouldn't be too surprising.
6) Connect to your network in the host OS - In case of Wireless, select the correct network from the list and type in a password if needed. Windows will probably say "no internet available", it also does not assign an IP address which is fine.
7) Install the Squid proxy package on the OpenBSD guest and enable the daemon
```
Err codemadness.org 70 i 66180 Err codemadness.org 70 i 66181```
Err codemadness.org 70 i 66188 Err codemadness.org 70 i 66189Err codemadness.org 70 i 66190Err codemadness.org 70 i 66192 Err codemadness.org 70 i 66193We will use this service for a limited selection of "safe and trusted" programs to connect to the outside world from within the Windows 10 host. You can also use putty on the host to connect to the VM via SSH and create a SOCKS proxy which software like Firefox can also use to connect externally.
Err codemadness.org 70 i 66191
8) Configure the software you want to be able to access the external network with
Err codemadness.org 70 i 66195 Err codemadness.org 70 i 66196 Err codemadness.org 70
i 66202 --proxy-server="socks5://<VM IP>:<SOCKS PORT>" Err codemadness.org 70
i 66203 --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE <VM IP>" Err codemadness.org 70
i 66204
Err codemadness.org 70 i 66215Err codemadness.org 70 i 66217 Err codemadness.org 70 i 66218I've managed to unbreak the LLDB debugger as much as possible with the current kernel and hit problems with ptrace(2) that are causing issues with further work on proper NetBSD support. Meanwhile, I've upstreamed all the planned NetBSD patches to sanitizers and helped other BSDs to gain better or initial support.
Err codemadness.org 70 i 66216
Err codemadness.org 70 i 66223Err codemadness.org 70 i 66229 Err codemadness.org 70 i 66230Since the last time I worked on LLDB, we have introduced many changes to the kernel interfaces (most notably related to signals) that apparently fixed some bugs in Go and introduced regressions in ptrace(2). Part of the regressions were noted by the existing ATF tests. However, the breakage was only marked as a new problem to resolve. For completeness, the ptrace(2) code was also cleaned up by Christos Zoulas, and we fixed some bugs with compat32.
Err codemadness.org 70 i 66224 Err codemadness.org 70 i 66225I've fixed a crash in *NetBSD::Factory::Launch(), triggered on startup of the lldb-server application.
Err codemadness.org 70 i 66226 Err codemadness.org 70 i 66227Here is the commit message:
Err codemadness.org 70 i 66228
``` Err codemadness.org 70 i 66231 We cannot call process_up->SetState() inside Err codemadness.org 70 i 66232 the NativeProcessNetBSD::Factory::Launch Err codemadness.org 70 i 66233 function because it triggers a NULL pointer Err codemadness.org 70 i 66234 deference.
Err codemadness.org 70 i 66235 Err codemadness.org 70 i 66236The generic code for launching a process in: Err codemadness.org 70 i 66237 GDBRemoteCommunicationServerLLGS::LaunchProcess Err codemadness.org 70 i 66238 sets the mdebuggedprocessup pointer after Err codemadness.org 70 i 66239 a successful call to mprocessfactory.Launch(). Err codemadness.org 70 i 66240 If we attempt to call processup->SetState() Err codemadness.org 70 i 66241 inside a platform specific Launch function we Err codemadness.org 70 i 66242 end up dereferencing a NULL pointer in Err codemadness.org 70 i 66243 NativeProcessProtocol::GetCurrentThreadID().
Err codemadness.org 70 i 66244 Err codemadness.org 70 i 66245Use the proper call processup->SetState(,false) Err codemadness.org 70 i 66246 that sets notifydelegates to false. Err codemadness.org 70 i 66247 ```
Err codemadness.org 70 i 66248 Err codemadness.org 70 i 66249Err codemadness.org 70 i 66254Err codemadness.org 70 i 66258 Err codemadness.org 70 i 66259I suspended development of new features in sanitizers last month, but I was still in the process of upstreaming of local patches. This process was time-consuming as it required rebasing patches, adding dedicated tests, and addressing all other requests and comments from the upstream developers.
Err codemadness.org 70 i 66255 Err codemadness.org 70 i 66256I'm not counting hot fixes, as some changes were triggering build or test issues on !NetBSD hosts. Thankfully all these issues were addressed quickly. The final result is a reduction of local delta size of almost 1MB to less than 100KB (1205 lines of diff). The remaining patches are rescheduled for later, mostly because they depend on extra work with cross-OS tests and prior integration of sanitizers with the basesystem distribution. I didn't want to put extra work here in the current state of affairs and, I've registered as a mentor for Google Summer of Code for the NetBSD Foundation and prepared Software Quality improvement tasks in order to outsource part of the labour.
Err codemadness.org 70 i 66257
Err codemadness.org 70 i 66264Err codemadness.org 70 i 66270 Err codemadness.org 70 i 66271I've also improved documentation for some of the features of NetBSD, described in man-pages. These pieces of information were sometimes wrong or incomplete, and this makes covering the NetBSD system with features such as sanitizers harder as there is a mismatch between the actual code and the documented code.
Err codemadness.org 70 i 66265 Err codemadness.org 70 i 66266Some pieces of software also require better namespacing support, these days mostly for the POSIX standard. I've fixed few low-hanging fruits there and requested pullups to NetBSD-8(BETA).
Err codemadness.org 70 i 66267 Err codemadness.org 70 i 66268I thank the developers for improving the landed code in order to ship the best solutions for users.
Err codemadness.org 70 i 66269
Err codemadness.org 70 i 66276Err codemadness.org 70 i 66282 Err codemadness.org 70 i 66283A One-man-show in human activity is usually less fun and productive than collaboration in a team. This is also true in software development. Last month I was helping as a reviewer to port LLVM features to FreeBSD and when possible to OpenBSD. This included MSan/FreeBSD, libFuzzer/FreeBSD, XRay/FreeBSD and UBSan/OpenBSD.
Err codemadness.org 70 i 66277 Err codemadness.org 70 i 66278I've landed most of the submitted and reviewed code to the mainstream LLVM tree.
Err codemadness.org 70 i 66279 Err codemadness.org 70 i 66280Part of the code also verified the correctness of NetBSD routes in the existing porting efforts and showed new options for improvement. This is the reason why I've landed preliminary XRay/NetBSD code and added missing NetBSD bits to ToolChain::getOSLibName(). The latter produced setup issues with the prebuilt LLVM toolchain, as the directory name with compiler-rt goodies were located in a path like ./lib/clang/7.0.0/lib/netbsd8.99.12 with a varying OS version. This could stop working after upgrades, so I've simplified it to "netbsd", similar to FreeBSD and Solaris.
Err codemadness.org 70 i 66281
Err codemadness.org 70 i 66288Err codemadness.org 70 i 66290 Err codemadness.org 70 i 66291I've prepared a build of Clang/LLVM with LLDB and compiler-rt features prebuilt on NetBSD/amd64 v. 8.99.12:
Err codemadness.org 70 i 66289
llvm-clang-compilerrt-lldb-7.0.0beta_2018-02-28.tar.bz2
Err codemadness.org 70 i 66298Err codemadness.org 70 i 66300 Err codemadness.org 70 i 66301With the approaching NetBSD 8.0 release I plan to finish backporting a few changes there from HEAD:
Err codemadness.org 70 i 66299
Err codemadness.org 70 i 66308Err codemadness.org 70 i 66310 Err codemadness.org 70 i 66311Once done, I will return to ptrace(2) debugging and corrections.
Err codemadness.org 70 i 66309
DigitalOcean
Err codemadness.org 70 i 66314 Err codemadness.org 70 i 66315Err codemadness.org 70 i 66322Err codemadness.org 70 i 66334 Err codemadness.org 70 i 66335When working on complex systems, such as OS kernels, your attention span and cognitive energy are too valuable to be wasted on inefficiencies pertaining to ancillary tasks. After experimenting with different environmental setups for kernel debugging, some of which were awkward and distracting from my main objectives, I have arrived to my current workflow, which is described here. This approach is mainly oriented towards security research and the study of kernel internals.
Err codemadness.org 70 i 66323 Err codemadness.org 70 i 66324Before delving into the details, this is the general outline of my environment:
Err codemadness.org 70 i 66325 Err codemadness.org 70 i 66326My host system runs Linux. My target system is a QEMU guest.
Err codemadness.org 70 i 66327 Err codemadness.org 70 i 66328I’m tracing and debugging on my host system by attaching GDB (with NetBSD x86-64 ABI support) to QEMU’s built-in GDB server. Err codemadness.org 70 i 66329 I work with NetBSD-current. All sources are built on my host system with the cross-compilation toolchain produced by build.sh. Err codemadness.org 70 i 66330 I use NFS to share the source tree and the build artifacts between the target and the host. Err codemadness.org 70 i 66331 I find IDEs awkward, so for codebase navigation I mainly rely on vim, tmux and ctags. Err codemadness.org 70 i 66332 For non-intrusive instrumentation, such as figuring out control flow, I’m using dtrace.
Err codemadness.org 70 i 66333
Preparing the host system
Err codemadness.org 70 i 66337 Err codemadness.org 70 i 66338Building NetBSD-current
A word of warning
Err codemadness.org 70 i 66343 Err codemadness.org 70 i 66344 Err codemadness.org 70
i 66348 -r Remove contents of TOOLDIR and DESTDIR before building. Err codemadness.org 70
i 66349 -u Set MKUPDATE=yes; do not run "make clean" first. Err codemadness.org 70
i 66350 Without this, everything is rebuilt, including the tools. Err codemadness.org 70
i 66351
Err codemadness.org 70 i 66354Err codemadness.org 70 i 66359 Err codemadness.org 70 i 66360Chance are, you do not want to use these options once you’ve successfully built the cross-compilation toolchain and your entire userland, because building those takes time and there aren’t many good reasons to recompile them from scratch. Here’s what to expect:
Err codemadness.org 70 i 66355 Err codemadness.org 70 i 66356On my desktop, running a quad-core Intel i5-3470 at 3.20GHz with 24GB of RAM and underlying directory structure residing on a SSD drive, the entire process took about 55 minutes. I was running make with -j12, so the machine was quite busy. Err codemadness.org 70 i 66357 On an old Dell D630 laptop, running Intel Core 2 Duo T7500 at 2.20GHz with 4GB of RAM and a slow hard drive (5400RPM), the process took approximatelly 2.5 hours. I was running make with -j4. Based on the temperature alerts and CPU clock throttling messages, it was quite a struggle.
Err codemadness.org 70 i 66358
Compiling the sources
Err codemadness.org 70 i 66363 Err codemadness.org 70 i 66364``` Err codemadness.org 70 i 66380 Add support for the experimental Internet-Draft "TCP Alternative Backoff with Err codemadness.org 70 i 66381 ECN (ABE)" proposal to the New Reno congestion control algorithm module. Err codemadness.org 70 i 66382 ABE reduces the amount of congestion window reduction in response to Err codemadness.org 70 i 66383 ECN-signalled congestion relative to the loss-inferred congestion response.
Err codemadness.org 70 i 66384 Err codemadness.org 70 i 66385More details about ABE can be found in the Internet-Draft: Err codemadness.org 70 i 66386 https://tools.ietf.org/html/draft-ietf-tcpm-alternativebackoff-ecn
Err codemadness.org 70 i 66387 Err codemadness.org 70 i 66388The implementation introduces four new sysctls:
Err codemadness.org 70 i 66389 Err codemadness.org 70 i 66390net.inet.tcp.cc.abe defaults to 0 (disabled) and can be set to non-zero to Err codemadness.org 70 i 66392 enable ABE for ECN-enabled TCP connections.
net.inet.tcp.cc.newreno.beta and net.inet.tcp.cc.newreno.betaecn set the Err codemadness.org 70 i 66394 multiplicative window decrease factor, specified as a percentage, applied to Err codemadness.org 70 i 66395 the congestion window in response to a loss-based or ECN-based congestion Err codemadness.org 70 i 66396 signal respectively. They default to the values specified in the draft i.e. Err codemadness.org 70 i 66397 beta=50 and betaecn=80.
net.inet.tcp.cc.abe_frlossreduce defaults to 0 (disabled) and can be set to Err codemadness.org 70 i 66399 non-zero to enable the use of standard beta (50% by default) when repairing Err codemadness.org 70 i 66400 loss during an ECN-signalled congestion recovery episode. It enables a more Err codemadness.org 70 i 66401 conservative congestion response and is provided for the purposes of Err codemadness.org 70 i 66402 experimentation as a result of some discussion at IETF 100 in Singapore.
The values of beta and betaecn can also be set per-connection by way of the Err codemadness.org 70 i 66406 TCPCCALGOOPT TCP-level socket option and the new CCNEWRENOBETA or Err codemadness.org 70 i 66407 CCNEWRENOBETA_ECN CC algo sub-options.
Err codemadness.org 70 i 66408 Err codemadness.org 70 i 66409Submitted by: Tom Jones tj@enoti.me Err codemadness.org 70 i 66410 Tested by: Tom Jones tj@enoti.me, Grenville Armitage garmitage@swin.edu.au Err codemadness.org 70 i 66411 Relnotes: Yes Err codemadness.org 70 i 66412 Differential Revision: https://reviews.freebsd.org/D11616 Err codemadness.org 70 i 66413 ```
Err codemadness.org 70 i 66414 Err codemadness.org 70 i 66415Err codemadness.org 70 i 66420Err codemadness.org 70 i 66422 Err codemadness.org 70 i 66423The recent changes in -current mitigating the Meltdown vulnerability have been backported to the 6.1 and 6.2 (amd64) releases, and the syspatch update (for 6.2) is now available.
Err codemadness.org 70 i 66421
``` Err codemadness.org 70 i 66428 Changes by: bluhm@cvs.openbsd.org 2018/02/26 05:36:18 Err codemadness.org 70 i 66429 Log message: Err codemadness.org 70 i 66430 Implement a workaround against the Meltdown flaw in Intel CPUs. Err codemadness.org 70 i 66431 The following changes have been backported from OpenBSD -current.
Err codemadness.org 70 i 66432 Err codemadness.org 70 i 66433Changes by: guenther@cvs.openbsd.org 2018/01/06 15:03:13 Err codemadness.org 70 i 66434 Log message: Err codemadness.org 70 i 66435 Handle %gs like %[def]s and reset set it in cpu_switchto() instead of on Err codemadness.org 70 i 66436 every return to userspace.
Err codemadness.org 70 i 66437 Err codemadness.org 70 i 66438Changes by: mlarkin@cvs.openbsd.org 2018/01/06 18:08:20 Err codemadness.org 70 i 66439 Log message: Err codemadness.org 70 i 66440 Add identcpu.c and specialreg.h definitions for the new Intel/AMD MSRs Err codemadness.org 70 i 66441 that should help mitigate spectre. This is just the detection piece, these Err codemadness.org 70 i 66442 features are not yet used. Err codemadness.org 70 i 66443 Part of a larger ongoing effort to mitigate meltdown/spectre. i386 will Err codemadness.org 70 i 66444 come later; it needs some machdep.c cleanup first.
Err codemadness.org 70 i 66445 Err codemadness.org 70 i 66446Changes by: mlarkin@cvs.openbsd.org 2018/01/07 12:56:19 Err codemadness.org 70 i 66447 Log message: Err codemadness.org 70 i 66448 remove all PG_G global page mappings from the kernel when running on Err codemadness.org 70 i 66449 Intel CPUs. Part of an ongoing set of commits to mitigate the Intel Err codemadness.org 70 i 66450 "meltdown" CVE. This diff does not confer any immunity to that Err codemadness.org 70 i 66451 vulnerability - subsequent commits are still needed and are being Err codemadness.org 70 i 66452 worked on presently. Err codemadness.org 70 i 66453 ok guenther, deraadt
Err codemadness.org 70 i 66454 Err codemadness.org 70 i 66455Changes by: mlarkin@cvs.openbsd.org 2018/01/12 01:21:30 Err codemadness.org 70 i 66456 Log message: Err codemadness.org 70 i 66457 IBRS -> IBRS,IBPB in identifycpu lines
Err codemadness.org 70 i 66458 Err codemadness.org 70 i 66459Changes by: guenther@cvs.openbsd.org 2018/02/21 12:24:15 Err codemadness.org 70 i 66460 Log message: Err codemadness.org 70 i 66461 Meltdown: implement user/kernel page table separation. Err codemadness.org 70 i 66462 On Intel CPUs which speculate past user/supervisor page permission checks, Err codemadness.org 70 i 66463 use a separate page table for userspace with only the minimum of kernel code Err codemadness.org 70 i 66464 and data required for the transitions to/from the kernel (still marked as Err codemadness.org 70 i 66465 supervisor-only, of course): Err codemadness.org 70 i 66466 - the IDT (RO) Err codemadness.org 70 i 66467 - three pages of kernel text in the .kutext section for interrupt, trap, Err codemadness.org 70 i 66468 and syscall trampoline code (RX) Err codemadness.org 70 i 66469 - one page of kernel data in the .kudata section for TLB flush IPIs (RW) Err codemadness.org 70 i 66470 - the lapic page (RW, uncachable) Err codemadness.org 70 i 66471 - per CPU: one page for the TSS+GDT (RO) and one page for trampoline Err codemadness.org 70 i 66472 stacks (RW) Err codemadness.org 70 i 66473 When a syscall, trap, or interrupt takes a CPU from userspace to kernel the Err codemadness.org 70 i 66474 trampoline code switches page tables, switches stacks to the thread's real Err codemadness.org 70 i 66475 kernel stack, then copies over the necessary bits from the trampoline stack. Err codemadness.org 70 i 66476 On return to userspace the opposite occurs: recreate the iretq frame on the Err codemadness.org 70 i 66477 trampoline stack, switch stack, switch page tables, and return to userspace. Err codemadness.org 70 i 66478 mlarkin@ implemented the pmap bits and did 90% of the debugging, diagnosing Err codemadness.org 70 i 66479 issues on MP in particular, and drove the final push to completion. Err codemadness.org 70 i 66480 Many rounds of testing by naddy@, sthen@, and others Err codemadness.org 70 i 66481 Thanks to Alex Wilson from Joyent for early discussions about trampolines Err codemadness.org 70 i 66482 and their data requirements. Err codemadness.org 70 i 66483 Per-CPU page layout mostly inspired by DragonFlyBSD. Err codemadness.org 70 i 66484 ok mlarkin@ deraadt@
Err codemadness.org 70 i 66485 Err codemadness.org 70 i 66486Changes by: bluhm@cvs.openbsd.org 2018/02/22 13:18:59 Err codemadness.org 70 i 66487 Log message: Err codemadness.org 70 i 66488 The GNU assembler does not understand 1ULL, so replace the constant Err codemadness.org 70 i 66489 with 1. Then it compiles with gcc, sign and size do not matter Err codemadness.org 70 i 66490 here.
Err codemadness.org 70 i 66491 Err codemadness.org 70 i 66492Changes by: bluhm@cvs.openbsd.org 2018/02/22 13:27:14 Err codemadness.org 70 i 66493 Log message: Err codemadness.org 70 i 66494 The compile time assertion for cpu info did not work with gcc. Err codemadness.org 70 i 66495 Rephrase the condition in a way that both gcc and clang accept it.
Err codemadness.org 70 i 66496 Err codemadness.org 70 i 66497Changes by: guenther@cvs.openbsd.org 2018/02/22 13:36:40 Err codemadness.org 70 i 66498 Log message: Err codemadness.org 70 i 66499 Set the PG_G (global) bit on the special page table entries that are shared Err codemadness.org 70 i 66500 between the u-k and u+k tables, because they're actually in all tables.
Err codemadness.org 70 i 66501 Err codemadness.org 70 i 66502OpenBSD 6.1 errata 037 Err codemadness.org 70 i 66503 ```
Err codemadness.org 70 i 66504 Err codemadness.org 70 i 66505``` Err codemadness.org 70 i 66510 Changes by: bluhm@cvs.openbsd.org 2018/02/26 05:29:48 Err codemadness.org 70 i 66511 Log message: Err codemadness.org 70 i 66512 Implement a workaround against the Meltdown flaw in Intel CPUs. Err codemadness.org 70 i 66513 The following changes have been backported from OpenBSD -current.
Err codemadness.org 70 i 66514 Err codemadness.org 70 i 66515Changes by: guenther@cvs.openbsd.org 2018/01/06 15:03:13 Err codemadness.org 70 i 66516 Log message: Err codemadness.org 70 i 66517 Handle %gs like %[def]s and reset set it in cpu_switchto() instead of on Err codemadness.org 70 i 66518 every return to userspace.
Err codemadness.org 70 i 66519 Err codemadness.org 70 i 66520Changes by: mlarkin@cvs.openbsd.org 2018/01/06 18:08:20 Err codemadness.org 70 i 66521 Log message: Err codemadness.org 70 i 66522 Add identcpu.c and specialreg.h definitions for the new Intel/AMD MSRs Err codemadness.org 70 i 66523 that should help mitigate spectre. This is just the detection piece, these Err codemadness.org 70 i 66524 features are not yet used. Err codemadness.org 70 i 66525 Part of a larger ongoing effort to mitigate meltdown/spectre. i386 will Err codemadness.org 70 i 66526 come later; it needs some machdep.c cleanup first.
Err codemadness.org 70 i 66527 Err codemadness.org 70 i 66528Changes by: mlarkin@cvs.openbsd.org 2018/01/07 12:56:19 Err codemadness.org 70 i 66529 Log message: Err codemadness.org 70 i 66530 remove all PG_G global page mappings from the kernel when running on Err codemadness.org 70 i 66531 Intel CPUs. Part of an ongoing set of commits to mitigate the Intel Err codemadness.org 70 i 66532 "meltdown" CVE. This diff does not confer any immunity to that Err codemadness.org 70 i 66533 vulnerability - subsequent commits are still needed and are being Err codemadness.org 70 i 66534 worked on presently.
Err codemadness.org 70 i 66535 Err codemadness.org 70 i 66536Changes by: mlarkin@cvs.openbsd.org 2018/01/12 01:21:30 Err codemadness.org 70 i 66537 Log message: Err codemadness.org 70 i 66538 IBRS -> IBRS,IBPB in identifycpu lines
Err codemadness.org 70 i 66539 Err codemadness.org 70 i 66540Changes by: guenther@cvs.openbsd.org 2018/02/21 12:24:15 Err codemadness.org 70 i 66541 Log message: Err codemadness.org 70 i 66542 Meltdown: implement user/kernel page table separation. Err codemadness.org 70 i 66543 On Intel CPUs which speculate past user/supervisor page permission checks, Err codemadness.org 70 i 66544 use a separate page table for userspace with only the minimum of kernel code Err codemadness.org 70 i 66545 and data required for the transitions to/from the kernel (still marked as Err codemadness.org 70 i 66546 supervisor-only, of course): Err codemadness.org 70 i 66547 - the IDT (RO) Err codemadness.org 70 i 66548 - three pages of kernel text in the .kutext section for interrupt, trap, Err codemadness.org 70 i 66549 and syscall trampoline code (RX) Err codemadness.org 70 i 66550 - one page of kernel data in the .kudata section for TLB flush IPIs (RW) Err codemadness.org 70 i 66551 - the lapic page (RW, uncachable) Err codemadness.org 70 i 66552 - per CPU: one page for the TSS+GDT (RO) and one page for trampoline Err codemadness.org 70 i 66553 stacks (RW) Err codemadness.org 70 i 66554 When a syscall, trap, or interrupt takes a CPU from userspace to kernel the Err codemadness.org 70 i 66555 trampoline code switches page tables, switches stacks to the thread's real Err codemadness.org 70 i 66556 kernel stack, then copies over the necessary bits from the trampoline stack. Err codemadness.org 70 i 66557 On return to userspace the opposite occurs: recreate the iretq frame on the Err codemadness.org 70 i 66558 trampoline stack, switch stack, switch page tables, and return to userspace. Err codemadness.org 70 i 66559 mlarkin@ implemented the pmap bits and did 90% of the debugging, diagnosing Err codemadness.org 70 i 66560 issues on MP in particular, and drove the final push to completion. Err codemadness.org 70 i 66561 Many rounds of testing by naddy@, sthen@, and others Err codemadness.org 70 i 66562 Thanks to Alex Wilson from Joyent for early discussions about trampolines Err codemadness.org 70 i 66563 and their data requirements. Err codemadness.org 70 i 66564 Per-CPU page layout mostly inspired by DragonFlyBSD.
Err codemadness.org 70 i 66565 Err codemadness.org 70 i 66566Changes by: bluhm@cvs.openbsd.org 2018/02/22 13:18:59 Err codemadness.org 70 i 66567 Log message: Err codemadness.org 70 i 66568 The GNU assembler does not understand 1ULL, so replace the constant Err codemadness.org 70 i 66569 with 1. Then it compiles with gcc, sign and size do not matter Err codemadness.org 70 i 66570 here.
Err codemadness.org 70 i 66571 Err codemadness.org 70 i 66572Changes by: bluhm@cvs.openbsd.org 2018/02/22 13:27:14 Err codemadness.org 70 i 66573 Log message: Err codemadness.org 70 i 66574 The compile time assertion for cpu info did not work with gcc. Err codemadness.org 70 i 66575 Rephrase the condition in a way that both gcc and clang accept it.
Err codemadness.org 70 i 66576 Err codemadness.org 70 i 66577Changes by: guenther@cvs.openbsd.org 2018/02/22 13:36:40 Err codemadness.org 70 i 66578 Log message: Err codemadness.org 70 i 66579 Set the PG_G (global) bit on the special page table entries that are shared Err codemadness.org 70 i 66580 between the u-k and u+k tables, because they're actually in all tables.
Err codemadness.org 70 i 66581 Err codemadness.org 70 i 66582OpenBSD 6.2 errata 009 Err codemadness.org 70 i 66583 ```
Err codemadness.org 70 i 66584 Err codemadness.org 70 i 66585iXsystems
Err codemadness.org 70 i 66592 Err codemadness.org 70 i 66593Err codemadness.org 70 i 66596Err codemadness.org 70 i 66598 Err codemadness.org 70 i 66599Ken Westerback (krw@) has sent in the first report from the (recently concluded) a2k18 hackathon:
Err codemadness.org 70 i 66597
YYZ -> YVR -> MEL -> ZQN -> CHC -> DUD -> WLG -> AKL -> SYD -> BNE -> YVR -> YYZ
For those of you who don’t speak Airport code:
```
Err codemadness.org 70 i 66607 Err codemadness.org 70 i 66608Whew.
Err codemadness.org 70 i 66609 Err codemadness.org 70 i 66610Once in Dunedin the hacking commenced. The background was a regular tick of new meltdown diffs to test in addition to whatever work one was actually engaged in. I was lucky (?) in that none of the problems with the various versions cropped up on my laptop. Err codemadness.org 70 i 66611 ```
Err codemadness.org 70 i 66612 Err codemadness.org 70 i 66613``` Err codemadness.org 70 i 66614 I worked with rpe@ and tb@ to make the install script create the 'correct' FQDN when dhclient was involved. I worked with tb@ on some code cleanup in various bits of the base. dhclient(8) got some nice cleanup, further pruning/improving log messages in particular. In addition the oddball -q option was flipped into the more normal -v. I.e. be quiet by default and verbose on request.
Err codemadness.org 70 i 66615 Err codemadness.org 70 i 66616More substantially the use of recorded leases was made less intrusive by avoiding continual reconfiguration of the interface with the same information. The 'request', 'require' and 'ignore' dhclient.conf(5) statement were changed so they are cumulative, making it easier to build longer lists of affected options.
Err codemadness.org 70 i 66617 Err codemadness.org 70 i 66618I tweaked softraid(4) to remove a handrolled version of duid_format().
Err codemadness.org 70 i 66619 Err codemadness.org 70 i 66620I sprinkled a couple of M_WAITOK into amd64 and i386 mpbios to document that there is really no need to check for NULL being returned from some malloc() calls.
Err codemadness.org 70 i 66621 Err codemadness.org 70 i 66622I continued to help test the new filesystem quiescing logic that deraadt@ committed during the hackathon.
Err codemadness.org 70 i 66623 Err codemadness.org 70 i 66624I only locked myself out of my room once!
Err codemadness.org 70 i 66625 Err codemadness.org 70 i 66626Fueled by the excellent coffee from local institutions The Good Earth Cafe and The Good Oil Cafe, and the excellent hacking facilities and accommodations at the University of Otago it was another enjoyable and productive hackathon south of the equator. And I even saw penguins.
Err codemadness.org 70 i 66627 Err codemadness.org 70 i 66628Thanks to Jim Cheetham and the support from the project and the OpenBSD Foundation that made it all possible Err codemadness.org 70 i 66629 ```
Err codemadness.org 70 i 66630 Err codemadness.org 70 i 66631Err codemadness.org 70 i 66636Err codemadness.org 70 i 66640 Err codemadness.org 70 i 66641I found this when going through old documents. It looks like I wrote it and never posted it. Perhaps I didn’t consider it finished at the time. But looking at it now, I think it’s good enough to share. It’s a redrafting of the BSD licence, in poetic form. Maybe I had plans to do other licences one day; I can’t remember.
Err codemadness.org 70 i 66637 Err codemadness.org 70 i 66638I’ve interleaved it with the original license text so you can see how true, or otherwise, I’ve been to it. Enjoy :-)
Err codemadness.org 70 i 66639
``` Err codemadness.org 70
i 66642 Copyright (c)
Redistribution and use in source and binary forms, with or without Err codemadness.org 70 i 66646 modification, are permitted provided that the following conditions Err codemadness.org 70 i 66647 are met: Err codemadness.org 70 i 66648 ```
Err codemadness.org 70 i 66649 Err codemadness.org 70 i 66650Err codemadness.org 70 i 66651Err codemadness.org 70 i 66658 Err codemadness.org 70 i 66659You may redistribute and use – Err codemadness.org 70 i 66652 as source or binary, as you choose, Err codemadness.org 70 i 66653 and with some changes or without – Err codemadness.org 70 i 66654 this software; let there be no doubt. Err codemadness.org 70 i 66655 But you must meet conditions three, Err codemadness.org 70 i 66656 if in compliance you wish to be.
Err codemadness.org 70 i 66657
Err codemadness.org 70
i 66660 1. Redistributions of source code must retain the above copyright Err codemadness.org 70
i 66661 notice, this list of conditions and the following disclaimer. Err codemadness.org 70
i 66662 2. Redistributions in binary form must reproduce the above copyright Err codemadness.org 70
i 66663 notice, this list of conditions and the following disclaimer in the Err codemadness.org 70
i 66664 documentation and/or other materials provided with the distribution. Err codemadness.org 70
i 66665 3. Neither the name of the nor the names of its Err codemadness.org 70
i 66666 contributors may be used to endorse or promote products derived Err codemadness.org 70
i 66667 from this software without specific prior written permission. Err codemadness.org 70
i 66668
Err codemadness.org 70 i 66671Err codemadness.org 70 i 66685 Err codemadness.org 70 i 66686The first is obvious, of course – Err codemadness.org 70 i 66672 To keep this text within the source. Err codemadness.org 70 i 66673 The second is for binaries Err codemadness.org 70 i 66674 Place in the docs a copy, please. Err codemadness.org 70 i 66675 A moral lesson from this ode – Err codemadness.org 70 i 66676 Don’t strip the copyright on code.
Err codemadness.org 70 i 66677 Err codemadness.org 70 i 66678The third applies when you promote: Err codemadness.org 70 i 66679 You must not take, from us who wrote, Err codemadness.org 70 i 66680 our names and make it seem as true Err codemadness.org 70 i 66681 we like or love your version too. Err codemadness.org 70 i 66682 (Unless, of course, you contact us Err codemadness.org 70 i 66683 And get our written assensus.)
Err codemadness.org 70 i 66684
Err codemadness.org 70
i 66687 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS Err codemadness.org 70
i 66688 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT Err codemadness.org 70
i 66689 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS Err codemadness.org 70
i 66690 FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE Err codemadness.org 70
i 66691 COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, Err codemadness.org 70
i 66692 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, Err codemadness.org 70
i 66693 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; Err codemadness.org 70
i 66694 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER Err codemadness.org 70
i 66695 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT Err codemadness.org 70
i 66696 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN Err codemadness.org 70
i 66697 ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE Err codemadness.org 70
i 66698 POSSIBILITY OF SUCH DAMAGE. Err codemadness.org 70
i 66699
Err codemadness.org 70 i 66702Err codemadness.org 70 i 66719 Err codemadness.org 70 i 66720One final point to be laid out Err codemadness.org 70 i 66703 (You must forgive my need to shout): Err codemadness.org 70 i 66704 THERE IS NO WARRANTY FOR THIS Err codemadness.org 70 i 66705 WHATEVER THING MAY GO AMISS. Err codemadness.org 70 i 66706 EXPRESS, IMPLIED, IT’S ALL THE SAME – Err codemadness.org 70 i 66707 RESPONSIBILITY DISCLAIMED.
Err codemadness.org 70 i 66708 Err codemadness.org 70 i 66709WE ARE NOT LIABLE FOR LOSS Err codemadness.org 70 i 66710 NO MATTER HOW INCURRED THE COST Err codemadness.org 70 i 66711 THE TYPE OR STYLE OF DAMAGE DONE Err codemadness.org 70 i 66712 WHATE’ER THE LEGAL THEORY SPUN. Err codemadness.org 70 i 66713 THIS STILL REMAINS AS TRUE IF YOU Err codemadness.org 70 i 66714 INFORM US WHAT YOU PLAN TO DO.
Err codemadness.org 70 i 66715 Err codemadness.org 70 i 66716When all is told, we sum up thus – Err codemadness.org 70 i 66717 Do what you like, just don’t sue us.
Err codemadness.org 70 i 66718
Tarsnap ad
Err codemadness.org 70 i 66738 Err codemadness.org 70 i 66739MP3 Feed | iTunes Feed | HD Vid Feed | HD Torrent Feed
Err codemadness.org 70 i 66765 Err codemadness.org 70 i 66766Err codemadness.org 70 i 66777Err codemadness.org 70 i 66783 Err codemadness.org 70 i 66784Whilst setting up one of my development laptops to port some software to Windows I noticed Windows 10 doing crazy things like installing or updating apps and games by default after initial setup. The one I noticed in particular was Candy Crush Soda Saga which for those who don't know of it is some cheesy little puzzle game originally for consumer devices. I honestly did not want software like this near to a development machine. It has also been reported that Windows 10 now also updates core system software without notifying the user. Surely this destroys any vaguely deterministic behaviour, in my opinion making Windows 10 by default almost useless for development testbeds.
Err codemadness.org 70 i 66778 Err codemadness.org 70 i 66779Deciding instead to start from scratch but this time to set the inbuilt Windows Firewall to be very restrictive and only allow a few select programs to communicate. In this case all I really needed to be online was Firefox, Subversion and Putty. To my amusement (and astonishment) I found out that the Windows firewall could be modified to give access very easily by programs during installation (usually because this task needs to be done with admin privileges). It also seems that Windows store Apps can change the windows firewall settings at any point. One way to get around this issue could be to install a 3rd party firewall that most software will not have knowledge about and thus not attempt to break through. However the only decent firewall I have used was Sygate Pro which unfortunately is no longer supported by recent operating systems. The last supported versions was 2003, XP and 2000. In short, I avoid 3rd party firewalls.
Err codemadness.org 70 i 66780 Err codemadness.org 70 i 66781Instead I decided to trap Windows 10 (and all of it's rogue updaters) behind a virtual machine running OpenBSD. This effectively provided me with a full blown firewall appliance. From here I could then allow specific software I trusted through the firewall (via a proxy) in a safe, controlled and deterministic manner. For other interested developers (and security conscious users) and for my own reference, I have listed the steps taken here:
Err codemadness.org 70 i 66782
1) First and foremost disable the Windows DHCP service - this is so no IP can be obtained on any interface. This effectively stops any communication with any network on the host system. This can be done by running services.msc with admin privileges and stopping and disabling the service called DHCP Client.
2) Install or enable your favorite virtualization software - I have tested this with both VirtualBox and Hyper-V. Note that on non-server versions of Windows, in order to get Hyper-V working, your processor also needs to support SLAT which is daft so to avoid faffing about, I recommend using VirtualBox to get round this seemingly arbitrary restriction.
3) Install OpenBSD on the VM - Note, if you decide to use Hyper-V, its hardware support isn't 100% perfect to run OpenBSD and you will need to disable a couple of things in the kernel. At the initial boot prompt, run the following commands.
Err codemadness.org 70
i 66791 config -e -o /bsd /bsd Err codemadness.org 70
i 66792 disable acpi Err codemadness.org 70
i 66793 disable mpbios Err codemadness.org 70
i 66794
4) Add a host only virtual adapter to the VM - This is the one which we are going to connect through the VM with. Look at the IP that VirtualBox assigns this in network manager on the host machine. Mine was [b]192.168.56.1[/b]. Set up the adapter in the OpenBSD VM to have a static address on the same subnet. For example [b]192.168.56.2[/b]. If you are using Hyper-V and OpenBSD, make sure you add a "Legacy Interface" because no guest additions are available. Then set up a virtual switch which is host only.
5) Add a bridged adapter to the VM - then assign it to whichever interface you wanted to connect to the external network with. Note that if using Wireless, set the bridged adapters MAC address to the same as your physical device or the access point will reject it. This is not needed (or possible) on Hyper-V because the actual device is "shared" rather than bridged so the same MAC address is used. Again, if you use Hyper-V, then add another virtual switch and attach it to your chosen external interface. VMs in Hyper-V "share" an adapter within a virtual switch and there is the option to also disable the hosts ability to use this interface at the same time which is fine for an additional level of security if those pesky rogue apps and updaters can also enable / disable DHCP service one day which wouldn't be too surprising.
6) Connect to your network in the host OS - In case of Wireless, select the correct network from the list and type in a password if needed. Windows will probably say "no internet available", it also does not assign an IP address which is fine.
7) Install the Squid proxy package on the OpenBSD guest and enable the daemon
```
Err codemadness.org 70 i 66804 Err codemadness.org 70 i 66805```
Err codemadness.org 70 i 66812 Err codemadness.org 70 i 66813Err codemadness.org 70 i 66814Err codemadness.org 70 i 66816 Err codemadness.org 70 i 66817We will use this service for a limited selection of "safe and trusted" programs to connect to the outside world from within the Windows 10 host. You can also use putty on the host to connect to the VM via SSH and create a SOCKS proxy which software like Firefox can also use to connect externally.
Err codemadness.org 70 i 66815
8) Configure the software you want to be able to access the external network with
Err codemadness.org 70 i 66819 Err codemadness.org 70 i 66820 Err codemadness.org 70
i 66826 --proxy-server="socks5://<VM IP>:<SOCKS PORT>" Err codemadness.org 70
i 66827 --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE <VM IP>" Err codemadness.org 70
i 66828
Err codemadness.org 70 i 66839Err codemadness.org 70 i 66841 Err codemadness.org 70 i 66842I've managed to unbreak the LLDB debugger as much as possible with the current kernel and hit problems with ptrace(2) that are causing issues with further work on proper NetBSD support. Meanwhile, I've upstreamed all the planned NetBSD patches to sanitizers and helped other BSDs to gain better or initial support.
Err codemadness.org 70 i 66840
Err codemadness.org 70 i 66847Err codemadness.org 70 i 66853 Err codemadness.org 70 i 66854Since the last time I worked on LLDB, we have introduced many changes to the kernel interfaces (most notably related to signals) that apparently fixed some bugs in Go and introduced regressions in ptrace(2). Part of the regressions were noted by the existing ATF tests. However, the breakage was only marked as a new problem to resolve. For completeness, the ptrace(2) code was also cleaned up by Christos Zoulas, and we fixed some bugs with compat32.
Err codemadness.org 70 i 66848 Err codemadness.org 70 i 66849I've fixed a crash in *NetBSD::Factory::Launch(), triggered on startup of the lldb-server application.
Err codemadness.org 70 i 66850 Err codemadness.org 70 i 66851Here is the commit message:
Err codemadness.org 70 i 66852
``` Err codemadness.org 70 i 66855 We cannot call process_up->SetState() inside Err codemadness.org 70 i 66856 the NativeProcessNetBSD::Factory::Launch Err codemadness.org 70 i 66857 function because it triggers a NULL pointer Err codemadness.org 70 i 66858 deference.
Err codemadness.org 70 i 66859 Err codemadness.org 70 i 66860The generic code for launching a process in: Err codemadness.org 70 i 66861 GDBRemoteCommunicationServerLLGS::LaunchProcess Err codemadness.org 70 i 66862 sets the mdebuggedprocessup pointer after Err codemadness.org 70 i 66863 a successful call to mprocessfactory.Launch(). Err codemadness.org 70 i 66864 If we attempt to call processup->SetState() Err codemadness.org 70 i 66865 inside a platform specific Launch function we Err codemadness.org 70 i 66866 end up dereferencing a NULL pointer in Err codemadness.org 70 i 66867 NativeProcessProtocol::GetCurrentThreadID().
Err codemadness.org 70 i 66868 Err codemadness.org 70 i 66869Use the proper call processup->SetState(,false) Err codemadness.org 70 i 66870 that sets notifydelegates to false. Err codemadness.org 70 i 66871 ```
Err codemadness.org 70 i 66872 Err codemadness.org 70 i 66873Err codemadness.org 70 i 66878Err codemadness.org 70 i 66882 Err codemadness.org 70 i 66883I suspended development of new features in sanitizers last month, but I was still in the process of upstreaming of local patches. This process was time-consuming as it required rebasing patches, adding dedicated tests, and addressing all other requests and comments from the upstream developers.
Err codemadness.org 70 i 66879 Err codemadness.org 70 i 66880I'm not counting hot fixes, as some changes were triggering build or test issues on !NetBSD hosts. Thankfully all these issues were addressed quickly. The final result is a reduction of local delta size of almost 1MB to less than 100KB (1205 lines of diff). The remaining patches are rescheduled for later, mostly because they depend on extra work with cross-OS tests and prior integration of sanitizers with the basesystem distribution. I didn't want to put extra work here in the current state of affairs and, I've registered as a mentor for Google Summer of Code for the NetBSD Foundation and prepared Software Quality improvement tasks in order to outsource part of the labour.
Err codemadness.org 70 i 66881
Err codemadness.org 70 i 66888Err codemadness.org 70 i 66894 Err codemadness.org 70 i 66895I've also improved documentation for some of the features of NetBSD, described in man-pages. These pieces of information were sometimes wrong or incomplete, and this makes covering the NetBSD system with features such as sanitizers harder as there is a mismatch between the actual code and the documented code.
Err codemadness.org 70 i 66889 Err codemadness.org 70 i 66890Some pieces of software also require better namespacing support, these days mostly for the POSIX standard. I've fixed few low-hanging fruits there and requested pullups to NetBSD-8(BETA).
Err codemadness.org 70 i 66891 Err codemadness.org 70 i 66892I thank the developers for improving the landed code in order to ship the best solutions for users.
Err codemadness.org 70 i 66893
Err codemadness.org 70 i 66900Err codemadness.org 70 i 66906 Err codemadness.org 70 i 66907A One-man-show in human activity is usually less fun and productive than collaboration in a team. This is also true in software development. Last month I was helping as a reviewer to port LLVM features to FreeBSD and when possible to OpenBSD. This included MSan/FreeBSD, libFuzzer/FreeBSD, XRay/FreeBSD and UBSan/OpenBSD.
Err codemadness.org 70 i 66901 Err codemadness.org 70 i 66902I've landed most of the submitted and reviewed code to the mainstream LLVM tree.
Err codemadness.org 70 i 66903 Err codemadness.org 70 i 66904Part of the code also verified the correctness of NetBSD routes in the existing porting efforts and showed new options for improvement. This is the reason why I've landed preliminary XRay/NetBSD code and added missing NetBSD bits to ToolChain::getOSLibName(). The latter produced setup issues with the prebuilt LLVM toolchain, as the directory name with compiler-rt goodies were located in a path like ./lib/clang/7.0.0/lib/netbsd8.99.12 with a varying OS version. This could stop working after upgrades, so I've simplified it to "netbsd", similar to FreeBSD and Solaris.
Err codemadness.org 70 i 66905
Err codemadness.org 70 i 66912Err codemadness.org 70 i 66914 Err codemadness.org 70 i 66915I've prepared a build of Clang/LLVM with LLDB and compiler-rt features prebuilt on NetBSD/amd64 v. 8.99.12:
Err codemadness.org 70 i 66913
llvm-clang-compilerrt-lldb-7.0.0beta_2018-02-28.tar.bz2
Err codemadness.org 70 i 66922Err codemadness.org 70 i 66924 Err codemadness.org 70 i 66925With the approaching NetBSD 8.0 release I plan to finish backporting a few changes there from HEAD:
Err codemadness.org 70 i 66923
Err codemadness.org 70 i 66932Err codemadness.org 70 i 66934 Err codemadness.org 70 i 66935Once done, I will return to ptrace(2) debugging and corrections.
Err codemadness.org 70 i 66933
DigitalOcean
Err codemadness.org 70 i 66938 Err codemadness.org 70 i 66939Err codemadness.org 70 i 66946Err codemadness.org 70 i 66958 Err codemadness.org 70 i 66959When working on complex systems, such as OS kernels, your attention span and cognitive energy are too valuable to be wasted on inefficiencies pertaining to ancillary tasks. After experimenting with different environmental setups for kernel debugging, some of which were awkward and distracting from my main objectives, I have arrived to my current workflow, which is described here. This approach is mainly oriented towards security research and the study of kernel internals.
Err codemadness.org 70 i 66947 Err codemadness.org 70 i 66948Before delving into the details, this is the general outline of my environment:
Err codemadness.org 70 i 66949 Err codemadness.org 70 i 66950My host system runs Linux. My target system is a QEMU guest.
Err codemadness.org 70 i 66951 Err codemadness.org 70 i 66952I’m tracing and debugging on my host system by attaching GDB (with NetBSD x86-64 ABI support) to QEMU’s built-in GDB server. Err codemadness.org 70 i 66953 I work with NetBSD-current. All sources are built on my host system with the cross-compilation toolchain produced by build.sh. Err codemadness.org 70 i 66954 I use NFS to share the source tree and the build artifacts between the target and the host. Err codemadness.org 70 i 66955 I find IDEs awkward, so for codebase navigation I mainly rely on vim, tmux and ctags. Err codemadness.org 70 i 66956 For non-intrusive instrumentation, such as figuring out control flow, I’m using dtrace.
Err codemadness.org 70 i 66957
Preparing the host system
Err codemadness.org 70 i 66961 Err codemadness.org 70 i 66962Building NetBSD-current
A word of warning
Err codemadness.org 70 i 66967 Err codemadness.org 70 i 66968 Err codemadness.org 70
i 66972 -r Remove contents of TOOLDIR and DESTDIR before building. Err codemadness.org 70
i 66973 -u Set MKUPDATE=yes; do not run "make clean" first. Err codemadness.org 70
i 66974 Without this, everything is rebuilt, including the tools. Err codemadness.org 70
i 66975
Err codemadness.org 70 i 66978Err codemadness.org 70 i 66983 Err codemadness.org 70 i 66984Chance are, you do not want to use these options once you’ve successfully built the cross-compilation toolchain and your entire userland, because building those takes time and there aren’t many good reasons to recompile them from scratch. Here’s what to expect:
Err codemadness.org 70 i 66979 Err codemadness.org 70 i 66980On my desktop, running a quad-core Intel i5-3470 at 3.20GHz with 24GB of RAM and underlying directory structure residing on a SSD drive, the entire process took about 55 minutes. I was running make with -j12, so the machine was quite busy. Err codemadness.org 70 i 66981 On an old Dell D630 laptop, running Intel Core 2 Duo T7500 at 2.20GHz with 4GB of RAM and a slow hard drive (5400RPM), the process took approximatelly 2.5 hours. I was running make with -j4. Based on the temperature alerts and CPU clock throttling messages, it was quite a struggle.
Err codemadness.org 70 i 66982
Compiling the sources
Err codemadness.org 70 i 66987 Err codemadness.org 70 i 66988``` Err codemadness.org 70 i 67004 Add support for the experimental Internet-Draft "TCP Alternative Backoff with Err codemadness.org 70 i 67005 ECN (ABE)" proposal to the New Reno congestion control algorithm module. Err codemadness.org 70 i 67006 ABE reduces the amount of congestion window reduction in response to Err codemadness.org 70 i 67007 ECN-signalled congestion relative to the loss-inferred congestion response.
Err codemadness.org 70 i 67008 Err codemadness.org 70 i 67009More details about ABE can be found in the Internet-Draft: Err codemadness.org 70 i 67010 https://tools.ietf.org/html/draft-ietf-tcpm-alternativebackoff-ecn
Err codemadness.org 70 i 67011 Err codemadness.org 70 i 67012The implementation introduces four new sysctls:
Err codemadness.org 70 i 67013 Err codemadness.org 70 i 67014net.inet.tcp.cc.abe defaults to 0 (disabled) and can be set to non-zero to Err codemadness.org 70 i 67016 enable ABE for ECN-enabled TCP connections.
net.inet.tcp.cc.newreno.beta and net.inet.tcp.cc.newreno.betaecn set the Err codemadness.org 70 i 67018 multiplicative window decrease factor, specified as a percentage, applied to Err codemadness.org 70 i 67019 the congestion window in response to a loss-based or ECN-based congestion Err codemadness.org 70 i 67020 signal respectively. They default to the values specified in the draft i.e. Err codemadness.org 70 i 67021 beta=50 and betaecn=80.
net.inet.tcp.cc.abe_frlossreduce defaults to 0 (disabled) and can be set to Err codemadness.org 70 i 67023 non-zero to enable the use of standard beta (50% by default) when repairing Err codemadness.org 70 i 67024 loss during an ECN-signalled congestion recovery episode. It enables a more Err codemadness.org 70 i 67025 conservative congestion response and is provided for the purposes of Err codemadness.org 70 i 67026 experimentation as a result of some discussion at IETF 100 in Singapore.
The values of beta and betaecn can also be set per-connection by way of the Err codemadness.org 70 i 67030 TCPCCALGOOPT TCP-level socket option and the new CCNEWRENOBETA or Err codemadness.org 70 i 67031 CCNEWRENOBETA_ECN CC algo sub-options.
Err codemadness.org 70 i 67032 Err codemadness.org 70 i 67033Submitted by: Tom Jones tj@enoti.me Err codemadness.org 70 i 67034 Tested by: Tom Jones tj@enoti.me, Grenville Armitage garmitage@swin.edu.au Err codemadness.org 70 i 67035 Relnotes: Yes Err codemadness.org 70 i 67036 Differential Revision: https://reviews.freebsd.org/D11616 Err codemadness.org 70 i 67037 ```
Err codemadness.org 70 i 67038 Err codemadness.org 70 i 67039Err codemadness.org 70 i 67044Err codemadness.org 70 i 67046 Err codemadness.org 70 i 67047The recent changes in -current mitigating the Meltdown vulnerability have been backported to the 6.1 and 6.2 (amd64) releases, and the syspatch update (for 6.2) is now available.
Err codemadness.org 70 i 67045
``` Err codemadness.org 70 i 67052 Changes by: bluhm@cvs.openbsd.org 2018/02/26 05:36:18 Err codemadness.org 70 i 67053 Log message: Err codemadness.org 70 i 67054 Implement a workaround against the Meltdown flaw in Intel CPUs. Err codemadness.org 70 i 67055 The following changes have been backported from OpenBSD -current.
Err codemadness.org 70 i 67056 Err codemadness.org 70 i 67057Changes by: guenther@cvs.openbsd.org 2018/01/06 15:03:13 Err codemadness.org 70 i 67058 Log message: Err codemadness.org 70 i 67059 Handle %gs like %[def]s and reset set it in cpu_switchto() instead of on Err codemadness.org 70 i 67060 every return to userspace.
Err codemadness.org 70 i 67061 Err codemadness.org 70 i 67062Changes by: mlarkin@cvs.openbsd.org 2018/01/06 18:08:20 Err codemadness.org 70 i 67063 Log message: Err codemadness.org 70 i 67064 Add identcpu.c and specialreg.h definitions for the new Intel/AMD MSRs Err codemadness.org 70 i 67065 that should help mitigate spectre. This is just the detection piece, these Err codemadness.org 70 i 67066 features are not yet used. Err codemadness.org 70 i 67067 Part of a larger ongoing effort to mitigate meltdown/spectre. i386 will Err codemadness.org 70 i 67068 come later; it needs some machdep.c cleanup first.
Err codemadness.org 70 i 67069 Err codemadness.org 70 i 67070Changes by: mlarkin@cvs.openbsd.org 2018/01/07 12:56:19 Err codemadness.org 70 i 67071 Log message: Err codemadness.org 70 i 67072 remove all PG_G global page mappings from the kernel when running on Err codemadness.org 70 i 67073 Intel CPUs. Part of an ongoing set of commits to mitigate the Intel Err codemadness.org 70 i 67074 "meltdown" CVE. This diff does not confer any immunity to that Err codemadness.org 70 i 67075 vulnerability - subsequent commits are still needed and are being Err codemadness.org 70 i 67076 worked on presently. Err codemadness.org 70 i 67077 ok guenther, deraadt
Err codemadness.org 70 i 67078 Err codemadness.org 70 i 67079Changes by: mlarkin@cvs.openbsd.org 2018/01/12 01:21:30 Err codemadness.org 70 i 67080 Log message: Err codemadness.org 70 i 67081 IBRS -> IBRS,IBPB in identifycpu lines
Err codemadness.org 70 i 67082 Err codemadness.org 70 i 67083Changes by: guenther@cvs.openbsd.org 2018/02/21 12:24:15 Err codemadness.org 70 i 67084 Log message: Err codemadness.org 70 i 67085 Meltdown: implement user/kernel page table separation. Err codemadness.org 70 i 67086 On Intel CPUs which speculate past user/supervisor page permission checks, Err codemadness.org 70 i 67087 use a separate page table for userspace with only the minimum of kernel code Err codemadness.org 70 i 67088 and data required for the transitions to/from the kernel (still marked as Err codemadness.org 70 i 67089 supervisor-only, of course): Err codemadness.org 70 i 67090 - the IDT (RO) Err codemadness.org 70 i 67091 - three pages of kernel text in the .kutext section for interrupt, trap, Err codemadness.org 70 i 67092 and syscall trampoline code (RX) Err codemadness.org 70 i 67093 - one page of kernel data in the .kudata section for TLB flush IPIs (RW) Err codemadness.org 70 i 67094 - the lapic page (RW, uncachable) Err codemadness.org 70 i 67095 - per CPU: one page for the TSS+GDT (RO) and one page for trampoline Err codemadness.org 70 i 67096 stacks (RW) Err codemadness.org 70 i 67097 When a syscall, trap, or interrupt takes a CPU from userspace to kernel the Err codemadness.org 70 i 67098 trampoline code switches page tables, switches stacks to the thread's real Err codemadness.org 70 i 67099 kernel stack, then copies over the necessary bits from the trampoline stack. Err codemadness.org 70 i 67100 On return to userspace the opposite occurs: recreate the iretq frame on the Err codemadness.org 70 i 67101 trampoline stack, switch stack, switch page tables, and return to userspace. Err codemadness.org 70 i 67102 mlarkin@ implemented the pmap bits and did 90% of the debugging, diagnosing Err codemadness.org 70 i 67103 issues on MP in particular, and drove the final push to completion. Err codemadness.org 70 i 67104 Many rounds of testing by naddy@, sthen@, and others Err codemadness.org 70 i 67105 Thanks to Alex Wilson from Joyent for early discussions about trampolines Err codemadness.org 70 i 67106 and their data requirements. Err codemadness.org 70 i 67107 Per-CPU page layout mostly inspired by DragonFlyBSD. Err codemadness.org 70 i 67108 ok mlarkin@ deraadt@
Err codemadness.org 70 i 67109 Err codemadness.org 70 i 67110Changes by: bluhm@cvs.openbsd.org 2018/02/22 13:18:59 Err codemadness.org 70 i 67111 Log message: Err codemadness.org 70 i 67112 The GNU assembler does not understand 1ULL, so replace the constant Err codemadness.org 70 i 67113 with 1. Then it compiles with gcc, sign and size do not matter Err codemadness.org 70 i 67114 here.
Err codemadness.org 70 i 67115 Err codemadness.org 70 i 67116Changes by: bluhm@cvs.openbsd.org 2018/02/22 13:27:14 Err codemadness.org 70 i 67117 Log message: Err codemadness.org 70 i 67118 The compile time assertion for cpu info did not work with gcc. Err codemadness.org 70 i 67119 Rephrase the condition in a way that both gcc and clang accept it.
Err codemadness.org 70 i 67120 Err codemadness.org 70 i 67121Changes by: guenther@cvs.openbsd.org 2018/02/22 13:36:40 Err codemadness.org 70 i 67122 Log message: Err codemadness.org 70 i 67123 Set the PG_G (global) bit on the special page table entries that are shared Err codemadness.org 70 i 67124 between the u-k and u+k tables, because they're actually in all tables.
Err codemadness.org 70 i 67125 Err codemadness.org 70 i 67126OpenBSD 6.1 errata 037 Err codemadness.org 70 i 67127 ```
Err codemadness.org 70 i 67128 Err codemadness.org 70 i 67129``` Err codemadness.org 70 i 67134 Changes by: bluhm@cvs.openbsd.org 2018/02/26 05:29:48 Err codemadness.org 70 i 67135 Log message: Err codemadness.org 70 i 67136 Implement a workaround against the Meltdown flaw in Intel CPUs. Err codemadness.org 70 i 67137 The following changes have been backported from OpenBSD -current.
Err codemadness.org 70 i 67138 Err codemadness.org 70 i 67139Changes by: guenther@cvs.openbsd.org 2018/01/06 15:03:13 Err codemadness.org 70 i 67140 Log message: Err codemadness.org 70 i 67141 Handle %gs like %[def]s and reset set it in cpu_switchto() instead of on Err codemadness.org 70 i 67142 every return to userspace.
Err codemadness.org 70 i 67143 Err codemadness.org 70 i 67144Changes by: mlarkin@cvs.openbsd.org 2018/01/06 18:08:20 Err codemadness.org 70 i 67145 Log message: Err codemadness.org 70 i 67146 Add identcpu.c and specialreg.h definitions for the new Intel/AMD MSRs Err codemadness.org 70 i 67147 that should help mitigate spectre. This is just the detection piece, these Err codemadness.org 70 i 67148 features are not yet used. Err codemadness.org 70 i 67149 Part of a larger ongoing effort to mitigate meltdown/spectre. i386 will Err codemadness.org 70 i 67150 come later; it needs some machdep.c cleanup first.
Err codemadness.org 70 i 67151 Err codemadness.org 70 i 67152Changes by: mlarkin@cvs.openbsd.org 2018/01/07 12:56:19 Err codemadness.org 70 i 67153 Log message: Err codemadness.org 70 i 67154 remove all PG_G global page mappings from the kernel when running on Err codemadness.org 70 i 67155 Intel CPUs. Part of an ongoing set of commits to mitigate the Intel Err codemadness.org 70 i 67156 "meltdown" CVE. This diff does not confer any immunity to that Err codemadness.org 70 i 67157 vulnerability - subsequent commits are still needed and are being Err codemadness.org 70 i 67158 worked on presently.
Err codemadness.org 70 i 67159 Err codemadness.org 70 i 67160Changes by: mlarkin@cvs.openbsd.org 2018/01/12 01:21:30 Err codemadness.org 70 i 67161 Log message: Err codemadness.org 70 i 67162 IBRS -> IBRS,IBPB in identifycpu lines
Err codemadness.org 70 i 67163 Err codemadness.org 70 i 67164Changes by: guenther@cvs.openbsd.org 2018/02/21 12:24:15 Err codemadness.org 70 i 67165 Log message: Err codemadness.org 70 i 67166 Meltdown: implement user/kernel page table separation. Err codemadness.org 70 i 67167 On Intel CPUs which speculate past user/supervisor page permission checks, Err codemadness.org 70 i 67168 use a separate page table for userspace with only the minimum of kernel code Err codemadness.org 70 i 67169 and data required for the transitions to/from the kernel (still marked as Err codemadness.org 70 i 67170 supervisor-only, of course): Err codemadness.org 70 i 67171 - the IDT (RO) Err codemadness.org 70 i 67172 - three pages of kernel text in the .kutext section for interrupt, trap, Err codemadness.org 70 i 67173 and syscall trampoline code (RX) Err codemadness.org 70 i 67174 - one page of kernel data in the .kudata section for TLB flush IPIs (RW) Err codemadness.org 70 i 67175 - the lapic page (RW, uncachable) Err codemadness.org 70 i 67176 - per CPU: one page for the TSS+GDT (RO) and one page for trampoline Err codemadness.org 70 i 67177 stacks (RW) Err codemadness.org 70 i 67178 When a syscall, trap, or interrupt takes a CPU from userspace to kernel the Err codemadness.org 70 i 67179 trampoline code switches page tables, switches stacks to the thread's real Err codemadness.org 70 i 67180 kernel stack, then copies over the necessary bits from the trampoline stack. Err codemadness.org 70 i 67181 On return to userspace the opposite occurs: recreate the iretq frame on the Err codemadness.org 70 i 67182 trampoline stack, switch stack, switch page tables, and return to userspace. Err codemadness.org 70 i 67183 mlarkin@ implemented the pmap bits and did 90% of the debugging, diagnosing Err codemadness.org 70 i 67184 issues on MP in particular, and drove the final push to completion. Err codemadness.org 70 i 67185 Many rounds of testing by naddy@, sthen@, and others Err codemadness.org 70 i 67186 Thanks to Alex Wilson from Joyent for early discussions about trampolines Err codemadness.org 70 i 67187 and their data requirements. Err codemadness.org 70 i 67188 Per-CPU page layout mostly inspired by DragonFlyBSD.
Err codemadness.org 70 i 67189 Err codemadness.org 70 i 67190Changes by: bluhm@cvs.openbsd.org 2018/02/22 13:18:59 Err codemadness.org 70 i 67191 Log message: Err codemadness.org 70 i 67192 The GNU assembler does not understand 1ULL, so replace the constant Err codemadness.org 70 i 67193 with 1. Then it compiles with gcc, sign and size do not matter Err codemadness.org 70 i 67194 here.
Err codemadness.org 70 i 67195 Err codemadness.org 70 i 67196Changes by: bluhm@cvs.openbsd.org 2018/02/22 13:27:14 Err codemadness.org 70 i 67197 Log message: Err codemadness.org 70 i 67198 The compile time assertion for cpu info did not work with gcc. Err codemadness.org 70 i 67199 Rephrase the condition in a way that both gcc and clang accept it.
Err codemadness.org 70 i 67200 Err codemadness.org 70 i 67201Changes by: guenther@cvs.openbsd.org 2018/02/22 13:36:40 Err codemadness.org 70 i 67202 Log message: Err codemadness.org 70 i 67203 Set the PG_G (global) bit on the special page table entries that are shared Err codemadness.org 70 i 67204 between the u-k and u+k tables, because they're actually in all tables.
Err codemadness.org 70 i 67205 Err codemadness.org 70 i 67206OpenBSD 6.2 errata 009 Err codemadness.org 70 i 67207 ```
Err codemadness.org 70 i 67208 Err codemadness.org 70 i 67209iXsystems
Err codemadness.org 70 i 67216 Err codemadness.org 70 i 67217Err codemadness.org 70 i 67220Err codemadness.org 70 i 67222 Err codemadness.org 70 i 67223Ken Westerback (krw@) has sent in the first report from the (recently concluded) a2k18 hackathon:
Err codemadness.org 70 i 67221
YYZ -> YVR -> MEL -> ZQN -> CHC -> DUD -> WLG -> AKL -> SYD -> BNE -> YVR -> YYZ
For those of you who don’t speak Airport code:
```
Err codemadness.org 70 i 67231 Err codemadness.org 70 i 67232Whew.
Err codemadness.org 70 i 67233 Err codemadness.org 70 i 67234Once in Dunedin the hacking commenced. The background was a regular tick of new meltdown diffs to test in addition to whatever work one was actually engaged in. I was lucky (?) in that none of the problems with the various versions cropped up on my laptop. Err codemadness.org 70 i 67235 ```
Err codemadness.org 70 i 67236 Err codemadness.org 70 i 67237``` Err codemadness.org 70 i 67238 I worked with rpe@ and tb@ to make the install script create the 'correct' FQDN when dhclient was involved. I worked with tb@ on some code cleanup in various bits of the base. dhclient(8) got some nice cleanup, further pruning/improving log messages in particular. In addition the oddball -q option was flipped into the more normal -v. I.e. be quiet by default and verbose on request.
Err codemadness.org 70 i 67239 Err codemadness.org 70 i 67240More substantially the use of recorded leases was made less intrusive by avoiding continual reconfiguration of the interface with the same information. The 'request', 'require' and 'ignore' dhclient.conf(5) statement were changed so they are cumulative, making it easier to build longer lists of affected options.
Err codemadness.org 70 i 67241 Err codemadness.org 70 i 67242I tweaked softraid(4) to remove a handrolled version of duid_format().
Err codemadness.org 70 i 67243 Err codemadness.org 70 i 67244I sprinkled a couple of M_WAITOK into amd64 and i386 mpbios to document that there is really no need to check for NULL being returned from some malloc() calls.
Err codemadness.org 70 i 67245 Err codemadness.org 70 i 67246I continued to help test the new filesystem quiescing logic that deraadt@ committed during the hackathon.
Err codemadness.org 70 i 67247 Err codemadness.org 70 i 67248I only locked myself out of my room once!
Err codemadness.org 70 i 67249 Err codemadness.org 70 i 67250Fueled by the excellent coffee from local institutions The Good Earth Cafe and The Good Oil Cafe, and the excellent hacking facilities and accommodations at the University of Otago it was another enjoyable and productive hackathon south of the equator. And I even saw penguins.
Err codemadness.org 70 i 67251 Err codemadness.org 70 i 67252Thanks to Jim Cheetham and the support from the project and the OpenBSD Foundation that made it all possible Err codemadness.org 70 i 67253 ```
Err codemadness.org 70 i 67254 Err codemadness.org 70 i 67255Err codemadness.org 70 i 67260Err codemadness.org 70 i 67264 Err codemadness.org 70 i 67265I found this when going through old documents. It looks like I wrote it and never posted it. Perhaps I didn’t consider it finished at the time. But looking at it now, I think it’s good enough to share. It’s a redrafting of the BSD licence, in poetic form. Maybe I had plans to do other licences one day; I can’t remember.
Err codemadness.org 70 i 67261 Err codemadness.org 70 i 67262I’ve interleaved it with the original license text so you can see how true, or otherwise, I’ve been to it. Enjoy :-)
Err codemadness.org 70 i 67263
``` Err codemadness.org 70
i 67266 Copyright (c)
Redistribution and use in source and binary forms, with or without Err codemadness.org 70 i 67270 modification, are permitted provided that the following conditions Err codemadness.org 70 i 67271 are met: Err codemadness.org 70 i 67272 ```
Err codemadness.org 70 i 67273 Err codemadness.org 70 i 67274Err codemadness.org 70 i 67275Err codemadness.org 70 i 67282 Err codemadness.org 70 i 67283You may redistribute and use – Err codemadness.org 70 i 67276 as source or binary, as you choose, Err codemadness.org 70 i 67277 and with some changes or without – Err codemadness.org 70 i 67278 this software; let there be no doubt. Err codemadness.org 70 i 67279 But you must meet conditions three, Err codemadness.org 70 i 67280 if in compliance you wish to be.
Err codemadness.org 70 i 67281
Err codemadness.org 70
i 67284 1. Redistributions of source code must retain the above copyright Err codemadness.org 70
i 67285 notice, this list of conditions and the following disclaimer. Err codemadness.org 70
i 67286 2. Redistributions in binary form must reproduce the above copyright Err codemadness.org 70
i 67287 notice, this list of conditions and the following disclaimer in the Err codemadness.org 70
i 67288 documentation and/or other materials provided with the distribution. Err codemadness.org 70
i 67289 3. Neither the name of the nor the names of its Err codemadness.org 70
i 67290 contributors may be used to endorse or promote products derived Err codemadness.org 70
i 67291 from this software without specific prior written permission. Err codemadness.org 70
i 67292
Err codemadness.org 70 i 67295Err codemadness.org 70 i 67309 Err codemadness.org 70 i 67310The first is obvious, of course – Err codemadness.org 70 i 67296 To keep this text within the source. Err codemadness.org 70 i 67297 The second is for binaries Err codemadness.org 70 i 67298 Place in the docs a copy, please. Err codemadness.org 70 i 67299 A moral lesson from this ode – Err codemadness.org 70 i 67300 Don’t strip the copyright on code.
Err codemadness.org 70 i 67301 Err codemadness.org 70 i 67302The third applies when you promote: Err codemadness.org 70 i 67303 You must not take, from us who wrote, Err codemadness.org 70 i 67304 our names and make it seem as true Err codemadness.org 70 i 67305 we like or love your version too. Err codemadness.org 70 i 67306 (Unless, of course, you contact us Err codemadness.org 70 i 67307 And get our written assensus.)
Err codemadness.org 70 i 67308
Err codemadness.org 70
i 67311 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS Err codemadness.org 70
i 67312 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT Err codemadness.org 70
i 67313 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS Err codemadness.org 70
i 67314 FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE Err codemadness.org 70
i 67315 COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, Err codemadness.org 70
i 67316 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, Err codemadness.org 70
i 67317 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; Err codemadness.org 70
i 67318 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER Err codemadness.org 70
i 67319 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT Err codemadness.org 70
i 67320 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN Err codemadness.org 70
i 67321 ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE Err codemadness.org 70
i 67322 POSSIBILITY OF SUCH DAMAGE. Err codemadness.org 70
i 67323
Err codemadness.org 70 i 67326Err codemadness.org 70 i 67343 Err codemadness.org 70 i 67344One final point to be laid out Err codemadness.org 70 i 67327 (You must forgive my need to shout): Err codemadness.org 70 i 67328 THERE IS NO WARRANTY FOR THIS Err codemadness.org 70 i 67329 WHATEVER THING MAY GO AMISS. Err codemadness.org 70 i 67330 EXPRESS, IMPLIED, IT’S ALL THE SAME – Err codemadness.org 70 i 67331 RESPONSIBILITY DISCLAIMED.
Err codemadness.org 70 i 67332 Err codemadness.org 70 i 67333WE ARE NOT LIABLE FOR LOSS Err codemadness.org 70 i 67334 NO MATTER HOW INCURRED THE COST Err codemadness.org 70 i 67335 THE TYPE OR STYLE OF DAMAGE DONE Err codemadness.org 70 i 67336 WHATE’ER THE LEGAL THEORY SPUN. Err codemadness.org 70 i 67337 THIS STILL REMAINS AS TRUE IF YOU Err codemadness.org 70 i 67338 INFORM US WHAT YOU PLAN TO DO.
Err codemadness.org 70 i 67339 Err codemadness.org 70 i 67340When all is told, we sum up thus – Err codemadness.org 70 i 67341 Do what you like, just don’t sue us.
Err codemadness.org 70 i 67342
Tarsnap ad
Err codemadness.org 70 i 67362 Err codemadness.org 70 i 67363