Linux系统固件制作

制作Linux系统的固件

本篇文章将详细介绍如何制作Rock lite/pro上运行的Linux固件,你需要的,就是一台能上网的Ubuntu的电脑

1.编译环境

下载交叉编译工具链

64bit 主机

git clone -b kitkat-release --depth=1 https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6

或者这里下载http://dl.radxa.com/rock/source/x86_64_arm-eabi-4.6.zip

32bit 主机

git clone -b jb-release --depth=1 https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6

或者在这里下载http://dl.radxa.com/rock/source/x86_32_arm-eabi-4.6.zip

设置环境变量

export ARCH=arm
export CROSS_COMPILE=pwd/arm-eabi-4.6/bin/arm-eabi-

需要注意的是,上面CROSS_COMPILE是表示编译器的路经,make的时候,会从该路经寻找编译器,可能需要改变,因为也许你已经安装过該编译器,或者说你想使用你其他编译器,这时候,就需要特别注意该变量的值。

2.获取Linux内核源码

  • Kernel v3.0:
    git clone -b radxa-stable-3.0 https://github.com/radxa/linux-rockchip.git

3.编译内核

  • 进入内核根目录内
    cd linux-rockchip
  • 如果你的板子是2014版的pro或者lite,那么请使用radxa_rock_pro_linux_defconfig
    make radxa_rock_pro_linux_defconfig
  • 如果你的板子是2013版的pro或者lite,那么请使用radxa_rock_linux_defconfig
    make radxa_rock_linux_defconfig
    所有的配置文件都保存在/arch/arm/configs/目录下,你可以根据需要,修改配置文件,或者使用我们推荐的配置文件
  • 开始编译
    make -j8

生成的内核镜像文件位置是在 arch/arm/boot/Image。

4.编译内核模块

mkdir modules
export INSTALL_MOD_PATH=./modules
make modules && make modules_install
cd ..

现在所以的内核模块都在 modules/lib/modules/3.0.36+/文件夹中。待会儿在制作文件系统的时候需要用到。

5.制作booting.img镜像

  • 获取虚拟磁盘镜像
    git clone https://github.com/radxa/initrd.git
    cd initrd
    find . ! -path "./.git*" | cpio -H newc -ov > initrd.img
    此时,在当前文件夹下,就会生成一个initrd.img的文件

  • 获取打包工具mkbooting
    wget http://dl.radxa.com/rock/tools/linux/mkbootimg
    sudo apt-get install lib32stdc++6
    hmod +x mkbootimg

  • 进行打包,具体路径根据你的当前路径确定
    ./mkbootimg --kernel linux-rockchip/arch/arm/boot/Image --ramdisk initrd.img -o boot.img
    完成。现在已经生成了RR的“boot.img”文件了。

此时生成的“booting.img”镜像,只是一个内核和虚拟磁盘的打包,是无法真正启动一块板子的。

6.制作根文件系统rootfs

  • 首先选择下载一个根文件系统
    http://releases.linaro.org/

  • 然后申请一块和下载的文件系统大小略多的空间
    dd if=/dev/zero of=rootfs.img bs=1M count=256

  • 为这个文件系统分区命名为linuxroot
    mkfs.ext4 -F rootfs.img -L linuxroot
    (该名字被使用在内核开启时寻找文件系统使用,我们在使用upgrade_tool时,也可以只烧录文件系统,使用该分区名,如:
    upgrade_tool di linuxroot rootfs.img

  • 把这个分区文件挂载到/mnt下
    mount -o loop rootfs.img /mnt

  • 解压linaro的tar gz rootfs的所有内容到/mnt下,即不要带有解压包名字的文件夹。bin、tmp等文件夹应在PC的mnt文件夹下。

  • 然后取消挂载
    umount /mnt

这样,就制作好了一个Linux文件系统。

6.完成固件制作的最后一步

获取打包工具
git clone https://github.com/radxa/rockchip-pack-tools.git

文件夹下会得到一个package-file的文件
{
# NAME Relative path
#HWDEF HWDEF
package-file package-file

bootloader RK3188Loader(L)_V2.19.bin
parameter parameter
boot Linux/boot-linux.img
linuxroot Linux/rootfs.img
backup RESERVED
update-script update-script
recover-script recover-script
}

里面列出了一个完整的updata.img所需要的全部组件。

其中,加粗的部分,是我们刚刚制作好的booting.img,以及文件系统rootfs。其他部分在该文件夹下都已提供。你可以选择把package-file文件中的相应部分改成你制作的文件名字,或把你制作的文件名字改成和package-file中一致,且路径相同,然后执行 该目录下的一个脚本
./mkupdate.sh

即得到可烧录的updata.img镜像。

如果需要更详细更全面的信息,请登陆

官方网站     http://radxa.com
QQ讨论群     339567728
中文论坛     http://cn.radxa.com/forum.php

另外,本手册所使用的所有源码、固件、工具,都可以登陆以下地址下载
国外服务器   http://dl.radxa.com/
百度云       http://pan.baidu.com/share/home?uk=3108273493#category/type=0

手册内容经小编实际操作,均可正常使用,但因系统以及整理文档等原因
若出现错误,请谅解,并使用以下邮箱联系我们  kevin@radxa.com 

			Radxa团队
 			2015年7月
Loading Disqus comments...
Table of Contents