九鼎创展论坛
标题: x3288开发板ubuntu16.04固件制作 [打印本页]
作者: tzf 时间: 2018-5-8 15:58
标题: x3288开发板ubuntu16.04固件制作
本手册适用于九鼎的RK3288开发板。我的操作系统是ubuntu14.04 x64和win7x64。
1.设置开发环境
我们需要arm-eabi-gcc编译内核,解压网盘中的x3288v4的源码包,里面有编译的交叉编译器和Linux3.10源码。主要安装mkbooting工具。
2.安装mkbooting
$cd rockchip-mkbootimg
$make && sudo make install
3.编译内核
源码包中含有编译内核的脚本mk
$./mk –us
如果没有错误,会生成zImage、kernel.img、resource.img,至于脚本生成的其他东西不用管,我们只需要zImage和resource.img自行阅读脚本。
4.
构建initrd
1>
下载源代码
$ git clone
https://github.com/TeeFirefly/initrd.git
2>
更改为分支for- kernel_4.4
$ git checkout for-kernel_4.4
3>
建立在initrd
根目录的父目录下。
$ make -C initrd
4>
如果没有错误,将生成initrd.img
。
4.
将zImage
、resource.img
、initrd.img
包装到linux-root.img
中
$ mkbootimg --kernel kernel/arch/arm/boot/zImage --ramdisk initrd.img --second kernel/resource.img -o linux -boot.img
现在,linux-boot.img
没问题,它将在步骤6
中使用。
5.
制作ubuntu16.04
的rootfs
1>
首先,请下载ubuntu
的最低内核
$ wget –c http://cdimage.ubuntu.com/ubuntu ... 4-core-armhf.tar.gz
2>
解压缩
$ mkdir linux-rootfs
$ sudo tar -xpf ubuntu-base -16.04-core-armhf.tar.gz -C linux-rootfs
3>
安装模拟器运行根文件系统
$ sudo apt-get install qemu-user-static
$ sudo cp / usr / bin / qemu-arm-static linux-rootfs /usr/bin/
4>
将本地主机的DNS
配置复制到rootfs
$ sudo cp -b /etc/resolv.conf linux-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 multiverse restricted universe
6>使用安装脚本文件来安装核心文件系统。请参阅文件ch-mount.sh,并添加可执行权限。
$ sudo chmod a+x ch-mount.sh
7>挂载rootfs,注意不要以管理员身份执行脚本,否则会发生错误。
$ ./ch-mount.sh -m linux-rootfs/
现在,您将以root身份进入ubuntu16.04 rootfs,并运行模拟bash,您可以安装任何要整合的软件包。先apt-get update更新下载源。
a) 由于PC端的ubuntu的字符是zh_CN.UTF-8,所以先安装中文编码
#locale-gen zh_CN.UTF-8
b) 安装网络工具以使ifconfig命令正常工作。
#apt-get install net-tools ping
c) 安装一些基本工具
#apt-get install vim openssh-server
d) 安装桌面环境
#apt-get install ubuntu-session lubuntu-desktop
e) 启用自动连接网络
#echo auto eth0> /etc/network/interfaces.d/eth0
#echo iface eth0 inet dhcp >> /etc/network/interfaces.d/eth0
f) 安装启动桌面
#update-alternatives --config x-session-manager
选择:
desktop | x-session
---------------------
xubuntu | startxfce4
---------------------
lubuntu | startlxde
g) 设置默认登录屏幕
#dpkg-reconfigure lightdm
h) 设置用户名和密码登录
#useradd -s '/bin/bash' -m -G adm,sudo Ubuntu
#passwd ubuntu
#passwd root
i) 退出模拟bash
#exit
文件系统的基本安装已完成,可以根据自己需要进行客制化,下面是制作完成后烧入到板子上可能出现的问题
a) 系统启动不了
Ubuntu16.04开机启动脚本有所改变,由systemd 来控制,所以现在要激活一个服务:
#vim /lib/systemd/system/rc-local.service
在文件末尾加上:
[Install]
WantedBy=multi-user.target
表示开机会启动。
#ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
b) ttyS2启动失败
ubuntu16.04是用systemd的,可以这样做:
#cp /lib/systemd/system/serial-getty@.service /lib/systemd/system/serial-getty@ttyS2.service
#ln -s /lib/systemd/system/serial-getty@ttyS2.service /etc/systemd/system/getty.target.wants/
再修改/lib/systemd/system/serial-getty@ttyS2.service把里面的“dev-%i.device”改为“%i”
c) emmc内存未分配
#vi /etc/rc.local
在exit 0前添加/usr/local/bin/mtd-by-name.sh、/usr/local/bin/first-boot-recovery.sh两个启动脚本,给予可执行权限,用来挂载emmc,
8>在rootfs中安装后,请卸载rootfs:
$./ch- mount.sh -u linux-rootfs/
9>创建一个空映像磁盘来保存rootfs
$ dd if = / dev / zero of = linux-rootfs.img bs = 1M count = 4096
$ sudo mkfs.ext4 -F -L linuxroot linux -rootfs.img
10>挂载镜像磁盘,并将rootfs复制到它
$ mkdir mnt
$ sudo mount linux-rootfs.img mnt
$ sudo cp -rfp linux-rootfs / * mnt /
11>卸载映像磁盘并调整其大小。
$ sudo umount mnt
$ / sbin / e2fsck -p -f linux-rootfs.img
$ / sbin / resize2fs -M linux-rootfs.img
12>现在,rootfs完成了。linux-rootfs.img将在步骤6中使用。
6.制作一个更新包。(以下操作都是在win7上进行)
1>我们需要刚刚创建的linux-boot.img和linux-rootfs.img。以及将它们烧入到电路板上的工具RKTools:
https://pan.baidu.com/s/1157KL6vQ9GopGbififYJKQ 8ur1
2>将linux-boot.img和linux-rootfs.img复制到rockdev / Image目录。
3>对Image目录下的package-file和parameter文件进行一些修改(我已经修改过了,不用修改了),然后运行mkupdate
4>现在,update.img将在rockdev目录下生成。
7. Flash update.img到电路板。
按照RKTools2使用文档进行烧入操作
作者: tzf 时间: 2018-5-8 16:02
主要参考
http://dev.t-firefly.com/thread-12393-1-1.html
http://dev.t-firefly.com/thread-11405-1-34.html
作者: ICE_YI 时间: 2019-1-29 15:30
固件做好后 烧写到开发板,开发板点不亮,.没有LOGO 没有界面
欢迎光临 九鼎创展论坛 (http://bbs.9tripod.com/) |
Powered by Discuz! X3.2 |