Syslinux (日本語)

From ArchWiki
Jump to: navigation, search
概要
ブートローダの集合である Syslinux のインストール・設定の説明。
概括
Arch Linux を起動するためには、GRUB(2), Syslinux, LILO, GRUB Legacy などの Linux 対応のブートローダを、Master Boot Record もしくは GUID Partition Table にインストールする必要があります。ブートローダは、ブートプロセスが始まる前にカーネルやイニシャルラムディスクをロードする仕事を行います。

Syslinux はハードドライブや CD、PXE を介したネットワークなどから起動できるブートローダの集合です。FAT, ext2, ext3, ext4, Btrfs ファイルシステムをサポートしています。

Note: Syslinux (バージョン 6.02 現在, BIOS と UEFI 両方で) は (GRUB とは違って) 他のパーティションのファイルにアクセスすることができません。(multi-fs と呼ばれる) この機能は上流で実装される予定です。multi-fs 機能の手助けをしたいのなら、上流に連絡してください

Contents

BIOS 環境

Syslinux ブートプロセス

  1. MBR をロード。起動時、コンピュータは MBR をロードします (/usr/lib/syslinux/bios/mbr.bin)。
  2. アクティブパーティションを検索。MBR はアクティブになっているパーティションを探します (ブートフラグ)。
  3. ボリュームブートレコードを実行。パーティションが見つかったら、ボリュームブートレコード (VBR) が実行されます。ext2/3/4 や FAT12/16/32 の場合、ldlinux.sys の最初のセクタが VBR に決め打ちされています。
  4. ldlinux.sys を実行。VBR が起動します (ldlinux.sys)。ldlinux.sys の位置が変更されている場合、Syslinux は起動しません (Btrfs の場合、ファイルが移動した時に ldlinux.sys のセクタ位置が変わってしまうため上の方法は動作しません。従って、Syslinux のコード全体をファイルシステムの外に保存する必要があります。コードは VBR の後ろのセクタに保存されます)。
  5. 設定ファイルを検索。Syslinux が完全にロードされると、設定ファイル extlinux.conf もしくは syslinux.cfg を探します。
  6. 設定をロード。設定ファイル見つかったら、ロードが行われます。設定ファイルが存在しない場合、Syslinux プロンプトが表示されます。

インストール

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

自動インストール

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 を作成・編集してください。
Note:
  • ここでシステムを再起動すると、Syslinux プロンプトが表示されます。自動でシステムを起動したりブートメニューを表示するには、設定ファイルを作成する必要があります。
  • ディスクをクローンして /mnt/clone と読んでいる場合、Arch インストールメディアから次のコマンドを実行して syslinux をインストールしてください:
# syslinux-install_update.sh -i -a -m -c /mnt/clone

手動インストール

Note:
  • 使っているパーティションテーブルがどっちか (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 -r /usr/lib/syslinux/bios/* /boot/syslinux
# extlinux --install /boot/syslinux

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

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 環境

Note:
  • UEFI は Syslinux 6.xx 以降でサポートされています。
  • 以下のコマンド中にある $esp は ESP のマウントポイントを示しています。
  • efi64 は x86_64 UEFI システムを意味しています。IA32 (32-bit) EFI では、下のコマンド中の efi64efi32 に置き換えてください。
  • syslinux では、自分のパーティションの外 (つまりこの場合 ESP の外) のファイルに syslinux がアクセスできないために、カーネルと initramfs ファイルを ESP に含める必要があります。このために、ESP を /boot にマウントすることが推奨されています。
  • 自動インストールスクリプト /usr/bin/syslinux-install_update は UEFI インストールをサポートしていません。
  • UEFI での syslinux.cfg の設定構文は BIOS と同じです。

UEFI Syslinux の制限

インストール

  • syslinux パッケージをインストールして EFI System Partition (ESP) で syslinux をセットアップしてください:
# pacman -S syslinux
  • syslinux ファイルを ESP にコピーしてください:
# mkdir -p $esp/EFI/syslinux
# cp -r /usr/lib/syslinux/efi64/* $esp/EFI/syslinux
  • efibootmgr を使って Syslinux のブートエントリを設定してください:
# mount -t efivarfs efivarfs /sys/firmware/efi/efivars
# efibootmgr -c -d /dev/sdX -p Y -l /EFI/syslinux/syslinux.efi -L "Syslinux"
  • #設定 に従って $esp/EFI/syslinux/syslinux.cfg を作成・編集してください。
Note: UEFI での設定ファイルは $esp/EFI/syslinux/syslinux.cfg であり、/boot/syslinux/syslinux.cfg ではありません。/boot/syslinux/ 内のファイルは BIOS 用で UEFI syslinux とは関係ありません。

設定

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

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

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

サンプル

基本設定

このシンプルな設定ファイルは boot: プロンプトを表示して5秒後に自動でブートします。

Note: The partition in question needs to be whatever you have as / (root), not /boot.

設定:

/boot/syslinux/syslinux.cfg
 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

プロンプトを表示しないで直接ブートしたい場合、PROMPT0 に設定してください。

デバイス名の代わりに UUID を使って永続的なデバイスの命名をしたい場合は、APPEND 行を変更して root パーティションの UUID と同じにしてください:

APPEND root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff rw

暗号化 LUKS を使う場合、APPEND 行を暗号化されたボリュームを使うように変更してください:

APPEND root=/dev/mapper/group-name cryptdevice=/dev/sda2:name rw

mdadm を使ってソフトウェア RAID を利用している場合、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

上のカーネルデバイスノードを使ったソフトウェア raid パーティションからの起動が失敗する場合、もっと信頼性のある方法としてパーティションラベルを使う方法があります:

APPEND root=LABEL=THEROOTPARTITIONLABEL rw

テキストブートメニュー

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

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

設定:

/boot/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=/dev/sda2 rw
         INITRD ../initramfs-linux.img
 
 LABEL archfallback
         MENU LABEL Arch Linux Fallback
         LINUX ../vmlinuz-linux
         APPEND root=/dev/sda2 rw
         INITRD ../initramfs-linux-fallback.img

メニューシステムの詳細は Syslinux のドキュメント を見て下さい。

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

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

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

この設定は Arch Install CD と同じメニューデザインを使っています。背景ファイルもここになります。この設定を使ってあなたのシステムをブートできるようにするために、正しいパーティションが使われているか確認してください。

設定:

/boot/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
 
 # Refer to http://www.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=/dev/sda2 rw
         INITRD ../initramfs-linux.img
 
 
 LABEL archfallback
         MENU LABEL Arch Linux Fallback
         LINUX ../vmlinuz-linux
         APPEND root=/dev/sda2 rw
         INITRD ../initramfs-linux-fallback.img

Syslinux 3.84 から、vesamenu.c32MENU RESOLUTION $WIDTH $HEIGHT ディレクティブをサポートしています。 これを使うには、1440x900 の解像度なら設定に MENU RESOLUTION 1440 900 を挿入してください。 背景画像も適切な解像度にする必要があります。そうしないと Syslinux はメニューをロードしません。

自動ブート

Syslinux のメニューを表示したくない場合は、syslinux.cfg 内の UI コマンドを全てコメントアウトして DEFAULT を設定してください。

チェインロード

Note: Syslinux BIOS cannot directly chainload files from other partitions, however chain.c32 can boot partition boot sector (VBR).

他のオペレーティングシステム (Windows など) やブートローダをチェインロードしたい時は、chain.c32 モジュールを Syslinux ディレクトリにコピー(もしくはシンボリックリンクを作成)してください (詳しくは、前のセクションの説明を参照してください)。そして設定ファイルにセクションを作成してください:

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

hd0 3 は最初の BIOS ドライブの3つ目のパーティションです - ドライブは0から数えますが、パーティションは1からになります。

BIOS がどのドライブを"最初"と考えるのかわからない場合は、代わりに MBR identifier (GPT を使っている場合、ファイルシステムラベル) を使うことができます。MBR identifier を使うには、次のコマンドを実行してください:

# 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

/dev/sdb をチェインロードしたいドライブに置き換えてください。Disk identifier には16進数が使われます: この場合 0xf00f1fd3 です。syslinux.cfg の構文は:

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

チェインロードの詳細は Syslinux の wiki を参照してください。

同じパーティションに GRUB をインストールした場合は、以下でチェインロードすることが可能です:

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

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

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

Chainloading another bootloader such as Windows' is pretty obvious, as there is a definite bootloader to chain to. But with Syslinux, it is only able to load files residing on the same partition as the configuration file. Thus, if you have another version of Linux on a separate partition, without a shared /boot, it becomes necessary to employ Extlinux. Essentially, Extlinux can be installed on the partition superblock and be called as a separate bootloader from the MBR installed by Syslinux. Extlinux is part of the Syslinux project and is included with the syslinux package.

The following instructions assume you have Syslinux installed already. These instructions will also assume that the typical Arch Linux configuration path of /boot/syslinux is being used and the chainloaded / is on /dev/sda3.

From a booted Linux (likely the partition that Syslinux is set up to boot), mount the other root partition to your desired mount point. In this example this will be /mnt. Also, if a separate /boot partition is used on the second operating system, that will also need to be mounted. The example assumes this is /dev/sda2.

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

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

# extlinux -i /mnt/boot/syslinux
# cp /usr/lib/syslinux/bios/{chain,menu}.c32 /mnt/boot/syslinux

/mnt/boot/syslinux/syslinux.cfg を作成してください。例:

/boot/syslinux/syslinux.cfg on /dev/sda3
timeout 10

ui menu.c32

label Other Linux
    linux /boot/vmlinuz-linux
    initrd /boot/initramfs-linux.img
    append root=/dev/sda3 rw quiet

label MAIN
    com32 chain.c32
    append hd0 0

参照: Djgera's user wiki page

memtest を使う

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

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

/boot/syslinux/syslinux.cfg
...
 LABEL memtest
         MENU LABEL Memtest86+
         LINUX ../memtest86+/memtest.bin
...

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

キーボードリマッピング

If you often have to edit your boot parameters, you might want to remap your keyboard layout. This allows you to enter "=", "/" and other characters easily on a non-US keyboard.

First you have to create a compatible keymap (for example a German one):

# cp /usr/share/kbd/keymaps/i386/qwerty/us.map.gz ./
# 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

The last command has to be run as root, otherwise it will not work.

Copy de.ktl as root to /boot/syslinux/ and set ownership to root:

# chown root:root /boot/syslinux/de.ktl

Now edit syslinux.conf and add:

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

メニューを隠す

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

/boot/syslinux/syslinux.cfg
 MENU HIDDEN

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

Pxelinux

Note: Syslinux at present has no UEFI networking stack, so you'll be unable to use syslinux-efi-git (as is possible with GRUB) and still expect to be able to tftp your kernel and initramfs; pxelinux still works fine for legacy PXE booting

Pxelinuxsyslinux に含まれています。

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

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

We also created the pxelinux.cfg directory, which is where pxelinux searches for configuration files by default. Because we don't want to discriminate between different host MACs, we then create the default configuration.

# 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

Or if you are using NBD, use the following append line:

append ro initrd=initramfs-linux.img ip=:::::eth0:dhcp nbd_host=10.0.0.1 nbd_name=arch root=/dev/nbd0
Note: You will need to change nbd_host and/or nfsroot, respectively, to match your network configuration (the address of the NFS/NBD server)

The pxelinux configuration syntax identical to syslinux; refer to the upstream documentation for more information.

The kernel and initramfs will be transferred via TFTP, so the paths to those are going to be relative to the TFTP root. Otherwise, the root filesystem is going to be the NFS mount itself, so those are relative to the root of the NFS server.

To actually load pxelinux, replace filename "/grub/i386-pc/core.0"; in /etc/dhcpd.conf with filename "/pxelinux.0"

トラブルシューティング

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/ が同じパーティション上にある場合。他のパーティションにあるときは両方マウントする必要があります):
Note: 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

Certain motherboard manufacturers have less compatibility for booting from USB devices than others. While an ext4 formatted USB drive may boot on a more recent computer, some computers may hang if the boot partition containing the kernel and initrd are not on a FAT16 partition. To prevent an older machine from loading ldlinux and failing to read syslinux.cfg, use cfdisk to create a FAT16 partition (<=2GB) and format using dosfstools:

# mkfs.msdos -F 16 /dev/sda1

then install and configure 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

You will also get this error if you are trying to boot from a md RAID 1 array and created the array with a too new version of the metadata that Syslinux doesn't understand. As of August 2013 by default mdadm will create an array with version 1.2 metadata, but Syslinux doesn't understand metadata newer than 1.0. If this is the case you'll need to recreate your RAID array using the --metadata=1.0 flag to mdadm.

Windows boots up, ignoring Syslinux

Solution: Make sure the partition that contains /boot has the boot flag enabled. Also, make sure the boot flag is not enabled on the Windows partition. See the installation section above.

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 fdisk provides.

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

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

ldlinux.sys を削除できない

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

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

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

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).

If you have a custom resolution and a vesamenu with early modesetting, try to append the following in syslinux.cfg to remove the white block and continue in graphics mode:

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 をオプションに追加してください。

参照