RK3328SD卡统一固件制作 本文适用于firefly 的RK3328 开发板。我的操作系统是ubuntu16.04x64 和win7x64 。建议使用ubuntu14.04 x64 ,ubuntu16.04 在设置开发环境时,部分包找不到,需要自行添加[url=]更新源[/url][M1] 1.设置开发环境
$sudo apt-get installgit repo gnupg flex bison gperf build-essential zip tar curl libc6-devlibncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib cmake tofrodospython-markdown libxml2-utils xsltproc zlib1g-dev:i386 lzop qemu-user-static $sudoln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so 2.安装ARM交叉编译工具链和编译内核相关的软件包 $ sudo apt-get install gcc-5-aarch64-linux-gnu gcc-5-arm-linux-gnueabihfgcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu device-tree-compiler lzoplibncurses5-dev libssl1.0.0 libssl-dev 3.解压所需文件 $ ./unzip.sh 4.编译kernel和uboot $ ./build/mk-kernel.sh roc-rk3328-cc 编译后生成boot.img 、Image 、rk3328-roc-cc.dtb $ ./build/mk-uboot.sh roc-rk3328-cc 编译后生成 idbloader.img、trust.img、uboot.img、rk3328_loader_ddr786_v1.06.243.bin 现在,kernel 和uboot 所需的文件都会自动拷贝到out 目录下,它将在步骤6 中使用。
5.制作ubuntu16.04的rootfs
1> 首先,请下载ubuntu 的最低内核
$ wget –c http://cdimage.ubuntu.com/ubuntu ... 4-base-arm64.tar.gz
2> 解压缩
$ mkdir linux-rootfs
$ sudo tar -xpf ubuntu-base-16.04.4-base-arm64.tar.gz-C linux-rootfs
3> 安装模拟器运行根文件系统
$ sudo apt-get install qemu-user-static
$ sudo cp/usr/bin/qemu-aarch64-static linux-rootfs/usr/bin
4> 将本地主机的DNS 配置复制到rootfs
$ sudo cp -b /etc/resolv.conflinux-rootfs/etc/resolv.conf 5>添加额外的端口ubuntu的来源,把linux-rootfs/etc/apt/sources.list备份
修改sources.list内容: deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverserestricted universe
6>使用安装脚本文件来安装核心文件系统。请参阅文件ch-mount.sh,并添加可执行权限。
$ sudo chmod a+x ch-mount.sh
7>挂载rootfs,注意不要以管理员身份执行脚本,否则会发生错误。
$ ./ch-mount.sh -m linux-rootfs/
现在,您将以root身份进入ubuntu16.04rootfs,并运行模拟bash,您可以安装任何要整合的软件包。 a) 先更新下载源 #apt-get update b) 解决perl的警告和中文乱码 # apt-getinstall language-pack-zh-hans #locale-gen en_US.UTF-8 c) 安装网络工具以使ifconfig命令正常工作。 #apt-get install net-tools inetutils-ping d) 安装一些基本工具 #apt-get install vim openssh-server gdisk parted curlbzip2 libasound2-dev e) 启用自动连接网络 #echo auto eth0> /etc/network/interfaces.d/eth0 #echo iface eth0 inet dhcp >>/etc/network/interfaces.d/eth0 f) 或者静态IP #vi /etc/network/interfaces.d/eth0 添加内容: auto eth0
iface eth0 inet static
address 192.168.0.122
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameserver 114.114.114.114 g) 设置用户名和密码登录 #useradd -s'/bin/bash' -m -G adm,sudo gtel #passwd gtel #passwd root h) 修改ssh-server的root登录 #vi etc/ssh/sshd_config PermitRootLogin prohibit-password改为yes #PasswordAuthenticationyes去掉# i) 修改串口调试root登录 #vi lib/systemd/system/serial-getty@.service 修改为ExecStart=-/sbin/agetty--keep-baud -a root 115200,38400,9600 %I $TERM j) 清除下载的软件包 #apt-get autoclean #apt-get clean k) 添加启动脚本 #vi /etc/rc.local 在exit 0前添加/usr/local/bin/first-boot-recovery.sh启动脚本,给予可执行权限,用来扩容根目录,记得在根目录下新建一个firstboot文件 l) 退出模拟bash #exit 文件系统的基本安装已完成,可以根据自己需要进行客制化,下面是制作完成后烧入到板子上可能出现的问题 8>在rootfs中安装后,请卸载rootfs:
$./ch- mount.sh -u linux-rootfs/ 9>制作文件系统镜像 $ ./mk-image.sh 10>现在,rootfs完成了。linux-rootfs.img将在步骤6中使用。
6.制作一个统一固件。 $ ./build/mk-image.sh-c rk3328 -t system -r out/linux-rootfs.img 7. 烧写到SD卡。 Linux:
将SD卡插入到电脑中并格式化,假设 /dev/sdb 为 SD卡设备,运行下面指令,将以上生成的统一固件 system.img 写入到 SD 卡中: $ ./build/flash_tool.sh -c rk3328 -d /dev/sdb -p system -i out/system.img windows: 将SD卡插入到电脑中并格式化,使用Win32DiskImage工具将统一固件system.img烧写到SD卡中
[M1]# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64(20160420.1)]/ xenial main restricted
|