Windows10-ArchLinux デュアルブートの記録

はじめに

Arch最高という言葉を見かけた、DebianはRaspbianの苦労を思い出してちょっと怖い

でもWordとかExcelとかPowerPointとか簡単には捨てられない...

そうだ、デュアルブートがあるじゃないか!

 

内容は以下のような構成になっています。

基本的に自分が後で見返したときにわかりやすくなるよう心がけて書いたので、リンク先と同じってことが多いですが許してください。

  1. 下準備(基本飛ばして問題ないです)
  2. Windowsのインストール
  3. ArchLinuxのLive USB作成
  4. ArchLinux Live USBの起動
  5. ArchLinuxの設定

下準備

デュアルブート環境構築前に、必ず以下の点に十分注意してください。

  • ライセンス付与されたソフトウェアのアンインストール

最近のソフトウェアのライセンス管理方法はどうなっているのかわかりませんが、現在Windowsがインストールされているコンピュータ上にデュアルブート環境を構築する場合は、念のためライセンスが関わるソフトウェア(例:MS Officeなど)はアンインストールしておきましょう。

もちろん、以下のことも忘れないでください。

  • データのバックアップ

理由は後述しますが、HDDのデータを文字通り完全に消去してしまうので、重要なデータのバックアップは忘れないようにしましょう。

 

Windowsのインストール

注意点:完全にインストーラ任せにしてはいけません。任せっきりでいると、またここからやり直しになってしまいます。(やり直ししたの私だ)

 

Q.「ArchLinuxとWindowsのインストールはどちらが先ですか?」

A. 公式WikiWindowsが先です」

Windows と Arch のデュアルブート - ArchWiki

 

Windows 10をインストールするためのUSBメディアを作成します。

Windows 10 のダウンロード

作成方法はここに従っておけば大丈夫です。

www.atmarkit.co.jp

で、パーティションはデフォルトだとあとあと不都合が生じるので、以下の手順に従ってパーティションを変更します。特に、efiパーティションのサイズは260MBに設定することに注意してください。

サンプル: Windows PE と DiskPart を使って UEFI/GPT ベースのハード ドライブ パーティションを構成する

 

  1. 次のセクションのコードをテキスト ファイル (CreatePartitions.txt) として USB フラッシュ ドライブに保存します。

  2. Windows PE を使って対象 PC を起動します。

  3. DiskPart /s F:\CreatePartitions.txt コマンドを使って、ドライブにパーティションを作ります。F は、USB フラッシュ ドライブの文字です。

 CreatePartitions.txt

以下のファイル内、下線つきの赤文字で強調した部分の指示に従って、System Partitionのsizeの値を100から260に変更します。以下はすでに該当部分を変更してあるファイルです。

rem == CreatePartitions-UEFI.txt ==
rem == These commands are used with DiskPart to
rem create five partitions
rem for a UEFI/GPT-based PC.
rem Adjust the partition sizes to fill the drive
rem as necessary. ==
select disk 0
clean
convert gpt
rem == 1. Windows RE tools partition ===============
create partition primary size=300
format quick fs=ntfs label="Windows RE tools"
assign letter="T"
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001
rem == 2. System partition =========================
create partition efi size=260
rem ** NOTE: For Advanced Format 4Kn drives,
rem change this value to size = 260 **
format quick fs=fat32 label="System"
assign letter="S"
rem == 3. Microsoft Reserved (MSR) partition =======
create partition msr size=128
rem == 4. Windows partition ========================
rem == a. Create the Windows partition ==========
create partition primary
rem == b. Create space for the recovery image ===
shrink minimum=15000
rem ** NOTE: Update this size to match the size
rem of the recovery image **
rem == c. Prepare the Windows partition =========
format quick fs=ntfs label="Windows"
assign letter="W"
rem === 5. Recovery image partition ================
create partition primary
format quick fs=ntfs label="Recovery image"
assign letter="R"
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001
list volume
exit

HDDのフォーマットを実行したあとになって、この .txtファイルを読み込ませればまとめて実行できる事に気がついたのですが、後の祭りでした。

このファイルを事前にUSBメモリ内におさめておけば、おそらく意図したとおりのパーティションができていると思います。

この便利なファイルに気が付かなかった私の場合は、インストーラのウィンドウを閉じると現れる画面(電源を切るか、それともツールを使うかみたいな内容)からツール、コマンドプロンプトを起動させ、一行一行丹精込めて、CreatePartitions.txtを手打ち実行しました。

 

で、BIOSの設定画面から起動順序を変更し、最初にUSBを読み込ませます。

ついでにこの時点で Secure Bootをオフにしておくと良いでしょう。

再起動後にはWindows10のUSBインストーラが起動するはずです。

あとはいつもどおり、カスタムインストール、プライマリパーティションを選択、インストール実行、しばらく放置。Cortanaが現れたらあとは支持に従ってください。

Windows10のインストールはこれで完了です。

 

次の作業に移る前に

  • 高速スタートアップを無効化

<コントロールパネル> <電源オプション> <カバーを閉じたときの動作> で高速スタートアップを無効化できます。

  • プライマリパーティションの縮小

Windows10がプライマリパーティションすべてを占領しているので、このままではArchLinuxをインストールすることができません。そこで、以下のようにしてプライマリパーティションを縮小します

  1. ディスクの管理を起動
  2. Windows:(C)を右クリック、<ボリュームの縮小>を選択
  3. 縮小する容量(つまりArchLinuxに割り当てるHDD/SSD容量)を決定
  4. 新しいボリュームを作成

1. <Win>+<X>  => <K> で起動

3. 私の場合は350GBをArchLinuxに割り当てました

4. 3のあとにできる<未割り当て領域>を右クリックして <新しいシンプルボリューム>を選択。ボリュームのサイズはおまかせします。ここで/homeと/root ( / のみでもあらわされるはず)用にボリュームを分割できると思いますが、私は失念していました。

<ドライブ文字またはドライブ パスを割り当てない>

<このボリュームをフォーマットしない>

で分割された、新しいプライマリパーティションを作成することができると思います。

 

設定すべき事項は以上です。

必要であれば今回の環境構築でお世話になった後述のリンクを参考にしてください。

 

ArchLinuxのLive USB作成

Windowsの設定が完了したらArchLinuxのLive USBを作成します。

ちなみにUSB一つしか持ってない人向けのアドバイスなんですが、ArchLinux Live USB作成前に、あらかじめWin32DiskImagerを使ってWindows 10 のインストールメディアをまるごとイメージファイル(.img)化してバックアップしておくと便利です。

  • 以下のArchLinuxの公式サイトから.isoファイルをダウンロードします。

Arch Linux JP Project - ダウンロード

  • 以下のArchWikiの記事に従ってインストールメデイアを作成します。

USB インストールメディア - ArchWiki

私の場合はRufusを利用しました。注意点はArchWikiに書かれているとおりです。

そこには

DD モードを選択しないとイメージの転送が正しく行われません。

とあります。DDモードの選択方法は以下のとおりです。

  1. プルダウンメニューからISOファイルを選択してArchLinuxのisoファイルを選択
  2. 下の方に  "archlinux-<日付>-x86_64.isoを選択中"と表示される
  3. プルダウンメニューからDDを選択
  4. DDモードでイメージをUSBメモリに書き込む設定完了、「スタート」
  5. 完成!

ArchLinux Live USBの起動

BIOSの設定でSecure BootがOFFになっていれば、ArchLinuxは上手く起動するはずです。

しかし私の場合、何度やっても起動しませんでした。

このような状態に陥った場合は以下のような手順を踏めばArchLinuxを起動できます。

  1. Windowsを起動
  2. Shiftキーを押しながら「再起動」をクリック
  3. 起動するデバイスを変更できる設定があるのでそこから「USB」を選択
  4. 勝手に再起動してUSBを読み込んでくれました

不測の事態が起きてもある程度ならなんとかなるのです。われわれはかしこいので。

ArchLinuxの設定

当然ながらまだ「めでた」くはないのです。Live USBを起動できただけなので。

続いて以下の複数のWebサイトを参考にして環境構築を実行しました。

単刀直入に言うと、ArchWikiは僕にとっては分かりづらかったです。

なお、パーティションについてはあまり自信がないのと、より適切な方法や好みによるやり方があるかもしれないのでおまかせします。一応、自分が実行した方法を記述します。

 

パーティションの設定、システムのインストールについては以下を参考にしました

qiita.com

>ここのコメント欄の orumin ってまさか…ねぇ?

 

ブートローダーの一つであるgrubについては以下を参考にしました

naro3.hatenablog.jp

 

途中で以下のようなエラーが出た際には以下のリンクの指示に従いました

WARNING: Failed to connect to lvmetad. Falling back to internal scanning.

既存の Linux からインストール - ArchWiki

 

GRUBWindowsが表示されなかったときは以下のリンクの対処法に従って解決しました

blog.livedoor.jp

 

とりあえずコマンドだけ。

キー配置指定。これをやっておかないとvimやvi、nanoのときに面倒になる。

# loadkeys jp106

 

パーティション設定

EFIはすでに作成済みなので変更や追加といった操作をしてはいけない。

 

# cfdisk

Freespaceを選択しNew, サイズを指定してパーティションを分ける

私の場合は /root は 64GB, /homeは250GB に指定して分けた。

それぞれのパーティションのTypeを変更して Linux root(x86_64) や Linux home を表示させる。こうするとfdisk -l のときに見やすい。

# fdisk -l 

で/dev/sda(番号) を確認しつつ、/root, /homeに割り当てた/dev/sda(番号)を以下のコマンドでext4でフォーマット。

# mkfs.ext4 (/root相当の/dev/sda)

# mkfs.ext4 (/home相当の/dev/sda)

# mount (/root相当の/dev/sda) /mnt

# mkdir /mnt/boot /mnt/home

# mount (TypeにEFIと書かれた/dev/sda) /mnt/boot

# mount (/home相当の/dev/sda) /mnt/home

パーティション設定は以上でおわり

 

無線LAN設定

# wifi-menu

周辺のアクセスポイントを検索して表示してくれる。SSIDを選択してパスワードを入れれば接続完了。

# ping -c 3 google.com

でインターネット接続を確認

# timedatectl set-ntp true

 

pacstarpのミラーサーバ設定

# vim /etc/pacman.d/mirrorlist

 

vim コマンド

  • コピー(ヤンク):(指定行) yy
  • ペースト:(指定回数) p
  • 最上部に移動:gg
  • 最下部に移動:G
  • 行削除(削除した行はクリップされてる):dd
  • 検索:/(検索語)
  • 次の検索結果:n
  • 前の検索結果:N
  • 保存--->  : wq
  • 保存せず終了---> :q
  • 保存せず強制終了---> :q!

を利用して、日本のミラーを最上位に持ってくる(筑波と理研

# pacstrap /mnt base base-devel zsh git dialog wpa_supplicant

# genfstab -p /mnt >> /mnt/etc/fstab

 

その他諸々の設定

# arch-chroot /mnt

 

echo computer_name > /etc/hostname

computer_nameはコンピュータの名前(そのまんま)

 

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

エラーが出たら -sにfを追加する。つまり、ln -sf で実行する。

多分forceのf。

 

# vi /etc/locale.gen

jp.JP_UTF-8、en.US_UTF-8のみコメントアウトを削除して保存

 

# locale-gen

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

# mkinitcpio -p linux

 

# passwd

rootのパスワードを設定

 

# pacman -Syy

パッケージ更新、Ubuntuでいう apt-get update

 

# pacman -S wireless_tools wpa_supplicant wpa_actiond dialog

パッケージ追加

 

GRUB

グラブってる?

 

# pacman -S grub dosfstools efibootmgr

パッケージ導入

 

# pacman -S intel-ucode

Intelアーキテクチャのマイクロコードのパッケージらしい

 

# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck

あなたとGRUB、基本無料、今すぐインストール

ここでefiの容量がWindowsインストーラがデフォルトの値として設定した100MBのままだと、efiの容量が足りないよといってエラーを吐く。最初の方からやり直しになる。efi、つまりシステムパーティションを260MBに拡張したのはこのため。

 

また

WARNING: Failed to connect to lvmetad. Falling back to internal scanning.

というエラーが表示された場合は

# vim /etc/lvm/lvm.conf

で、use_lvmetad の値を 1 から 0 に変更。

その後再度以下のコマンドを実行

# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck

 

 

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

grub-install でエラーが出てなければこのコマンドを実行。

 

 

と出ればめでたくインストール完了!

おめでとうございます!

では引き続き以下の手続きをお願いします!

 

# mkdir /boot/EFI/boot

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

 

Windowsとのデュアルブートなので、さらに以下を実行

# pacman -S os-prober

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

 

# exit

arch-chrootを抜ける

 

# umount -R /mnt

アンマウント

 

# reboot

再起動

 

さて、これで上手く行ったな、というのもつかの間。

再起動後の画面であることに気が付きました。

「あれれ~!?GRUBWindowsの選択肢がないよ!なんで~?!」

これに対しては

「大丈夫だいじょうぶ!まだGRUBWindowsのエントリ追加してないだけだから!」

って感じでした。

 

ArchLinuxを起動後、rootで、passwdで設定したパスワードを入力してarch-chrootに入ります。その後

# pacman -S lsb-release

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

を実行して再起動すればGRUBWindowsが追加されていると思います。

 

以上で私の現在までのデュアルブート環境構築を終わります。

お疲れ様でした。

 

ユーザーの追加等はArchWikiに従っておけばなんとかなります。

一般的な推奨事項 - ArchWiki

ただし、ユーザーの追加をめんどくさがって放置すると、デスクトップが表示されたときにログインができなくなるので注意しましょう、その際は <Ctrl>+<Alt>+<F2>を押せば強制的にCLIに戻ってrootにログインできます。

 

この文を書いている時点でUbuntuにしようと考えているので、以降の記述はとっても雑になります。

yaourtは便利です。

xwindow system等のインストールは忘れないでください。

KDE PlasmaやGNOMEXfce等色々あります。

ArchLinuxに関する雑感としては、

「自由、軽い、めんどくさい」

です。

普段は目に触れない動作を自分で行うことができる点は面白いですが、成功するまではかなりツラいさん状態が続きます。

また、デュアルブートは見ての通り面倒です。

古いPCで駆動させるには申し分ない軽さと自由さがあると思いました。

以上。

次の記事ではArchLinuxの削除とGRUBの起動阻止の方法を解説します