(ARM Cross Compiler)
(Updated configuration options)
Line 40: Line 40:
 
Customise your kernel. I enable the following:
 
Customise your kernel. I enable the following:
 
<PRE>
 
<PRE>
System Type -> Marvell Kirkwood Implementations --> Seagate GoFlex Home
 
 
 
Device Drivers --> Memory Technology Devices (MTD) --> Enable UBI - Unsorted Block Images
 
Device Drivers --> Memory Technology Devices (MTD) --> Enable UBI - Unsorted Block Images
 
File Systems --> Miscellaneous Filesystems --> UBIFS file system support
 
File Systems --> Miscellaneous Filesystems --> UBIFS file system support
Line 50: Line 48:
 
File Systems --> DOS/FAT/NT Filesystems --> NTFS write support
 
File Systems --> DOS/FAT/NT Filesystems --> NTFS write support
  
File Systems --> The Extended 4 (ext4) filesystem
+
Networking support -> Networking options -->The IPv6 protocol
 
+
Networking support -> Networking options --> Network packet filtering framework (Netfilter)
Device Drivers --> Block Devices --> RAM block device support (reflashing)
+
  
set CONFIG_BLK_DEV_INITRD in .config
+
Device Drivers --> Block Devices --> RAM block device support (Reflashing)
 
</PRE>
 
</PRE>
  

Revision as of 09:20, 14 April 2014


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:

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

Networking support -> Networking options -->The IPv6 protocol
Networking support -> Networking options --> Network packet filtering framework (Netfilter)

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

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