根文件系统如何启动第一个程序

内核挂接上跟文件系统之后:
启动第一个引用程序init:
1、open()标准输入输出、标准错误

2、执行函数run_init_process(execute_command);
      init程序:(1)读取配置文件;(2)解析配置文件;(3)根据这些配置文件执行用户程序;
  parse_initab();
      new_init_action():(1)创建一个init_action的结构体并用其参数填充;(2)把结构体放入init_action_list链表;
    
     run_action(sysinit);
      waitfor(a,0)运行应用程序,等待它执行接受;
      run(a)  :创建process子进程;
      waitpid(runpid,,0);等待子进程执行结束;
     delete_init_action(a): 在init_action_list链表里删掉它;

  







cramfs根文件系统启动问题

07-10

我用的优龙YL2410开发板,最近想自己制作一个cramfs跟文件系统,参考网上比较著名的一个文档《Linux系统移植》的根文件系统制作部分自己制作了一个cramfs的文件系统my_rootfs.cramfs,其中busybox使用的是1.1.3。把my_rootfs.cramfs烧写到板子后发现根文件系统无法启动(bootloader和kernel都没变,用了原来光盘里的,kernel为2.6.8的),以下是超级终端的出错信息:rn...........................(以上简略)rnVFS: Mounted root (cramfs filesystem) readonly.rnMounted devfs on /devrnFreeing init memory: 124KrnKernel panic: No init found. Try passing init= option to kernel.rn 然后就停住了。关于最后一行的信息我在网上找过,有的说是没有拷贝库文件,我后来拷贝了库文件到跟文件系统的/lib目录,同样出现上述错误信息(其实仅仅启动根文件系统是不需要拷贝库文件的,因为busybox在make menuconfig时是选择了静态编译)。请问这个问题要怎么解决?rnrn顺便说下:板子原来的启动参数是root=1f02,init=/linuxrc,console=ttyS0,115200 devfs=mount,display=sam240rn我改成了:noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttyS0,115200rn但是启动的时候板子还是运行了原来的启动参数,只要启动参数有noinitrd,板子就不认,还启动原来的,把noinitrd去掉即启动参数为root=/dev/mtdblock2 init=/linuxrc console=ttyS0,115200就出现:rnKernel panic: No init found. Try passing init= option to kernel.rnrn是不是在优龙的板子上仅移植我自己制作的根文件系统是不行的(bootloader和kernel用优龙光盘的),而要将bootloader,kernel和根文件系统一起移植到优龙的板子才能正常启动.是这样吗?

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试