Difference between revisions of "HOWTO U-Boot"

From NAS-Central Buffalo - The Linkstation Wiki
Jump to: navigation, search
(Introduction)
(Flash U-boot in your Kuro-box)
Line 37: Line 37:
  
 
== Flash U-boot in your Kuro-box ==
 
== Flash U-boot in your Kuro-box ==
<p style="border:dashed 1px red;background:Lemonchiffon;text-align:center;margin:0 5px">!!!! Warning : this could brick your Kuro-box in case of misuse/power failure/application crash !!!!<br />
+
<p style="border:dashed 1px red;background:Lemonchiffon;text-align:center;margin:0 5px">!!!! Warning : this could brick your Kuro-box in case of misuse/power failure/application crash !!!! Kuro-box and Kuro-box HG are not using the same boot, be carefull !!!!<br />
  !!!! Warning : this could brick your Kuro-box in case of misuse/power failure/application crash !!!!<br />
+
  !!!! Warning : this could brick your Kuro-box in case of misuse/power failure/application crash !!!! Kuro-box and Kuro-box HG are not using the same boot, be carefull !!!!<br />
  !!!! Warning : this could brick your Kuro-box in case of misuse/power failure/application crash !!!!<br />
+
  !!!! Warning : this could brick your Kuro-box in case of misuse/power failure/application crash !!!! Kuro-box and Kuro-box HG are not using the same boot, be carefull !!!!<br />
  !!!! Warning : this could brick your Kuro-box in case of misuse/power failure/application crash !!!!</p>
+
  !!!! Warning : this could brick your Kuro-box in case of misuse/power failure/application crash !!!! Kuro-box and Kuro-box HG are not using the same boot, be carefull !!!!</p>
  
 
I have built (using gcc version 4.1.2 20060613 (prerelease) (Debian 4.1.1-5)) both versions of patched U-boot (1.1.4), both will try to boot the /boot/uImage on hda1.
 
I have built (using gcc version 4.1.2 20060613 (prerelease) (Debian 4.1.1-5)) both versions of patched U-boot (1.1.4), both will try to boot the /boot/uImage on hda1.
=== Kuro-box ===
+
=== Standard Kuro-box ===
 +
<p style="border:dashed 1px red;background:Lemonchiffon;text-align:center;margin:0 5px">This is for the standard Kuro-box only !!!! For Kuro-box HG, check [http://www.kurobox.com/mwiki/index.php?title=Howto_u-boot#Kuro-box_HG Kuro-box HG section] !!! </p>
 +
<p style="border:dashed 1px red;background:Lemonchiffon;text-align:center;margin:0 5px">This is for the standard Kuro-box only !!!! For Kuro-box HG, check [http://www.kurobox.com/mwiki/index.php?title=Howto_u-boot#Kuro-box_HG Kuro-box HG section] !!! </p>
 +
<p style="border:dashed 1px red;background:Lemonchiffon;text-align:center;margin:0 5px">This is for the standard Kuro-box only !!!! For Kuro-box HG, check [http://www.kurobox.com/mwiki/index.php?title=Howto_u-boot#Kuro-box_HG Kuro-box HG section] !!! </p>
 +
<p style="border:dashed 1px red;background:Lemonchiffon;text-align:center;margin:0 5px">This is for the standard Kuro-box only !!!! For Kuro-box HG, check [http://www.kurobox.com/mwiki/index.php?title=Howto_u-boot#Kuro-box_HG Kuro-box HG section] !!! </p>
 
==== Kernel 2.4.x ====
 
==== Kernel 2.4.x ====
 
Boot your kernel as usual and download the U-boot version for standard Kuro-box :
 
Boot your kernel as usual and download the U-boot version for standard Kuro-box :
Line 106: Line 110:
  
 
=== Kuro-box HG ===
 
=== Kuro-box HG ===
 +
<p style="border:dashed 1px red;background:Lemonchiffon;text-align:center;margin:0 5px">This is for the Kuro-box HG only !!!! For standard Kuro-box, check [http://www.kurobox.com/mwiki/index.php?title=Howto_u-boot#Standard_Kuro-box Standard Kuro-box] !!! </p>
 +
<p style="border:dashed 1px red;background:Lemonchiffon;text-align:center;margin:0 5px">This is for the Kuro-box HG only !!!! For standard Kuro-box, check [http://www.kurobox.com/mwiki/index.php?title=Howto_u-boot#Standard_Kuro-box Standard Kuro-box] !!! </p>
 +
<p style="border:dashed 1px red;background:Lemonchiffon;text-align:center;margin:0 5px">This is for the Kuro-box HG only !!!! For standard Kuro-box, check [http://www.kurobox.com/mwiki/index.php?title=Howto_u-boot#Standard_Kuro-box Standard Kuro-box] !!! </p>
 +
<p style="border:dashed 1px red;background:Lemonchiffon;text-align:center;margin:0 5px">This is for the Kuro-box HG only !!!! For standard Kuro-box, check [http://www.kurobox.com/mwiki/index.php?title=Howto_u-boot#Standard_Kuro-box Standard Kuro-box] !!! </p>
 
==== Kernel 2.4.x ====
 
==== Kernel 2.4.x ====
Boot your kernel as usual and download the U-boot version for standard Kuro-box :
+
Boot your kernel as usual and download the U-boot version for Kuro-box HG :
 
  http://www.kurobox.com/sylver/u-boot/u-boot-1.1.4-kuroboxhg.tar.gz
 
  http://www.kurobox.com/sylver/u-boot/u-boot-1.1.4-kuroboxhg.tar.gz
 
untar it and check the checksum :
 
untar it and check the checksum :
Line 125: Line 133:
 
==== Kernel 2.6.x ====
 
==== Kernel 2.6.x ====
 
<p style="border:dashed 1px red;background:Lemonchiffon;text-align:center;margin:0 5px">WARNING : Process is harder when using a 2.6.x kernel ! If you're not sure, just get back to 2.4.x kernel !</p>
 
<p style="border:dashed 1px red;background:Lemonchiffon;text-align:center;margin:0 5px">WARNING : Process is harder when using a 2.6.x kernel ! If you're not sure, just get back to 2.4.x kernel !</p>
Boot your kernel as usual and download the U-boot version for standard Kuro-box :
+
Boot your kernel as usual and download the U-boot version for Kuro-box HG :
 
  wget http://www.kurobox.com/sylver/u-boot/u-boot-1.1.4-kuroboxhg.tar.gz
 
  wget http://www.kurobox.com/sylver/u-boot/u-boot-1.1.4-kuroboxhg.tar.gz
 
untar it and check the checksum :
 
untar it and check the checksum :

Revision as of 07:36, 1 July 2006

WARNING - THE NIJINO U-BOOT BOOTLOADER IS NOT FULLY TESTED. ALTHOUGH IT HAS BEEN INSTALLED SUCCESSFULLY ON BOTH STANDARD AND HG KURO BOXES, THERE HAS BEEN AT LEAST ONE KUROBOX BRICKED. THINK LONG AND HARD BEFORE PERFORMING THIS MODIFICATION. A BRICKED KURO REQUIRES JTAG ACCESS TO REPAIR AND IS NOT COVERED UNDER THE KUROBOX WARRANTY


Contents

Introduction

The U-boot project for the Kuro-box is something that the community was waiting for since a long time ! Nijino was the first one to provide a patch to adapt U-boot to the Kuro-box architecture and specifications ! It'll allow you to boot from a kernel on the hard drive, thing that was not possible since the buffalo's boot was only booting from the kernel in flash (that is a 2.4.17 kernel version).

Known functions and limitations

Functions :

  • Will boot a kernel image in uImage format stored on a HDD
  • Will boot in EM (Emergency Mode) if pressing red button at bootup just after the HDD light stop blinking (The EM mode take around 2 minutes to start for me, so don't worry if after few seconds you still can't ping your Kuro-box)

Limitations :

  • This version of U-boot comes with no support for ethernet, so for now booting or connecting to u-boot from network is impossible. According to the Nijino, the author of the patch, Ethernet driver implementation will not be easy, so we may never see this function in our Kuro-boxes !

Building the Linux kernel in U-boot format

To be able to build a kernel in uImage format, you'll need mkimage tool that is built when compiling U-boot (check Building you own U-boot binary section if you want to build it). You can download a compiled version of this tool here. Just download it, chmod 0755 it and move the file to /usr/bin. Now to compile the kernel, follow the usual way :

export ARCH=ppc
make menuconfig
make oldconfig

and then instead of the make vmlinux, do a

make uImage

it'll create a uImage file there : arch/ppc/boot/images/uImage, so after kernel compilation, do a

cp arch/ppc/boot/images/uImage /boot/

then follow with module compilation and installation as usual

make modules
sudo make modules_install

To help people, i built some kernels in uImage format :

just get the file according to the Kurobox you have and "tar xzf" it from root (/)

Flash U-boot in your Kuro-box

!!!! Warning : this could brick your Kuro-box in case of misuse/power failure/application crash !!!! Kuro-box and Kuro-box HG are not using the same boot, be carefull !!!!
!!!! Warning : this could brick your Kuro-box in case of misuse/power failure/application crash !!!! Kuro-box and Kuro-box HG are not using the same boot, be carefull !!!!
!!!! Warning : this could brick your Kuro-box in case of misuse/power failure/application crash !!!! Kuro-box and Kuro-box HG are not using the same boot, be carefull !!!!
!!!! Warning : this could brick your Kuro-box in case of misuse/power failure/application crash !!!! Kuro-box and Kuro-box HG are not using the same boot, be carefull !!!!

I have built (using gcc version 4.1.2 20060613 (prerelease) (Debian 4.1.1-5)) both versions of patched U-boot (1.1.4), both will try to boot the /boot/uImage on hda1.

Standard Kuro-box

This is for the standard Kuro-box only !!!! For Kuro-box HG, check Kuro-box HG section !!!

This is for the standard Kuro-box only !!!! For Kuro-box HG, check Kuro-box HG section !!!

This is for the standard Kuro-box only !!!! For Kuro-box HG, check Kuro-box HG section !!!

This is for the standard Kuro-box only !!!! For Kuro-box HG, check Kuro-box HG section !!!

Kernel 2.4.x

Boot your kernel as usual and download the U-boot version for standard Kuro-box :

http://www.kurobox.com/sylver/u-boot/u-boot-1.1.4-kurobox.tar.gz

untar it and check the checksum :

> tar xzf u-boot-1.1.4-kurobox.tar.gz
> cksum u-boot.bin
1870540566 164676 u-boot.bin

If all is ok, flash the boot !

dd if=u-boot.bin of=/dev/fl2 bs=1k

Make sure the boot is ok in flash :

> cmp u-boot.bin /dev/fl2
cmp: EOF on u-boot.bin

Make sure you have a valid /boot/uImage in hda1 and reboot ;)

reboot

If it doesn't work :

  • You bricked your Kuro-box, only JTAG will allow to restore it
  • The kernel in /boot/uImage is incorrect, try forcing booting kernel in flash using the red button

Kernel 2.6.x

WARNING : Process is harder when using a 2.6.x kernel ! If you're not sure, just get back to 2.4.x kernel !

Boot your kernel as usual and download the U-boot version for standard Kuro-box :

wget http://www.kurobox.com/sylver/u-boot/u-boot-1.1.4-kurobox.tar.gz

untar it and check the checksum :

> tar xzf u-boot-1.1.4-kurobox.tar.gz
> cksum u-boot.bin
1870540566 164676 u-boot.bin

If all is ok, check your flash mapping : it should be

> cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00300000 00010000 "mtd_firmimg"
mtd1: 00070000 00010000 "mtd_bootcode"
mtd2: 00010000 00010000 "mtd_status"
mtd3: 00080000 00010000 "mtd_conf"
mtd4: 00400000 00010000 "mtd_allflash"
mtd5: 000f0000 00010000 "mtd_data"

or

> cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00400000 00010000 "mtd_allflash"
mtd1: 00300000 00010000 "mtd_firmimg"
mtd2: 00070000 00010000 "mtd_bootcode"
mtd3: 00010000 00010000 "mtd_status"
mtd4: 00080000 00010000 "mtd_conf"

The right place to flash is mtd_bootcode, so you'll have to flash the u-boot.bin to /dev/mtdblock1 or to /dev/mtdblock2 ! So depending of the result of the previous command, do a

dd if=u-boot.bin of=/dev/mtdblock1 bs=1k

or a

dd if=u-boot.bin of=/dev/mtdblock2 bs=1k

Make sure the boot is ok in flash :

> cmp u-boot.bin /dev/mtd1
cmp: EOF on u-boot.bin

or

> cmp u-boot.bin /dev/mtd2
cmp: EOF on u-boot.bin

Make sure you have a valid /boot/uImage in hda1 and reboot ;)

reboot

If it doesn't work :

  • You bricked your Kuro-box, only JTAG will allow to restore it
  • The kernel in /boot/uImage is incorrect, try forcing booting kernel in flash using the red button

Kuro-box HG

This is for the Kuro-box HG only !!!! For standard Kuro-box, check Standard Kuro-box !!!

This is for the Kuro-box HG only !!!! For standard Kuro-box, check Standard Kuro-box !!!

This is for the Kuro-box HG only !!!! For standard Kuro-box, check Standard Kuro-box !!!

This is for the Kuro-box HG only !!!! For standard Kuro-box, check Standard Kuro-box !!!

Kernel 2.4.x

Boot your kernel as usual and download the U-boot version for Kuro-box HG :

http://www.kurobox.com/sylver/u-boot/u-boot-1.1.4-kuroboxhg.tar.gz

untar it and check the checksum :

> tar xzf u-boot-1.1.4-kurobox.tar.gz
> cksum u-boot.bin
?????????? ?????? u-boot.bin

If all is ok, flash the boot !

dd if=u-boot.bin of=/dev/fl2 bs=1k

Make sure the boot is ok in flash :

> cmp u-boot.bin /dev/fl2
cmp: EOF on u-boot.bin

Make sure you have a valid /boot/uImage in hda1 and reboot ;)

reboot

If it doesn't work :

  • You bricked your Kuro-box, only JTAG will allow to restore it
  • The kernel in /boot/uImage is incorrect, try forcing booting kernel in flash using the red button

Kernel 2.6.x

WARNING : Process is harder when using a 2.6.x kernel ! If you're not sure, just get back to 2.4.x kernel !

Boot your kernel as usual and download the U-boot version for Kuro-box HG :

wget http://www.kurobox.com/sylver/u-boot/u-boot-1.1.4-kuroboxhg.tar.gz

untar it and check the checksum :

> tar xzf u-boot-1.1.4-kurobox.tar.gz
> cksum u-boot.bin
2604640296 164676 u-boot.bin

If all is ok, check your flash mapping : it should be

> cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00300000 00010000 "mtd_firmimg"
mtd1: 00070000 00010000 "mtd_bootcode"
mtd2: 00010000 00010000 "mtd_status"
mtd3: 00080000 00010000 "mtd_conf"
mtd4: 00400000 00010000 "mtd_allflash"
mtd5: 000f0000 00010000 "mtd_data"

or

> cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00400000 00010000 "mtd_allflash"
mtd1: 00300000 00010000 "mtd_firmimg"
mtd2: 00070000 00010000 "mtd_bootcode"
mtd3: 00010000 00010000 "mtd_status"
mtd4: 00080000 00010000 "mtd_conf"

The right place to flash is mtd_bootcode, so you'll have to flash the u-boot.bin to /dev/mtdblock1 or to /dev/mtdblock2 ! So depending of the result of the previous command, do a

dd if=u-boot.bin of=/dev/mtdblock1 bs=1k

or a

dd if=u-boot.bin of=/dev/mtdblock2 bs=1k

Make sure the boot is ok in flash :

> cmp u-boot.bin /dev/mtd1
cmp: EOF on u-boot.bin

or

> cmp u-boot.bin /dev/mtd2
cmp: EOF on u-boot.bin

Make sure you have a valid /boot/uImage in hda1 and reboot ;)

reboot

If it doesn't work :

  • You bricked your Kuro-box, only JTAG will allow to restore it
  • The kernel in /boot/uImage is incorrect, try forcing booting kernel in flash using the red button

Linkstation

No Uboot for Linkstation yet, some guys are working on that ! check on linkstationwiki for any update !

Building your own U-boot binary

  • Get Nijino patch :
wget http://homepage2.nifty.com/nijino/library/u-boot-1.1.4_kurobox.patch.bz2
  • Get U-boot 1.1.4 source code from a mirror and apply the patch
wget http://surfnet.dl.sourceforge.net/sourceforge/u-boot/u-boot-1.1.4.tar.bz2
tar xfz u-boot-1.1.4.tar.gz && cd u-boot-1.1.4
bzip2 -dc ../u-boot-1.1.4_kurobox.patch.bz2 | patch -Np1
  • Configure U-boot for your target :

Kuro-box

make KUROBOX_config

Kuro-box HG

make KUROBOX_HG_config
  • Build U-boot
make
  • Copy mkimage to /usr/bin (needed to build kernel images for U-boot
cp tools/mkimage /usr/bin/mkimage
chmod 0755 /usr/bin/mkimage

You now have an u-boot.bin file, just follow this article to flash it in your Kuro-box !

References