九鼎创展论坛中文版English
登录 | 立即注册 设为首页收藏本站 切换到宽版
查看: 482|回复: 1

x3288开发板ubuntu16.04固件制作

[复制链接]
发表于 2018-5-8 15:58:40 | 显示全部楼层 |阅读模式
本手册适用于九鼎的RK3288开发板。我的操作系统是ubuntu14.04 x64win7x64

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.zImageresource.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.04rootfs
    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 http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
       deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
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使用文档进行烧入操作



回复

使用道具 举报

 楼主| 发表于 2018-5-8 16:02:30 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳市九鼎创展科技官方论坛 ( 粤ICP备11028681号-2  

GMT+8, 2018-8-15 01:20 , Processed in 0.178373 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表