====== Install Debian on a LaCie NAS (Kirkwood based) using the Debian installer ======
===== Introduction =====
This page details step by step how to install a Debian system on a LaCie NAS (Kirkwood based), using the [[http://wiki.debian.org/debian-installer/|Debian installer]]. The [[http://wiki.debian.org/DebianInstaller/NetworkConsole|network-console]] images allows to perform a completely remote full installation. This means that there is no needs to open the case nor to plug a serial wire.
Note that this howto is only relevant for the LaCie boards supported by the Debian kernel. To check if your board is well supported, please refer this [[start#devices|device array]]. All the Linux mainlined boards are also supported by the Debian kernel.
===== Configure U-Boot =====
For more informations about U-Boot on LaCie NASes, please see [[uboot|this page]].
==== Update U-Boot to mainline ====
As a requirement, you must be able to modify the U-Boot environment. With some of the LaCie stock versions (the oldest), some supposed critical variables (as 'bootcmd') are protected. At boot time, the LaCie U-Boot overrides the environment values with some hard-coded ones. To check that, simply try to set and save the 'bootcmd' variable. After a reset, you must be able to retrieve your changes.
If you are not allowed to configure the environment, you must update U-Boot to the mainline version. Please, refer to this [[uboot#install_from_a_lacie_stock_u-boot|howto]].
==== Setup the U-Boot environment ====
To run a Debian system, U-Boot must be able to load the files **uImage** and **uInitrd** from the /boot partition. Some U-Boot environment variables must be modified. For example, if you intend to store the /boot files into the first partition (default behaviour for the Debian installer), you could run the following commands:
ns2> set diskload "ide reset && ext2load ide 0:1 0x800000 uImage && ext2load ide 0:1 0x1200000 uInitrd"
ns2> set bootcmd "dhcp && run netconsole; if run usbload || run diskload; then bootm 0x800000 0x1200000; fi"
ns2> print diskload bootcmd
diskload=ide reset && ext2load ide 0:1 0x800000 uImage && ext2load ide 0:1 0x1200000 uInitrd
bootcmd=dhcp && run netconsole; if run usbload || run diskload; then bootm 0x800000 0x1200000; fi
ns2> saveenv
Saving Environment to SPI Flash...
Erasing SPI flash...Writing to SPI flash...done
===== Run the network-console Debian installer =====
==== Prepare network-console files ====
First you must download the network-console files from this [[http://ftp.nl.debian.org/debian/dists/testing/main/installer-armel/current/images/kirkwood/network-console/lacie/|Debian FTP repository]]. Note that that the **uInitrd** image doesn't include any **preseed.cfg** file. In our case, preseeding is needed to configure network and SSH server without any human action. For more informations about preseeding, please refer to this [[http://wiki.debian.org/DebianInstaller/Preseed|wiki page]].
To add the **preseed.cfg** file to the the **uInitrd** image, you can try the following shell commands:
$ wget http://ftp.nl.debian.org/debian/dists/testing/main/installer-armel/current/images/kirkwood/network-console/lacie/uInitrd
$ dd if=uInitrd of=initrd.gz bs=64 skip=1
$ mkdir initrd; cd initrd
$ gzip -d < ../initrd.gz | cpio --extract --verbose --make-directories --no-absolute-filenames
$ wget ftp://lacie-nas.org/debian-installer/network-installer/preseed.cfg
$ find . | cpio -H newc --create --verbose | gzip -9 > ../initrd.gz
$ cd ..
$ mkimage -A arm -O linux -T ramdisk -C gzip -a "0x0" -e "0x0" -n "ramdisk with preseed.cfg" -d initrd.gz uInitrd
$ rm -rf initrd.gz initrd
==== Load network-console images ====
At your convenience, you could load the network-console image over network or from an USB disk. Both methods are described here.
=== From an USB disk ===
* Prepare an USB disk or stick: put the network-console files into the first partition (VFAT formatted).
* Plug the USB disk at the front.
* [[uboot#connect_to_u-boot_via_netconsole|Connect to the U-Boot netconsole]] and load network-console files with the following commands:
ns2> usb reset
ns2> fatload usb 0:1 0x800000 uImage
ns2> fatload usb 0:1 0x1200000 uInitrd
=== From network via a TFTP server ===
* On a you development machine, setup a TFTP server and put the network-console files into the exported directory.
* [[uboot#connect_to_u-boot_via_netconsole|Connect to the U-Boot netconsole]] and load network-console files with the following commands (replace $TFTP_SERVER_IP with your TFTP server IP address):
ns2> set serverip $TFTP_SERVER_IP
ns2> tftp 0x800000 debian-installer/kirkwood/network-console/lacie/uImage
Using egiga0 device
TFTP from server 192.168.0.16; our IP address is 192.168.0.15
Filename 'debian-installer/kirkwood/network-console/lacie/uImage'.
Load address: 0x800000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
################################################
done
Bytes transferred = 1574768 (180770 hex)
ns2> tftp 0x1200000 debian-installer/kirkwood/network-console/lacie/uInitrd
Using egiga0 device
TFTP from server 192.168.0.16; our IP address is 192.168.0.15
Filename 'debian-installer/kirkwood/network-console/lacie/uInitrd'.
Load address: 0x1200000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
###############################################################
done
Bytes transferred = 4976913 (4bf111 hex)
==== Boot the Debian network installer ====
When both images are loaded, the network installer can be booted with 'bootm 0x800000 0x1200000'.
ns2> bootm 0x800000 0x1200000
## Booting kernel from Legacy Image at 00800000 ...
Image Name: Debian kernel
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1574704 Bytes = 1.5 MiB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 01200000 ...
Image Name: debian-installer ramdisk
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 4976849 Bytes = 4.7 MiB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
==== Log into the Debian installer ====
To log into the Debian installer, you need to guess the NAS IP. This IP should be the same as the one given by the DHCP server to the U-Boot system. To confirm, you can use an utility like **dhcpdump**:
$ sudo dhcpdump -i eth0
...
OPTION: 50 ( 4) Request IP address 192.168.0.15
...
Once the NAS front LED turns red, you should be able to log into the Debian installer. The password is **lacie**.
$ ssh installer@192.168.0.15
The authenticity of host '192.168.0.15 (192.168.0.15)' can't be established.
RSA key fingerprint is 96:4c:b3:d7:b9:26:5d:da:fa:52:d3:74:69:50:e1:2b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.15' (RSA) to the list of known hosts.
installer@192.168.0.15's password:
At this point, you should see this screen:
{{:di_00.png?537x360|network-console first screen}}
==== Complete the installation ====
Simply, follow the Debian installer path... IThe installer could fail to make the system bootable, how to solve this is described at the section troubleshooting.
===== Run the Debian system =====
* Log into the Debian system via SSH:
~$ ssh root@$NAS_IP
root@192.168.0.15's password:
Linux unassigned-hostname 3.2.0-2-kirkwood #1 Mon Apr 16 12:58:57 UTC 2012 armv5tel
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon May 7 01:32:59 2012
* For the preseeding purpose, the hostname has been set to 'unassigned-domain'. You may want to change this default hostname. As root, run the following command:
root@unassigned-hostname:~# echo $MY_NAS_NAME > /etc/hostname
===== Troubleshooting =====
==== The system is not bootable ====
The Debian installer may fail to make the system bootable:
{{:di_01.png?537x360|system not bootable screen}}
It is because the flash-kernel package is not up to date. You must update this package with the lacie-nas.org version. First, you must exit out of the Debian installer. In the 'Debian installer main menu', select 'Execute a shell'.
* From the installer shell, chroot into the target system:
~ # mount -t proc proc /target/proc/
~ # mount -t sysfs sysfs /target/sys/
~ # chroot /target /bin/bash
* Add the lacie-nas.org Debian repository to the apt source list:
root@unassigned-hostname:/# cat >> /etc/apt/sources.list <
> deb ftp://lacie-nas.org/debian/ sid main
> deb-src ftp://lacie-nas.org/debian/ sid main
> EOF
* Import lacie-nas.org GPK key:
gpg --keyserver pgpkeys.mit.edu --recv-key 0E3D4C9F7C71B58C
gpg -a --export 0E3D4C9F7C71B58C | apt-key add -
* Reinstall the flash-kernel package:
root@unassigned-hostname:/# apt-get update
root@unassigned-hostname:/# apt-get install flash-kernel
Reading package lists... Done
* Install the u-boot-tools package:
root@unassigned-hostname:/# apt-get install u-boot-tools
The u-boot-tools package installation should have been triggered by the flash-kernel package postinstall scripts. For an unknown reason, it is not the case. To be investigate...
* And finally, reinstall the linux-image package:
root@unassigned-hostname:/# apt-get install --reinstall linux-image-3.2.0-2-kirkwood
...
flash-kernel: installing version 3.2.0-2-kirkwood
Generating kernel u-boot image... done.
Installing new uImage.
Generating initramfs u-boot image... done.
Installing new uInitrd.
* Exit the shell and restart the Debian installer:
root@unassigned-hostname:/# exit
~ # umount /target/sys/
~ # umount /target/proc/
~ # exit
* From the 'Debian installer main menu', select 'Make the system bootable'. Now, this step should succeed.