Firefly开源社区

标题: RK3288使用kernel4.4+ubuntu16.04,纯linux下升级包制作 [打印本页]

作者: luwanjia    时间: 2017-6-21 16:21
标题: RK3288使用kernel4.4+ubuntu16.04,纯linux下升级包制作
本帖最后由 luwanjia 于 2018-10-24 21:50 编辑

感谢各位亲的厚爱,很抱歉,本人从今年一月份就没有从事rk3288的开发了,所以本帖一直没有更新维护,但是之前开发的资料和源码一直保留在Github上面。
相关内容请直接去Github上获取,链接:https://github.com/luwanjia/rockchip-dev
rockchip-dev/RK3288_Technical_Reference_Manual.md 是本人自己总结和验证过的手册,大家可以参考。
目录rockchip-dev/linux-rootfs/下面的01~07是完整的步骤,初学者可以一步一步的来。


This manual is for the development of linux on RK3288 board. My operating system is debian8.7 x64.

1. Set develop environment
    We need arm-eabi-gcc to compile the kernel, arm-eabi-4.6 and arm-eabi-4.8 are available in AndroidSDK_5.1, you can find it in path "AndroidSDK_5.1/prebuilts/gcc/linux-x86/arm".
    Here I use arm-eabi-4.8, you can download it directly here. (链接: https://pan.baidu.com/s/1nvSfSPr 密码: 4ssx)

2. Build kernel
    1> Download source code of kernel4.4 for linux.
        $git clone https://github.com/luwanjia/linux-kernel

    2> Change to right branch
        $git checkout firefly

    3> Config whith right configure file.
        $export ARCH=arm
        $export CROSS_COMPILE=<path to arm-eabi-gcc root dir>/bin/arm-eabi-
        $make rockchip_linux_defconfig
        $make rk3288-firefly.img

    4> If there is no errors, the last print log is:
          OBJCOPY arch/arm/boot/zImage
          Kernel: arch/arm/boot/zImage is ready
          Image:  kernel.img is ready
        Pack to resource.img successed!
          Image:  resource.img (with rk3288-firefly.dtb logo.bmp) is ready

3. Build initrd
    1> Download source code
        $git clone https://github.com/TeeFirefly/initrd.git

    2> Change to branch for-kernel_4.4
        $git checkout for-kernel_4.4

    3> Build in parent directory of initrd root directory.
        $make -C initrd

    4> If there is no errors, initrd.img will be generated.

4. Pack zImage and initrd.img into the linux-root.img
    $mkbootimg --kernel kernel_4.4/arch/arm/boot/zImage --ramdisk initrd.img --second kernel_4.4/resource.img -o linux-boot.img

  Now, linux-boot.img is OK, it will be used in step6.

5. Make the rootfs of ubuntu16.04
    1> First, please download the minimum core of ubuntu
        $wget -c http://cdimage.ubuntu.com/ubuntu ... 4-core-armhf.tar.gz

    2> unpack
        $mkdir linux-rootfs
        $sudo tar -xpf ubuntu-base-16.04-core-armhf.tar.gz -C linux-rootfs

    3> Install the simulator to run the root file system
        $sudo apt-get install qemu-user-static
        $sudo cp /usr/bin/qemu-arm-static linux-rootfs/usr/bin/

    4> Copy the local host DNS configure to rootfs
        $sudo cp -b /etc/resolv.conf  linux-rootfs/etc/resolv.conf

    5> Add additional sources of port ubuntu, append follow strings to linux-rootfs/etc/apt/sources.list as administrator
        deb http://ports.ubuntu.com/ubuntu-ports/ xenial main universe
        deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main universe

    6> Use a mount script file to mount the core file system. Please see file ch-mount.sh, and add executable permissions.
        ch-mount.sh Link: ch-mount.sh.tar.gz (473 Bytes, 下载次数: 205)

        $sudo chmod +x ch-mount.sh

    7> Mount rootfs, Notice that do not excute the script as administrator, otherwise errors will occur.
        $./ch-mount.sh -m linux-rootfs

        Now, you will enter the simulate bash as root, you can install any packages you want to integrate.
        a) Install network tools to make ifconfig command work.
            #apt-get install net-tools
        b) #apt-get install vim openssh-server
        c) #apt-get install ubuntu-session xubuntu-desktop
            Please wait to be done.
            Start dbus server to solve the error:
                Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
            #/etc/init.d/dbus start
        d) Enable auto connect to network
            #echo auto eth0 > /etc/network/interfaces.d/eth0
            #echo iface eth0 inet dhcp >> /etc/network/interfaces.d/eth0
        e) Setup startup desktop
            #update-alternatives --config x-session-manager
            Selection:
                desktop | x-session
               ---------------------
                xubuntu | startxfce4
               ---------------------     
                lubuntu | startlxde
        f) Set default login screen
            #dpkg-reconfigure lightdm
        g) Set the user and password to login
            #useradd -s '/bin/bash' -m -G adm,sudo ubuntu
            #passwd ubuntu
            #passwd root
        h) Exit from simulate bash
            #exit

    8> After your installations in rootfs, please unmount the rootfs:
        $./ch-mount.sh -u linux-rootfs

    9> Create an empty image disk to save rootfs
        $dd if=/dev/zero of=linux-rootfs.img bs=1M count=4096
        $sudo mkfs.ext4 -F -L linuxroot linux-rootfs.img

    10> Mount the image disk, and copy the rootfs to it
        $mkdir mnt
        $sudo mount linux-rootfs.img mnt
        $sudo cp -rfp linux-rootfs/* mnt/

    11> Unmount the image disk and resize it.
        $sudo umount mnt
        $/sbin/e2fsck -p -f linux-rootfs.img
        $/sbin/resize2fs -M linux-rootfs.img

    12> Now, rootfs is done. linux-rootfs.img will be used in step6.

6. Make one key update package.
    1> We need linux-boot.img and linux-rootfs.img created just now. And the tools to flash them into board.
    In AndroidSDK_5.1, the tools is avaiable:
    AndroidSDK_5.1/RKTools/linux/Linux_Upgrade_Tool_v1.2/rockdev

    2> Copy rockdev to somewhere as you want. And copy linux-rootfs.img and linux-rootfs.img to rockdev/Image directory.

    3> Do some modifications for parameter and package-file, and run mkupdate.sh
        Maybe you don't know how to modify parameter and package-file, it does't matter, you can unpack an official package, and you will get these two files.
   
        a) Unpack an official package, I use Firefly-rk3288_Ubuntu_1604_2016_10181203_Beta.img as official package.
            $mv Firefly-rk3288_Ubuntu_1604_2016_10181203_Beta.img update.img
            $./unpack.sh
            
            After that, you will get all the files you need.

        b) Make update.img
            $./mkupdate.sh

        Notice that, you should add the excutable permissions to all script files.

    4> Now, update.img will generated here.

7. Flash update.img to board.
    1> Press the recovery button and reset button at the same time.

    2> Free the reset button and hold on the recovery button for more than 2 seconds.

    3> Now, the board entry the flash model, and use follow command to flash:
            $sudo upgrade_tool uf update.img

    4> Please wait, after flash success, the board will reboot automatically.

作者: ctb2016    时间: 2017-6-22 10:12
好帖,要是早几天发就更好了,那样我就能早点走通了。
作者: luwanjia    时间: 2017-6-22 16:54
ctb2016 发表于 2017-6-22 10:12
好帖,要是早几天发就更好了,那样我就能早点走通了。

我也没有搞多久,深知其中的无奈,希望能帮到你。
作者: peak9527    时间: 2017-6-23 14:25
luwanjia 发表于 2017-6-22 16:54
我也没有搞多久,深知其中的无奈,希望能帮到你。

绝世好贴,小白的福音,楼主辛苦了,
作者: evanlitw    时间: 2017-6-26 14:14
請問 RK3288 Reload 能用嗎?
謝謝

作者: luwanjia    时间: 2017-6-26 19:14
evanlitw 发表于 2017-6-26 14:14
請問 RK3288 Reload 能用嗎?
謝謝

reload开发板我没有,不清楚是否能用,但我想道理都是一样,你可以参考。
作者: evanlitw    时间: 2017-6-27 08:15
請問一下 unpack.sh 這在哪裡呢?
謝謝
作者: sembly    时间: 2017-6-27 09:23
evanlitw 发表于 2017-6-27 08:15
請問一下 unpack.sh 這在哪裡呢?
謝謝

most of the tools can be found on Github
https://github.com/rock64-androi ... ck_Firmware/rockdev
and you can download the fold with this website:
https://minhaskamal.github.io/DownGit/#/home
作者: evanlitw    时间: 2017-6-28 12:54
謝謝
另外有個問題
我要燒寫update.img的時候
出現
Check Chip Fail
這是什麼原因呢?
我是使用RK3288 reload
作者: kgp00213    时间: 2017-7-25 13:48
本站最好的帖子,实用性比超牛头,建议版主加精
作者: kgp00213    时间: 2017-7-25 13:49
本帖最后由 kgp00213 于 2017-7-28 21:07 编辑

-----原贴已经删除------
作者: luwanjia    时间: 2017-7-28 14:42
kgp00213 发表于 2017-7-25 13:48
本站最好的帖子,实用性比超牛头,建议版主加精

多谢鼓励!
作者: kgp00213    时间: 2017-7-28 21:04
经确认这一步没什么用

    5> Make modules
        $make modules
        $mkdir modules_install
        $make INSTALL_MOD_PATH=./modules_install modules_install
作者: kgp00213    时间: 2017-7-28 21:06
luwanjia 发表于 2017-7-28 14:42
多谢鼓励!

这步没用,
    5> Make modules
        $make modules
        $mkdir modules_install
        $make INSTALL_MOD_PATH=./modules_install modules_install
麻烦有空编辑一下
感谢!
作者: luwanjia    时间: 2017-7-28 21:21
kgp00213 发表于 2017-7-28 21:06
这步没用,
    5> Make modules
        $make modules

已删
作者: kgp00213    时间: 2017-7-28 21:23
本帖最后由 kgp00213 于 2017-7-28 21:36 编辑
luwanjia 发表于 2017-7-28 21:21
已删

速度好快

作者: kgp00213    时间: 2017-7-28 21:24
本帖最后由 kgp00213 于 2017-7-28 21:35 编辑

------------

作者: 可能已经注册    时间: 2017-8-9 11:49
麻烦问一下楼主,这个kernel是打过实时补丁的吗?
作者: 可能已经注册    时间: 2017-8-9 11:56
楼主你好,这个kernel 4.4.55有没有打实时补丁呢?
作者: luwanjia    时间: 2017-8-12 13:58
可能已经注册 发表于 2017-8-9 11:56
楼主你好,这个kernel 4.4.55有没有打实时补丁呢?

什么实时补丁?不清楚诶~
作者: xi0325    时间: 2017-8-19 14:05
你好,git clone https://gitlab.com/TrrFirefly/linux-kernel.git之后提示要输入username和passward,请问下username和passward分别是什么?
作者: 可能已经注册    时间: 2017-8-21 13:23
luwanjia 发表于 2017-8-12 13:58
什么实时补丁?不清楚诶~

哦,linux是非实时性的,必须打实时补丁才有实时性。
作者: luwanjia    时间: 2017-8-21 21:50
xi0325 发表于 2017-8-19 14:05
你好,git clone https://gitlab.com/TrrFirefly/linux-kernel.git之后提示要输入username和passward,请问 ...

不需要啊,我没有遇到这个问题
作者: luwanjia    时间: 2017-8-21 21:51
可能已经注册 发表于 2017-8-21 13:23
哦,linux是非实时性的,必须打实时补丁才有实时性。

就是保持最新对吧?你要是有的话给我一份
作者: 可能已经注册    时间: 2017-8-22 13:41
luwanjia 发表于 2017-8-21 21:51
就是保持最新对吧?你要是有的话给我一份

不是,你去了解一下linux的实时性吧,看来你不知道linux实时性怎么回事。跟最新没有什么关系。
作者: luwanjia    时间: 2017-8-24 11:40
可能已经注册 发表于 2017-8-22 13:41
不是,你去了解一下linux的实时性吧,看来你不知道linux实时性怎么回事。跟最新没有什么关系。

不知道,我去了解一下,谢谢~
作者: 可能已经注册    时间: 2017-9-5 17:34
楼主你好,你的kernel4.4源码是从哪里搞到的?是firefly公司定制的这个kernel吗?
作者: luwanjia    时间: 2017-9-6 11:23
可能已经注册 发表于 2017-9-5 17:34
楼主你好,你的kernel4.4源码是从哪里搞到的?是firefly公司定制的这个kernel吗?

https://gitlab.com/TeeFirefly/linux-kernel.git 这个应该是firefly的源码吧?
作者: luwanjia    时间: 2017-9-6 11:24
本帖最后由 luwanjia 于 2017-9-6 11:33 编辑

当前kernel4.4不是最新的,好像也没有人维护,目前存在音频无法输出问题,蓝牙无法使用问题等等。最新内核应该是:https://github.com/rockchip-linux/kernel.git
此内核源码能够编译成功,但是不支持HDMI和VGA输出,需要自己修改dts,关键是还要兼容arm64,dts修改没搞成功。

作者: 可能已经注册    时间: 2017-9-6 13:54
luwanjia 发表于 2017-9-6 11:24
当前kernel4.4不是最新的,好像也没有人维护,目前存在音频无法输出问题,蓝牙无法使用问题等等。最新内核 ...

好的,谢谢楼主!
作者: 可能已经注册    时间: 2017-9-7 10:03
luwanjia 发表于 2017-9-6 11:24
当前kernel4.4不是最新的,好像也没有人维护,目前存在音频无法输出问题,蓝牙无法使用问题等等。最新内核 ...

确定最新的版本4.4.77能用吗?编译过去了,但是kernel烧录进去跑步起来啊。需要修改的地方这么多吗?
作者: luwanjia    时间: 2017-9-7 10:12
可能已经注册 发表于 2017-9-7 10:03
确定最新的版本4.4.77能用吗?编译过去了,但是kernel烧录进去跑步起来啊。需要修改的地方这么多吗?

不能用,一直在循环刷log,桌面无法启动。如果你能把VGA或者HDMI配置好的话,猜测可用。
作者: 可能已经注册    时间: 2017-9-7 10:23
luwanjia 发表于 2017-9-7 10:12
不能用,一直在循环刷log,桌面无法启动。如果你能把VGA或者HDMI配置好的话,猜测可用。

我文件系统做的是server版的,没有桌面,我用不到HDMI和VGA啊。
作者: luwanjia    时间: 2017-9-7 10:38
可能已经注册 发表于 2017-9-7 10:23
我文件系统做的是server版的,没有桌面,我用不到HDMI和VGA啊。

一直刷log的好像是dp,你看能不能屏蔽掉,搞定了求分享
作者: 可能已经注册    时间: 2017-9-7 10:47
luwanjia 发表于 2017-9-7 10:38
一直刷log的好像是dp,你看能不能屏蔽掉,搞定了求分享

哦,我再看看吧。
作者: www378660084    时间: 2017-10-9 14:20
非常不错的贴子,感谢分享
作者: www378660084    时间: 2017-10-9 15:30
您好,请问出现下面的log,然后卡主是什么问题?
[  OK  ] Started /etc/rc.local Compatibility.
[  OK  ] Started Permit User Sessions.
[  OK  ] Started Getty on tty4.
[  OK  ] Started Getty on tty3.
[  OK  ] Started Getty on tty2.
[  OK  ] Started Getty on tty1.
[  OK  ] Started LSB: Set the CPU Frequency Scaling governor to "ondemand".
[  OK  ] Started getty on tty2-tty6 if dbus and logind are not available.
[  OK  ] Started Getty on tty6.
[  OK  ] Started Getty on tty5.
[ TIME ] Timed out waiting for device dev-ttyS2.device.
[DEPEND] Dependency failed for Serial Getty on ttyS2.
[  OK  ] Reached target Login Prompts.
[  OK  ] Reached target Multi-User System.
[  OK  ] Reached target Graphical Interface.
         Starting Update UTMP about System Runlevel Changes...
[  OK  ] Started Update UTMP about System Runlevel Changes.
作者: luwanjia    时间: 2017-10-9 17:29
www378660084 发表于 2017-10-9 15:30
您好,请问出现下面的log,然后卡主是什么问题?
[  OK  ] Started /etc/rc.local Compatibility.
[  OK  ...

不知道啊,没有碰到过
作者: www378660084    时间: 2017-10-10 10:44
luwanjia 发表于 2017-10-9 17:29
不知道啊,没有碰到过

我按这个链接配置一下,好了
http://developer.t-firefly.com/f ... hlight=%B4%AE%BF%DA
作者: luwanjia    时间: 2017-10-10 15:18
www378660084 发表于 2017-10-10 10:44
我按这个链接配置一下,好了
http://developer.t-firefly.com/forum.php?mod=viewthread&tid=4903&highl ...

Good!!!
作者: BRAD    时间: 2018-4-30 20:17
Thanks so much !
作者: 风一样的男子    时间: 2018-6-7 09:05
您好,我这边打包的boot.img跟正常的boot.img不太一样,解压之后,里面lib目录下眠下面没有Modules,
烧写进去启动之后包下面的错误:
GetParam
Load FDT from boot image.
no key node
No pmic detect.
can't find dts node for pwm0
Can't find dts node for fuel guage cw201x
SecureBootEn = 0, SecureBootLock = 0

#Boot ver: 2018-06-06#2.30
empty serial no.
checkKey
vbus = 1
no fuel gauge found
no fuel gauge found
read logo on state from dts [0]
no fuel gauge found
Hit any key to stop autoboot:  0
boot or recovery image sha mismatch!
Unable to boot:boot
try to start recovery
'recovery' does not seem to be a partition nor an address
Unable to boot:recovery
try to start backup
ERROR: [rk_load_image_from_storage]: bootrk: bad boot or kernel image
Unable to boot:backup
try to start rockusb

不知道是什么原因?
作者: itktfim123    时间: 2018-6-21 15:20
好贴,楼主好人
作者: 15920514550    时间: 2018-7-11 20:15
ap6335 wifi有人测试过能用吗?
我这里wifi驱动都加载成功了,就是打不开,有人遇到吗
作者: luwanjia    时间: 2018-7-16 20:47
大家好,随着ubuntu的官方不断更新,可能存在一些新的问题,我已经很久没有做rk3288的工作了,相关问题可能没法帮助到大家,请相互多交流自行解决咯,抱歉!
作者: →_→    时间: 2018-7-19 13:41
Dauker 发表于 2018-7-18 18:32
AndroidSDK_5.1/RKTools 请问这个哪里可以找到呢?

你下一个完整的AndroidSDK_5.1,教程http://www.t-firefly.com/doc/product/info/id/40.html
作者: →_→    时间: 2018-7-19 13:41
Dauker 发表于 2018-7-18 18:32
AndroidSDK_5.1/RKTools 请问这个哪里可以找到呢?

你下一个完整的AndroidSDK_5.1,教程
http://www.t-firefly.com/doc/product/info/id/40.html
作者: cnrobot    时间: 2018-7-20 14:53
Dauker 发表于 2018-7-8 20:31
制作根文件系统安装xbuntu-desktop时如果提示不能locate,只要把sources.list文件替换成附件中的sources.li ...

能说一体下具体的过程吗,遇到了同样的问题
作者: cnrobot    时间: 2018-7-20 15:17
Dauker 发表于 2018-7-8 20:31
制作根文件系统安装xbuntu-desktop时如果提示不能locate,只要把sources.list文件替换成附件中的sources.li ...

你好,我遇到同样的问题了,能具体说明一下路径怎么替代吗
作者: cnrobot    时间: 2018-7-21 09:11
本帖最后由 cnrobot 于 2018-7-21 09:20 编辑
Dauker 发表于 2018-7-20 18:33
你下载我上传的那个附件,然后复制附件的内容,再sudo gedit linux-rootfs/etc/apt/sources.list,粘贴上 ...

你好,有针对于Ubuntu14.04的教程吗,我用的Ubuntu14.04的操作系统
作者: cnrobot    时间: 2018-7-23 14:23
Dauker 发表于 2018-7-21 13:52
你指的是制作Ubuntu14.04的镜像吗?那我不知道了,应该要自己找合适的软件源了,sources.list里面记录的 ...

你好,我用Ubuntu14.04做成功了文件系统,可是为什么用命令df -h发现不没有用到全部的emmc。开发板有32G。可是显示就用了几G,请问怎么扩容呢
作者: cnrobot    时间: 2018-7-26 15:30
Dauker 发表于 2018-7-25 23:12
这个问题不太清楚。在使用unpack.sh获得package-file的时候,你使用了哪一个镜像?

你好,这个问题已经解决了,您知道wifi怎么配置才能应用吗
作者: cnrobot    时间: 2018-7-31 15:09
Dauker 发表于 2018-7-26 19:17
我还没有做成功,所以wifi的问题我还不知道如何解决。我在使用unpack.sh的时候遇到了问题,我是想请教一 ...

你好,请问怎么配置,才能开机不输入用户名和用户密码直接进入/home/firefly中呢,自制的ubuntu16.04的文件系统
作者: Zac    时间: 2018-10-16 08:51
好帖~学习了,只是有些附件下载不了是什么鬼啊
作者: luipingwei    时间: 2018-10-22 10:23
好帖,要是有更新就更好了
作者: williamzhang    时间: 2018-10-22 20:48
感谢楼主,这种step by step的帖子,最适合我们这种初级的入门者了
作者: luwanjia    时间: 2018-10-24 21:46
cnrobot 发表于 2018-7-31 15:09
你好,请问怎么配置,才能开机不输入用户名和用户密码直接进入/home/firefly中呢,自制的ubuntu16.04的文 ...

https://github.com/luwanjia/rock ... aster/linux-rootfs/
参考“03_配置开发板开机自动登录.txt”里面的说明
作者: new_nc    时间: 2018-11-5 01:07
是不是回复才能下载
作者: yangyuliu    时间: 2018-11-23 09:50
MARK
作者: 诗人    时间: 2018-12-4 16:11
z怎样才能不做吃瓜群众
作者: wujj@qiyangtech    时间: 2019-4-17 10:16
按步骤测试之后,发现下载xubuntu之后文件系统很大,需要3G,还有就是启动后没有桌面,有人遇到过吗?
作者: 酒#一郎    时间: 2019-4-24 10:05
按照内核编译的文档编译了楼主提供的内核,烧写时用的uboot是 RK3288UbootLoader_V2.30.10.bin ,parameter的地址配置也是对的。烧写进去后,系统启动停在starting kernel ,,,,   ,是不是对uboot的版本也有要求啊。楼主的内核版本是 linux4.4 ,我换用linux3.10的内核就可以启动
作者: pacex    时间: 2019-9-25 15:33
按照教程来了一遍,下到了RK3288的板子,其它都正常,自带的AP6181wifi不能连接,是不是这个板子自带的AP6181wifi驱动需要自己单独装吗
作者: asa    时间: 2020-4-15 10:23
这个学习下
作者: littleIce    时间: 2020-6-10 23:14
请问这个文件系统是什么原理呀,以前只弄过飞思卡尔的imx系列arm板子,那个文件系统都是第三方开源的软件交叉编译出来的,这个直接整了一个ubuntu作为开发板的文件系统,这个ubuntu是交叉编译的吗,第一次接触RK3288,不知道从哪里下手啊。
作者: flyming    时间: 2020-6-13 09:57
好的。我去试下。




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1