ラズパイにArchLinux環境を構築する

# はじめに
この記事ではRaspberrypi 4 Model BにArch Linuxの環境(ARMv7)を構築するまでの過程を書いきます。
[Raspberry Pi 4 | Arch Linux ARM](https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-4)

# 結果

下の画像のような環境が出来上がります。デスクトップ環境にはXfceを使用しました。
[> 3章 おわり neofetch実行後の画像](https://qiita.com/hibi221b/items/f9275a1cc9dc0d0354a0#%E3%81%8A%E3%82%8F%E3%82%8A)


![Screenshot_2023-12-07_09-18-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281815/6bb2df93-d874-778c-5f3d-aab19aeccd86.png)


# インストール手順
3部構成となります。

=== 仮想環境に用意したlinuxで行う ===
1章. パーティションやファイルシステムの設定をmicroSDカードに書き込む

=== ラズパイでの作業 ===
2章. ロケール、キーボード、ネットワーク、ユーザー追加、時刻、Xorg、デスクトップ環境などの各種設定
3章. 選択したdesktop環境上でのカスタマイズ

# 注意事項
1章ではmicroSDカードにパーティション、ファイルシステムを構築します。公式ドキュメントでは`boot`や`root`ディレクトリを新規に作成してそこをマウントポイントとして扱います。この記事も公式に従っているため、途中で`boot`、`root`ディレクトリを作成します。パスの指定ミスなどがあり得ますので、万が一失敗してもいいように、仮想環境で行ってください。

# 1章

この章ではmicroSDカードにarchLinuxのパーティションとファイルシステムを構築します。公式のインストール手順とほぼ同じですが、一連の流れを追うことができると思います。

VirtualBoxやVMwareなどの仮想環境上にlinuxを用意してください。
私はwindowsでVirtualBoxの仮想環境に[Zorin OS 15.2 Lite(無料のもの)](https://zorinos.com/download/)を入れた環境で行いました。仮想環境ではなくデュアルブートで行いたい場合は、以下の記事で詳しく解説されていました。
[windows10とUbuntu Desktopのデュアルブート環境の構築 – 株式会社ルーター](https://rooter.jp/infra-ops/windows_and_ubuntu/)

1章の説明は以下の公式とほぼ同じことをしていきます。
[Raspberry Pi 4 | Arch Linux ARM](https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-4)

## 新規パーティション、ファイルシステムの構築
micro sdカードリーダーにmicro sdカードをさし、micro sdカードリーダーをpcにさしています。

現在、仮想環境にインストールしたZorin OS 15.2 Liteでターミナルを開いています。
`su`でrootに切り替えてください。

まずmicroSDカードが自動的にマウントされてしまう場合は、アンマウントする必要があります。
`mount`で現在のマウント状況を確認してください。一番最後の行を確認してみると自動的にマウントされてしまっています。

```terminal
root@hibi221b:/home/hibi21b# mount
...
...
...
/dev/sdb1 on /media/hibi21b/B1FD-E84D type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
```

`umount /dev/sdb1`でアンマウントしてください。後で/dev/sdb1にbootディレクトリをマウントしたいので外す必要があります。

```terminal
root@hibi221b:/home/hibi21b# umount /dev/sdb1
```

Zorin OS 15.2 Liteを使用している場合は、umountしても一定時間後に自動的にマウントされてしまうため、`Removable Storage`のチェックを全て外してください。

![usb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281815/310a3043-8438-6a8e-1091-f62016cb4ce5.png)


## 現在の利用可能なブロックデバイスの確認

`lsblk`コマンドで確認できます。16GBのmicroSDカードを使用しています

```terminal
root@hibi221b:/home/hibi21b# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   96G  0 disk 
└─sda1   8:1    0   96G  0 part /
sdb      8:16   1   15G  0 disk 
└─sdb1   8:17   1   15G  0 part 
sr0     11:0    1 1024M  0 rom  
```

`fdisk -l`でも確認しておきます。今回はmicroSDカードのブロックデバイスが/dev/sdbでしたが、/dev/sdcなど変わることがあるのでその場合は読み替えてください

```terminal
root@hibi221b:/home/hibi21b# fdisk -l
...
...
...
Disk /dev/sdb: 15 GiB, 16118710272 bytes, 31481856 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe5e4a4e3

Device     Boot Start      End  Sectors Size Id Type
/dev/sdb1        8192 31481855 31473664  15G  c W95 FAT32 (LBA)
```

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

公式の通りに行います。`<----------`があるところは自分で入力する必要があります。
[Raspberry Pi 4 | Arch Linux ARM](https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-4)

```terminal
root@hibi221b:/home/hibi221b# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): o <----------
Created a new DOS disklabel with disk identifier 0x561016c1.

Command (m for help): p <----------
Disk /dev/sdb: 15.1 GiB, 16118710272 bytes, 31481856 sectors
Disk model: Storage Device  
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x561016c1

Command (m for help): n <----------
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p <----------
Partition number (1-4, default 1):  <----------
First sector (2048-31481855, default 2048):  <----------
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-31481855, default 31481855): +200M <----------

Created a new partition 1 of type 'Linux' and of size 200 MiB.


Command (m for help): t <----------
Selected partition 1
Hex code (type L to list all codes): c <----------
Changed type of partition 'Linux' to 'W95 FAT32 (LBA)'.

Command (m for help): n <----------
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p <----------
Partition number (2-4, default 2):  <----------
First sector (411648-31481855, default 411648):  <----------
Last sector, +/-sectors or +/-size{K,M,G,T,P} (411648-31481855, default 31481855): <---------- 

Created a new partition 2 of type 'Linux' and of size 14.8 GiB.

Command (m for help): w <----------
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
```
## /dev/sdbを再度確認
`fdisk -l`を行うと、新しいパーティションができていることがわかります。

```terminal
root@hibi221b:/home/hibi221b# fdisk -l
...
...
...
Disk /dev/sdb: 15.1 GiB, 16118710272 bytes, 31481856 sectors
Disk model: Storage Device  
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x561016c1

Device     Boot  Start      End  Sectors  Size Id Type
/dev/sdb1         2048   411647   409600  200M  c W95 FAT32 (LBA)
/dev/sdb2       411648 31481855 31070208 14.8G 83 Linux
```

## FATファイルシステムの作成とマウント

```terminal
root@hibi221b:/home/hibi21b# mkfs.vfat /dev/sdb1
mkfs.fat 4.1 (2017-01-24)
root@hibi221b:/home/hibi21b# mkdir boot
root@hibi221b:/home/hibi21b# mount /dev/sdb1 boot
```

## ext4ファイルシステムの作成とマウント
`mkfs.ext4 /dev/sdb2`は少し時間がかかります。

```terminal
root@hibi221b:/home/hibi21b# mkfs.ext4 /dev/sdb2
mke2fs 1.44.1 (24-Mar-2018)
Creating filesystem with 3909376 4k blocks and 979200 inodes
Filesystem UUID: 8371c867-4a52-4ebb-9e3a-40d20ac0c161
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done   
```

```terminal
root@hibi221b:/home/hibi21b# mkdir root
root@hibi221b:/home/hibi21b# mount /dev/sdb2 root
```

## マウントされているか確認
`mount`で確認します

```terminal
root@hibi221b:/home/hibi21b# mount
...
...
...
/dev/sdb1 on /home/hibi21b/boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
/dev/sdb2 on /home/hibi21b/root type ext4 (rw,relatime)
```

## tarballを取得

wgetでtarballを取得します。

公式を再度確認してください
[Raspberry Pi 4 | Arch Linux ARM](https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-4)

```terminal
root@hibi221b:/home/hibi221b# wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-armv7-latest.tar.gz
...
...
...
Saving to: ‘ArchLinuxARM-rpi-armv7-latest.tar.gz’

ArchLinuxARM-rpi-armv7-latest.tar.gz 100%[=====================================================================>] 424.59M  3.54MB/s    in 2m 25s  

2023-12-08 09:26:59 (2.93 MB/s) - ‘ArchLinuxARM-rpi-armv7-latest.tar.gz’ saved [445216553/445216553]
```

```terminal
root@hibi221b:/home/hibi221b# ls
ArchLinuxARM-rpi-armv7-latest.tar.gz  boot  Desktop  Documents  Downloads  Music  Pictures  Public  root  Templates  Videos
```

## 解凍
公式では`bsdtar`を使用していますが、`tar`コマンドを使いました。
[【 tar 】コマンド――アーカイブファイルを作成する／展開する](https://atmarkit.itmedia.co.jp/ait/articles/1608/15/news015.html)

`-C root`の意味はrootディレクトリ(/dev/sdb2のマウントポイントとなっている/home/hibi21b/root)以下に解凍するという意味です。`/root`ではないのでお気をつけください。`-C`は大文字です。

時間がかかります。

```terminal
root@hibi221b:/home/hibi221b# tar zxf ArchLinuxARM-rpi-armv7-latest.tar.gz -C root
...
...
...
tar: Ignoring unknown extended header keyword 'LIBARCHIVE.xattr.security.SMACK64'
tar: Ignoring unknown extended header keyword 'LIBARCHIVE.xattr.security.SMACK64'
tar: Ignoring unknown extended header keyword 'LIBARCHIVE.xattr.security.SMACK64'
```

解凍されていることがわかります。

```terminal
root@hibi221b:/home/hibi21b# ls root/
bin  boot  dev  etc  home  lib  lost+found  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
```

## sync
以下のサイトで詳しく解説されていますのでそちらを参照してください。
[syncコマンド | Linux技術者認定リナック | LPI-Japan](https://linuc.org/study/knowledge/413/)

```terminal
root@hibi221b:/home/hibi21b# sync
```

## 移動
やっていることは単純なのですが、ディレクトリ名がややこしいので図にしました。

```terminal
root@hibi221b:/home/hibi21b# mv root/boot/* boot
```

![mv (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281815/4dbab636-c372-c852-5b14-a9cfa7cb6880.png)

ちゃんと移動できてますね。

```terminal
root@hibi221b:/home/hibi221b# ls boot/
bcm2708-rpi-b.dtb       bcm2710-rpi-3-b-plus.dtb  bcm2835-rpi-a-plus.dtb    bcm2837-rpi-3-b-plus.dtb  fixup_cd.dat         start4x.elf
bcm2708-rpi-b-plus.dtb  bcm2710-rpi-cm3.dtb       bcm2835-rpi-b.dtb         bcm2837-rpi-cm3-io3.dtb   fixup.dat            start_cd.elf
bcm2708-rpi-b-rev1.dtb  bcm2710-rpi-zero-2.dtb    bcm2835-rpi-b-plus.dtb    bcm2837-rpi-zero-2-w.dtb  fixup_db.dat         start_db.elf
bcm2708-rpi-cm.dtb      bcm2710-rpi-zero-2-w.dtb  bcm2835-rpi-b-rev2.dtb    bootcode.bin              fixup_x.dat          start.elf
bcm2708-rpi-zero.dtb    bcm2711-rpi-400.dtb       bcm2835-rpi-cm1-io1.dtb   cmdline.txt               initramfs-linux.img  start_x.elf
bcm2708-rpi-zero-w.dtb  bcm2711-rpi-4-b.dtb       bcm2835-rpi-zero.dtb      config.txt                kernel7.img
bcm2709-rpi-2-b.dtb     bcm2711-rpi-cm4.dtb       bcm2835-rpi-zero-w.dtb    fixup4cd.dat              overlays
bcm2709-rpi-cm2.dtb     bcm2711-rpi-cm4-io.dtb    bcm2836-rpi-2-b.dtb       fixup4.dat                start4cd.elf
bcm2710-rpi-2-b.dtb     bcm2711-rpi-cm4s.dtb      bcm2837-rpi-3-a-plus.dtb  fixup4db.dat              start4db.elf
bcm2710-rpi-3-b.dtb     bcm2835-rpi-a.dtb         bcm2837-rpi-3-b.dtb       fixup4x.dat               start4.elf
root@hibi221b:/home/hibi221b# ls root/boot/
root@hibi221b:/home/hibi221b#
```


## アンマウント
最後にbootとrootのマウントポイントをアンマウントします。

```terminal
root@hibi221b:/home/hibi21b# mount
...
...
...
/dev/sdb1 on /home/hibi21b/boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
/dev/sdb2 on /home/hibi21b/root type ext4 (rw,relatime)
```

```terminal
root@hibi221b:/home/hibi21b# umount boot root
```

これで1章での作業は終了しました。microSDカードを抜いてください。仮想環境も閉じてもらって大丈夫です。

# 2章

2章以降はラズパイでの作業になります。microSDカードをラズパイにセットして、起動してください。公式によるとrootの初期のパスワードはrootになります。

**設定を行ったら適当なタイミングで、適宜、`reboot`をしてください。**

## キーボード
`loadkeys jp106`は一時的な設定でrebootなどをすると日本語配列ではなくなってしまうため、`localectl`でも設定をしておいた方が良いです。

[コンソールでのキーボード設定 - ArchWiki](https://wiki.archlinux.jp/index.php/%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%AE%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E8%A8%AD%E5%AE%9A)


```terminal
[root@alarmpi ~]# loadkeys jp106
[root@alarmpi ~]# localectl set-keymap jp106
[root@alarmpi ~]# localectl 
```

## rootユーザのパスワード変更
正しくキー入力ができるようになったのでrootユーザのパスワードを変えておきます。

```terminal
[root@alarmpi ~]# passwd root
```

## audit
`audit: xxx`のようなメッセージが出てしまうと、作業の妨げになって嫌だったためmaskで止めておきます。解除する場合は` systemctl unmask xxx`をします。

[Arch Linux ARM ・ View topic - How disable AUDIT messages](https://archlinuxarm.org/forum/viewtopic.php?f=60&t=13175)

```terminal
[root@alarmpi ~]# systemctl mask systemd-journald-audit.socket
[root@alarmpi ~]# reboot
```

## ロケール
system localeを追加します。`nano /etc/locale.gen`で設定ファイルを開き、以下の二つのコメントを外してください。

- en_US.UTF-8
- ja_JP.UTF-8

en_US.UTF-8ではなくja_JP.UTF-8を選択して、rebootすると文字化けしてしまうため`en_US.UTF-8`の方を設定します。

[ロケール - ArchWiki](https://wiki.archlinux.jp/index.php/%E3%83%AD%E3%82%B1%E3%83%BC%E3%83%AB)
[GNU nanoを使いこなす - Qiita](https://qiita.com/snct_hu/items/971d512c26dd8b3a3b3c
)

```terminal
[root@alarmpi ~]# nano /etc/locale.gen
[root@alarmpi ~]# locale-gen
[root@alarmpi ~]# localectl set-locale en_US.UTF-8
[root@alarmpi ~]# localectl 
```

## ネットワーク
[systemd-networkd + wpa_supplicant でワイヤレスネットワーク接続](https://pig.hatenadiary.com/entry/2016/12/29/121539)
ここでは無線LANの設定を行います。有線を使っている方は別途調べる必要があります。
`iw dev`で無線インタフェースを調べます。結果は、Interface wlan0と出て、`wlan0`であることがわかりました。

```terminal
[root@alarmpi ~]# iw dev
```

`wpa_passphrase`コマンドを使ってwifiのパスワードを暗号化し、それを新規設定ファイルに書き込みます。
設定ファイル名は、次の書式にしてください。

`/etc/wpa_supplicant/wpa_supplicant-インタフェース名.conf`
wpa_supplicantは、アンダーバー、インタフェース名の前はハイフンを使ってください。

```terminal
[root@alarmpi ~]#　wpa_passphrase "HOGE-5G" "MYhogehoge123wifi" > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
```

`/etc/wpa_supplicant/wpa_supplicant-wlan0.conf`を開くとパスワードが平文でコメントされているので、その部分を削除します。

[WPA supplicant  - ArchWiki](https://wiki.archlinux.jp/index.php/WPA_supplicant#wpa_passphrase_.E3.81.A7.E6.8E.A5.E7.B6.9A.E3.81.99.E3.82.8B)

```terminal
[root@alarmpi ~]# nano /etc/wpa_supplicant/wpa_supplicant-wlan0.conf

--------- 設定ファイル内
network={
    ssid="HOGE-5G"
    #psk="MYhogehoge123wifi"　<--- この1行を消す
    psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}
---------
```
起動時にワイヤレスを有効にします。

- `systemctl enable wpa_supplicant@インタフェース名`
- `systemctl enable dhcpcd@インタフェース名`

```terminal
[root@alarmpi ~]# systemctl enable wpa_supplicant@wlan0
Created symlink /etc/systemd/system/multi-user.target.wants/wpa_supplicant@wlan0.service -> /usr/lib/systemd/system/wpa_supplicant@.service.

[root@alarmpi ~]# systemctl enable dhcpcd@wlan0
Created symlink /etc/systemd/system/multi-user.target.wants/dhcpcd@wlan0.service -> /usr/lib/systemd/system/dhcpcd@.service
```

`/etc/systemd/network/wlan0.network`ファイルを新規作成し、以下を記述します。
[systemd-networkd - ArchWiki](https://wiki.archlinux.jp/index.php/Systemd-networkd)

```
[Match]
Name=wlan0

[Network]
DHCP=ipv4
IPv6AcceptRA=no
```

reboot後、以下のコマンドで正しくネットワークが設定されたか確認してください。
- `systemctl status systemd-networkd`
- `networkctl status wlan0`

## 履歴の削除

先ほど`wpa_passphrase`を使用してwifiのパスワードを入力しました。しかしこれには問題があって、ターミナルから入力したことで履歴が残ってしまいます。`history`コマンドを打つと確認することができます。
これを解消するためには`history -d 番号`を行ってください。
`.bash_history`も確認してください。

```terminal
[root@alarmpi ~]# history -d 番号
```

## DNSSEC
ネットワーク設定を終え、`ping -c5 8.8.8.8`などをしてみると、これは正常に通ります。しかし、`ping -c5 google.com`は通りません。
解決策は以下のサイトから、知ることができます。

[systemd-resolved  - ArchWiki](https://wiki.archlinux.jp/index.php/Systemd-resolved#DNSSEC)
[Raspberry DNS problems with ArchLinuxARM and DNSSEC | madflex](https://madflex.de/posts/raspberry-dns-problems-with-archlinuxarm-and-dnssec/)


DNSSECを無効化します。`/etc/systemd/resolved.conf`に追記してください。

```terminal
[root@alarmpi ~]# echo "DNSSEC=false" >> /etc/systemd/resolved.conf
[root@alarmpi ~]# cat /etc/systemd/resolved.conf

[Resolve]
#DNS=
#FallbackDNS=1.1.1.1 9.9.9.10 8.8.8.8 2606:4700:4700::1111 2620:fe::10 2001:4860:4860::8888
#Domains=
#LLMNR=yes
#MulticastDNS=yes
#DNSSEC=allow-downgrade
#DNSOverTLS=no
#Cache=yes
#DNSStubListener=yes
#ReadEtcHosts=yes
DNSSEC=false  <------------------ 追記された
```

rebootしてください。

## タイムゾーン
`timedatectl`でTime zone: Asia/Tokyoになっているか確認してください。

[時刻 - ArchWiki](https://wiki.archlinux.jp/index.php/%E6%99%82%E5%88%BB)

```terminal
[root@alarmpi ~]# timedatectl set-timezone Asia/Tokyo
```

## 時刻

設定ファイル内、`#NTP=`の部分のコメントを外して、`NTP=ntp.nict.jp`とします。

[日本標準時(JST)グループ](https://jjy.nict.go.jp/tsp/PubNtp/index.html)
[systemd-timesyncd - ArchWiki](https://wiki.archlinux.jp/index.php/Systemd-timesyncd)

```terminal
[root@alarmpi ~]# nano /etc/systemd/timesyncd.conf

--------- 設定ファイル内
#NTP=
NTP=ntp.nict.jp 
---------

[root@alarmpi ~]# timedatectl set-ntp true
[root@alarmpi ~]# reboot
```

設定後、`timedatectl`、`systemctl status systemd-timesyncd`で正常に動作していることを確認してください。また`date`コマンドで現在時刻が正しく表示されているか確認してください。

## ホスト名の変更

```terminal
[root@alarmpi ~]# nano /etc/hostname

--------- 設定ファイル内
alarmpi  <-- 削除
hibi221b <-- 追加
---------
```
その後rebootします。ホスト名が変更されました。

```terminal
[root@hibi221b ~]# 
```

## ユーザーの追加、削除
rootユーザ以外に一般ユーザを作成します。
[【Linux】ユーザ作成・削除方法](https://qiita.com/andota05/items/45983f2ad92cf85363b0)

`useradd`コマンドで追加します。

- `-m`　ホームディレクトを作成
- `-d`　ホームディレクトリの場所
- `-s`  ログインシェルはbashを指定
- 最後にユーザ名を指定します。

```terminal
[root@hibi221b ~]# useradd -m -d /home/hibi221b -s /bin/bash hibi221b
```

追加した一般ユーザの新規パスワードを作成 
```terminal
[root@hibi221b ~]# passwd hibi221b
```

hibi221bの一般ユーザが追加されているか確認

```terminal
[root@hibi221b ~]# cat /etc/passwd
```


デフォルトで`alarm`という一般ユーザが作られています。このユーザを使う予定はないので削除しておきます。`-r`でalarmユーザのホームディレクトリも消します。

```terminal
[root@hibi221b ~]# ls /home
alarm hibi221b
[root@hibi221b ~]# userdel -r alarm
```

alarm一般ユーザが消えたか確認

```terminal
[root@hibi221b ~]# cat /etc/passwd
[root@hibi221b ~]# ls /home
hibi221b
```

## pacman
ネットワークの設定などが終わったのでpacmanを使ってパッケージを導入していきます。

[pacman - ArchWiki](https://wiki.archlinux.jp/index.php/Pacman )
[pacman-key - ArchWiki](https://wiki.archlinux.jp/index.php/Pacman-key)
[Pacman 比較表 - ArchWiki](https://wiki.archlinux.jp/index.php/Pacman_%E6%AF%94%E8%BC%83%E8%A1%A8)


```terminal
[root@hibi221b ~]# pacman-key --init 
[root@hibi221b ~]# pacman-key --populate archlinuxarm
[root@hibi221b ~]# pacman -Syu
```

x window systemで必要なものなど
[Xorg - ArchWiki](https://wiki.archlinux.jp/index.php/Xorg)

```terminal
[root@hibi221b ~]# pacman -S xorg-server xorg-xinit xorg-apps xorg-twm xterm mesa xf86-video-fbdev xf86-video-amdgpu
```

## sudo
`sudo`を使えるようにします。まずvimとsudoをインストールします。その後一般ユーザーでsudoを使えるようにするため、`visudo`コマンドで設定ファイルを開き、以下を追加してください。

```terminal
[root@hibi221b ~]# pacman -S vim sudo
[root@hibi221b ~]# export EDITOR=vim
[root@hibi221b ~]# visudo

--------- 設定ファイル内
##
## User privilege specification
##
root ALL=(ALL:ALL) ALL
hibi221b ALL=(ALL:ALL) ALL <---------- この一行を追加
---------
```

## lightdmのインストール

ディスプレイマネージャはlightdmを使いました。
[LightDM - ArchWiki](https://wiki.archlinux.jp/index.php/LightDM)

```terminal
[root@hibi221b ~]# pacman -S lightdm lightdm-gtk-greeter
[root@hibi221b ~]# systemctl enable lightdm
Created symlink /etc/systemd/system/display-manager.service -> /usr/lib/systemd/system/lightdm.service
```

## xfceの起動

今回はデスクトップ環境にxfceを使います。
[Xfce - ArchWiki](https://wiki.archlinux.jp/index.php/Xfce)

```terminal
[root@hibi221b ~]# pacman -S xfce4 xfce4-goodies
```

`startxfce4`で起動して、デスクトップ画面が表示されればインストール成功です。

```terminal
[root@hibi221b ~]# which startxfce4
/usr/bin/startxfce4
[root@hibi221b ~]# startxfce4
```


# 3章
それでは、これからxfceのデスクトップ環境上で設定を行っていきます。
画面がフリーズして何も操作できなくなってしまった場合は、`ctrl` + `Alt` + `Backspace`で再起動できます。

## 日本語対応
一般ユーザーでログインしています。
パッケージをインストールし、`~/.xprofile`に設定を行いrebootします。
[Fcitx5 - ArchWiki](https://wiki.archlinux.jp/index.php/Fcitx5)
[フォント - ArchWiki](https://wiki.archlinux.jp/index.php/%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88#.E6.97.A5.E6.9C.AC.E8.AA.9E)


```terminal
[hibi221b@hibi221b ~]$ sudo pacman -S fcitx5-im fcitx5-mozc otf-ipafont
[hibi221b@hibi221b ~]$ vim .xprofile

--------- .xprofile設定ファイル内 3行を追加
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
---------

[hibi221b@hibi221b ~]$ reboot
```

左上の`application` -> `Settings` -> `Fcitx 5 Configuration`を選択、Mozcを左側に追加してください。
最後に`Apply`ボタンを押下して設定完了です。
カーソルが有効なところで`ctrl` + `space`を押すと英語<->日本語に切り替えることができます。

![Screenshot_2023-12-09_08-37-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281815/d24c479f-156f-ce44-5c31-99069c375394.png)

## ブラウザ
```terminal
[hibi221b@hibi221b ~]$ sudo pacman -S firefox
```

## yay
AUR(Arch User Repository)のヘルパーである`yay`をインストールします。
[Arch Linux に yayをインストール - Qiita](https://qiita.com/ekzemplaro/items/6714469c1fb1ae06b80f)

```terminal
[hibi221b@hibi221b ~]$ sudo pacman -S base-devel git go
[hibi221b@hibi221b ~]$ git clone https://aur.archlinux.org/yay.git
[hibi221b@hibi221b ~]$ cd yay
[hibi221b@hibi221b yay]$ makepkg -si
[hibi221b@hibi221b yay]$ which yay
/usr/bin/yay
```

## visual-studio-code-binのインストール
[Visual Studio Code - ArchWiki](https://wiki.archlinux.jp/index.php/Visual_Studio_Code)

```terminal
[hibi221b@hibi221b ~]$ git clone https://aur.archlinux.org/visual-studio-code-bin.git
[hibi221b@hibi221b ~]$ cd visual-studio-code-bin/
[hibi221b@hibi221b visual-studio-code-bin]$ makepkg -si
[hibi221b@hibi221b visual-studio-code-bin]$ cd
[hibi221b@hibi221b ~]$ which code
/usr/bin/code
```

## iconを変更

[xfce-look](https://www.xfce-look.org/)などのサイトから好みのアイコンを選びます。ダウンロードして、`~/.icons`に解凍します。
その後、左上の`Applications` -> `Settings` -> `Appearance` -> `Icons`でダウンロードしたアイコンテーマを選択します。
[McMojave-circle - Eyecandy for your XFCE-DESKTOP - xfce-look.org](https://www.xfce-look.org/s/XFCE/p/1305429)

```terminal
[hibi221b@hibi221b ~]$ mkdir .icons
[hibi221b@hibi221b ~]$ cd Downloads
[hibi221b@hibi221b Downloads]$ ls
McMojave-circle-yellow.tar.xz
[hibi221b@hibi221b Downloads]$ tar Jxf McMojave-circle-yellow.tar.xz
[hibi221b@hibi221b Downloads]$ ls
McMojave-circle-yellow.tar.xz McMojave-circle-yellow McMojave-circle-yellow-dark
[hibi221b@hibi221b Downloads]$ mv McMojave-circle-yellow McMojave-circle-yellow-dark ../.icons/
```

## themeを変更
[xfce-look](https://www.xfce-look.org/)などのサイトから好みのテーマを選びます。ダウンロードして、`~/.themes`に解凍します。
その後、左上の`Applications` -> `Settings` -> `Appearance` -> `style`でダウンロードしたテーマを選択します。
[material-black COLORS Complete Desktop [GS-3.36 support] - Eyecandy for your XFCE-DESKTOP - xfce-look.org](https://www.xfce-look.org/p/1316887/)

```terminal
[hibi221b@hibi221b ~]$ mkdir .themes
[hibi221b@hibi221b ~]$ cd Downloads
[hibi221b@hibi221b Downloads]$ ls
Material-Black-Pistachio_1.8.1.zip

[hibi221b@hibi221b Downloads]$ sudo pacman -S unzip

[hibi221b@hibi221b Downloads]$ unzip Material-Black-Pistachio_1.8.1.zip
[hibi221b@hibi221b Downloads]$ mv Material-Black-Pistachio ../.themes/
```

## menuの英語表記を日本語にする (任意)

左上の`Applications`とかを日本語にします。2章のロケールのところで`ja_JP.UTF-8`を生成しました。これをsystem localeに設定します。

```terminal
[hibi221b@hibi221b ~]$ su
[root@hibi221b ~]# localectl set-locale ja_JP.UTF-8
[root@hibi221b ~]# reboot
```

# おわり

後は、`Applications` -> `Settings` -> `Panel` -> `Panel 2` -> `Items`でLauncherのカスタマイズを行うと、完成です。

```terminal
[hibi221b@hibi221b ~]$ sudo pacman -S neofetch
[hibi221b@hibi221b ~]$ neofetch
```

![Screenshot_2023-12-07_09-19-04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281815/8323596a-be24-f017-7208-99d8a231f0d4.png)

お疲れさまでした！