gyfkyu 发表于 2016-7-8 19:43:30

重新编译内核,打包成linux-boot.img烧写进去后无法启动

hi,
   我需要在rk3288上跑Ubuntu,烧写了Firefly-RK3288_Ubuntu14.04_201512031755.img固件,可以正常工作。
   后来我拿官方的android4.4 sdk自带的内核源码(完全没做任何改动),编译出zImage。
   用上面的ubuntu系统固件,根据手册说明解压出linux-boot.img,根据说明,这个linux-boot.img应该包含了内核镜像和ramdisk文件系统,我再把linux-boot.img解压出来,得到linux-boot.img-zImage和linux-boot.img-ramdisk.gz。我用自己编译的zImage替换掉linux-boot.img-zImage,重新打包生成linux-boot.img,再烧写进板子,发觉内核无法启动,一直停留在
Starting kernel ...
假如我烧写android固件Firefly-RK3288_Android4.4_201602251453.img,并用同一份内核代码编译出来的kernel,img替换掉这个固件的kernel,系统是可以正常启动的。

我用来解压和打包linux-boot.img的命令为
unpackbootimg -i linux-boot.img
mkbootimg --kernel linux-boot.img-zImage --ramdisk linux-boot.img-ramdisk.gz -o linux-boot.img


请问为何会出现这样的问题,有人遇见过的吗?

linjc 发表于 2016-7-9 09:34:24

可以试一下按wiki里写的编译打包:
http://wiki.t-firefly.com/index.php/Firefly-RK3288/Build_kernel#.E5.88.9B.E5.BB.BA_boot.img

gyfkyu 发表于 2016-7-10 11:32:01

linjc 发表于 2016-7-9 09:34
可以试一下按wiki里写的编译打包:
http://wiki.t-firefly.com/index.php/Firefly-RK3288/Build_kernel#.E ...

也试过,同样会停留在start kernel...这里

linjc 发表于 2016-7-11 09:39:15

本帖最后由 linjc 于 2016-7-11 09:40 编辑

gyfkyu 发表于 2016-7-10 11:32
也试过,同样会停留在start kernel...这里
有没试过用自己编译的initrd.img 和zImage
然后这样打包:
mkbootimg --kernel arch/arm/boot/zImage --ramdisk initrd.img -o boot.img还有,parameter没有重新烧过吧?用的是android4.4 sdk里面的parameter?

gyfkyu 发表于 2016-7-11 10:18:38

linjc 发表于 2016-7-11 09:39
有没试过用自己编译的initrd.img 和zImage
然后这样打包:
mkbootimg --kernel arch/arm/boot/zImage - ...

你说的方法也试过,parameter当然没用android的。
我先烧写自带的ubuntu固件,再烧写boot.img,所以parameter没修改过,都是用自带ubuntu固件的parameter。

gyfkyu 发表于 2016-7-11 10:36:16

怀疑我的编译环境环境有问题,所有工具和glibc库重新安装一遍试试。

linjc 发表于 2016-7-11 11:01:53

gyfkyu 发表于 2016-7-11 10:36
怀疑我的编译环境环境有问题,所有工具和glibc库重新安装一遍试试。

环境应该没问题吧。。。
android5.1 sdk的parameter跟androi4.4 sdk的parameter不一样的,这个注意一下
其他的就没想到有什么问题了,有根据wiki的步骤做过,没发现你这样的问题。。。

gyfkyu 发表于 2016-7-11 11:32:00

OK,已解决。
原因有两:
1:我用的64位ubuntu12.04系统来开发,没有apt-get install libc6:i386安装glibc32位对应的库,导致mkbooting打包出来的文件在板子上解压内核的时候估计出问题。
2:我之前用android4.4 sdk自带的内核源码来编译出的内核镜像,加上自带ubuntu固件解压出来的ramdisk包来制作boot.img,内核启动后貌似一些模块驱动加载不成功。
最终按照http://wiki.t-firefly.com/index.php/Firefly-RK3288/Build_kernel#.E5.88.9B.E5.BB.BA_boot.img的所有步骤来,重新下载单独的内核源码和initrd源码,重新编译并最终生成boot.img,加上自带ubuntu固件里面的paramter文件,系统最终才启动成功。

东风21 发表于 2016-10-18 11:51:17

请问按照http://wiki.t-firefly.com/index. ... B.E5.BB.BA_boot.img的步骤中,如果直接用解压出来的根文件系统,是不是编译内核模块那一步不要做了?

magic8421 发表于 2016-11-3 11:35:30

U-Boot 2014.10-RK3288-10-g65679f1 (Jul 20 2015 - 10:28:11)

CPU: rk3288
CPU's clock information:
    arm pll = 600000000HZ
    periph pll = 300000000HZ
    ddr pll = 200000000HZ
    codec pll = 594000000HZ
Board:        Rockchip platform Board
DRAM:Found dram banks:1
Adding bank:0000000000000000(0000000080000000)
128 MiB
remotectl v0.1
storage init OK!
Using default environment

GetParam
check parameter success
failed to prepare fdt from boot!
power key: bank-0 pin-5
can't find dts node for ricoh619
pmic:act8846
Can't find dts node for fuel guage cw201x
SecureBootEn = 0, SecureBootLock = 0

#Boot ver: 2015-07-20#2.19
empty serial no.
checkKey
vbus = 1
board_fbt_key_pressed: ir_keycode = 0x0, frt = 0
no fuel gauge found
no fuel gauge found
read logo_on switch from dts
no fuel gauge found
checkKey
vbus = 1
board_fbt_key_pressed: ir_keycode = 0x0, frt = 0
got recovery cmd from misc.
boot/recovery image sha mismatch!
Unable to boot:recovery
try to start backup
bad image magic.
load boot image failed
ERROR: : bootrk: bad boot or kernel image
Unable to boot:backup
try to start rockusb

谁能帮我看下我的啊按照wiki 刷了 resource.img 和boot.img (刷到recovery分区里面,板子自带的双系统固件)
页: [1] 2
查看完整版本: 重新编译内核,打包成linux-boot.img烧写进去后无法启动