linux文件系統(tǒng)怎樣初始化步驟
linux文件系統(tǒng)初始化步驟
System V init啟動過程
概括地講,Linux/Unix系統(tǒng)一般有兩種不同的初始化啟動方式.
1) BSD system init
2) System V init
大多數(shù)發(fā)行套件的Linux使用了與System V init相仿的init也就是Sys V init,它比傳統(tǒng)的BSD system init更容易且更加靈活。
System V init的主要思想是定義了不同的"運行級別(runlevel)"。通過配置文件/etc/inittab定義了系統(tǒng)引導(dǎo)時的運行級別, 進入或者切換到一個運行級別時做什么。每個運行級別對應(yīng)于一個子目錄/etc/rc.d/rcX.d。
每個rcX.d目錄中都是一些以S或K開頭的文件鏈接。這些鏈接指向的腳本都 可以接收start和stop參數(shù),S開頭的鏈接會傳入start參數(shù),一般是開啟一項服務(wù),K會傳入stop參數(shù),一般是停止某服務(wù)。
以下是一個大致的System V init過程:
(1)init 過程執(zhí)行的第一個腳本是 /etc/rc.d/rc.sysinit,它主要做在各個運行級別中進行初始化工作,包括: 啟動交換分區(qū);檢查磁盤;設(shè)置主機名;檢查并掛載文件系統(tǒng);加載并初始化硬件模塊.
(2)執(zhí)行缺省的運行級別模式。 這一步的內(nèi)容主要在/etc/inittab中體現(xiàn), inittab文件會告訴init進程要進入什么運行級別,以及在哪里可以找到該運行級別的配置文件.
(3)執(zhí)行/etc/rc.d/rc.local腳本文件。 這也是init過程中執(zhí)行的最后一個腳本文件,所以用戶可以在這個文件中添加一些需要在登錄之前執(zhí)行的命令.
(4)執(zhí)行/bin/login程序
注意:
System V init只是一種模式,每個系統(tǒng)初始化都有差異,但大體上不會相差太多。如busybox執(zhí)行的第一個啟動腳本就是/etc/init.d/rcS,而且不可以改變,與上面講的不同。
LFS文件系統(tǒng)初始化示例
inittab文件
由下內(nèi)容可以看出,最先執(zhí)行的是/etc/rc.d/init.d/rc文件,給這個文件傳入的參數(shù)是一個數(shù)字,rc會由傳入的數(shù)字合成rcX.d目錄的路徑,然后執(zhí)行其中的所有腳本鏈接。當然這只是一部分功能。
# Begin /etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/init.d/rc sysinit #可以設(shè)定初始化腳本
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目錄結(jié)構(gòu)
只是一部分,有刪減。
.
├── fstab
├── inittab
├── inputrc
├── profile
├── rc.d
│ ├── init.d
│ │ ├── checkfs
│ │ ├── cleanfs
...
│ │ ├── modules
│ │ ├── 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
│ ├── S05modules -> ../init.d/modules
...
├── udev
│ ├── rules.d
│ │ └── 55-lfs.rules
│ └── udev.conf
└── vimrc
network腳本
#!/bin/sh
. /etc/sysconfig/rc
. ${rc_functions}
. /etc/sysconfig/network
case " class="main">
linux文件系統(tǒng)怎樣初始化步驟
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)
linux文件系統(tǒng)怎樣初始化步驟
linux文件系統(tǒng)初始化步驟
System V init啟動過程
概括地講,Linux/Unix系統(tǒng)一般有兩種不同的初始化啟動方式.
1) BSD system init
2) System V init
大多數(shù)發(fā)行套件的Linux使用了與System V init相仿的init也就是Sys V init,它比傳統(tǒng)的BSD system init更容易且更加靈活。
System V init的主要思想是定義了不同的"運行級別(runlevel)"。通過配置文件/etc/inittab定義了系統(tǒng)引導(dǎo)時的運行級別, 進入或者切換到一個運行級別時做什么。每個運行級別對應(yīng)于一個子目錄/etc/rc.d/rcX.d。
每個rcX.d目錄中都是一些以S或K開頭的文件鏈接。這些鏈接指向的腳本都 可以接收start和stop參數(shù),S開頭的鏈接會傳入start參數(shù),一般是開啟一項服務(wù),K會傳入stop參數(shù),一般是停止某服務(wù)。
以下是一個大致的System V init過程:
(1)init 過程執(zhí)行的第一個腳本是 /etc/rc.d/rc.sysinit,它主要做在各個運行級別中進行初始化工作,包括: 啟動交換分區(qū);檢查磁盤;設(shè)置主機名;檢查并掛載文件系統(tǒng);加載并初始化硬件模塊.
(2)執(zhí)行缺省的運行級別模式。 這一步的內(nèi)容主要在/etc/inittab中體現(xiàn), inittab文件會告訴init進程要進入什么運行級別,以及在哪里可以找到該運行級別的配置文件.
(3)執(zhí)行/etc/rc.d/rc.local腳本文件。 這也是init過程中執(zhí)行的最后一個腳本文件,所以用戶可以在這個文件中添加一些需要在登錄之前執(zhí)行的命令.
(4)執(zhí)行/bin/login程序
注意:
System V init只是一種模式,每個系統(tǒng)初始化都有差異,但大體上不會相差太多。如busybox執(zhí)行的第一個啟動腳本就是/etc/init.d/rcS,而且不可以改變,與上面講的不同。
LFS文件系統(tǒng)初始化示例
inittab文件
由下內(nèi)容可以看出,最先執(zhí)行的是/etc/rc.d/init.d/rc文件,給這個文件傳入的參數(shù)是一個數(shù)字,rc會由傳入的數(shù)字合成rcX.d目錄的路徑,然后執(zhí)行其中的所有腳本鏈接。當然這只是一部分功能。
# Begin /etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/init.d/rc sysinit #可以設(shè)定初始化腳本
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目錄結(jié)構(gòu)
只是一部分,有刪減。
.
├── fstab
├── inittab
├── inputrc
├── profile
├── rc.d
│ ├── init.d
│ │ ├── checkfs
│ │ ├── cleanfs
...
│ │ ├── modules
│ │ ├── 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
│ ├── S05modules -> ../init.d/modules
...
├── udev
│ ├── rules.d
│ │ └── 55-lfs.rules
│ └── udev.conf
└── vimrc
network腳本
#!/bin/sh
. /etc/sysconfig/rc
. ${rc_functions}
. /etc/sysconfig/network
case " class="main">
stopsleep 1
linux文件系統(tǒng)怎樣初始化步驟
linux文件系統(tǒng)初始化步驟
System V init啟動過程
概括地講,Linux/Unix系統(tǒng)一般有兩種不同的初始化啟動方式.
1) BSD system init
2) System V init
大多數(shù)發(fā)行套件的Linux使用了與System V init相仿的init也就是Sys V init,它比傳統(tǒng)的BSD system init更容易且更加靈活。
System V init的主要思想是定義了不同的"運行級別(runlevel)"。通過配置文件/etc/inittab定義了系統(tǒng)引導(dǎo)時的運行級別, 進入或者切換到一個運行級別時做什么。每個運行級別對應(yīng)于一個子目錄/etc/rc.d/rcX.d。
每個rcX.d目錄中都是一些以S或K開頭的文件鏈接。這些鏈接指向的腳本都 可以接收start和stop參數(shù),S開頭的鏈接會傳入start參數(shù),一般是開啟一項服務(wù),K會傳入stop參數(shù),一般是停止某服務(wù)。
以下是一個大致的System V init過程:
(1)init 過程執(zhí)行的第一個腳本是 /etc/rc.d/rc.sysinit,它主要做在各個運行級別中進行初始化工作,包括: 啟動交換分區(qū);檢查磁盤;設(shè)置主機名;檢查并掛載文件系統(tǒng);加載并初始化硬件模塊.
(2)執(zhí)行缺省的運行級別模式。 這一步的內(nèi)容主要在/etc/inittab中體現(xiàn), inittab文件會告訴init進程要進入什么運行級別,以及在哪里可以找到該運行級別的配置文件.
(3)執(zhí)行/etc/rc.d/rc.local腳本文件。 這也是init過程中執(zhí)行的最后一個腳本文件,所以用戶可以在這個文件中添加一些需要在登錄之前執(zhí)行的命令.
(4)執(zhí)行/bin/login程序
注意:
System V init只是一種模式,每個系統(tǒng)初始化都有差異,但大體上不會相差太多。如busybox執(zhí)行的第一個啟動腳本就是/etc/init.d/rcS,而且不可以改變,與上面講的不同。
LFS文件系統(tǒng)初始化示例
inittab文件
由下內(nèi)容可以看出,最先執(zhí)行的是/etc/rc.d/init.d/rc文件,給這個文件傳入的參數(shù)是一個數(shù)字,rc會由傳入的數(shù)字合成rcX.d目錄的路徑,然后執(zhí)行其中的所有腳本鏈接。當然這只是一部分功能。
# Begin /etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/init.d/rc sysinit #可以設(shè)定初始化腳本
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目錄結(jié)構(gòu)
只是一部分,有刪減。
.
├── fstab
├── inittab
├── inputrc
├── profile
├── rc.d
│ ├── init.d
│ │ ├── checkfs
│ │ ├── cleanfs
...
│ │ ├── modules
│ │ ├── 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
│ ├── S05modules -> ../init.d/modules
...
├── udev
│ ├── rules.d
│ │ └── 55-lfs.rules
│ └── udev.conf
└── vimrc
network腳本
#!/bin/sh
. /etc/sysconfig/rc
. ${rc_functions}
. /etc/sysconfig/network
case " class="main">
start;;
*)
echo "Usage:
linux文件系統(tǒng)怎樣初始化步驟
linux文件系統(tǒng)初始化步驟
System V init啟動過程
概括地講,Linux/Unix系統(tǒng)一般有兩種不同的初始化啟動方式.
1) BSD system init
2) System V init
大多數(shù)發(fā)行套件的Linux使用了與System V init相仿的init也就是Sys V init,它比傳統(tǒng)的BSD system init更容易且更加靈活。
System V init的主要思想是定義了不同的"運行級別(runlevel)"。通過配置文件/etc/inittab定義了系統(tǒng)引導(dǎo)時的運行級別, 進入或者切換到一個運行級別時做什么。每個運行級別對應(yīng)于一個子目錄/etc/rc.d/rcX.d。
每個rcX.d目錄中都是一些以S或K開頭的文件鏈接。這些鏈接指向的腳本都 可以接收start和stop參數(shù),S開頭的鏈接會傳入start參數(shù),一般是開啟一項服務(wù),K會傳入stop參數(shù),一般是停止某服務(wù)。
以下是一個大致的System V init過程:
(1)init 過程執(zhí)行的第一個腳本是 /etc/rc.d/rc.sysinit,它主要做在各個運行級別中進行初始化工作,包括: 啟動交換分區(qū);檢查磁盤;設(shè)置主機名;檢查并掛載文件系統(tǒng);加載并初始化硬件模塊.
(2)執(zhí)行缺省的運行級別模式。 這一步的內(nèi)容主要在/etc/inittab中體現(xiàn), inittab文件會告訴init進程要進入什么運行級別,以及在哪里可以找到該運行級別的配置文件.
(3)執(zhí)行/etc/rc.d/rc.local腳本文件。 這也是init過程中執(zhí)行的最后一個腳本文件,所以用戶可以在這個文件中添加一些需要在登錄之前執(zhí)行的命令.
(4)執(zhí)行/bin/login程序
注意:
System V init只是一種模式,每個系統(tǒng)初始化都有差異,但大體上不會相差太多。如busybox執(zhí)行的第一個啟動腳本就是/etc/init.d/rcS,而且不可以改變,與上面講的不同。
LFS文件系統(tǒng)初始化示例
inittab文件
由下內(nèi)容可以看出,最先執(zhí)行的是/etc/rc.d/init.d/rc文件,給這個文件傳入的參數(shù)是一個數(shù)字,rc會由傳入的數(shù)字合成rcX.d目錄的路徑,然后執(zhí)行其中的所有腳本鏈接。當然這只是一部分功能。
# Begin /etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/init.d/rc sysinit #可以設(shè)定初始化腳本
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目錄結(jié)構(gòu)
只是一部分,有刪減。
.
├── fstab
├── inittab
├── inputrc
├── profile
├── rc.d
│ ├── init.d
│ │ ├── checkfs
│ │ ├── cleanfs
...
│ │ ├── modules
│ │ ├── 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
│ ├── S05modules -> ../init.d/modules
...
├── udev
│ ├── rules.d
│ │ └── 55-lfs.rules
│ └── udev.conf
└── vimrc
network腳本
#!/bin/sh
. /etc/sysconfig/rc
. ${rc_functions}
. /etc/sysconfig/network
case " class="main">
{start|stop|restart}"exit 1
;;
esac
# End /etc/rc.d/init.d/network