请选择搜索范围
wz2232 / 内核 / 【GT-I9100】让你自己改你自己的内核支持2...
首先感谢谢xiao1u根据XDA的一些东西写出方便我们的内核initramfs拆包工具 三星的内核不同于 HTC 索尼爱立信机子等boot.ing,三星内核中没有直接的ramdisk启动 而由initramfs模块代替了ramdisk,而拆开方式也略有不同。 稍后增加如何让官方内核增加自动root recovery等教程 二楼奉上如何做odin刷机包理论上支持所有三星安卓机子,谷歌三儿子 二儿子除外
准备工作: linux系统一个(本来尝试过WIN系统下的cywin但是打包initramfs时候有问题) 虚拟机安装ubuntu等等皆可以(VMwave、virtualbox这两款虚拟机推荐下) 解包打包工具: xiaolu-galaxys2_kernel_repack-2df9078.zip (5.13 MB) 不要用旧版的 linux环境下的编译器 115分流:
打开linux的终端,第一次sudo需要输入你linux的登陆密码,此步骤需联网 没有安装realpath工具的请安装: sudo apt-get install realpath复制代码 修改repack文件,开头部分定义你自己的编译器可执行文件路径,和编译器的路径。 COMPILER=/编译器所存的地址/bin/arm-none-eabi COMPILER_LIB=/编译器所存的地址 /lib/gcc/arm-none-eabi/4.5.2 编译器所存的地址就表示你需要改动的,你存在哪儿就填哪儿 尽量地址中不纯在中文名字
以下操作都是在root shell(在shell下运行sudo -i)下进行的,我使用root权限来解包、修改和打包是因为这样可以保留initramfs文件的权限。 解包zImage root@xhy-VirtualBox:/home/xhy/桌面/pack# ./unpack.sh zImagevil vil [I] Extracting lzma'd kernel image from file: zImagevil (start = 9772) [I] CPIO compression type detected = none | offset = 163840 [I] Extracting non-compressed CPIO image from kernel image (offset = 163840) [I] Expanding CPIO archive: initramfs.cpio to vil. 复制代码zImagevil是我处理的内核名字 vil是拆包initramfs后的文件夹
分离开之后 你会发现处理的文件夹里面多出了vil文件夹 不少人都知道2.3.6是改动了wifi启动方式 修改下某些代码即可变为2.3.6专用内核了 继续看图修改 下面极为需要改动的代码 在vil文件夹(或者你输出的文件)中的init.rc文件里 首先在终端里面 gedit vil/init.rc复制代码 之后会弹出一个文本窗口,查找下面内容 service wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0 -c/data/wifi/bcm_supp.conf复制代码 改成下面这样保存即可 service wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0 -c/data/wifi/bcm_supp.conf class main socket wpa_eth0 dgram 0660 wifi wifi disabled oneshot复制代码
打包zImage 先将处理好的vil文件夹打包成initramfs root@xhy-VirtualBox:/home/xhy/桌面/pack# ./gen_initramfs.sh -o initramfs.cpio -u 0 -g 0 ./vil initramfs.cpio filesize: 5399552 复制代码 接下来合并initramfs与zImage root@xhy-VirtualBox:/home/xhy/桌面/pack# ./repack.sh zImagevil initramfs.cpio[I] ---------------------------kernel repacker for i9100--------------------------- [I] Extracting lzma'd kernel from zImagevil (start = 9772) [I] Non-compressed CPIO image from kernel image (offset = 163840) [I] CPIO image MAX size:5399552 [I] Head count:5563392 [I] Making head.img ( from 0 ~ 163840 ) [I] Making a tail.img ( from 5563392 ~ 12823616 ) [I] Current ramdsize using cat : 5399552 with required size : 5399552 bytes [I] cat accepted! [I] Merging [head ramdisk] tail [I] Now we are rebuilding the zImage [I] Image ---> piggy.lzma [I] piggy.lzma ---> piggy.lzma.o [I] Compiling head.o [I] Compiling misc.o [I] Compiling decompress.o [I] Compiling lib1funcs.o [I] Create vmlinux.lds [I] head.o misc.o piggy.lzma.o decompress.o lib1funcs.o---> vmlinux [I] vmlinux ---> zImage [I] Compiled new zImage size:5296068 [I] new_zImage has been created [I] Cleaning up... [I] finished... 复制代码
来自: wz2232 > 《内核》
推一荐:发原创得奖金,“原创奖励计划”来了!
0条评论
发表
请遵守用户 评论公约
Linux Kernel 2:用户空间的初始化
其实就是一个gzip打包的文件夹....(这部分代码在do_mounts.c中的prepare_namespace函数中)4.2 initramfs(详细说明:参考kernel/docume...
6.5 使用initramfs
在内核配置工具中启用INITRAMFS_SOURCE选项并且使它指向用户的开发平台,内核编译链接系统就将使用这些文件作为用户initramfs映像的源文件。这个编译链接目录生成的最后一个用来构建initramfs映像的文...
解压vmlinuz和解压initrd(initramfs)
解压vmlinuz和解压initrd(initramfs)vmlinuz是采用 gzip 压缩的,但它不仅是一个压缩文件,而且在这两个文件的开头部分内嵌有 gzip 解压缩代码,所以你不能用 gunzip 或 gzip -dc 命令来解压 vmlinuz...
不读书的孩子,到底输掉了什么?
即使不那么功利,孩子都生活在差不多的环境,但和儿子比起来,可可显然觉得世界更有趣。我灵机一动,“有没有适合孩子的呢?”就去搜了...
根文件系统挂载
根文件系统挂载1) 在RamDisk为initramfs时start_kernel()->vfs_caches_init()->mnt_init()->init_rootfs()->init_mount_tree()注册了类型为rootfs的fs.然后:start_kernel 最后 rest_init-...
android linux基础知识总结[上]
initrd镜像文件的作用与制作
$ cd /tmp$ mkdir initrd$ mkdir initrd/loop initrd/cpio.$ mkdir /tmp/initrd/current$ cp /boot/initrd.img-2.6.24-12-generic /tmp/initrd/current/$ cd /tmp/initrd/current/$ mv initrd.img-2.6....
ramfs,tmpfs, rootfs and initramfs
ramfs,tmpfs, rootfs and initramfsramfs,tmpfs, rootfs and initramfs ramfs是什么。如果你指定一个目录而不是一个配置文件,内核的构建结构将从那个目录(usr/Makefile 调用scripts/gen_initramfs_...
linux2.6内核initrd机制解析
// 判断是否加载了initrd,bootlaoder会将initrd加载到内存地址initrd_start,// 前面已经说到了如何给内核传递这些参数if (initrd_start) {#ifdef CONFIG_BLK_DEV_RAM// CONFIG_BLK_DEV_RAM和CONFIG_B...
怎样使用initramfs
使用initramfs最简单的方式,莫过于用已经做好的cpio.gz把kernel里面那个空的给换掉。You can also leave CONFIG_INITRAMFS_SOURCE empty, and instead copy your cpio.gz file to usr/initramfs_data....
微信扫码,在手机上查看选中内容