|
|
零碎的东西, 抖抖,希望对大家有帮助。
发信人: Dieken (风催草低), 信区: LinuxApp
标 题: power2bash笔记
发信站: 水木社区 (Wed May 3 19:29:37 2006), 站内
发现这篇文章很不错,做了点笔记, 顺便粗略看了下X的启动过程.
http://www.netspace.net.au/~gok/power2bash/
http://www.faqs.org/docs/Linux-H ... h-Prompt-HOWTO.html
======================
CMOS BIOS (ROM): bootstrap loader, 寻找引导介质,装入引导扇区并执行。
boot sector: MBR + MPT, 装入grub的stage1
stage1: 装入grub的stage2
stage2: 装入vmlinuz, initrd
vmlinuz: 执行/sbin/init
/sbin/init: 读取/etc/inittab, 执行bash解释/etc/init.d/rcS (Debian)
或者/etc/rc.d/rc.sysinit (Red Hat), 它负责检查(fsck)
文件系统并装载(mount), 设置时钟,激活交换空间(swapon),
获取或者设置主机名等。
执行/etc/rc<N>.d/ (Debian) 或者 /etc/rc.d/rc<N>.d/下的所有
以S开头的脚本,其实这些脚本都是/etc/init.d下面脚本的链接。
<N>指run level。这些脚本负责启动各个子系统。
给每一个虚拟终端创建getty进程,这些进程在退出时又会被init
重新创建。
在/etc/rc<N>.d/下的某个脚本会执行mount -a来装载文件系统,
这会用到/etc/fstab配置文件。
Linux kernel一开始以只读模式mount根文件系统,在init调用的
rcS做了fsck检测文件系统无误后再重新以可读可写模式mount根
文件系统。
klogd, syslogd接收log信息,由 /etc/syslog.conf控制,需要
/etc/services文件。
init: 启动getty(fork),显示登录信息和登录提示,取得
用户名后启动login(exec),由它负责取得密码并检验。
密码正确就根据/etc/passwd启动相应的shell, 一般是
bash.
=========================
BIOS bootstrap loader: search bootable media, load it into RAM
-> boot sector: load stage1
-> GRUB stage1: load stage2
-> GRUB stage2: load vmlinuz
-> vmlinuz
-> fork: init (pid=1)
-> fork: /etc/init.d/rcS
/etc/init.d/rc S
/etc/rcS.d/S*
(x11-common)
-> fork: /etc/init.d/rc 2
/etc/rc2.d/S*
(gdm or kdm)
-> fork: getty (ppid=1)
-> exec: login
-> fork: bash
在用户退出后init负责重新创建(fork)getty进程。
==========================
/etc/init.d/gdm脚本会运行/usr/sbin/gdm, gdm又会创建一个子进程
运行gdm,在这个子进程退出后再运行gdm。
init-+
......|-gdm---gdm-+-Xorg
............................`x-session-manager-+-Xsession
..............................................................`-ssh-agent
/usr/bin/x-session-manager是一个符号链接,指向/etc/alternatives/
x-session-manager, 后者又指向/usr/bin/gnome-session.
gnome-session缺省会读取/usr/share/gnome/default.session,根据
这个文件运行/usr/bin/gnome-wm, 这个shell脚本会选择一个window
manager来运行,缺省是metacity. 另外gnome-session还会启动gnome-panel
等。
============================
从终端启动X:
startx:对xinit的封装脚本, 它会以指定参数(比如指定/etc/X11/xinit/xinitrc)
来启动xinit.
xinit: 启动一个x client(缺省是xterm)和一个x server(缺省是X),
见xinit(1), 注意它会运行~/.xinitrc,在这里面可以启动
某个窗口管理器。
Debian上缺省配置, xinit会执行/etc/X11/xinit/xinitrc脚本, 而xinitrc
调用了/etc/X11/Xsession脚本, 这个脚本会执行~/.Xsession或~/.xsession
以及/etc/X11/Xsession.d/下的脚本,有点类似/etc/init.d的机制。
注: Xsession会被这两种启动X的方式(startx or gdm)调用。
--
Gurer ner gjb xvaqf bs s**x, bar sbe ybir, bar sbe ungr.
:help g?
※ 修改:·Dieken 于 May 3 19:31:27 修改本文·[FROM: 221.122.47.*]
※ 来源:·水木社区 newsmth.net·[FROM: 221.122.47.*]
在这上面排版这么别扭,连个空格也要吞掉。。。 |
|