Difference between revisions of "Rock/Booting Linux"
Line 3: | Line 3: | ||
__TOC__ | __TOC__ | ||
− | + | == Requirement == | |
* a radxa rock board (check your [[Rock/hardware revision|hardware revision]]) | * a radxa rock board (check your [[Rock/hardware revision|hardware revision]]) | ||
* a desktop/laptop running Linux(64bit preferred) | * a desktop/laptop running Linux(64bit preferred) | ||
* a micro usb cable, one side plugged in to the OTG port of radxa rock, the other side plugged in to the usb port on desktop/laptop | * a micro usb cable, one side plugged in to the OTG port of radxa rock, the other side plugged in to the usb port on desktop/laptop | ||
+ | |||
+ | == Prepare the build environment == | ||
=== Install the packages === | === Install the packages === | ||
Line 31: | Line 33: | ||
https://codeload.github.com/radxa/linux-rockchip/zip/radxa-stable-3.0 | https://codeload.github.com/radxa/linux-rockchip/zip/radxa-stable-3.0 | ||
− | + | == Build the kernel == | |
+ | |||
cd linux-rockchip | cd linux-rockchip | ||
Line 51: | Line 54: | ||
The kernel will be at '''kernel.img''' (image for kernel partition) and '''arch/arm/boot/zImage''' (compressed binary) | The kernel will be at '''kernel.img''' (image for kernel partition) and '''arch/arm/boot/zImage''' (compressed binary) | ||
− | + | == Build the kernel modules == | |
mkdir modules | mkdir modules | ||
Line 60: | Line 63: | ||
Now you have all the kernel modules in '''modules/lib/modules/3.0.36+/'''. | Now you have all the kernel modules in '''modules/lib/modules/3.0.36+/'''. | ||
− | + | == Generate the ramdisk == | |
git clone https://github.com/radxa/initrd.git | git clone https://github.com/radxa/initrd.git | ||
make -C initrd | make -C initrd | ||
− | + | == Generate the boot.img == | |
+ | |||
Install mkbootimg | Install mkbootimg | ||
git clone https://github.com/neo-technologies/rockchip-mkbootimg.git | git clone https://github.com/neo-technologies/rockchip-mkbootimg.git | ||
Line 78: | Line 82: | ||
Done. Now we have the '''boot.img''' (image for boot/recovery partition) for RR. | Done. Now we have the '''boot.img''' (image for boot/recovery partition) for RR. | ||
− | + | == Modify the parameter == | |
+ | |||
The linux rootfs maybe in the different partition or media(nand or uSD card or USB disk), so you need to tell the kernel which is the right rootfs to mount. So change the root= command line in your parameter to the rootfs you want to mount. The examples are: | The linux rootfs maybe in the different partition or media(nand or uSD card or USB disk), so you need to tell the kernel which is the right rootfs to mount. So change the root= command line in your parameter to the rootfs you want to mount. The examples are: | ||
root=/dev/block/mtd/by-name/linuxroot # rootfs in the nand partition named "linuxroot" | root=/dev/block/mtd/by-name/linuxroot # rootfs in the nand partition named "linuxroot" | ||
Line 85: | Line 90: | ||
root=LABEL=linuxroot # rootfs in the partition with label "linuxroot", can be in uSD, U disk or USB hard drive. | root=LABEL=linuxroot # rootfs in the partition with label "linuxroot", can be in uSD, U disk or USB hard drive. | ||
− | + | == Next step == | |
Now you refer [[rock/flash the image| flash the image]] to flash the generated boot.img to "boot" [[rock/partitions | partition]] parameter to "parameter" partition of your radxa rock board. And download a [http://dl.radxa.com/rock/images/ubuntu/latest/ prebuilt rootfs] or [[rock/ubuntu |make your own rootfs]]. You will get linux system boot into ramdisk and then switch root to real rootfs. | Now you refer [[rock/flash the image| flash the image]] to flash the generated boot.img to "boot" [[rock/partitions | partition]] parameter to "parameter" partition of your radxa rock board. And download a [http://dl.radxa.com/rock/images/ubuntu/latest/ prebuilt rootfs] or [[rock/ubuntu |make your own rootfs]]. You will get linux system boot into ramdisk and then switch root to real rootfs. |
Revision as of 07:13, 9 November 2014
Contents
Requirement
- a radxa rock board (check your hardware revision)
- a desktop/laptop running Linux(64bit preferred)
- a micro usb cable, one side plugged in to the OTG port of radxa rock, the other side plugged in to the usb port on desktop/laptop
Prepare the build environment
Install the packages
Install packages for building kernel if you don't have them on your host.
sudo apt-get install build-essential lzop libncurses5-dev libssl-dev
Install the toolchain
Download ARM toolchain if you don't have Android 4.2.2/4.4.2 SDK on your host.
git clone -b android-4.4.2_r1 --depth 1 https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6 export ARCH=arm export CROSS_COMPILE=`pwd`/arm-eabi-4.6/bin/arm-eabi-
Get the source code
git clone -b radxa-stable-3.0 https://github.com/radxa/linux-rockchip.git
or download from this link and unzip it:
https://codeload.github.com/radxa/linux-rockchip/zip/radxa-stable-3.0
Build the kernel
cd linux-rockchip
if your Rock is pro(Mid 2014) or the new lite(Mid 2014), use radxa_rock_pro_linux_defconfig, check out hardware revision
make radxa_rock_pro_linux_defconfig
if your rock is full version(2013) or the old lite(2013), use radxa_rock_linux_defconfig, check out hardware revision
make radxa_rock_linux_defconfig
make -j 8 kernel.img
The kernel will be at kernel.img (image for kernel partition) and arch/arm/boot/Image (raw binary)
if you want LZO compressed kernel, specify zkernel.img
make -j 8 zkernel.img
The kernel will be at kernel.img (image for kernel partition) and arch/arm/boot/zImage (compressed binary)
Build the kernel modules
mkdir modules export INSTALL_MOD_PATH=./modules make modules && make modules_install cd ..
Now you have all the kernel modules in modules/lib/modules/3.0.36+/.
Generate the ramdisk
git clone https://github.com/radxa/initrd.git make -C initrd
Generate the boot.img
Install mkbootimg
git clone https://github.com/neo-technologies/rockchip-mkbootimg.git cd rockchip-mkbootimg make sudo make install cd ..
Make boot.img
mkbootimg --kernel linux-rockchip/arch/arm/boot/Image --ramdisk initrd.img -o boot.img
Done. Now we have the boot.img (image for boot/recovery partition) for RR.
Modify the parameter
The linux rootfs maybe in the different partition or media(nand or uSD card or USB disk), so you need to tell the kernel which is the right rootfs to mount. So change the root= command line in your parameter to the rootfs you want to mount. The examples are:
root=/dev/block/mtd/by-name/linuxroot # rootfs in the nand partition named "linuxroot" root=/dev/mmcblk0p1 # rootfs in the uSD card first partition root=/dev/sda1 # rootfs in the U disk or the USB hard drive first partition root=LABEL=linuxroot # rootfs in the partition with label "linuxroot", can be in uSD, U disk or USB hard drive.
Next step
Now you refer flash the image to flash the generated boot.img to "boot" partition parameter to "parameter" partition of your radxa rock board. And download a prebuilt rootfs or make your own rootfs. You will get linux system boot into ramdisk and then switch root to real rootfs.