わからないをわかりたさに変えるArchのインストールのコマンド

多分256番煎じくらいの記事ですがよろしくおねがいします。  

2021/4/22追記
Archlinuxのインストールメディアにガイドが付きました(ただし日本語は非対応)
初学者はこちらを使用してインストールをすると簡単にできる…と思います！
https://www.archlinux.jp/news/installation-medium-with-installer/

## キーボードの変更
[archwiki](https://wiki.archlinux.jp/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89)のUSBからブートをした状態と過程します。
zshのコマンドラインが表示されてると思いますので、そこまで来たら、コマンドでキーボードの設定をしていきます
[archwikiのインストールガイド](https://wiki.archlinux.jp/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89)ではlsで使用可能なキーマップを確認しています。

>デフォルトのキーボードレイアウトは US キーボードです。利用可能なキーマップは以下のコマンドで確認できます:
`ls /usr/share/kbd/keymaps/**/*.map.gz`

lsとは今居るディレクトリ(カレントディレクトリとも言う)の中にあるディレクトリとファイルを表示します。引数に表示したいディレクトリのPATHを書くと、そのPATHの中のディレクトリとファイルを表示してくれるコマンドです。
これでキーマップに何が使用できるかわかりますので、自分にあったキーマップをロードします
ここではjp106でやります

```terminal:キーボードの設定
loadkeys jp106
```

このloadkeysとは、引数に渡された文字列"jp106"から上に書いてあるディレクトリ
/usr/share/kbd/keymapsの中にあるjp106/jp.map.gを検索して
キーマップを変更してくれるというコマンドです。

## ストレージのパーティションを分割する

次にストレージをboot用にしたりswap用にしたりとパーティションを分割していきます。
パーティションとは
[archwikiのパーティショニング](https://wiki.archlinux.jp/index.php/%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0)にもある通り、一つのストレージを論理的に分けることで、そのストレージはあたかも何個ものストレージに見せかけることができます。

例えば、４つのパーティションで区切った場合。
1つめにWindows、2つ目にubuntu、3つ目にCentOS、4つ目にArchなど、本来ならば4つのストレージを用意しなければならない所を、一つのストレージで済ませることができます。

パーティションの分割にはgdiskやfdiskなどがありますが、僕はfdiskしかつかったことがないのでfdiskで作成する方法で行きます。
[fdiskの説明](https://wiki.archlinux.jp/index.php/%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0)はここのサイトがわかりやすいと思います。

ここではboot用とLinux用の２つのパーティションを作ります。
まず、Archをインストールするストレージのデバイスを探します。

```terminal:デバイスの検索
fdisk -l
```
fdisk -lで接続しているデバイスが確認できます。
デバイスを探し当てたら、そのデバイスを分割していきます。

```terminal:fdiskの対話モードの入り方
fdisk /dev/sda
```
これで対象のデバイスを分割するダイアログに入れたと思います。

もし、インストールしたいデバイスに既に何かが書き込まれていた場合でもfdiskで消すことができます。

### boot用のパーティション

このコマンドラインでは、さまざまなことをすることができます。
[archwikiのfdisk](https://wiki.archlinux.jp/index.php/%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0)を見てもらうと、新しいパーティションはnで作れることがわかります。

```terminal:fdisk
Commnd(m for help):n
```
まずはboot用のパーティションを作ります。

```terminal:fdisk
Partition type
   p(primaray)
   e(extended)
Select(default p):p
```
pを押すとプライマリーパーティションが作れます。
通常、パーティションは４つしか分割できません。その特別な４つのパーティションをプライマリーパーティションといいます。

```terminal:fdisk
Partition number:
```
ポジションナンバーはパーティションの番号です。この場合は１と打つか、そのままEnterを押してください。

次に、開始するセクターを決めます。
これはそのままEnterを押してもらって構いません。これは「さっき決めた番号のパーティション、どこから始める？」と問いかけられています。
ちなみに、何も入力せずにEnterを押すとdefaultの値が設定されます。

```terminal:fdisk
First sector:
```
次に問いかけられるのはラストセクターです。１のパーティションの容量を決められます。
１のパーティションはOSのBoot用に設定するので、512MBと入力してください。

```terminal:fdisk
Last sector,+/-sectors or +/-size{K,M,G,T,P}:512MB
```
[archwikiのインストールガイド](https://wiki.archlinux.jp/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89)では、256MBでもOK的なことが書かれていますのでどちらでも良いと思います。僕はもしものことがあると嫌なので（例えばbootに使う容量が増えたり等）安全をとって512MBにしています。

これで1のboot用のパーティションができました。
次にArchLinuxを入れるパーティションを作ります。

### Linux用のパーティション

```terminal:fdisk
Commnd(m for help):n
```
これは１とまったく同じnを入力します。

```terminal:fdisk
Partition type
   p(primaray)
   e(extended)
Select(default p):p
```

これも同じくpと入力し、プライマリーパーティションを選びます。
次も同じくdefaultの値でOKなのでそのままEnterを押します。

```terminal:fdisk
First sector:
```
次のラストセクターもdefaultの値で大丈夫です。先程の１のパーティションはboot用なので値を入力しましたが、今回は残りのすべてを使いたいのでそのままEnterを押します。

```terminal:fdisk
Last sector,+/-sectors or +/-size{K,M,G,T,P}:
```

これで２つめのパーティションを作ることができましたが、まだ書き込みされていませんのでwを入力して書きこみます。

```terminal:fdisk
Commnd(m for help):w
```
これで書き込みが終了し、またzshのコマンドラインに戻ってきます。
次に作ったパーティションをそれぞれの用途にフォーマットします。

## パーティションのフォーマット
さきほど作ったパーティションはsda1,sda2と番号が振られています、この番号はパーティションの番号と同じでsdX1はboot用、sdX2はLinux用となっています。
[archwikのインストールガイド](https://wiki.archlinux.jp/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89)では
>パーティションを作成したら、適切なファイルシステムでフォーマットする必要があります。例えば、ext4 で /dev/sda1 のルートパーティションをフォーマットするには、以下のコマンドを実行:
`mkfs.ext4 /dev/sda1`

となっていますのでext4でフォーマットしていきます。
[archwikのファイルシステム](https://wiki.archlinux.jp/index.php/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0)にそれぞれのファイル形式の概要が載っています。
使うコマンドはmkfsというコマンドです。
このコマンドはmkfs -t ext4 /dev/sda1と打つこともできますが、直接コマンドを叩くこともできます。
[こちら](https://kazmax.zpp.jp/linux_beginner/mkfs.html)に詳しく書かれています。

```terminal:mkfs
mkfs.ext4 /dev/sda1
mkfs.ext4 /dev/sda2
```
これで２つともext4というファイルシステムになりました。

## 作ったパーティションにマウント
次にマウントしていきます。

```terminal:mount
mount /dev/sda1 /mnt
```

boot用は[archwikのインストールガイド](https://wiki.archlinux.jp/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89)より
>mkdir /mnt/boot
mount /dev/sda2 /mnt/boot

と入力してください。
mkdirとはディレクトリを作成するコマンドです。
mountとは、作成したパーティションを/(ルートディレクトリ）の配下に置くコマンドです。
ルートディレクトリとは、Linuxのディレクトリ構造の一番上のディレクトリを指します。

そのままでは作ったパーティションsda1,sda2はアクセスができないので/mntに配置してあげることで使えるようになります。この場合
/mnt = sda1となり、
/mnt/boot = sda2となります。
もしも/mntにmkdirでディレクトリxyzを追加した場合は/mnt/xyzとなり、これはsda1のストレージ内に入ります。

次はArchの[Core]をインストールします

## pacstrap
インターネットを使ってArchのSystemをインストールするので、まずLANケーブルをPCに指し、それが使えるかチェックします。
[archwikのインストールガイド](https://wiki.archlinux.jp/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89#fstab_.E3.81.AE.E7.94.9F.E6.88.90)では
>有線接続の場合、dhcpcd デーモンが起動時に 有効化 され自動的に接続を開始します。ping を使って接続が確立されているかどうか確かめてください:
ping archlinux.jp

>接続できない場合は、dhcpcd デーモンの状態を確認してください。
`systemctl status dhcpcd@interface`

と記されています。
pingとは引数にサイトのURLを書くと、そのURLにパケットを飛ばし、応答が帰ってくること確認することができるコマンドです。
[archwikのインターネット設定](https://wiki.archlinux.jp/index.php/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E8%A8%AD%E5%AE%9A)にて詳しく書かれています。

pingコマンドを止めるにはCtrl+Cを押します。これは可動しているプロセスを終了するシグナルを割り込み処理で送るショートカットキーです。
<a harf url=https://qiita.com/toshihirock/items/bc6a9a4091afa9bb61f1>こちらのQiitaの記事</a>が詳しく書かれています。
>Ctrl+CはSIGINTシグナルという割り込みを示すシグナルを送信し、Ctrl+Zは一時停止を示すSIGTSTPシグナルを送信する
Ctrl+Cを実行するとフォアグラウンドのプロセスは基本的に終了する（特別にSIGINTシグナルのイベントを受け取るようにしていなければ)

pingが通ればネットワークが使えますので、Archが用意しているpacstrapというスクリプトを使ってインストールします。
>pacstrap スクリプトを使って、base グループをインストールします。AUR からソフトウェアをコンパイルしたり ABS を使うつもりであれば、base-devel パッケージグループもインストールするべきです。

```terminal:pacstrap
pacstrap /mnt base base-devel
```
pacstrapとはArchのリポジトリの[Coreのbase](https://www.archlinux.jp/groups/x86_64/base/)と[base-devel](https://www.archlinux.jp/groups/x86_64/base-devel/)をインストールすることができます。

## fstabの作成
[archwikのインストールガイド](https://wiki.archlinux.jp/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89#fstab_.E3.81.AE.E7.94.9F.E6.88.90)では
>fstab の生成
genfstab コマンドを実行して fstab を生成してください (UUID を使う場合は -U オプション、ラベルを使う場合は -L オプションのどちらかを指定します):

```terminal:fstab
genfstab -U /mnt >> /mnt/etc/fstab
```
>作成された /mnt/etc/fstab を確認して、問題がないことをチェックしてください。

fstabとはパーティションとファイルシステムの情報や、どこにmountされているかなどを保存するコマンドです。Archでは独自のスクリプトgenfstabというコマンドを使って/mnt/etc/fstabに書き込みます。
## chrootでインストールしたSystemに入る
今作ったLinuxのディレクトリは/mntから始まります、その/mntを/（ルートディレクトリ）にするのがchrootです。
今のLinuxは/mntに入っているので、そのまま/mntを/にします。

```terminal:arch-chroot
arch-chroot /mnt
```

## 言語、キーマップの設定
>/etc/locale.gen を編集して使用するロケール (例: en_US.UTF-8 UTF-8 と ja_JP.UTF-8 UTF-8) をアンコメントし、次のコマンドを実行してください:
`locale-gen`
ロケールを /etc/locale.conf で設定します:
`echo LANG=en_US.UTF-8 > /etc/locale.conf`
必要であれば、vconsole.conf(5) でコンソールキーマップとフォントを設定します:
`echo KEYMAP=jp106 > /etc/vconsole.conf`

locale,genとは、そのPCで使う言語情報を決めることができ、locale.confを読み込んで反映しています。初期状態であればen.US_UTF-8が適用されているので、日本語にするにはlocale.genを編集し、ja_JP.UTF-8をアンコメントします。
locale.confとはほぼlocale.genといっしょなのですが、locale.confが優先されるので、これを作成します。

```terminal:locale.confに書き込み
echo LANG=en_US.UTF-8 > /etc/locale.conf
```
次にキーマップを永続的に有効にするために今使っているキーマップjp106をvconsole.confに書き込みます。

```terminal:vconsole.confに書き込み
echo KEYMAP=jp106 > /etc/vconsole.conf
```
これで次回起動した時、キーマップも言語も設定し直す必要がなくなります。

## Hostnameを決める
HostnameとはそのLinuxの名前です。
>あなたのコンピュータの名前を /etc/hostname に書き込んで適切なホストネームを設定してください:
`echo myhostname > /etc/hostname`

```terminal:hostname
echo myhostname > /etc/hostname
```
このmyhostnameの部分を設定したい名前にしてください。
## PCのパスワードを設定する
>Root パスワード
passwd で root パスワードを設定します:
passwd

```terminal:passwd
passwd
```

## bootloederの設定
>ブートローダー
Arch Linux を起動するために Linux に対応しているブートローダーを選択してインストールする必要があります。ブートローダーは、起動モードが UEFI の場合は systemd-boot や GRUB、BIOS の場合は GRUB が多く選択されています。

僕はGRUBを使っているのでGRUBで行きます。
まずGRUBをインストールします

```terminal:pacman
pacman -S os-prober grub
```
次にGRUBの設定をします。

```terminal:grub
grub-install --target=i386-pc --recheck /dev/sda1
grub-mkconfig -o /boot/grub/grub.cfg
```

boot用に使っているパーティションはsda1なので引数に/dev/sda1を指定してインストールをし、grub-mkconfigでgrub.cfgを作成します。

これでbootができるようになりました。

#exit,reboot

chrootから抜け出して、rebootをかけます。

```terminal:Commnd
exit
reboot
```
これで終わりです。


## 感想
Linuxチョットダケワカルになりました

### 以上！