Arch Linuxのpacmanが壊れたので復旧した

# 状況
![IMG_1048 2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100313/edd5f2f8-4158-3aae-ca11-fba0cf54c41c.jpeg)

# 復旧
## USBインストールメディアの準備(Mac)
![スクリーンショット 2022-08-15 13.32.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100313/6a74e33f-bc11-a336-1ecd-a48dfb3b274a.png)
![スクリーンショット 2022-08-15 13.40.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100313/a189f9c2-6408-26f3-7a9d-e67daff9552a.png)
![スクリーンショット 2022-08-15 13.43.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100313/991bb427-3b15-df47-ec5f-9d48dbbbb220.png)


isoの検証
```
❯ gpg --keyserver-options auto-key-retrieve --verify archlinux-2022.08.05-x86_64.iso.sig
gpg: 署名されたデータが'archlinux-2022.08.05-x86_64.iso'にあると想定します
gpg: 金  8/ 5 20:13:05 2022 JSTに施された署名
gpg:                RSA鍵4AA4767BBC9C4B1D18AE28B77F2D434B9741E8ACを使用
gpg:                発行者"pierre@archlinux.de"
gpg: 鍵7F2D434B9741E8AC: 公開鍵"Pierre Schmitz <pierre@archlinux.de>"をインポートしました
gpg:           処理数の合計: 1
gpg:             インポート: 1
gpg: 究極的に信用する鍵が見つかりません
gpg: "Pierre Schmitz <pierre@archlinux.de>"からの正しい署名 [不明の]
gpg: *警告*: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。
 主鍵フィンガープリント: 4AA4 767B BC9C 4B1D 18AE  28B7 7F2D 434B 9741 E8AC
❯ openssl sha1 archlinux-2022.08.05-x86_64.iso
SHA1(archlinux-2022.08.05-x86_64.iso)= 21715237a89d0e0e1e385020f615319b4c8f08bf
❯ md5 archlinux-2022.08.05-x86_64.iso
MD5 (archlinux-2022.08.05-x86_64.iso) = 0e9943a96f8298abb0db5e64f76ad0be
```

macでUSBインストールメディアの作成
disk4がUSBメモリです。
`dd`がhomebrewでインストールしたgnuのものなので、`M`は大文字です。
```

❯ diskutil list
/dev/disk0 (internal):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                         1.0 TB     disk0
   1:             Apple_APFS_ISC ⁨⁩                        524.3 MB   disk0s1
   2:                 Apple_APFS ⁨Container disk3⁩         994.7 GB   disk0s2
   3:        Apple_APFS_Recovery ⁨⁩                        5.4 GB     disk0s3

/dev/disk3 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +994.7 GB   disk3
                                 Physical Store disk0s2
   1:                APFS Volume ⁨Macintosh HD⁩            15.4 GB    disk3s1
   2:              APFS Snapshot ⁨com.apple.os.update-...⁩ 15.4 GB    disk3s1s1
   3:                APFS Volume ⁨Preboot⁩                 563.8 MB   disk3s2
   4:                APFS Volume ⁨Recovery⁩                827.4 MB   disk3s3
   5:                APFS Volume ⁨Data⁩                    264.7 GB   disk3s5
   6:                APFS Volume ⁨VM⁩                      20.5 KB    disk3s6

/dev/disk4 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *31.1 GB    disk4
   1:                 DOS_FAT_32 ⁨SONY MEDIA⁩              31.1 GB    disk4s1

❯ diskutil unmountDisk /dev/disk4
Unmount of all volumes on disk4 was successful
❯ which dd
/opt/homebrew/opt/coreutils/libexec/gnubin/dd
❯ ls -d *.iso
archlinux-2022.08.05-x86_64.iso
❯ sudo dd if=./archlinux-2022.08.05-x86_64.iso of=/dev/rdisk4 bs=4M
Password:
196+1 records in
196+1 records out
824520704 bytes (825 MB, 786 MiB) copied, 37.6284 s, 21.9 MB/s
```

![スクリーンショット 2022-08-15 13.43.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100313/13a2df7a-9fc5-409d-f984-a1c62fbb0d17.png)
書き込みが成功するとこのコンピュータで読み取れないディスクと言われるので、無視をクリックしてUSBメモリを取り出します。

## pacmanの再インストール(失敗含む)
https://wiki.archlinux.jp/index.php/Pacman#.E3.82.A2.E3.83.83.E3.83.97.E3.82.B0.E3.83.AC.E3.83.BC.E3.83.89.E4.B8.AD.E3.81.AB_Pacman_.E3.81.8C.E3.82.AF.E3.83.A9.E3.83.83.E3.82.B7.E3.83.A5.E3.81.97.E3.81.BE.E3.81.97.E3.81.9F

https://qiita.com/mizutoki79/items/0568a3093a4a65fd2c7f#%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E8%A8%AD%E5%AE%9A

インストール時と同様にマウントしてchrootを行います。
Intel NUCのeMMCにインストールしているため、ディスク名は一般的な状況と異なりますが適宜読み替えてください。
```
mount /dev/mmnblk0p2 /mnt
mount /dev/mmnblk0p1 /mnt/boot
mount -t proc proc /mnt/proc
mount --rbind /sys /mnt/sys
mount --rbind /dev /mnt/dev
pacman --root=/mnt --cachedir=/mnt/var/cache/pacman/pkg -Syyu
```

この後再起動すると `Failed to mount /boot` 等が表示され、emergency shellしか起動できなくなりました。
どうやら最新のインストールメディアで行ったばかりにkernel versionの不一致が起こってしまったようです。

https://bbs.archlinux.org/viewtopic.php?id=206473

そのため、再度インストールメディアから起動します。

```
mount /dev/mmnblk0p2 /mnt
mount /dev/mmnblk0p1 /mnt/boot
arch-chroot /mnt
pacstrap /mnt base linux linux-firmware
```

この後再起動したところ、正常に戻りました。