メインメニューを開く

ArchLinuxのインストール

2020年2月14日 (金) 17:11時点におけるRin-scrooge (トーク | 投稿記録)による版 (→‎ネットワークの有効化)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

イメージのダウンロード

先ずは「Arch Linux JP Project」をブラウザで開きます。
以下の画面が表示されるので、右上の「ダウンロード」をクリックします。
 


「HTTP で直接ダウンロード (推奨)」の日本のサーバーから適当なサーバーをクリックします。
 


ディレクトリの内容が表示されたら「*.iso」ファイルをクリックして、ダウンロードします。
 

USBの作成

今回はインストールメディアにUSBメモリを使用しました。

  1. ISOファイルをUSBに展開する
    適切な表現かどうかはおいといて…ISOファイルをUSBに展開する。
    私の場合、WindowsPCでツールを使用した。ツールは「Rufus」を使用しました。
    (手元にツールが無いので説明は割愛します…ググってください…すみません…)

  2. Lattepandaに差し込む
    USBポートが3つあるのはありがたい(他2つにはキーボードとマウスをつなぐ)

UEFIの設定確認

インストールを開始する前に、UEFIの設定を確認します。
Latttepamda起動時に「Deleteキー」を連打して、UEFIのメニューに入ります。

セキュアブートの無効化

セキュアブートはLinuxの世界ではまだ一般的では無いと思うので、セキュアブートを使用しない方向でインストールしていきます。
UEFIメニューで「Security」を選択します。
 


「Security」画面で「Secure Boot Menu」を選択します。
 


「Secure Boot Menu」画面で「Secure Boot」が「Disabled」になっていることを確認します。
「Disabled」になっていない場合は、「Disabled」に変更します
(画面見づらくてスミマセン…)
 


ファーストブートの無効化とブートデバイスの順番

ファーストブートとブートデバイスの設定を確認します。
画面上部のメニューから「Boot」を選択します。
「Boot」画面中程の「Fast Boot」が「Disabled」になっていることを確認します。
「Disabled」になっていない場合は、「Disabled」に変更します

次に「起動順」の確認です。
「Boot」画面下部の「Boot Option Priorities」の順番で、「Boot Option #1」にUSBメモリーが来るように設定します。
(画面はUSBを刺さずに取ったので、USBメモリが表示されていません…スミマセン)
 


保存して起動

最後に「F4」キーを押して、保存してメニューを終了させます。


USBから起動

UEFIのメニューを終了すると、起動が始まります。
起動すると、以下の画面が表示されます。
この画面で「Arch Linux archiso x86_64 UEFI USB」を選択します。
 

しばらく真っ黒な画面が続きますが、根気よく待ち続けます…。
しばらくすると、以下の画面が表示されます。
 

この状態はいわゆる「ライブ起動(インストール無しで起動)」の状態です。
この状態から、インストールしていきます。

インストール

キーボード設定

今の状態は「英字キーボード」になっています。
英字キーボードを使用している人はそのままでも良いですが、日本語キーボードを使用してい人は記号の入力で手間取るので、日本語キーボードに切り替えます。
以下のコマンドで選択できるキーボードの一覧を表示することが出来ます…(一覧見たからなんなんだって感じですが…)。

ls /usr/share/kbd/keymaps/**/*.map.gz

キーボードのロードは以下のコマンドを実行します。

loadkeys jp106

UEFIかどうか確認

LattapnadaはネイティブUEFIなのでこの作業は不要です…。

ls /sys/firmware/efi/efivars

このコマンドでnot foundにならなければ「UEFI」で起動されています。

パーティション作成

以下の手順はまっさらなHDDにインストールする手順になっちゃってます。
パーティションが作成済みの場合は、パーティションを削除してから作業してください。

まず、以下のコマンドでデバイス名を確認します。

fdisk -l


こんな感じで、表示されます。(ちょっと表示が違うかもです…)

ディスク /dev/mmcblk0: 64 GiB, 68719476736 バイト, 134217728 セクタ
ディスク型式: HARDDISK        
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

大概「/dev/mmcblk0」になっているかと思います。


以下のコマンドで「/dev/mmcblk0」にパーティションを作成していきます。

fdisk /dev/mmcblk0


「fdisk」コマンドは対話型で起動します。
操作の一覧は「m」で見ることが出来ます。

Command (m for help): m

Help:

  DOS (MBR)
   a   toggle a bootable flag
   b   edit nested BSD disklabel
   c   toggle the dos compatibility flag

  Generic
   d   delete a partition
   F   list free unpartitioned space
   l   list known partition types
   n   add a new partition
   p   print the partition table
   t   change a partition type
   v   verify the partition table
   i   print information about a partition

  Misc
   m   print this menu
   u   change display/entry units
   x   extra functionality (experts only)

  Script
   I   load disk layout from sfdisk script file
   O   dump disk layout to sfdisk script file

  Save & Exit
   w   write table to disk and exit
   q   quit without saving changes

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table


今後主流になる可能性が高いGPTでパーティションテーブルを作成します。
GPTでパーティションテーブルを作成する場合は「g」を入力します。

Command (m for help): g

Created a new GPT disklabel (GUID: 2FA51CB3-DEF4-6645-9B9B-26EA9C143903).


次にパーティションを作成していきます。
Windowsの場合はこだわりが無い限り、パーティション分割はしないものですが…
Linuxでは普通にパーティション分割します。

以下のパーティション分割は、初心者向けになっています。
こだわりがある方は、自由に分割して良いかと思います。

今回は以下のパーティション作成します。

/dev/mmcblk0p1
EFI用パーティション(512MByte)
/dev/mmcblk0p2
システム用パーティション(64GByte - 512MByte - 4GByte)
/dev/mmcblk0p3
スワップ用パーティション(4GByte)

まず、UEFI用のパーティションを512MByteで作成します。
パーティションの作成は「n」で行います。

Command (m for help): n
Partition number (1-128, default 1):
First sector (2048-134217694, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-134217694, default 134217694): +512M

Created a new partition 2 of type 'Linux filesystem' and of size 512 MiB.

次に、システム用パーティションを「残りの容量 - 4GByte」で作成します。

Command (m for help): n
Partition number (1,3-128, default 2): 
First sector (1050624-134217694, default 1050624): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-134217694, default 134217694): -4G

Created a new partition 1 of type 'Linux filesystem' and of size 59.5 GiB.

最後に、スワップ用パーティションを4GByteで作成します。

Command (m for help): n
Partition number (3-128, default 3): 
First sector (125829120-134217694, default 125829120): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (125829120-134217694, default 134217694): 

Created a new partition 3 of type 'Linux filesystem' and of size 4 GiB.

それぞれの目的に合わせてパーティションタイプを設定します。
設定できるパーティションタイプは「l」で確認することが出来ます。
リストから抜ける場合は「q」を押します。


「/dev/mmcblk0p1」はUEFI用パーティションなので、「EFI System」を設定します。
パーティションタイプの設定は「t」で行います。

Command (m for help): t
Partition number (1-3, default 3): 1
Partition type (type L to list all types): 1

Changed type of partition 'Linux filesystem' to 'EFI System'.

「/dev/mmcblk0p3」はスワップ用パーティションなので、「Linux swap」を設定します。

Command (m for help): t
Partition number (1-3, default 3): 3
Partition type (type L to list all types): 19

Changed type of partition 'Linux filesystem' to 'Linux swap'.

「/dev/mmcblk0p2」を設定していませんが、デフォルトで「Linux File System」なので特に変更しません。

最後に、これまで設定した内容をHDDに書き込みます。
HDDへの書き込みは「w」で行います。

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

フォーマット

各パーティションを利用できるようにするために、フォーマットしていきます。
使用目的によって、フォーマットのやり方が異なります。

UEFI領域のフォーマットは、以下のコマンドで、FAT32にフォーマットします。

mkfs.fat -F32 /dev/mmcblk0p1

システム領域は以下のコマンドで、ext4にフォーマットします。

mkfs.ext4 /dev/mmcblk0p2

スワップ領域は以下のコマンドで、swap領域に設定します。

mkswap /dev/mmcblk0p3
swapon /dev/mmcblk0p3

マウント

フォーマットが終わったら、HDDをマウントします。
ここはAcrhLinuxのインストールガイドに則り、以下のコマンドで「/mnt」にマウントします。

mount /dev/mmcblk0p2 /mnt

UEFI領域は「/mnt/boot」にマウントします。

mkdir /mnt/boot
mount /dev/mmcblk0p1 /mnt/boot

システムクロックの設定

よくわからないのですが…www
システムクロックの設定をします。
(ntpを使用するように設定しているのかな?)

timedatectl set-ntp true


ミラーサイトの設定

「/etc/pacman.d/mirrorlist」を編集して、ミラーサイトを設定します。
どうやらデフォルトで「nano」が入っているようなので、nanoで編集します

nano /etc/pacman.d/mirrorlist

すごい量が表示されるかと思います。
日本のミラーサイトは3つ登録されていますので、それを最上位(ファイルの先頭)に移動します。


プロキシが必要なら設定

プロキシ配下でインストールしている場合は、ここでプロキシの設定をしておきます。
以下のコマンドで、プロキシの環境変数を設定します。

export HTTP_PROXY=[userid]:[password]@[host]:[port]
export HTTPS_PROXY=[userid]:[password]@[host]:[port]
export http_proxy=[userid]:[password]@[host]:[port]
export https_proxy=[userid]:[password]@[host]:[port]

[userid][password][host][port]はそれぞれ、実際の値に置き換えてください。
パスワードやユーザーIDに「@」が含まれる場合は「%40」に置き換えます。
(その他記号も置き換える必要があります。詳しくはググってください)

ベースシステムのインストール

ようやくインストールです。
以下のコマンドを実行して、HDDにArchLinuxをインストールしてください。

pacstrap /mnt base linux linux-firmware

エラーになった場合

リポジトリのキーが古い場合、pacstrapでエラーになることがあります。
(特に古いisoを使用している場合だと思います)


その場合以下のコマンドを実行して、リポジトリのキーを最新化してからpacstrapしてみてください。

pacman -Sy archlinux-keyring

システム設定

fstabの作成

以下のコマンドを実行して、システム起動時のパーティションマウントを設定します。

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

この作業で、再起動後「/dev/mmcblk0p2」がルートディレクトリになります。

一時的にルートディレクトリを変更

この後の設定のために、ルートディレクトリを変更します。

arch-chroot /mnt

エディタのインストール

以下のコマンドを実行して、エディタをインストールします。

pacman -S nano

タイムゾーンの設定

以下のコマンドを実行して、タイムゾーンを設定します。

ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
hwclock --systohc --utc

ロケールの設定

「/etc/locale.gen」を編集して、利用するロケールを選択します。
「nano」で「/etc/locale.gen」を開いて、「en_US.UTF-8 UTF-8」と「ja_JP.UTF-8 UTF-8」をコメントアウトします。

nano /etc/locale.gen

編集後、以下のコマンドを実行して、ロケール等を反映します。

locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
echo KEYMAP=jp106 > /etc/vconsole.conf

ホストネームの設定

以下のコマンドを実行して、ホストネームを設定します。

echo [hostname] > /etc/hostname

[hostname]は実際に合わせて置き換えてください。

また、以下の様に「hosts」ファイルを編集します。

nano /etc/hosts

内容は以下のとおりです。

127.0.0.1	localhost
::1		localhost
127.0.1.1	[hostname].localdomain	[hostname]

rootパスワードの変更

rootアカウントのパスワードを変更します。

passwd


マイクロコードのインストール

LattepandはIntelのCPUを使用しているので、以下のコマンドを実行してマイクロコードをインストールします。

pacman -S intel-ucode

GRUBのインストール

以下のコマンドを実行して、GRUBブートローダーとEFIブートマネージャーをインストールします。

pacman -S grub
pacman -S efibootmgr

また、以下のコマンドでArchLinuxをGRUBに登録します。

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

(bootlorder-idをbootに修正しました)

以下のコマンドを実行して、GRUBの設定ファイルを生成します。

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

chrootから抜ける

chroot内の作業が終わりましたので、以下のコマンドで抜けます。

exit

アンマウント

「fstab」に設定済みなので、再起動後は「/mnt」のマウントが不要になります。
なので、「/mnt」を、以下のコマンドでアンマウントします。
(と言っても、再起動した時点でアンマウントされるのですが…)

umount -R /mnt

再起動

USBメモリを外したいので、再起動と言いつつ以下のコマンドでシャットダウンします。

shutdown -h now

USBメモリの取り外しと起動

シャットダウンしたら、USBの取り外します。
電源ボタンを押して、Lattepandaを起動します。

ログイン

ログイン画面が表示されたらログインします。
ユーザーIDは「root」で、パスワードはインストールで設定したパスワードです。

ネットワークの有効化

デフォルトではネットワークが自動で起動しないようになっています。
ネットワークを自動で有効になるように設定します。

先ずは以下のコマンドを実行してNICのデバイス名を取得します。

ip a

こんなふうに表示されるかと思います。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s20u4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:e0:4c:36:be:7f brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.11/24 brd 192.168.11.255 scope global enp0s20u4
       valid_lft forever preferred_lft forever
    inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr 
       valid_lft 86391sec preferred_lft 14391sec
    inet6 fe80::2e0:4cff:fe36:be7f/64 scope link 
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 18:bb:26:a9:a1:0e brd ff:ff:ff:ff:ff:ff

「lo」じゃないほうがデバイス名です(この場合「enp0s20u4」です)。

そしたら以下のコマンドで、定義ファイルを作成します。

nano /etc/systemd/network/enp0s20u4.network

ファイルの中身は以下のとおりです。


【DHCPの場合】

[Match]
Name=enp0s20u4

[Network]
DHCP=ipv4
DNS=8.8.8.8
DNS=8.8.4.4


【固定IPの場合】

[Match]
Name=enp0s20u4

[Network]
Address=192.168.56.11/24
Gateway=192.168.56.1
DNS=8.8.8.8
DNS=8.8.4.4


systemd-networkdは「/etc/resolv.conf」を書き直しせず、「/run/systemd/resolve/resolv.con」を書き直します。
なので、「/etc/resolv.conf」をリネームして、「/etc」に「/run/systemd/resolve/resolv.con」のシンボリックリンクを張ります。

コマンドは以下の通りです。

ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf


設定が完了したらsystemd-networkdとsystemd-resolvedを起動&有効化します。

systemctl start systemd-networkd
systemctl start systemd-resolved
systemctl enable systemd-networkd
systemctl enable systemd-resolved

参考サイト