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

Reply via email to