分页: 1 / 1

为什么我做出来的init不能用?

发表于 : 2006-12-30 9:16
hi19go
在ubuntu 06.10 amd64下(图形界面,终端,gcc-4.1),命令如下
gcc source/init.c -o temp/init -static -ldevmapper -Os -s -Wall -DVOLUME_ID="lfslivecd-x86-6.2-3" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
做出来的文件几乎是发布版的init的两倍
在终端下测试可以看到Initramfs activated
然后 find . | cpio -o -H newc | gzip -9 > ../INITRAMFS_DATA_CPIO.GZ
打包制成INITRAMFS_DATA_CPIO.GZ
grub时可以解包,但是kernel载入结束后总是提示
Failed to execute /init
用发布版的init,打包就会有用
但是发布版的init是lfslivecd-x86-6.2-3专门给光盘用的
不支持硬盘启动
确定不是我更改了文件init.c的源代码的问题
因为我用原来的init.c编译也出现找不到init的问题
是编译环境的问题吗?
如何解决?
我把lfslivecd-x86-6.2-3.iso里的一些必要的*.h拷贝到source文件夹下
改变所有include的指向 #include <features.h> 改成 #include "features.h"
这样所有的*.h都是通过相对地址被引用
其中只有source/sys/types.h 和 source/bits/types.h中
include的指向"../linux/stddef.h"改动有点问题外
(原本是<stddef.h>,但是stddef.h在lfslivecd-x86-6.2-3.iso的include文件夹下不存在)
是头文件(*.h)的问题吗?要如何解决?

打包的详细内容initramfs-linux-hi19go.rar
http://thi19go.googlegroups.com/web/ini ... Q&hl=zh-CN
http://groups-beta.google.com/group/thi ... s?hl=zh-CN