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

 

はじめに 

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

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

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

インストールに失敗したら?

Windowsのデータが残っていない場合

想定ケース

  • フォーマット対象のボリュームを間違えた、など

諦めて最初からやり直しましょう

 

Windowsのデータが残っている場合

以下の手順に従ってefiを初期化すれば、Windowsの起動ができる状態に回復できます

heruwakame.hatenablog.com

 

下準備

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

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

2018/11/10 追記 : 少なくともOffice及びVisual Studio系のライセンスはアンインストールしなくても問題なさそうです、Office 365の場合はWebブラウザでライセンス付与対象のコンピュータ名を編集、追加できますし、Visual Studioも問題なくライセンスを適用できます。

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

もちろん、以下のことも忘れないでください。失敗したときに非常に悲惨です。

  • データのバックアップ

別途UbuntuのLive USBを作っておけばデータ救出は容易かと思われます。

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

 

Windowsのインストール

2018/11/10 追記 : インストーラ任せで問題ありません

注意点:完全にインストーラ任せにしてはいけません。任せっきりでいると、またここからやり直しになってしまいます。 <-修正前の文章は長いので最後に書きます

 

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

A. 公式WikiWindowsが先です」

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

 

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

Windows 10 のダウンロード

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

www.atmarkit.co.jp

 

 

次の作業に移る前に、そのままではUSBからの起動ができないので

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

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

 

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

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を読み込んでくれました

下ごしらえ

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

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

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

 

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

qiita.com

 

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

naro3.hatenablog.jp

 

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

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

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

 

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

blog.livedoor.jp

 

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

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

前者は一時的な設定、後者は永続的な設定

Live USB起動時とインストール後の最初の一回の計二回必要になる操作

loadkeys jp106

localectl set-keymap --no-convert jp106

 

パーティション設定

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

cfdisk

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

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

2018/11/10 変更 : 面倒なので空き容量を全部 Linux root (x86_64) を割り当てた

 

それぞれのパーティションの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設定

ステルスSSIDを未知であるパターンは早々ないでしょうから…

ステルスSSID既知の場合

WPA supplicant - ArchWiki

ステルスSSIDの場合はwifi-menuでは見つからない

wpa_passphrase (SSID) (password) > /etc/wpa_supplicant/wpa_supplicant.conf

vim  /etc/wpa_supplicant/wpa_supplicant.conf

 

network内に scan_ssid=1 を追加

wpa_supplicant -B -i (interface )-c /etc/wpa_supplicant/wpa_supplicant.conf

dhcpcd (interface)

(ついでに以下でnetctl-autoの設定)

cp /etc/netctl/example/wireless-wpa /etc/netctl/setting_script

vi /etc/netctl/setting_script

setting_script内では設定対象のデバイスと、接続先のSSIDとパスワードを記述する

以下で起動のたびに自動的に接続する

(複数のsetting_scriptを記述したら、それらの接続を検討してくれるのだろうか?要検証)

systemctl enable netctl-auto@interface.service

 

でOK

ステルスSSIDでない場合

wifi-menu

周辺のアクセスポイントを検索して表示してくれる。

SSIDを選択してパスワードを入れれば接続完了。

Wifi設定共通

ping -c 3 google.com

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

接続まで少し時間がかかるので何回か繰り返してみるとよい。

以下でntpサーバと同期、時刻合わせを行う。

timedatectl set-ntp true

 

pacstarpのミラーサーバ設定

Vimがない場合はviで代用する、その他編集方法はお好みで。

vim /etc/pacman.d/mirrorlist

 

vim コマンド

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

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

(pacstrap : マウント先に 指定したパッケージをインストールする仕組み?)

pacstrap /mnt base base-devel bash git dialog wpa_supplicant iw

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

 

その他諸々の設定

arch-chroot /mnt

 

コンピュータの名前(computer_nameは任意)

echo computer_name > /etc/hostname

タイムゾーン設定

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

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

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

vi /etc/locale.gen

ロケール設定を適用

locale-gen

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

mkinitcpio -p linux

rootのパスワードを設定

passwd

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

pacman -Syy

パッケージ追加

pacman -S wireless_tools wpa_supplicant wpa_actiond dialog

 

GRUB

関連パッケージ導入

pacman -S grub dosfstools efibootmgr

 

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

pacman -S intel-ucode

grubインストール

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

2018/11/10 追記 : ↓そうでもなかった

ここで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の操作でエラーが出てず、以下の表示があればひとまずインストール完了

Installing for x86\_64-efi platform.Installation finished. No error reported.

 

続いてgrubの設定に移る

 

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

arch-chrootを抜ける

exit

アンマウント 

umount -R /mnt

再起動 

reboot

 

この再起動後に、Windows OSがgrubの選択肢に現れなくても大丈夫です。

以下でgrubWindows OSを設定してもらいます。

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

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

キーボード配列の永続的な設定については

localectl set-keymap --no-convert jp106

インターネットにつながっていない場合はもう一度無線LAN設定の項を参照して実行してください。

pacman -S lsb-release

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

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

お疲れ様でした。

 

本番

2018/11/10 追記

やるべきこと:キーボード配列固定化設定、無線LANネットワーク自動接続、GNOME設定、GNOMEの日本語

GUIの導入

 

ユーザの追加

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

一般的な推奨事項 - ArchWiki

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

以下でユーザを追加, パスワードを設定 : archie -> 任意のユーザ名

useradd -m -G wheel -s /bin/bash archie

passwd archie

wheelの権限変更 : 1つ目の記事より引用

visudo

...

## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL ←先頭の#を削除する。
...

bashのタブ補完機能強化

pacman -S bash-completion

グラフィックカードのドライバ導入

lspci | grep VGA

pacman -S xf86-video-intel

 Xorgの導入

pacman -S xorg-server xorg-apps xorg-xinit mesa xorg-twm xorg-xclock xterm

動作確認

startx

 

GNOME, 設定がめんどい…Xfceを試すわ…

GNOMEを導入します

参考ページ

www.archlinux.site

nersonu.hatenablog.com

 

GNOME導入

pacman -S gnome gnome-extra

オプションはとりあえずallを選択、ttfはご自由に

 

GNOME自動起動させる

systemctl enable gdm

再起動

reboot

 

トラブルシュート
  • gnome-terminalが動かない場合

Locale周りが非常に怪しい

unix.stackexchange.com

 

日本語入力周り

日本語キーボード

デフォルトでは日本語キーボード入力がうまくいかない

GNOMEのsetting->Language(?言語設定系)->入力方法をUSからJapaneseを先頭に持ってくる

detail.chiebukuro.yahoo.co.jp

日本語入力メソッド

fcitx, fcitx-mozcを利用

pacman -S fcitx fcitx-mozc fcitx-configtool fcitx-im

Fcitx - ArchWiki

Mozc - ArchWiki

フォント導入

個人的にUbuntuのTakaoフォントが大好き、導入のためにはAURが必要

yaourtはoutdatedです、ほかのものを使いましょう

  • aurman : メンテナンス停止、aurコメント欄にはyayがおすすめと書いてある
  • yay : どうも一番人気らしい?

github.com

git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si 

 

補遺

旧版の記述

Windows10インストール時の設定

で、パーティションはデフォルトだとあとあと不都合が生じるので、以下の手順に従ってパーティションを変更します。特に、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のインストールはこれで完了です。