GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでの起動時にsystemdを理解する

systemdを愛することを学ぶ 、このシリーズの最初の記事では、systemdの機能とアーキテクチャ、および古いSystemVinitプログラムと起動スクリプトの代わりとしてのその役割に関する論争について説明しました。この2番目の記事では、Linuxの起動シーケンスを管理するファイルとツールの調査を開始します。 systemdの起動シーケンス、デフォルトの起動ターゲット(SystemV用語ではランレベル)を変更する方法、および再起動せずに手動で別のターゲットに切り替える方法について説明します。

また、2つの重要なsystemdツールについても見ていきます。 1つ目はsystemctlです command。これは、systemdと対話してコマンドを送信するための主要な手段です。 2つ目はjournalctl 、カーネルやサービスメッセージ(情報メッセージとエラーメッセージの両方)などの大量のシステム履歴データを含むsystemdジャーナルへのアクセスを提供します。

この記事および今後の記事でのテストと実験には、必ず非本番システムを使用してください。テストシステムには、GUIデスクトップ(Xfce、LXDE、Gnome、KDEなど)がインストールされている必要があります。

以前の記事で、systemdユニットを作成し、それをこの記事の起動シーケンスに追加することを検討する予定であると書きました。この記事は思ったより長くなったので、このシリーズの次の記事のためにそれを保持します。

systemdを使用したLinuxスタートアップの調査

システム管理者の詳細

  • Sysadminブログを有効にする
  • 自動化されたエンタープライズ:自動化によってITを管理するためのガイド
  • eBook:システム管理者向けのAnsible自動化
  • 現場からの物語:IT自動化に関するシステム管理者ガイド
  • eBook:SREおよびシステム管理者向けのKubernetesのガイド
  • 最新のシステム管理者の記事

起動シーケンスを観察する前に、起動シーケンスと起動シーケンスを開いて表示できるようにするために、いくつかのことを行う必要があります。通常、ほとんどのディストリビューションは、起動アニメーションまたはスプラッシュ画面を使用して、Linuxホストの起動およびシャットダウン中に表示される詳細なメッセージを非表示にします。これは、RedHatベースのディストリビューションではプリマスブート画面と呼ばれます。これらの隠されたメッセージは、バグのトラブルシューティングや起動シーケンスについて学ぶための情報を探しているシステム管理者に、起動とシャットダウンに関する多くの情報を提供することができます。これは、GRUB(Grand Unified Boot Loader)構成を使用して変更できます。

メインのGRUB構成ファイルは/boot/grub2/grub.cfgです。 ただし、このファイルはカーネルバージョンの更新時に上書きされる可能性があるため、変更しないでください。代わりに、 / etc / default / grubを変更してください grub.cfgのデフォルト設定を変更するために使用されるファイル 。

/ etc / default / grubの現在の変更されていないバージョンを確認することから始めます。 ファイル:

[root@testvm1 ~]# cd /etc/default ; cat grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="resume=/dev/mapper/fedora_testvm1-swap rd.lvm.
lv=fedora_testvm1/root rd.lvm.lv=fedora_testvm1/swap rd.lvm.lv=fedora_
testvm1/usr rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
[root@testvm1 default]#

GRUBドキュメントの第6章には、 / etc / default / grubで可能なすべてのエントリのリストが含まれています ファイルですが、私は次のことに焦点を当てています:

  • GRUB_TIMEOUTを変更します 、GRUBメニューのカウントダウンの秒数。カウントダウンがゼロになる前にGRUBメニューに応答するための時間を少し長くするために5から10まで。
  • GRUB_CMDLINE_LINUXの最後の2つのパラメーターを削除します 、ブート時にカーネルに渡されるコマンドラインパラメータを一覧表示します。これらのパラメータの1つ、 rhgb Red Hat Graphical Bootの略で、起動時のメッセージを表示する代わりに、カーネルの初期化中に小さなFedoraアイコンアニメーションを表示します。もう1つは、静かな パラメータは、起動の進行状況と発生したエラーを文書化した起動メッセージを表示しないようにします。両方のrhgbを削除します および静か システム管理者はこれらのメッセージを確認する必要があるためです。起動中に問題が発生した場合、画面に表示されるメッセージが問題の原因を示している可能性があります。

これらの変更を行うと、GRUBファイルは次のようになります。

[root@testvm1 default]# cat grub
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="resume=/dev/mapper/fedora_testvm1-swap rd.lvm.
lv=fedora_testvm1/root rd.lvm.lv=fedora_testvm1/swap rd.lvm.lv=fedora_
testvm1/usr"
GRUB_DISABLE_RECOVERY="false"
[root@testvm1 default]#

grub2-mkconfig プログラムはgrub.cfgを生成します / etc / default / grubの内容を使用した構成ファイル デフォルトのGRUB設定の一部を変更するファイル。 grub2-mkconfig プログラムはその出力をSTDOUTに送信します 。 -oがあります データストリームの送信先となるファイルを指定できるオプションですが、リダイレクトを使用するのも同じくらい簡単です。次のコマンドを実行して、 /boot/grub2/grub.cfgを更新します。 構成ファイル:

[root@testvm1 grub2]# grub2-mkconfig > /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.18.9-200.fc28.x86_64
Found initrd image: /boot/initramfs-4.18.9-200.fc28.x86_64.img
Found linux image: /boot/vmlinuz-4.17.14-202.fc28.x86_64
Found initrd image: /boot/initramfs-4.17.14-202.fc28.x86_64.img
Found linux image: /boot/vmlinuz-4.16.3-301.fc28.x86_64
Found initrd image: /boot/initramfs-4.16.3-301.fc28.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-7f12524278bd40e9b10a085bc82dc504
Found initrd image: /boot/initramfs-0-rescue-7f12524278bd40e9b10a085bc82dc504.img
done
[root@testvm1 grub2]#

テストシステムを再起動して、プリマスの起動アニメーションの背後に隠れている起動メッセージを表示します。しかし、起動メッセージを表示する必要があり、プリマスの起動アニメーションを無効にしていない場合はどうなりますか?またはあなたは持っていますが、メッセージは速すぎて読むことができませんか? (彼らはそうします。)

いくつかのオプションがあり、どちらもログファイルとsystemdジャーナルを含みます。これらはあなたの友達です。 少ないを使用できます / var / log / messagesの内容を表示するコマンド ファイル。このファイルには、起動メッセージと起動メッセージのほか、通常の操作中にオペレーティングシステムによって生成されるメッセージが含まれています。 journalctlを使用することもできます 基本的に同じ情報を含むsystemdジャーナルを表示するためのオプションなしのコマンド:

[root@testvm1 grub2]# journalctl
-- Logs begin at Sat 2020-01-11 21:48:08 EST, end at Fri 2020-04-03 08:54:30 EDT. --
Jan 11 21:48:08 f31vm.both.org kernel: Linux version 5.3.7-301.fc31.x86_64 ([email protected]) (gcc version 9.2.1 20190827 (Red Hat 9.2.1-1) (GCC)) #1 SMP Mon Oct >
Jan 11 21:48:08 f31vm.both.org kernel: Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.3.7-301.fc31.x86_64 root=/dev/mapper/VG01-root ro resume=/dev/mapper/VG01-swap rd.lvm.lv=VG01/root rd>
Jan 11 21:48:08 f31vm.both.org kernel: x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
Jan 11 21:48:08 f31vm.both.org kernel: x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
Jan 11 21:48:08 f31vm.both.org kernel: x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
Jan 11 21:48:08 f31vm.both.org kernel: x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
Jan 11 21:48:08 f31vm.both.org kernel: x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
Jan 11 21:48:08 f31vm.both.org kernel: BIOS-provided physical RAM map:
Jan 11 21:48:08 f31vm.both.org kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
Jan 11 21:48:08 f31vm.both.org kernel: BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
Jan 11 21:48:08 f31vm.both.org kernel: BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
Jan 11 21:48:08 f31vm.both.org kernel: BIOS-e820: [mem 0x0000000000100000-0x00000000dffeffff] usable
Jan 11 21:48:08 f31vm.both.org kernel: BIOS-e820: [mem 0x00000000dfff0000-0x00000000dfffffff] ACPI data
Jan 11 21:48:08 f31vm.both.org kernel: BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
Jan 11 21:48:08 f31vm.both.org kernel: BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
Jan 11 21:48:08 f31vm.both.org kernel: BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
Jan 11 21:48:08 f31vm.both.org kernel: BIOS-e820: [mem 0x0000000100000000-0x000000041fffffff] usable
Jan 11 21:48:08 f31vm.both.org kernel: NX (Execute Disable) protection: active
Jan 11 21:48:08 f31vm.both.org kernel: SMBIOS 2.5 present.
Jan 11 21:48:08 f31vm.both.org kernel: DMI: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
Jan 11 21:48:08 f31vm.both.org kernel: Hypervisor detected: KVM
Jan 11 21:48:08 f31vm.both.org kernel: kvm-clock: Using msrs 4b564d01 and 4b564d00
Jan 11 21:48:08 f31vm.both.org kernel: kvm-clock: cpu 0, msr 30ae01001, primary cpu clock
Jan 11 21:48:08 f31vm.both.org kernel: kvm-clock: using sched offset of 8250734066 cycles
Jan 11 21:48:08 f31vm.both.org kernel: clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns
Jan 11 21:48:08 f31vm.both.org kernel: tsc: Detected 2807.992 MHz processor
Jan 11 21:48:08 f31vm.both.org kernel: e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
Jan 11 21:48:08 f31vm.both.org kernel: e820: remove [mem 0x000a0000-0x000fffff] usable
<snip>

このデータストリームは数十万行、場合によっては数百万行になる可能性があるため、切り捨てました。 (私のプライマリワークステーションのジャーナルリストは1,188,482行の長さです。)テストシステムでこれを試してください。何度も再起動した場合でも、しばらく実行していると、大量のデータが表示されます。問題判別を行うときに非常に役立つ情報がたくさん含まれているため、このジャーナルデータを調べてください。通常の起動と起動でこのデータがどのように見えるかを知ることは、問題が発生したときにそれを見つけるのに役立ちます。

systemdジャーナル、 journalctlについて説明します コマンド、およびそのすべてのデータを並べ替えて、このシリーズの今後の記事で必要なものをより詳細に見つける方法。

GRUBがカーネルをメモリにロードした後、有用な作業を実行する前に、まず圧縮バージョンのファイルからカーネルを抽出する必要があります。カーネルがそれ自体を抽出して実行を開始すると、systemdがロードされ、制御がカーネルに渡されます。

これで起動プロセスは終了です。この時点で、Linuxカーネルとsystemdは実行されていますが、他に何も実行されておらず、コマンドラインを提供するシェルがなく、ネットワークやその他の通信リンクを管理するバックグラウンドプロセスがないため、エンドユーザーの生産的なタスクを実行できません。コンピュータが生産的な機能を実行できるようにするものは何もありません。

Systemdは、システムを選択したターゲット実行状態にするために必要な機能ユニットをロードできるようになりました。

ターゲット

systemdターゲットは、Linuxシステムの現在または望ましい実行状態を表します。 SystemV開始スクリプトと同様に、ターゲットは、システムが実行され、その状態でアクティブになるために存在しなければならないサービスを定義します。図1は、systemdを使用したLinuxシステムの可能な実行状態ターゲットを示しています。このシリーズの最初の記事とsystemdbootupのmanページ(man bootup)に見られるように、さまざまな必要なサービスを有効にするために必要な他の中間ターゲットがあります。これらには、 swap.targetを含めることができます 、 timers.target local-fs.target 、 もっと。一部のターゲット( basic.target など) )は、次の上位レベルのターゲットに移動する前に、必要なすべてのサービスが稼働していることを確認するためのチェックポイントとして使用されます。

GRUBメニューで起動時に特に変更されない限り、systemdは常に default.targetを開始します 。 default.target fileは、真のターゲットファイルへのシンボリックリンクです。デスクトップワークステーションの場合、これは通常、 graphics.targetになります。 、これはSystemVのランレベル5に相当します。サーバーの場合、デフォルトは multi-user.targetである可能性が高くなります 、これはSystemVのランレベル3に似ています。 emergency.target ファイルはシングルユーザーモードに似ています。ターゲットとサービスはsystemdユニットです。

このシリーズの前回の記事に含めた次の表は、systemdターゲットを古いSystemVスタートアップランレベルと比較しています。 systemdターゲットエイリアスは、下位互換性のためにsystemdによって提供されます。ターゲットエイリアスにより、スクリプト(およびシステム管理者)は init 3などのSystemVコマンドを使用できます。 ランレベルを変更します。もちろん、SystemVコマンドは解釈と実行のためにsystemdに転送されます。

systemdターゲット SystemVランレベル ターゲットエイリアス 説明
default.target このターゲットは、常に multi-user.targetへのシンボリックリンクでエイリアス化されます またはgraphical.target 。 systemdは常にdefault.targetを使用します システムを起動します。 default.target hallt.targetにエイリアスしないでください 、 poweroff.target 、または restart.target
graphics.target 5 runlevel5.target Multi-user.target GUIを使用
4 runlevel4.target 未使用。ランレベル4は、SystemVの世界のランレベル3と同じでした。このターゲットは、デフォルトの multi-user.target を変更せずに、ローカルサービスを開始するように作成およびカスタマイズできます。 。
multi-user.target 3 runlevel3.target すべてのサービスが実行されていますが、コマンドラインインターフェイス(CLI)のみ
2 runlevel2.target マルチユーザー、NFSなし、ただし他のすべての非GUIサービスは実行中
rescue.target 1 runlevel1.target 最も基本的なサービスのみが実行されているファイルシステムとメインコンソール上のレスキューシェルのマウントを含む基本的なシステム
emergency.target S シングルユーザーモード-サービスは実行されていません。ファイルシステムがマウントされていません。これは最も基本的なレベルの操作であり、ユーザーがシステムと対話するためにメインコンソールで緊急シェルのみが実行されます。
hallt.target 電源を切らずにシステムを停止します
restart.target 6 runlevel6.target 再起動
poweroff.target 0 runlevel0.target システムを停止し、電源をオフにします

各ターゲットには、構成ファイルに記述されている一連の依存関係があります。 systemdは、必要な依存関係を開始します。これは、特定のレベルの機能でLinuxホストを実行するために必要なサービスです。ターゲット構成ファイルにリストされているすべての依存関係がロードされて実行されると、システムはそのターゲットレベルで実行されます。必要に応じて、このシリーズの最初の記事、systemdを愛することを学ぶでsystemdの起動シーケンスとランタイムターゲットを確認できます。 。

現在のターゲットを探索する

多くのLinuxディストリビューションは、インストールされたシステムをワークステーションとして使用できるように、デフォルトでGUIデスクトップインターフェイスをインストールします。私は常にXfceまたはLXDEデスクトップを備えたFedoraLiveブートUSBドライブからインストールします。サーバーやその他のインフラストラクチャタイプのホスト(ルーターやファイアウォールに使用するものなど)をインストールする場合でも、GUIデスクトップをインストールするこれらのインストールのいずれかを使用します。

デスクトップなしでサーバーをインストールすることはできますが(データセンターでは一般的です)、それは私のニーズを満たしていません。 GUIデスクトップ自体が必要なわけではありませんが、LXDEのインストールには、デフォルトのサーバーインストールにはない他の多くのツールが含まれています。これは、最初のインストール後の作業が少なくなることを意味します。

しかし、私がGUIデスクトップを持っているからといって、それを使用することが理にかなっているとは限りません。ほとんどのLinuxシステムのKVMインターフェイスにアクセスするために使用できる16ポートのKVMがありますが、それらとの対話の大部分は、プライマリワークステーションからのリモートSSH接続を介して行われます。この方法はより安全で、 multi-user.targetを実行するために使用するシステムリソースが少なくなります。 graphical.target。と比較して

まず、デフォルトのターゲットをチェックして、それが graphics.targetであることを確認します :

[root@testvm1 ~]# systemctl get-default
graphical.target
[root@testvm1 ~]#

次に、現在実行中のターゲットを確認します。デフォルトのターゲットと同じである必要があります。古いSystemVランレベルを表示する古いメソッドを引き続き使用できます。前のランレベルが左側にあることに注意してください。 N (これはNoneを意味します)、ホストが起動されてからランレベルが変更されていないことを示します。数字の5は、古いSystemV用語で定義されている現在のターゲットを示しています。

[root@testvm1 ~]# runlevel
N 5
[root@testvm1 ~]#

ランレベルのマニュアルページには、ランレベルが廃止され、変換テーブルが提供されていることが示されていることに注意してください。

systemdメソッドを使用することもできます。ここには一行の答えはありませんが、体系的な用語で答えを提供します:

[root@testvm1 ~]# systemctl list-units --type target
UNIT                   LOAD   ACTIVE SUB    DESCRIPTION                
basic.target           loaded active active Basic System              
cryptsetup.target      loaded active active Local Encrypted Volumes    
getty.target           loaded active active Login Prompts              
graphical.target       loaded active active Graphical Interface        
local-fs-pre.target    loaded active active Local File Systems (Pre)  
local-fs.target        loaded active active Local File Systems        
multi-user.target      loaded active active Multi-User System          
network-online.target  loaded active active Network is Online          
network.target         loaded active active Network                    
nfs-client.target      loaded active active NFS client services        
nss-user-lookup.target loaded active active User and Group Name Lookups
paths.target           loaded active active Paths                      
remote-fs-pre.target   loaded active active Remote File Systems (Pre)  
remote-fs.target       loaded active active Remote File Systems        
rpc_pipefs.target      loaded active active rpc_pipefs.target          
slices.target          loaded active active Slices                    
sockets.target         loaded active active Sockets                    
sshd-keygen.target     loaded active active sshd-keygen.target        
swap.target            loaded active active Swap                      
sysinit.target         loaded active active System Initialization      
timers.target          loaded active active Timers                    

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

21 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

これにより、現在ロードされているアクティブなターゲットがすべて表示されます。 graphics.targetも表示されます およびmulti-user.target multi-user.target graphics.targetの前に必要です ロードすることができます。この例では、 graphics.target アクティブです。

別のターゲットに切り替える

multi-user.targetに切り替えます 簡単です:

[root@testvm1 ~]# systemctl isolate multi-user.target

これで、表示がGUIデスクトップまたはログイン画面から仮想コンソールに変わります。ログインして現在アクティブなsystemdユニットを一覧表示し、 graphics.target 実行されていません:

[root@testvm1 ~]# systemctl list-units --type target

必ずランレベルを使用してください 以前の「ランレベル」と現在の「ランレベル」の両方が表示されていることを確認するコマンド:

[root@testvm1 ~]# runlevel
5 3
デフォルトのターゲットを変更する

次に、デフォルトのターゲットを multi-user.targetに変更します 常にmulti-user.targetで起動するようにします GUIデスクトップインターフェイスではなく、コンソールコマンドラインインターフェイスの場合。テストホストのrootユーザーとして、systemd構成が維持されているディレクトリに移動し、クイックリストを作成します。

[root@testvm1 ~]# cd /etc/systemd/system/ ; ll
drwxr-xr-x. 2 root root 4096 Apr 25  2018  basic.target.wants
<snip>
lrwxrwxrwx. 1 root root   36 Aug 13 16:23  default.target -> /lib/systemd/system/graphical.target
lrwxrwxrwx. 1 root root   39 Apr 25  2018  display-manager.service -> /usr/lib/systemd/system/lightdm.service
drwxr-xr-x. 2 root root 4096 Apr 25  2018  getty.target.wants
drwxr-xr-x. 2 root root 4096 Aug 18 10:16  graphical.target.wants
drwxr-xr-x. 2 root root 4096 Apr 25  2018  local-fs.target.wants
drwxr-xr-x. 2 root root 4096 Oct 30 16:54  multi-user.target.wants
<snip>
[root@testvm1 system]#

このリストを短くして、systemdがブートプロセスを管理する方法を説明するのに役立ついくつかの重要なことを強調しました。仮想マシン上のディレクトリとリンクの全リストを表示できるはずです。

default.target エントリは、ディレクトリ /lib/systemd/system/graphical.target へのシンボリックリンク(シンボリックリンク、ソフトリンク)です。 。そのディレクトリをリストして、他に何があるかを確認します。

[root@testvm1 system]# ll /lib/systemd/system/ | less

このリストにはファイル、ディレクトリ、その他のリンクが表示されますが、特に multi-user.targetを探してください。 およびgraphical.target 。ここで、 default.targetの内容を表示します 、これは /lib/systemd/system/graphical.targetへのリンクです :

[root@testvm1 system]# cat default.target 
#  SPDX-License-Identifier: LGPL-2.1+
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Graphical Interface
Documentation=man:systemd.special(7)
Requires=multi-user.target
Wants=display-manager.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target display-manager.service
AllowIsolate=yes
[root@testvm1 system]#

このgraphical.targetへのリンク ファイルには、グラフィカルユーザーインターフェイスに必要なすべての前提条件と要件が記載されています。このシリーズの次の記事では、これらのオプションの少なくともいくつかについて説明します。

ホストがマルチユーザーモードで起動できるようにするには、既存のリンクを削除し、正しいターゲットを指す新しいリンクを作成する必要があります。 PWDを/etc / systemd / systemにします 、まだの場合:

[root@testvm1 system]# rm -f default.target 
[root@testvm1 system]# ln -s /lib/systemd/system/multi-user.target default.target

default.targetを一覧表示します リンクして、正しいファイルにリンクしていることを確認します:

[root@testvm1 system]# ll default.target 
lrwxrwxrwx 1 root root 37 Nov 28 16:08 default.target -> /lib/systemd/system/multi-user.target
[root@testvm1 system]#

リンクがこのように表示されない場合は、リンクを削除して再試行してください。 default.targetのコンテンツを一覧表示します リンク:

[root@testvm1 system]# cat default.target 
#  SPDX-License-Identifier: LGPL-2.1+
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Multi-User System
Documentation=man:systemd.special(7)
Requires=basic.target
Conflicts=rescue.service rescue.target
After=basic.target rescue.service rescue.target
AllowIsolate=yes
[root@testvm1 system]#

default.target —これは実際には multi-user.targetへのリンクです この時点で、[ユニット]にさまざまな要件があります セクション。グラフィカルディスプレイマネージャは必要ありません。

リブート。仮想マシンは、ディスプレイ上でtty1として識別される仮想コンソール1のコンソールログインで起動する必要があります。デフォルトのターゲットを変更する方法がわかったので、それを graphics.targetに戻します。 目的のために設計されたコマンドを使用します。

まず、現在のデフォルトのターゲットを確認します:

[root@testvm1 ~]# systemctl get-default 
multi-user.target
[root@testvm1 ~]# systemctl set-default graphical.target
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/graphical.target.
[root@testvm1 ~]#

次のコマンドを入力して、 graphics.targetに直接移動します 再起動せずにディスプレイマネージャのログインページ:

[root@testvm1 system]# systemctl isolate default.target

systemdの開発者がこのサブコマンドに「分離」という用語を選んだ理由はわかりません。私の調査によると、指定されたターゲットを実行しているが、ターゲットをサポートする必要のない他のすべてのターゲットを「分離」して終了することを指している可能性があります。ただし、その効果は、ターゲットをある実行ターゲットから別の実行ターゲットに、この場合はマルチユーザーターゲットからグラフィカルターゲットに切り替えることです。上記のコマンドは、SystemV開始スクリプトおよびinitプログラムの古いinit5コマンドと同等です。

GUIデスクトップにログインし、正常に機能していることを確認します。

まとめ

この記事では、Linuxのsystemdの起動シーケンスについて説明し、2つの重要なsystemdツールである systemctlについて説明しました。 およびjournalctl 。また、あるターゲットから別のターゲットに切り替える方法と、デフォルトのターゲットを変更する方法についても説明しました。

このシリーズの次の記事では、新しいsystemdユニットを作成し、起動時に実行するように構成します。また、ネットワークが稼働し始めた後など、特定のユニットがシーケンスのどこから開始するかを決定するのに役立ついくつかの構成オプションについても説明します。

リソース

インターネット上にはsystemdに関する多くの情報がありますが、その多くは簡潔で、鈍感で、誤解を招くものですらあります。この記事に記載されているリソースに加えて、次のWebページでは、systemdの起動に関するより詳細で信頼性の高い情報を提供しています。

  • Fedora Projectには、systemdに関する優れた実用的なガイドがあります。 systemdを使用してFedoraコンピューターを構成、管理、および保守するために知っておく必要のあるほとんどすべてが含まれています。
  • Fedora Projectには、古いSystemVコマンドを同等のsystemdコマンドと相互参照する優れたチートシートもあります。
  • systemdの詳細な技術情報とその作成理由については、Freedesktop.orgのsystemdの説明をご覧ください。
  • Linux.comの「Moresystemdfun」は、より高度なsystemd情報とヒントを提供します。

また、systemdの設計者であり主要な開発者であるLennart Poetteringによる、Linuxシステム管理者向けの一連の詳細な技術記事もあります。これらの記事は2010年4月から2011年9月の間に書かれましたが、当時と同じように関連性があります。 systemdとそのエコシステムについて書かれた他のすべての優れた点の多くは、これらの論文に基づいています。

  • PID1を再考する
  • 管理者向けsystemd、パートI
  • 管理者向けsystemd、パートII
  • 管理者向けsystemd、パートIII
  • 管理者向けsystemd、パートIV
  • 管理者向けsystemd、パートV
  • 管理者向けsystemd、パートVI
  • 管理者向けsystemd、パートVII
  • 管理者向けsystemd、パートVIII
  • 管理者向けsystemd、パートIX
  • 管理者向けsystemd、パートX
  • 管理者向けsystemd、パートXI

Linux
  1. straceを使用したLinuxでのシステムコールの理解

  2. systemdLinuxシステムでのrc.localの置き換え

  3. LinuxでSystemdサービスを作成する方法

  1. Linuxsystemdに新しいサービスを追加する

  2. Linux – Linuxでの同期コマンド操作を理解していますか?

  3. Linux – Grubをアンインストールする方法は?

  1. CでのLinuxソフトウェアライブラリを理解するためのガイド

  2. systemdを使用してスタートアップを管理する

  3. Linuxデスクトップを理解していますか?