Hi! The attached series of patches adds support for Kurobox Pro to Debian Installer. Kurobox Pro uses Das U-Boot so flash-kernel is used to create U-Boot images of kernel and ramdisk during installation. The original firmware has files with network and host information that can be used by oldsys-preseed. In short the installation on Kurobox Pro would be: 1) Build d-i 2) Format /dev/sda1 on Kurobox Pro with ext2 3) Put d-i images on /dev/sda1 4) Run flash-debian 5) Reboot 6) Install as normal 7) Reboot 8) Success The adding of jffs2 to i386 is not related to Kurobox Pro support, only done by request. [0] Attached patches: 0000 Adds support for Kurobox Pro to flash-kernel 0001 Adds support for Kurobox Pro to oldsys-preseed, needs jffs2-modules to work (see 0003) 0002 Adds tests for Kurobox Pro to oldsys-preseed. 0003 Adds support for jffs2 modules to kernel-wedge, needed by oldsys-preseed on Kurobox Pro. Also requested to support OLPC XO. 0004 Adds jffs2 modules to armel-orion5x, needed by oldsys-preseed on Kurobox Pro, and to i386, to support OLPC XO (requested). [0] 0005 Adds build options and flash-debian script to d-i to support Kurobox Pro. kuroboxpro_dhcp.tgz kuroboxpro_static.tgz Archives of files used by Kurobox Pro tests in oldsys-preseed. -- Per [0] http://lists.debian.org/debian-boot/2008/07/msg00368.html
diff --git a/packages/flash-kernel/README b/packages/flash-kernel/README index 6cf34d8..39f3dd5 100644 --- a/packages/flash-kernel/README +++ b/packages/flash-kernel/README @@ -22,6 +22,7 @@ Supported systems At the moment, the following systems are supported: + - Buffalo/Revogear Kurobox Pro - HP Media Vault mv2120 - Linksys NSLU2 - QNAP TS-109 diff --git a/packages/flash-kernel/debian/flash-kernel-installer.postinst b/packages/flash-kernel/debian/flash-kernel-installer.postinst index ad5d0f6..0a2d7d6 100755 --- a/packages/flash-kernel/debian/flash-kernel-installer.postinst +++ b/packages/flash-kernel/debian/flash-kernel-installer.postinst @@ -22,7 +22,7 @@ findfs () { # Are we writing to flash or constructing an image on disk? write_to_flash() { case "$machine" in - "HP Media Vault mv2120") + "Buffalo/Revogear Kurobox Pro" | "HP Media Vault mv2120") return 1 ;; *) @@ -51,6 +51,12 @@ if ! grep -q flash-kernel /target/etc/kernel-img.conf; then fi case "$machine" in + "Buffalo/Revogear Kurobox Pro") + in-target update-initramfs -u || true + if ! apt-install uboot-mkimage; then + error "apt-install uboot-mkimage failed" + fi + ;; "HP Media Vault mv2120") in-target update-initramfs -u || true if ! apt-install uboot-mkimage; then diff --git a/packages/flash-kernel/flash-kernel b/packages/flash-kernel/flash-kernel index 1614e0c..78b3b10 100755 --- a/packages/flash-kernel/flash-kernel +++ b/packages/flash-kernel/flash-kernel @@ -82,6 +82,7 @@ if [ -n "$1" ]; then kfile=/boot/vmlinuz-$kvers ifile=/boot/initrd.img-$kvers desc="Debian kernel $1" + idesc="Debian ramdisk $1" else if [ -e /vmlinuz ]; then kfile=/vmlinuz @@ -93,6 +94,7 @@ else error "Cannot find a default kernel in /vmlinuz or /boot/vmlinuz" fi desc="Debian kernel" + idesc="Debian ramdisk" fi if [ ! -e $kfile ] || [ ! -e $ifile ]; then @@ -109,6 +111,32 @@ subarch=$(echo "$kfile" | sed -e 's/.*-//') machine=$(grep "^Hardware" /proc/cpuinfo | sed 's/Hardware\s*:\s*//') case "$machine" in + "Buffalo/Revogear Kurobox Pro") + check_subarch "orion5x" + printf "Generating kernel u-boot image... " >&2 + tmp=$(tempfile) + # Set machine id 1509 (0x05e5) + devio > $tmp 'wl 0xe3a01c05,4' 'wl 0xe38110e5,4' + cat $kfile >> $tmp + mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n "$desc" -d $tmp $tmp.uboot >&2 1>/dev/null + echo "done." >&2 + if [ -e /boot/uImage.buffalo ]; then + echo "Creating backup of /boot/uImage.buffalo." >&2 + mv /boot/uImage.buffalo /boot/uImage.buffalo.bak + fi + echo "Creating new /boot/uImage.buffalo." >&2 + mv $tmp.uboot /boot/uImage.buffalo + rm -f $tmp + printf "Generating initrd u-boot image... " >&2 + mkimage -A arm -O linux -T ramdisk -C gzip -a 0x00008000 -e 0x00008000 -n "$idesc" -d $ifile initrd.uboot >&2 1>/dev/null + echo "done." >&2 + if [ -e /boot/initrd.buffalo ]; then + echo "Creating backup of /boot/initrd.buffalo." >&2 + mv /boot/initrd.buffalo /boot/initrd.buffalo.bak + fi + echo "Creating new /boot/initrd.buffalo." >&2 + mv initrd.uboot /boot/initrd.buffalo + ;; "HP Media Vault mv2120") check_subarch "orion5x" tmp=$(tempfile) diff --git a/packages/flash-kernel/initramfs-tools/hooks/flash_kernel_set_root b/packages/flash-kernel/initramfs-tools/hooks/flash_kernel_set_root index c2e5e0a..f37a6af 100755 --- a/packages/flash-kernel/initramfs-tools/hooks/flash_kernel_set_root +++ b/packages/flash-kernel/initramfs-tools/hooks/flash_kernel_set_root @@ -31,7 +31,7 @@ esac # Only run on some machines machine=$(grep "^Hardware" /proc/cpuinfo | sed 's/Hardware\s*:\s*//') case "$machine" in - "HP Media Vault mv2120" | "Linksys NSLU2" | "QNAP TS-109/TS-209" | "QNAP TS-409" | "Thecus N2100") + "Buffalo/Revogear Kurobox Pro" | "HP Media Vault mv2120" | "Linksys NSLU2" | "QNAP TS-109/TS-209" | "QNAP TS-409" | "Thecus N2100") # Pass the check and continue below ;; *) @@ -93,7 +93,7 @@ case "$machine" in ;; # The boot loader passes a bogus root= (e.g. root=/dev/ram), so # override the command line parameter. - "HP Media Vault mv2120" | "QNAP TS-109/TS-209" | "QNAP TS-409" | "Thecus N2100") + "Buffalo/Revogear Kurobox Pro" | "HP Media Vault mv2120" | "QNAP TS-109/TS-209" | "QNAP TS-409" | "Thecus N2100") install -d $DESTDIR/conf echo ROOT="$rootdev" >> $DESTDIR/conf/param.conf ;;
diff --git a/packages/oldsys-preseed/oldsys-preseed b/packages/oldsys-preseed/oldsys-preseed index 449bbed..8408ec4 100755 --- a/packages/oldsys-preseed/oldsys-preseed +++ b/packages/oldsys-preseed/oldsys-preseed @@ -112,7 +112,46 @@ case "`archdetect`" in ;; arm*/orion5x) machine=$(grep "^Hardware" /proc/cpuinfo | sed 's/Hardware\s*:\s*//') - if echo "$machine" | grep -q "^HP Media Vault mv2120"; then + if echo "$machine" | grep -q "^Buffalo/Revogear Kurobox Pro"; then + check_file /proc/mtd + rootfs=$(get_mtdblock "rootfs") + if [ -z "$rootfs" ]; then + log "Can't find rootfs MTD partition" + exit + fi + path=/tmp/oldsys-preseed + mkdir -p $path/rootfs + mount -t jffs2 -o ro /dev/$rootfs $path/rootfs || true + INTERFACE=eth0 + parse_unix_tree $path/rootfs + netinfo=$path/rootfs/etc/netinfo + if [ -e "$netinfo" ]; then + usage=$(sed -n '/^my_ipaddress/ {s/.*=//; p}' "$netinfo") + if [ "$usage" = "dhcp" ]; then + NET_CONFIG=dhcp + else + NET_CONFIG=static + IP_ADDRESS=$usage + NETMASK=$(sed -n '/^my_subnetmask/ {s/.*=//; p}' "$netinfo") + GATEWAY=$(sed -n '/^my_dgw/ {s/.*=//; p}' "$netinfo") + fi + fi + hostinfo=$path/rootfs/etc/host.info + if [ -e "$hostinfo" ]; then + HOSTNAME=$(sed '/^hostname/ {s/.*=//; p}' "$hostinfo") + fi + + unset_matching_var "HOSTNAME" "KUROBOX-PRO" + if [ "$NET_CONFIG" != "static" ]; then + IPADDRESS=192.168.11.150 + NETMASK=255.255.255.0 + GATEWAY=192.168.11.1 + [ -z "$NAMESERVERS" ] && NAMESERVERS=192.168.11.1 + dhcp_fallback $FILE + fi + umount $path/rootfs || true + rmdir $path/rootfs $path || true + elif echo "$machine" | grep -q "^HP Media Vault mv2120"; then path=/tmp/oldsys-preseed mkdir -p $path/sda5 mount -t ext3 -o ro /dev/sda5 $path/sda5 || true
diff --git a/packages/oldsys-preseed/tests/arm/kuroboxpro_dhcp.preseed b/packages/oldsys-preseed/tests/arm/kuroboxpro_dhcp.preseed new file mode 100644 index 0000000..58f50e4 --- /dev/null +++ b/packages/oldsys-preseed/tests/arm/kuroboxpro_dhcp.preseed @@ -0,0 +1,8 @@ +d-i netcfg/dhcp_failed note +d-i netcfg/dhcp_options select Configure network manually +d-i netcfg/get_ipaddress string 192.168.11.150 +d-i netcfg/get_netmask string 255.255.255.0 +d-i netcfg/get_gateway string 192.168.11.1 +d-i netcfg/get_nameservers string 83.255.249.10 83.255.245.10 +d-i netcfg/choose_interface select eth0 +d-i netcfg/use_dhcp boolean true diff --git a/packages/oldsys-preseed/tests/arm/kuroboxpro_dhcp.test b/packages/oldsys-preseed/tests/arm/kuroboxpro_dhcp.test new file mode 100644 index 0000000..180bf0d --- /dev/null +++ b/packages/oldsys-preseed/tests/arm/kuroboxpro_dhcp.test @@ -0,0 +1,29 @@ +path=$(mktemp -t oldsys-preseed-tests.XXXXXX -d) +mkdir -p $path/rootfs +(cd $path/rootfs ; tar -xzf $TEST_DIR/kuroboxpro_dhcp.tgz > /dev/null 2>&1) +INTERFACE=eth0 +parse_unix_tree $path/rootfs +netinfo=$path/rootfs/etc/netinfo +if [ -e "$netinfo" ]; then + IPADDRESS=$(sed -n '/^my_ipaddress/ {s/.*=//; p}' "$netinfo") + if [ "$IPADDRESS" = "dhcp" ]; then + NET_CONFIG=dhcp + else + NET_CONFIG=static + NETMASK=$(sed -n '/^my_subnetmask/ {s/.*=//; p}' "$netinfo") + GATEWAY=$(sed -n '/^my_dgw/ {s/.*=//; p}' "$netinfo") + fi +fi +hostinfo=$path/rootfs/etc/host.info +if [ -e "$hostinfo" ]; then + HOSTNAME=$(sed -n '/^hostname/ {s/.*=//; p}' "$hostinfo") +fi +unset_matching_var "HOSTNAME" "KUROBOX-PRO" +if [ "$NET_CONFIG" != "static" ]; then + IPADDRESS=192.168.11.150 + NETMASK=255.255.255.0 + GATEWAY=192.168.11.1 + [ -z "$NAMESERVERS" ] && NAMESERVERS=192.168.11.1 + dhcp_fallback "$1" +fi +generate_preseed_file $1 diff --git a/packages/oldsys-preseed/tests/arm/kuroboxpro_dhcp.tgz b/packages/oldsys-preseed/tests/arm/kuroboxpro_dhcp.tgz new file mode 100644 index 0000000..bdbcd12 Binary files /dev/null and b/packages/oldsys-preseed/tests/arm/kuroboxpro_dhcp.tgz differ diff --git a/packages/oldsys-preseed/tests/arm/kuroboxpro_static.preseed b/packages/oldsys-preseed/tests/arm/kuroboxpro_static.preseed new file mode 100644 index 0000000..4650bbd --- /dev/null +++ b/packages/oldsys-preseed/tests/arm/kuroboxpro_static.preseed @@ -0,0 +1,7 @@ +d-i netcfg/choose_interface select eth0 +d-i netcfg/get_ipaddress string 192.168.0.22 +d-i netcfg/get_netmask string 255.255.255.0 +d-i netcfg/get_gateway string 192.168.0.10 +d-i netcfg/get_nameservers string 192.168.0.10 +d-i netcfg/confirm_static boolean true +d-i netcfg/disable_dhcp boolean true diff --git a/packages/oldsys-preseed/tests/arm/kuroboxpro_static.test b/packages/oldsys-preseed/tests/arm/kuroboxpro_static.test new file mode 100644 index 0000000..8a43534 --- /dev/null +++ b/packages/oldsys-preseed/tests/arm/kuroboxpro_static.test @@ -0,0 +1,29 @@ +path=$(mktemp -t oldsys-preseed-tests.XXXXXX -d) +mkdir -p $path/rootfs +(cd $path/rootfs ; tar -xzf $TEST_DIR/kuroboxpro_static.tgz > /dev/null 2>&1) +INTERFACE=eth0 +parse_unix_tree $path/rootfs +netinfo=$path/rootfs/etc/netinfo +if [ -e "$netinfo" ]; then + IPADDRESS=$(sed -n '/^my_ipaddress/ {s/.*=//; p}' "$netinfo") + if [ "$IPADDRESS" = "dhcp" ]; then + NET_CONFIG=dhcp + else + NET_CONFIG=static + NETMASK=$(sed -n '/^my_subnetmask/ {s/.*=//; p}' "$netinfo") + GATEWAY=$(sed -n '/^my_dgw/ {s/.*=//; p}' "$netinfo") + fi +fi +hostinfo=$path/rootfs/etc/host.info +if [ -e "$hostinfo" ]; then + HOSTNAME=$(sed -n '/^hostname/ {s/.*=//; p}' "$hostinfo") +fi +unset_matching_var "HOSTNAME" "KUROBOX-PRO" +if [ "$NET_CONFIG" != "static" ]; then + IPADDRESS=192.168.11.150 + NETMASK=255.255.255.0 + GATEWAY=192.168.11.1 + [ -z "$NAMESERVERS" ] && NAMESERVERS=192.168.11.1 + dhcp_fallback "$1" +fi +generate_preseed_file $1 diff --git a/packages/oldsys-preseed/tests/arm/kuroboxpro_static.tgz b/packages/oldsys-preseed/tests/arm/kuroboxpro_static.tgz new file mode 100644 index 0000000..d166d85 Binary files /dev/null and b/packages/oldsys-preseed/tests/arm/kuroboxpro_static.tgz differ
diff --git a/packages/kernel/kernel-wedge/package-list b/packages/kernel/kernel-wedge/package-list index 13eba22..5b0e4e4 100644 --- a/packages/kernel/kernel-wedge/package-list +++ b/packages/kernel/kernel-wedge/package-list @@ -177,6 +177,12 @@ Priority: standard Description: ISOFS filesystem support This package contains the ISOFS filesystem module for the Linux kernel. +Package: jffs2-modules +Depends: kernel-image, zlib-modules +Priority: standard +Description: JFFS2 filesystem support + This package contains the JFFS2 filesystem module for the Linux kernel. + Package: jfs-modules Depends: kernel-image, nls-core-modules Priority: standard diff --git a/packages/kernel/kernel-wedge/modules/jffs2-modules b/packages/kernel/kernel-wedge/modules/jffs2-modules new file mode 100644 index 0000000..19f4e10 --- /dev/null +++ b/packages/kernel/kernel-wedge/modules/jffs2-modules @@ -0,0 +1 @@ +jffs2
diff --git a/packages/kernel/linux-modules-di-armel-2.6/modules/armel/jffs2-modules b/packages/kernel/linux-modules-di-armel-2.6/modules/armel/jffs2-modules new file mode 100644 index 0000000..245c7d8 --- /dev/null +++ b/packages/kernel/linux-modules-di-armel-2.6/modules/armel/jffs2-modules @@ -0,0 +1 @@ +#include <jffs2-modules> diff --git a/packages/kernel/linux-modules-di-i386-2.6/modules/i386/jffs2-modules b/packages/kernel/linux-modules-di-i386-2.6/modules/i386/jffs2-modules new file mode 100644 index 0000000..245c7d8 --- /dev/null +++ b/packages/kernel/linux-modules-di-i386-2.6/modules/i386/jffs2-modules @@ -0,0 +1 @@ +#include <jffs2-modules> diff --git a/packages/kernel/linux-kernel-di-armel-2.6/debian/control.stub b/packages/kernel/linux-kernel-di-armel-2.6/debian/control.stub index f3973e5..2588255 100644 --- a/packages/kernel/linux-kernel-di-armel-2.6/debian/control.stub +++ b/packages/kernel/linux-kernel-di-armel-2.6/debian/control.stub @@ -3,5 +3,5 @@ Section: debian-installer Priority: optional Maintainer: Debian Install System Team <debian-boot@lists.debian.org> Uploaders: Joey Hess <joeyh@debian.org>, Martin Michlmayr <tbm@cyrius.com> -Build-Depends: kernel-wedge (>= 2.45) +Build-Depends: kernel-wedge (>= 2.46) Vcs-Svn: svn://svn.debian.org/d-i/trunk/packages/kernel/linux-kernel-di-armel-2.6 diff --git a/packages/kernel/linux-modules-di-i386-2.6/debian/control.stub b/packages/kernel/linux-modules-di-i386-2.6/debian/control.stub index 7ed9e23..5ea3bd6 100644 --- a/packages/kernel/linux-modules-di-i386-2.6/debian/control.stub +++ b/packages/kernel/linux-modules-di-i386-2.6/debian/control.stub @@ -3,5 +3,5 @@ Section: debian-installer Priority: optional Maintainer: Debian Install System Team <debian-boot@lists.debian.org> Uploaders: Max Vozeler <xam@debian.org>, Frans Pop <fjp@debian.org> -Build-Depends: kernel-wedge (>= 2.45) +Build-Depends: kernel-wedge (>= 2.46) Vcs-Svn: svn://svn.debian.org/d-i/trunk/packages/kernel/linux-modules-di-i386-2.6
diff --git a/installer/build/boot/arm/kuroboxpro-flash-debian b/installer/build/boot/arm/kuroboxpro-flash-debian new file mode 100644 index 0000000..3e766b8 --- /dev/null +++ b/installer/build/boot/arm/kuroboxpro-flash-debian @@ -0,0 +1,37 @@ +#!/bin/sh + +# This code is covered by the GNU General Public License (GPLv2 or higher) + +NVRAM=$(which nvram) +SETENV="$NVRAM -c set" + +path=$(mount | grep ext2 | sed -n '/sda1/ {s/\/dev\/sda1 on \(.*\) type.*/\1/; p}') +if [ -z "$path" ]; then + echo "You have to create an ext2 filesystem on /dev/sda1" + exit 1 +fi + +if [ ! -e $path/uImage.buffalo ]; then + echo "You have to download the uImage.buffalo file from the debian-installer for Kurobox Pro, and put it in $path" + exit 1 +fi + +if [ ! -e $path/initrd.buffalo ]; then + echo "You have to download the initrd.buffalo file from the debian-installer for Kurobox Pro, and put it in $path" + exit 1 +fi + +if [ -z "$NVRAM" ]; then + echo "There is no nvram utility to alter Das U-Boot environment" + exit 1 +fi + +printf "Saving Das U-Boot environment to ubootenv.bak... " +$NVRAM -c printenv > ubootenv.bak +echo "done." + +echo "Changing Das U-Boot environment... " +$SETENV bootcmd 'ide reset; ext2load ide 0:1 $(default_kernel_addr) /$(kernel); ext2load ide 0:1 $(default_initrd_addr) /$(initrd); bootm $(default_kernel_addr) $(default_initrd_addr)' +echo "done." + +echo "Please reboot your Kurobox Pro." diff --git a/installer/build/config/armel/orion5x/netboot.cfg b/installer/build/config/armel/orion5x/netboot.cfg index 9b00ed8..59bdbc7 100644 --- a/installer/build/config/armel/orion5x/netboot.cfg +++ b/installer/build/config/armel/orion5x/netboot.cfg @@ -1,9 +1,25 @@ MEDIA_TYPE = netboot image -TARGET = $(TEMP_INITRD) $(TEMP_KERNEL) ts209 ts409 +TARGET = $(TEMP_INITRD) $(TEMP_KERNEL) kuroboxpro ts209 ts409 EXTRANAME = $(MEDIUM) TYPE = netboot/network-console +# Kurobox Pro +kuroboxpro: + mkdir -p $(SOME_DEST)/$(EXTRANAME)/kuroboxpro + mkdir -p $(TEMP)/kuroboxpro + # Set machine id 1509 (0x05e5) + devio > $(TEMP)/kuroboxpro/kernel 'wl 0xe3a01c05,4' 'wl 0xe38110e5,4' + cat $(TEMP_KERNEL) >> $(TEMP)/kuroboxpro/kernel + mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n "Debian kernel" -d $(TEMP)/kuroboxpro/kernel $(TEMP)/kuroboxpro/kernel.uboot + cp $(TEMP)/kuroboxpro/kernel.uboot $(SOME_DEST)/$(EXTRANAME)/kuroboxpro/uImage.buffalo + mkimage -A arm -O linux -T ramdisk -C gzip -a 0x02000000 -e 0x02000000 -n "Debian Installer ramdisk" -d $(TEMP_INITRD) $(TEMP)/kuroboxpro/initrd.uboot + cp $(TEMP)/kuroboxpro/initrd.uboot $(SOME_DEST)/$(EXTRANAME)/kuroboxpro/initrd.buffalo + install -m 744 boot/arm/kuroboxpro-flash-debian $(SOME_DEST)/$(EXTRANAME)/kuroboxpro/flash-debian + update-manifest $(SOME_DEST)/$(EXTRANAME)/kuroboxpro/flash-debian "Script to flash debian-installer" + update-manifest $(SOME_DEST)/$(EXTRANAME)/kuroboxpro/uImage.buffalo "Linux kernel for Kurobox Pro" + update-manifest $(SOME_DEST)/$(EXTRANAME)/kuroboxpro/initrd.buffalo "Linux kernel for Kurobox Pro" + # QNAP TS-109/TS-209 ts209: mkdir -p $(SOME_DEST)/$(EXTRANAME)/qnap/ts-209
Attachment:
kuroboxpro_dhcp.tgz
Description: GNU Zip compressed data
Attachment:
kuroboxpro_static.tgz
Description: GNU Zip compressed data