systemd-242.0-3
今日のアップデートを受け取りました(いくつかの関連アップデートも含まれています)。パッケージをインストールした後、端末はinitramfsが最初からビルドされたことを示します。出力は次のとおりです。
:: Running post-transaction hooks...
(1/9) Updating linux initcpios...
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
-> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img
==> Starting build: 5.0.9-arch1-1-ARCH
-> Running build hook: [base]
-> Running build hook: [udev]
-> Running build hook: [autodetect]
-> Running build hook: [modconf]
-> Running build hook: [block]
-> Running build hook: [filesystems]
-> Running build hook: [keyboard]
-> Running build hook: [fsck]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux.img
==> Image generation successful
~によるとリニアFS:
起動時に、ブートローダはカーネルとinitramfsイメージをメモリにロードし、カーネルを起動します。カーネルは initramfs が存在するかどうかを確認し、見つかった場合はそれを / にマウントして /init を実行します。 initプログラムは通常シェルスクリプトです。 initramfsを使用すると、起動プロセスに時間がかかることがあり、かなりかかることがあります。
gzipとcpioツールを使用して開き、フォルダ全体が/boot/initramfs-linux.img
含ま/usr/lib/systemd
れています。カーネルだけを含めてはいけませんか? initramfsにもsystemdが存在するのはなぜですか?カーネルをRAMに入れてディスクからシステムをロードする方が速くないですか?
答え1
即時の理由は、いくつかのパッケージ(私の考えではカーネルパッケージだと思い、systemdとは関係ありません)にインストールスクリプトがあるからです。 initramfsには、そのパッケージにフック/バイナリ/カーネルモジュールなどが含まれている可能性があるため、再構築する必要があります。それ以外の場合は、以前のバージョンを使用します(ほとんどのinitramfsにはフックする必要なカーネルモジュールが含まれていることに注意してください)。次回の起動時に、古いバージョンが新しいカーネルで実行できない実際のルート)。
initramfsにはカーネルは含まれていませんが(すべてのファイルを含めることはできますが意味はありません)、カーネルはすでにブートローダを介してRAMにロードされており、initramfsは最初のマウントされたファイルシステムとしてのみ使用されます。
一般的なシステムでは、initramfsの作業は、「実際のルートファイルシステム」(で使用される)をマウントする最初のPID = 1プロセスを実行するためにinitプログラム(他の依存ライブラリまたはスクリプトソルバーを含めることができます)を提供することです。です。コンピュータの「通常のルートファイルシステム)ハードディスクパーティション」を選択し、ピボットルートに移動して物理ルートファイルシステムでinitを実行します。
PID = 1で実行するように設計されたプログラムであるSystemdは、initramfsではinitで、実際のルートファイルシステムではinitで実行される機能を提供します。
答え2
カーネルはRAMに配置され、別のinitramfsがカーネルの最初のファイルシステムであるrootfs(= ramfs)に抽出されます。
Initramfsは、組み込みアプリケーションなどのミニLinuxシステムとして使用できます。
systemd-initを使用している場合、systemdファイルはinitramfsにあります。
HOOKS
mkinitcpio.conf
含まれるフックスクリプト、ファイルをinitramfs(カーネルモジュール、プログラム、起動スクリプト...)に入れますが、そうではありません。フックスクリプト彼ら自身。systemd-init
フックの代わりにフックがありますbusybox
。
pacman -Syu linux
最新のカーネルにアップデートし/boot
ますが、initramfsの再生成もトリガーします。
pacman -Syu systemd
initramfs(最後のリンク)の再生成をトリガーすることもできますが、カーネルのインストールのように自動的には実行されません。systemd-init
代替案があるからだbusybox
。 Archlinuxはbusybox
デフォルトでファイルとそのフックを使用します。
リンク: