View Single Post
wicket's Avatar
Posts: 634 | Thanked: 3,266 times | Joined on May 2010 @ Colombia
#8
Originally Posted by b-man View Post
Hey guys, it's been a while since I've been here and I'm sure a lot has changed, good to see that some of the older members on this site have stuck around.

I'm currently one of the maintainers of this project (I'm primarily working on developer tools for this project).

If you want to try this out on your N900, you will either need a recent version of Ubuntu or Linux Mint (I've been using version 15 to build and test everything). I plan to push fixes to xnu-deps-linux to resolve problems for other distros when I get the time. You will also need a fairly recent version of Clang (preferably 3.4) and a copy of the CodeSorcery toolchain (arm-eabi-none).

IMPORTANT NOTE: While xnu does boot on the N900, we still need to implement a TWL4030 watchdog kicker to keep the system alive while booted. Until we get this done, you will need to enable R&D mode on your N900. Also, we still need to implement a keyboard driver. This will require writing an I2C driver that can be used to talk to the TWL4030. If anyone is interested in working on this, we would greatly appreciate your help.

Also something important to remember: unix signal support is still a work in progress, so until that is worked out, job control doesn't work. (eg: Using Ctrl-C crashes the kernel).

I would recommend that you build things in the following order:

Code:
# Build the container tool
git clone https://github.com/image3maker.git

cd image3maker/; make; make install

cd ..

# Build the developer tools
git clone https://github.com/darwin-on-arm/xnu-deps-linux.git

cd xnu-deps-linux/; make; make install

cd ..

# Build the kernel
git clone https://github.com/darwin-on-arm/xnu.git

cd xnu/

make TARGET_CONFIGS="debug arm omap3430_rx51" MAKEJOBS=  SDKVERSION=10.7 HOST_CC=clang HOST_YACC=yacc \
    HOST_BISON=bison HOST_FLEX=flex HOST_CODESIGN=/bin/true BUILD_NO_DEBUG=1  DEPLOYMENT_TARGET_FLAGS=  \
    RC_CFLAGS="-D__arm__ -DARM" MIG=/usr/bin/mig CC=clang CXX=clang++ RC_CFLAGS="-target arm-apple-darwin11" \
    VERBOSE=YES RC_LDFLAGS="-target arm-apple-darwin11 /usr/lib/libclang_rt.cc_kext.a" \
    STRIP="arm-apple-darwin11-strip" NM="arm-apple-darwin11-nm"

cd ../

# Put the kernel into an img3 container
image3maker -t krnl -f xnu/BUILD/obj*/*/mach_kernel -o mach.img3

# Build the fused kernel+bootloader
git clone https://github.com/darwin-on-arm/GenericBooter.git

mv mach.img3 GenericBooter/

cd GenericBooter

# open main.c with a text editor and scroll down to corestart_main
# you need to comment out lines 114-123 to disable realview board check
# you may also want to comment out the contents of uart_putc in debuc.c as this assumes a PL011 uart

make

# You should now have a SampleBooter.elf.uImage file which you can boot via u-boot, enjoy!
If you wish to boot this with a ramdisk (and why not!), you can use this one. You can boot this ramdisk with the kernel in the same way you would with a standard linux kernel in u-boot. If you have any problems or have any other questions or want to contribute, jump on ##darwin-on-arm on freenode and I'm sure that someone will be able to answer your question. Have fun!
This is very cool, I will try it out when I get a bit of spare time.

I do have to ask though, why did you choose to port Darwin over FreeBSD? I'm struggling to think of any advantage for choosing Darwin unless you have some kind of crazy long-term goal of an iOS or OS X compatibility layer. :P
__________________
DebiaN900 - Native Debian on the N900. Deprecated in favour of Maemo Leste.

Maemo Leste for N950 and N9 (currently broken).
Devuan for N950 and N9.

Mobile devices with mainline Linux support - Help needed with documentation.

"Those who do not understand Unix are condemned to reinvent it, poorly." - Henry Spencer
 

The Following User Says Thank You to wicket For This Useful Post: