Arch Linux初心者奮闘記

# 0. はじめに
 はじめまして。イノユウと申します。Qiitaの記事を書くのは初めてです。至らない点や間違ったことを書いてしまっているかもしれませんが、よろしくお願いします。
 この記事は<a href="https://qiita.com/advent-calendar/2024/tuat">農工大アドベントカレンダー</a>12/22の記事です。

# 1. 事の始まり
　某おじい3がVimで遊んでいたり、某u○○○○○○○さんがゲーミングノートにArch Linuxを入れて遊んでいるのを見て、「俺もあれで遊びたいな〜」って思ったのがきっかけで、Arch Linuxに手を出してみました。

# 2. SSD購入&パーティション作成
　今回Arch LinuxをインストールするにあたってSSDを新調しました。

![IMG_7689.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900284/a0286fe8-2e56-2fc9-5065-8070490bf420.jpeg)




 ちっちゃい。
 このサイズ感で500GBあるの普通にすごいなって思いました。

 新品のSSDをPCに繋いだら、Arch Linuxのインストールメディアを差し込みます。
 するとこんな感じのシェルが表示されます。
 このままだとJP配列のキーボードが正しく認識されず、「_」や「~」が正しく入力できません。レイアウトをJP配列にするために、まずはじめに以下のコマンドを打ち込みます。
 
 ```:shell 
 root@archiso~ # loadkeys jp106
 ```
 
 これでJP配列のキーボードを正しく認識してくれます。
 いよいよパーティションを作成します。まずは```lsblk```コマンドで認識されているドライブ(パーティション)を確認します。
  ```:shell 
 root@archiso~ # lsblk
 NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    0   1.8T  0 disk 
├─sda1        8:1    0   579M  0 part 
└─sda2        8:2    0   1.8T  0 part 
(以下省略)
 ```
  上の例では「sda」が物理的なドライブ、「sda1」「sda2」が「sda」内のパーティションになります。自身の用意したのドライブの容量と照らし合わせて、どのドライブがインストールしたいドライブか **よく** 確認してください。 **間違えると最悪既存のドライブのデータが消えます。**
  ドライブ名を確認したら、以下のコマンドでパーティション設定を行います。以下では、ドライブの名称を「[Your Drive Name]」とします。
 ```:shell 
 root@archiso~ # fdisk /dev/[Your Drive Name]
 Command (m for help): 
 ```

参考までに、私のパーティション構成を載せておきます。
|パーティションカテゴリ |容量|
|--------------------|-----|
|UEFI Boot Partition | 1GB |
|Root Partition | 456GB |
|Swap Partition | 8GB |

 UEFI Boot partitionは1GB、Swap Partitonはメモリ容量の半分、Root Partitionは余りって感じで割り当てました。以下では、上の構成を再現するために実行するコマンドを示します。
「n」を押下してUEFI用の新しいパーティションを作成します。
 ```:shell
Command (m for help): n
Partition number (1-128, default 1):  //何も入力せずEnter
First sector (***-***, default = ***) or {+-}size{KMGTP}: 
Last sector (***-***, default = ***) or {+-}size{KMGTP}: 1G
Hex code or GUID (L to show codes, Enter = 8300): ef00
 ```
 次に、システムパーティションを作成します。スワップパーティションの容量が関係してきます。
```:shell
Command (m for help): n
Partition number (1-128, default 1): //何も入力せずEnter
First sector (***-***, default = ***) or {+-}size{KMGTP}: //何も入力せずEnter
Last sector (***-***, default = ***) or {+-}size{KMGTP}: -8G
Hex code or GUID (L to show codes, Enter = 8300): //何も入力せずEnter
 ```
 最後にスワップパーティションを作成します。
 ```:shell
Command (m for help): n
Partition number (1-128, default 1): //何も入力せずEnter
First sector (***-***, default = ***) or {+-}size{KMGTP}: //何も入力せずEnter
Last sector (***-***, default = ***) or {+-}size{KMGTP}: //何も入力せずEnter
Hex code or GUID (L to show codes, Enter = 8300): 8200
 ```
 変更を反映します。
  ```:shell
Command (m for help): w
 ```
 ここで、出来上がったパーティションを確認しましょう。
 ```:shell
root@archiso~ # lsblk
(略)
sdb           8:16   0 465.8G  0 disk 
├─sdb1        8:17   0     1G  0 part /boot
├─sdb2        8:18   0 456.8G  0 part /
└─sdb3        8:19   0     8G  0 part [SWAP]
(略)
 ```
 上で言う「sdb1」(右に/bootと書いてあるもの)がUEFIパーティション、「sdb2」(右に/と書いてあるもの)がルートパーティション、「sdb3」(右に[SWAP]と書いてあるもの)がスワップ用パーティションです。
   作ったパーティションをフォーマットします。
```:shell
//UEFI パーティションをフォーマット
root@archiso~ # mkfs.fat -F32 /dev/sdb1
```

```:shell
//ルートパーティションをフォーマット
root@archiso~ # mkfs.ext4 /dev/sdb2
```

```:shell
//スワップパーティションを有効化
root@archiso~ # swapon /dev/sdb3
```

これでパーティションが完成です。
  
# 3. ネットワーク設定
 次に、無線LANの設定をします。このときの設定はあくまでインストールのための一時的なもので、インストール後は別で設定が必要になります。
 まず、以下のコマンドでネットワークデバイスの一覧を確認します。
 ```:shell 
 root@archiso~ # ip link
 ```
 「wlan〜」とか「wlp〜」が無線LANデバイスです。ここで得られたデバイス名を後で使います。(今後「[Your Device Name]」と表現します。)
 はじめのうちはこんな感じの出力になっていると思います。
 
  ```c:shell 
 root@archiso~ # ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether ***
    altname ***
    altname ***
+ 3: wlp3s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN mode DORMANT group default qlen 1000
    link/ether ***
    altname ***
 ```
　stateがDOWNになっています。ネットワークに接続されていないということです。
  無線LANの設定には```wpa_supplicant```を使います。以下の要領で```wpa_supplicant-[Your Device name].conf```を作成します。
```:/etc/wpa_supplicnat/wpa_supplicant.conf
ctrl_interface=/run/wpa_supplicant
update_config=1
```
次に、この設定を読み込んでもらうために、以下のコマンドを実行します
 ```:shell 
root@archiso~ # wpa_supplicant -B -i [Your Device name] -c /etc/wpa_supplicnat/wpa_supplicant-[Your Device name].conf
 ```
これが終わったら、次に```wpa_cli```を使ってwネットワークのSSIDやパスワードを設定します。
```:shell 
 root@archiso~ # wpa_cli
 wpa_cli v2.11-hostap_2_11+
Copyright (c) 2004-2024, Jouni Malinen <j@w1.fi> and contributors

This software may be distributed under the terms of the BSD license.
See README for more details.


Selected interface '[Your Device name]'

Interactive mode

>
 ```
 こんな感じの対話型シェルが起動するので、以下のようにコマンドを入力します。
 ```c :wpa_cli
> add_network
0
> set_network 0 ssid "[Your SSID]"
> set_network 0 psk "[Your passphrase]"
> enable_network 0
<2>CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (reauth) [id=0 id_str=]
> save_config
OK
>quit
 ```
これで、もう一度最初に実行したコマンドを入力して、ネットワーク接続を確認してみます。
  ```:shell 
 root@archiso~ # ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether ***
    altname ***
    altname ***
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether ***
    altname ***
 ```
 ネットワークに繋がりました。
次に、DHCPの設定をします。以下のコマンドを実行します
```:shell 
 root@archiso~ # dhcpcd [Your Device Name]
 ```
なんかいい感じになります。
最後に```ping```コマンドで名前解決を含めたネットワーク接続がうまく行っているかを確認します。
```:shell 
 root@archiso~ # ping google.com
 ```
 「〜ms」みたいなのがいっぱい出てきたらうまく行ってます。```^C```で止まります。

# 4.インストール編
　では、いよいよArch Linuxをお手持ちのドライブにインストールします。まずは、さっき作ったパーティションをマウントします。[Your Root Partition]がルートパーティション、[Your Boot Partition]がUEFIパーティションです。(sda〜、sdb〜みたいなやつ)
 ```:shell
root@archiso~ # mount /dev/[Your Root Partition] /mnt
root@archiso~ # mkdir /mnt/boot
root@archiso~ # mount /dev/[Your Boot Partition] /mnt/boot
 ```
 必要最小限のパッケージのみをインストールする場合は以下のコマンドで十分ですが、後でネットワーク設定を行う際に```wpa_supplicant```と```wpa_cli```があったほうが楽なので、一緒に入れておきます。あと、エディタとして```nano```(他のCUIエディタのほうが好きな人はそれでも全く問題ないはずです。)も入れておきます。
 ```:shell
root@archiso~ # pacstrap -K /mnt base linux linux-firmware wpa_supplicant wpa_cli nano
 ```
 まあまあ時間かかるので気長に待ちます。

　終わったら再起動して、さっきArch Linuxをインストールしたパーティションから起動します。

![IMG_7772 2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900284/c12e947b-6ec8-3acb-ec8b-ba71b0553053.jpeg)

こんな感じになったらひとまずインストール完了です。


# 5. おわりに
　今までまともにLinuxを触ったことのない私でも、ブログなどを参考にしながら自力でArch Linuxをインストールすることができました。Arch Linuxのインストールを通して、OSに対する理解が少し深まった気がします。
 インストールで苦戦する過程でもいろいろと勉強になりますので、Arch Linuxを試してみたい！って人は気軽に試してみましょう！アドカレには間に合いませんでしたが、気が向いたらi3の設定やIMEの設定の話も書きたいなと思います。