= Notes on OpenWRT UML + Netkit = The goal of this guide is to use Netkit with OpenWRT hosts in the emulated environment. http://wiki.netkit.org/index.php/Main_Page UML binaries are built with the host toolchain and are meant to run on the host they were built on. We used a Gentoo machine amd64 profile (64bit processor) == Create OpenWRT UML images == Download and compile OpenWRT for the UML target (tested at 9/12/2009 revision 18717) {{{ svn co svn://svn.openwrt.org/openwrt/trunk/ cd trunk make menuconfig }}} select the UML target and compile * Make sure you disabled kmod-mac8011-hwsim in your OpenWRT config, if you have it enables it will make Netkit act weird. * Make sure the kernel configuration has support for the ext2 file system ! we are using the following CHOST x86_64-pc-linux-gnu-4.3.4 we had a problem with some script looking for a lib64 dir that was not existing, solved like this: {{{ cd $trunk_dir$/staging_dir/toolchain-x86_64_gcc-4.1.2_uClibc-0.9.30.1/ ln -s lib lib64 }}} if the firmware compiles you have the binaries in {{{$trunk_dir$/bin/uml}}} == Test the UML binary == To test if your UML binary boots just use the guide from zoobab http://www.zoobab.com/openwrt-and-user-mode-linux == Integrate in Netkit == Launch in Netkit like this: {{{ cd bin/uml vstart openwrt --eth0=0 --con0=xterm --con1=xterm --verbose -m openwrt-uml-ext2.img -k ./openwrt-uml-vmlinux }}} also you may need extra Kernel command line options: {{{ --append=root=98:0 --append=init=/etc/preinit }}} You will have a OpenWRT machine launched within Netkit, but only the second terminal is properly working for now, adjust inittab (see later) === Remount Read Write === To remount the filesystem readwrite {{{ mount --remount -o rw /dev/root / }}} === Adjust inittab === Original {{{/etc/inittab}}} in OpenWRT looks like this: {{{ root@OpenWrt:/# cat /etc/init /etc/init.d/ /etc/inittab root@OpenWrt:/# cat /etc/inittab ::sysinit:/etc/init.d/rcS S boot ::shutdown:/etc/init.d/rcS K stop tts/0::askfirst:/bin/ash --login tty1::askfirst:/bin/ash --login root@OpenWrt:/# }}} modify like this: {{{ root@OpenWrt:/# cat /etc/inittab ::sysinit:/etc/init.d/rcS S boot ::shutdown:/etc/init.d/rcS K stop tty0::askfirst:/bin/ash --login tty1::askfirst:/bin/ash --login root@OpenWrt:/# }}} === Everything in a patch === {{{ saverio@nordkapp ~/SORGENTI/openwrt-trunk-UML $ svn diff Index: package/base-files/files/etc/inittab =================================================================== --- package/base-files/files/etc/inittab (revisione 18727) +++ package/base-files/files/etc/inittab (copia locale) @@ -1,5 +1,4 @@ ::sysinit:/etc/init.d/rcS S boot ::shutdown:/etc/init.d/rcS K stop -tts/0::askfirst:/bin/ash --login -ttyS0::askfirst:/bin/ash --login +tty0::askfirst:/bin/ash --login tty1::askfirst:/bin/ash --login Index: package/base-files/files/etc/config/network =================================================================== --- package/base-files/files/etc/config/network (revisione 18727) +++ package/base-files/files/etc/config/network (copia locale) @@ -8,7 +8,7 @@ config interface lan option ifname eth0 - option type bridge + #option type bridge option proto static option ipaddr 192.168.1.1 option netmask 255.255.255.0 saverio@nordkapp ~/SORGENTI/openwrt-trunk-UML $ }}} === Notes on netkit labs === {{{ lstart --verbose -o --append=root=98:0 -o --append=init=/etc/preinit }}}