お茶漬けぶろぐ

既存のArchLinuxからUSBメモリにArchLinuxをインストールする

USBメモリから起動するArchLinux、という環境を作る。通常のHDDやSSDにインストールしてそこからブートする感覚で、ストレージデバイスとしてUSBメモリを使う。

普通にArchLinuxをインストールする時、isoイメージから起動ディスクを作成して、そこからブートしてインストールするが、今回は既存の環境から必要なデータをコピーするようにした。

ちなみにUEFI+GPT環境。(今回のターゲットはSurface Pro 4だったりする。Secure bootは気にしない方向で…)

なにはともあれlsblkしてUSBメモリが/dev/sdbである事を確認。

ついでにarch-install-scriptsをインストールしておく。

最初の山(最初っていうか山はこれしかない気もする)、パーティショニング。

購入したばかりのUSBメモリ(16GB)、MBRだったのでGPTに変換して、パーティションを切る。作業はともかく、こんな状態であれば良さそう。

[bash]

gdisk /dev/sdb

GPT fdisk (gdisk) version 1.0.1

Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): p
Disk /dev/sdb: 30497664 sectors, 14.5 GiB
〜略〜

Number Start (sector) End (sector) Size Code Name
1 2048 1050623 512.0 MiB EF00 EFI System
2 1050624 30497630 14.0 GiB 8300 Linux filesystem

Command (? for help):
[/bash]

要は、

・/dev/sdb1がEFI System(/bootになる)
・/dev/sdb2がLinux filesystem(/になる)

という事。

ターゲットになる環境はRAMが8GBあるし、メインストレージがUSBメモリになるのでswapは無しの方向で。

パーティショニングが完了したらファイルシステムのフォーマットとマウント。

普通にやれば良いが、

ジャーナルを無効にしたext4が良い

あるので、そうする。

[bash]

mkfs.vfat -F32 /dev/sdb1

mkfs.ext4 -O “^has_journal” /dev/sdb2

mount /dev/sdb2 /mnt

mkdir /mnt/boot

mount /dev/sdb1 /mnt/boot

[/bash]

次にベースシステムのインストール。

主要パッケージについては既存環境からコピーしてくるので、そのための準備をする。

手軽に取り扱える簡単なhttpdであるところのdarkhttpdを使う。

[bash]
$ sudo pacman -S darkhttpd
$ sudo darkhttpd /var/cache/pacman/pkg
[/bash]

そして/etc/pacman.d/mirrorlistにServer http://localhost/とでも先頭に書いておく。

この状態でpacstrapすれば、/var/cache/pacman/pkgに存在するパッケージはコピーされ、そうでないものは404が返され、(次のリポジトリを探す事になるので)自動的にダウンロードされる。

[bash]

pacstrap /mnt base base-devel

[/bash]

fstabを作成する。

[bash]

genfstab -U -p /mnt » /mnt/etc/fstab

[/bash]

/mnt/etc/fstabに書き込む許可が無いよ、と言われたので、genfstabの出力をクリップボードに放り込んで、# gedite /mnt/etc/fstabして強引に放り込んでおいた。

このfstabに、/dev/sdb1等ではなく、きちんとパーティションのUUIDで指定されているかどうか、必ず確認しておく。

chrootしてロケール設定その他諸々てきとうに…

[bash]

arch-chroot /mnt /bin/bash

vi /etc/locale.gen

localge-gen

echo LANG=en_US.UTF-8 > /etc/locale.conf

export LANG=en_US.UTF-8

ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

echo HOSTNAME > /etc/hostname

passwd

[/bash]

最後にブートローダーのセットアップ。

grubを使うのだけど、grub-install時に–removableオプションを付けておけと書いてあったのでそうしてある。

[bash]

pacman -S grub dosfstools efibootmgr

grub-install –target=x86_64-efi –efi-directory=/boot –bootloader-id=grub –removable –recheck –debug

grub-mkconfig -o /boot/grub/grub.cfg

[/bash]

/boot/efi/boot/bootx64.efiが存在しているか確認しておく。無ければ以下の感じで。

[bash]

mkdir /boot/efi/boot

cp /boot/efi/arch_grub/grubx64.efi /boot/efi/boot/bootx64.efi

[/bash]

初期RAMディスクの作成をする前にゴニョゴニョしておけとUSB キーに Arch Linux をインストール - ArchWikiに書いてあったのでしておく。タイミングはよくわかってない(最後にやった)。

[bash]

vi /etc/mkinitcpio.conf

mkinitcpio -p linux

[/bash]

/etc/mkinitcpio.confの中でHOOKSのudev直後にblockと追加しておく。

以上で基本のインストールは完了。その後適宜環境を構築していこう。(今回はここでおしまい)

< ddするときに進捗状況をを確認する

Windowsのcmdでプロンプトを変更する >