日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

来自ChinaUnix的对Linux rc.sysinit, rc, functions脚本的分析和Linux启动分析

發布時間:2025/7/14 linux 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 来自ChinaUnix的对Linux rc.sysinit, rc, functions脚本的分析和Linux启动分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
很不錯的參考資料,摘自chinaunix?
首先貼上Linux的啟動過程:?

系統啟動?

1、系統加電?

2、BIOS 自檢 → 本地設備枚舉和初始化?

3、POST 代碼從內存中清除,但運行時服務(runtime service)仍然留在內存。?

4、BIOS 從 CMOS 的設置中找出第1/2/3 啟動設備(可能有第4個),然后逐個嘗試,?

并在第一個 ”active“狀態的硬盤上讀入其 MBR?



第一階段引導加載程序?

1、MBR 實際上是由3個部分組成 :主引導加載程序(master bootloader code,446 字節)、主分區表 (ppt)、magic nubmer (0xAA55)組成?

主分區表有4個記錄,對應主分區1-主分區4,共64 字節。最后的 magic number 是 2 字節?

2、主引導加載程序搜索主分區表,掃描全部4個分區記錄,確保只有1個是被標為”active“ 的(用 fdisk 可以設置某個分區為 active 分區)。?

然后讀入該分區的引導扇區(前512 字節)。active 分區一般是 C 盤或者 linux 的第一個分區?

3、主引導加載程序的作用就是讀入第2階段的引導加載程序?



第二階段引導加載程序?

1、第2階段引導加載程序的目的是加載內核和 initrd 。GRUB 和 LILO 都是把 boot loader 程序分成兩部分,一部分在 MBR ,一部分在”active" 分區的引導扇區?

2、第2階段引導加載程序被讀入內存后,它讀取 root() 命令給出的分區下的 grub/grub.conf ,顯示一個菜單,供用戶選擇?

3、GRUB 可以細分為3個階段,中間的一個是 stage1.5 ,它跟在 stage1 的后面,目的是讓 grub 能夠識別文件系統的類型?



內核?

1、內核自解壓?

2、按照 bootloader 向它提供的 initrd 在內存中的地址,把 /dev/initrd 的內容拷貝到 /dev/ram ,并釋放 /dev/initrd 所占用的內存?

3、把 /dev/ram 按 rw 的模式掛載為初始根文件系統?

4、執行其上面的 /linuxrc 或者 /init 腳本,目的是加載驅動模塊?

5、在 /linuxrc 和 /init 腳本中,會有 pivot_root ()或者 switchroot 把 /sysroot 下的真正根文件系統設備掛載到 / ,把初始根文件系統掛載到 /initrd 下?

6、/linuxrc 和 /init 腳本的后面會 umount /initrd 下的初始根文件系統(即使沒有完全卸載,也會在 /etc/rc.d/rc.sysinit 中把它們全部卸載)?

7、接下來是啟動 init 進程。在 2.4 內核中,這個步驟是由內核完成的。但在 2.6 內核中,這個步驟是由 /init 腳本完成的。?


Init?

1、init 首先執行 /etc/rc.d/rc.sysinit 進行系統的初始化?

2、而 rc.sysint 會先執行 /etc/rc.d/init.d/functions ,獲得一些有用的函數,例如 daemon()、action ()、success()、failure()等?

3、按照默認運行級別或者 grub 啟動時的 kernel 行給出的運行級別運行 /etc/rcN.d/ 下的腳本,先執行 K 開頭的(按從低到高),再執行S開頭的(從低到高)?

這個過程“有可能”是通過執行 /etc/rc.d/rc 腳本實現的。因為 rc 腳本是為改變 runlevel 而做的,那么從關機(level 0)到 正常(level3/5)應該也算是?

一種特殊的改變 runlevel 的情況吧?


4、按照 /etc/inittab 的要求在指定的虛擬控制臺上創建 mingetty 進程,提示輸入用戶名和密碼?

5、執行 login 命令,login 命令會做如下工作 :?

a)如果存在 ~/.hashlogin ,則以 "quiet" 的方式登錄,不顯示郵件、不打印 motd?

如果存在 /var/log/lastlog ,則打印最后登錄時時間?

b)設置環境變量,包括 HOME、MAIL、PATH 、SHELL、TERM 等?

PATH 值默認是 /usr/local/bin:/bin:/usr/bin (對于普通用戶而言),?
對于 root 而言,則是 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 。?

c)如果不是 quiet login ,則打印用戶的郵件數量和 /etc/motd 文件)?

d)啟動 login shell (默認是 /bin/sh),并執行 ~/.bashprofile?

e)~/.bashprofile 會自動執行 ~/.bashrc ,而 ~/.bashrc 又調用 /etc/bashrc

?

然后就是強人的對Linux /etc/rc.sysinit, /etc/rc.d/rc, /etc/rc.d/functions這些腳本的分析,很到位。文章中標注為紅色的是未分析的部分。??

/Files/super119/Linux_startup_scripts_hack.rar?

?

轉載于:https://www.cnblogs.com/super119/archive/2010/12/18/1909951.html

總結

以上是生活随笔為你收集整理的来自ChinaUnix的对Linux rc.sysinit, rc, functions脚本的分析和Linux启动分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。