新聞中心
目錄

創(chuàng)新互聯(lián)長期為成百上千家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為中山企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站設計、外貿(mào)營銷網(wǎng)站建設,中山網(wǎng)站改版等技術(shù)服務。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
- 3.1. 啟動過程概述
-
- 3.1.1. 第一階段:UEFI
- 3.1.2. 第二階段:引載加載程序
- 3.1.3. 第三階段:迷你 Debian 系統(tǒng)
- 3.1.4. 第四階段:常規(guī) Debian 系統(tǒng)
- 3.2. Systemd 初始化
-
- 3.2.1. 主機名
- 3.2.2. 文件系統(tǒng)
- 3.2.3. 網(wǎng)絡接口初始化
- 3.3. 內(nèi)核消息
- 3.4. 系統(tǒng)消息
- 3.5. 系統(tǒng)管理
- 3.6. 其它系統(tǒng)監(jiān)控
- 3.7. 定制 systemd
-
- 3.7.1. 套接字激活
- 3.8. udev 系統(tǒng)
-
- 3.8.1. 內(nèi)核模塊初始化
作為系統(tǒng)管理員,粗略地了解 Debian 系統(tǒng)的啟動和配置方式是明智的。盡管準確的細節(jié)在安裝的軟件包及對應的文檔中,但這些知識對我們大多數(shù)人來說都是必須掌握的。
下面是 Debian 系統(tǒng)初始化的要點概述。由于 Debian 系統(tǒng)在不斷發(fā)展,您應該參考最新的文檔。
-
Debian Linux 內(nèi)核手冊 是關于 Debian 內(nèi)核的主要信息來源。
-
bootup(7) 介紹了基于systemd的系統(tǒng)啟動流程。(近期的 Debian) -
boot(7) 介紹了基于 UNIX System V Release 4 的系統(tǒng)啟動流程。(舊版的 Debian)
3.1. 啟動過程概述
計算機系統(tǒng)從上電事件到能為用戶提供完整的操作系統(tǒng)(OS)功能為止,需要經(jīng)歷幾個階段的啟動過程。
為簡便起見,筆者將討論范圍限定在具有默認安裝的典型 PC 平臺上。
典型的啟動過程像是一個四級的火箭。每一級火箭將系統(tǒng)控制權(quán)交給下一級。
-
第 3.1.1 節(jié) “第一階段:UEFI”
-
第 3.1.2 節(jié) “第二階段:引載加載程序”
-
第 3.1.3 節(jié) “第三階段:迷你 Debian 系統(tǒng)”
-
第 3.1.4 節(jié) “第四階段:常規(guī) Debian 系統(tǒng)”
當然,這些階段可以有不同的配置。比如,你編譯了自己的內(nèi)核,則可能會跳過迷你 Debian 系統(tǒng)的步驟。因此,在讀者親自確認之前,請勿假定自己系統(tǒng)的情況也是如此。
3.1.1. 第一階段:UEFI
Unified Extensible Firmware Interface (UEFI) 統(tǒng)一可擴展固件接口 定義了啟動管理器作為 UEFI 規(guī)范的一部分。當一個計算機打開電源,啟動管理器是啟動流程的第一階段,它檢查啟動配置并基于啟動配置的設置,執(zhí)行特定的操作系統(tǒng)引導加載程序或操作系統(tǒng)內(nèi)核(通常是引導加載程序)。啟動配置通過變量存儲在 NVRAM,變量包括指示操作系統(tǒng)引導加載程序或操作系統(tǒng)內(nèi)核的文件系統(tǒng)路徑的變量。 EFI system partition (ESP) EFI 系統(tǒng)分區(qū) 是一個數(shù)據(jù)存儲設備分區(qū),在計算機里用來遵照 UEFI 規(guī)范。當計算機打開電源時,由 UEFI 固件來訪問,它存儲了 UEFI 應用程序和這些應用程序運行所需要的文件,包括操作系統(tǒng)的引導加載程序。(在老的 PC 系統(tǒng),存放在 MBR 里的 BIOS 可以用來代替。)
3.1.2. 第二階段:引載加載程序
引導加載程序是啟動過程的第二階段,由 UEFI 啟動。引導加載程序?qū)⑾到y(tǒng)內(nèi)核映像和 initrd 映像加載到內(nèi)存并將控制權(quán)交給它們。initrd 映像是根文件系統(tǒng)映像,其支持程度依賴于所使用的引導加載程序。
Debian 系統(tǒng)通常使用 Linux 內(nèi)核作為默認的系統(tǒng)內(nèi)核。當前的 5.x Linux 內(nèi)核的 initrd 映像在技術(shù)上是 initramfs(初始 RAM 文件系統(tǒng))映像。
有許多引導加載程序和配置選項存在。
表 3.1. 引導加載程序列表
| 軟件包 | 流行度 | 大小 | initrd | 引導加載程序 | 說明 |
|---|---|---|---|---|---|
| grub-efi-amd64 | I:236 | 158 | 支持 | GRUB UEFI | 可智能識別磁盤分區(qū)和文件系統(tǒng),例如 vfat、ext4…(UEFI) |
| grub-pc | V:25, I:737 | 533 | 支持 | GRUB 第 2 版 | 可智能識別磁盤分區(qū)和文件系統(tǒng),例如 vfat、ext4…(BIOS) |
| grub-rescue-pc | V:0, I:1 | 6476 | 支持 | GRUB 第 2 版 | 此為 GRUB 第 2 版的可引導修復映像(CD 和軟盤)(PC / BIOS 版本) |
| lilo | V:0, I:1 | 697 | 支持 | Lilo | 依賴于數(shù)據(jù)在硬盤上的扇區(qū)位置。(較老) |
| syslinux | V:3, I:43 | 344 | 支持 | Isolinux | 可識別 ISO9660 文件系統(tǒng)。引導 CD 使用此項。 |
| syslinux | V:3, I:43 | 344 | 支持 | Syslinux | 可識別 MSDOS 文件系統(tǒng)(FAT)。引導軟盤使用此項。 |
| loadlin | V:0, I:0 | 90 | 支持 | Loadlin | 新系統(tǒng)從 FreeDOS 或 MSDOS 中啟動。 |
| mbr | V:0, I:6 | 50 | 不支持 | Neil Turton 的 MBR | 此為取代 MSDOS MBR 的自由軟件。只可識別硬盤分區(qū)。 |
| 警告 | |
|---|---|
|
假如沒有從 |
GRUB 2 的菜單配置文件位于 /boot/grub/grub.cfg,它的菜單條目的關鍵部分看起來像:
menuentry 'Debian GNU/Linux' ... {
load_video
insmod gzio
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root fe3e1db5-6454-46d6-a14c-071208ebe4b1
echo 'Loading Linux 5.10.0-6-amd64 ...'
linux /boot/vmlinuz-5.10.0-6-amd64 root=UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1 ro quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-5.10.0-6-amd64
}
對于這部分的 /boot/grub/grub.cfg,這個菜單條目的意義如下。
表 3.2. /boot/grub/grub.cfg 文件上面部分菜單條目意義
| 設置 | 值 |
|---|---|
| GRUB2 模塊加載 | gzio, part_gpt, ext2 |
| 使用的根文件系統(tǒng)分區(qū) | 由 UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1 指定的分區(qū)標識 |
| 內(nèi)核鏡像文件在根文件系統(tǒng)中的路徑 | /boot/vmlinuz-5.10.0-6-amd64 |
| 使用的內(nèi)核啟動參數(shù) | "root=UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1 ro quiet" |
| initrd 鏡像文件在根文件系統(tǒng)中的路徑 | /boot/initrd.img-5.10.0-6-amd64 |
| 提示 | |
|---|---|
|
通過設置在 |
參見 “info grub” 及 grub-install(8)。
3.1.3. 第三階段:迷你 Debian 系統(tǒng)
迷你 Debian 系統(tǒng)是啟動流程的第三階段,由引導加載程序啟動。它會在內(nèi)存中運行系統(tǒng)內(nèi)核和根文件系統(tǒng)。這是啟動流程的一個可選準備階段。
| 注意 | |
|---|---|
|
“迷你 Debian 系統(tǒng)”是筆者自創(chuàng)的術(shù)語,用于在本文檔中描述啟動流程的第三個階段。這個系統(tǒng)通常被稱為 initrd 或 initramfs 系統(tǒng)。內(nèi)存中類似的系統(tǒng)在 Debian 安裝程序中使用。 |
/init 程序是內(nèi)存中的根文件系統(tǒng)上執(zhí)行的第一個程序。這個程序在用戶空間把內(nèi)核初始化,并把控制權(quán)交給下一階段。迷你 Debian 系統(tǒng)能夠在主引導流程之前添加內(nèi)核模塊或以加密形式掛載根文件系統(tǒng),使引導流程更加靈活。
-
如果 initramfs 是由
initramfs-tools創(chuàng)建,則"/init" 程序是一個 shell 腳本程序。-
通過給內(nèi)核添加 “
break=init" 等啟動參數(shù),你可以中斷這部分啟動流程以獲取 root shell。更多中斷條件請參見 ”/init“ 腳本。這個 shell 環(huán)境已足夠成熟,你可通過它很好地檢查機器的硬件。 -
迷你 Debian 系統(tǒng)中可用的命令是精簡過的,且主要由一個稱為
busybox(1) 的 GNU 工具提供。
-
-
如果 initramfs 是由
dracut創(chuàng)建,則 "/init" 程序是一個二進制systemd程序。-
迷你 Debian 系統(tǒng)中可用的命令是一個精簡過的
systemd(1) 環(huán)境。
-
| 小心 | |
|---|---|
|
當在一個只讀的根文件系統(tǒng)上時,使用 |
3.1.4. 第四階段:常規(guī) Debian 系統(tǒng)
常規(guī) Debian 系統(tǒng)是啟動流程的第四階段,由迷你 Debian 系統(tǒng)啟動。迷你 Debian 系統(tǒng)的內(nèi)核在此環(huán)境下繼續(xù)運行。根文件系統(tǒng)將由內(nèi)存切換到實際的硬盤文件系統(tǒng)上。
init 程序是系統(tǒng)執(zhí)行的第一個程序(PID=1),它啟動其它各種程序以完成主引導流程。init 程序的默認路徑是 ”/sbin/init“,但可通過內(nèi)核啟動參數(shù)修改,例如 ”init=/path/to/init_program"。
在 Debian 8 jessie(2015 年發(fā)布)版本后,"/sbin/init" 是一個到 "/lib/systemd/systemd" 的符號鏈接。
| 提示 | |
|---|---|
|
你的系統(tǒng)中實際使用的 init 命令可以使用 “ |
表 3.3. Debian 系統(tǒng)啟動工具列表
| 軟件包 | 流行度 | 大小 | 說明 |
|---|---|---|---|
systemd |
V:849, I:941 | 16625 | 基于事件且支持并發(fā)的 init(8) 守護進程(可替代 sysvinit) |
systemd-sysv |
V:820, I:939 | 147 | systemd 需用的用以代替 sysvinit 的手冊頁和符號鏈接 |
init-system-helpers |
V:687, I:952 | 133 | 在 sysvinit 和 systemd 之間進行轉(zhuǎn)換的幫助工具 |
initscripts |
V:64, I:238 | 172 | 用于初始化和關閉系統(tǒng)的腳本 |
sysvinit-core |
V:7, I:8 | 279 | 類 System V 的 init(8) 工具 |
sysv-rc |
V:127, I:251 | 82 | 類 System V 的運行級別修改機制 |
sysvinit-utils |
V:403, I:999 | 81 | 類 System V 的實用工具(startpar(8),bootlogd(8),……) |
lsb-base |
V:895, I:999 | 49 | Linux 標準規(guī)范 3.2 版的 init 腳本功能 |
insserv |
V:153, I:248 | 153 | 利用 LSB init.d 腳本依賴性來組織啟動步驟的工具 |
uswsusp |
V:1, I:5 | 714 | 使用 Linux 提供的用戶態(tài)軟件 suspend 的工具 |
kexec-tools |
V:1, I:7 | 289 | 用于 kexec(8) 重啟(熱啟動)的 kexec 工具 |
systemd-bootchart |
V:0, I:1 | 128 | 啟動流程性能分析器 |
bootchart2 |
V:0, I:0 | NOT_FOUND | 啟動流程性能分析器 |
pybootchartgui |
V:0, I:0 | NOT_FOUND | 啟動流程性能分析器(可視化) |
mingetty |
V:0, I:3 | 38 | 僅包含控制臺的 getty(8) |
mgetty |
V:0, I:0 | 315 | 可智能調(diào)制解調(diào)的 getty(8) 替代品 |
| 提示 | |
|---|---|
|
有關啟動流程加速的最新信息,請參見 Debian 維基:啟動流程加速詞條。 |
3.2. Systemd 初始化
本節(jié)描述系統(tǒng)是怎樣通過 PID=1 的 systemd(1) 程序來啟動(即初始化進程)。
systemd 初始化進程基于單元配置文件 (參見 systemd.unit(5)) 來并行派生進程,這些單元配置文件使用聲明樣式來書寫,代替之前的類 SysV 的過程樣式。這些單元配置文件從下面的一系列路徑來加載 (參見 systemd-system.conf(5)) :
派生的進程被放在一個單獨的 Linux control groups,在單元后命名,它們屬于一個私有的 systemd 層級結(jié)構(gòu)(參見 cgroups 和 第 4.7.4 節(jié) “Linux 安全特性”)。
單元配置文件從下列一系列路徑中加載(參見 systemd-system.conf(5)):
-
"
/lib/systemd/system": OS 默認配置文件 -
"
/etc/systemd/system": 系統(tǒng)管理員的配置文件,它將忽略操作系統(tǒng)默認的配置文件 -
"
/run/systemd/system": 運行時產(chǎn)生的配置文件,它將忽略安裝的配置文件
他們的相互依賴關系通過"Wants=", "Requires=", "Before=", "After=", … 等指示來配置,(參見 systemd.unit(5) 里的 "MAPPING OF UNIT PROPERTIES TO THEIR INVERSES")。 資源控制也是被定義 (參見 systemd.resource-control(5)).
根據(jù)單元配置文件的后綴來區(qū)分它們的類型:
-
*.service 描述由
systemd控制和監(jiān)管的進程.參見systemd.service(5). -
*.device 描述在
sysfs(5) 里面作為udev(7) 設備樹展示的設備。參見systemd.device(5). -
*.mount 描述由
systemd控制和監(jiān)管的文件系統(tǒng)掛載點。參見systemd.mount(5). -
*.automount 描述由
systemd控制和監(jiān)管的文件系統(tǒng)自動掛載點。參見systemd.automount(5). -
*.swap 描述由
systemd控制和監(jiān)管的 swap 文件或設備。參見systemd.swap(5). -
*.path 描述被
systemd監(jiān)控的路徑,用于基于路徑的活動。參見systemd.path(5). -
*.socket 描述被
systemd控制和監(jiān)管的套接字,用于基于套接字的活動。參見systemd.socket(5). -
*.timer 描述被
systemd控制和監(jiān)管的計時器,用于基于時間的活動。參見systemd.timer(5). -
*.slice 管理
cgroups(7) 的資源。參見systemd.slice(5). -
*.scope 使用
systemd的總線接口來程序化的創(chuàng)建,用以管理一系列系統(tǒng)進程。 參見systemd.scope(5). -
*.target 把其它單元配置文件分組,在啟動的時候,來創(chuàng)建同步點。參見
systemd.target(5).
系統(tǒng)啟動時(即,init),systemd 進程會嘗試啟動"/lib/systemd/system/default.target(通常是到"graphical.target"的符號鏈接)。首先,一些特殊的 target 單元(參見 systemd.special(7)),比如 "local-fs.target"、"swap.target"和"cryptsetup.target"會被引入以掛載文件系統(tǒng)。之后,其它 target 單元也會根據(jù)單元依賴關系而被引入。詳細情況,請閱讀 bootup(7)。
systemd 提供向后兼容的功能。在 "/etc/init.d/rc[0123456S].d/[KS]name" 里面的 SysV 風格的啟動腳本仍然會被分析;telinit(8) 會被轉(zhuǎn)換為 systemd 的單元活動請求。
| 小心 | |
|---|---|
|
模擬的運行級別 2 到 4 全部被符號鏈接到了相同的“ |
3.2.1. 主機名
內(nèi)核維護系統(tǒng)主機名。在啟動的時候,通過 systemd-hostnamed.service 啟動的系統(tǒng)單位設置系統(tǒng)的主機名,此主機名保存在 "/etc/hostname"。這個文件應該只包含系統(tǒng)主機名,而不是全稱域名。
不帶參數(shù)運行 hostname(1) 命令可以打印出當前的主機名。
3.2.2. 文件系統(tǒng)
硬盤和網(wǎng)絡文件系統(tǒng)的掛載選項可以在 "/etc/fstab" 中設置,參見 fstab(5) 和 第 9.6.7 節(jié) “通過掛載選項優(yōu)化文件系統(tǒng)”。
加密文件系統(tǒng)的配置設置在“/etc/crypttab”中。參見 crypttab(5)
軟 RAID 的配置 mdadm(8) 設置在 "/etc/mdadm/mdadm.conf". 參見 mdadm.conf(5).
| 警告 | |
|---|---|
|
每次啟動的時候,在掛載了所有文件系統(tǒng)以后," |
3.2.3. 網(wǎng)絡接口初始化
對于使用 systemd 的現(xiàn)代 Debian 桌面系統(tǒng),網(wǎng)絡接口通常由兩個服務進行初始化:lo 接口通常在“networking.service”處理,而其它接口則由“NetworkManager.service”處理。
參見 第 5 章 網(wǎng)絡設置 來獲取怎樣來配置它們的信息。
3.3. 內(nèi)核消息
在控制臺上顯示的內(nèi)核錯誤信息,能夠通過設置他們的閾值水平來配置。
# dmesg -n3
表 3.4. 內(nèi)核錯誤級別表
| 錯誤級別值 | 錯誤級別名稱 | 說明 |
|---|---|---|
| 0 | KERN_EMERG | 系統(tǒng)不可用 |
| 1 | KERN_ALERT | 行為必須被立即采取 |
| 2 | KERN_CRIT | 危險條件 |
| 3 | KERN_ERR | 錯誤條件 |
| 4 | KERN_WARNING | 警告條件 |
| 5 | KERN_NOTICE | 普通但重要的條件 |
| 6 | KERN_INFO | 信息提示 |
| 7 | KERN_DEBUG | debug 級別的信息 |
3.4. 系統(tǒng)消息
在 systemd 下, 內(nèi)核和系統(tǒng)的信息都通過日志服務 systemd-journald.service (又名 journald)來記錄,放在"/var/log/journal"下的不變的二進制數(shù)據(jù),或放在"/run/log/journal/"下的變化的二進制數(shù)據(jù).這些二進制日志數(shù)據(jù),可以通過 journalctl(1) 命令來訪問。例如,你可以顯示從最后一次啟動以來的日志,按如下所示:
$ journalctl -b
表 3.5. 典型的 journalctl 命令片段列表
| 操作 | 命令片段 |
|---|---|
| 查看從最后一次啟動開始的系統(tǒng)服務和內(nèi)核日志 | "journalctl -b --system" |
| 查看從最后一次啟動開始的當前用戶的服務日志 | "journalctl -b --user" |
查看從最后一次啟動開始的 "$unit" 工作日志 |
"journalctl -b -u $unit" |
查看從最后一次啟動開始的 "$unit"的工作日志 ("tail -f" 式樣) |
"journalctl -b -u $unit -f" |
在 systemd 下,系統(tǒng)日志工具 rsyslogd(8) 可以被卸載。如果安裝了它,它會改變它的行為來讀取易失性二進制日志數(shù)據(jù)(代替在 systemd 之前默認的 "/dev/log")并創(chuàng)建傳統(tǒng)的永久性 ASCII 系統(tǒng)日志數(shù)據(jù)。"/etc/default/rsyslog" 和 "/etc/rsyslog.conf" 能夠自定義日志文件和屏幕顯示。參見 rsyslogd(8) 和 rsyslog.conf(5),也可以參見第 9.3.2 節(jié) “日志分析”。
3.5. 系統(tǒng)管理
systemd 不僅僅提供系統(tǒng)初始化,還用 systemctl(1) 命令提供通用的系統(tǒng)管理操作。
表 3.6. 典型的 systemctl 命令片段列表
| 操作 | 命令片段 |
|---|---|
| 列出所有 target 單元配置 | "systemctl list-units --type=target" |
| 列出所有 service 單元配置 | "systemctl list-units --type=service" |
| 列出所有單元配置類型 | "systemctl list-units --type=help" |
| 列出內(nèi)存中所有 socket 單元 | "systemctl list-sockets" |
| 列出內(nèi)存中所有 timer 單元 | "systemctl list-timers" |
啟動 "$unit" |
"systemctl start $unit" |
停止 "$unit" |
"systemctl stop $unit" |
| 重新加載服務相關的配置 | "systemctl reload $unit" |
停止和啟動所有 "$unit" |
"systemctl restart $unit" |
啟動 "$unit" 并停止所有其它的 |
"systemctl isolate $unit" |
轉(zhuǎn)換到 "圖形" (圖形界面系統(tǒng)) |
"systemctl isolate graphical" |
轉(zhuǎn)換到 "多用戶" (命令行系統(tǒng)) |
"systemctl isolate multi-user" |
轉(zhuǎn)換到 "應急模式" (單用戶命令行系統(tǒng)) |
"systemctl isolate rescue" |
向"$unit"發(fā)送殺死信號 |
"systemctl kill $unit" |
檢查"$unit"服務是否是活動的 |
"systemctl is-active $unit" |
檢查"$unit"服務是否是失敗的 |
"systemctl is-failed $unit" |
檢查"$unit|$PID|device"的狀態(tài) |
"systemctl status $unit|$PID|$device" |
顯示"$unit|$job"的屬性 |
"systemctl show $unit|$job" |
重設失敗的"$unit" |
"systemctl reset-failed $unit" |
| 列出所有單元服務的依賴性 | "systemctl list-dependencies --all" |
| 列出安裝在系統(tǒng)上的單元文件 | "systemctl list-unit-files" |
啟用 "$unit" (增加符號鏈接) |
"systemctl enable $unit" |
禁用 "$unit" (刪除符號鏈接) |
"systemctl disable $unit" |
取消遮掩 "$unit" (刪除到 "/dev/null" 的符號鏈接) |
"systemctl unmask $unit" |
遮掩 "$unit" (增加到 "/dev/null" 的符號鏈接) |
"systemctl mask $unit" |
| 獲取默認的 target 設置 | "systemctl get-default" |
設置默認 target 為"graphical" (圖形系統(tǒng)) |
"systemctl set-default graphical" |
設置默認的 target 為"multi-user" (命令行系統(tǒng)) |
"systemctl set-default multi-user" |
| 顯示工作環(huán)境變量 | "systemctl show-environment" |
設置環(huán)境變量 "variable" 的值為 "value" |
"systemctl set-environment variable=value" |
取消環(huán)境變量 "variable" 的設置 |
"systemctl unset-environment variable" |
| 重新加載所有單元文件和后臺守護進程(daemon) | "systemctl daemon-reload" |
| 關閉系統(tǒng) | "systemctl poweroff" |
| 關閉和重啟系統(tǒng) | "systemctl reboot" |
| 掛起系統(tǒng) | "systemctl suspend" |
| 休眠系統(tǒng) | "systemctl hibernate" |
這里, 上面例子中的"$unit",可以是一個單元名(后綴.service 和 .target 是可選的),或者,在很多情況下,也可以是匹配的多個單元 (shell 式樣的全局通配符"*", "?", "[]",通過使用 fnmatch(3) ,來匹配目前在內(nèi)存中的所有單元的基本名稱).
上面列子的系統(tǒng)狀態(tài)改變命令,通常是通過"sudo"來處理,用以獲得需要的系統(tǒng)管理權(quán)限。
"systemctl status $unit|$PID|$device" 的輸出使用有顏色的點("●")來概述單元狀態(tài),讓人看一眼就知道。
-
白色的 "●" 表示一個 "不活動"或"變?yōu)椴换顒又?的狀態(tài)。
-
紅色的 "●"表示“失敗”或者“錯誤”狀態(tài)。
-
綠色"●"表示“活動”、“重新加載中”或“激活中”狀態(tài)。
3.6. 其它系統(tǒng)監(jiān)控
這里是 systemd 下其它零星的監(jiān)控命令列表。請閱讀包括 cgroups(7) 在內(nèi)的相關的 man 手冊頁。
表 3.7. systemd 下其它零星監(jiān)控命令列表
| 操作 | 命令片段 |
|---|---|
| 顯示每一個初始化步驟所消耗的時間 | "systemd-analyze time" |
| 列出所有單元的初始化時間 | "systemd-analyze blame" |
加載"$unit"文件并檢測錯誤 |
"systemd-analyze verify $unit" |
| 簡潔的顯示用戶調(diào)用會話的運行時狀態(tài)信息 | "loginctl user-status" |
| 簡潔的顯示調(diào)用會話的運行時狀態(tài)信息 | "loginctl session-status" |
| 跟蹤 cgroups 的啟動過程 | "systemd-cgls" |
| 跟蹤 cgroups 的啟動過程 | "ps xawf -eo pid,user,cgroup,args" |
| 跟蹤 cgroups 的啟動過程 | 讀取 "/sys/fs/cgroup/systemd/" 下的 sysfs |
3.7. 定制 systemd
3.7.1. 套接字激活
使用默認安裝,通過 systemd 啟動的過程中,在 network.target 啟動后,很多網(wǎng)絡服務 (參見 第 6 章 網(wǎng)絡應用)作為后臺守護進程(daemon)啟動。 "sshd" 也不列外。讓我們修改為按需啟動"sshd" 作為一個定制化的例子。
首先,禁用系統(tǒng)安裝的服務單元。
$ sudo systemctl stop sshd.service $ sudo systemctl mask sshd.service
傳統(tǒng) Unix 服務的按需套接字激活(on-demand socket activation)系統(tǒng)由 inetd (或 xinetd)超級服務來提供。在 systemd 下, 相同功能能夠通過增加*.socket 和 *.service 單元配置文件來啟用。
sshd.socket 用來定義一個監(jiān)聽的套接字
[Unit] Description=SSH Socket for Per-Connection Servers [Socket] ListenStream=22 Accept=yes [Install] WantedBy=sockets.target
sshd@.service 作為 sshd.socket 匹配的服務文件
[Unit] Description=SSH Per-Connection Server [Service] ExecStart=-/usr/sbin/sshd -i StandardInput=socket
然后重新加載。
$ sudo systemctl daemon-reload
3.8. udev 系統(tǒng)
從 Linux 內(nèi)核 2.6 版開始,udev 系統(tǒng) 提供了自動硬件發(fā)現(xiàn)和初始化機制。(參見 udev(7)).在內(nèi)核發(fā)現(xiàn)每個設備的基礎上,udev 系統(tǒng)使用從 sysfs 文件系統(tǒng) (參見 第 1.2.12 節(jié) “procfs 和 sysfs”)的信息啟動一個用戶進程,使用 modprobe(8) 程序 (參見 第 3.8.1 節(jié) “內(nèi)核模塊初始化”)加載支持它所要求的內(nèi)核模塊, 創(chuàng)建相應的設備節(jié)點。
| 提示 | |
|---|---|
|
如果由于某些理由," " |
由于 udev 系統(tǒng)是一個正在變化的事物,我在其它文檔進行了詳細描述,在這里只提供了最少的信息。
3.8.1. 內(nèi)核模塊初始化
通過 modprobe(8) 程序添加和刪除內(nèi)核模塊,使我們能夠從用戶進程來配置正在運行的 Linux 內(nèi)核。udev 系統(tǒng)(參見 第 3.8 節(jié) “udev 系統(tǒng)”)自動化它的調(diào)用來幫助內(nèi)核模塊初始化。
下面的非硬件模塊和特殊的硬件驅(qū)動模塊,需要被預先加載,把它們在"/etc/modules"文件里列出 (參見 modules(5)).
-
TUN/TAP 模塊提供虛擬的 Point-to-Point 網(wǎng)絡設備 (TUN) 和虛擬的 Ethernet 以太網(wǎng)網(wǎng)絡設備 (TAP),
-
netfilter 模塊提供 netfilter 防火墻能力(
iptables(8), 第 5.6 節(jié) “Netfilter 網(wǎng)絡過濾框架”), -
watchdog timer 驅(qū)動模塊。
modprobe(8) 程序的配置文件是按 modprobe.conf(5)的說明放在"/etc/modprobes.d/" 目錄下,(如果你想避免自動加載某些內(nèi)核模塊,考慮把它們作為黑名單放在"/etc/modprobes.d/blacklist" 文件里.)
"/lib/modules/version/modules.dep" 文件由 depmod(8) 程序生成,它描述了 modprobe(8) 程序使用的模塊依賴性.
| 注意 | |
|---|---|
|
如果你在啟動時出現(xiàn)模塊加載問題,或者 |
modinfo(8) 程序顯示 Linux 內(nèi)核模塊信息。
lsmod(8) 程序以好看的格式展示"/proc/modules"的內(nèi)容,顯示當前內(nèi)核加載了哪些模塊。
| 提示 | |
|---|---|
|
你能夠精確識別你系統(tǒng)上的硬件。 參見第 9.5.3 節(jié) “硬件識別”. 你可以在啟動時配置硬件來激活期望的硬件特征。參見 第 9.5.4 節(jié) “硬件配置”. 你可以重新編譯內(nèi)核來增加你的特殊設備的支持。參見 第 9.10 節(jié) “內(nèi)核”. |
網(wǎng)站名稱:【Debian參考手冊】第?3?章?系統(tǒng)初始化
分享網(wǎng)址:http://m.5511xx.com/article/cdcgsjc.html


咨詢
建站咨詢
