Questions about openfirmware build environment

Mitch Bradley wmb at laptop.org
Tue Jan 22 04:01:59 EST 2008


llandre wrote:
> Hi all,
>
> I have some questions about openfirmware build environment. I could not 
> find these information on OLCP wiki.
> I successfully cloned the git repository and built ofw on x86-64 host 
> running CentOS, however I'd like to understand exactly how the build 
> process works. At the end of the message is the complete dump.
>
> 1) During building, some *.public, *.bin and *.img files are downloaded. 
> What are these files?
>   

*.public - public keys for the OLPC security mechanism.  When an OLPC 
system is configured for secure mode, OFW will only boot images that 
have been signed by an OLPC private key.  There are separate keys for 
bootable images, firmware update images, and OS update images.

verify.img - this is a binary module that contains the crypto code that 
processes the aforementioned keys.  It is compiled from C source at 
http://dev.laptop.org/git?p=bios-crypto .  That code is recompiled 
infrequently and binary versions are released at 
http://dev.laptop.org/pub/firmware/crypto/

usb8388.bin - this is the firmware for ARM microprocessor that controls 
the wireless network module.  OFW needs it to do wireless network access.

ec_vXXX.img - the firmware for the 8042 embedded controller that 
controls the system power and handles the keyboard and mouse.  It lives 
in the same SPI FLASH ROM as OFW.


> 2) I see a couple of warnings during building of memtest module:
>
> ld: warning: i386:x86-64 architecture of input file `random.o' is 
> incompatible with i386 output
>
> I think this is due to the missing explicit target in 
> clients/memtest/Makefile. Thus the compiler is invoked with default 
> settings and generates an x86-64 object file.
>   

Thanks, I just checked in a new copy of the Makefile with an explicit 
rule for random.o
> 3) In memtset Makefile I had to comment out this line:
> CCFLAGS += -fno-stack-protector
> because gcc 3.4.6 does not recognize it. Is this safe?
>   

Yes, it is safe.  The "no-stack-protector" flag is needed for some 
distributions that have different default compilation options.  If your 
compiler doesn't support the flag, the flag is not needed.
>
> Thanks in advance,
> llandre
>
> DAVE Electronics System House - R&D Department
> web:   http://www.dave.eu
> email: r&d2 at dave-tech.it
>
>
>
> ----------------------------------------------------------------------
> [llandre at linuxserver2 ofw]$ git clone 
> git://git.infradead.org/openfirmware.git openfirmware.git
> Initialized empty Git repository in 
> /home/shared/devel/neptune/sw/ofw/openfirmware.git/.git/
> remote: Generating pack...
> ...
> Resolving deltas: 100% (4926/4926), done.
> [llandre at linuxserver2 ofw]$ cd openfirmware.git/cpu/x86/pc/olpc/build/
> [llandre at linuxserver2 build]$ make
> make[1]: Entering directory 
> `/home/shared/devel/neptune/sw/ofw/openfirmware.git/cpu/x86/Linux'
> cc -c -O -g -m32 -DTARGET_X86 ../../../forth/wrapper/wrapper.c -o wrapper.o
> cc -c -O -g -m32 -DTARGET_X86 ../../../forth/wrapper/logger.c -o logger.o
> cc -c -O -g -m32 -DTARGET_X86 -I../../../forth/wrapper/zip 
> ../../../forth/wrapper/zip/zipmem.c -o zipmem.o
> cc -c -O -g -m32 -DTARGET_X86 -I../../../forth/wrapper/zip 
> ../../../forth/wrapper/zip/deflate.c -o deflate.o
> cc -c -O -g -m32 -DTARGET_X86 -I../../../forth/wrapper/zip 
> ../../../forth/wrapper/zip/trees.c -o trees.o
> cc -c -O -g -m32 -DTARGET_X86 -I../../../forth/wrapper/zip 
> ../../../forth/wrapper/zip/bits.c -o bits.o
> cc -c -O -g -m32 -DTARGET_X86 -I../../../forth/wrapper/zip 
> ../../../forth/wrapper/zip/util.c -o util.o
> cc -c -m32 -O0 -fpic ../../../forth/wrapper/zip/inflate.c -o inflate.o
> cc -m32 -o forth wrapper.o logger.o zipmem.o deflate.o trees.o bits.o 
> util.o inflate.o
> make[1]: Leaving directory 
> `/home/shared/devel/neptune/sw/ofw/openfirmware.git/cpu/x86/Linux'
> make[1]: Entering directory 
> `/home/shared/devel/neptune/sw/ofw/openfirmware.git/cpu/x86/build'
> make -C ../Linux ../build/inflate.bin
> make[2]: Entering directory 
> `/home/shared/devel/neptune/sw/ofw/openfirmware.git/cpu/x86/Linux'
> objcopy -O binary inflate.o ../build/inflate.bin
> make[2]: Leaving directory 
> `/home/shared/devel/neptune/sw/ofw/openfirmware.git/cpu/x86/Linux'
> make[1]: Leaving directory 
> `/home/shared/devel/neptune/sw/ofw/openfirmware.git/cpu/x86/build'
> make[1]: Entering directory 
> `/home/shared/devel/neptune/sw/ofw/openfirmware.git/clients/memtest86'
> gcc -E -m32 -traditional head.S -o head.s
> as -32 -o head.o head.s
> gcc -c -m32 -fPIC -Wall -O -fno-strict-aliasing reloc.c
> gcc -c -Wall -march=i486 -m32 -Os -fomit-frame-pointer -fno-builtin 
> -ffreestanding  -fPIC main.c
> gcc -c -Wall -march=i486 -m32 -Os -fomit-frame-pointer -fno-builtin 
> -ffreestanding  test.c
> gcc -c -Wall -march=i486 -m32 -Os -fomit-frame-pointer -fno-builtin 
> -ffreestanding  -fPIC init.c
> gcc -c -Wall -march=i486 -m32 -Os -fomit-frame-pointer -fno-builtin 
> -ffreestanding  -fPIC lib.c
> gcc -c -Wall -march=i486 -m32 -Os -fomit-frame-pointer -fno-builtin 
> -ffreestanding  -fPIC patn.c
> gcc -c -Wall -march=i486 -m32 -Os -fomit-frame-pointer -fno-builtin 
> -ffreestanding  -fPIC screen_buffer.c
> gcc -c -Wall -march=i486 -m32 -Os -fomit-frame-pointer -fno-builtin 
> -ffreestanding  -fPIC config.c
> gcc -c -Wall -march=i486 -m32 -Os -fomit-frame-pointer -fno-builtin 
> -ffreestanding  -fPIC memsize.c
> gcc    -c -o random.o random.c
> gcc -c -Wall -march=i486 -m32 -Os -fomit-frame-pointer -fno-builtin 
> -ffreestanding  -fPIC lfbega.c
> gcc -c -Wall -march=i486 -m32 -Os -fomit-frame-pointer -fno-builtin 
> -ffreestanding  -fPIC olpc.c
> ld --warn-constructors --warn-common -static -T memtest_shared.lds -o 
> memtest_shared head.o reloc.o main.o test.o init.o lib.o patn.o 
> screen_buffer.o config.o memsize.o random.o lfbega.o olpc.o && \
> ld -shared -Bsymbolic -T memtest_shared.lds -o memtest_shared head.o 
> reloc.o main.o test.o init.o lib.o patn.o screen_buffer.o config.o 
> memsize.o random.o lfbega.o olpc.o
> ld: warning: i386:x86-64 architecture of input file `random.o' is 
> incompatible with i386 output
> ld: warning: i386:x86-64 architecture of input file `random.o' is 
> incompatible with i386 output
> objcopy -O binary memtest_shared memtest_shared.bin
> ld -s -T memtest.lds -b binary memtest_shared.bin -o memtest
> make[1]: Leaving directory 
> `/home/shared/devel/neptune/sw/ofw/openfirmware.git/clients/memtest86'
> ./build olpc.rom
> --- Rebuilding ec.img
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../ec.bth
> --- Cmd: wget -q http://dev.laptop.org/pub/ec/ec_vd08b.img -O ec.img
> --- Rebuilding romreset.di
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../romreset.bth
> --- Rebuilding romstart.di
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../romstart.bth
> --- Rebuilding resume.di
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../resume.bth
> --- Rebuilding rmstart.img
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../rmstart.bth
> ROM loader: version# 8 , format# 2
> --- Rebuilding paging.di
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../../paging.bth
> --- Rebuilding kernel.dic
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../kernel.bth
> --- Saving kernel.dic ---
> --- Rebuilding tools.dic
> --- Cmd: ${HOSTDIR}/x86forth ${BP}/cpu/x86/build/kernel.dic ../tools.bth
> --- Saving tools.dic ---
> --- Rebuilding basefw.dic
> --- Cmd: ${HOSTDIR}/x86forth ${BP}/cpu/x86/build/tools.dic ../basefw.bth
>
> --- Saving basefw.dic ---
> --- Rebuilding fw.dic
> --- Cmd: ${HOSTDIR}/x86forth ${BP}/cpu/x86/build/basefw.dic ../fw.bth
> Port80: 40 gpio
> Port80: 41 Probing memory
> Port80: 42 MMU
> Port80: 43 Reclaim dictionary
> Port80: 44 PCI host bridge
> Port80: 45 ISA
> Port80: 46 RTC
> Port80: 47 CPU nodes
> Port80: 48 CMOS
> Port80: 49 Null-NVRAM
> Port80: 4a board revision
> Port80: 4b Date to EC
> Port80: 4c Wireless reset
> Port80: 4d PCI properties
> Port80: 4e Manufacturing data
> Port80: 4f USB setup
> Port80: 50 Suspend/resume
> Port80: 51 wp
> Port80: 52 Century
> Port80: 53 Init SHA-1 variables
> --- Saving fw.dic ...
> --- Saving fw.img ...
> --- Rebuilding sdhci.fc
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../sdhci.bth
> --- Rebuilding sdmmc.fc
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../sdmmc.bth
> --- Rebuilding ac97.fc
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../ac97.bth
> --- Rebuilding ohci.fc
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../ohci.bth
> --- Rebuilding ehci.fc
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../ehci.bth
> --- Rebuilding hub.fc
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../hub.bth
> --- Rebuilding usbnet.fc
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../usbnet.bth
> --- Rebuilding usbserial.fc
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../usbserial.bth
> --- Rebuilding usbstorage.fc
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../usbstorage.bth
> --- Rebuilding usbkbd.fc
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../usbkbd.bth
> --- Rebuilding usb8388.fc
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../usb8388.bth
> --- Rebuilding cafenand.fc
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../cafenand.bth
> --- Rebuilding cafecamera.fc
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../cafecamera.bth
> --- Rebuilding verify.img
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../verify.bth
> --- Cmd: wget -q 
> http://dev.laptop.org/pub/firmware/crypto/mpkeys/os.public        -O 
> os.public
> --- Cmd: wget -q 
> http://dev.laptop.org/pub/firmware/crypto/mpkeys/fw.public        -O 
> fw.public
> --- Cmd: wget -q 
> http://dev.laptop.org/pub/firmware/crypto/mpkeys/fs.public        -O 
> fs.public
> --- Cmd: wget -q 
> http://dev.laptop.org/pub/firmware/crypto/mpkeys/lease.public     -O 
> lease.public
> --- Cmd: wget -q 
> http://dev.laptop.org/pub/firmware/crypto/mpkeys/developer.public -O 
> developer.public
> --- Cmd: wget -q 
> http://dev.laptop.org/pub/firmware/crypto/bios_verify-0.2.img -O verify.img
> --- Rebuilding usb8388.bin
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../usb8388.bth
> --- Cmd: rm -f usb8388.bin
> --- Cmd: wget -q 
> http://dev.laptop.org/pub/firmware/libertas/usb8388-5.110.20.p49.bin
> --- Cmd: wget -q 
> http://dev.laptop.org/pub/firmware/libertas/usb8388-5.110.20.p49.bin.md5
> --- Cmd: md5sum -b usb8388-5.110.20.p49.bin | cmp - 
> usb8388-5.110.20.p49.bin.md5
> --- Cmd: mv usb8388-5.110.20.p49.bin usb8388.bin
> --- Cmd: rm usb8388-5.110.20.p49.bin.md5
> --- Rebuilding pcibridg.fc
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../pcibridg.bth
> --- Rebuilding olpc.rom
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../olpc.bth
> svn: Path '../../../../..' ends in '..', which is unsupported for this 
> operation
> --- Saving as q2d09.rom
> _______________________________________________
> Devel mailing list
> Devel at lists.laptop.org
> http://lists.laptop.org/listinfo/devel
>   




More information about the Devel mailing list