リムーバブルメディアに Arch Linux をインストール
このページでは標準的な Arch のインストールを USB キー (または"フラッシュドライブ") で行う方法を説明しています。USB インストールメディアで説明している LiveUSB の作り方と違って、HDD に通常インストールするのと同じように USB フラッシュドライブにインストールを行います。
目次
インストール
USB スティックに Arch をインストールする方法は様々ありますが、一番シンプルなのは Arch からインストールする方法です:
- 既に Arch を実行している場合、arch-install-scripts をインストールして iso からインストールするのと同じようにインストールガイドに従って下さい。ただし
/dev/sda
を使用する代わりに、インストールする前に$ lsblk
を使って USB キーの/dev/sd*
の名前を確認します。
- Arch Linux CD/USB を使って USB キーに Arch をインストールすることもできます。CD/USB を起動してインストールガイドに従って下さい。ライブ USB から起動する場合、インストールは別の USB スティックに行う必要があります。
- もしくは、別の Linux コンピュータが使える場合 (Arch である必要はありません)、既存の Linux からインストールにしたがって、設定セクションまで進んでください。
- Windows や Mac で VirtualBox をダウンロードしている場合、VirtualBox Extension をインストールして、USB ドライブを arch が動いている仮想マシンに追加して、USB ドライブにインストールを行なって下さい。
インストール時の設定
基本的にはインストールガイドのとおりに行いますが、以下の部分が異なります:
- cfdisk が "Partition ends in the final partial cylinder" fatal error で終了してしまう場合、残された方法はドライブ上の全てのパーティションを消去することだけです。別のターミナルを開いて (
Alt+F2
)、fdisk /dev/sdX
と入力し (sdX
はあなたの使用している usb ドライブに置き換えてください)、パーティションテーブルを表示 (p) して、問題ないか確認をし、パーティションテーブルを削除 (d) してから変更を書き込んでください (w)。そして cfdisk に戻ります。 - ファイルシステムを選択する前に SSD の wiki 記事の読み書きを最小化するヒントを読むことを強く推奨します。結論としては、ジャーナルを無効にした ext4 が良いでしょう (ただしジャーナルを無効化するとデータを消失する危険性が高まります)。
# mkfs.ext4 -O "^has_journal" /dev/sdXX
で作成できます。フラッシュが書き込みを行える回数には限りがあり、ジャーナリングファイルシステムは、ジャーナルを更新するたびに回数を減らしてしまうということを覚えてください。同じ理由から、スワップパーティションは作成しないのがベストです。USB ハードドライブへのインストールには影響がありません。 - 初期 RAM ディスクを作成 (
# mkinitcpio -p linux
) する前に、/etc/mkinitcpio.conf
の HOOKS のudev
のすぐ後にblock
フックを追加してください。初期ユーザー空間で適切なモジュールをロードするために必要です。 - UFD デバイスをクロスプラットフォームなリムーバブルドライブとして使い続けたい場合、(NTFS や exFAT など) 適当なファイルシステムのパーティションを作成します。データパーティションはデバイスの1番目のパーティションにする必要があります。Windows はリムーバブルデバイスには1つのパーティションしかないと想定しており、そうでない場合、EFI システムパーティションを自動的にマウントしてしまいます。dosfstools や ntfs-3g を忘れずにインストールしてください。UFD デバイスのリムーバブルメディアビットを反転させるツールはオンラインで使うことができます。これによってオペレーティングシステムに UFD デバイスを外付けのハードディスクとして扱わせたり、選択したパーティションスキームを使用することができます。
設定
/etc/fstab
に USB キーの/
などのパーティションの適切な情報を記述してください。複数のマシンで USB キーを起動する場合、ハードディスクのデバイス番号は変わってしまう可能性があります。そのため UUID やラベルを使用することを推奨します:
パーティションの正しい UUID を取得するには blkid
を実行します。
GRUB legacy
GRUB legacy の設定ファイルである menu.lst
を以下のように設定する必要があります:
/dev/sdaX
を使用:
root (hd0,0) kernel /boot/vmlinuz-linux root=/dev/sda1 ro initrd /boot/initramfs-linux.img
ラベルを使う場合 menu.lst
は以下のようになります:
root (hd0,0) kernel /boot/vmlinuz-linux root=/dev/disk/by-label/Arch ro initrd /boot/initramfs-linux.img
UUID の場合:
root (hd0,0) kernel /boot/vmlinuz-linux root=/dev/disk/by-uuid/3a9f8929-627b-4667-9db4-388c4eaaf9fa ro initrd /boot/initramfs-linux.img
GRUB
UEFI の GPT を使う場合、GRUB#UEFI システム の指示に従って --removable
オプションを付けるようにしてください。そうしないと既存の GRUB が破壊される可能性があります。コマンドは以下のようになります:
# grub-install --target=x86_64-efi --efi-directory=$esp --bootloader-id=grub --removable --recheck
Syslinux
/dev/sdaX
を使用:
LABEL Arch MENU LABEL Arch Linux LINUX ../vmlinuz-linux APPEND root=/dev/sdax ro INITRD ../initramfs-linux.img
UUID を使用:
LABEL Arch MENU LABEL Arch Linux LINUX ../vmlinuz-linux APPEND root=UUID=3a9f8929-627b-4667-9db4-388c4eaaf9fa ro INITRD ../initramfs-linux.img
ヒントとテクニック
複数のマシンで USB インストールを使う
アーキテクチャ
互換性を高めるために、32ビット (i686) と64ビット (x86_64) 両方のアーキテクチャで動作するように、i686 アーキテクチャをインストールすることが推奨されます。
また、32ビットのバイナリの方が容量が少なくてすみ multilib パッケージをインストールする必要がなくなるので、x86_64 でインストールするよりも i686 でインストールするほうが基本的に消費する容量は少なくなります。
インプットドライバー
ノートパソコンを使う (またはタッチスクリーンを使用する) 場合、タッチパッドやタッチスクリーンを使用するには xf86-input-synaptics パッケージが必要になります。
タッチパッドの設定方法や問題のトラブルシューティングについては、Touchpad Synaptics の記事を見てください。
ビデオドライバー
ほとんどの GPU で動作するように xf86-video-vesa, xf86-video-ati, xf86-video-intel, xf86-video-nouveau をインストールしてください。
永続的なブロックデバイスの命名
fstab とブートローダーの設定では UUID を使うことが推奨されます。詳しくは永続的なブロックデバイスの命名を見て下さい。
また、USB キーのカスタムシンボリックリンクを作成する udev ルールを作成することもできます。fstab やブートローダーの設定ではシンボリックリンクを使うようにします。詳しくは udev#固定デバイス名の設定 を見て下さい。
カーネルパラメータ
Intel のビデオカードなどを使っている場合に、黒画面や "no signal" エラーが表示されないように、KMS は無効化したほうが良いでしょう。KMS を無効化するには、カーネルパラメータに nomodeset
を追加します。詳しくはカーネルパラメータを参照してください。
USB-3 メディアから起動
[1] を見て下さい。
互換性
フォールバックイメージを使うことで互換性を最大限に高めることができます。
ディスクアクセスの最小化
- カスタム設定ファイルを作成するなどして、ジャーナルを RAM に保存するように journald を設定すると良いでしょう:
/etc/systemd/journald.conf.d/usbstick.conf
[Journal] Storage=volatile RuntimeMaxUse=30M
- ウェブブラウザなどのアプリケーションで
fsync
と関連するシステムコールを無効化するには、libeatmydataAUR の eatmydata コマンドを使ってシステムコールを無効化できます:
$ eatmydata firefox