當前位置:首頁 » 操作系統 » linux初始化系統

linux初始化系統

發布時間: 2023-08-20 12:34:08

A. 樹莓派linux啟動過程簡介

    昨天在寫關於linux設置腳本開機啟動的文章時,有個疑問就是開機時怎麼確認運行級別,然後遍歷執行/etc/rcN.d/目錄下的所有服務程序。帶著疑問, 在前人的基礎上 學習總結一下linux系統初始化的工作的內容,現在樹莓派4B上展示出來。

1、載入內核

    當計算機打開電源後,首先是BIOS開機自檢,按照BIOS中設置的啟動設備(通常是硬碟)來啟動。操作系統接管硬體以後,首先讀入 /boot 目錄下的內核文件。樹莓派4B的內核是Raspbian GNU/Linux 10 (buster),基於Debian。

2、初始化進程init

    內核文件載入以後,運行第一個程序init,它的作用是初始化系統環境。init位於目錄/sbin,進程號PID為1,即1號進程,其他所有進程都由init衍生,是init的子進程。

    同時還有個0號進程,idle進程,在系統初始化時由內核kernel自身從無到有創建,通過調用kernel_thread創建一個內核線程去執行init函數,0號進程創建1號進程。

3、運行級別

    具體介紹請參考筆者的文章-Linux運行級別簡介  ,但是開機時是怎麼確定運行級別的呢?

    init進程首先讀取文件 /etc/inittab,它是運行級別的設置文件。但是各個發行版不太一樣,init的配置文件也不一樣,有可能使用/etc/event.d裡面的配置文件,最新版的改用為/etc/init目錄。

4、開機啟動程序

    具體詳情請參考文章-linux中/etc/init.d設置開機啟動 ,確定運行級別後,執行rcN.d目錄下的文件,這些鏈接文件是連接到init.d目錄下的程序。init進程逐一載入開機啟動程序,其實就是運行這個目錄里的啟動腳本。

    比如運行級別為5(圖形化多用戶)時啟動的程序:

5、用戶登錄

    開機啟動程序載入完畢以後用戶登錄。用戶的登錄方式有三種:

    命令行登錄:init進程調用getty程序。

    ssh登錄:init進程調用sshd程序。

    圖形界面登錄:init進程調用顯示管理器,Gnome圖形界面對應的顯示管理器為gdm。

6 、login shell

    默認shell時bash,命令行界面,讓用戶可以直接與操作系統對話。讀取環境變數,具體請參考筆者文章-Linux環境變數的設置。

B. linux系統恢復初始設置

1、把linux安裝光碟的第一張放到光碟機,然後重新啟動機器,在BOIS中把系統用光碟機來引導;

2、等安裝界面友攔飢出來後,按F4鍵,也好返就是linuxrescue模衡友式;

3、進行配製,過後就繼續這個過程;

4、然後會出現這樣的提示符sh5,可以操作GRUB了,輸入grubshgrub會出現這樣的提示符grub,可以在這樣的字元後面,輸入grubroothdXY ,setuphd0是把GRUB寫到硬碟的MBR上。

C. 在LInux中用戶初始配置文件有哪些,各有什麼作用

1. 設置用戶:用戶名是系統中一個獨一無二也叫登陸名。以及和它相對應的password由6-8位組成。以使用戶可以通過 password來登陸系
統。同時,還有用戶的家目錄。是用戶登陸以後的主目錄。還有用戶的shell包
括:Bourne shell Korn shell C shell Z shell BASH shell TC shell。用戶初始化
文件用來定製用戶的工作環境。
2. 用戶名的組成由26個大小寫字母和10個數字組成。用戶名不能包括下劃線和空格。同時UID的范圍為100-60000所有的UID必須是唯一的。GID的范圍也是100-60000。
3. 通過admintool管理用戶可以包括一下方
面:Users Groups Hosts Printers Serial ports Software。Admintool必須用ROOT
用戶登陸。Admintool&。使用命令修改鎖定用戶:passwd –l username在 /etc/shadow 中password
一項的正常顯示變為*LK*表示用戶已經被鎖定。
Passwd中各列為:
loginID:x:UID:GID:comment:home_directory:login_shell
root UID:0 超級用戶帳號,幾乎沒有任何約束並且不考慮其他所有的登陸,保護和許可;可以進入系統訪問
daemon UID:1 控制後台進程的系統帳號
bin UID:2 管理大部分命令的帳號
sys UID:3 管理許多系統文件的帳號
adm UID:4 管理某些管理文件的帳號
lp UID:71 列印服務帳號
smtp UID:0 smtp郵件者使用簡單網路管理協議。SMTP是INTERNET標准協議
uucp UID:5 為UNIX-to-UNIX拷貝程序(UUCP)捆綁數據文件和目標的帳號
nuucp UID:6 使用遠程系統登陸到主機傳送文件的帳號
listen UID:37 網路監聽帳號
nobody UID:60001 匿名帳號,當獨立於root用戶建立一個需求時分派NFS伺服器。nobody帳號分派軟體進程時不需要任何特殊的許可權。
noaccess UID:60002 需通過一些應用程序而不登陸系統時,為了訪問系統而為一個用戶或者進程分派的帳號
nobody4 UID:65534 SunOS4.0或者4.1的匿名帳號

/etc/shadow文件
loginID:password:lastchg:min:max:warn:inactive:expire

/etc/group文件
groupname:group-password:GID:username-list

D. Linux系統啟動及定製過程

CentOS的啟動流程總體順序如下:

POST --> Boot Sequence --> bootloader(MBR) --> Kernel --> 載入rootfs --> switchroot --> /sbin /init --> (配置文件:/etc/inittab, /etc/init/*.conf) --> 根據init配置文件設置默認運行級別 --> 運行系統初始化腳本/etc/rc.d/rc.sysinit,完成系統初始化 --> 開啟或關閉用戶選定的對應運行級別下所對應的服務 --> 啟動終端,列印登錄提示符。

註:前面加粗部分代表內核空間的系統啟動流程,後面未加粗部分代表用戶空間的系統啟動流程。

第一步:硬體啟動過程

POST加電自檢

主要實現的功能是檢測各個外圍硬體設備是否存在而且能夠正常運行起來,實現這一自檢功能的是固化在主板上的ROM(主要代表為CMOS)晶元上的BIOS(Basic Input/Output System)程序;例如BIOS會檢測CPU、Memory以及I/O設備是否能夠正常運行,如果是個人計算機的話可能還會檢測一下顯示器。只要一通電,CPU就會自動去載入ROM晶元上的BIOS程序,是這樣來實現的。而檢測完成之後就進行硬體設備的初始化。

選擇啟動設備以載入MBR

主要實現的功能是選擇要啟動的硬體設備,選擇了之後就可以讀取這個設備上位於MBR里頭的bootloader了。這一步的實現是這樣的:根據BIOS中對啟動順序的設定,BIOS自己會依次掃描各個引導設備,然後第一個被掃描到具有引導程序(bootloader)的設備就被作為要啟動的引導設備。

MBR(Main Boot Record),是硬碟的0柱面,0磁軌、1扇區(第一個扇區),稱為主引導扇區,也稱為主引導記錄。它由三部分組 成:主引導程序(BootLoader)、硬碟分區表DPT(Disk Partition table)和硬碟有效標志(55AA)。
註:硬碟默認一個扇區大小為512位元組。
第一部分,主引導程序(BootLoader)佔446個位元組,負責從活動分區中裝載,並運行系統引導程序。
第二部分,硬碟分區表DPT佔64個位元組,有4個分區表項,每個分區表項佔16個位元組,硬碟中分區有多少以及每一個分區的大小都記 錄在其中。
第三部分,硬碟有效標志,佔2個位元組,固定為55AA。如果這個標志位0xAA55,就認為這個是MB

第二步:GRUB引導階段

不同的系統有不同的主引導程序(BootLoader)。Windows使用的是NTLDR(NT Loader,Windows NT系列操作系統)、Bootmgr(Boot Manager,Windows Vista,7,8,10),Linux一般使用的是grub(也叫grub legacy)和grub2。GRUB程序載入執行並引導kernel(內核)程序,其中有三個階段,Grub引導階段的文件都在/boot/grub/目錄下。

stage1: 這一階段執行的就是系統安裝時預先寫入到MBR的Bootloader程序,即是存放在MBR的前446位元組里的程序。它的任務僅是讀取(載入)硬碟的0柱面,0磁軌,2扇區的內容(/boot/grub/stage1)並執行。

stage1.5: 這一階段是Stage1階段和Stage2階段的橋梁,功能是載入stage2所在分區的文件系統驅動,讓stage1中的bootloader能識別stage2所在分區的文件系統,此後grub程序便有能力去訪問/boot/grub/stage2。

stage2: 這一階段讀取並解析grub的配置文件/boot/grub/grub.cnf,根據配置文件載入內核鏡像到內存中,通過initrd程序建立虛擬根文件系統,最後調用(轉交)內核。

第三步:內部引導階段

載入內核,核心開始解壓,啟動一些最核心的程序。為了讓內核足夠的輕小,硬體驅動並沒放在內核文件裡面。系統僅探測可識別到的所有硬體設備,載入硬體驅動程序,即載入真正的根文件系統所在設備的驅動程序(有可能會藉助於ramdisk載入驅動),以只讀方式掛載根文件系統,運行用戶空間的第一個應用程序:/sbin/init。

第四步:init初始化階段(系統初始化階段)

雖然CentOS 5、CentOS 6以及CentOS 7的/etc/init配置文件內容各不相同,但總體的啟動流程相同:/sbin/init --> 根據/etc/inittab配置文件設置默認運行級別 --> 運行系統初始化腳本/etc/rc.d/rc.sysinit,完成系統初始化 --> 關閉或啟動用戶選定的默認運行級別所對應的服務 。

對於CentOS 5來說,初始化程序init是SysV init,其配置文件為:/etc/inittab; 對於CentOS 6來說,初始化程序init是upstart,其配置文件為:/etc/inittab, /etc/init/ .conf,也就是upstart將配置文件拆分成多個,在/etc/init/目錄下以conf結尾的都是upstart風格的配置文件,而/etc/inittab僅用於設置默認運行級別; 對於CentOS 7來說,初始化程序init是systemd,其配置文件:/usr/lib/system/systemd/, /etc/systemd/system/

具體執行過程:/sbin/init程序會讀取/etc/inittab文件確認運行級別,然後執行/etc/rc.d/rc腳本,根據確認的運行級別啟動對應/etc/rc.d/rc#.d/目錄下的服務(#為0~6),與此同時執行系統初始化腳本/etc/rc.sysinit(軟鏈接,指向/etc/rc.d/rc.sysinit),還會載入/etc/rc.local(軟鏈接,指向/etc/rc.d/rc.local文件)用戶自定義服務(腳本)。

CentOS7中初始化進程變為了systemd,systemd即為system daemon,是Linux下的一種init軟體,開發目標是提供更優秀的框架以表示系統服務間的依賴關系,並依此實現系統初始化時服務的並行啟動,同時達到降低Shell系統開銷的效果,最終代替現在常用的System V與BSD風格的init程序。與多數發行版使用的System V風格的init相比,systemd採用了以下的新技術:A.採用Socket激活式與匯流排激活式服務,以提高相互依賴的各服務的並行運行性能;B.用Cgroup代替PID來追蹤進程,即使是兩次fork之後生成的守護進程也不會脫離systemd的控制。

第五步:啟動終端

根據前面獲取的運行級別來啟動終端,mingetty程序是用於啟動終端的,它會調用登錄程序login,這樣就能顯示出登錄提示符了,類似mingetty這種用於打開終端的程序還有getty等。而如果默認運行級別為5,則會打開圖形界面。

第一步:硬體啟動過程

這一步和CentOS6差不多,詳細請看1.1內容。

第二步:GRUB引導階段

從這一步開始,CentOS6和CentOS7的啟動流程區別開始展現出來了。CentOS7的主引導程序使用的是grub2,執行過程是先載入boot.img、core.img兩個鏡像,再載入MOD模塊文件,把grub2程序載入執行,接著解析配置文件/boot/grub/grub.cfg,根據配置文件載入內核鏡像到內存,之後構建虛擬根文件系統,最後轉到內核。

CentOS7中使用命令進行配置,而不直接去修改配置文件了。grub.cfg配置文件開頭注釋部分說明了由/etc/grub.d/目錄下文件和/etc/default/grub文件組成。改好配置後都需要使用命令grub2-mkconfig -o /boot/grub2/grub.cfg,將配置文件重新生成。

第三步:內部引導階段

這一步與CentOS6也差不多,載入驅動,切換到真正的根文件系統,唯一不同的是執行的初始化程序變成了/usr/lib/systemd/systemd。

第四步:init初始化階段(系統初始化階段)

CentOS7中我們的初始化進程變為了systemd。執行默認target配置文件/etc/systemd/system/default.target(這是一個軟鏈接,與默認運行級別有關)。然後執行sysinit.target來初始化系統和basic.target來准備操作系統。接著啟動multi-user.target下的本機與伺服器服務,並檢查/etc/rc.d/rc.local文件是否有用戶自定義腳本需要啟動。最後執行multi-user下的getty.target及登錄服務,檢查default.target是否有其他的服務需要啟動。

注意:/etc/systemd/system/default.target指向了/lib/systemd/system/目錄下的graphical.target或multiuser.target。而graphical.target依賴multiuser.target,multiuser.target依賴basic.target,basic.target依賴sysinit.target,所以倒過來執行。

unit對象:unit表示不同類型的systemd對象,通過配置文件進行標識和配置;文件中主要包含了系統服務、監聽socket、保存的系統快照以及其他與init相關的信息。(也就是CentOS6中的伺服器啟動腳本)

第五步:啟動終端

systemd執行sysinit.target
systemd啟動multi-user.target下的本機與伺服器服務
systemd執行multi-user.target下面的/etc/rc.d/rc.local
Systemd執行multi-user.target下的getty.target及登錄服務
getty.target是啟動終端的systemd對象。如果到此步驟,系統沒有指定啟動圖形桌面,到此就可以結束了,如果需要啟動圖形界面,要在此基礎上啟動桌面程序。

從 CentOS 7 版本之後,系統開始用 systemd 實現init進程,系統啟動和伺服器守護進程管理器功能,負責在系統啟動或運行時,激活系統資源,伺服器進程和其它進程。

unit表示不同類型的systemd對象,通過配置文件進行標識和配置;文件中主要包含了系統服務、監聽socket、保存的系統快照以及其它與init相關的信息。

3.2 system unit文件格式

/usr/lib/systemd/system:發行版打包者使用,每個服務最主要的啟動腳本設置,類似於之前的/etc/init.d/

/etc/systemd/system:系統管理員和用戶使用,管理員建立的執行腳本,類似於/etc/rcN.d/Sxx的功能,比上面目錄優先運行

/lib/systemd/system::ubutun的對應目錄

/run/systemd/system:系統執行過程中所產生的服務腳本,比上面目錄優先運行

unit 格式說明:

service unit file文件通常由三部分組成:

Unit段的常用選項:

Service段的常用選項:

Install段的常用選項:

注意:對於新創建的unit文件,或者修改了的unit文件,要通知systemd重載此配置文件,而後可以選擇重啟。

首先在啟動界面按e編輯啟動參數,

將ro參數更改為rw init=/sysroot/bin/sh,按ctr + x啟動系統

按下圖執行命令更改root密碼

E. Linux系統啟動的大致過程

Linux系統啟動的大致過程

Linux操作系統是基於UNIX操作系統發展而來的一種克隆系統,它誕生於1991 年的 [Linux桌面] 10 月5 日。下面我准備了關於Linux系統啟動的大致過程,提供給大家參考!

第一階段:BIOS啟動引導階段;

在該過程中實現硬體的.初始化以及查找啟動介質;

從MBR中裝載啟動引導管理器(GRUB)並運行該啟動引導管理

第二階段:GRUB啟動引導階段;

裝載stage1

裝載stage1.5

裝載stage2

讀取/boot/grub.conf文件並顯示啟動菜單;

裝載所選的kernel和initrd文件到內存中

第三階段:內核階段:

運行內核啟動參數;

解壓initrd文件並掛載initd文件系統,裝載必須的驅動;

掛載根文件系統

第四階段:Sys V init初始化階段:

啟動/sbin/init程序;

運行rc.sysinit腳本,設置系統環境,啟動swap分區,檢查和掛載文件系統;

讀取/etc/inittab文件,運行在/et/rc.d/rc<#>.d中定義的不同運行級別的服務初始化腳本;

打開字元終端1-6號控制台/打開圖形顯示管理的7號控制台

同時在上述過程中各階段所需要讀取的文件和操作的對象:

BIOS啟動引導階段 GRUB啟動引導階段 內核階段 /init/sysinit階段

====================================================================================

None /boot/grub/grub.conf /boot/vmlinuz- /etc/rc.d/rc.sysinit

/boot/grub/stage1_5 /boot/initrd- /etc/inittab

/boot/grub/stage2 /etc/rc.d/rc<#>.d

/etc/rc.d/init.d/*

;

F. linux文件系統怎樣初始化步驟

System V init啟動過程
概括地講,Linux/Unix系統一般有兩種不同的初始化啟動方式.
1) BSD system init
2) System V init
大多數發行套件的Linux使用了與System V init相仿的init也就是Sys V init,它比傳統的BSD system init更容易且更加靈活。
System V init的主要思想是定義了不同的"運行級別(runlevel)"。通過配置文件/etc/inittab定義了系統引導時的運行級別, 進入或者切換到一個運行級別時做什麼。每個運行級別對應於一個子目錄/etc/rc.d/rcX.d。
每個rcX.d目錄中都是一些以S或K開頭的文件鏈接。這些鏈接指向的腳本都 可以接收start和stop參數,S開頭的鏈接會傳入start參數,一般是開啟一項服務,K會傳入stop參數,一般是停止某服務。
以下是一個大致的System V init過程:
(1)init 過程執行的第一個腳本是 /etc/rc.d/rc.sysinit,它主要做在各個運行級別中進行初始化工作,包括: 啟動交換分區;檢查磁碟;設置主機名;檢查並掛載文件系統;載入並初始化硬體模塊.
(2)執行預設的運行級別模式。 這一步的內容主要在/etc/inittab中體現, inittab文件會告訴init進程要進入什麼運行級別,以及在哪裡可以找到該運行級別的配置文件.
(3)執行/etc/rc.d/rc.local腳本文件。 這也是init過程中執行的最後一個腳本文件,所以用戶可以在這個文件中添加一些需要在登錄之前執行的命令.
(4)執行/bin/login程序
注意:
System V init只是一種模式,每個系統初始化都有差異,但大體上不會相差太多。如busybox執行的第一個啟動腳本就是/etc/init.d/rcS,而且不可以改變,與上面講的不同。
LFS文件系統初始化示例
inittab文件
由下內容可以看出,最先執行的是/etc/rc.d/init.d/rc文件,給這個文件傳入的參數是一個數字,rc會由傳入的數字合成rcX.d目錄的路徑,然後執行其中的所有腳本鏈接。當然這只是一部分功能。
# Begin /etc/inittab
id:3:initdefault:
<em><strong>si::sysinit:/etc/rc.d/init.d/rc sysinit</strong></em> #可以設定初始化腳本
l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
...
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
su:S016:once:/sbin/sulogin
1:2345:respawn:/sbin/agetty tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
...
# End /etc/inittab

etc目錄結構
只是一部分,有刪減。
.
├── fstab
├── <em>inittab</em>
├── inputrc
├── profile
├── rc.d
│ ├── init.d
│ │ ├── checkfs
│ │ ├── cleanfs
...
│ │ ├── moles
│ │ ├── mountfs
│ │ ├── mountkernfs
│ │ ├── network
│ │ ├── rc #when boot, run.
│ │ ├── reboot
...
│ ├── rc0.d
│ │ ├── K80network -> ../init.d/network
│ │ ├── K90sysklogd -> ../init.d/sysklogd
│ │ ├── S60sendsignals -> ../init.d/sendsignals
│ │ ├── S70mountfs -> ../init.d/mountfs
│ │ ├── S80swap -> ../init.d/swap
│ │ ├── S90localnet -> ../init.d/localnet
│ │ └── S99halt -> ../init.d/halt
│ ├── rc1.d
│ │ ├── K80network -> ../init.d/network
│ │ └── K90sysklogd -> ../init.d/sysklogd
│ ├── rc2.d
│ │ ├── K80network -> ../init.d/network
│ │ └── K90sysklogd -> ../init.d/sysklogd
│ ├── rc3.d
│ │ ├── S10sysklogd -> ../init.d/sysklogd
│ │ └── S20network -> ../init.d/network
│ ├── rc4.d
│ │ ├── S10sysklogd -> ../init.d/sysklogd
│ │ └── S20network -> ../init.d/network
│ ├── rc5.d
│ │ ├── S10sysklogd -> ../init.d/sysklogd
│ │ └── S20network -> ../init.d/network
│ ├── rc6.d
│ │ ├── K80network -> ../init.d/network
│ │ ├── K90sysklogd -> ../init.d/sysklogd
│ │ ├── S60sendsignals -> ../init.d/sendsignals
│ │ ├── S70mountfs -> ../init.d/mountfs
│ │ ├── S80swap -> ../init.d/swap
│ │ ├── S90localnet -> ../init.d/localnet
│ │ └── S99reboot -> ../init.d/reboot
│ └── rcsysinit.d
│ ├── S00mountkernfs -> ../init.d/mountkernfs
│ ├── S02consolelog -> ../init.d/consolelog
│ ├── S05moles -> ../init.d/moles
...
├── udev
│ ├── rules.d
│ │ └── 55-lfs.rules
│ └── udev.conf
└── vimrc

network腳本
#!/bin/sh

. /etc/sysconfig/rc
. ${rc_functions}
. /etc/sysconfig/network

case "${1}" in
start)
# Start all network interfaces
for file in ${network_devices}/ifconfig.*
do
interface=${file##*/ifconfig.}

# skip if $file is * (because nothing was found)
if [ "${interface}" = "*" ]
then
continue
fi

IN_BOOT=1 ${network_devices}/ifup ${interface}
done
;;

stop)
# Reverse list
FILES=""
for file in ${network_devices}/ifconfig.*
do
FILES="${file} ${FILES}"
done

# Stop all network interfaces
for file in ${FILES}
do
interface=${file##*/ifconfig.}

# skip if $file is * (because nothing was found)
if [ "${interface}" = "*" ]
then
continue
fi

IN_BOOT=1 ${network_devices}/ifdown ${interface}
done
;;

restart)
${0} stop
sleep 1
${0} start
;;

*)
echo "Usage: ${0} {start|stop|restart}"
exit 1
;;
esac

# End /etc/rc.d/init.d/network



G. 嵌入式Linux系統的如何進行初始化

LINUX系統的初始化可以分為兩部分:內核部分和init程序部分。內核主要完成系統的硬體檢測和初始化,init程序則主要完成系統的各項配置。
主要流程是:CPU自身初始化-->載入BIOS-->BIOS載入內核引導程序(也就是ubuntu我們常說的GRUB)-->內核引導程序載入內核映像(這里的內核代碼是壓縮過的)-->內核映像獲得CPU控制權並開始工作-->內核映像自己解壓縮,開始運行init/main.c中的start_kernel()函數,這時候內核就啟動了,系統初始化,系統的父進程init進程執行起來了,這時候整個系統初始化完畢,接下來只是調用一些UI界面的進程執行。
這是我的一點淺陋簡介,希望對你有所幫助,謝謝!

H. LINUX操作系統的啟動過程

一、啟動內核
首先介紹啟動內核部分。電腦啟動時,BIOS裝載MBR,然後從當前活動分區啟動,LILO獲得引
導過程的控制權後,會顯示LILO提示符。此時如果用戶不進行任何操作,LILO將在等待制定
時間後自動引導默認的操作系統,而如果在此期間按下TAB鍵,則可以看到一個可引導的操作
系統列表,選擇相應的操作系統名稱就能進入相應的操作系統。
當用戶選擇啟動LINUX操作系統時,LILO就會根據事先設置好的信息從ROOT文件系統所在的分
區讀取LINUX映象,然後裝入內核映象並將控制權交給LINUX內核。LINUX內核獲得控制權後,
以如下步驟繼續引導系統:
1. LINUX內核一般是壓縮保存的,因此,它首先要進行自身的解壓縮。內核映象前面的一些
代碼完成解壓縮。
2. 如果系統中安裝有可支持特殊文本模式的、且LINUX可識別的SVGA卡,LINUX會提示用戶
選擇適當的文本顯示模式。但如果在內核的編譯過程中預先設置了文本模式,則不會提示選
擇顯示模式。該顯示模式可通過LILO或RDEV工具程序設置。
3. 內核接下來檢測其他的硬體設備,例如硬碟、軟盤和網卡等,並對相應的設備驅動程序
進行配置。這時,顯示器上出現內核運行輸出的一些硬體信息。
4. 接下來,內核裝載ROOT文件系統。ROOT文件系統的位置可在編譯內核時指定,也可通過
LILO或RDEV指定。文件系統的類型可自動檢測。如果由於某些原因裝載失敗,則內核啟動
失敗,最終會終止系統。

二、執行init程序
其次介紹init程序,利用init程序可以方便地定製啟動其間裝入哪些程序。init的任務是
啟動新進程和退出時重新啟動其它進程。例如,在大多數Linux系統中,啟動時最初裝入
六個虛擬的控制台進程,退出控制台窗口時,進程死亡,然後init啟動新的虛擬登錄控制台,
因而總是提供六個虛擬登陸控控制台進程。
控制init程序操作的規則存放在文件/etc/inittab中。Red Hat Linux預設的inittab文
件如下:
#
#inittab This file describes how the INIT process should set up the system in a certain
#run-level.
#
#
#Default runlevel.The runlevels used by RHS are:
#0-halt(Do NOT set initdefault to this)
#1-Single user mode
#2-Multiuser,without NFS(the same as 3,if you do not have networking)
#3-Full multiuser mode
#4-unused
#5-X11
#6-reboot(Do NOT set initdefault to this)
#
id:3:initdefault:

#system initialization
si::sysinit:/etc/rc.d/rc.sysinit
10:0:wait:/etc/rc.d/rc 0
11:1:wait:/etc/rc.d/rc 1
12:2:wait:/etc/rc.d/rc 2
13:3:wait:/etc/rc.d/rc 3
14:4:wait:/etc/rc.d/rc 4
15:5:wait:/etc/rc.d/rc 5
16:6:wait:/etc/rc.d/rc 6
#Things to run in every runlevel
ud:once:/sbin/update

#Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

#When our UPS tells us power has failed,assume we have a few minutes of
power left.Schele a
#shutdown for 2 minutes from now.
#This does,of course,assume you have powered installed and your UPS
connected and working
#correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Restored;Shutdown Cancelled"

#Run gettys in standard runlevels
1:12345:respawn:/sbin/minggetty tty1
2:2345:respawn:/sbin/minggetty tty2
3:2345:respawn:/sbin/minggetty tty3
4:2345:respawn:/sbin/minggetty tty4
5:2345:respawn:/sbin/minggetty tty5
6:2345:respawn:/sbin/minggetty tty6
#Run xdm in runlevel 5

x:5:respawn:/usr/bin/X11/xdm -nodaemon
Linux有個運行級系統,運行級是表示系統當前狀態和init應運行哪個進程並保持在這種
系統狀態中運行的數字。在inittab文件中,第一個項目指定啟動時裝入的預設運行級。
上例中是個多用戶控制台方式,運行級為3。然後,inittab文件中每個項目指定第二個
欄位的項目用哪種運行級(每個欄位用冒號分開)。因此,對運行級3,下列行是相關的:
13:3:wait:/etc/rc.d/rc 3
1:12345:respawn:/sbin/minggetty tty1
2:2345:respawn:/sbin/minggetty tty2
3:2345:respawn:/sbin/minggetty tty3
4:2345:respawn:/sbin/minggetty tty4
5:2345:respawn:/sbin/minggetty tty5
6:2345:respawn:/sbin/minggetty tty6
最後六行建立Linux提供的六個虛擬控制台。第一行運行啟動腳本/etc/rc.d/ rc 3;
這將運行目錄/etc/
rc.d/rc3.d中包含的所有腳本,這些腳本表示系統初始化時要啟動的程序。一般來說,
這些腳本不需要編輯或改變,是系統預設的。

熱點內容
網路伺服器ip是什麼意思 發布:2025-03-10 05:20:51 瀏覽:191
android載入so失敗 發布:2025-03-10 05:17:02 瀏覽:11
存儲虛擬化原理 發布:2025-03-10 05:16:45 瀏覽:954
雲存儲的分類 發布:2025-03-10 04:51:54 瀏覽:487
迄今最小原子存儲單元面世 發布:2025-03-10 04:38:33 瀏覽:66
肺炎疫苗如何存儲 發布:2025-03-10 04:38:24 瀏覽:463
試用網站源碼 發布:2025-03-10 04:26:28 瀏覽:993
超市管理系統c語言 發布:2025-03-10 04:26:16 瀏覽:861
安卓觸摸鍵怎麼用 發布:2025-03-10 04:24:37 瀏覽:956
郁美凈腳本 發布:2025-03-10 04:23:04 瀏覽:570