香港80年代色情鬼片:Linux Kernel 2:用户空间的初始化
来源:百度文库 编辑:九乡新闻网 时间:2024/10/02 18:07:22
CSDN博客“准专家勋章”“微软MVP勋章”上线公告 “IT适合你吗?”智力挑战
图1 run level
Run level说白了就是将系统运行状态分成几个级别,例如shutdown的时候init需要执行一些操作,reboot的时候需要执行一些操作。这里关于Init的东西就不介绍了,很多关于linux系统配置的知识都有涉及。(确实比android的init要复杂多了) 四 Initial RAM DiskLK在早期初始化的过程中,需要mount一个FS,目前有新旧两种方法:
ARM支持将前面的initrd和vmlinux打包到一个image中。实际上只有ARM架构支持。(内核编译的时候要选择这一项)。讲了这么多,那么到底怎么用呢?
dir /dev 0755 0 0 nod /dev/console/ 0600 0 0 c 5 1dir /root 0700 0 0
执行的时候,前面加上mk...就生成一个目录了,然后用cpio打包,生成iniramfs,最后由LK解包并挂载(具体内容,参考ramfs-rootfs-initramfs.txt)如何制作自己的initramfs呢? 这些参考文献中,最重要的是最后一个,ols2k-9.ps,下载并处理后得到一个pdf,实际上一篇论文。主要介绍了Linux启动的一些问题。再三解释一下,为什么需要init ram disk。FS一般安装在存储介质上,而读取这些存储介质需要驱动。内核启动的时候如果把这些驱动都加载的话,会非常麻烦,即使你把驱动静态编译到内核中,也不是一个完美的解决办法。所以。先整一个简单的,基于内存的FS,这样初始化工作都可以顺利进行。最后,等驱动都加载完后,再把实际存储上的FS挂载上来。这里要明白一点,没有一个FS的话,LK是没法正常工作的。 五 U-Boot全名为Das U-Boot,是一个使用非常广泛的Bootloader。以后会专门撰文介绍UB。这里简单说两个点:
其中,关于SDRAM.pdf,网址已经移到了:http://www.maxwell.com/products/microelectronics/docs/INTRO_TO_SDRAM.PDF各位看官可以下载看看。
Linux Kernel 2:用户空间的初始化
分类: Linux Kernel系列 2011-08-21 22:39 459人阅读 评论(0) 收藏 举报 上篇我们知道,kernel初始化后将启动init进程,那么这个进程将干些什么呢?除此之外,kernel还需要做些什么事情呢?(想想文件系统、根存储设备是在什么时候初始化的呢?)先从文件系统初始化说起。以前一直不明白,有了kernel为何还需要一个文件系统?经过反复琢磨,明白一个道理,kernel加载到内存后,kernel运行起来是没有问题的,但是如果没有Root FS,就好像PC上没有硬盘.....。另外,Linux中很多虚拟文件系统(proc,sys,dev等)都是挂靠在RootFS中的,所以RootFS在Linux中更加关键(必要条件简直就是)。(kernel中的FS是另外一个庞大的部分)一 根文件系统1 FHS:File system Hierachy Standard:Linux上文件系统布局的标准,例如 usr目录大概是干吗的,tmp目录大概是干嘛的。有空可以瞧瞧....其实使用LINUX OS多了,自然就理解了。2 常用的文件夹布局:其实就是ES上普遍的文件目录:- bin;dev;etc;home;lib;sbin;tmp;usr;var;
- run_init_process("/usr/bin/init"):这个时候已经有FS的布局了,也就是init程序本身必须放在一个FS中。
图1 run level
Run level说白了就是将系统运行状态分成几个级别,例如shutdown的时候init需要执行一些操作,reboot的时候需要执行一些操作。这里关于Init的东西就不介绍了,很多关于linux系统配置的知识都有涉及。(确实比android的init要复杂多了) 四 Initial RAM DiskLK在早期初始化的过程中,需要mount一个FS,目前有新旧两种方法:
- old方法就是使用initial ram disk,也叫initrd
- new方法就是使用iniramfs
ARM支持将前面的initrd和vmlinux打包到一个image中。实际上只有ARM架构支持。(内核编译的时候要选择这一项)。讲了这么多,那么到底怎么用呢?
- initrd也是一个image。由bootloader启动的时候,或者bootloader下载到某个地方
- bootloader把initrd的地址告诉内核。内核启动时候把这个image解压并挂载
- 另外一种办法,编译的时候将initrd和kernel放到一个image中,这种方法只有ARM架构支持。使用这种办法话,建议用initramfs。注意,android中使用的就是一个kernel+initramfs的单一image。也就是第二种办法
- KL先根据参数指定的initrd地址,将这个image拷贝到内存中,然后解压,并挂载为/
- 找到这个disk中的linuxrc文件,然后执行里边的语句《====这给了我们定制化自己ES的好计划
- 处理完linuxrc后,KL unmount这个initrd,并加载真正的root device(看到没,这个initrd就是做些初始化的工作,但是你也可以不umount这个initrd。)这里的处理稍有差异。如果BL在参数中指明root=/dev/ram0,(代码中可见到这些语句),那么KL就不会执行linuxrc,并且也不会umount initrd。也就是这个initrd就是最终的根文件系统了。
dir /dev 0755 0 0 nod /dev/console/ 0600 0 0 c 5 1dir /root 0700 0 0
执行的时候,前面加上mk...就生成一个目录了,然后用cpio打包,生成iniramfs,最后由LK解包并挂载(具体内容,参考ramfs-rootfs-initramfs.txt)如何制作自己的initramfs呢?
- 搞一个文件夹吧,可仿照PC机器上linux的文件结构。也可以把busybox放上去。
- find testramfs -depth -print | cpio -ov > testramfs.cpio cpio的输入是文件名,输出通过>定向到testramfs.cpio。大家可以试试。
- 解压的话,cpio -ivd < testramfs.cpio。这样就能还原testramfs文件夹中的内容了。
- UB的代码结构,先从CPU的start.S开始,这里会根据不同的CPU进行初始化,大部分代码都不需要我们修改
- 再是Board的启动,这个和具体的板子有关。现在改名叫lowlevel_init.S了。
其中,关于SDRAM.pdf,网址已经移到了:http://www.maxwell.com/products/microelectronics/docs/INTRO_TO_SDRAM.PDF各位看官可以下载看看。
Linux Kernel 2:用户空间的初始化
kernel 启动过程之五, initcall 的来由, console 的初始化。 - ...
关于Linux下kernel.shmmax的设置问题
Linux内核空间和用户空间传递数据
Linux Kernel 2.6.38发布
linux内核组件初始化体系
Linux修改用户主目录的方法
linux修改用户主目录的方法
Linux内核和用户空间通信的方式(一)— proc文件和mmap共享内存
linux 用户管理
从kernel源代码的角度分析signal的错误用法和注意事项 - 技术文档 - 系统管理 Linux时代 - 开源、自由、共享 - 中国最大的Linux技术社区
驱动的初始化
第8章 Linux Kernel Device Driver Specifications
分析kernel的initcall函数
内核空间和用户空间
Linux 系统中用户(user)和用户组(group)管理相应的概念
linux上常用操作命令---用户查询
Linux kernel内核升级全过程,教你一次成功(2.4.20
dynatree初始化的时候选中某项。
FANUC数字伺服参数的初始化设置
linux创建root用户以及在当前用户下切换到root用户
ORACLE初始化参数文件详细文档2
Linux 入门常用命令 — 修改密码,改变用户
Linux用户管理详解大结局(下)