「Syslinux」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(→‎手動インストール: セクション名を英語版と同じに)
(4人の利用者による、間の23版が非表示)
1行目: 1行目:
 
[[Category:ブートローダー]]
 
[[Category:ブートローダー]]
  +
[[de:Syslinux]]
 
[[en:Syslinux]]
 
[[en:Syslinux]]
[[es:Syslinux]]
 
[[fr:Syslinux]]
 
[[it:Syslinux]]
 
 
[[ru:Syslinux]]
 
[[ru:Syslinux]]
 
[[tr:Syslinux]]
 
[[tr:Syslinux]]
[[zh-CN:Syslinux]]
+
[[zh-hans:Syslinux]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|Arch ブートプロセス}}
 
{{Related|Arch ブートプロセス}}
{{Related|ブートローダー}}
 
 
{{Related articles end}}
 
{{Related articles end}}
[[Wikipedia:ja:SYSLINUX|Syslinux]] はハードドライブや CD、PXE を介したネットワークなどから起動できるブートローダの集合です。[[Wikipedia:ja:File Allocation Table|FAT]], [[Wikipedia:ja:ext2|ext2]], [[ext3]], [[ext4]], [[Btrfs]] ファイルシステムをサポートしています。
 
   
  +
[[Wikipedia:ja:SYSLINUX|Syslinux]] は、ドライブや CD から、あるいは [[PXE]] によってネットワーク経由で起動できるブートローダのコレクションです。サポートされている[[ファイルシステム]]としては、[[FAT]]、[[NTFS]]、[[Wikipedia:ja:ext2|ext2]]、[[ext3]]、[[ext4]]、[[XFS]]、[[Wikipedia:Unix_File_System|UFS/FFS]]、圧縮されていないシングルデバイスの [[Btrfs]] などがあります。
{{Warning|BTRFS ボリュームで Syslinux 6.02 を使うとスーパーブロックが破壊されます。これは [http://www.syslinux.org/wiki/index.php/Syslinux_6_Changelog Syslinux の changelog] に書かれています。}}
 
   
  +
{{Warning|1=Syslinux 6.03 現在、Syslinux は、サポートされているファイルシステムの一部の機能をサポートしていません。詳しくは [https://wiki.syslinux.org/wiki/index.php/Filesystem] を参照してください。}}
{{Note|
 
  +
* Syslinux (バージョン 6.02 現在, BIOS と UEFI 両方で) は ([[GRUB]] とは違って) 他のパーティションのファイルにアクセスすることができません。(multi-fs と呼ばれる) この機能は上流で実装される予定です。multi-fs 機能の手助けをしたいのなら、[http://bugzilla.syslinux.org/show_bug.cgi?id=33 上流に連絡] してください。
 
  +
{{Note|Syslinux 自体には、他のパーティションにあるファイルにアクセスする機能がありません。この問題を回避する方法については [[#チェインロード]] セクションを見てください。}}
* Syslinux 4.xx (または 5.xx) から 6.xx バージョンにアップグレードするときは、Syslinux BIOS を [[#手動インストール]] に従って(インストールスクリプトを使わずに)手動で(アップデートではなく)再インストールしてください。インストールスクリプトは Syslinux を 6.xx バージョンに正しくアップグレードすることができません。
 
  +
}}
 
  +
== サポートされているファイルシステム ==
  +
  +
サポートされている[[ファイルシステム]]としては、[[FAT]]、[[NTFS]]、[[Wikipedia:ext2|ext2]]、[[ext3]]、[[ext4]]、[[XFS]]、[[Wikipedia:Unix_File_System|UFS/FFS]]、圧縮されていない単一デバイスの [[Btrfs]] があります。
  +
  +
{{Warning|1=Syslinux 6.03 の時点では、サポートされているファイルシステムの一部の機能に対応していません。詳細は、[https://wiki.syslinux.org/wiki/index.php?title=Filesystem ファイルシステムサポートの完全なリスト]を見てください。しかし、この問題は、広くサポートされているファイルシステム (例えば [[FAT32]]) でフォーマットされた個別の [[パーティショニング#/boot|/boot パーティション]]を使うことで回避できます。}}
  +
  +
{{Note|1=Syslinux だけでは、[https://bugzilla.syslinux.org/show_bug.cgi?id=33 syslinux が存在するパーティション以外]にあるファイルにアクセスできません。この問題を回避する方法は [[#チェインロート]] 章を見てください。}}
   
== BIOS 環境 ==
+
== BIOS システム ==
   
=== Syslinux ブートプロセス ===
+
=== ブートプロセスの概要 ===
   
# '''MBR をロード'''起動時、BIOS はディスクの一番最初にある440バイトの [[Master Boot Record|MBR]] ブートコードをロードします ({{ic|/usr/lib/syslinux/bios/mbr.bin}} もしくは {{ic|/usr/lib/syslinux/bios/gptmbr.bin}})。
+
# '''ステージ 1 : パート 1''' - '''MBR をロードする''' - 起動時、BIOS はディスクの先頭にある 440 バイトの [[MBR]] ブートコードをロードします ({{ic|/usr/lib/syslinux/bios/mbr.bin}} または {{ic|/usr/lib/syslinux/bios/gptmbr.bin}})。
# '''アクティブパーティションを索'''MBR はアクティブになっているパーティションを探します (ブートフラグ)ここでは {{ic|/boot}} パーティションを例として使い
+
# '''ステージ 1 : パート 2''' - '''アクティブパーティションをする''' - '''ステージ 1 の MBR ブートコード'''アクティブとマークされている (MBR ディスクのブートフラグ) パーティションを探します。以降は例として、そのパーティションは {{ic|/boot}} パーティションである仮定しましょう
# '''ボリュームブートレコードを実行'''。パーィションが見つかったら、パーティションのボリュームブートレコード (VBR) 実行されます。Syslinux では、VBR ブートコードは {{ic|extlinux --install}} によって作られる {{ic|/boot/syslinux/ldlinux.sys}} の最初のセクタになります。{{ic|ldlinux.sys}} {{ic|ldlinux.c32}} は違うので注意してください。
+
# '''ステージ 2 : パート 1''' - '''ボリュームブートレコードを実行する''' - '''スージ 1 の MBR ブートコード'''は{{ic|/boot}} パーティションのボリュームブートレコード (VBR) 実行ます。Syslinux の場合、VBR ブートコードは {{ic|/boot/syslinux/ldlinux.sys}} ({{ic|extlinux --install}} コマンドで作成されます)開始セクターです。{{ic|ldlinux.sys}} {{ic|ldlinux.c32}} と同じないことに注意してください。
# '''{{ic|/boot/syslinux/ldlinux.sys}} を実行'''VBR が残りの {{ic|/boot/syslinux/ldlinux.sys}} を起動します。{{ic|/boot/syslinux/ldlinux.sys}} のセクタ位置が変更されている場合、Syslinux は起動しません。{{Note|[[Btrfs]] の場合、ファイルが移動した時に {{ic|ldlinux.sys}} のセクタ位置が変わってしまうため上の方法は動作しません。従って、Btrfs では他のファイルシステムと異なり、{{ic|ldlinux.sys}} コード全体を {{ic|/boot/syslinux/ldlinux.sys}} にインストールする代わりに VBR の後の 64KB の領域に埋め込みます。}}
+
# '''ステージ 2 : パート 2''' - '''{{ic|/boot/syslinux/ldlinux.sys}} を実行する''' - VBR は、{{ic|/boot/syslinux/ldlinux.sys}} の残りロードします。{{ic|/boot/syslinux/ldlinux.sys}} のセクタ位置が変更されてはなりません。さもな、Syslinux は起動しません。{{Note|[[Btrfs]] の場合、ファイルが移動した時に {{ic|ldlinux.sys}} のセクタ位置が変わってしまうため上の方法はうまく行きません。従って、Btrfs では他のファイルシステムと異なり、{{ic|ldlinux.sys}} コード全体を {{ic|/boot/syslinux/ldlinux.sys}} にインストールする代わりに VBR の後の 64KB の領域に埋め込みます。}}
# '''{{ic|/boot/syslinux/ldlinux.c32}} をロード'''{{ic|/boot/syslinux/ldlinux.sys}} は syslinux の残りの'''コア'''を含んでいる {{ic|/boot/syslinux/ldlinux.c32}} (コアモジュール) をロードします (ファイルサイズの制限のため {{ic|ldlinux.sys}} に入らないもの)。{{ic|ldlinux.c32}} は全ての syslinux/extlinux で必須でありパーティションにインストールされている {{ic|ldlinux.sys}} とバージョンが一致している必要があります。そうないと Syslinux が起動しません。詳しくは http://bugzilla.syslinux.org/show_bug.cgi?id=7 を見て下さい。
+
# '''ステージ 3''' - '''{{ic|/boot/syslinux/ldlinux.c32}} をロードする''' - {{ic|/boot/syslinux/ldlinux.sys}} は syslinux の残りの'''コア'''を含んでいる {{ic|/boot/syslinux/ldlinux.c32}} (コアモジュール) をロードします (ファイルサイズの制限のため {{ic|ldlinux.sys}} に入らないもの)。{{ic|ldlinux.c32}} は全ての Syslinux 環境で必須でありパーティションにインストールされている {{ic|ldlinux.sys}} とバージョンが一致している必要があります。そうないと Syslinux が起動しません。詳しくは https://bugzilla.syslinux.org/show_bug.cgi?id=7 を見て下さい。
# '''設定ファイルをロード'''Syslinux が完全にロードされると、設定ファイル {{ic|/boot/syslinux/syslinux.cfg}} (もしくは {{ic|/boot/syslinux/extlinux.conf}}) が検索されます。設定ファイルが見つかったら、ロードを行います。設定ファイルが存在しない場合、Syslinux の {{ic|boot:}} プロンプトが表示されます。
+
# '''ステージ 4''' - '''設定ファイルをロードする''' - Syslinux が完全にロードされると、設定ファイル {{ic|/boot/syslinux/syslinux.cfg}} (もしくは {{ic|/boot/syslinux/extlinux.conf}}) が検索されます。設定ファイルが見つかったら、ロードを行います。設定ファイルが存在しない場合、Syslinux の {{ic|boot:}} プロンプトが表示されます。このステップ、および Syslinux の'''非コア'''部分 ({{ic|/boot/syslinux/*.c32}} モジュール、{{ic|lib*.c32}} と {{ic|ldlinux.c32}} は除く) では、{{ic|/boot/syslinux/lib*.c32}} (ライブラリ) モジュールが存在することを要求します ( https://wiki.syslinux.org/wiki/index.php/Common_Problems#ELF )。{{ic|lib*.c32}} ライブラリモジュールと非コアな {{ic|*.c32}} モジュールは、パーティションにインストールされている {{ic|*.c32}} のバージョンと一致していなければなりません
   
 
=== インストール ===
 
=== インストール ===
45行目: 48行目:
 
パッケージのインストールとブートローダーのインストールは別の作業です。システムを起動できるようにするにはパッケージをインストールした後に、ブートローダーのコードを (適切な領域に) インストールしなくてはなりません。以下のセクションではシステムの特性にあわせてインストールする方法を説明しています。
 
パッケージのインストールとブートローダーのインストールは別の作業です。システムを起動できるようにするにはパッケージをインストールした後に、ブートローダーのコードを (適切な領域に) インストールしなくてはなりません。以下のセクションではシステムの特性にあわせてインストールする方法を説明しています。
   
==== 自動インストール ====
+
==== 自動 ====
   
 
{{Note|{{ic|syslinux-install_update}} スクリプトは Arch 特有のものです。Syslinux の上流では提供・サポートされていません。このスクリプトに関わるバグレポートは上流ではなく Arch のバグトラッカーに送って下さい。}}
 
{{Note|{{ic|syslinux-install_update}} スクリプトは Arch 特有のものです。Syslinux の上流では提供・サポートされていません。このスクリプトに関わるバグレポートは上流ではなく Arch のバグトラッカーに送って下さい。}}
64行目: 67行目:
 
}}
 
}}
   
==== 手動インストール ====
+
==== 手動 ====
   
 
{{Note|
 
{{Note|
77行目: 80行目:
   
 
# mkdir /boot/syslinux
 
# mkdir /boot/syslinux
# cp -r /usr/lib/syslinux/bios/*.c32 /boot/syslinux/ ## copy ALL the *.c32 files from /usr/lib/syslinux/bios/, DO NOT SYMLINK
+
# cp /usr/lib/syslinux/bios/*.c32 /boot/syslinux/ # /usr/lib/syslinux/bios/ から *.c32 ファイルをすべてコピーします、シンボリックリンクでは駄目です
# extlinux --install /boot/syslinux
+
# extlinux --install /boot/syslinux/
   
 
この後、次のセクションに書かれているように Syslinux のブートコード ({{ic|mbr.bin}} もしくは {{ic|gptmbr.bin}}) をディスクの Master Boot Record の440バイトのブートコード領域 (MBR や msdos パーティションテーブルとは違います) にインストールしてください。
 
この後、次のセクションに書かれているように Syslinux のブートコード ({{ic|mbr.bin}} もしくは {{ic|gptmbr.bin}}) をディスクの Master Boot Record の440バイトのブートコード領域 (MBR や msdos パーティションテーブルとは違います) にインストールしてください。
  +
  +
{{Note|パーティションを使用しないでインストールする場合、MBR に Syslinux のブートコードをインストールする必要はありません。[[#設定]]まで進んでください。詳しくは [https://unix.stackexchange.com/questions/103501/boot-partiotionless-disk-with-syslinux] を参照。}}
   
 
===== MBR パーティションテーブル =====
 
===== MBR パーティションテーブル =====
121行目: 126行目:
 
# syslinux-install_update -i -m
 
# syslinux-install_update -i -m
   
== UEFI 環境 ==
+
== UEFI システム ==
   
 
{{Note|
 
{{Note|
  +
* {{ic|efi64}} は x86_64 EFI システムを意味します。IA32 (32 ビット) EFI の場合は、以下に示すコマンドで {{ic|efi64}} を {{ic|efi32}} に置き換えてください。
* UEFI は Syslinux 6.xx 以降でサポートされています。
 
  +
* Syslinux では、カーネルと initramfs のファイルは、[[EFI システムパーティション]] (別名 ESP) 内に配置する必要があります。Syslinux は (現在) 他のファイルシステム内 (この場合、ESP の外) にあるファイルにアクセスする機能を持っていないためです。そのため、ESP を {{ic|/boot}} にマウントすることを推奨します。
 
* 以下のコマド中にある {{ic|$esp}} は ESP (EFI System Partition) のマウントポインを示していま
+
* 自動イストールスクリプト {{ic|/usr/bin/syslinux-install_update}} は、UEFI ールをサトしていません
  +
* UEFI での {{ic|syslinux.cfg}} 設定ファイルの構文は、BIOS のものと同じです。
 
* {{ic|efi64}} は x86_64 UEFI システムを意味しています。IA32 (32-bit) EFI では、下のコマンド中の {{ic|efi64}} を {{ic|efi32}} に置き換えてください。
 
 
* syslinux では、自分のパーティションの外 (つまりこの場合 ESP の外) のファイルに syslinux がアクセスできないために、カーネルと initramfs ファイルを ESP に含める必要があります。このために、ESP を {{ic|/boot}} にマウントすることが推奨されています。
 
 
* 自動インストールスクリプト {{ic|/usr/bin/syslinux-install_update}} は UEFI インストールをサポートしていません。
 
 
* UEFI での {{ic|syslinux.cfg}} の設定構文は BIOS と同じです。
 
 
}}
 
}}
   
 
=== UEFI Syslinux の制限 ===
 
=== UEFI Syslinux の制限 ===
   
* UEFI Secure Bootために UEFI Syslinux アプリケション {{ic|syslinux.efi}} を (sbsigntool の) {{ic|sbsign}} で署名することはできません。バグレポート - http://bugzilla.syslinux.org/show_bug.cgi?id=8
+
* UEFI Syslinuxメニュ TAB使ってカーネルパラメータを編集すると表示がおかしくなる場合があります (text on top of one-another)。バグレポート: [https://bugzilla.syslinux.org/show_bug.cgi?id=9]
  +
* UEFI Syslinux は {{ic|UEFI Shell}} や {{ic|Windows Boot Manager}} など他の EFI アプリケーションのチェインロードをサポートしていません。改善リクエスト: [https://bugzilla.syslinux.org/show_bug.cgi?id=17]
  +
* [[QEMU]]/OVMF、[[VirtualBox]]、一部の [[VMware]] 製品/バージョン、DUET などの UEFI エミュレーション環境では UEFI Syslinux は起動しないことがあります。VMware Workstation 10.0.2 と Syslinux-6.02 以上では問題ないとされています。バグレポート: [https://bugzilla.syslinux.org/show_bug.cgi?id=21]、[https://bugzilla.syslinux.org/show_bug.cgi?id=23]、[https://bugzilla.syslinux.org/show_bug.cgi?id=72]
  +
* UEFI では Memdisk は使えません。改善リクエスト: [https://bugzilla.syslinux.org/show_bug.cgi?id=30]
   
  +
=== UEFI でのインストール ===
* UEFI Syslinux のメニューで TAB を使ってカーネルパラメータを編集すると表示がおかしくなります (text on top of one-another)。バグレポート - http://bugzilla.syslinux.org/show_bug.cgi?id=9
 
   
  +
{{Note|以下のコマンドで UEFI 関連のものでは、{{ic|$esp}} は [[EFI システムパーティション]] (別名 ESP) のマウントポイントを示しています。}}
* UEFI Syslinux は {{ic|UEFI Shell}} や {{ic|Windows Boot Manager}} など他の EFI アプリケーションのチェインロードをサポートしていません。バグレポート - http://bugzilla.syslinux.org/show_bug.cgi?id=17
 
   
  +
* {{Pkg|syslinux}} と {{Pkg|efibootmgr}} パッケージをインストールしてください。そして、以下のように ESP 内に Syslinux をセットアップしてください:
* QEMU/OVMF や VirtualBox、VMwareUEFI などの仮想環境や DUET などの UEFI エミュレーション環境では Syslinux は起動しません。バグレポート - http://bugzilla.syslinux.org/show_bug.cgi?id=21 and http://bugzilla.syslinux.org/show_bug.cgi?id=23
 
  +
* Syslinux のファイルを ESP にコピーしてください:
   
  +
# mkdir -p ''esp''/EFI/syslinux
* UEFI では Memdisk は使えません。バグレポート - http://bugzilla.syslinux.org/show_bug.cgi?id=30
 
  +
# cp -r /usr/lib/syslinux/efi64/* ''esp''/EFI/syslinux
   
  +
* [[efibootmgr]] を使って、Syslinux のブートエントリをセットアップしてください ({{ic|/dev/sdXY}} は、ブートローダを含むパーティションです):
=== インストール ===
 
   
  +
# efibootmgr --create --disk /dev/sdX --part Y --loader /EFI/syslinux/syslinux.efi --label "Syslinux" --unicode
* {{Pkg|syslinux}} パッケージをインストールして EFI System Partition (ESP) で syslinux をセットアップしてください:
 
   
  +
* [[#設定]] セクションに従って、{{ic|''esp''/EFI/syslinux/syslinux.cfg}} を作成/編集してください。
# pacman -S syslinux
 
   
  +
{{Note|
* syslinux ファイルを ESP にコピーしてください:
 
  +
* UEFI での設定ファイルは {{ic|''esp''/EFI/syslinux/syslinux.cfg}} であり、{{ic|/boot/syslinux/syslinux.cfg}} ではありません。{{ic|/boot/syslinux/}} 内のファイルは BIOS 用で UEFI syslinux とは関係ありません。
 
  +
* BIOS モードで起動された場合、{{Pkg|efibootmgr}} は EFI の NVRAM エントリを {{ic|/efi/syslinux/syslinux.efi}} に設定できません。EFI のデフォルトの場所にリソースを保存してください: {{ic|''esp''/EFI/syslinux/* -> ''esp''/EFI/BOOT/*}} と {{ic|''esp''/EFI/syslinux/syslinux.efi -> ''esp''/EFI/BOOT/bootx64.efi}}。
# mkdir -p $esp/EFI/syslinux
 
  +
}}
# cp -r /usr/lib/syslinux/efi64/* $esp/EFI/syslinux
 
 
* [[#Unified_Extensible_Firmware_Interface#efibootmgr|efibootmgr]] を使って Syslinux のブートエントリを設定してください:
 
 
# mount -t efivarfs efivarfs /sys/firmware/efi/efivars
 
# efibootmgr -c -d /dev/sdX -p Y -l /EFI/syslinux/syslinux.efi -L "Syslinux"
 
 
* [[#設定]] に従って {{ic|$esp/EFI/syslinux/syslinux.cfg}} を作成・編集してください。
 
 
{{Note|UEFI での設定ファイルは {{ic|$esp/EFI/syslinux/syslinux.cfg}} であり、{{ic|/boot/syslinux/syslinux.cfg}} ではありません。{{ic|/boot/syslinux/}} 内のファイルは BIOS 用で UEFI syslinux とは関係ありません。}}
 
   
 
== 設定 ==
 
== 設定 ==
   
Syslinux の設定ファイル, {{ic|syslinux.cfg}} は Syslinux をインストールしたディレクトリと同じところに作成する必要があります。このページでは、BIOS 環境は {{ic|/boot/syslinux/}}、UEFI 環境は {{ic|$esp/EFI/syslinux/}} になります。
+
Syslinux の設定ファイル, {{ic|syslinux.cfg}} は Syslinux をインストールしたディレクトリと同じところに作成する必要があります。このページでは、BIOS 環境は {{ic|/boot/syslinux/}}、UEFI 環境は {{ic|''esp''/EFI/syslinux/}} とします。
   
ブートローダは {{ic|syslinux.cfg}} (推奨) もしくは {{ic|extlinux.conf}} を探します。
+
ブートローダは {{ic|syslinux.cfg}} (推奨) もしくは {{ic|extlinux.conf}} を探します。
   
 
{{Tip|
 
{{Tip|
 
* {{ic|LINUX}} の代わりに、キーワード {{ic|KERNEL}} を使うことも可能です。{{ic|KERNEL}} はファイルのタイプを検知しようとしますが、{{ic|LINUX}} はいつでも Linux カーネルと想定します。
 
* {{ic|LINUX}} の代わりに、キーワード {{ic|KERNEL}} を使うことも可能です。{{ic|KERNEL}} はファイルのタイプを検知しようとしますが、{{ic|LINUX}} はいつでも Linux カーネルと想定します。
* {{ic|TIMEOUT}} の値の単位は1秒の'''1/10'''です。
+
* {{ic|TIMEOUT}} の値の単位は '''0.1''' です。
 
}}
 
}}
   
 
=== サンプル ===
 
=== サンプル ===
   
  +
{{Note|
==== 基本設定 ====
 
  +
* 以下の設定ファイルのサンプルは、適宜編集して適切なカーネルパラメータを設定する必要があります。[[#カーネルパラメータ]] セクションを見てください。
  +
* パスには十分注意してください。以下の例はあなたの環境には合わないかもしれません (特に UEFI を使用している場合)。
  +
* 以下の例では、カーネルと initrd のファイルが {{ic|syslinux.cfg}} の場所より1上のディレクトリ階層に存在していると仮定しています (つまり、より正確には、作業ディレクトリより1つ上の階層)。
  +
}}
   
  +
==== ブートプロンプト ====
このシンプルな設定ファイルは {{ic|boot:}} プロンプトを表示して5秒後に自動でブートします。
 
   
  +
以下の例は、{{ic|boot:}} プロンプトを表示し 5 秒後に自動的に起動するシンプルな設定ファイルです。プロンプトを表示させずに直接起動させたい場合は、{{ic|PROMPT}} を {{ic|0}} に設定してください。
{{Note|The partition in question needs to be whatever you have as {{ic|/}} (root), not {{ic|/boot}}.}}
 
   
 
設定:
 
設定:
{{hc|/boot/syslinux/syslinux.cfg|<nowiki>
 
PROMPT 1
 
TIMEOUT 50
 
DEFAULT arch
 
 
LABEL arch
 
LINUX ../vmlinuz-linux
 
APPEND root=/dev/sda2 rw
 
INITRD ../initramfs-linux.img
 
 
LABEL archfallback
 
LINUX ../vmlinuz-linux
 
APPEND root=/dev/sda2 rw
 
INITRD ../initramfs-linux-fallback.img</nowiki>
 
}}
 
   
  +
{{hc|
プロンプトを表示しないで直接ブートしたい場合、{{ic|PROMPT}} を {{ic|0}} に設定してください。
 
  +
* BIOS: /boot/syslinux/syslinux.cfg
  +
* UEFI: ''esp''/EFI/syslinux/syslinux.cfg|2=
  +
PROMPT 1
  +
TIMEOUT 50
  +
DEFAULT arch
   
  +
LABEL arch
デバイス名の代わりに [[UUID]] を使って永続的なデバイスの命名をしたい場合は、{{ic|APPEND}} 行を変更して root パーティションの {{ic|UUID}} と同じにしてください:
 
  +
LINUX ../vmlinuz-linux
APPEND root='''UUID='''978e3e81-8048-4ae1-8a06-aa727458e8ff rw
 
  +
APPEND root=UUID=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' rw
  +
INITRD ../initramfs-linux.img
   
  +
LABEL archfallback
暗号化 [[LUKS]] を使う場合、{{ic|APPEND}} 行を暗号化されたボリュームを使うように変更してください:
 
  +
LINUX ../vmlinuz-linux
APPEND root=/dev/mapper/''group''-''name'' cryptdevice=/dev/sda2:''name'' rw
 
  +
APPEND root=UUID=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' rw
  +
INITRD ../initramfs-linux-fallback.img
  +
}}
   
  +
==== テキストブートメニュー ====
[http://neil.brown.name/blog/mdadm mdadm] を使ってソフトウェア [[RAID]] を利用している場合、{{ic|APPEND}} 行を変更して RAID アレイを記述してください。例えば3つの RAID1 アレイがあってどれかひとつを root に設定する場合:
 
APPEND root=/dev/md1 rw md=0,/dev/sda2,/dev/sdb2 md=1,/dev/sda3,/dev/sdb3 md=2,/dev/sda4,/dev/sdb4
 
   
  +
Syslinux ではブートメニューを使うこともできます。ブートメニューを使うには、モジュール {{ic|menu}} と {{ic|libutil}} を Syslinux のディレクトリにコピーしてください:
上のカーネルデバイスノードを使ったソフトウェア raid パーティションからの起動が失敗する場合、もっと信頼性のある方法としてパーティションラベルを使う方法があります:
 
APPEND root=LABEL=THEROOTPARTITIONLABEL rw
 
   
  +
# cp /usr/lib/syslinux/bios/{menu,libutil}.c32 /boot/syslinux/
==== テキストブートメニュー ====
 
   
  +
バージョン 5.00 以降、追加の {{ic|lib*.c32}} ライブラリモジュールも頻繁に必要になります。モジュールの依存関係ツリーは [https://wiki.syslinux.org/wiki/index.php?title=Library_modules#Syslinux_modules_working_dependencies Syslinux wiki] を見てください。
Syslinux ではブートメニューを使うことも可能です。ブートメニューを使うには、{{ic|menu}} モジュールを Syslinux ディレクトリにコピーしてください:
 
# cp /usr/lib/syslinux/bios/menu.c32 /boot/syslinux/
 
   
 
設定:
 
設定:
  +
{{hc|/boot/syslinux/syslinux.cfg|<nowiki>
 
  +
{{hc|
UI menu.c32
 
  +
* BIOS: /boot/syslinux/syslinux.cfg
PROMPT 0
 
  +
* UEFI: ''esp''/EFI/syslinux/syslinux.cfg|2=
 
  +
UI menu.c32
MENU TITLE Boot Menu
 
  +
PROMPT 0
TIMEOUT 50
 
  +
DEFAULT arch
 
  +
MENU TITLE Boot Menu
 
  +
TIMEOUT 50
LABEL arch
 
  +
DEFAULT arch
MENU LABEL Arch Linux
 
  +
LINUX ../vmlinuz-linux
 
  +
LABEL arch
APPEND root=/dev/sda2 rw
 
  +
MENU LABEL Arch Linux
INITRD ../initramfs-linux.img
 
  +
LINUX ../vmlinuz-linux
 
  +
APPEND root=UUID=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' rw
LABEL archfallback
 
  +
INITRD ../initramfs-linux.img
MENU LABEL Arch Linux Fallback
 
  +
LINUX ../vmlinuz-linux
 
  +
LABEL archfallback
APPEND root=/dev/sda2 rw
 
  +
MENU LABEL Arch Linux Fallback
INITRD ../initramfs-linux-fallback.img</nowiki>
 
  +
LINUX ../vmlinuz-linux
  +
APPEND root=UUID=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' rw
  +
INITRD ../initramfs-linux-fallback.img
 
}}
 
}}
   
メニューシステム詳細は [http://git.kernel.org/?p=boot/syslinux/syslinux.git;a=blob;f=doc/menu.txt Syslinux のドキュメント] を見てさい。
+
メニューシステムに関する詳細は [https://wiki.syslinux.org/wiki/index.php/Menu Syslinux wiki] を見てください。
   
 
==== グラフィカルブートメニュー ====
 
==== グラフィカルブートメニュー ====
   
Syslinux ではグラフィカルなブートメニュー使うことも可能です。グラフィカルなメニューを使うには、{{ic|vesamenu}} COM32 モジュールを Syslinux フォルダにコピーしてください:
+
Syslinux ではグラフィカルなブートメニュー使うこときます。グラフィカルなブートメニューを使うには、{{ic|vesamenu}} COM32 モジュールを Syslinux フォルダにコピーしてください:
  +
 
# cp /usr/lib/syslinux/bios/vesamenu.c32 /boot/syslinux/
 
# cp /usr/lib/syslinux/bios/vesamenu.c32 /boot/syslinux/
   
  +
バージョン 5.00 以降、追加の {{ic|lib*.c32}} ライブラリモジュールも頻繁に必要になります。モジュールの依存関係ツリーは [https://wiki.syslinux.org/wiki/index.php?title=Library_modules#Syslinux_modules_working_dependencies Syslinux wiki] を見てください。
{{Note|[[Unified Extensible Firmware Interface|UEFI]] を使用する場合は {{ic|/usr/lib/syslinux/efi64/}} (i686 環境なら {{ic|efi32}}) からコピーしてください。そうしないとブランクスクリーンが表示されます。そうなってしまった場合は、ライブメディアから起動して [[change Root|chroot]] を使って適切な変更を施して下さい。}}
 
  +
  +
{{Note|[[UEFI]] を使用する場合は {{ic|/usr/lib/syslinux/efi64/}} (IA32 (32 ビット) の UEFI システムの場合は {{ic|efi32}}) からコピーしてください。そうしないと黒画面が表示されます。そうなってしまった場合は、ライブメディアから起動して [[chroot]] を使って適切な変更を施して下さい。}}
   
  +
以下の設定では、Arch のインストール CD と同じメニューデザインを使用します。インストール CD の設定は [https://gitlab.archlinux.org/archlinux/archiso/-/tree/master/configs/releng/syslinux gitlab.archlinux.org] で入手できます。[https://gitlab.archlinux.org/archlinux/archiso/-/raw/master/configs/releng/syslinux/splash.png?inline=false Arch Linux の背景画像]もそこからダウンロードできます。画像を {{ic|/boot/syslinux/splash.png}} にコピーしてください。
[https://projects.archlinux.org/archiso.git/tree/configs/releng/syslinux この設定]は Arch Install CD と同じメニューデザインを使っています。背景ファイルもここになります。この設定を使ってあなたのシステムをブートできるようにするために、正しいパーティションが使われているか確認してください。
 
   
 
設定:
 
設定:
  +
{{hc|/boot/syslinux/syslinux.cfg|<nowiki>
 
  +
{{hc|
UI vesamenu.c32
 
  +
* BIOS: /boot/syslinux/syslinux.cfg
DEFAULT arch
 
  +
* UEFI: ''esp''/EFI/syslinux/syslinux.cfg|2=
PROMPT 0
 
  +
UI vesamenu.c32
MENU TITLE Boot Menu
 
  +
DEFAULT arch
MENU BACKGROUND splash.png
 
  +
PROMPT 0
TIMEOUT 50
 
  +
MENU TITLE Boot Menu
 
MENU WIDTH 78
+
MENU BACKGROUND splash.png
  +
TIMEOUT 50
MENU MARGIN 4
 
  +
MENU ROWS 5
 
MENU VSHIFT 10
+
MENU WIDTH 78
MENU TIMEOUTROW 13
+
MENU MARGIN 4
MENU TABMSGROW 11
+
MENU ROWS 5
MENU CMDLINEROW 11
+
MENU VSHIFT 10
MENU HELPMSGROW 16
+
MENU TIMEOUTROW 13
MENU HELPMSGENDROW 29
+
MENU TABMSGROW 11
  +
MENU CMDLINEROW 11
 
  +
MENU HELPMSGROW 16
# Refer to http://www.syslinux.org/wiki/index.php/Comboot/menu.c32
 
  +
MENU HELPMSGENDROW 29
 
  +
MENU COLOR border 30;44 #40ffffff #a0000000 std
 
  +
# https://wiki.syslinux.org/wiki/index.php/Comboot/menu.c32 を参照
MENU COLOR title 1;36;44 #9033ccff #a0000000 std
 
  +
MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all
 
MENU COLOR unsel 37;44 #50ffffff #a0000000 std
+
MENU COLOR border 30;44 #40ffffff #a0000000 std
MENU COLOR help 37;40 #c0ffffff #a0000000 std
+
MENU COLOR title 1;36;44 #9033ccff #a0000000 std
MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std
+
MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all
MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std
+
MENU COLOR unsel 37;44 #50ffffff #a0000000 std
MENU COLOR msg07 37;40 #90ffffff #a0000000 std
+
MENU COLOR help 37;40 #c0ffffff #a0000000 std
MENU COLOR tabmsg 31;40 #30ffffff #00000000 std
+
MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std
  +
MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std
 
  +
MENU COLOR msg07 37;40 #90ffffff #a0000000 std
 
  +
MENU COLOR tabmsg 31;40 #30ffffff #00000000 std
LABEL arch
 
  +
MENU LABEL Arch Linux
 
  +
LINUX ../vmlinuz-linux
 
  +
LABEL arch
APPEND root=/dev/sda2 rw
 
  +
MENU LABEL Arch Linux
INITRD ../initramfs-linux.img
 
  +
LINUX ../vmlinuz-linux
 
  +
APPEND root=UUID=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' rw
 
  +
INITRD ../initramfs-linux.img
LABEL archfallback
 
  +
MENU LABEL Arch Linux Fallback
 
  +
LINUX ../vmlinuz-linux
 
  +
LABEL archfallback
APPEND root=/dev/sda2 rw
 
  +
MENU LABEL Arch Linux Fallback
INITRD ../initramfs-linux-fallback.img</nowiki>
 
  +
LINUX ../vmlinuz-linux
  +
APPEND root=UUID=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' rw
  +
INITRD ../initramfs-linux-fallback.img
 
}}
 
}}
   
Syslinux 3.84 から、{{ic|vesamenu.c32}} は {{ic|MENU RESOLUTION $WIDTH $HEIGHT}} ディレクティブをサポートしています。
+
Syslinux 3.84 以降、{{ic|vesamenu.c32}} は {{ic|MENU RESOLUTION $WIDTH $HEIGHT}} ディレクティブをサポートしています。
を使うには、1440x900 の解像度なら設定に {{ic|MENU RESOLUTION 1440 900}} を挿入してください
+
のディレクティブを使うには、{{ic|MENU RESOLUTION 1440 900}} を設定に追加することで、解像度を 1440x900 に設定できます
背景画像も適切な解像度にする必要があります。そうしいと Syslinux はメニューをロードしません。
+
ただし、背景画像が正確に同じ解像度である必要があります。解像度が異る場合、Syslinux はメニューをロードしません。
  +
  +
メニューを中央に配置し解像度を調整するには、{{ic|MENU RESOLUTION}}、{{ic|MENU HSHIFT $N}}、{{ic|MENU VSHIFT $N}} を使ってください。ただし、{{ic|$N}} は正の数です。デフォルトの {{ic|$N}} の値は両方 {{ic|0}} で、これはモニターの左上を表します。負の値はスクリーンの反対側からとなります (例: {{ic|VHSHIFT -4}} はスクリーンの下から 4 行となります)。
  +
  +
メニューを中央に移動させるには、以下の値を追加/編集してください:
  +
  +
{{hc|
  +
* BIOS: /boot/syslinux/syslinux.cfg
  +
* UEFI: ''esp''/EFI/syslinux/syslinux.cfg|<nowiki>
  +
MENU RESOLUTION 800 600 # or whatever your screen resolution is
  +
MENU WIDTH 78 # width of the menu also required to bring the menu box to size
  +
MENU VSHIFT 10 # moves menu down
  +
MENU HSHIFT 10 # moves menu right
  +
</nowiki>}}
  +
  +
VESA 規格は、一般的には 25 行 80 列が最大で、これらの値より大きくするとメニューがスクリーンからはみ出し、場合によってはレスキュー CD から設定を編集する羽目になります。
  +
  +
=== カーネルパラメータ ===
  +
  +
[[カーネルパラメータ]] は、{{ic|syslinux.cfg}} で {{ic|APPEND}} ディレクティブを使って設定します:
  +
それぞれの {{ic|LABEL}} エントリに対して、最大 1 行の [https://wiki.syslinux.org/wiki/index.php/Config#APPEND APPEND] を受け入れます (つまり、複数の行に分けることはできません)。
  +
  +
以下の変更は、「フォールバック」エントリに対しても行っておくことをおすすめします。
  +
  +
'''最も単純な場合'''、{{ic|root}} パラメータの値を変更する必要があります。サポートされている形式は [[永続的なブロックデバイスの命名]] を見てください。
  +
  +
APPEND root=UUID=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' rw
  +
  +
{{ic|1=root=UUID=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX''}} を変更して、正しいルートボリュームを指定してください。
  +
  +
'''[[dm-crypt]] 暗号化をしている場合'''、{{ic|APPEND}} の行を変更して、暗号化されているボリュームを使用してください:
  +
  +
APPEND root=/dev/mapper/''name'' cryptdevice=UUID=''YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY'':''name'' rw
  +
  +
'''[[btrfs]] サブボリュームを起動する場合'''、{{ic|APPEND}} の行を {{ic|rootflags<nowiki>=</nowiki>subvol<nowiki>=</nowiki><root subvolume>}} の用に変更してください。例えば、{{ic|/dev/disk/by-uuid/''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX''}} が 'ROOT' という btrfs サブボリュームとしてマウントされている場合 (例: {{ic|1=mount -o noatime,subvol=ROOT /dev/disk/by-uuid/''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' /mnt}})、{{ic|APPEND}} の行を以下のように変更する必要があります:
  +
  +
APPEND root=UUID=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' rw rootflags=subvol=ROOT
  +
  +
そうしないと、次のエラーメッセージが表示されるでしょう: {{ic|ERROR: Root device mounted successfully, but /sbin/init does not exist.}}
   
 
=== 自動ブート ===
 
=== 自動ブート ===
   
Syslinux のメニューを表示したくない場合は、{{ic|syslinux.cfg}} の {{ic|UI}} コマ全てコメントアウトして {{ic|DEFAULT}} 設定してください。
+
Syslinux のメニューを表示したくない場合は、[[#ブートプロンプト]] を使い、{{ic|PROMPT}} を {{ic|0}} に設定し、すべての {{ic|UI}} メニューエトリをコメントアウトしてください。{{ic|TIMEOUT}} 変数を {{ic|0}} にしても良いでしょう。{{ic|syslinux.cfg}} で {{ic|DEFAULT}} 設定されていることを確認してください。起動時に {{ic|Shift}} または {{ic|Alt}} を押すか、{{ic|Caps Lock}} または {{ic|Scroll Lock}} を有効化することで、デフォルト以外のオプションを使用できるようになります
  +
他の手段については、[https://wiki.syslinux.org/wiki/index.php/Directives/special_keys 上流の wiki] を見てください。
   
 
=== セキュリティ ===
 
=== セキュリティ ===
   
Syslinux にはブートローダーのセキュリティを守るパスワードが2つあります: メニューのマスターパスワードとメニューアイテムごとのパスワードです。{{ic|syslinux.cfg}} を編集して、以下のようにブートローダーのマスターパスワードを設定できます:
+
Syslinux にはブートローダーのセキュリティとして2つのレベルがあります: メニューのマスターパスワードとメニューアイテムごとのパスワードです。{{ic|syslinux.cfg}} を編集して、以下のようにブートローダーのマスターパスワードを設定できます:
  +
{{bc|
 
MENU MASTER PASSWD passwd
+
MENU MASTER PASSWD passwd
  +
}}
 
 
また、{{ic|LABEL}} ブロックの中に以下を記述することでブートアイテムを個別にパスワードで保護できます:
 
また、{{ic|LABEL}} ブロックの中に以下を記述することでブートアイテムを個別にパスワードで保護できます:
{{bc|
 
MENU PASSWD passwd
 
}}
 
   
  +
MENU PASSWD passwd
パスワードは平文でも入力できますがハッシュ化することも可能です: [http://www.syslinux.org/wiki/index.php/Comboot/menu.c32 公式ドキュメント] を参照。
 
  +
  +
passwd は平文かハッシュ値のどちらかを設定できます: [https://wiki.syslinux.org/wiki/index.php/Comboot/menu.c32 公式のドキュメントを参照]してください。
   
 
=== チェインロード ===
 
=== チェインロード ===
   
{{Note|Syslinux BIOS は他のパーティションからファイルを直接チェインロードできませんが、{{ic|chain.c32}} はパーティションのブートセクタ (VBR) を起動できます。}}
+
Syslinux BIOS は他のパーティションからファイルを直接チェインロードできませんが、{{ic|chain.c32}} はパーティションのブートセクタ (VBR) や他のディスクの MBR を起動できます。
  +
 
  +
==== パーティションの VBR をチェインロードする ====
他のオペレーティングシステム (Windows など) やブートローダをチェインロードしたい時は、{{ic|chain.c32}} モジュールを Syslinux ディレクトリにコピー(もしくはシンボリックリンクを作成)してください (詳しくは、前のセクションの説明を参照してください)。そして設定ファイルにセクションを作成してください:
 
  +
  +
他のオペレーティングシステム (Windows など) やブートローダをチェインロードしたい場合は、{{ic|chain.c32}} モジュールを Syslinux ディレクトリにコピーしてください (追加の {{ic|lib*.c32}} ライブラリモジュールも必要かもしれません。前のセクションの指示を見てください)。そして設定ファイルにセクションを作成してください:
  +
 
{{hc|/boot/syslinux/syslinux.cfg|
 
{{hc|/boot/syslinux/syslinux.cfg|
 
...
 
...
LABEL windows
+
LABEL windows
MENU LABEL Windows
+
MENU LABEL Windows
COM32 chain.c32
+
COM32 chain.c32
APPEND hd0 3
+
APPEND hd0 3
 
...
 
...
 
}}
 
}}
   
{{ic|hd0 3}} は最初の BIOS ドライブの3つ目のパーティション - ドライブは0から数えますが、パーティションは1からになります。
+
{{ic|hd0 3}} は、1つ目の BIOS ドライブの3つ目のパーティションを指しまドライブは0からカウントしますが、パーティションは1からカウントします。
  +
  +
{{Note|Windows の場合、これはシステム固有のブートマネージャ ({{ic|bootmgr}}) をスキップします。ブートマネージャは、いくつかの重要なアップデートを完了させるために必要です ([https://support.microsoft.com/kb/2883200 例])。そのような場合では、([[GParted]] を使うなどして) 一時的に Windows パーティションに MBR ブートフラグを設定し、Windows アップデートのインストールを完了させ、その後に (Windows 固有の [https://www.online-tech-tips.com/computer-tips/set-active-partition-vista-xp DiskPart] を使うなどして) Syslinux のパーティションにブートフラグを戻すのが良いでしょう。}}
  +
  +
==== ディスクの MBR をチェインロードする ====
  +
  +
BIOS がどのドライブを "最初" とみなすかわからない場合は、代わりに MBR 識別子を (GPT を使用している場合はファイルシステムラベル) 使うこともできます。MBR 識別子を使うには、以下のコマンドを実行してください ({{ic|/dev/sdb}} はチェインロードしたいドライブに置き換えてください):
   
BIOS がどのドライブを"最初"と考えるのかわからない場合は、代わりに MBR identifier (GPT を使っている場合、ファイルシステムラベル) を使うことができます。MBR identifier を使うには、次のコマンドを実行してください:
 
 
{{hc|# fdisk -l /dev/sdb|<nowiki>
 
{{hc|# fdisk -l /dev/sdb|<nowiki>
Disk /dev/sdb: 128.0 GB, 128035676160 bytes
+
Disk /dev/sdb: 128.0 GB, 128035676160 bytes
255 heads, 63 sectors/track, 15566 cylinders, total 250069680 sectors
+
255 heads, 63 sectors/track, 15566 cylinders, total 250069680 sectors
Units = sectors of 1 * 512 = 512 bytes
+
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
+
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
+
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf00f1fd3
+
Disk identifier: 0xf00f1fd3
  +
 
Device Boot Start End Blocks Id System
+
Device Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 7 HPFS/NTFS/exFAT
+
/dev/sdb1 2048 4196351 2097152 7 HPFS/NTFS/exFAT
/dev/sdb2 4196352 250066943 122935296 7 HPFS/NTFS/exFAT</nowiki>
+
/dev/sdb2 4196352 250066943 122935296 7 HPFS/NTFS/exFAT
  +
</nowiki>}}
}}
 
  +
  +
ディスク識別子では16進数を使用します (この例では {{ic|0xf00f1fd3}})。{{ic|syslinux.cfg}} の構文は以下のようになります:
   
{{ic|/dev/sdb}} をチェインロードしたいドライブに置き換えてください。Disk identifier には16進数が使われます: この場合 {{ic|0xf00f1fd3}} です。{{ic|syslinux.cfg}} の構文は:
 
 
{{hc|/boot/syslinux/syslinux.cfg|
 
{{hc|/boot/syslinux/syslinux.cfg|
 
...
 
...
LABEL windows
+
LABEL windows
MENU LABEL Windows
+
MENU LABEL Windows
COM32 chain.c32
+
COM32 chain.c32
APPEND mbr:0xf00f1fd3
+
APPEND mbr:0xf00f1fd3
 
...
 
...
 
}}
 
}}
   
チェインロード詳細は [http://www.syslinux.org/wiki/index.php/Comboot/chain.c32 Syslinux wiki] を参照してください。
+
チェインロードに関する詳細は [https://wiki.syslinux.org/wiki/index.php/Comboot/chain.c32 Syslinux wiki] をてください。
  +
  +
==== 他のブートローダをチェインロードする ====
  +
  +
同じパーティションに [[GRUB]] がインストールされている場合、以下の設定を使用して GRUB をチェインロードできます:
   
同じパーティションに [[GRUB]] をインストールした場合は、以下でチェインロードすることが可能です:
 
 
{{hc|/boot/syslinux/syslinux.cfg|<nowiki>
 
{{hc|/boot/syslinux/syslinux.cfg|<nowiki>
 
...
 
...
LABEL grub2
+
LABEL grub2
MENU LABEL Grub2
+
MENU LABEL Grub2
COM32 chain.c32
+
COM32 chain.c32
append file=../grub/boot.img
+
APPEND file=../grub/boot.img
...</nowiki>
+
...
  +
</nowiki>}}
}}
 
   
  +
あるいは、{{ic|lnxboot.img}} を {{ic|core.img}} の前に付けて [[GRUB]] を Linux カーネルとしてロードすることもできます。{{ic|lnxboot.img}} ファイルは {{ic|core/grub}} の一部で、{{ic|/usr/lib/grub/i386-pc}} の中にあります。
これは ISO イメージから起動するのに必要になるかもしれません。
 
   
  +
{{hc|/boot/syslinux/syslinux.cfg|<nowiki>
=== 他の Linux システムをチェインロードする ===
 
  +
...
  +
LABEL grub2lnx
  +
MENU LABEL Grub2 (lnxboot)
  +
LINUX ../grub/i386-pc/lnxboot.img
  +
INITRD ../grub/i386-pc/core.img
  +
...
  +
</nowiki>}}
   
  +
これは、ISO イメージから起動する場合に必要になるかもしれません。
Windows など他のブートローダをチェインロードする場合、チェインするべきブートローダが明白に存在します。しかし Syslinux では、設定ファイルと同じパーティションにあるファイルしかロードすることができません。そのため、Linux の他バージョンを異なるパーティションに置いている ({{ic|/boot}} を使っていない) ときは、Extlinux を利用する必要がでてきます。基本的に、Extlinux はパーティションのスーパーブロックにインストールができ、Syslinux によってインストールされた MBR から異なるブートローダとして呼ばれます。Extlinux は Syslinux プロジェクトの一部であり {{Pkg|syslinux}} パッケージに含まれています。
 
  +
  +
==== 他の Linux システムをチェインロードする ====
  +
  +
{{Accuracy|Among other inaccuracies... 1_ There is no obligation to install yet another boot loader if you already have one related to the other partition/OS (e.g. GRUB2 installed in the MBR or in the VBR of the partition being chainloaded to). 2_ Syslinux (in any of its derivatives) is never "installed to the MBR", so mentioning the MBR in this section without any explanation of what it is being meant or how to do it in practical terms is just adding confusion. 3_ Typos and misspelling. 4_No need to explain (yet again) how to install some (other) bootloader to some (other) partition / OS; just how to chainload from Syslinux to that other partition / bootloader / OS.}}
  +
  +
Windows など他のブートローダをチェインロードする場合、チェインするべきブートローダが明白に存在します。しかし Syslinux では、設定ファイルと同じパーティションにあるファイルしかロードすることができません。そのため、Linux の他バージョンを異なるパーティションに置いている ({{ic|/boot}} を使っていない) ときは、他の OS のブートローダ (例: GRUB2) ではなく Extlinux を利用する必要がでてきます。基本的に、Extlinux はパーティションのスーパーブロック/[[wikipedia:Volume_boot_record|VBR]] にインストールができ、Syslinux によってインストールされた MBR から ''異なるブートローダ'' として呼ぶことができます。Extlinux は Syslinux プロジェクトの一部であり {{Pkg|syslinux}} パッケージに含まれています。
   
 
以下の手順は既に Syslinux がインストールされていることを前提にしています。また、{{ic|/boot/syslinux}} の Arch Linux 設定パスを使っていてチェインロード {{ic|/}} は {{ic|/dev/sda3}} にあると仮定しています。
 
以下の手順は既に Syslinux がインストールされていることを前提にしています。また、{{ic|/boot/syslinux}} の Arch Linux 設定パスを使っていてチェインロード {{ic|/}} は {{ic|/dev/sda3}} にあると仮定しています。
   
 
起動した Linux (Syslinux が起動するように設定されたパーティション) から、他の root パーティションを適当なマウントポイントにマウントしてください。ここでは例として {{ic|/mnt}} を使います。また、2番目のオペレーティングシステムで {{ic|/boot}} パーティションを分割している場合、それもマウントする必要があります。ここでは {{ic|/dev/sda2}} がそのパーティションとします。
 
起動した Linux (Syslinux が起動するように設定されたパーティション) から、他の root パーティションを適当なマウントポイントにマウントしてください。ここでは例として {{ic|/mnt}} を使います。また、2番目のオペレーティングシステムで {{ic|/boot}} パーティションを分割している場合、それもマウントする必要があります。ここでは {{ic|/dev/sda2}} がそのパーティションとします。
  +
 
# mount /dev/sda3 /mnt
 
# mount /dev/sda3 /mnt
 
# mount /dev/sda2 /mnt/boot (only necessary for separate /boot)
 
# mount /dev/sda2 /mnt/boot (only necessary for separate /boot)
  +
Extlinux をインストールして必要な {{ic|*.c32}} ファイルをコピーしてください:
 
  +
Extlinux をインストールして、必要な {{ic|*.c32}} ファイルをコピーしてください:
# extlinux -i /mnt/boot/syslinux
 
  +
  +
# extlinux -i /mnt/boot/syslinux/ (first create the directory if necessary)
 
# cp /usr/lib/syslinux/bios/*.c32 /mnt/boot/syslinux
 
# cp /usr/lib/syslinux/bios/*.c32 /mnt/boot/syslinux
   
{{ic|/mnt/boot/syslinux/syslinux.cfg}} を作成してください。例:
+
{{ic|/mnt/boot/syslinux/syslinux.cfg}} を作成してください。他の Linux のブートメニューファイルを参考にすることができます。以下はです:
{{hc|/boot/syslinux/syslinux.cfg '''on /dev/sda3'''|<nowiki>
 
timeout 10
 
   
  +
{{hc|/mnt/boot/syslinux/syslinux.cfg '''on /dev/sda3'''|2=
ui menu.c32
 
  +
TIMEOUT 10
   
  +
UI menu.c32
label Other Linux
 
linux /boot/vmlinuz-linux
 
initrd /boot/initramfs-linux.img
 
append root=/dev/sda3 rw quiet
 
   
  +
LABEL OtherLinux
label MAIN
 
  +
LINUX /boot/vmlinuz-linux
com32 chain.c32
 
  +
INITRD /boot/initramfs-linux.img
append hd0 0</nowiki>
 
  +
APPEND root=UUID=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' rw quiet
  +
  +
LABEL MAIN
  +
COM32 chain.c32
  +
APPEND hd0 0
  +
}}
  +
  +
そしてメインの {{ic|syslinux.cfg}} にエントリを追加してください:
  +
  +
{{hc|/boot/syslinux/syslinux.cfg|
  +
LABEL OtherLinux
  +
COM32 chain.c32
  +
APPEND hd0 3
 
}}
 
}}
   
  +
{{ic|<other-OS>/boot/syslinux/syslinux.cfg}} にある他の Linux エントリは、{{ic|/}} 内の最新のカーネルと initrd へのシンボリックリンクを貼らない限り、その OS のカーネルがアップデートされるたびに編集する必要があります。カーネルを直接ブートし、他の OS のデフォルトのブートローダをチェインロードしないからです。
参照: [[en2:User:Djgera|Djgera の user wiki ページ]]。
 
   
 
=== memtest を使う ===
 
=== memtest を使う ===
456行目: 530行目:
 
=== キーボードリマッピング ===
 
=== キーボードリマッピング ===
   
ブートパラメータを頻繁に編集する必要があるような場合、キーボードレイアウトのリマップを行うとよいかもしれません。これを行うことで US キーボード以外で "=", "/" などの文字を打つのが楽になります。
+
ブートパラメータを頻繁に編集する必要があるような場合、キーボードレイアウトのリマップを行うとよいかもしれません。US キーボード以外で "=", "/" などの文字を打つのが楽になります。
   
 
{{note|keytab-lilo は "loadkeys" プログラムを呼び出す perl スクリプトです。}}
 
{{note|keytab-lilo は "loadkeys" プログラムを呼び出す perl スクリプトです。}}
   
まず互換性のあるキーマップ (例えば German) を作成する必要があります:
+
まず互換性のあるキーマップ (例えばドイツ語キーマップ) を作成するには:
# cp /usr/share/kbd/keymaps/i386/qwerty/us.map.gz ./
+
# keytab-lilo /usr/share/kbd/keymaps/i386/qwerty/us.map.gz /usr/share/kbd/keymaps/i386/qwertz/de.map.gz > /boot/syslinux/de.ktl
# cp /usr/share/kbd/keymaps/i386/qwertz/de.map.gz ./
 
# gunzip {de,us}.map.gz
 
# mv de.{,k}map
 
# mv us.{,k}map
 
# keytab-lilo de > de.ktl
 
   
  +
{{ic|syslinux.cfg}} を編集して以下を追加してください:
最後のコマンドは root で実行してください、そうしないと動きません。
 
 
root で {{ic|de.ktl}} を {{ic|/boot/syslinux/}} にコピーして所有者を root に設定してください:
 
# chown root:root /boot/syslinux/de.ktl
 
 
{{ic|syslinux.conf}} を編集して以下を追加してください:
 
 
{{hc|/boot/syslinux/syslinux.cfg|
 
{{hc|/boot/syslinux/syslinux.cfg|
 
KBDMAP de.ktl
 
KBDMAP de.ktl
 
}}
 
}}
  +
  +
詳しくは [http://www.syslinux.org/wiki/index.php/Directives/kbdmap Syslinux wiki] を参照してください。
   
 
=== メニューを隠す ===
 
=== メニューを隠す ===
487行目: 553行目:
   
 
=== Pxelinux===
 
=== Pxelinux===
{{Note|今のところ Syslinux には UEFI ネットワークスタックがないので、([[GRUB]] では使うことができる) {{AUR|syslinux-efi-git}} を使うことができませんがカーネルや initramfs に tftp を使うことは可能です。pxelinux はレガシーな PXE ブートでは問題なく動作します。}}
+
{{Note|今のところ Syslinux には UEFI ネットワークスタックがないので、([[GRUB]] では使うことができる) {{AUR|syslinux-efi-git}}{{Broken package link|{{aur-mirror|syslinux-efi-git}}}} を使うことができませんがカーネルや initramfs に tftp を使うことは可能です。pxelinux はレガシーな PXE ブートでは問題なく動作します。}}
   
 
Pxelinux は {{Pkg|syslinux}} に含まれています。
 
Pxelinux は {{Pkg|syslinux}} に含まれています。
517行目: 583行目:
   
 
実際に pxelinux をロードするには、{{ic|/etc/dhcpd.conf}} 内の {{ic|filename "/grub/i386-pc/core.0";}} を {{ic|filename "/pxelinux.0"}} に置き換えてください。
 
実際に pxelinux をロードするには、{{ic|/etc/dhcpd.conf}} 内の {{ic|filename "/grub/i386-pc/core.0";}} を {{ic|filename "/pxelinux.0"}} に置き換えてください。
  +
  +
=== memdisk を使って ISO9660 イメージファイルを起動 ===
  +
  +
Syslinux は [http://www.syslinux.org/wiki/index.php/MEMDISK memdisk] モジュールを使って ISO イメージを直接起動できます。詳しくは[[マルチブート USB ドライブ#Syslinux と memdisk を使う]]を参照。
  +
  +
=== シリアルコンソール ===
  +
  +
シリアルコンソールを有効にするには {{ic|syslinux.cfg}} ファイルの一番上に {{ic|SERIAL port [baudrate]}} を追加します。"port" はポート番号 ({{ic|/dev/ttyS0}} の場合は 0) に置き換えてください。"baudrate" を省略すると、デフォルトのボーレートである 9600 bps が使われます。シリアルパラメータはパリティビット無しストップビットひとつの8ビットにハードコードされています [http://www.syslinux.org/wiki/index.php/SYSLINUX#SERIAL_port_.5Bbaudrate_.5Bflowcontrol.5D.5D]。
  +
  +
{{hc|syslinux.cfg|
  +
SERIAL 0 115200
  +
}}
  +
  +
{{ic|APPEND}} オプションに {{ic|1=console=tty0 console=ttyS0,115200n8}} を追加することで起動時にカーネルでシリアルコンソールを有効にできます [https://www.mjmwired.net/kernel/Documentation/kernel-parameters.txt#681]:
  +
  +
{{hc|syslinux.cfg|2=
  +
APPEND root=UUID=126ca36d-c853-4f3a-9f46-cdd49d034ce4 rw console=tty0 console=ttyS0,115200n8
  +
}}
  +
  +
GRUB でシリアルコンソールを有効にする方法は[[シリアルコンソール]]を見てください。
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
  +
  +
=== Failed to load ldlinux ===
  +
  +
起動時に "Failed to load ldlinux.c32" というエラーメッセージが表示される理由は様々なものが考えられます。ファイルシステムツールやファイルシステムの構造の変化がそのひとつです。例えば、新しい ext4 ファイルシステムでは64ビット機能がデフォルトで有効になっています (古いバージョンの mke2fs では手動で設定する必要がある機能でした)。ext4 以外のファイルシステムでも構造やツールに変更が加えられることがあり、ブートローダーの挙動に影響します。
  +
  +
{{Note|1={{ic|Failed to load ldlinux.c32}} というメッセージとファイルシステムの問題の間に直接的な因果関係はありません:
  +
* このメッセージ以外にもファイルシステムの問題と関連するエラーは存在します。
  +
* メッセージが出たからといって必ずしもファイルシステムに問題があるとは限りません。他の理由も存在し得ます。}}
  +
  +
詳しくは [http://www.syslinux.org/wiki/index.php/Common_Problems#Failed_to_load_ldlinux] を参照してください。
   
 
=== Syslinux プロンプトを使う ===
 
=== Syslinux プロンプトを使う ===
570行目: 666行目:
 
'''解決方法:''' {{ic|/boot}} を含むパーティションのブートフラグが有効になっているか確認してください。また、Windows パーティションのブートフラグは無効にする必要があります。上のインストールセクションを参照してください。
 
'''解決方法:''' {{ic|/boot}} を含むパーティションのブートフラグが有効になっているか確認してください。また、Windows パーティションのブートフラグは無効にする必要があります。上のインストールセクションを参照してください。
   
  +
Syslinux に含まれている MBR はブートフラグが設定されている一番最初の active なパーティションを検索します。おそらく最初に Windows のパーティションが認識されてしまっています。必要であれば、Windows や MS-DOS の {{ic|fdisk}} による MBR を使うことができます。
The MBR that comes with Syslinux looks for the first active partition that has the boot flag set. The Windows partition was likely found first and had the boot flag set. If you wanted, you could use the MBR that Windows or MS-DOS {{ic|fdisk}} provides.
 
   
 
=== メニューエントリが動作しない ===
 
=== メニューエントリが動作しない ===
582行目: 678行目:
 
# rm /boot/syslinux/ldlinux.sys
 
# rm /boot/syslinux/ldlinux.sys
   
=== vesamenu 使用時に白いブロックが左上に現れる ===
+
=== vesamenu 使用時に白いブロックが左上に現れる ===
   
  +
問題: linux-3.0 現在、modesetting ドライバーは解像度が変更された後もディスプレイの表示内容を保持しようとします (テキストモードの Syslinux で Intel のグラフィックチップを使っている場合に確認)。Syslinux の vesamenu モジュールと組み合わさると問題が発生します (白いブロックは Syslinux のメニューを保持しようとしたものですが、ドライバーは vesa グラフィックモードから画像を取得できていません)。''
Problem:
 
''As of linux-3.0, the modesetting driver tries to keep the current contents of the screen after changing the resolution (at least it does so with my Intel, when having Syslinux in text mode). It seems that this goes wrong when combined with the vesamenu module in Syslinux (the white block is actually an attempt to keep the Syslinux menu, but the driver fails to capture the picture from vesa graphics mode).''
 
   
  +
初期モードセッティングでカスタム解像度と {{ic|vesamenu}} を使用している場合、以下の設定を {{ic|syslinux.cfg}} に追加してみてください:
If you have a custom resolution and a {{ic|vesamenu}} with early modesetting, try to append the following in {{ic|syslinux.cfg}} to remove the white block and continue in graphics mode:
 
 
APPEND root=/dev/sda6 rw 5 '''vga=current''' quiet splash
 
APPEND root=/dev/sda6 rw 5 '''vga=current''' quiet splash
   
606行目: 701行目:
 
btrfs: found compressed data, cannot continue!
 
btrfs: found compressed data, cannot continue!
 
invalid or corrupt kernel image.
 
invalid or corrupt kernel image.
  +
[[GRUB]] は btrfs の圧縮をサポートしています。
 
  +
=== Btrfs のマルチデバイス ===
  +
  +
マルチデバイス Btrfs からの機能はサポートされていません [http://repo.or.cz/syslinux.git/blob/HEAD:/extlinux/main.c] (main.c の validate_device_btrfs() の1246行目)。以下のようなエラーが表示されます:
  +
/boot/syslinux is device /dev/sda1
  +
extlinux: path /boot/syslinux doesn't match device /dev/sda1
   
 
== 参照 ==
 
== 参照 ==

2024年4月4日 (木) 13:53時点における版

関連記事

Syslinux は、ドライブや CD から、あるいは PXE によってネットワーク経由で起動できるブートローダのコレクションです。サポートされているファイルシステムとしては、FATNTFSext2ext3ext4XFSUFS/FFS、圧縮されていないシングルデバイスの Btrfs などがあります。

警告: Syslinux 6.03 現在、Syslinux は、サポートされているファイルシステムの一部の機能をサポートしていません。詳しくは [1] を参照してください。
ノート: Syslinux 自体には、他のパーティションにあるファイルにアクセスする機能がありません。この問題を回避する方法については #チェインロード セクションを見てください。

目次

サポートされているファイルシステム

サポートされているファイルシステムとしては、FATNTFSext2ext3ext4XFSUFS/FFS、圧縮されていない単一デバイスの Btrfs があります。

警告: Syslinux 6.03 の時点では、サポートされているファイルシステムの一部の機能に対応していません。詳細は、ファイルシステムサポートの完全なリストを見てください。しかし、この問題は、広くサポートされているファイルシステム (例えば FAT32) でフォーマットされた個別の /boot パーティションを使うことで回避できます。
ノート: Syslinux だけでは、syslinux が存在するパーティション以外にあるファイルにアクセスできません。この問題を回避する方法は #チェインロート 章を見てください。

BIOS システム

ブートプロセスの概要

  1. ステージ 1 : パート 1 - MBR をロードする - 起動時、BIOS は、ディスクの先頭にある 440 バイトの MBR ブートコードをロードします (/usr/lib/syslinux/bios/mbr.bin または /usr/lib/syslinux/bios/gptmbr.bin)。
  2. ステージ 1 : パート 2 - アクティブなパーティションを探索する - ステージ 1 の MBR ブートコードは、アクティブとマークされている (MBR ディスクのブートフラグ) パーティションを探索します。以降は例として、そのパーティションは /boot パーティションであると仮定しましょう。
  3. ステージ 2 : パート 1 - ボリュームブートレコードを実行する - ステージ 1 の MBR ブートコードは、/boot パーティションのボリュームブートレコード (VBR) を実行します。Syslinux の場合、VBR ブートコードは /boot/syslinux/ldlinux.sys (extlinux --install コマンドで作成されます) の開始セクターです。ldlinux.sysldlinux.c32 と同じでないことに注意してください。
  4. ステージ 2 : パート 2 - /boot/syslinux/ldlinux.sys を実行する - VBR は、/boot/syslinux/ldlinux.sys の残りをロードします。/boot/syslinux/ldlinux.sys のセクタの位置が変更されてはなりません。さもないと、Syslinux は起動しません。
    ノート: Btrfs の場合、ファイルが移動した時に ldlinux.sys のセクタ位置が変わってしまうため上の方法はうまく行きません。従って、Btrfs では他のファイルシステムと異なり、ldlinux.sys コード全体を /boot/syslinux/ldlinux.sys にインストールする代わりに VBR の後の 64KB の領域に埋め込みます。
  5. ステージ 3 - /boot/syslinux/ldlinux.c32 をロードする - /boot/syslinux/ldlinux.sys は syslinux の残りのコアを含んでいる /boot/syslinux/ldlinux.c32 (コアモジュール) をロードします (ファイルサイズの制限のため ldlinux.sys に入らないもの)。ldlinux.c32 は全ての Syslinux 環境で必須であり、パーティションにインストールされている ldlinux.sys とバージョンが一致している必要があります。そうないと Syslinux が起動しません。詳しくは https://bugzilla.syslinux.org/show_bug.cgi?id=7 を見て下さい。
  6. ステージ 4 - 設定ファイルを探索、ロードする - Syslinux が完全にロードされると、設定ファイル /boot/syslinux/syslinux.cfg (もしくは /boot/syslinux/extlinux.conf) が検索されます。設定ファイルが見つかったら、ロードを行います。設定ファイルが存在しない場合、Syslinux の boot: プロンプトが表示されます。このステップ、および Syslinux の非コア部分 (/boot/syslinux/*.c32 モジュール、lib*.c32ldlinux.c32 は除く) では、/boot/syslinux/lib*.c32 (ライブラリ) モジュールが存在することを要求します ( https://wiki.syslinux.org/wiki/index.php/Common_Problems#ELF )。lib*.c32 ライブラリモジュールと非コアな *.c32 モジュールは、パーティションにインストールされている *.c32 のバージョンと一致していなければなりません。

インストール

# pacman -S syslinux
ノート:
  • Syslinux 4 から Extlinux と Syslinux は同じになりました。
  • 自動スクリプトによる GPT サポートには gptfdisk が必要です。
  • boot パーティションが FAT にある場合、mtools もインストールする必要があります。

パッケージのインストールとブートローダーのインストールは別の作業です。システムを起動できるようにするにはパッケージをインストールした後に、ブートローダーのコードを (適切な領域に) インストールしなくてはなりません。以下のセクションではシステムの特性にあわせてインストールする方法を説明しています。

自動

ノート: syslinux-install_update スクリプトは Arch 特有のものです。Syslinux の上流では提供・サポートされていません。このスクリプトに関わるバグレポートは上流ではなく Arch のバグトラッカーに送って下さい。

syslinux-install_update スクリプトは Syslinux をインストールし、*.c32 モジュールを /boot/syslinux にコピーし、ブートフラグを設定して MBR にブートコードをインストールします。ソフトウェア RAID の MBRGPT ディスクを扱うことができます。

1. boot パーティションを分割している時はそのパーティションがマウントされているか確認してください。lsblk で確認できます。/boot マウントポイントがないときは、先に進む前にマウントしてください。
2. syslinux-install_update をフラグを付けて実行してください: -i (ファイルをインストール), -a (boot フラグでパーティションを active にする), -m (MBR ブートコードをインストール):
# syslinux-install_update -i -a -m
3. #設定 に従って /boot/syslinux/syslinux.cfg を作成・編集してください。
ノート:
  • ここでシステムを再起動すると、Syslinux プロンプトが表示されます。自動でシステムを起動したりブートメニューを表示するには、設定ファイルを作成する必要があります。
  • ディスクをクローンして /mnt/clone と読んでいる場合、Arch インストールメディアから次のコマンドを実行して syslinux をインストールしてください:
# syslinux-install_update.sh -i -a -m -c /mnt/clone

手動

ノート:
  • 使っているパーティションテーブルがどっちか (MBR か GPT か) 定かでない場合は、次のコマンドを使うことで確認できます:
# blkid -s PTTYPE -o value /dev/sda
gpt
  • ライブ CD でインストール済みのシステムを復旧しようとしているのならば、これらのコマンドの前に chroot をするようにしてください。chroot を最初にしない場合、(/dev/ パスではない) 全てのファイルパスでマウントポイントを前に付ける必要があります。

Syslinux をインストールする boot パーティションには FAT, ext2, ext3, ext4, Btrfs のいずれかのファイルシステムを含んでなくてはなりません。マウントしたディレクトリ (/dev/sdXY デバイスではありません) にインストールしてください。ファイルシステムの root ディレクトリにインストールする必要はありません (例: /boot にマウント。したデバイス /dev/sda1)。Syslinux を syslinux ディレクトリにインストールすることができます:

# mkdir /boot/syslinux
# cp /usr/lib/syslinux/bios/*.c32 /boot/syslinux/                          # /usr/lib/syslinux/bios/ から *.c32 ファイルをすべてコピーします、シンボリックリンクでは駄目です
# extlinux --install /boot/syslinux/

この後、次のセクションに書かれているように Syslinux のブートコード (mbr.bin もしくは gptmbr.bin) をディスクの Master Boot Record の440バイトのブートコード領域 (MBR や msdos パーティションテーブルとは違います) にインストールしてください。

ノート: パーティションを使用しないでインストールする場合、MBR に Syslinux のブートコードをインストールする必要はありません。#設定まで進んでください。詳しくは [2] を参照。
MBR パーティションテーブル
次の記事を参照してください: Master Boot Record

次にパーティションテーブルで boot パーティションを active にする必要があります。これができるアプリケーションは fdisk, cfdisk, sfdisk, parted/gparted ("boot" フラグ) などです。以下のようにしてください:

# fdisk -l /dev/sda
[...]
  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      104447       51200   83  Linux
/dev/sda2          104448   625142447   312519000   83  Linux

MBR をインストールしてください:

# dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/bios/mbr.bin of=/dev/sda

Syslinux はもうひとつ MBR を提供しています: altmbr.bin。この MBR はブータブルパーティションのスキャンをしません。代わりに、MBR の最終バイトを使ってどのパーティションを起動するか示します。以下は altmbr.bin を所定の位置にコピーする方法の例です:

# printf '\x5' | cat /usr/lib/syslinux/bios/altmbr.bin - | \
dd bs=440 count=1 iflag=fullblock conv=notrunc of=/dev/sda

この場合、シングルバイトの値5が altmbr.bin の内容に加えられ結果的に440バイトがデバイス sda の MBR に書き込まれます。Syslinux はディスクの最初の論理パーティション (/dev/sda5) にインストールされます。

GUID パーティションテーブル
次の記事を参照してください: GUID Partition Table

/boot パーティションでビット2の属性 ("legacy_boot" 属性) を設定する必要があります:

# sgdisk /dev/sda --attributes=1:set:2

このコマンドによってパーティション1の legacy BIOS bootable 属性が切り替わります。確認するには:

# sgdisk /dev/sda --attributes=1:show
 1:2:1 (legacy BIOS bootable)

MBR をインストールしてください:

# dd bs=440 conv=notrunc count=1 if=/usr/lib/syslinux/bios/gptmbr.bin of=/dev/sda

このコマンドが動かない時は次のコマンドを試して下さい:

# syslinux-install_update -i -m

UEFI システム

ノート:
  • efi64 は x86_64 EFI システムを意味します。IA32 (32 ビット) EFI の場合は、以下に示すコマンドで efi64efi32 に置き換えてください。
  • Syslinux では、カーネルと initramfs のファイルは、EFI システムパーティション (別名 ESP) 内に配置する必要があります。Syslinux は (現在) 他のファイルシステム内 (この場合、ESP の外) にあるファイルにアクセスする機能を持っていないためです。そのため、ESP を /boot にマウントすることを推奨します。
  • 自動インストールスクリプト /usr/bin/syslinux-install_update は、UEFI インストールをサポートしていません。
  • UEFI での syslinux.cfg 設定ファイルの構文は、BIOS のものと同じです。

UEFI Syslinux の制限

  • UEFI Syslinux のメニューで TAB を使ってカーネルパラメータを編集すると表示がおかしくなる場合があります (text on top of one-another)。バグレポート: [3]
  • UEFI Syslinux は UEFI ShellWindows Boot Manager など他の EFI アプリケーションのチェインロードをサポートしていません。改善リクエスト: [4]
  • QEMU/OVMF、VirtualBox、一部の VMware 製品/バージョン、DUET などの UEFI エミュレーション環境では UEFI Syslinux は起動しないことがあります。VMware Workstation 10.0.2 と Syslinux-6.02 以上では問題ないとされています。バグレポート: [5][6][7]
  • UEFI では Memdisk は使えません。改善リクエスト: [8]

UEFI でのインストール

ノート: 以下のコマンドで UEFI 関連のものでは、$espEFI システムパーティション (別名 ESP) のマウントポイントを示しています。
  • syslinuxefibootmgr パッケージをインストールしてください。そして、以下のように ESP 内に Syslinux をセットアップしてください:
  • Syslinux のファイルを ESP にコピーしてください:
# mkdir -p esp/EFI/syslinux
# cp -r /usr/lib/syslinux/efi64/* esp/EFI/syslinux
  • efibootmgr を使って、Syslinux のブートエントリをセットアップしてください (/dev/sdXY は、ブートローダを含むパーティションです):
# efibootmgr --create --disk /dev/sdX --part Y --loader /EFI/syslinux/syslinux.efi --label "Syslinux" --unicode
  • #設定 セクションに従って、esp/EFI/syslinux/syslinux.cfg を作成/編集してください。
ノート:
  • UEFI での設定ファイルは esp/EFI/syslinux/syslinux.cfg であり、/boot/syslinux/syslinux.cfg ではありません。/boot/syslinux/ 内のファイルは BIOS 用で UEFI syslinux とは関係ありません。
  • BIOS モードで起動された場合、efibootmgr は EFI の NVRAM エントリを /efi/syslinux/syslinux.efi に設定できません。EFI のデフォルトの場所にリソースを保存してください: esp/EFI/syslinux/* -> esp/EFI/BOOT/*esp/EFI/syslinux/syslinux.efi -> esp/EFI/BOOT/bootx64.efi

設定

Syslinux の設定ファイル, syslinux.cfg は Syslinux をインストールしたディレクトリと同じところに作成する必要があります。このページでは、BIOS 環境は /boot/syslinux/、UEFI 環境は esp/EFI/syslinux/ とします。

ブートローダーは syslinux.cfg (推奨) もしくは extlinux.conf を探します。

ヒント:
  • LINUX の代わりに、キーワード KERNEL を使うことも可能です。KERNEL はファイルのタイプを検知しようとしますが、LINUX はいつでも Linux カーネルと想定します。
  • TIMEOUT の値の単位は 0.1 秒 です。

サンプル

ノート:
  • 以下の設定ファイルのサンプルは、適宜編集して適切なカーネルパラメータを設定する必要があります。#カーネルパラメータ セクションを見てください。
  • パスには十分注意してください。以下の例はあなたの環境には合わないかもしれません (特に UEFI を使用している場合)。
  • 以下の例では、カーネルと initrd のファイルが syslinux.cfg の場所より1上のディレクトリ階層に存在していると仮定しています (つまり、より正確には、作業ディレクトリより1つ上の階層)。

ブートプロンプト

以下の例は、boot: プロンプトを表示し 5 秒後に自動的に起動するシンプルな設定ファイルです。プロンプトを表示させずに直接起動させたい場合は、PROMPT0 に設定してください。

設定:

* BIOS: /boot/syslinux/syslinux.cfg
* UEFI: esp/EFI/syslinux/syslinux.cfg
PROMPT 1
TIMEOUT 50
DEFAULT arch

LABEL arch
	LINUX ../vmlinuz-linux
	APPEND root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw
	INITRD ../initramfs-linux.img

LABEL archfallback
	LINUX ../vmlinuz-linux
	APPEND root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw
	INITRD ../initramfs-linux-fallback.img

テキストブートメニュー

Syslinux ではブートメニューを使うこともできます。ブートメニューを使うには、モジュール menulibutil を Syslinux のディレクトリにコピーしてください:

# cp /usr/lib/syslinux/bios/{menu,libutil}.c32 /boot/syslinux/

バージョン 5.00 以降、追加の lib*.c32 ライブラリモジュールも頻繁に必要になります。モジュールの依存関係ツリーは Syslinux wiki を見てください。

設定:

* BIOS: /boot/syslinux/syslinux.cfg
* UEFI: esp/EFI/syslinux/syslinux.cfg
UI menu.c32
PROMPT 0

MENU TITLE Boot Menu
TIMEOUT 50
DEFAULT arch

LABEL arch
	MENU LABEL Arch Linux
	LINUX ../vmlinuz-linux
	APPEND root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw
	INITRD ../initramfs-linux.img

LABEL archfallback
	MENU LABEL Arch Linux Fallback
	LINUX ../vmlinuz-linux
	APPEND root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw
	INITRD ../initramfs-linux-fallback.img

メニューシステムに関する詳細は Syslinux wiki を見てください。

グラフィカルブートメニュー

Syslinux では、グラフィカルなブートメニューも使うことができます。グラフィカルなブートメニューを使うには、vesamenu COM32 モジュールを Syslinux のフォルダーにコピーしてください:

# cp /usr/lib/syslinux/bios/vesamenu.c32 /boot/syslinux/

バージョン 5.00 以降、追加の lib*.c32 ライブラリモジュールも頻繁に必要になります。モジュールの依存関係ツリーは Syslinux wiki を見てください。

ノート: UEFI を使用する場合は /usr/lib/syslinux/efi64/ (IA32 (32 ビット) の UEFI システムの場合は efi32) からコピーしてください。そうしないと黒画面が表示されます。そうなってしまった場合は、ライブメディアから起動して chroot を使って適切な変更を施して下さい。

以下の設定では、Arch のインストール CD と同じメニューデザインを使用します。インストール CD の設定は gitlab.archlinux.org で入手できます。Arch Linux の背景画像もそこからダウンロードできます。画像を /boot/syslinux/splash.png にコピーしてください。

設定:

* BIOS: /boot/syslinux/syslinux.cfg
* UEFI: esp/EFI/syslinux/syslinux.cfg
UI vesamenu.c32
DEFAULT arch
PROMPT 0
MENU TITLE Boot Menu
MENU BACKGROUND splash.png
TIMEOUT 50

MENU WIDTH 78
MENU MARGIN 4
MENU ROWS 5
MENU VSHIFT 10
MENU TIMEOUTROW 13
MENU TABMSGROW 11
MENU CMDLINEROW 11
MENU HELPMSGROW 16
MENU HELPMSGENDROW 29

# https://wiki.syslinux.org/wiki/index.php/Comboot/menu.c32 を参照

MENU COLOR border       30;44   #40ffffff #a0000000 std
MENU COLOR title        1;36;44 #9033ccff #a0000000 std
MENU COLOR sel          7;37;40 #e0ffffff #20ffffff all
MENU COLOR unsel        37;44   #50ffffff #a0000000 std
MENU COLOR help         37;40   #c0ffffff #a0000000 std
MENU COLOR timeout_msg  37;40   #80ffffff #00000000 std
MENU COLOR timeout      1;37;40 #c0ffffff #00000000 std
MENU COLOR msg07        37;40   #90ffffff #a0000000 std
MENU COLOR tabmsg       31;40   #30ffffff #00000000 std


LABEL arch
	MENU LABEL Arch Linux
	LINUX ../vmlinuz-linux
	APPEND root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw
	INITRD ../initramfs-linux.img


LABEL archfallback
	MENU LABEL Arch Linux Fallback
	LINUX ../vmlinuz-linux
	APPEND root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw
	INITRD ../initramfs-linux-fallback.img

Syslinux 3.84 以降、vesamenu.c32MENU RESOLUTION $WIDTH $HEIGHT ディレクティブをサポートしています。 このディレクティブを使うには、MENU RESOLUTION 1440 900 を設定に追加することで、解像度を 1440x900 に設定できます。 ただし、背景画像が正確に同じ解像度である必要があります。解像度が異なる場合、Syslinux はメニューをロードしません。

メニューを中央に配置し解像度を調整するには、MENU RESOLUTIONMENU HSHIFT $NMENU VSHIFT $N を使ってください。ただし、$N は正の数です。デフォルトの $N の値は両方 0 で、これはモニターの左上を表します。負の値はスクリーンの反対側からとなります (例: VHSHIFT -4 はスクリーンの下から 4 行となります)。

メニューを中央に移動させるには、以下の値を追加/編集してください:

* BIOS: /boot/syslinux/syslinux.cfg
* UEFI: esp/EFI/syslinux/syslinux.cfg
MENU RESOLUTION 800 600 # or whatever your screen resolution is
MENU WIDTH 78           # width of the menu also required to bring the menu box to size
MENU VSHIFT 10          # moves menu down
MENU HSHIFT 10          # moves menu right

VESA 規格は、一般的には 25 行 80 列が最大で、これらの値より大きくするとメニューがスクリーンからはみ出し、場合によってはレスキュー CD から設定を編集する羽目になります。

カーネルパラメータ

カーネルパラメータ は、syslinux.cfgAPPEND ディレクティブを使って設定します: それぞれの LABEL エントリに対して、最大 1 行の APPEND を受け入れます (つまり、複数の行に分けることはできません)。

以下の変更は、「フォールバック」エントリに対しても行っておくことをおすすめします。

最も単純な場合root パラメータの値を変更する必要があります。サポートされている形式は 永続的なブロックデバイスの命名 を見てください。

 APPEND root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw

root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX を変更して、正しいルートボリュームを指定してください。

dm-crypt 暗号化をしている場合APPEND の行を変更して、暗号化されているボリュームを使用してください:

APPEND root=/dev/mapper/name cryptdevice=UUID=YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY:name rw

btrfs サブボリュームを起動する場合APPEND の行を rootflags=subvol=<root subvolume> の用に変更してください。例えば、/dev/disk/by-uuid/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX が 'ROOT' という btrfs サブボリュームとしてマウントされている場合 (例: mount -o noatime,subvol=ROOT /dev/disk/by-uuid/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /mnt)、APPEND の行を以下のように変更する必要があります:

APPEND root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw rootflags=subvol=ROOT

そうしないと、次のエラーメッセージが表示されるでしょう: ERROR: Root device mounted successfully, but /sbin/init does not exist.

自動ブート

Syslinux のメニューを表示したくない場合は、#ブートプロンプト を使い、PROMPT0 に設定し、すべての UI メニューエントリをコメントアウトしてください。TIMEOUT 変数を 0 にしても良いでしょう。syslinux.cfgDEFAULT が設定されていることを確認してください。起動時に Shift または Alt を押すか、Caps Lock または Scroll Lock を有効化することで、デフォルト以外のオプションを使用できるようになります。 他の手段については、上流の wiki を見てください。

セキュリティ

Syslinux には、ブートローダーのセキュリティとして2つのレベルがあります: メニューのマスターパスワードとメニューアイテムごとのパスワードです。syslinux.cfg を編集して、以下のようにブートローダーのマスターパスワードを設定できます:

MENU MASTER PASSWD passwd 

また、LABEL ブロックの中に以下を記述することでブートアイテムを個別にパスワードで保護できます:

MENU PASSWD passwd 

passwd は平文かハッシュ値のどちらかを設定できます: 公式のドキュメントを参照してください。

チェインロード

Syslinux BIOS は他のパーティションからファイルを直接チェインロードできませんが、chain.c32 はパーティションのブートセクタ (VBR) や他のディスクの MBR を起動できます。

パーティションの VBR をチェインロードする

他のオペレーティングシステム (Windows など) やブートローダをチェインロードしたい場合は、chain.c32 モジュールを Syslinux ディレクトリにコピーしてください (追加の lib*.c32 ライブラリモジュールも必要かもしれません。前のセクションの指示を見てください)。そして設定ファイルにセクションを作成してください:

/boot/syslinux/syslinux.cfg
...
LABEL windows
	MENU LABEL Windows
	COM32 chain.c32
	APPEND hd0 3
...

hd0 3 は、1つ目の BIOS ドライブ上の3つ目のパーティションを指します。ドライブは0からカウントしますが、パーティションは1からカウントします。

ノート: Windows の場合、これはシステム固有のブートマネージャ (bootmgr) をスキップします。ブートマネージャは、いくつかの重要なアップデートを完了させるために必要です ()。そのような場合では、(GParted を使うなどして) 一時的に Windows パーティションに MBR ブートフラグを設定し、Windows アップデートのインストールを完了させ、その後に (Windows 固有の DiskPart を使うなどして) Syslinux のパーティションにブートフラグを戻すのが良いでしょう。

ディスクの MBR をチェインロードする

BIOS がどのドライブを "最初" とみなすかわからない場合は、代わりに MBR 識別子を (GPT を使用している場合はファイルシステムラベル) 使うこともできます。MBR 識別子を使うには、以下のコマンドを実行してください (/dev/sdb はチェインロードしたいドライブに置き換えてください):

# fdisk -l /dev/sdb
Disk /dev/sdb: 128.0 GB, 128035676160 bytes 
255 heads, 63 sectors/track, 15566 cylinders, total 250069680 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf00f1fd3
 
Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152    7  HPFS/NTFS/exFAT
/dev/sdb2         4196352   250066943   122935296    7  HPFS/NTFS/exFAT

ディスク識別子では16進数を使用します (この例では 0xf00f1fd3)。syslinux.cfg の構文は以下のようになります:

/boot/syslinux/syslinux.cfg
...
LABEL windows
	MENU LABEL Windows
	COM32 chain.c32
	APPEND mbr:0xf00f1fd3
...

チェインロードに関する詳細は Syslinux wiki を見てください。

他のブートローダをチェインロードする

同じパーティションに GRUB がインストールされている場合、以下の設定を使用して GRUB をチェインロードできます:

/boot/syslinux/syslinux.cfg
...
LABEL grub2
	MENU LABEL Grub2
	COM32 chain.c32
	APPEND file=../grub/boot.img
...

あるいは、lnxboot.imgcore.img の前に付けて GRUB を Linux カーネルとしてロードすることもできます。lnxboot.img ファイルは core/grub の一部で、/usr/lib/grub/i386-pc の中にあります。

/boot/syslinux/syslinux.cfg
...
LABEL grub2lnx
	MENU LABEL Grub2 (lnxboot)
	LINUX ../grub/i386-pc/lnxboot.img
	INITRD ../grub/i386-pc/core.img
...

これは、ISO イメージから起動する場合に必要になるかもしれません。

他の Linux システムをチェインロードする

この記事またはセクションの正確性には問題があります。
理由: Among other inaccuracies... 1_ There is no obligation to install yet another boot loader if you already have one related to the other partition/OS (e.g. GRUB2 installed in the MBR or in the VBR of the partition being chainloaded to). 2_ Syslinux (in any of its derivatives) is never "installed to the MBR", so mentioning the MBR in this section without any explanation of what it is being meant or how to do it in practical terms is just adding confusion. 3_ Typos and misspelling. 4_No need to explain (yet again) how to install some (other) bootloader to some (other) partition / OS; just how to chainload from Syslinux to that other partition / bootloader / OS. (議論: トーク:Syslinux#)

Windows など他のブートローダをチェインロードする場合、チェインするべきブートローダが明白に存在します。しかし Syslinux では、設定ファイルと同じパーティションにあるファイルしかロードすることができません。そのため、Linux の他バージョンを異なるパーティションに置いている (/boot を使っていない) ときは、他の OS のブートローダ (例: GRUB2) ではなく Extlinux を利用する必要がでてきます。基本的に、Extlinux はパーティションのスーパーブロック/VBR にインストールができ、Syslinux によってインストールされた MBR から 異なるブートローダ として呼ぶことができます。Extlinux は Syslinux プロジェクトの一部であり syslinux パッケージに含まれています。

以下の手順は既に Syslinux がインストールされていることを前提にしています。また、/boot/syslinux の Arch Linux 設定パスを使っていてチェインロード //dev/sda3 にあると仮定しています。

起動した Linux (Syslinux が起動するように設定されたパーティション) から、他の root パーティションを適当なマウントポイントにマウントしてください。ここでは例として /mnt を使います。また、2番目のオペレーティングシステムで /boot パーティションを分割している場合、それもマウントする必要があります。ここでは /dev/sda2 がそのパーティションとします。

# mount /dev/sda3 /mnt
# mount /dev/sda2 /mnt/boot (only necessary for separate /boot)

Extlinux をインストールして、必要な *.c32 ファイルをコピーしてください:

# extlinux -i /mnt/boot/syslinux/ (first create the directory if necessary)
# cp /usr/lib/syslinux/bios/*.c32 /mnt/boot/syslinux

/mnt/boot/syslinux/syslinux.cfg を作成してください。他の Linux のブートメニューファイルを参考にすることができます。以下は例です:

/mnt/boot/syslinux/syslinux.cfg on /dev/sda3
TIMEOUT 10

UI menu.c32

LABEL OtherLinux
	LINUX /boot/vmlinuz-linux
	INITRD /boot/initramfs-linux.img
	APPEND root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw quiet

LABEL MAIN
	COM32 chain.c32
	APPEND hd0 0

そしてメインの syslinux.cfg にエントリを追加してください:

/boot/syslinux/syslinux.cfg
LABEL OtherLinux
	COM32 chain.c32
	APPEND hd0 3

<other-OS>/boot/syslinux/syslinux.cfg にある他の Linux エントリは、/ 内の最新のカーネルと initrd へのシンボリックリンクを貼らない限り、その OS のカーネルがアップデートされるたびに編集する必要があります。カーネルを直接ブートし、他の OS のデフォルトのブートローダをチェインロードしないからです。

memtest を使う

公式リポジトリから memtest86+ をインストールしてください。

LABEL セクションを使って memtest を起動してください:

/boot/syslinux/syslinux.cfg
...
 LABEL memtest
         MENU LABEL Memtest86+
         LINUX ../memtest86+/memtest.bin
...
ノート: pxelinux を使用する場合は、memtest.bin から memtest に名前を変えて下さい。pxelinux は .bin 拡張子のファイルをブートセクタとして扱うのでファイルの 2KB しかロードしません。

HDT

HDT (Hardware Detection Tool) はハードウェアの情報を表示します。.c32 ファイルを /boot/syslinux/ からコピーする必要があります。 PCI 情報は、/usr/share/hwdata/pci.ids/boot/syslinux/pci.ids にコピーしてから以下を設定ファイルに追加してください:

/boot/syslinux/syslinux.cfg
 LABEL hdt
         MENU LABEL Hardware Info
         COM32 hdt.c32

再起動と電源オフ

以下のセクションを使ってマシンを再起動したり電源オフにできます:

/boot/syslinux/syslinux.cfg
 LABEL reboot
         MENU LABEL Reboot
         COM32 reboot.c32
 
 LABEL poweroff
         MENU LABEL Power Off
         COMBOOT poweroff.com

メニューをクリアする

メニューを終了した時に画面をクリアするには、次の行を追加してください:

/boot/syslinux/syslinux.cfg
 MENU CLEAR

キーボードリマッピング

ブートパラメータを頻繁に編集する必要があるような場合、キーボードレイアウトのリマップを行うとよいかもしれません。US キーボード以外で "=", "/" などの文字を打つのが楽になります。

ノート: keytab-lilo は "loadkeys" プログラムを呼び出す perl スクリプトです。

まず互換性のあるキーマップ (例えばドイツ語キーマップ) を作成するには:

# keytab-lilo /usr/share/kbd/keymaps/i386/qwerty/us.map.gz /usr/share/kbd/keymaps/i386/qwertz/de.map.gz > /boot/syslinux/de.ktl

syslinux.cfg を編集して以下を追加してください:

/boot/syslinux/syslinux.cfg
 KBDMAP de.ktl

詳しくは Syslinux wiki を参照してください。

メニューを隠す

このオプションを使うことでメニューを隠し、タイムアウトだけを表示することができます:

/boot/syslinux/syslinux.cfg
 MENU HIDDEN

どれかキーを押すとメニューが表示されます。

Pxelinux

ノート: 今のところ Syslinux には UEFI ネットワークスタックがないので、(GRUB では使うことができる) syslinux-efi-gitAUR[リンク切れ: アーカイブ: aur-mirror] を使うことができませんがカーネルや initramfs に tftp を使うことは可能です。pxelinux はレガシーな PXE ブートでは問題なく動作します。

Pxelinux は syslinux に含まれています。

(syslinux パッケージによって提供されている) pxelinux ブートローダをクライアントの boot ディレクトリにコピーしてください。

# cp /usr/lib/syslinux/bios/pxelinux.0 "$root/boot"
# mkdir "$root/boot/pxelinux.cfg"

また、pxelinux.cfg を作成しましたが、このフォルダはデフォルトで pxelinux によって設定ファイルが検索されます。異なるホスト MAC を区別したくないので、default 設定を作ります。

# vim "$root/boot/pxelinux.cfg/default"
default linux

label linux
kernel vmlinuz-linux
append initrd=initramfs-linux.img quiet ip=:::::eth0:dhcp nfsroot=10.0.0.1:/arch

NBD を使っている場合、次の append 行を使って下さい:

append ro initrd=initramfs-linux.img ip=:::::eth0:dhcp nbd_host=10.0.0.1 nbd_name=arch root=/dev/nbd0
ノート: nbd_hostnfsroot をあなたのネットワーク設定にあわせてそれぞれ変更する必要があります (NFS/NBD サーバーのアドレス)。

pxelinux の設定構文は syslinux と同じです; 詳しくは上流のドキュメントを参照してください。

カーネルと initramfs は TFTP を使って転送されます。そのためそれらのパスは TFTP の相対パスになります。また、root ファイルシステムは NFS マウントになり、NFS サーバーの相対パスになります。

実際に pxelinux をロードするには、/etc/dhcpd.conf 内の filename "/grub/i386-pc/core.0";filename "/pxelinux.0" に置き換えてください。

memdisk を使って ISO9660 イメージファイルを起動

Syslinux は memdisk モジュールを使って ISO イメージを直接起動できます。詳しくはマルチブート USB ドライブ#Syslinux と memdisk を使うを参照。

シリアルコンソール

シリアルコンソールを有効にするには syslinux.cfg ファイルの一番上に SERIAL port [baudrate] を追加します。"port" はポート番号 (/dev/ttyS0 の場合は 0) に置き換えてください。"baudrate" を省略すると、デフォルトのボーレートである 9600 bps が使われます。シリアルパラメータはパリティビット無しストップビットひとつの8ビットにハードコードされています [9]

syslinux.cfg
SERIAL 0 115200

APPEND オプションに console=tty0 console=ttyS0,115200n8 を追加することで起動時にカーネルでシリアルコンソールを有効にできます [10]:

syslinux.cfg
APPEND root=UUID=126ca36d-c853-4f3a-9f46-cdd49d034ce4 rw console=tty0 console=ttyS0,115200n8

GRUB でシリアルコンソールを有効にする方法はシリアルコンソールを見てください。

トラブルシューティング

Failed to load ldlinux

起動時に "Failed to load ldlinux.c32" というエラーメッセージが表示される理由は様々なものが考えられます。ファイルシステムツールやファイルシステムの構造の変化がそのひとつです。例えば、新しい ext4 ファイルシステムでは64ビット機能がデフォルトで有効になっています (古いバージョンの mke2fs では手動で設定する必要がある機能でした)。ext4 以外のファイルシステムでも構造やツールに変更が加えられることがあり、ブートローダーの挙動に影響します。

ノート: Failed to load ldlinux.c32 というメッセージとファイルシステムの問題の間に直接的な因果関係はありません:
  • このメッセージ以外にもファイルシステムの問題と関連するエラーは存在します。
  • メッセージが出たからといって必ずしもファイルシステムに問題があるとは限りません。他の理由も存在し得ます。

詳しくは [11] を参照してください。

Syslinux プロンプトを使う

(syslinux.cfg で設定した) 起動したいエントリの LABEL 名を入力することができます。サンプル設定を使っている場合、次を入力してください:

boot: arch

設定ファイルがロードできないというエラーが表示される場合、必要なブートパラメータを渡すことができます。例:

boot: ../vmlinuz-linux root=/dev/sda2 rw initrd=../initramfs-linux.img

ramfsboot: にアクセスできないと、一時的にカーネルを起動することができません。

1. root パーティションをマウントするために、一時ディレクトリを作成して下さい (存在しない場合):
 # mkdir -p /new_root
2. /new_root/ をマウントしてください (/boot/ が同じパーティション上にある場合。他のパーティションにあるときは両方マウントする必要があります):
ノート: Busybox cannot mount /boot if it is on its own ext2 partition.
 # mount /dev/sd[a-z][1-9] /new_root
3. vim を使って必要に応じて syslinux.cfg を編集しファイルを保存してください。
4. 再起動してください。

Fsck が root パーティションで失敗する

root パーティションが破損している (ジャーナルが壊れている) 場合、ramfs の緊急シェルで、root ファイルシステムをマウントしてください:

# mount /dev/root partition /new_root

そして root パーティションから tune2fs バイナリを取得してください (Syslinux には含まれていません):

# cp /new_root/sbin/tune2fs /sbin/

ext2fs: no external journal の指示に従って root パーティションの新しいジャーナルを作成して下さい。

No Default or UI found on some computers

特定のマザーボードメーカーでは USB デバイスからの起動への対応が遅れています。最近のコンピュータでは起動できる ext4 でフォーマットされた USB ドライブでも、カーネルinitrd が含まれているブートパーティションが FAT16 パーティションでないとフリーズするコンピュータもあります。旧式のマシンが ldlinux をロードして syslinux.cfg の読み込みに失敗するのを防ぐには、cfdisk を使って (2GB 以下の) FAT16 パーティションを作成して dosfstools を使ってフォーマットしてください:

# mkfs.msdos -F 16 /dev/sda1

それから Syslinux をインストール・設定してください。

Missing operating system

このメッセージが表示されるときは、/boot が含まれているパーティションの boot フラグが有効になっているか確認してください。フラグが有効になっている場合、おそらくパーティションがセクタ63や2048でなく1から始まっています。fdisk -l で開始セクタを確認してください。セクタ1から始まっている場合は、レスキューディスクの gparted を使ってパーティションを移動することができます。もしくは、boot パーティションを分割しているのなら、次のコマンドで /boot をバックアップして Arch のインストールディスクで起動することができます:

# cp -a /boot /boot.bak

次に、cfdisk を使って /boot パーティションを削除して、再作成してください。この時パーティションを正しいセクタ 63 から開始してください。ビギナーズガイドに記述されているようにパーティションをマウントして、マウントしたシステムに chroot してください。次のコマンドで /boot を復元します:

# cp -a /boot.bak/* /boot

/etc/fstab が問題ないかどうか確認して、次のコマンドを実行して再起動してください:

# syslinux-install_update -iam

md RAID 1 アレイから起動しようとして Syslinux が理解しない新しいバージョンのメタデータを使ってアレイを作成した場合にもこのエラーが表示されます。2013年8月現在、mdadm はデフォルトでバージョン 1.2 のメタデータでアレイを作成しますが、Syslinux は 1.0 以上の新しいメタデータを理解しません。この場合、--metadata=1.0 フラグを使って mdadm で RAID アレイを再生成する必要があります。

Syslinux を無視して Windows が起動する

解決方法: /boot を含むパーティションのブートフラグが有効になっているか確認してください。また、Windows パーティションのブートフラグは無効にする必要があります。上のインストールセクションを参照してください。

Syslinux に含まれている MBR はブートフラグが設定されている一番最初の active なパーティションを検索します。おそらく最初に Windows のパーティションが認識されてしまっています。必要であれば、Windows や MS-DOS の fdisk による MBR を使うことができます。

メニューエントリが動作しない

メニューエントリを選択しても何も起こらない場合、メニューを"更新"するだけになっています。おそらく syslinux.cfg ファイルにエラーが存在しています。Tab を押してブートパラメータを編集してください。もしくは、Esc を押してブートエントリの LABEL を入力してください (例: arch)。

ldlinux.sys を削除できない

ldlinux.sys ファイルには immutable 属性が設定されるので、削除したり上書きすることができません。これはファイルのセクター位置が変わってしまうと Syslinux を再インストールする必要があるからです。ファイルを削除するには、以下を実行してください:

# chattr -i /boot/syslinux/ldlinux.sys
# rm /boot/syslinux/ldlinux.sys

vesamenu 使用時に白いブロックが左上に現れる

問題: linux-3.0 現在、modesetting ドライバーは解像度が変更された後もディスプレイの表示内容を保持しようとします (テキストモードの Syslinux で Intel のグラフィックチップを使っている場合に確認)。Syslinux の vesamenu モジュールと組み合わさると問題が発生します (白いブロックは Syslinux のメニューを保持しようとしたものですが、ドライバーは vesa グラフィックモードから画像を取得できていません)。

初期モードセッティングでカスタム解像度と vesamenu を使用している場合、以下の設定を syslinux.cfg に追加してみてください:

APPEND root=/dev/sda6 rw 5 vga=current quiet splash

Windows を他のドライブにインストールしている時に、チェインロードが動作しない

Windows を Arch とは別のドライブにインストールしていてチェインロードに問題が起こるときは、以下の設定を試して下さい:

LABEL Windows
       MENU LABEL Windows
       COM32 chain.c32
       APPEND mbr:0xdfc1ba9e swap

mbr コードはあなたの windows ドライブのものに置き換えて (詳しくはを参照)、swap をオプションに追加してください。

Btrfs の圧縮

圧縮が有効になっている btrfs からの起動はサポートされていません [12]。以下のエラーが表示されます:

btrfs: found compressed data, cannot continue!
invalid or corrupt kernel image.

Btrfs のマルチデバイス

マルチデバイス Btrfs からの機能はサポートされていません [13] (main.c の validate_device_btrfs() の1246行目)。以下のようなエラーが表示されます:

/boot/syslinux is device /dev/sda1
extlinux: path /boot/syslinux doesn't match device /dev/sda1

参照