動機

這是更新上次安裝arch的流程

  1. 用systemd-boot
  2. 用systemd-networkd
  3. 用systemd-homed
  4. 用doas
  5. 優化pacman

systemd-boot

取代grub,預設裝在systemd中的bootloader

詳細流程

  1. /boot/創好
  2. 裝arch
  • 之後/boot/中要有initrf與vmlinuz
  1. bootctl install
  2. 放設定檔

/boot/loader/loader.conf

default arch
timeout 0

/boot/loader/entries/arch.conf

title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options root=PARTUUID=[UUID] rw

UUID用blkid -s PARTUUID -o value [path to arch root device]

systemd-networkd

就是管網路的,但不太好用,想預設沒個網卡用dhcp要自己設定

/etc/systemd/network/10-dhcp.network

[Match]
Name=*

[Network]
DHCP=Yes

systemd-homed

創帳號很痛苦

新的管帳號的方式,但很不方便

  1. 在chroot時不能用systemd,所以沒辦法創帳號
  2. 創帳號一定要密碼,但沒辦法用echo去給!!

第一點目前沒想法,所以就等reboot後再創帳號 homectl create {{ user_id }} --group=wheel --shell=/bin/zsh

第二點在翻了homectl的source code發現有一個env可以放密碼!! "NEWPASSWORD={{ user_pw }} homectl create {{ user_id }} --group=wheel --shell=/bin/zsh

ssh沒有啟動的帳號

arch的wiki有解法

  1. 在創帳號時紀錄sshd要去哪邊看authorized-keys
  • NEWPASSWORD={{ user_pw }} homectl create {{ user_id }} --group=wheel --shell=/bin/zsh --ssh-authorized-keys=@/home/authorized_keys
  1. 改sshd_config
  2. 之後登入都是用public key與password

sshd_config

AuthenticationMethods publickey,password
AuthorizedKeysCommand /usr/bin/userdbctl ssh-authorized-keys %u
AuthorizedKeysCommandUser root
PasswordAuthentication yes

su不給用

另外還有一個是homed沒辦法直接su,這要改su的pam(原本只吃unix的account) /etc/pam.d/su-l

auth        include         system-auth
account        include         system-auth
session        include         system-auth
password        include         system-auth

doas

simple的sudo

doas conf

/etc/doas.conf

permit persist :wheel

在wheel group可以用doas,同時在成功auth後一段時間不用打密碼

doas auto-complete

~/.bashrc

complete -cf doas

優化pacman

reflector怪怪的

當初是用reflector直接掃,但是之後看出來的結果沒有最好的site,所以就直接用自己的吧

另外,在安裝環境改的mirrorlist會直接影響到被安裝的mirrorlist。 也就是只要copy一次,在chroot中不用再複製一次

Server = http://free.nchc.org.tw/arch/$repo/os/$arch
Server = http://archlinux.cs.nctu.edu.tw/$repo/os/$arch
Server = http://shadow.ind.ntou.edu.tw/archlinux/$repo/os/$arch

pacman平行化

pacman一次只載一個,所以要改一下設定 /etc/pacman.conf

...
ParallelDownloads = 10
...