(Updated for new kernel, device tree support and cross compiler) |
(→ARM Cross Compiler) |
||
Line 5: | Line 5: | ||
=== ARM Cross Compiler === | === ARM Cross Compiler === | ||
− | To compile the Linux kernel for the | + | 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: |
<PRE> | <PRE> |
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
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
# 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
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