# ArchLinux インストール ## archisoのダウンロードと検証 ***じぶんのarchとかからインストールするときは別にやらなくてもいいよ*** Linuxがもともと入ってるパソコンで実行する [ここ](https://www.archlinux.org/download/)から、isoとsignatureとsha1sums.txtとmd5sums.txtをダウンロードする /dev/sdaがusbのパスの場合 ```bash #!/bin/bash ARCHISO=archlinux-2021.05.01-x86_64 INSTALL_DRIVE=/dev/sda wipefs --all $INSTALL_DRIVE gpg --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 4AA4767BBC9C4B1D18AE28B77F2D434B9741E8AC gpg --keyserver-options auto-key-retrieve --verify $ARCHISO.iso.sig md5sum -c md5sums.txt sha1sum -c sha1sums.txt dd bs=4M if=$ARCHISO.iso of=$INSTALL_DRIVE status=progress oflag=sync ``` ## 前提 有線LANでインターネットに繋いでいることを前提とする ## 初期設定的な ### 配列を変える JISキーボードを使っていたら記号とかが打てないことがあるので、設定を変える `loadkeys jp106` ### UEFIか確認する `ls /sys/firmware/efi/efivars` ファイルとかが出てきたらUEFI ## パーティショニング ### まずやること `fdisk -l` で、どのドライブがどれか確認する それで、ミスらないためにパス(`/dev/sda`)とかを変数に入れる `INSTALL_DRIVE=<インストールしたいドライブのパス>` ### パーティションを作る ```bash wipefs --all $INSTALL_DRIVE # フォーマット sgdisk -n 1::+512M -t 1:ef00 -c 1:"EFI System" $INSTALL_DRIVE sgdisk -n 2:: -t 2:8300 -c 2:"Linux filesystem" $INSTALL_DRIVE ``` これで、 例えば、`$INSTALL_DRIVE`が`/dev/sda`だとしたら /dev/sda1、/dev/sda2ができる 確認: `fdisk -l $INSTALL_DRIVE` ### LUKS ```bash cryptsetup -v luksFormat "${INSTALL_DRIVE}2" cryptsetup open "${INSTALL_DRIVE}2" cryptroot ``` ### フォーマット ```bash mkfs.fat -F32 "${INSTALL_DRIVE}1" # FAT32でEFI Systemをフォーマット mkfs.btrfs /dev/mapper/cryptroot # btrfsでLinux Systemをフォーマット ``` ### btrfsのsubvolumeを作る ```bash mount /dev/mapper/cryptroot /mnt btrfs subvolume create /mnt/@root umount /mnt ``` ## 諸々をインストール ### マウント ```bash mount -o subvol=@root /dev/mapper/cryptroot /mnt mkdir /mnt/boot mount "${INSTALL_DRIVE}1" /mnt/boot ``` ### pacmanが使うサーバーを変える これを一番上に持ってくる ``` # Japan Server = https://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch Server = https://jpn.mirror.pkgbuild.com/$repo/os/$arch Server = https://mirrors.cat.net/archlinux/$repo/os/$arch Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch Server = http://mirrors.cat.net/archlinux/$repo/os/$arch ``` `:wq`が押せないんだが...?ってなったらしっかりキー配列を日本語にしたか確認した方がいい ```bash pacman -Syy # いつもの ``` ### pacstrapで必要最低限のパッケージをインストールする ``` pacstrap /mnt base base-devel linux-hardened linux-firmware dosfstools efibootmgr networkmanager btrfs-progs vim dhcpcd ntp sed ``` ### fstabを作成する fstabとは: https://wiki.archlinux.jp/index.php/Fstab `genfstab -U /mnt >> /mnt/etc/fstab` `genfstab`コマンドでfstabファイルを作る ### 作業場所を変える `arch-chroot /mnt` ### localeを設定する `en_US.UTF-8 UTF-8`はデフォルトでコメントアウトされてるのでそれを解除する ```bash sed -i -e 's/#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/g' /etc/locale.gen # コメントアウト解除 grep -E '^en_US\.UTF\-8 UTF\-8' /etc/locale.gen # 確認(コメントアウトされた行が一つでもあればOK) locale-gen # 反映 echo "LANG=en_US.UTF-8" > /etc/locale.conf # LANG 環境変数を設定する ``` ### keymapを変更 ``` echo KEYMAP=jp106 > /etc/vconsole.conf ``` ### タイムゾーンを設定 使うタイムゾーンを変更する ``` timedatectl set-timezone Asia/Tokyo ``` NTPサーバーと同期する ``` ntpdate -b ntp.nict.jp ``` 起動したときにNTPも起動するようにする ``` systemctl start ntpd.service systemctl enable ntpd.service ``` `/etc/ntp.conf` を、編集する ```diff - # Associate to Arch's NTP pool - server 0.arch.pool.ntp.org - server 1.arch.pool.ntp.org - server 2.arch.pool.ntp.org - server 3.arch.pool.ntp.org + server -4 ntp.nict.jp + server -4 ntp1.jst.mfeed.ad.jp + server -4 ntp2.jst.mfeed.ad.jp + server -4 ntp3.jst.mfeed.ad.jp ``` ハードウェアクロックの時間のズレを修正する ``` hwclock -w ``` ### initramfsを作成 initramfsとは:https://wiki.gentoo.org/wiki/Initramfs/Guide/ja `/etc/mkinitcpio.conf`を編集 ```diff - HOOKS=(base ... autodetect modconf block ... filesystems keyboard fsck) + HOOKS=(base systemd autodetect modconf block sd-vconsole sd-encrypt filesystems keyboard fsck) ``` mkinitcpioでinitramfsイメージを作る `mkinitcpio -p linux-hardened` ### ブートローダーをインストール systemd-bootでインストールする `/boot/loader/entries/arch.conf`に書き込む title: ブートメニューに表示する名前 linux: カーネルイメージのパス(ただし、 /boot を root とする絶対パスで指定) initrd: initramfs のパス(ただし、 /boot を root とする絶対パスで指定) options: カーネルパラメータ ``` title Arch Linux linux /vmlinuz-linux initrd /amd-ucode.img # amd製のCPUの場合 initrd /initramfs-linux.img options luks.uuid=<blkidしたときにでるUUIDを入れる> luks.options=allow-discards root=/dev/mapper/luks-<blkidしたときにでるUUIDを入れる> rootflags=subvol=@root rw ``` AMDのGPUを使っていて`failed to start Load/Save #tness of backlight:amdgpu_bl0`というエラーが出るようであればカーネルパラメータに`acpi_backlight=native`を追加する /boot/loader/loader.confを編集 ```bash default arch timeout 5 ``` ```bash bootctl --path=/boot install ``` そして、 ```bash systemctl enable NetworkManager ``` ### ノーマルユーザーを作成 ユーザー名とかを変数に入れる `USER_NAME=<ユーザー名>` ```bash useradd -m -G wheel -s /bin/bash $USER_NAME passwd $USER_NAME ``` ### CPUのマイクロコード 使っている方を選ぶ ```bash # Intel pacman -S intel-ucode # AMD pacman -S amd-ucode ``` ### 任意: NVIDIAのドライバを入れる ***NVIDIAのグラボを入れていない場合はこれはやらない*** ```bash pacman -S nvidia ``` そして、`lspci -k | grep -A 2 -E "(VGA|3D)"`で確認する 例: ```bash 26:00.0 VGA compatible controller: NVIDIA Corporation TU106 [GeForce RTX 2070] (rev a1) Subsystem: NVIDIA Corporation TU106 [GeForce RTX 2070] Kernel driver in use: nvidia # nvidia となっていれば成功 ``` ### LiveUSBのシャットダウン ```bash exit # arch-chrootを抜ける umount -R /mnt systemctl poweroff # 電源OFF ``` して、USBを抜いてSSDからブートする ## 実機で動かす ### WiFiにつなぐ ```bash nmcli d # デバイスを確認 nmcli d wifi list # WiFiをみる nmcli d wifi connect <ssid> password <password> # 接続 ``` ### DNS NextDNSに書いてあるやつをsystemd-resolveに書く ```bash sudo systemctl start systemd-resolved sudo systemctl enable systemd-resolved resolvectl status ``` ### キー配列を変更 ```bash sudo localectl set-keymap jp106 ``` ### かの有名なparuを入れる ```bash git clone https://aur.archlinux.org/paru cd paru makepkg -si cd .. rm -rf paru ``` ### hostnameを設定 `sudo hostnamectl set-hostname archlinux` ### いつもの ```bash paru -Syyu ``` ### dotfilesをいれる ```bash curl -fsSL https://raw.githubusercontent.com/shiychi/dotfiles/master/bin/install.sh | bash ``` ### X11関係を入れる Waylandのときは別にやらなくていい ```bash paru -S xorg-server xorg-apps xorg-xinit xterm ``` ### 任意: IntelのiGPUを使う場合 よく知りませんが、IntelのiGPUを使うときはこれをしなければいけないらしい ```bash paru -S xf86-video-intel ``` ### フォントを入れる ```bash paru -S noto-fonts-cjk noto-fonts-emoji ttf-nerd-fonts-symbols ttf-jetbrains-mono ``` ### i3を入れる X11の場合 ```bash paru -S i3-gaps ``` ### Swayを入れる ```bash paru -S sway-git grim ``` ### ほかのGUI関係を入れる まず、monospaceフォントを入れる ```bash paru -S i3status-rust alsa-utils bluez curl fakeroot lm_sensors networkmanager speedtest-cli upower rofi ``` ### `startx`で動くように X11の場合 `~/.xinitrc`を編集 ``` exec i3 ``` ### i3確認 ```bash sudo reboot # X11 startx # Wayland(Sway) sway でi3が来たら成功 ## 環境設定 いつもの `paru -Syyu` ***paruはsudoじゃなくてノーマルユーザーでやる*** ### 日本語入力(Fcitx5 + Mozc)を入れる ```bash paru -S fcitx5 fcitx5-im paru -S fcitx5-mozc-ut ``` `~/.xprofile`に下記を追記する ```bash export DefaultImModule=fcitx export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS="@im=fcitx" ``` ![fcitx-configtools](https://gyazo.com/a4301ceea77ed44129a12db68692d1b7.png) `fcitx-configtools`を開いて、このようになるようにする 日本語入力できない場合は、`Keyboard - Japanese`にしっかりなってるか確認する ## Dark theme ```bash paru -S gnome-themes-extra ``` `~/.gtkrc-2.0`に ```ini gtk-icon-theme-name = "Adwaita-dark" gtk-theme-name = "Adwaita-dark" gtk-font-name = "Noto Sans CJK"` ``` `~/.config/gtk-3.0/settings.ini`に ```ini [Settings] gtk-icon-theme-name = Adwaita-dark gtk-theme-name = Adwaita-dark gtk-font-name = Noto Sans CJK ``` ## Docker ```bash paru -S docker docker-compose # dockerグループがなければ作る sudo groupadd docker # 現行ユーザをdockerグループに所属させる sudo gpasswd -a $USER docker # dockerデーモンを再起動する sudo systemctl restart docker # 再起動する sudo reboot ``` ## virt-manager ```bash paru -S libvirt virt-manager sudo systemctl enable libvirtd.service virtlogd.service ``` `/etc/polkit-1/rules.d/50-libvirt.rules`に追記 ``` polkit.addRule(function(action, subject) { if (action.id == "org.libvirt.unix.manage" && subject.isInGroup("wheel")) { return polkit.Result.YES; } }); ``` ## Aseprite https://blog.rohanbansal.me/2020/05/24/Compiling-Aseprite-for-Linux/ これを見てやるといい