(First Version) |
(Updated for new kernel, device tree support and cross compiler) |
||
Line 5: | Line 5: | ||
=== ARM Cross Compiler === | === ARM Cross Compiler === | ||
− | To compile the | + | To compile the Linux kernel for the GuruPlug, 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> |
+ | sudo apt-get install gcc-arm-linux-gnueabi | ||
+ | </PRE> | ||
+ | |||
+ | === U-Boot mkimage === | ||
− | The bootloader used on the GoFlex Home is [http://www.denx.de/wiki/U-Boot | + | The bootloader used on the GoFlex Home is [http://www.denx.de/wiki/U-Boot 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: |
<PRE> | <PRE> | ||
Line 20: | Line 24: | ||
== Building the GoFlex Home Kernel == | == Building the GoFlex Home Kernel == | ||
− | |||
− | |||
− | |||
− | |||
<PRE> | <PRE> | ||
− | # wget https | + | # wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.tar.xz |
− | + | # tar -xJf linux-3.14.tar.xz | |
− | # tar - | + | # cd linux-3.14 |
− | # cd linux-3. | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
</PRE> | </PRE> | ||
Line 51: | Line 38: | ||
</PRE> | </PRE> | ||
− | + | Customise your kernel. I enable the following: | |
<PRE> | <PRE> | ||
System Type -> Marvell Kirkwood Implementations --> Seagate GoFlex Home | System Type -> Marvell Kirkwood Implementations --> Seagate GoFlex Home | ||
Line 70: | Line 57: | ||
</PRE> | </PRE> | ||
− | + | Once you have finished configuring your kernel, save the config. Then build it: | |
<PRE> | <PRE> | ||
− | # make ARCH=arm CROSS_COMPILE=arm- | + | # make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage dtbs -j4 |
</PRE> | </PRE> | ||
− | + | Now build the modules and install them to a suitable path: | |
− | + | ||
− | + | ||
<PRE> | <PRE> | ||
− | # | + | # 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 | |
− | + | ||
− | + | ||
− | # | + | |
</PRE> | </PRE> | ||
− | + | == 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 [[Seagate_GoFlexHome_Upgrading_uBoot|Upgrading uBoot with Device Tree Support for the Seagate GoFlex Home]] | |
− | + | ||
− | + | ||
− | + |
To compile the Linux kernel for the GuruPlug, 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