0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Arch Linux Windos Dualboot

Last updated at Posted at 2021-02-21

概要

WindowsとLinux(Ubuntu)のデュアルブートでThinkPadE470を運用していたが、Ubuntuが最近重い感じる場面があり、またSPARKを用いた環境を研究で使うため構築していたが不要になったため心機一転ArchLinuxとi3wmを用いた環境を構築しようと考えた。

事前準備

今回自身の環境(実機インストールの際)で成功した物を記す。

  • BIOSでセキュアーブートをOFFにする
  • Windows10の高速スタートアップをOFFにする
  • (arch用の)パーティションをWindows10のパーティションツールで作る
  • インストールメディア(USB)の作成

環境の確認

BIOSからboot順位をいじりUSB(インストールメディア)を最上位にする

PCの環境がBIOSかUEFIかパーティションテーブルがMBRかGPTかを確かめる

BIOS or UEFI

"/sys/firmware/efi"が存在するか調べる(存在したらUEFI)

MBR or GPT
$ parted /dev/sdx print

で確認できる。(sdxのxは適宜自身で読み替えてほしい(一般的にはsda))

自身の環境はUEFIとGPTだった!!

言語の選択

キーボードレイアウトの変更
$ loadkeys jp106
ロケールの変更
$ nano /etc/locale.gen

"en_US.UTF-8 UTF-8"と"ja_JP.UTF-8 UTF-8"のコメントから外す

$ locale-gen
$ export LANG=en_US.UTF-8

arch wikiだと"ja_JP"だが、文字化けするため、一通り終わるまでは"en_US"にしておく

インターネットの接続(無線)

有線だと何もせずにつながるらしい
無線の場合の接続方法を記述する(iwd使用)


$ iwctl

##### ここから下はiwdシェル
# デバイス(インターフェイス)の確認
$ device list

# wlan0が出るはず(自分は出なくて最初からインストールやり直した)

# ネットワークのスキャン
$ station wlan0 scan

# ネットワーク一覧
$ station wlan0 get-networks

# SSIDを指定し、ネットワーク接続
$ station wlan0 connect <SSID>

# パスフレーズの入力し接続

# iwdを抜ける
$ exit
#### ここまでiwdシェル

インターネットに接続しているかを調べるには以下のどちらかで確認できる

# ping -c 3 www.google.com
# ping -c 3 8.8.8.8

時計を合わせる

NTPサーバとの同期

$ timedatectl set-ntp true

ドライブの準備

ここが最重要

デバイスの確認

以下のコマンドでデバイス(パーテション)をすべて確認する

$ lsblk

インストール可能なデバイスは以下のコマンドで確認できる

$ lsblk | grep -v "rom\|loop\|airroot"

上述したようにsdxという表現を使うが、適宜自分で置き換えるように!!
また、目指すのはデュアルブートのため、パーティションは複数あるが、windows10のパーティションとリカバリー領域などのパーティションは触らないように(下手に触るとwindowsデータが消えたり、回復ができなくなる)

新しいパーティションテーブルの作成

パーティションは下記のコマンドで作成した(グラフィッカルな感じで使いやすい)

$ cfdisk /dev/sdx

必要なパーティションは下記の4つ

  • /boot
  • /
  • swap
  • /home

ただし、今回windows10によってEFIブートパーティションが存在するため、下記の3つのみパーティションを作る。(空いているパーティションはFree Spaceって表示されている)

  • /:20G
  • swap:8G
  • /home:180G(Free Spaceの残り)
ファイルシステムの作成

以下のコマンドで正しくパーティションが用意できたか確認する

$ lsblk /sda/sdx

/(自分だとsda5)と/home(自分だとsda7)のファイルシステムを作成する。よく使われているext4を使用した

$ mkfs.ext4 /dev/sdxY
##### 自分だと下記のコマンド
$ mkfs.ext4 /dev/sda5
$ mkfs.ext4 /dev/sda7 
swapの有効化

swapパーティションの有効化

$ mkswap /dev/sdxY
$ swapon /dev/sdxY
パーティションのマウント

まず最初に/をマウントし、次に/bootと/homeをマウントする。/bootに関してはすでに存在しているEFIブートパーティションを用いる。

$ mount /dev/sdxR /mnt
$ mkdir -p /mnt/boot/efi
$ mount /dev/sdxB /mnt/boot/efi #今回作成したパーティションでなく以前からあるはず
$ mkdir -p /mnt/home
$ mount /dev/sdxH /mnt/home

インストール

ミラーの選択

今回は日本のミラーが最上位に存在したため変更しなかった。
もし変更するなら下記のコードで

$ nano /etc/pacman.d/mirrorlist
インストール
$ pacstrap /mnt base base-devel linux linux-firmware

多分、少し時間かかる

fstab作成

fstabを知らなかったので軽く調べたら、マウントに関することを記述してあるファイルらしい。

$ genfstab -U /mnt >> /mnt/etc/fstab

システム内の諸設定

chrootでシステムに入る
$ arch-chroot /mnt /bin/bash

多分、ここからキーボードがusに変わっていると思う
一時的だけど下記のコマンドを打てばjpで使える

$ loadkeys jp106

いろいろ必要なものをインストールする

$ pacman -Syy
$ pacman -S nano iwd
ロケールの設定
$ nano /etc/locale.gen

"en_US.UTF-8 UTF-8"と"ja_JP.UTF-8 UTF-8"のコメントから外す

$ locale-gen
$ echo LANG=en_US.UTF-8 > /etc/locale.conf
$ export LANG=en_US.UTF-8
コンソールフォントとキーマップ
$ nano /etc/vconsole.conf

##### 以下/etc/vconsole.confに記入
KEYMAP=jp106
FONT=lat9w-16
タイムゾーンの設定

hwclockでハードウェアクロックも設定
現在、arch側の時計の時間がずれている(dualbootによるwindowsとarchの時間のとり方による違いだと考える) 
一応、windows側の時間がずれていないためこのまま進めた

$ ln -sf /usr/share/zoneinfo/Asia/Tokyo /eetc/localtime
$ hwclock --systohc --utc
hostname

psp3000というhostnameにした

$ echo psp3000 > /etc/hostname
$ nano /etc/hosts
##### 以下/etc/hostsに追加
127.0.0.1	localhost
::1		localhost
127.0.1.1	psp3000.localdomain	psp3000
rootパスワード設定
$ passwd
ブートローダのインストール
$ pacman -S grub efibootmgr intel-ucode
$ grub-install --target=x86_64-efi --efi-directory=/boot/efi --boot-directory=/boot/efi/EFI --bootloader-id=grub --recheck --debug
$ grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg
chrootを抜ける
$ exit
アンマウントして再起動
$ umount -R /mnt
$ reboot

再起動するとGRUBからArchを起動できる。しかし、GRUBにwindowsが載っていない。(後ろで設定するためこのまま進める)
Archに入ってrootでログイン

ネットワークの再設定

この時点でネットワークに接続できていないので設定する必要がある
systemd-networkd+iwdを使う
まず、systemd-networkd関連のサービスを有効化・起動しておく

$ systemctl enable systemd-networkd
$ systemctl start systemd-networkd

$ systemctl enable systemd-resolved
$ systemctl start systemd-resolved

# /etc/resolv.confにシンボリックリンクを設定
$ mv /etc/resolv.conf /etc/resolv.conf.bak
$ ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

同様にiwdも有効化・起動しておく

$ systemctl enable iwd
$ systemctl start iwd

$ iwctl

##### ここからiwdシェル
device list

# wlan0が出るので、以下これで設定する

station wlan0 scan
station wlan0 get-networks
station wlan0 connect <SSID>
exit
##### ここまでiwdシェル

ここまでやるとip aでwlan0に設定されているが、まだpingは通らない

"/etc/systemd/networkd/25-wireless.network"を作成し、以下のように記述

[Match]
Name=wlan0
[Network]
DHCP=yes

systemd-networkd再起動でネットワーク接続完了

$ systemctl restart systemd-networkd
# 接続確認
$ ping -c 3 8.8.8.8

iwd-ArchWikiによると、起動時に接続失敗する話があるためサービスの起動順位を設定しておく。

$ mkdir /etc/systemd/system/iwd.service.d
$ touch /etc/systemd/system/iwd.service.d/override.conf

"/etc/systemd/system/iwd.service.d/override.conf"に以下のように記述

[Unit]
After=systemd-udevd.service systemd-networkd.service

再起動し、ログイン後に再度pingして、ネットワーク接続できているか確認。

Windowsとのデュアルブート

$ pacman -S os-prober
$ grub-mkconfig -o /boot/efi/EFI/grub.cfg

再起動し、WindowsとArchが両方起動できることの確認

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?