Skip to content
Configs and tools for installing vanilla Debian Linux on iomega ix2-200 NAS
Branch: master
Clone or download
Latest commit bc8a4bd Aug 31, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
configs Add usbip driver, updates and some cleanup Feb 3, 2016
dtb Add ix2-200 dtb from Jessie linux-image-3.16.0-4-kirkwood Jul 31, 2015
scripts Missed semicolon Aug 27, 2013
README.md

README.md

Debian Linux on ix2-200

Configs and tools for installing vanilla Debian 'Jessie' Linux on a iomega ix2-200 NAS

About ix2-200

The iomega ix2-200 NAS is a dual SATA NAS powered by a Marvell Kirkwood SoC clocked at 1GHz. It has 256MB of RAM and 32MB of flash memory. 3x USB 2.0 and 1x 1Gbit/s NIC are available.

         __  __                      _ _
        |  \/  | __ _ _ ____   _____| | |
        | |\/| |/ _` | '__\ \ / / _ \ | |
        | |  | | (_| | |   \ V /  __/ | |
        |_|  |_|\__,_|_|    \_/ \___|_|_|
 _   _     ____              _
| | | |   | __ )  ___   ___ | |_ 
| | | |___|  _ \ / _ \ / _ \| __| 
| |_| |___| |_) | (_) | (_) | |_ 
 \___/    |____/ \___/ \___/ \__| 
 ** MARVELL BOARD: RD-88F6281A LE  

U-Boot 1.1.4 (Sep  8 2009 - 09:31:54) Marvell version: 3.4.14

Mapower version: 2.0 (32MB) (2009/09/08)

U-Boot code: 00600000 -> 0067FFF0  BSS: -> 006CEE60

Soc: 88F6281 A0 (DDR2)
CPU running @ 1000Mhz L2 running @ 333Mhz
SysClock = 333Mhz , TClock = 200Mhz 

DRAM CAS Latency = 5 tRP = 5 tRAS = 18 tRCD=6
DRAM CS[0] base 0x00000000   size 256MB 
DRAM Total size 256MB  16bit width
Flash:  0 kB
Addresses 8M - 0M are saved for the U-Boot usage.
Mem malloc Initialization (8M - 7M): Done
NAND:32 MB

CPU : Marvell Feroceon (Rev 1)

Streaming disabled 
Write allocate disabled

Module 0 is RGMII
Module 1 is TDM

USB 0: host mode
PEX 0: interface detected no Link.
Net:   egiga0, egiga1 [PRIME]
Fan lookup table initialized.

Current remote temperature: 25
Current fan speed: 0

Hit any key to stop autoboot:  0 
Marvell>>

More info available at http://iomega.nas-central.org/wiki/Category:Ix2-200

Pre-requisites

  • Debian GNU Linux 8 Jessie
  • Arch i386 is recommended

I suggest to create a dev environment using an LXC container with Debian Jessie i686:

sudo lxc-create -t debian -n crossdebian -- -r jessie -a i686

Cross compiling the kernel

Setup cross compiler

# Add the embedian repo:
echo "deb http://emdebian.org/tools/debian/ jessie main" >> /etc/apt/sources.list
curl http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | apt-key add -

# Add the source repo:
echo "deb-src http://mi.mirror.garr.it/mirrors/debian/ jessie main contrib non-free" >> /etc/apt/sources.list

dpkg --add-architecture armel
apt-get update
apt-get install wget devscripts crossbuild-essential-armel kernel-package ncurses-dev

Get the sources

cd /usr/src
apt-get source linux

Configure the kernel

export CC=arm-linux-gnueabi-gcc
export CROSS_COMPILE=arm-linux-gnueabi-
export ARCH=arm
export DEB_HOST_ARCH=armel

make-kpkg clean

wget -O- https://raw.githubusercontent.com/daniviga/ix2-200/master/configs/config-3.16.7-ix2-200 > .config
make oldconfig

Generate the dtb only

make dtbs

Build the full kernel

# Optional
make menuconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- EXTRAVERSION=-ix2-200 KDEB_PKGVERSION=1 KBUILD_DEBARCH=armel deb-pkg

Append the dtb to the kernel

cp arch/arm/boot/dts/kirkwood-iomega_ix2_200.dtb /boot
cd /boot
cat vmlinuz-3.16.7-ix2-200 kirkwood-iomega_ix2_200.dtb > vmlinuz-3.16.7-ix2-200-dtb

Install the new kernel on the device

mkimage -A arm -O linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs -d initrd.img-3.16.7-ix2-200 uInitrd
mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n Linux+dtb -d vmlinuz-3.16.7-ix2-200-dtb uImage-dtb
flash_eraseall /dev/mtd0
flash_eraseall /dev/mtd1

nandwrite -p /dev/mtd0 /boot/uImage-dtb
nandwrite -p /dev/mtd1 /boot/uInitrd 

Boot examples

Boot from USB

usb start
setenv bootargs_console 'console=ttyS0,115200 mtdparts=orion_nand:0x300000@0x100000(uImage),0x1000000@0x540000(uInitrd) root=/dev/sda1'
setenv bootargs $(bootargs_console)
ext2load usb 0:1 0x00800000 /uImage-new
ext2load usb 0:1 0x01100000 /uInitrd-new
bootm 0x00800000 0x01100000

Boot from internal flash

setenv mtdparts 'mtdparts=orion_nand:0x100000@0x000000(uboot)ro,0x20000@0xA0000(uboot_env),0x300000@0x100000(uImage),0x1000000@0x540000(uInitrd)'
setenv bootargs_console 'console=ttyS0,115200 mtdparts=orion_nand:0x300000@0x100000(uImage),0x1000000@0x540000(uInitrd) root=/dev/sda1'
setenv bootcmd 'setenv bootargs $(bootargs_console); nand read 0x800000 uImage; nand read 0x1100000 uInitrd; bootm 0x00800000 0x01100000'
saveenv
reset

Links and sources

You can’t perform that action at this time.