On Fri, Apr 10, 2020 at 09:35:16AM -0400, Nick Holland wrote:
> Question about kernel randomization and relinking...
>
> It seems to take a fair amount of RAM, at least for systems that
> are forced to run i386. And I mean real RAM -- swap doesn't seem
> to cut it.
>
> I discovered that several machines I was intending on using for
> minimal purposes just couldn't complete relinking. So I built a
> VM and started playing with the RAM.
>
> Built with 1G RAM, default was a 1.2G swap, worked fine.
> Reduced to 256MB RAM, Kernel failed to relink. As with my old
> junk.
>
> The magic number seemed to be between 320MB (failed) and 384MB
> (worked) of RAM. Ok, fine.
FWIW, my soekris net5501 with 256MB of RAM and 512MB swap does manage
to relink a kernel (on 6.6 + syspatches).
# ls -l relink.log
-rw-r--r-- 1 root wheel - 507B Apr 10 13:33 relink.log
# cat relink.log
(SHA256) /bsd: OK
LD="ld" LDFLAGS="-g" sh makegap.sh 0xcccccccc gapdummy.o
ld -T ld.script -X --warn-common -nopie -o newbsd ${SYSTEM_HEAD} vers.o ${OBJS}
text data bss dec hex
11815507 267748 1101824 13185079 c93037
mv newbsd newbsd.gdb
ctfstrip -S -o newbsd newbsd.gdb
rm -f bsd.gdb
mv -f newbsd bsd
install -F -m 700 bsd /bsd && sha256 -h /var/db/kernel.SHA256 /bsd
Kernel has been relinked and is active on next reboot.
SHA256 (/bsd) = a940ce989d708e5b87a1186ee81bd624066baeabe67b8405b52e4fa2988b565
# dislabel -pm wd0
# size offset fstype [fsize bsize cpg]
a: 353.0M 64 4.2BSD 2048 16384 5624 # /
b: 511.1M 722944 swap # none
c: 15280.0M 0 unused
d: 444.8M 1769728 4.2BSD 2048 16384 7116 # /tmp
e: 607.7M 2680576 4.2BSD 2048 16384 9685 # /var
f: 1703.0M 3925216 4.2BSD 2048 16384 12958 # /usr
g: 505.8M 7412896 4.2BSD 2048 16384 8060 # /usr/X11R6
h: 1632.9M 8448736 4.2BSD 2048 16384 12958 # /usr/local
i: 1381.2M 11792960 4.2BSD 2048 16384 12958 # /usr/src
j: 5282.4M 14621632 4.2BSD 2048 16384 12958 # /usr/obj
k: 2850.9M 25439936 4.2BSD 2048 16384 12958 # /home