日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
【Debian參考手冊】第?3?章?系統(tǒng)初始化

目錄

創(chuàng)新互聯(lián)長期為成百上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為中山企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè),中山網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

3.1. 啟動(dòng)過程概述
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. 主機(jī)名
3.2.2. 文件系統(tǒng)
3.2.3. 網(wǎng)絡(luò)接口初始化
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)的啟動(dòng)和配置方式是明智的。盡管準(zhǔn)確的細(xì)節(jié)在安裝的軟件包及對應(yīng)的文檔中,但這些知識(shí)對我們大多數(shù)人來說都是必須掌握的。

下面是 Debian 系統(tǒng)初始化的要點(diǎn)概述。由于 Debian 系統(tǒng)在不斷發(fā)展,您應(yīng)該參考最新的文檔。

  • Debian Linux 內(nèi)核手冊 是關(guān)于 Debian 內(nèi)核的主要信息來源。

  • bootup(7) 介紹了基于 systemd 的系統(tǒng)啟動(dòng)流程。(近期的 Debian)

  • boot(7) 介紹了基于 UNIX System V Release 4 的系統(tǒng)啟動(dòng)流程。(舊版的 Debian)

3.1. 啟動(dòng)過程概述

計(jì)算機(jī)系統(tǒng)從上電事件到能為用戶提供完整的操作系統(tǒng)(OS)功能為止,需要經(jīng)歷幾個(gè)階段的啟動(dòng)過程。

為簡便起見,筆者將討論范圍限定在具有默認(rèn)安裝的典型 PC 平臺(tái)上。

典型的啟動(dòng)過程像是一個(gè)四級的火箭。每一級火箭將系統(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)”

當(dāng)然,這些階段可以有不同的配置。比如,你編譯了自己的內(nèi)核,則可能會(huì)跳過迷你 Debian 系統(tǒng)的步驟。因此,在讀者親自確認(rèn)之前,請勿假定自己系統(tǒng)的情況也是如此。

3.1.1. 第一階段:UEFI

Unified Extensible Firmware Interface (UEFI) 統(tǒng)一可擴(kuò)展固件接口 定義了啟動(dòng)管理器作為 UEFI 規(guī)范的一部分。當(dāng)一個(gè)計(jì)算機(jī)打開電源,啟動(dòng)管理器是啟動(dòng)流程的第一階段,它檢查啟動(dòng)配置并基于啟動(dòng)配置的設(shè)置,執(zhí)行特定的操作系統(tǒng)引導(dǎo)加載程序或操作系統(tǒng)內(nèi)核(通常是引導(dǎo)加載程序)。啟動(dòng)配置通過變量存儲(chǔ)在 NVRAM,變量包括指示操作系統(tǒng)引導(dǎo)加載程序或操作系統(tǒng)內(nèi)核的文件系統(tǒng)路徑的變量。 EFI system partition (ESP) EFI 系統(tǒng)分區(qū) 是一個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備分區(qū),在計(jì)算機(jī)里用來遵照 UEFI 規(guī)范。當(dāng)計(jì)算機(jī)打開電源時(shí),由 UEFI 固件來訪問,它存儲(chǔ)了 UEFI 應(yīng)用程序和這些應(yīng)用程序運(yùn)行所需要的文件,包括操作系統(tǒng)的引導(dǎo)加載程序。(在老的 PC 系統(tǒng),存放在 MBR 里的 BIOS 可以用來代替。)

3.1.2. 第二階段:引載加載程序

引導(dǎo)加載程序是啟動(dòng)過程的第二階段,由 UEFI 啟動(dòng)。引導(dǎo)加載程序?qū)⑾到y(tǒng)內(nèi)核映像和 initrd 映像加載到內(nèi)存并將控制權(quán)交給它們。initrd 映像是根文件系統(tǒng)映像,其支持程度依賴于所使用的引導(dǎo)加載程序。

Debian 系統(tǒng)通常使用 Linux 內(nèi)核作為默認(rèn)的系統(tǒng)內(nèi)核。當(dāng)前的 5.x Linux 內(nèi)核的 initrd 映像在技術(shù)上是 initramfs(初始 RAM 文件系統(tǒng))映像。

有許多引導(dǎo)加載程序和配置選項(xiàng)存在。

表 3.1. 引導(dǎo)加載程序列表

軟件包 流行度 大小 initrd 引導(dǎo)加載程序 說明
grub-efi-amd64 I:236 158 支持 GRUB UEFI 可智能識(shí)別磁盤分區(qū)和文件系統(tǒng),例如 vfat、ext4…(UEFI)
grub-pc V:25, I:737 533 支持 GRUB 第 2 版 可智能識(shí)別磁盤分區(qū)和文件系統(tǒng),例如 vfat、ext4…(BIOS)
grub-rescue-pc V:0, I:1 6476 支持 GRUB 第 2 版 此為 GRUB 第 2 版的可引導(dǎo)修復(fù)映像(CD 和軟盤)(PC / BIOS 版本)
lilo V:0, I:1 697 支持 Lilo 依賴于數(shù)據(jù)在硬盤上的扇區(qū)位置。(較老)
syslinux V:3, I:43 344 支持 Isolinux 可識(shí)別 ISO9660 文件系統(tǒng)。引導(dǎo) CD 使用此項(xiàng)。
syslinux V:3, I:43 344 支持 Syslinux 可識(shí)別 MSDOS 文件系統(tǒng)(FAT)。引導(dǎo)軟盤使用此項(xiàng)。
loadlin V:0, I:0 90 支持 Loadlin 新系統(tǒng)從 FreeDOS 或 MSDOS 中啟動(dòng)。
mbr V:0, I:6 50 不支持 Neil Turton 的 MBR 此為取代 MSDOS MBR 的自由軟件。只可識(shí)別硬盤分區(qū)。

警告

假如沒有從 grub-rescue-pc 軟件包中的映像制作出來的可引導(dǎo)修復(fù)盤(U盤、CD 或軟盤),請勿玩弄引導(dǎo)加載程序。即使硬盤上沒有可正常工作的引導(dǎo)加載程序,可引導(dǎo)修復(fù)盤也能引導(dǎo)你的系統(tǒng)。

GRUB 2 的菜單配置文件位于 /boot/grub/grub.cfg,它的菜單條目的關(guān)鍵部分看起來像:

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,這個(gè)菜單條目的意義如下。

表 3.2. /boot/grub/grub.cfg 文件上面部分菜單條目意義

設(shè)置
GRUB2 模塊加載 gzio, part_gpt, ext2
使用的根文件系統(tǒng)分區(qū) UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1 指定的分區(qū)標(biāo)識(shí)
內(nèi)核鏡像文件在根文件系統(tǒng)中的路徑 /boot/vmlinuz-5.10.0-6-amd64
使用的內(nèi)核啟動(dòng)參數(shù) "root=UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1 ro quiet"
initrd 鏡像文件在根文件系統(tǒng)中的路徑 /boot/initrd.img-5.10.0-6-amd64

提示

通過設(shè)置在 /etc/default/grubGRUB_BACKGROUND 變量指向到圖像文件,或者把圖像文件本身放入 /boot/grub/,你能夠定制 GRUB 的啟動(dòng)圖像。

參見 “info grub” 及 grub-install(8)。

3.1.3. 第三階段:迷你 Debian 系統(tǒng)

迷你 Debian 系統(tǒng)是啟動(dòng)流程的第三階段,由引導(dǎo)加載程序啟動(dòng)。它會(huì)在內(nèi)存中運(yùn)行系統(tǒng)內(nèi)核和根文件系統(tǒng)。這是啟動(dòng)流程的一個(gè)可選準(zhǔn)備階段。

注意

“迷你 Debian 系統(tǒng)”是筆者自創(chuàng)的術(shù)語,用于在本文檔中描述啟動(dòng)流程的第三個(gè)階段。這個(gè)系統(tǒng)通常被稱為 initrd 或 initramfs 系統(tǒng)。內(nèi)存中類似的系統(tǒng)在 Debian 安裝程序中使用。

/init 程序是內(nèi)存中的根文件系統(tǒng)上執(zhí)行的第一個(gè)程序。這個(gè)程序在用戶空間把內(nèi)核初始化,并把控制權(quán)交給下一階段。迷你 Debian 系統(tǒng)能夠在主引導(dǎo)流程之前添加內(nèi)核模塊或以加密形式掛載根文件系統(tǒng),使引導(dǎo)流程更加靈活。

  • 如果 initramfs 是由 initramfs-tools 創(chuàng)建,則"/init" 程序是一個(gè) shell 腳本程序。

    • 通過給內(nèi)核添加 “break=init" 等啟動(dòng)參數(shù),你可以中斷這部分啟動(dòng)流程以獲取 root shell。更多中斷條件請參見 ”/init“ 腳本。這個(gè) shell 環(huán)境已足夠成熟,你可通過它很好地檢查機(jī)器的硬件。

    • 迷你 Debian 系統(tǒng)中可用的命令是精簡過的,且主要由一個(gè)稱為 busybox(1) 的 GNU 工具提供。

  • 如果 initramfs 是由 dracut 創(chuàng)建,則 "/init" 程序是一個(gè)二進(jìn)制 systemd 程序。

    • 迷你 Debian 系統(tǒng)中可用的命令是一個(gè)精簡過的 systemd(1) 環(huán)境。

小心

當(dāng)在一個(gè)只讀的根文件系統(tǒng)上時(shí),使用 mount 命令需要添加 -n 選項(xiàng)。

3.1.4. 第四階段:常規(guī) Debian 系統(tǒng)

常規(guī) Debian 系統(tǒng)是啟動(dòng)流程的第四階段,由迷你 Debian 系統(tǒng)啟動(dòng)。迷你 Debian 系統(tǒng)的內(nèi)核在此環(huán)境下繼續(xù)運(yùn)行。根文件系統(tǒng)將由內(nèi)存切換到實(shí)際的硬盤文件系統(tǒng)上。

init 程序是系統(tǒng)執(zhí)行的第一個(gè)程序(PID=1),它啟動(dòng)其它各種程序以完成主引導(dǎo)流程。init 程序的默認(rèn)路徑是 ”/sbin/init“,但可通過內(nèi)核啟動(dòng)參數(shù)修改,例如 ”init=/path/to/init_program"。

在 Debian 8 jessie(2015 年發(fā)布)版本后,"/sbin/init" 是一個(gè)到 "/lib/systemd/systemd" 的符號鏈接。

提示

你的系統(tǒng)中實(shí)際使用的 init 命令可以使用 “ps --pid 1 -f” 命令確認(rèn)。

表 3.3. Debian 系統(tǒng)啟動(dòng)工具列表

軟件包 流行度 大小 說明
systemd V:849, I:941 16625 基于事件且支持并發(fā)的 init(8) 守護(hù)進(jìn)程(可替代 sysvinit
systemd-sysv V:820, I:939 147 systemd 需用的用以代替 sysvinit 的手冊頁和符號鏈接
init-system-helpers V:687, I:952 133 sysvinitsystemd 之間進(jìn)行轉(zhuǎn)換的幫助工具
initscripts V:64, I:238 172 用于初始化和關(guān)閉系統(tǒng)的腳本
sysvinit-core V:7, I:8 279 類 System V 的 init(8) 工具
sysv-rc V:127, I:251 82 類 System V 的運(yùn)行級別修改機(jī)制
sysvinit-utils V:403, I:999 81 類 System V 的實(shí)用工具(startpar(8),bootlogd(8),……)
lsb-base V:895, I:999 49 Linux 標(biāo)準(zhǔn)規(guī)范 3.2 版的 init 腳本功能
insserv V:153, I:248 153 利用 LSB init.d 腳本依賴性來組織啟動(dòng)步驟的工具
uswsusp V:1, I:5 714 使用 Linux 提供的用戶態(tài)軟件 suspend 的工具
kexec-tools V:1, I:7 289 用于 kexec(8) 重啟(熱啟動(dòng))的 kexec 工具
systemd-bootchart V:0, I:1 128 啟動(dòng)流程性能分析器
bootchart2 V:0, I:0 NOT_FOUND 啟動(dòng)流程性能分析器
pybootchartgui V:0, I:0 NOT_FOUND 啟動(dòng)流程性能分析器(可視化)
mingetty V:0, I:3 38 僅包含控制臺(tái)的 getty(8)
mgetty V:0, I:0 315 可智能調(diào)制解調(diào)的 getty(8) 替代品

提示

有關(guān)啟動(dòng)流程加速的最新信息,請參見 Debian 維基:啟動(dòng)流程加速詞條。

3.2. Systemd 初始化

本節(jié)描述系統(tǒng)是怎樣通過 PID=1systemd(1) 程序來啟動(dòng)(即初始化進(jìn)程)。

systemd 初始化進(jìn)程基于單元配置文件 (參見 systemd.unit(5)) 來并行派生進(jìn)程,這些單元配置文件使用聲明樣式來書寫,代替之前的類 SysV 的過程樣式。這些單元配置文件從下面的一系列路徑來加載 (參見 systemd-system.conf(5)) :

派生的進(jìn)程被放在一個(gè)單獨(dú)的 Linux control groups,在單元后命名,它們屬于一個(gè)私有的 systemd 層級結(jié)構(gòu)(參見 cgroups 和 第 4.7.4 節(jié) “Linux 安全特性”)。

單元配置文件從下列一系列路徑中加載(參見 systemd-system.conf(5)):

  • "/lib/systemd/system": OS 默認(rèn)配置文件

  • "/etc/systemd/system": 系統(tǒng)管理員的配置文件,它將忽略操作系統(tǒng)默認(rèn)的配置文件

  • "/run/systemd/system": 運(yùn)行時(shí)產(chǎn)生的配置文件,它將忽略安裝的配置文件

他們的相互依賴關(guā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)管的進(jìn)程.參見 systemd.service(5).

  • *.device 描述在 sysfs(5) 里面作為 udev(7) 設(shè)備樹展示的設(shè)備。參見 systemd.device(5).

  • *.mount 描述由 systemd 控制和監(jiān)管的文件系統(tǒng)掛載點(diǎn)。參見 systemd.mount(5).

  • *.automount 描述由 systemd 控制和監(jiān)管的文件系統(tǒng)自動(dòng)掛載點(diǎn)。參見 systemd.automount(5).

  • *.swap 描述由 systemd 控制和監(jiān)管的 swap 文件或設(shè)備。參見 systemd.swap(5).

  • *.path 描述被 systemd 監(jiān)控的路徑,用于基于路徑的活動(dòng)。參見 systemd.path(5).

  • *.socket 描述被 systemd 控制和監(jiān)管的套接字,用于基于套接字的活動(dòng)。參見 systemd.socket(5).

  • *.timer 描述被 systemd 控制和監(jiān)管的計(jì)時(shí)器,用于基于時(shí)間的活動(dòng)。參見 systemd.timer(5).

  • *.slice 管理 cgroups(7) 的資源。參見 systemd.slice(5).

  • *.scope 使用 systemd 的總線接口來程序化的創(chuàng)建,用以管理一系列系統(tǒng)進(jìn)程。 參見 systemd.scope(5).

  • *.target 把其它單元配置文件分組,在啟動(dòng)的時(shí)候,來創(chuàng)建同步點(diǎn)。參見systemd.target(5).

系統(tǒng)啟動(dòng)時(shí)(即,init),systemd 進(jìn)程會(huì)嘗試啟動(dòng)"/lib/systemd/system/default.target(通常是到"graphical.target"的符號鏈接)。首先,一些特殊的 target 單元(參見 systemd.special(7)),比如 "local-fs.target"、"swap.target"和"cryptsetup.target"會(huì)被引入以掛載文件系統(tǒng)。之后,其它 target 單元也會(huì)根據(jù)單元依賴關(guān)系而被引入。詳細(xì)情況,請閱讀 bootup(7)。

systemd 提供向后兼容的功能。在 "/etc/init.d/rc[0123456S].d/[KS]name" 里面的 SysV 風(fēng)格的啟動(dòng)腳本仍然會(huì)被分析;telinit(8) 會(huì)被轉(zhuǎn)換為 systemd 的單元活動(dòng)請求。

小心

模擬的運(yùn)行級別 2 到 4 全部被符號鏈接到了相同的“multi-user.target”。

3.2.1. 主機(jī)名

內(nèi)核維護(hù)系統(tǒng)主機(jī)名。在啟動(dòng)的時(shí)候,通過 systemd-hostnamed.service 啟動(dòng)的系統(tǒng)單位設(shè)置系統(tǒng)的主機(jī)名,此主機(jī)名保存在 "/etc/hostname"。這個(gè)文件應(yīng)該包含系統(tǒng)主機(jī)名,而不是全稱域名。

不帶參數(shù)運(yùn)行 hostname(1) 命令可以打印出當(dāng)前的主機(jī)名。

3.2.2. 文件系統(tǒng)

硬盤和網(wǎng)絡(luò)文件系統(tǒng)的掛載選項(xiàng)可以在 "/etc/fstab" 中設(shè)置,參見 fstab(5) 和 第 9.6.7 節(jié) “通過掛載選項(xiàng)優(yōu)化文件系統(tǒng)”。

加密文件系統(tǒng)的配置設(shè)置在“/etc/crypttab”中。參見 crypttab(5)

軟 RAID 的配置 mdadm(8) 設(shè)置在 "/etc/mdadm/mdadm.conf". 參見 mdadm.conf(5).

警告

每次啟動(dòng)的時(shí)候,在掛載了所有文件系統(tǒng)以后,"/tmp", "/var/lock", 和 "/var/run" 中的臨時(shí)文件會(huì)被清空。

3.2.3. 網(wǎng)絡(luò)接口初始化

對于使用 systemd 的現(xiàn)代 Debian 桌面系統(tǒng),網(wǎng)絡(luò)接口通常由兩個(gè)服務(wù)進(jìn)行初始化:lo 接口通常在“networking.service”處理,而其它接口則由“NetworkManager.service”處理。

參見 第 5 章 網(wǎng)絡(luò)設(shè)置 來獲取怎樣來配置它們的信息。

3.3. 內(nèi)核消息

在控制臺(tái)上顯示的內(nèi)核錯(cuò)誤信息,能夠通過設(shè)置他們的閾值水平來配置。

# dmesg -n3

表 3.4. 內(nèi)核錯(cuò)誤級別表

錯(cuò)誤級別值 錯(cuò)誤級別名稱 說明
0 KERN_EMERG 系統(tǒng)不可用
1 KERN_ALERT 行為必須被立即采取
2 KERN_CRIT 危險(xiǎn)條件
3 KERN_ERR 錯(cuò)誤條件
4 KERN_WARNING 警告條件
5 KERN_NOTICE 普通但重要的條件
6 KERN_INFO 信息提示
7 KERN_DEBUG debug 級別的信息

3.4. 系統(tǒng)消息

systemd 下, 內(nèi)核和系統(tǒng)的信息都通過日志服務(wù) systemd-journald.service (又名 journald)來記錄,放在"/var/log/journal"下的不變的二進(jìn)制數(shù)據(jù),或放在"/run/log/journal/"下的變化的二進(jìn)制數(shù)據(jù).這些二進(jìn)制日志數(shù)據(jù),可以通過 journalctl(1) 命令來訪問。例如,你可以顯示從最后一次啟動(dòng)以來的日志,按如下所示:

$ journalctl -b

表 3.5. 典型的 journalctl 命令片段列表

操作 命令片段
查看從最后一次啟動(dòng)開始的系統(tǒng)服務(wù)和內(nèi)核日志 "journalctl -b --system"
查看從最后一次啟動(dòng)開始的當(dāng)前用戶的服務(wù)日志 "journalctl -b --user"
查看從最后一次啟動(dòng)開始的 "$unit" 工作日志 "journalctl -b -u $unit"
查看從最后一次啟動(dòng)開始的 "$unit"的工作日志 ("tail -f" 式樣) "journalctl -b -u $unit -f"

systemd 下,系統(tǒng)日志工具 rsyslogd(8) 可以被卸載。如果安裝了它,它會(huì)改變它的行為來讀取易失性二進(jìn)制日志數(shù)據(jù)(代替在 systemd 之前默認(rèn)的 "/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"
啟動(dòng) "$unit" "systemctl start $unit"
停止 "$unit" "systemctl stop $unit"
重新加載服務(wù)相關(guān)的配置 "systemctl reload $unit"
停止和啟動(dòng)所有 "$unit" "systemctl restart $unit"
啟動(dòng) "$unit" 并停止所有其它的 "systemctl isolate $unit"
轉(zhuǎn)換到 "圖形" (圖形界面系統(tǒng)) "systemctl isolate graphical"
轉(zhuǎn)換到 "多用戶" (命令行系統(tǒng)) "systemctl isolate multi-user"
轉(zhuǎn)換到 "應(yīng)急模式" (單用戶命令行系統(tǒng)) "systemctl isolate rescue"
向"$unit"發(fā)送殺死信號 "systemctl kill $unit"
檢查"$unit"服務(wù)是否是活動(dòng)的 "systemctl is-active $unit"
檢查"$unit"服務(wù)是否是失敗的 "systemctl is-failed $unit"
檢查"$unit|$PID|device"的狀態(tài) "systemctl status $unit|$PID|$device"
顯示"$unit|$job"的屬性 "systemctl show $unit|$job"
重設(shè)失敗的"$unit" "systemctl reset-failed $unit"
列出所有單元服務(wù)的依賴性 "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"
獲取默認(rèn)的 target 設(shè)置 "systemctl get-default"
設(shè)置默認(rèn) target 為"graphical" (圖形系統(tǒng)) "systemctl set-default graphical"
設(shè)置默認(rèn)的 target 為"multi-user" (命令行系統(tǒng)) "systemctl set-default multi-user"
顯示工作環(huán)境變量 "systemctl show-environment"
設(shè)置環(huán)境變量 "variable" 的值為 "value" "systemctl set-environment variable=value"
取消環(huán)境變量 "variable" 的設(shè)置 "systemctl unset-environment variable"
重新加載所有單元文件和后臺(tái)守護(hù)進(jìn)程(daemon) "systemctl daemon-reload"
關(guān)閉系統(tǒng) "systemctl poweroff"
關(guān)閉和重啟系統(tǒng) "systemctl reboot"
掛起系統(tǒng) "systemctl suspend"
休眠系統(tǒng) "systemctl hibernate"

這里, 上面例子中的"$unit",可以是一個(gè)單元名(后綴.service.target 是可選的),或者,在很多情況下,也可以是匹配的多個(gè)單元 (shell 式樣的全局通配符"*", "?", "[]",通過使用 fnmatch(3) ,來匹配目前在內(nèi)存中的所有單元的基本名稱).

上面列子的系統(tǒng)狀態(tài)改變命令,通常是通過"sudo"來處理,用以獲得需要的系統(tǒng)管理權(quán)限。

"systemctl status $unit|$PID|$device" 的輸出使用有顏色的點(diǎn)("●")來概述單元狀態(tài),讓人看一眼就知道。

  • 白色的 "●" 表示一個(gè) "不活動(dòng)"或"變?yōu)椴换顒?dòng)中"的狀態(tài)。

  • 紅色的 "●"表示“失敗”或者“錯(cuò)誤”狀態(tài)。

  • 綠色"●"表示“活動(dòng)”、“重新加載中”或“激活中”狀態(tài)。

3.6. 其它系統(tǒng)監(jiān)控

這里是 systemd 下其它零星的監(jiān)控命令列表。請閱讀包括 cgroups(7) 在內(nèi)的相關(guān)的 man 手冊頁。

表 3.7. systemd 下其它零星監(jiān)控命令列表

操作 命令片段
顯示每一個(gè)初始化步驟所消耗的時(shí)間 "systemd-analyze time"
列出所有單元的初始化時(shí)間 "systemd-analyze blame"
加載"$unit"文件并檢測錯(cuò)誤 "systemd-analyze verify $unit"
簡潔的顯示用戶調(diào)用會(huì)話的運(yùn)行時(shí)狀態(tài)信息 "loginctl user-status"
簡潔的顯示調(diào)用會(huì)話的運(yùn)行時(shí)狀態(tài)信息 "loginctl session-status"
跟蹤 cgroups 的啟動(dòng)過程 "systemd-cgls"
跟蹤 cgroups 的啟動(dòng)過程 "ps xawf -eo pid,user,cgroup,args"
跟蹤 cgroups 的啟動(dòng)過程 讀取 "/sys/fs/cgroup/systemd/" 下的 sysfs

3.7. 定制 systemd

3.7.1. 套接字激活

使用默認(rèn)安裝,通過 systemd 啟動(dòng)的過程中,在 network.target 啟動(dòng)后,很多網(wǎng)絡(luò)服務(wù) (參見 第 6 章 網(wǎng)絡(luò)應(yīng)用)作為后臺(tái)守護(hù)進(jìn)程(daemon)啟動(dòng)。 "sshd" 也不列外。讓我們修改為按需啟動(dòng)"sshd" 作為一個(gè)定制化的例子。

首先,禁用系統(tǒng)安裝的服務(wù)單元。

 $ sudo systemctl stop sshd.service
 $ sudo systemctl mask sshd.service

傳統(tǒng) Unix 服務(wù)的按需套接字激活(on-demand socket activation)系統(tǒng)由 inetd (或 xinetd)超級服務(wù)來提供。在 systemd 下, 相同功能能夠通過增加*.socket*.service 單元配置文件來啟用。

sshd.socket 用來定義一個(gè)監(jiān)聽的套接字

[Unit]
Description=SSH Socket for Per-Connection Servers

[Socket]
ListenStream=22
Accept=yes

[Install]
WantedBy=sockets.target

sshd@.service 作為 sshd.socket 匹配的服務(wù)文件

[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) 提供了自動(dòng)硬件發(fā)現(xiàn)和初始化機(jī)制。(參見 udev(7)).在內(nèi)核發(fā)現(xiàn)每個(gè)設(shè)備的基礎(chǔ)上,udev 系統(tǒng)使用從 sysfs 文件系統(tǒng) (參見 第 1.2.12 節(jié) “procfs 和 sysfs”)的信息啟動(dòng)一個(gè)用戶進(jìn)程,使用 modprobe(8) 程序 (參見 第 3.8.1 節(jié) “內(nèi)核模塊初始化”)加載支持它所要求的內(nèi)核模塊, 創(chuàng)建相應(yīng)的設(shè)備節(jié)點(diǎn)。

提示

如果由于某些理由,"/lib/modules/kernel-version/modules.dep"沒有被 depmod(8) 正常生成,模塊可能不會(huì)被 udev 系統(tǒng)按期望的方式加載。執(zhí)行"depmod -a" 來修復(fù)它。

"/etc/fstab"里面的掛載規(guī)則,設(shè)備節(jié)點(diǎn)不必需是靜態(tài)的。你能夠使用 UUID 來掛載設(shè)備,來代替"/dev/sda"之類的設(shè)備名. 參見 第 9.6.3 節(jié) “使用 UUID 訪問分區(qū)”.

由于 udev 系統(tǒng)是一個(gè)正在變化的事物,我在其它文檔進(jìn)行了詳細(xì)描述,在這里只提供了最少的信息。

3.8.1. 內(nèi)核模塊初始化

通過 modprobe(8) 程序添加和刪除內(nèi)核模塊,使我們能夠從用戶進(jìn)程來配置正在運(yùn)行的 Linux 內(nèi)核。udev 系統(tǒng)(參見 第 3.8 節(jié) “udev 系統(tǒng)”)自動(dòng)化它的調(diào)用來幫助內(nèi)核模塊初始化。

下面的非硬件模塊和特殊的硬件驅(qū)動(dòng)模塊,需要被預(yù)先加載,把它們在"/etc/modules"文件里列出 (參見 modules(5)).

  • TUN/TAP 模塊提供虛擬的 Point-to-Point 網(wǎng)絡(luò)設(shè)備 (TUN) 和虛擬的 Ethernet 以太網(wǎng)網(wǎng)絡(luò)設(shè)備 (TAP),

  • netfilter 模塊提供 netfilter 防火墻能力(iptables(8), 第 5.6 節(jié) “Netfilter 網(wǎng)絡(luò)過濾框架”),

  • watchdog timer 驅(qū)動(dòng)模塊。

modprobe(8) 程序的配置文件是按 modprobe.conf(5)的說明放在"/etc/modprobes.d/" 目錄下,(如果你想避免自動(dòng)加載某些內(nèi)核模塊,考慮把它們作為黑名單放在"/etc/modprobes.d/blacklist" 文件里.)

"/lib/modules/version/modules.dep" 文件由 depmod(8) 程序生成,它描述了 modprobe(8) 程序使用的模塊依賴性.

注意

如果你在啟動(dòng)時(shí)出現(xiàn)模塊加載問題,或者 modprobe(8)時(shí)出現(xiàn)模塊加載問題, "depmod -a" 可以通過重構(gòu)"modules.dep"來解決這些問題。

modinfo(8) 程序顯示 Linux 內(nèi)核模塊信息。

lsmod(8) 程序以好看的格式展示"/proc/modules"的內(nèi)容,顯示當(dāng)前內(nèi)核加載了哪些模塊。

提示

你能夠精確識(shí)別你系統(tǒng)上的硬件。 參見第 9.5.3 節(jié) “硬件識(shí)別”.

你可以在啟動(dòng)時(shí)配置硬件來激活期望的硬件特征。參見 第 9.5.4 節(jié) “硬件配置”.

你可以重新編譯內(nèi)核來增加你的特殊設(shè)備的支持。參見 第 9.10 節(jié) “內(nèi)核”.


網(wǎng)頁名稱:【Debian參考手冊】第?3?章?系統(tǒng)初始化
本文路徑:http://m.5511xx.com/article/cdcgsjc.html