On Thu, Nov 04, 2021 at 10:49:46PM +0000, Klemens Nanni wrote: > amd64, alpha, i386 and macppc strip all symbols off the ramdisk bsd.rd > (before gzipping it) and thus break config(8)'s modification feature: > > $ gzcat bsd.rd > bsd.rd.raw > $ config -e bsd.rd.raw > WARNING no output file specified > WARNING this kernel doesn't contain all information needed! > WARNING the commands add and change might not work. > WARNING this kernel doesn't support pseudo devices. > WARNING this kernel doesn't support modification of NKMEMPAGES. > config: failed to get first cfdata > > Needing 'disable xhci' on arm64/Pinebook Pro right now, I looked into > all of bsd.re-config(5), UKC and how we build bsd.rd for all platforms.
Correction: needed it for the Pi 4, the PBP had other problems... > That's how I noticed modifying a ramdisk kernel on these for platforms > wouldn't work in the first place. > > Needing it to fix or upgrade systems can be crucial, so I figured it's > worth addressing. > > While `boot /bsd.rd -c' does work on amd64 and macppc regardless of > symbols, its changes do not persist and `config -e' is more convenient. > > So I propose to strip less symbols such to make this work. > > On amd64, this accounts for 200K growth in bsd.gz according to `du -k': New diff now that amd64 RAMDISK_CD contains igc(4): -9168 obj/bsd.strip +9872 obj/bsd.strip -4272 obj/bsd.gz +4480 obj/bsd.gz > I cranked FSSIZE to the smallest possible volume that would build. > The resulting miniroot70.img boots fine in vmm(4) and on a X250. In 512-byte block counts (`du obj/bsd.{strip,gz}`): -18336 obj/bsd.strip +19744 obj/bsd.strip -8544 obj/bsd.gz +8960 obj/bsd.gz So I first cranked FSSIZE by 8960 - 8544 = 416, from 10240 to 10686. That built, but is more than required, so I bisected it to the minimal working value of 10368. amd64 builds, boots and works as expected. > macppc is still building; I have no alpha or i386. macppc builds, boots and works as expected without cranking FSSIZE. Feedback? Objections? OK? Index: amd64/ramdisk_cd/Makefile =================================================================== RCS file: /cvs/src/distrib/amd64/ramdisk_cd/Makefile,v retrieving revision 1.32 diff -u -p -r1.32 Makefile --- amd64/ramdisk_cd/Makefile 7 Nov 2021 15:50:15 -0000 1.32 +++ amd64/ramdisk_cd/Makefile 11 Nov 2021 19:43:56 -0000 @@ -1,7 +1,7 @@ # $OpenBSD: Makefile,v 1.32 2021/11/07 15:50:15 deraadt Exp $ FS= miniroot${OSrev}.img -FSSIZE= 10240 +FSSIZE= 10368 FSDISKTYPE= mini34 CDROM= cd${OSrev}.iso MOUNT_POINT= /mnt @@ -56,7 +56,7 @@ MRDISKTYPE= rdrootb MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 bsd.gz: bsd.rd - objcopy -S -R .comment -R .SUNW_ctf \ + objcopy -g -x -R .comment -R .SUNW_ctf \ -K rd_root_size -K rd_root_image \ bsd.rd bsd.strip gzip -9cn bsd.strip > bsd.gz Index: macppc/ramdisk/Makefile =================================================================== RCS file: /cvs/src/distrib/macppc/ramdisk/Makefile,v retrieving revision 1.51 diff -u -p -r1.51 Makefile --- macppc/ramdisk/Makefile 26 Jul 2021 12:47:46 -0000 1.51 +++ macppc/ramdisk/Makefile 11 Nov 2021 19:44:14 -0000 @@ -35,7 +35,7 @@ bsd.gz: bsd.rd gzip -9cn bsd.rd > bsd.gz bsd.rd: mr.fs bsd - objcopy -S -R .comment -R .SUNW_ctf \ + objcopy -g -x -R .comment -R .SUNW_ctf \ -K rd_root_size -K rd_root_image \ bsd bsd.rd rdsetroot bsd.rd mr.fs