• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : initramfs启动linux的问题,执行/init失败, 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 16283
精华: 0
发帖: 67
金钱: 335 两
威望: 67 点
贡献值: 0 点
综合积分: 134 分
注册时间: 2010-03-16
最后登录: 2021-07-28
楼主  发表于: 2011-12-26 15:51

 initramfs启动linux的问题,执行/init失败,

本人试图在自己的mips开发板上弄一个mips的initramfs启动linux的内核,我参考本站一篇有关initramfs成功启动linux的文章,我想问一下:initramfs启动linux需要向linux内核传递参数吗?怎么传?好像没有cmdline的东西,
是不是我的initramfs文件系统没有挂载成功啊?
谢谢!
[ 此帖被xiaolubk在2012-03-02 17:22重新编辑 ]
级别: 侠客
UID: 16283
精华: 0
发帖: 67
金钱: 335 两
威望: 67 点
贡献值: 0 点
综合积分: 134 分
注册时间: 2010-03-16
最后登录: 2021-07-28
1楼  发表于: 2011-12-26 16:13
busybox: ELF 32-bit MSB executable, MIPS, MIPS-I version 1 (SYSV), statically linked, for GNU/Linux 2.6.18, with unknown capability 0x41000000 = 0xf676e75, with unknown capability 0x10000 = 0x70401, stripped
我手动传递init参数:init=/sbin/init也是以上的串口输出,我的initramfs根文件系统/sbin/目录下面是有init链接文件的,它指向bin/busybox。如何知道我的initramfs文件系统是否挂载成功啊
级别: 侠客
UID: 16283
精华: 0
发帖: 67
金钱: 335 两
威望: 67 点
贡献值: 0 点
综合积分: 134 分
注册时间: 2010-03-16
最后登录: 2021-07-28
2楼  发表于: 2011-12-26 17:08
我在编译内核时指定了我的initramfs根文件系统所在的目录,linux内核在make vmlinux时就已经把initramfs根文件系统包含进去,生成的initramfs_data.cpio应该没有什么用吧?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2011-12-26 22:02
贴出完整的串口输出
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 16283
精华: 0
发帖: 67
金钱: 335 两
威望: 67 点
贡献值: 0 点
综合积分: 134 分
注册时间: 2010-03-16
最后登录: 2021-07-28
4楼  发表于: 2011-12-27 09:04
linux内核才13多M,生成的是initramfs_data.cpio不是gz压缩包才2.35M,我制作的initramfs根文件系统大小680M,initramfs不是自动编入linux内核的吗?所以我只make vmlinux就可以了吧?没有另外使用initramfs_data.cpio
[ 此帖被xiaolubk在2012-03-02 17:22重新编辑 ]
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
5楼  发表于: 2012-01-06 22:40

 回 4楼(xiaolubk) 的帖子

看起来你的initramfs已经mount成功了,而且内核也找到了/init可执行档,但它执行过程中异常退出了。把它换成静态链接的helloworld试试?
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 16283
精华: 0
发帖: 67
金钱: 335 两
威望: 67 点
贡献值: 0 点
综合积分: 134 分
注册时间: 2010-03-16
最后登录: 2021-07-28
6楼  发表于: 2012-01-08 21:53
我在根文件系统的etc/init.d/rcS中有:
“#! /bin/sh
echo "Processing etc/init.d/rc.S"
#hostname ${HOSTNAME}
hostname up-tech
echo " Mount all"
/bin/mount -a
echo " Start mdev...."
/bin/echo /sbin/mdev > proc/sys/kernel/hotplug
mdev -s

照您说的init已经找到,init进程解析inittab中需要执行rcS,为什么没有打印出“Processing etc/init.d/rc.S”,谢谢
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
7楼  发表于: 2012-01-08 21:56

 回 6楼(xiaolubk) 的帖子

在init处理到/etc/init.d/rcS之前还要经过很长的路。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 16283
精华: 0
发帖: 67
金钱: 335 两
威望: 67 点
贡献值: 0 点
综合积分: 134 分
注册时间: 2010-03-16
最后登录: 2021-07-28
8楼  发表于: 2012-01-08 22:07
BusyBox的init进程会依次进行以下工作:(参考<<构建嵌入式LINUX系统>> p201)
1.       为init设置信号处理过程
2.       初始化控制台
3.       剖析/etc/inittab文件
4.       执行系统初始化命令行,缺省情况下会使用/etc/init.d/rcS
5.       执行所有导致init暂停的inittab命令(动作类型:wait)
6.       执行所有仅执行一次的inittab(动作类型:once)
您的意思是第1步,第2步出问题了?我感觉,init是我用命令#ln -s bin/busybox init链接到了/bin/busybox了,我的busybox静态编译了,是不是我的busybox编的有问题?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
9楼  发表于: 2012-01-09 11:37

 回 8楼(xiaolubk) 的帖子

以ARM平台的Linux为例,在实际执行一个ELF格式的可执行档的代码之前,内核需要先解析这个执行档的ABI类型,加载所有需要的执行的代码(包括执行档本身和所依赖的共享库)到RAM中。busybox在输出控制台信息之前有很多初始化过程,如果这些过程中出了问题,你是看不到任何错误信息的。静态编译的helloworld是最简单的可执行档,可以测试你的系统对于可执行档的最基本的执行环境是否是正常的。在这基础之上,才能进一步分析别的可能的错误原因。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go