NanoBSD Enhancements
I've been experimenting with NanoBSD enhancements for embedded. Eventually, they will be in the mainline of NanoBSD, but for now I've segregated them in a separate embedded subdir. The goal is to drive creation of build-agnostic tools to help build images for the different systems that FreeBSD supports. I have a mix of embedded boards and qemu configurations. Many don't work, but I hit a milestone tonight. I was able to boot an image on my RPi built without privs using NanoBSD.
To try it out, you'll need to grab FreeBSD-current and from the top of the tree do
cd tools/tools/nanobsd/embedded
sh ../nanobsd.sh -c rpi.cfg
This will create a directory at the same level as your top level FreeBSD source called rpi-b. Under it will be obj/_.disk.image.rpi-b. You can dd this onto a SD card (any size) and boot it on your RPi-B. It will resize the last partition to span the rest of the disk on boot and be a generic system. There's still a few problems, and I'm still working out how to get packages onto the system at build time, but its useful enough that people may want to play with it. Enjoy.
P.S. Here's a dmesg from the boot:
U-Boot 2015.10 (Nov 09 2015 - 02:54:46 +0000) DRAM: 480 MiB RPI Model B rev2 MMC: bcm2835_sdhci: 0 reading uboot.env ** Unable to read "uboot.env" from mmc0:1 ** Using default environment In: serial Out: lcd Err: lcd Net: Net Initialization Skipped No ethernet found. reading uEnv.txt 0 bytes read in 9 ms (0 Bytes/s) Hit any key to stop autoboot: 0 starting USB... USB0: Core Release: 2.80a scanning bus 0 for devices... 3 USB Device(s) found scanning usb for storage devices... 0 Storage Device(s) found scanning usb for ethernet devices... 1 Ethernet Device(s) found Booting from: mmc 0 ubldr.bin reading ubldr.bin 214684 bytes read in 36 ms (5.7 MiB/s) ## No elf image at address 0x00200000 ## Starting application at 0x00200000 ... Consoles: U-Boot console Compatible U-Boot API signature found @1db474d0 FreeBSD/armv6 U-Boot loader, Revision 1.2 (imp@zooty, Wed Dec 23 17:23:10 MST 2015) DRAM: 480MB Number of U-Boot devices: 2 U-Boot env: loaderdev='mmc 0' Found U-Boot device: disk Checking unit=0 slice=partition= ... good. Booting from disk0s3a: /boot/kernel/kernel text=0x587d2c data=0x54f24+0xe639c syms=[0x4+0xc6460+0x4+0x94335] Hit [Enter] to boot immediately, or any other key for command prompt. Booting [/boot/kernel/kernel]... Using DTB provided by U-Boot at address 0x100. Kernel entry at 0x400180... Kernel args: (null) KDB: debugger backends: ddb KDB: current backend: ddb Copyright (c) 1992-2015 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 11.0-CURRENT #0 r292645 0ff2d15e64f9+ qbase/qtip/rpi/tip: Wed Dec 23 17:29:02 MST 2015 imp@zooty:/usr/home/imp/FreeBSD/rpi-b/obj/arm.armv6/usr/home/imp/FreeBSD/head/sys/RPI-B arm FreeBSD clang version 3.7.0 (tags/RELEASE_370/final 246257) 20150906 VT: init without driver. sema_sysinit CPU: ARM1176JZ-S rev 7 (ARM11J core) Supported features: ARM_ISA THUMB2 JAZELLE ARMv4 Security_Ext WB enabled LABT branch prediction enabled 16KB/32B 4-way instruction cache 16KB/32B 4-way write-back-locking-C data cache real memory = 503312384 (479 MB) avail memory = 481800192 (459 MB) random: entropy device external interface kbd0 at kbdmux0 ofwbus0: simplebus0: mem 0x20000000-0x20ffffff on ofwbus0 cpulist0: on ofwbus0 cpu0: on cpulist0 bcm2835_cpufreq0: on cpu0 intc0: mem 0xb200-0xb3ff on simplebus0 systimer0: mem 0x3000-0x3fff irq 8,9,10,11 on simplebus0 Event timer "BCM2835-3" frequency 1000000 Hz quality 1000 Timecounter "BCM2835-3" frequency 1000000 Hz quality 1000 bcmwd0: mem 0x10001c-0x100027 on simplebus0 gpio0: mem 0x200000-0x2000af irq 57,59,58,60 on simplebus0 gpio0: read-only pins: 46-53. gpio0: reserved pins: 48-53. gpiobus0: on gpio0 gpioled0: at pin 16 on gpiobus0 gpioc0: on gpio0 iichb0: mem 0x205000-0x20501f irq 61 on simplebus0 iicbus0: on iichb0 iic0: on iicbus0 iichb1: mem 0x804000-0x80401f irq 61 on simplebus0 iicbus1: on iichb1 iic1: on iicbus1 spi0: mem 0x204000-0x20401f irq 62 on simplebus0 spibus0: on spi0 bcm_dma0: mem 0x7000-0x7fff,0xe05000-0xe05fff irq 24,25,26,27,28,29,30,31,32,33,34,35,36 on simplebus0 mbox0: mem 0xb880-0xb8bf irq 1 on simplebus0 sdhci_bcm0: mem 0x300000-0x3000ff irq 70 on simplebus0 mmc0: on sdhci_bcm0 uart0: mem 0x201000-0x201fff irq 65 on simplebus0 uart0: console (115200,n,8,1) vchiq0: mem 0xb800-0xb84f irq 2 on simplebus0 vchiq: local ver 8 (min 3), remote ver 8. pcm0: on vchiq0 bcm283x_dwcotg0: mem 0x980000-0x99ffff irq 17 on simplebus0 usbus0 on bcm283x_dwcotg0 fb0: on ofwbus0 fbd0 on fb0 VT: initialize with new VT driver "fb". fb0: 656x416(656x416@0,0) 24bpp fb0: fbswap: 0, pitch 1968, base 0x1e08c000, screen_size 818688 cryptosoft0: Timecounters tick every 10.000 msec IPsec: Initialized Security Association Processing. usbus0: 480Mbps High Speed USB v2.0 bcm2835_cpufreq0: ARM 700MHz, Core 250MHz, SDRAM 400MHz, Turbo OFF ugen0.1: at usbus0 uhub0: on usbus0 mmc0: CMD8 failed, RESULT: 1 mmcsd0: 513MB at mmc0 41.6MHz/4bit/65535-block Trying to mount root from ufs:/dev/mmcsd0s3a [ro]... warning: no time-of-day clock registered, system time will not be set accurately uhub0: 1 port with 1 removable, self powered ugen0.2: at usbus0 uhub1: on usbus0 uhub1: MTT enabled uhub1: 3 ports with 2 removable, self powered random: unblocking device. ugen0.3: at usbus0 smsc0: on usbus0 smsc0: chip 0xec00, rev. 0002 miibus0: on smsc0 ukphy0: PHY 1 on miibus0 ukphy0: none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto ue0: on smsc0 ue0: Ethernet address: b8:27:eb:f1:62:e6 /etc/rc.conf: 1.freebsd.pool.ntp.org: not found Growing root partition to fill device GEOM_PART: mmcsd0s3 was automatically resized. Use `gpart commit mmcsd0s3` to save changes or `gpart undo mmcsd0s3` to revert them. mmcsd0s3 resized mmcsd0s3a resized super-block backups (for fsck_ffs -b #) at: 556192, 667424, 778656 /etc/rc: WARNING: hostid: unable to figure out a UUID from DMI data, generating a new one Setting hostuuid: 901c1969-a9d5-11e5-996d-b827ebf162e6. Setting hostid: 0x45acda89. No suitable dump device was found. Starting file system checks: /dev/mmcsd0s3a: FILE SYSTEM CLEAN; SKIPPING CHECKS /dev/mmcsd0s3a: clean, 181490 free (26 frags, 22683 blocks, 0.0% fragmentation) /dev/mmcsd0s2: FILE SYSTEM CLEAN; SKIPPING CHECKS /dev/mmcsd0s2: clean, 32726 free (6 frags, 4090 blocks, 0.0% fragmentation) Mounting local file systems:. Setting hostname: nanobsd-rpi-b. Setting up harvesting:[UMA],[FS_ATIME],SWI,INTERRUPT,NET_NG,NET_ETHER,NET_TUN,MOUSE,KEYBOARD,ATTACH,CACHED Feeding entropy:eval: cannot create /boot/entropy: Read-only file system smsc0: chip 0xec00, rev. 0002 ue0: link state changed to DOWN ue0: link state changed to UP Starting Network: lo0 ue0. lo0: flags=8049 metric 0 mtu 16384 options=600003 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 inet 127.0.0.1 netmask 0xff000000 groups: lo nd6 options=21 ue0: flags=8843 metric 0 mtu 1500 options=80009 ether b8:27:eb:f1:62:e6 media: Ethernet autoselect (100baseTX ) status: active nd6 options=29 /etc/rc.conf: 1.freebsd.pool.ntp.org: not found ELF ldconfig path: /lib /usr/lib /usr/lib/compat Starting devd. /etc/rc.conf: 1.freebsd.pool.ntp.org: not found /etc/rc.conf: 1.freebsd.pool.ntp.org: not found /etc/rc.conf: 1.freebsd.pool.ntp.org: not found Starting dhclient. DHCPDISCOVER on ue0 to 255.255.255.255 port 67 interval 5 DHCPOFFER from 10.0.0.5 DHCPREQUEST on ue0 to 255.255.255.255 port 67 DHCPACK from 10.0.0.5 bound to 10.0.0.65 -- renewal in 3600 seconds. add net fe80::: gateway ::1 add net ff02::: gateway ::1 add net ::ffff:0.0.0.0: gateway ::1 add net ::0.0.0.0: gateway ::1 Generating host.conf. /etc/rc.conf: 1.freebsd.pool.ntp.org: not found Creating and/or trimming log files. Starting syslogd. Setting date via ntp. 24 Dec 01:06:34 ntpdate[457]: step time server 204.9.54.119 offset 2122.146331 sec Starting casperd. Clearing /tmp (X related). Updating motd:. Mounting late file systems:. Configuring vt: blanktime. Starting cron. /etc/rc.conf: 1.freebsd.pool.ntp.org: not found Starting background file system checks in 60 seconds. override rw-rw-r-- 730/730 for /firstboot? Thu Dec 24 01:06:47 UTC 2015 FreeBSD/arm (nanobsd-rpi-b) (ttyu0) login: root Dec 24 01:06:50 nanobsd-rpi-b login: ROOT LOGIN (root) ON ttyu0 FreeBSD 11.0-CURRENT (RPI-B) #0 r292645 0ff2d15e64f9+ qbase/qtip/rpi/tip: Wed Dec 23 17:29:02 MST 2015 Welcome to FreeBSD! Release Notes, Errata: https://www.FreeBSD.org/releases/ Security Advisories: https://www.FreeBSD.org/security/ FreeBSD Handbook: https://www.FreeBSD.org/handbook/ FreeBSD FAQ: https://www.FreeBSD.org/faq/ Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/ FreeBSD Forums: https://forums.FreeBSD.org/ Documents installed with the system are in the /usr/local/share/doc/freebsd/ directory, or can be installed later with: pkg install en-freebsd-doc For other languages, replace "en" with a language code like de or fr. Show the version of FreeBSD installed: freebsd-version ; uname -a Please include that output and any error messages when posting questions. Introduction to manual pages: man man FreeBSD directory layout: man hier Edit /etc/motd to change this login announcement. root@nanobsd-rpi-b:~ # mount -uw / root@nanobsd-rpi-b:~ # rm /firstboot root@nanobsd-rpi-b:~ # uname -a FreeBSD nanobsd-rpi-b 11.0-CURRENT FreeBSD 11.0-CURRENT #0 r292645 0ff2d15e64f9+ qbase/qtip/rpi/tip: Wed Dec 23 17:29:02 MST 2015 imp@zooty:/usr/home/imp/FreeBSD/rpi-b/obj/arm.armv6/usr/home/imp/FreeBSD/head/sys/RPI-B arm root@nanobsd-rpi-b:~ # uptime 1:07AM up 1 min, 1 users, load averages: 0.87, 0.39, 0.16 root@nanobsd-rpi-b:~ # ifconfig lo0: flags=8049 metric 0 mtu 16384 options=600003 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 inet 127.0.0.1 netmask 0xff000000 groups: lo nd6 options=21 ue0: flags=8843 metric 0 mtu 1500 options=80009 ether b8:27:eb:f1:62:e6 inet 10.0.0.65 netmask 0xffffff00 broadcast 10.0.0.255 media: Ethernet autoselect (100baseTX ) status: active nd6 options=29 root@nanobsd-rpi-b:~ # ntpdate 0.freebsd.pool.ntp.org load: 0.48 cmd: ntpdate 671 [select] 8.16r 0.05u 0.04s 0% 3112k 24 Dec 01:07:44 ntpdate[671]: adjust time server 69.164.201.165 offset 0.001943 sec root@nanobsd-rpi-b:~ # exit logout FreeBSD/arm (nanobsd-rpi-b) (ttyu0) login:
No comments:
Post a Comment