make installworld: btxld: No such file or directory [solved]

Bryan Drewery bryan-lists at shatow.net
Sun Jul 14 12:10:19 UTC 2013


This post is just to inform others that run into this problem.

For years I have ran into this error while running 'make installworld':

> # make installworld
> [...]
> ===> sys/boot/i386/boot2 (install)
> /usr/local/libexec/ccache/world/cc -Os  -fno-guess-branch-probability  -fomit-frame-pointer  -fno-unit-at-a-time  -mno-align-long-strings  -mrtd  -mregparm=3  -DUSE_XREAD  -DUFS1_AND_UFS2  -DFLAGS=0x80  -DSIOPRT=0x3f8  -DSIOFMT=0x3  -DSIOSPD=9600  -I/usr/src/sys/boot/i386/boot2/../../common  -I/usr/src/sys/boot/i386/boot2/../btx/lib -I.  -Wall -Waggregate-return -Wbad-function-cast -Wcast-align  -Wmissing-declarations -Wmissing-prototypes -Wnested-externs  -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings  -Winline --param max-inline-insns-single=100   -march=i386 -ffreestanding -mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -msoft-float -m32 -std=gnu99    -S -o boot2.s.tmp /usr/src/sys/boot/i386/boot2/boot2.c
> sed -e '/align/d' -e '/nop/d' < boot2.s.tmp > boot2.s
> rm -f boot2.s.tmp
> /usr/local/libexec/ccache/world/cc  -m32 -c boot2.s
> ld -static -N --gc-sections -nostdlib -m elf_i386_fbsd -Ttext 0x2000 -o boot2.out /usr/obj/usr/src/sys/boot/i386/boot2/../btx/lib/crt0.o boot2.o sio.o
> objcopy -S -O binary boot2.out boot2.bin
> btxld -v -E 0x2000 -f bin -b /usr/obj/usr/src/sys/boot/i386/boot2/../btx/btx/btx -l boot2.ldr  -o boot2.ld -P 1 boot2.bin
> btxld: No such file or directory
> *** [boot2.ld] Error code 1
> 
> Stop in /usr/src/sys/boot/i386/boot2.
> *** [realinstall] Error code 1
> 


There's several other mailing list posts that insist that build orders
are wrong or that the date/time is incorrect or off. I always had
strictly followed buildworld/installworld all while running ntpd. My
workaround was to 'make -C /usr/src/sys/boot/i386' before installworld
to avoid this issue, as others have done as well.

I realized this time that I was applying local patches to the tree
before buildworld, then reverting the patches before installworld. This
changed timestamps of various source files that forced the rebuild
during installworld. The real solution was to not revert the files until
after installworld and to not change the source tree in any other way
between buildworld/installworld.

Cheers,
Bryan Drewery



More information about the freebsd-hackers mailing list