免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: MagicBoy2010
打印 上一主题 下一主题

Linux系统下init进程的前世今生 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2012-03-21 17:36 |只看该作者
那是我记错了。不需要保存用户态的函数栈。

能说一下那些工作是由硬件直接完成的
===============================
int n由硬件完成的部分包括切换到ring0堆栈,也即内核栈,然后将ring 3下的ss, esp,eflag,int n下条指令的cs, eip压栈

论坛徽章:
0
22 [报告]
发表于 2012-03-21 17:39 |只看该作者
关于initramfs,我说一下我所知道的。

在内核启动的时候,内核的镜像只是一个最基本的内核镜像,很多模块并没有加载。这时由GRUB加载initrd,它是一个简单的文件系统,然后将一般将其挂载到/dev/ram0上,作为根系统。然后通过这个Initial Ram Disk,来检测系统,加载更多的模块,完成真正的Linux启动。

当所有加载完成后,可以将真正的文件系统挂载到/上,替换initrd

论坛徽章:
0
23 [报告]
发表于 2012-03-22 21:30 |只看该作者
GFree_Wind 发表于 2012-03-21 17:39
关于initramfs,我说一下我所知道的。

在内核启动的时候,内核的镜像只是一个最基本的内核镜像,很多模块 ...


GFree,最近我在琢磨这事,想到了一个问题,内核干嘛不直接挂载最终的比如某硬盘上的根文件系统,而要经过initram来中转一下呢?是不是有点脱裤子放P的感觉,你觉得呢?

论坛徽章:
0
24 [报告]
发表于 2012-03-23 10:05 |只看该作者
回复 23# MagicBoy2010

貌似原因是这样的。

GRUB加载的内核镜像是一个功能模块最简单的kernel,有很多模块并没有加载,包括文件系统模块。
这样的话,是不能够支持真正的文件系统——对应的文件系统模块还没有加载。

而ramdisk呢,是一个简单内存文件系统。kernel靠先加载它,然后通过它,在来检测运行环境,加载必要的模块。
这时,kernel才算真正运行起来——即所有必要的模块都加载了。
也就可以使用真正的文件系统来替换ramdisk了。

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
25 [报告]
发表于 2012-03-23 10:16 |只看该作者
回复 24# GFree_Wind

只是多了一种选择的余地,方便发行版定制,直接从硬件介质上起也是可以的。
   

论坛徽章:
0
26 [报告]
发表于 2012-03-23 12:37 |只看该作者
如果把块设备驱动和一些常见文件系统模块编译进内核,应该可以直接挂载硬盘上的根文件系统了吧?

论坛徽章:
0
27 [报告]
发表于 2012-03-23 13:43 |只看该作者
回复 26# MagicBoy2010

像恰空说的,这只是一个发行版的控制手段。

如果把那些模块都编进去了,我认为肯定行的。


向我们的设备,只使用ram disk,一直把它作为根系统。

论坛徽章:
0
28 [报告]
发表于 2012-06-28 23:11 |只看该作者
lz是在intel呆过的啊,是上海intel吗,膜拜,高手,话说我现在在intel实习,希望能达到lz的水平,
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP