Revision as of 09:09, 14 April 2014 by Craig Peacock (Talk | contribs)


Prerequisites

ARM Cross Compiler

To compile the Linux kernel for the GoFlex Home, you must first have an ARM cross compiler installed. I use gcc-4.7-arm-linux-gnueabi-base that comes with Ubuntu 13.04. To install the compiler run:

sudo apt-get install gcc-arm-linux-gnueabi

U-Boot mkimage

The bootloader used on the GoFlex Home is U-Boot. U-Boot has a special image format called uImage. It includes parameters such as descriptions, the machine/architecture type, compression type, load address, checksums etc. To make these images, you need to have a mkimage tool that comes part of the U-Boot distribution. Download U-Boot, make and install the U-Boot tools:

wget ftp://ftp.denx.de/pub/u-boot/u-boot-latest.tar.bz2
tar -xjf u-boot-latest.tar.bz2
cd into u-boot directory
make tools
sudo install tools/mkimage /usr/local/bin

Building the GoFlex Home Kernel

# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.tar.xz
# tar -xJf linux-3.14.tar.xz
# cd linux-3.14

Make and run the configuration menu:

# make ARCH=arm kirkwood_defconfig
# make ARCH=arm menuconfig

Customise your kernel. I enable the following:

System Type -> Marvell Kirkwood Implementations --> Seagate GoFlex Home

Device Drivers --> Memory Technology Devices (MTD) --> Enable UBI - Unsorted Block Images
File Systems --> Miscellaneous Filesystems --> UBIFS file system support
File Systems --> Miscellaneous Filesystems --> LZO compression support
File Systems --> Miscellaneous Filesystems --> ZLIB compression support

File Systems --> DOS/FAT/NT Filesystems --> NTFS file system support
File Systems --> DOS/FAT/NT Filesystems --> NTFS write support

File Systems --> The Extended 4 (ext4) filesystem

Device Drivers --> Block Devices --> RAM block device support (reflashing)

set CONFIG_BLK_DEV_INITRD in .config

Once you have finished configuring your kernel, save the config. Then build it:

# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage dtbs -j4

Now build the modules and install them to a suitable path:

# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules
# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/home/cpeacock/export/rootfs modules_install

Testing

To support your newer Linux Kernel with Device Tree Support, you must have an up-to-date u-Boot bootloader with Device Tree Support installed on your GuruPlug.

Please see Upgrading uBoot with Device Tree Support for the Seagate GoFlex Home