101.2 レッスン 1
Certificate: |
LPIC-1 |
---|---|
Version: |
5.0 |
Topic: |
101 システムアーキテクチャ |
Objective: |
101.2 システムの起動 |
Lesson: |
1 of 1 |
はじめに
マシンを制御するには、オペレーティングシステムの主要コンポーネント〜すなわちカーネルを、ブートローダー(bootloader)というプログラムでロードする必要があります。このプログラム自体は、BIOSやUEFIなどのプリインストールされたファームウェアによってロードされます。ブートローダーは、ルートファイルシステムを含むパーティションやオペレーティングシステムを実行するモードなどのパラメータを、カーネルに渡すようにカスタマイズできます。カーネルがロードされると、ブートの過程でハードウェアを識別して構成します。最後にカーネルは、システムサービスの開始と管理を担当するユーティリティを呼び出します。
Note
|
一部のLinuxディストリビューションでは、このレッスンで実行するコマンドにroot権限が必要なことがあります。 |
BIOSまたはUEFI
x86マシンでブートローダーを実行する手順は、BIOSとUEFIのどちらを使用するかによって異なります。 BIOS(Basic Input/Output System)は、マザーボードに搭載された不揮発性メモリチップに保存され、コンピュータの電源がオンになると実行されるプログラムです。この種のプログラムは ファームウェア と呼ばれ、そのシステムに搭載されたストレージデバイスとは異なる場所に保存されています。BIOSは、(BIOS構成ユーティリティでの定義順序による)最初のストレージデバイスの最初の440バイトに、ブートローダーの最初のステージ(ブートストラップ とも呼ばれる)が置かれていると想定します。ストレージデバイスの最初の512バイトはMBR(Master Boot Record)と呼ばれて、ブートローダーの最初のステージと、DOSパーティションスキーマに基づく標準的なパーティションテーブルを含んでいます。MBRに正しいデータが含まれていない場合は、通常の方法ではシステムを起動できません。
BIOSを搭載したシステムにおいては、一般的に、起動前に以下の処理が行われます:
-
POST(power-on self-test)処理は、マシンの電源がオンになるとすぐに、単純なハードウェア診断を実行します。
-
BIOSは、ビデオ出力、キーボード、ストレージメディアなど、システムをロードするための基本コンポーネントを起動します。
-
BIOSは、MBRからブートローダーの最初のステージをロードします(BIOS設定で指定したデバイスの最初の440バイト)。
-
ブートローダーの第1ステージは、ブートオプションの提示とカーネルのロードを行う、ブートローダーの第2ステージを呼び出します。
UEFI(Unified Extensible Firmware Interface)は、いくつかの重要な点でBIOSとは異なります。 UEFIもBIOSと同様にファームウェアの一種ですが、パーティションを識別して、そこにあるファイルシステムを読み取ることができます。UEFIはMBRではなく、マザーボードに搭載された不揮発性メモリ(NVRAM)に保存されている設定情報を利用します。設定情報に書かれた位置ないしブートメニューで選択された位置から、UEFIと互換性を持った EFIアプリケーション と呼ばれるプログラムが実行されます。EFIアプリケーションには、ブートローダー、オペレーティングシステムセレクター、システム診断および修復用のツールなどがあります。これらは、伝統的なストレージデバイス上のパーティション上の、UEFIと互換性のあるファイルシステムに存在する必要があります。標準的なUEFI互換のファイルシステムは、ブロックデバイスの場合はFAT12、FAT16、FAT32、光メディアの場合はISO-9660です。UEFIのこのアプローチにより、BIOSよりもはるかに高度なツールの実装が可能になっています。
EFIアプリケーションを含むパーティションは、 EFI System Partition または単にESPと呼ばれます。このパーティションを、ルートファイルシステムやユーザーデータのファイルシステムなどに使用してはいけません。ESPパーティションのEFIディレクトリには、NVRAMに保存されているエントリが指すアプリケーションが含まれています。
UEFIを備えたシステムにおいては、一般的にオペレーティングシステムの起動前に以下の処理が行われます。
-
POST(power-on self-test)処理は、マシンの電源がオンになるとすぐに、単純なハードウェア診断を実行します。
-
UEFIは、ビデオ出力、キーボード、ストレージメディアなど、システムをロードするための基本コンポーネントを起動します。
-
UEFIのファームウェアは、NVRAMに格納されている設定情報に従って、ESPパーティションのファイルシステムに格納されているEFIアプリケーションを実行します。通常、実行されるEFIアプリケーションはブートローダーです。
-
事前定義されたEFIアプリケーションがブートローダーの場合、それがカーネルをロードしてオペレーティングシステムを起動します。
UEFI規格は、Secure Boot と呼ばれる機能もサポートしています。この機能は、署名されたEFIアプリケーション、つまりハードウェアメーカーによって承認されたEFIアプリケーションの実行のみを許可します。この機能により、悪意のあるソフトウェアに対する保護が強化されますが、製造元の保証対象外のオペレーティングシステムのインストールが困難になることがあります。
ブートローダー
x86アーキテクチャでLinux用に最も人気のあるブートローダーはGRUB(Grand Unified Bootloader)です。BIOSまたはUEFIによって呼び出されるとすぐに、GRUBは起動可能なオペレーティングシステムのリストを表示します。リストが自動的に表示されない場合もありますが、BIOSからGRUBが呼び出されているときにShiftを押すとリストを呼び出すことができます。UEFIシステムでは、代わりにEscキーを使用します。
GRUBメニューから、インストールされているカーネルのどれをロードするかを選択し、それに新しいパラメータを渡すことができます。ほとんどのカーネルパラメータは、option=value
というパターンで指定します。使う機会が多いいくつかのパラメータを以下に示します:
acpi
-
ACPIサポートを有効/無効にします。
acpi=off
は、ACPIのサポートを無効にします。 init
-
代替の初期化デーモンを指定します。たとえば、
init=/bin/bash
は、Bashシェルを初期化デーモンに指定します。これにより、カーネルがブートすると直ぐにシェルセッションが開始されることになります。 systemd.unit
-
アクティブ化する systemd ターゲットを指定します。たとえば、
systemd.unit=graphical.target
などです。systemdは、 SysV Init で定義されているランレベルも受け入れます。たとえば、ランレベル1をアクティブにするには、カーネルパラメータとして数字1
または文字S
(“single” の略)を指定します。 mem
-
システムで使用可能なRAMの量を指定します。このパラメータは、仮想マシンゲストが使用できるRAMの量を制限する場合に便利です。例えば
mem=512M
を使用すると、そのゲストシステムで使用可能なRAMの量が512メガバイトに制限されます。 maxcpus
-
対称型マルチプロセッサマシンにおいて、システムが認識するプロセッサ(またはプロセッサコア)の数を制限します。仮想マシンにも役立ちます。値
0
は、マルチプロセッサのサポートをオフにし、カーネルパラメータnosmp
と同じ効果があります。パラメータmaxcpus=2
は、オペレーティングシステムで使用可能なプロセッサの数を2つに制限します。 quiet
-
ほとんどのブートメッセージを非表示にします。
vga
-
ビデオモードを選択します。パラメータ
vga=ask
は、選択可能なモードのリストを表示します。 root
-
ブートローダーで指定されたものとは異なるルートパーティションを設定します。たとえば、
root=/dev/sda3
などです。 rootflags
-
ルートファイルシステムのマウントオプション。
ro
-
ルートファイルシステムを読み取り専用で初期マウントします。
rw
-
ルートファイルシステムを読み書き両用で初期マウントします。
通常はカーネルパラメータの変更は必要ありませんが、オペレーティングシステム関連の問題を検出して解決するのに役立つ場合があります。カーネルパラメータを、/etc/default/grub
ファイルの GRUB_CMDLINE_LINUX
行に追加すると、再起動後にも有効となります。/etc/default/grub
を変更したら、grub-mkconfig -o /boot/grub/grub.cfg
コマンドを実行して、ブートローダーの新しい構成ファイルを再生成する必要があります。オペレーティングシステムが起動すると、そのセッションの開始時に指定されたカーネルパラメータを、/proc/cmdline
ファイルから読み取ることができます。
Note
|
GRUBの構成については、後のレッスンで詳しく説明します。 |
システムの初期化
オペレーティングシステムは、カーネルだけではなく、さまざな機能を提供する多数のコンポーネントから成っています。これらのコンポーネントの多くは、単純なシェルスクリプトから複雑なサービスプログラムまで、システムの初期化処理によって読み込まれます。システムの初期化中に実行されてすぐに終了する短期間のタスクの多くにはスクリプトが使用されます。オペレーティングシステムの本質的な側面を担当するサービス(デーモン(daemons)とも呼ばれる)は、常に実行され続けます。
さまざまな特徴があるスタートアップスクリプトやデーモンをLinuxディストリビューションに組み込む方法は、バラエティに富んだものでした。そのため、すべてのLinuxディストリビューションのメンテナーとユーザーの期待に応える決定的な解決方法は、長い期間存在しませんでした。とはいえ、ディストリビューションのメンテナが選択したツールは、少なくともシステムサービスを開始、停止、再起動できます。ソフトウェアの更新後に再起動などの操作が自動的に実行されることもありますが、構成ファイルに変更を加えた後のほとんどの場合には、システム管理者がサービスを手動で再起動する必要があります。
また、システム管理者が、状況に応じて特定のデーモン群をアクティブ化できると便利です。たとえば、システムメンテナンスタスクを実行するために、最小限のサービス群のみを実行するといった場面があります。
Note
|
厳密に言えば、オペレーティングシステムとは、ハードウェアを制御しすべてのプロセスを管理するカーネルとそのコンポーネントを指します。しかしながら一般的には、 “オペレーティングシステム” という用語をより大きくとらえ、ユーザーが基本的な計算タスクを実行できるソフトウェア環境のさまざまなプログラムのグループ全体を指します。 |
ブートローダーがカーネルをRAMにロードした直後に、オペレーティングシステムの初期化が開始されます。CPUをカーネルが専有して、基本的なハードウェア構成やメモリアドレス指定など、オペレーティングシステムの基本的な機能のセットアップを行います。
次に、カーネルは initramfs (RAM上の初期ファイルシステム)を開きます。 initramfsは、ブート処理中に一時的なルートファイルシステムとして使用されるファイルシステムを格納したアーカイブです。initramfsファイルの主な目的は、カーネルがオペレーティングシステムの “実際の” ルートファイルシステムにアクセスするために必要なモジュールを提供することです。
ルートファイルシステムが利用可能になるとすぐに、カーネルは /etc/fstab
で構成されたすべてのファイルシステムをマウントし、最初のプログラムである init
という名前のユーティリティを実行します。init
プログラムは、すべての初期化スクリプトとシステムデーモンの実行を担当します。systemd や Upstart など、従来のinitとは異なる初期化デーモンの実装もあります。initプログラムが起動すると、initramfsはRAMから削除されます。
- 標準的なSysVinit
-
標準的な SysVinitに基づくサービスマネージャーは、起動するデーモンとリソースを制御するために、ランレベル の概念を使用します。ランレベルには0から6の番号が付けられ、ディストリビューションのメンテナがそれぞれの番号に特定の目的を割り当てます。すべてのディストリビューション間で共通するランレベルは、ランレベル0、1、6のみです。
- systemd
-
systemdは、SysVinitのコマンドとランレベルに対する互換性を備えた、最新のシステムとサービスのマネージャーです。systemdは、ソケットとD-Busを使用したサービスのアクティブ化、オンデマンドでのデーモン実行、 cgroups によるプロセス監視、スナップショットのサポート、システムセッションの回復、マウントポイントの制御、依存関係に基づくサービス制御などを、並行して行います。近年、主要なLinuxディストリビューションでは、デフォルトのシステムマネージャーとしてsystemdの採用が増えています。
- Upstart
-
Upstartは、systemdと同様に、SysVinitの代わりになります。Upstartの目標は、システムサービスを並列的に起動することにより、ブート処理を高速化することです。Upstartは、以前のUbuntuベースのディストリビューションなどで使用されていましたが、今日ではsystemdに取って代わられました。
ブート処理の確認
起動処理の最中に、オペレーティングシステムを完全に停止するほどには重要ではないエラーが発生することがあります。そのようなエラーが、システムの所定の動作を損なうかもしれません。エラーメッセージには、エラーがいつどのように発生したかを示す貴重な情報が含まれているので、後の調査に役立ちます。エラーメッセージが発生しない時でも、起動処理中に収集された情報は、チューニングや設定に役立ちます。
カーネルは、起動時を含むメッセージを、カーネル・リング・バッファ と呼ぶメモリ領域に記録します。初期化処理中にアニメーションが表示されてメッセージが表示されない場合でも、メッセージはカーネルリングバッファに格納されます。ただし、システムの電源がオフになるか、dmesg --clear
コマンドを実行すると、カーネルリングバッファ内のすべてのメッセージは消えてしまいます。オプションを指定しない dmesg
コマンドは、カーネルリングバッファ内の現在のメッセージを表示します。
$ dmesg [ 5.262389] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 5.449712] ip_tables: (C) 2000-2006 Netfilter Core Team [ 5.460286] systemd[1]: systemd 237 running in system mode. [ 5.480138] systemd[1]: Detected architecture x86-64. [ 5.481767] systemd[1]: Set hostname to <torre>. [ 5.636607] systemd[1]: Reached target User and Group Name Lookups. [ 5.636866] systemd[1]: Created slice System Slice. [ 5.637000] systemd[1]: Listening on Journal Audit Socket. [ 5.637085] systemd[1]: Listening on Journal Socket. [ 5.637827] systemd[1]: Mounting POSIX Message Queue File System... [ 5.638639] systemd[1]: Started Read required files in advance. [ 5.641661] systemd[1]: Starting Load Kernel Modules... [ 5.661672] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro [ 5.694322] lp: driver loaded but no devices found [ 5.702609] ppdev: user-space parallel port driver [ 5.705384] parport_pc 00:02: reported by Plug and Play ACPI [ 5.705468] parport0: PC-style at 0x378 (0x778), irq 7, dma 3 [PCSPP,TRISTATE,COMPAT,EPP,ECP,DMA] [ 5.800146] lp0: using parport0 (interrupt-driven). [ 5.897421] systemd-journald[352]: Received request to flush runtime journal from PID 1
dmesg
の出力は数百行に達することがあるため、上記のリストには、カーネルがsystemdサービスマネージャーを呼び出す部分を抜粋して示しています。行の先頭の値は、カーネルのロードが開始された時から経過した秒数です。
systemdを使用するシステムでは、journalctl
コマンドに -b
、--boot
、-k
、ないし --dmesg
オプションを指定すると、ブート時のメッセージを表示します。journalctl --list-boots
コマンドは、現在のブートからの相対的なブート番号とそのハッシュ値、最初と最後のメッセージのタイムスタンプをリスト表示します。
$ journalctl --list-boots -4 9e5b3eb4952845208b841ad4dbefa1a6 Thu 2019-10-03 13:39:23 -03—Thu 2019-10-03 13:40:30 -03 -3 9e3d79955535430aa43baa17758f40fa Thu 2019-10-03 13:41:15 -03—Thu 2019-10-03 14:56:19 -03 -2 17672d8851694e6c9bb102df7355452c Thu 2019-10-03 14:56:57 -03—Thu 2019-10-03 19:27:16 -03 -1 55c0d9439bfb4e85a20a62776d0dbb4d Thu 2019-10-03 19:27:53 -03—Fri 2019-10-04 00:28:47 -03 0 08fbbebd9f964a74b8a02bb27b200622 Fri 2019-10-04 00:31:01 -03—Fri 2019-10-04 10:17:01 -03
systemdに基づくシステムでは過去のブートログも保持されるので、過去のブートにおけるオペレーティングシステムからのメッセージも調べることができます。-b0
ないし --boot=0
オプションを指定すると、現在のブート時のメッセージが表示されます。-b -1
ないし --boot=-1
オプションを指定すると、前回のブート時のメッセージを表示します。-b -2
ないし --boot=-2
オプションを指定すると、さらにその前のブート時のメッセージを表示します。次の抜粋は、直前のブート時にカーネルがsystemdサービスマネージャーを呼び出した部分を示しています。
$ journalctl -b 0 oct 04 00:31:01 ubuntu-host kernel: EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) oct 04 00:31:01 ubuntu-host kernel: ip_tables: (C) 2000-2006 Netfilter Core Team oct 04 00:31:01 ubuntu-host systemd[1]: systemd 237 running in system mode. oct 04 00:31:01 ubuntu-host systemd[1]: Detected architecture x86-64. oct 04 00:31:01 ubuntu-host systemd[1]: Set hostname to <torre>. oct 04 00:31:01 ubuntu-host systemd[1]: Reached target User and Group Name Lookups. oct 04 00:31:01 ubuntu-host systemd[1]: Created slice System Slice. oct 04 00:31:01 ubuntu-host systemd[1]: Listening on Journal Audit Socket. oct 04 00:31:01 ubuntu-host systemd[1]: Listening on Journal Socket. oct 04 00:31:01 ubuntu-host systemd[1]: Mounting POSIX Message Queue File System... oct 04 00:31:01 ubuntu-host systemd[1]: Started Read required files in advance. oct 04 00:31:01 ubuntu-host systemd[1]: Starting Load Kernel Modules... oct 04 00:31:01 ubuntu-host kernel: EXT4-fs (sda1): re-mounted. Opts: commit=300,barrier=0,errors=remount-ro oct 04 00:31:01 ubuntu-host kernel: lp: driver loaded but no devices found oct 04 00:31:01 ubuntu-host kernel: ppdev: user-space parallel port driver oct 04 00:31:01 ubuntu-host kernel: parport_pc 00:02: reported by Plug and Play ACPI oct 04 00:31:01 ubuntu-host kernel: parport0: PC-style at 0x378 (0x778), irq 7, dma 3 [PCSPP,TRISTATE,COMPAT,EPP,ECP,DMA] oct 04 00:31:01 ubuntu-host kernel: lp0: using parport0 (interrupt-driven). oct 04 00:31:01 ubuntu-host systemd-journald[352]: Journal started oct 04 00:31:01 ubuntu-host systemd-journald[352]: Runtime journal (/run/log/journal/abb765408f3741ae9519ab3b96063a15) is 4.9M, max 39.4M, 34.5M free. oct 04 00:31:01 ubuntu-host systemd-modules-load[335]: Inserted module 'lp' oct 04 00:31:01 ubuntu-host systemd-modules-load[335]: Inserted module 'ppdev' oct 04 00:31:01 ubuntu-host systemd-modules-load[335]: Inserted module 'parport_pc' oct 04 00:31:01 ubuntu-host systemd[1]: Starting Flush Journal to Persistent Storage...
ブート時だけではなく、オペレーティングシステムによって発行されたメッセージは、/var/log/
ディレクトリ内のファイルに保存されます。カーネルとinitramfsをロードした後に重大なエラーが発生し、オペレーティングシステムが初期化プロセスを続行できない場合は、別のブートメディアを使用してシステムを起動して、エラー発生時に対応するファイルシステムにアクセスします。そして、そのファイルシステムの /var/log/
の下にあるファイルを検索して、起動プロセスの中断の原因を探します。コマンド journalctl
の -D
ないし --directory
オプションを使用すると、systemdログメッセージのデフォルトの場所である /var/log/journal/
以外のディレクトリにあるログメッセージを読み取ることができます。 systemdのログメッセージはプレーンテキストではないので、それらを読み取るには journalctl
コマンドを使用します。
演習
-
BIOSファームウェアを搭載したマシンで、ブートストラップのバイナリはどこにありますか?
-
UEFIファームウェアは、EFIアプリケーションと呼ばれる外部プログラムによる機能拡張をサポートします。ただし、これらのアプリケーションは所定の位置に置く必要があります。EFIアプリケーションはシステムのどこに配置されますか?
-
ブートローダーは、カーネルをロードする際にカスタムパラメータを渡すことができます。ルートファイルシステムの位置を誤って設定したためにシステムを起動できない場合に、カーネルに正しいルートファイルシステムの位置
/dev/sda3
を指示するにはどうしますか? -
Linuxマシンの起動プロセスが、次のメッセージで終了しました。
ALERT! /dev/sda3 does not exist. Dropping to a shell!
この問題の原因として何が考えられますか?
発展演習
-
マシンに複数のオペレーティングシステムがインストールされている場合、ブートローダーは選択できるオペレーティングシステムのリストを表示します。新しくオペレーティングシステムをインストールしたときに、ハードディスクのMBRを上書きしてブートローダーの最初のステージを消去してしまい、他のオペレーティングシステムにアクセスできなくなることがあります。UEFIファームウェアを搭載したマシンでは、このような問題が発生しないのはなぜですか?
-
カスタムカーネルをインストールするときに、適切なinitramfsの提供を忘れるとどうなりますか?
-
ブート時のログは数百行の長さに達するので、読みやすいように
dmesg
コマンドの出力を、less
コマンドなどのページャーにパイプすることがよくあります。ページャー使用しなくても済むように、自動的に出力をページに分割するdmesg
コマンドのオプションは何ですか? -
停止中のマシンから、ファイルシステム全体を含むハードドライブを取り外して、稼働中のマシンのセカンダリドライブとして接続しました。そのマウントポイントが
/mnt/hd
であるとすると、/mnt/hd/var/log/journal/
にあるジャーナルファイルの内容を、journalctl
コマンドで調べるにはどうしますか?
まとめ
このレッスンでは、標準的なLinuxシステムのブートシーケンスについて説明しました。Linuxシステムのブート処理がどのように行われるかを知っていると、システムにアクセスできなくなるおそれがあるエラーを防ぐのに役立ちます。このレッスンでは、以下のトピックについて説明しました:
-
BIOSとUEFIにおける起動方法の違い。
-
システムの一般的な初期化手順。
-
ブート時のメッセージを取り出す方法。
以下のコマンドと手順を取り上げました:
-
よく使うカーネルパラメータ。
-
ブートメッセージを取り出すコマンド:
dmesg
とjournalctl
。
演習の解答
-
BIOSファームウェアを搭載したマシンで、ブートストラップのバイナリはどこにありますか?
BIOS構成で最初のストレージデバイスとして定義したデバイスのMBRの中にあります。
-
UEFIファームウェアは、EFIアプリケーションと呼ばれる外部プログラムによる機能拡張をサポートします。ただし、これらのアプリケーションは所定の位置に置く必要があります。EFIアプリケーションはシステムのどこに配置されますか?
EFIアプリケーションは、任意のストレージブロック上のファイルシステム(通常はFAT32ファイルシステム)であるEFIシステムパーティション(ESP)に配置されます。
-
ブートローダーは、カーネルをロードする際にカスタムパラメータを渡すことができます。ルートファイルシステムの位置を誤って設定したためにシステムを起動できない場合に、カーネルに正しいルートファイルシステムの位置
/dev/sda3
を指示するにはどうしますか?root=/dev/sda3
のように、root
パラメータを使用します。 -
Linuxマシンの起動プロセスが、次のメッセージで終了しました。
ALERT! /dev/sda3 does not exist. Dropping to a shell!
この問題の原因として何が考えられますか?
カーネルは、ルートファイルシステムとして指示されたデバイス
/dev/sda3
を見つけることができませんでした。
発展演習の解答
-
マシンに複数のオペレーティングシステムがインストールされている場合、ブートローダーは選択できるオペレーティングシステムのリストを表示します。新しくオペレーティングシステムをインストールしたときに、ハードディスクのMBRを上書きしてブートローダーの最初のステージを消去してしまい、他のオペレーティングシステムにアクセスできなくなることがあります。UEFIファームウェアを搭載したマシンでは、このような問題が発生しないのはなぜですか?
UEFIマシンは、ブートローダーの最初のステージを格納するために、ハードディスクのMBRを使用しないからです。
-
カスタムカーネルをインストールするときに、適切なinitramfsの提供を忘れるとどうなりますか?
ルートファイルシステムが、カーネルモジュールとしてコンパイルされているタイプの場合には、ルートファイルシステムにアクセスできません。
-
ブート時のログは数百行の長さに達するので、読みやすいように
dmesg
コマンドの出力を、less
コマンドなどのページャーにパイプすることがよくあります。ページャー使用しなくても済むように、自動的に出力をページに分割するdmesg
コマンドのオプションは何ですか?dmesg -H
ないしdmesg --human
コマンドでは、ページャーが有効になります。 -
停止中のマシンから、ファイルシステム全体を含むハードドライブを取り外して、稼働中のマシンのセカンダリドライブとして接続しました。そのマウントポイントが
/mnt/hd
であるとすると、/mnt/hd/var/log/journal/
にあるジャーナルファイルの内容を、journalctl
コマンドで調べるにはどうしますか?journalctl -D /mnt/hd/var/log/journal
ないしjournalctl --directory=/mnt/hd/var/log/journal
コマンドを使用します。