カーネルパラメータ

提供: ArchWiki
2020年11月21日 (土) 00:51時点におけるHayao0819 (トーク | 投稿記録)による版 (パラメータの一覧を英語版から翻訳しました)
ナビゲーションに移動 検索に移動

カーネルの挙動を操作するために、カーネルにオプションを通すタイミングは3回あります:

  1. カーネルをビルドするとき。
  2. カーネルを起動するとき(普通、ブートローダから読み込まれた時)。
  3. 起動中(/proc/sys にあるファイルを使う)。

このページでは2番目の場合について詳しく記述し、Arch Linux でよく使われるカーネルパラメータの一覧を示します。

設定

ノート:

カーネルパラメータを設定するには、ブートメニューが出た時にそのメニューを編集して一時的にセットするのと、ブートローダの設定ファイルを修正する方法があります。

ここでは Syslinux, systemd-boot, GRUB, GRUB Legacy, LILO のそれぞれの場合に quietsplash パラメータを加える方法を説明します。

Syslinux

  • メニューが表示されたら Tab を押してパラメータを文字列の最後に加える:
linux /boot/vmlinuz-linux root=/dev/sda3 initrd=/boot/initramfs-linux.img quiet splash
Enter を押して加えたパラメータを使って起動します。
  • 再起動後も変更を持続させるには、/boot/syslinux/syslinux.cfg を開き、パラメータを APPEND 行に加えます:
APPEND root=/dev/sda3 quiet splash

Syslinux の設定について、詳しくは Syslinux を見て下さい。

systemd-boot

  • メニューが表示されたら e を押して一番末尾にパラメータを追加してください:
initrd=\initramfs-linux.img root=/dev/sda2 quiet splash
Enter を押すと編集したパラメータで起動が開始されます。
ノート: メニューのタイムアウト値を設定していない場合、起動時 systemd-boot のメニューが表示されるまで Space を押し続ける必要があります。
  • 再起動後も変更を永続的に適用するには、/boot/loader/entries/arch.conf (ビギナーズガイドの指示通りに EFI System Partition と設定ファイルを設定した場合) を編集して options 行に以下を追加してください:
options root=/dev/sda2 quiet splash

systemd-boot に関する詳細は systemd-boot の記事を見て下さい。

GRUB

  • メニューが表示されたら e を押しパラメータを linux 行の後ろに加えます:
linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff quiet splash
b を押して加えたパラメータを使って起動します。
  • 再起動後も変更を持続させるには、/boot/grub/grub.cfg を開いて上と同じ行を編集することもできますが、初心者におすすめの方法は:
/etc/default/grub を開きカーネルオプションを GRUB_CMDLINE_LINUX_DEFAULT 行に追加:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
そして grub.cfg ファイルを自動生成します:
# grub-mkconfig -o /boot/grub/grub.cfg

GRUB の設定について、詳しくは GRUB を見て下さい。

GRUB Legacy

  • メニューが表示されたら e を押しパラメータを kernel 行の後ろに加えます:
kernel /boot/vmlinuz-linux root=/dev/sda3 quiet splash
b を押して加えたパラメータを使って起動します。
  • 再起動後も変更を持続させるには、/boot/grub/menu.lst を開いて上と同じように kernel 行にパラメータを追加します。

GRUB Legacy の設定について詳しくは GRUB Legacy を見て下さい。

LILO

  • パラメータを /etc/lilo.conf に追加します:
image=/boot/vmlinuz-linux
        ...
        quiet splash

LILO の設定については LILO により多くの情報があります。

rEFInd

  • 再起動後も変更を適用するには、/boot/EFI/arch/refind_linux.conf を編集して、パラメータを全ての(もしくは必要な)行に追加してください、例えば:
"Boot to X"   "root=PARTUUID=978e3e81-8048-4ae1-8a06-aa727458e8ff ro rootfstype=ext4 quiet splash
  • rEFInd で OS の自動検知を無効にしていて、代わりに /boot/EFI/refind/refind.conf で OS を定義して OS をロードしている場合、以下のように編集することができます:
menuentry "Arch" {
	loader /EFI/arch/vmlinuz-arch.efi
	options "quiet splash ro root=PARTUUID=978e3e81-8048-4ae1-8a06-aa727458e8ff"

rEFInd でカーネルパラメータを設定する方法についての詳しい情報は以下を見て下さい

  1. Configuring the rEFInd Bootmanager
  2. Methods of Booting Linux

EFISTUB/efibootmgr

EFISTUB#ブートマネージャを使わずに直接起動する を見て下さい。

cmdline をハイジャック

ブートローダーにアクセスすることすらできない場合でも、(root 権限があれば) カーネルパラメータを変更してデバッグを有効にできる可能性があります。その方法とは、カーネルパラメータが保存されている /proc/cmdline を上書きすることです。/proc/cmdline は root でも書き込むことができないので、バインドマウントを使ってパスをマスクすることでハイジャックします。

まず、使用したいカーネルパラメータを記述したファイルを作成してください:

/root/cmdline
root=/dev/disk/by-label/ROOT ro console=tty1 logo.nologo debug

次に、バインドマウントを使ってパラメータを上書きします:

# mount -n --bind -o ro /root/cmdline /proc/cmdline

-n オプションは /etc/mtab へのマウントの追加をスキップするため、root が読み取り専用でマウントされていても機能します。cat /proc/cmdline を実行することでカーネルパラメータが変更されたか確認できます。

パラメータ一覧

パラメータは parameterparameter=value という形式です。全てのパラメータは大文字・小文字を区別します。

ノート: リストの全てのオプションが使えるとは限りません。ほとんどのパラメータはサブシステムと連携していて、カーネルをサブシステムと一緒に動作するよう設定した時にだけ働きます。また、特定のハードウェアに依存しているパラメータもあります。

以下のリストは完全ではありません。全てのオプションの一覧は、カーネルのドキュメントを見て下さい。

パラメータ 説明
root= ルートファイルシステム カーネルがサポートしているデバイス名のフォーマットについては init/do_mounts.c を参照してください。 initramfsudev を使用した場合、 より多くの名前形式がサポートされています
rootflags= 永続的なブロックデバイスの命名
ro 起動時にルートファイルシステムを読み取り専用でマウントします (デフォルト1)
rw 起動時にルートデバイスを読み書き可能でマウント
initrd= initial ramdisk の場所を指定。 UEFI ブートローダーEFISTUB ではファイルパスの区切り文字としてバックスペース (\) を使用するしなければなりません
init= Initプロセスとして /sbin/init の代わりに指定されたバイナリを実行します
init=/bin/sh シェルでブートします
systemd.unit= 指定されたターゲットで起動します
resume= ハイバネートのために使うスワップデバイスを指定します
nomodeset Kernel Mode Setting を無効化します
zswap.enabled Zswapを有効化します
panic= カーネルパニックが発生した際に自動的に再起動する時間を指定します
debug カーネルでバッグを有効化します (イベントログレベル).
mem= 指定された量のメモリを強制的に使います
maxcpus= SMPカーネルが起動時に使用するプロセッサーの最大値を指定します
selinux= SELinuxを有効もしくは無効にします
netdev= ネットワークデバイスのパラメータを指定します
video= フレームバッファビデオのデフォルトを上書きします

1 ブートローダーによって rwro のどちらも設定されていないときは mkinitcpio はデフォルトの値として ro を使用します。ブートローダは使用する値を設定することがあります。例えば GRUB はデフォルトで rw を使用します (FS#36275 を参照)。


関連項目