请选择 进入手机版 | 继续访问电脑版

机锋论坛

  • 关注机锋
  • 关注机锋
 找回密码
 注册
楼主: ❤海洋➹

【内核编译】【zImage解包\打包】的问题。共同探讨。

[复制链接]

16

主题

1

好友

214

积分

等待验证会员

该用户从未签到

G币
121
最后登录
2017-1-7
注册时间
2011-3-4
发表于 2012-2-24 15:13 |显示全部楼层

马上注册,结交更多机友,下载更多应用,让你轻松玩转手机。

立即注册 已有帐号?点击登录   下载游戏和软件,请【猛击这里】进入机锋市场!

×
本帖最后由 ❤海洋➹ 于 2012-2-24 15:19 编辑

1.在三星官open source 上下载的源码。解压后有kernel 和platfrom两个文件夹。kernel下面是内核。initramfs 的源码也在kernel里面么?还是在platform里面 ?

2.fedora  16 x86_64 交叉编译完内核后,生成3M多的内核压缩镜像zImage,tar打包后刷机不成功。官方是7M左右的,应该是没有打包initramfs进去才这么小。这儿有个解包 zImage的说明,用里面的unpack-bootimg.pl脚本解官方的 zImage无法解开。然后又尝试使用16进制编辑器编辑,在2k的数据处无法找到gzip的magic number 1F8B。个人猜测 三星的zImage不是常规的打包方法(就像三星没有用常见的yaffs2文件系统而是自己开发了rfs)。要怎么解呢?
3. xda上有人写了读取pit文件的工具(
这儿),跟我用Heimdall在download模式下读取的结果是一致的 :

file magic = 0x12349876  (expected value)
Unknown data: 0 0 0 0 0
Number of partitions = 14  (not the usual value)

Partition #1
  Usual content: boot.bin, the primary boot loader (low-level hardware initialization)
  partition entry type: 0 0  (normal partition)
  ID = 0;
  flags = 0;
  unknown: 0

  size = 1 blocks of 256 * 512 bytes  = 131072 B = 128 kB = 0 MB
  unknown string: [........]
  partition name = [IBL+PBL.........................]
  file name = [boot.bin........................................................]                             (引导。recovry的那段程序是不是也在这儿?)

Partition #2
  Usual content: partition information table (PIT)              (用一个 分区存放分区表 ?很诡异阿。pc机上貌似是在mbr上的吧。)
  partition entry type: 0 0  (normal partition)
  ID = 0x1;
  flags = 0;
  unknown: 0

  size = 1 blocks of 256 * 512 bytes  = 131072 B = 128 kB = 0 MB
  unknown string: [........]
  partition name = [PIT.............................]
  file name = [................................................................]

Partition #3
  Usual content: efs.rfs                                                                  (efs分区是干吗的?)
  partition entry type: 0 0  (normal partition)
  ID = 0x14;
  flags = 0x2  (rfs file system);
  unknown: 0

  size = 40 blocks of 256 * 512 bytes  = 5242880 B = 5120 kB = 5 MB
  unknown string: [........]
  partition name = [EFS.............................]
  file name = [efs.rfs.........................................................]

Partition #4
  Usual content: Sbl.bin, the secondary boot loader (loads linux kernel)
  partition entry type: 0 0  (normal partition)
  ID = 0x3;
  flags = 0;
  unknown: 0

  size = 5 blocks of 256 * 512 bytes  = 655360 B = 640 kB = 0 MB
  unknown string: [........]
  partition name = [SBL.............................]
  file name = [sbl.bin.........................................................]

Partition #5
  Usual content: backup of secondary boot loader
  partition entry type: 0 0  (normal partition)
  ID = 0x4;
  flags = 0;
  unknown: 0

  size = 5 blocks of 256 * 512 bytes  = 655360 B = 640 kB = 0 MB
  unknown string: [........]
  partition name = [SBL2............................]
  file name = [sbl.bin.........................................................]

Partition #6
  Usual content: param.lfs /mnt/.lfs j4fs                          (这个又是干嘛的?)
  partition entry type: 0 0  (normal partition)
  ID = 0x15;
  flags = 0x2  (rfs file system);
  unknown: 0

  size = 20 blocks of 256 * 512 bytes  = 2621440 B = 2560 kB = 2 MB
  unknown string: [........]
  partition name = [PARAM...........................]
  file name = [param.lfs.......................................................]

  Partition #7
  Usual content: zImage, the linux kernel                     
  partition entry type: 0 0  (normal partition)
  ID = 0x6;
  flags = 0;
  unknown: 0

  size = 30 blocks of 256 * 512 bytes  = 3932160 B = 3840 kB = 3 MB   (才3M?官方7M多 的内核是怎么刷上去的?)
  unknown string: [........]                                                                              (或者是Odin刷机 时要解包zImage,把内核放在这个分区,把initramfs放在下面的分区? )
  partition name = [KERNEL..........................]
  file name = [zImage..........................................................]                         (文件名和分区名 已经标注了kernel,就是内核了。)

Partition #8
  Usual content: recovery.bin, the backup copy of zImage/initramfs   
  partition entry type: 0 0  (normal partition)
  ID = 0x7;
  flags = 0;
  unknown: 0

  size = 30 blocks of 256 * 512 bytes  = 3932160 B = 3840 kB = 3 MB      (才3M?)
  unknown string: [........]
  partition name = [RECOVERY........................]
  file name = [zImage..........................................................]

Partition #9
  Usual content: factoryfs.rfs
  partition entry type: 0 0  (normal partition)
  ID = 0x16;
  flags = 0x2  (rfs file system);
  unknown: 0

  size = 1711 blocks of 256 * 512 bytes  = 224264192 B = 219008 kB = 213 MB    (才213M?)
  unknown string: [........]
  partition name = [FACTORYFS.......................]
  file name = [factoryfs.rfs...................................................]

Partition #10
  Usual content: dbdata.rfs
  partition entry type: 0 0  (normal partition)
  ID = 0x17;
  flags = 0x2  (rfs file system);
  unknown: 0

  size = 20 blocks of 256 * 512 bytes  = 2621440 B = 2560 kB = 2 MB         (这个应该对应/data分区吧,才 2M?)
  unknown string: [........]
  partition name = [DBDATAFS........................]
  file name = [dbdata.rfs......................................................]

Partition #11
  Usual content: cache.rfs                                                       (cache分区,应该是类似linux下的swap分区?)
  partition entry type: 0 0  (normal partition)
  ID = 0x18;
  flags = 0x2  (rfs file system);
  unknown: 0

  size = 140 blocks of 256 * 512 bytes  = 18350080 B = 17920 kB = 17 MB
  unknown string: [........]
  partition name = [CACHE...........................]
  file name = [cache.rfs.......................................................]

Partition #12
  Usual content: modem.bin                                          (所谓的基带,刷进去的应该是用于支持通信的可执行的程序?)
  partition entry type: 0 0  (normal partition)
  ID = 0x8;
  flags = 0;
  unknown: 0

  size = 1 blocks of 256 * 512 bytes  = 131072 B = 128 kB = 0 MB                    
  unknown string: [........]
  partition name = [MODEM...........................]
  file name = [modem.bin.......................................................]

Partition #13
  Usual content: Unknown
  partition entry type: 1 1  (past-the-end marker)
  ID = 0x8;
  flags = 0;
  unknown: 0

  size = 0 blocks of 0 * 512 bytes  = 0 B = 0 kB = 0 MB
  unknown string: [........]
  partition name = [................................]
  file name = [................................................................]

Partition #14
  Usual content: Unknown
  partition entry type: 0 2  (unknown value)
  ID = 0;
  flags = 0;
  unknown: 0

  size = 0 blocks of 0 * 512 bytes  = 0 B = 0 kB = 0 MB
  unknown string: [........]
  partition name = [MOVINAND........................]
  file name = [movinand.mst....................................................]

4.在adb shell 下执行df的结果:
# df
Filesystem             Size   Used   Free   Blksize
/dev                   221M    76K   221M   4096
/mnt/.lfs: Function not implemented
/mnt/asec              221M     0K   221M   4096
/mnt/obb               221M     0K   221M   4096
/app-cache              12M     0K    12M   4096
/data                  485M   314M   171M   4096
/cache                  30M     4K    30M   4096
/system                410M   294M   115M   4096
/efs                     5M    10K     5M   1024

明显 和pit分区表中 数据不对啊。这又是为什么?那个错了?
囧囧有神。
美女壁纸 高清  smart stay 

8

主题

0

好友

1301

积分

研究生

Rank: 8Rank: 8

  • TA的每日心情
    开心
    2015-7-22 19:31
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    G币
    7170
    最后登录
    2019-7-8
    注册时间
    2011-7-19
    发表于 2012-2-24 18:21 |显示全部楼层
    建议去xda提问应该很快可以解决,
    魔趣  i899

    1

    主题

    0

    好友

    228

    积分

    等待验证会员

    该用户从未签到

    G币
    58
    最后登录
    2016-10-8
    注册时间
    2011-7-31
    发表于 2012-2-27 15:54 |显示全部楼层
    huitieshimeide
    htc g7官方rom  手机防骚扰电话软件

    8

    主题

    0

    好友

    185

    积分

    等待验证会员

    该用户从未签到

    G币
    90
    最后登录
    2016-11-30
    注册时间
    2011-5-1
    发表于 2012-2-27 17:08 |显示全部楼层
    支持一下。
    希望能够整出一套不用内置存储的刷机包就更好了。
    i917刷安卓  中脉laca内衣

    8

    主题

    0

    好友

    185

    积分

    等待验证会员

    该用户从未签到

    G币
    90
    最后登录
    2016-11-30
    注册时间
    2011-5-1
    发表于 2012-3-4 22:30 |显示全部楼层
    国行221-initramfs_root.rar (1.47 MB) 这是我刚解开的国行zckc1 的内核,你看看是否有用。
    360平板卫士  仙剑传奇录

    16

    主题

    1

    好友

    214

    积分

    等待验证会员

    该用户从未签到

    G币
    121
    最后登录
    2017-1-7
    注册时间
    2011-3-4
    发表于 2012-3-5 10:54 |显示全部楼层
    回复 5# lingze


       谢谢。话说你 怎么解的zImage?
    囧囧有神。
    华硕人脸识别   htconev

    8

    主题

    0

    好友

    185

    积分

    等待验证会员

    该用户从未签到

    G币
    90
    最后登录
    2016-11-30
    注册时间
    2011-5-1
    发表于 2012-3-5 12:04 |显示全部楼层
    本帖最后由 lingze 于 2012-3-5 12:13 编辑

    ./unpack-bootimg.pl zImage

    改内核 看是否能把mount  /data 分区 改到tf 卡 mmcblk1p3 上。这样内置存储坏了就不会变砖了。

    国行的内核和 spint版 p100 的内核比较,在内存分区上定义不同,感觉sprint 版的定义很清晰,改起来比较容易。国行的没看到分区预定义段,还在找。
    谷歌语音搜索  百度 输入法 

    16

    主题

    1

    好友

    214

    积分

    等待验证会员

    该用户从未签到

    G币
    121
    最后登录
    2017-1-7
    注册时间
    2011-3-4
    发表于 2012-3-5 13:07 |显示全部楼层
    回复 7# lingze


        话说我用过这个脚本。但是没解开。悲剧。
    囧囧有神。
    妩媚kiki视频  魔塔v1.1 

    4

    主题

    3

    好友

    699

    积分

    等待验证会员

  • TA的每日心情
    擦汗
    2016-11-21 15:22
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    G币
    1524
    最后登录
    2018-12-23
    注册时间
    2010-12-2
    发表于 2012-3-7 15:09 |显示全部楼层
    默默地支持下.>
    薄荷论坛  十滴水安卓

    1

    主题

    1

    好友

    46

    积分

    等待验证会员

    该用户从未签到

    G币
    32
    最后登录
    2016-8-2
    注册时间
    2012-2-1
    发表于 2012-3-12 16:01 |显示全部楼层
    zImage的解包方法可以参考xda的xiaolu一篇文章,测试ok
    不知道能不能添加外链,自己搜索Unpack/Repack initramfs in zImage
    你提的从源码编译的zImage我也在着相关资料,怎么打包inittramfs。
    有兴趣我们可以讨论下。
    nicevday@gmail.com
    raider 4g  lg p970
    您需要登录后才可以回帖 登录 | 注册

    网上有害信息举报中心|手机版|机锋网 ( 京ICP备15063876号-5 京公网安备 11010202008075

    GMT+8, 2019-7-19 02:20

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回顶部