> 撰寫開始時間: 2023/07 > > 建置之硬體環境: > * CPU: i3-12100 > * RAM: 16GB > * Disk: 512GB SSD/4TB HDD > * MB: ASUS PRIME B660M-K D4-CSM > * Network: Ethernet # 播種與施肥 > 從 USB 開機到初次重新開機。 請準備好 Arch linux 安裝印象檔並燒至 USB,插入電腦後開機,當然虛擬機也行,這部分比較基礎就不囉嗦了。 另外,如果在這個階段不小心搞錯任何操作或命令,除了被格式化的硬碟外都可以挽回,也可以嘗試重新開機並繼續用 USB 操作多次,並不是初次重開機前搞砸後就沒救了。 ## (Optional) 無線網路連線 當安裝之目標電腦沒有有線網路時,需先設定 Wifi 連線,因為後續需要安裝很多東西,包含 Network Manager 等。 ``` [iwd]# device list ``` 確認自己網路設備的名字 (以 `wlan0` 為例) 後,啟用 scan 功能。 ``` [iwd]# station wlan0 scan ``` 查看可連線的無線網路。 ``` [iwd]# station wlan0 get-networks ``` 連線上網,假設想要連上 `Eroiko` 這個 wifi。 ``` [iwd]# station wlan0 connect Eroiko Passphrass: ******** # 叫我們輸入密碼 ``` 離開 `iwctl` 然後嘗試 `ip a` 以及 `ping` 一下看是否成功連上網。 ## 格式化硬碟 注意,被格式化的硬碟將無法挽回,這裡務必慎重。 ### 基本概念 眼下的檔案系統是 USB 的,目前還沒有掛載任何目標電腦的硬碟,所有對目標電腦檔案的修改都要等到掛載後才能使用。 現在使用 `ls /` 會看到的是 USB 中的根目錄資訊,當中會看到有個資料夾叫 `/mnt`,是掛載硬體的常用根目錄,在切換至正式的檔案系統 (`arch-chroot`) 之前,「正式的根目錄」就是 `/mnt`,比如正式的家目錄就是 `/mnt/home`,依此類推。而我們會把根目錄對應的 partition 掛載至 `/mnt` 下,家目錄對應的 partition 掛載至 `/mnt/home`。 切換至目標電腦後,檔案系統的結構就是我們熟悉的 Linux 慣用的檔案系統結構了。 ### 佈局與檔案系統 以下將建立一個典型簡單的 Partition 佈局:root + home (Ext4)。 事實上各位可以選擇自己喜好的佈局方式以及 File System,比如: * 一個 root 走天下風 (with Ext4) * 經典款 root + home (with Ext4) * VFS 對物理硬碟抽象 * Btrfs Raid * ZFS Storage Pool * ... 要不要分 swap 也是個人的自由,就算沒 swap,Linux 也會在記憶體不足時生出 tmpfs,所以也不是特別必要。 ### 分割硬碟 用 `cfdisk` 點陣圖型介面互動式的快樂分割:) > fdisk 也行,但 `cfdisk` 更簡單好用。 > 可以善用 `lsblk` 來得知可用的硬碟。 ``` cfdisk <DISK_PATH> ``` ### 根目錄的格式化與掛載 格式化為指定的 file system。 > 在此設為 ext4,也可以 btrfs 等等的,e.g. 用 `mkfs.btrf`,不過指令就沒那麼簡單了,請參考[Btrfs 官網](https://archive.kernel.org/oldwiki/btrfs.wiki.kernel.org/)。 ``` mkfs.ext4 /dev/... ``` 將根目錄掛載到格式化好的資料夾。 ``` mount /dev/... /mnt ``` ### EFI 磁區的掛載 (Optional) 若 EFI 磁區不存在,也就是裝在全新的硬碟上時,格式化 EFI 磁區 ``` mkfs.vfat -F 32 /dev/... ``` 創建 EFI 資料夾 ``` mkdir /mnt/boot ``` 將 EFI 磁區掛載到格式化好的資料夾 ``` mount /dev/... /mnt/boot ``` ### 家目錄的格式化與掛載 (optional) `home` 資料夾也類似,不過要先創建資料夾 ``` mkdir /mnt/home mkfs.ext4 /dev/... ``` 將家目錄掛載到格式化好的資料夾 ``` mount /dev/... /mnt/home ``` 最後可以用 `lsblk` 來確認是否根目錄、家目錄和 EFI 磁區都掛載到正確的位置。 ### 建立 file system table (`fstab`) ``` mkdir /mnt/etc genfstab -U -p /mnt >> /mnt/etc/fstab ``` 透過查看 `/mnt/etc/fstab` 確認是否成功建立檔案系統表 ``` cat /mnt/etc/fstab ``` 應該要看到我們剛創建並掛載好的 `/` (`/mnt`)、`/home` (`/mnt/home`) 目錄,以及 `/boot` (`/mnt/boot`) 目錄與對應的相關訊息。 ## 上網安裝基本模組 (Optional but recommended) 在進行安裝與下載操作之前,可以先去開啟 Arch Linux 的 package manager: `pacman` 的平行下載功能。 至 `/etc/pacman.conf` 尋找 `ParallelDownloads` 關鍵字,把下面這行反註解掉: ```txt #ParallelDownloads = 5 ``` 上述修改將作用在 USB 上,之後切換 (`arch-chroot`) 到安裝中的 Arch Linux 上也推薦這樣做。 接著正是下載並安裝好基本模組,然後就可以準備切換到剛裝好基本套件的 Arch Linux 下繼續安裝了。 ``` pacstrap -i /mnt base arch-chroot /mnt ``` > 如果遇到奇怪的 key 問題,可以用以下指令來解決 (通常是因為 ISO 太舊) > > ``` > sudo pacman -S archlinux-keyring > sudo pacman -Syu > ``` > > https://www.linuxquestions.org/questions/arch-29/neglected-upgrading-for-a-few-weeks%3B-is-this-a-problem-4175715274/ ## 系統基本設定 ### Arch Linux 套件管理器 Pacman 基本介紹 [pacman/Tips and tricks](https://wiki.archlinux.org/title/pacman/Tips_and_tricks) Pacman 為 Arch Linux 的官方套件管理器,與 Debian 系中的 `apt`,最常用的指令不外乎: ```bash sudo pacman -S <PACKAGE_NAME> ``` 跟 Debian 系的 `apt` 有點像,他們有著以下的關係。 ```bash # 搜尋 local repository list 並嘗試安裝軟體 apt install <PACKAGE_NAME> pacman -S <PACKAGE_NAME> # 更新 local repository list apt update pacman -Sy # 升級所有軟體至最新版本 apt upgrade pacman -Su # 更新 local repository list 並升級所有軟體 apt update && apt upgrade pacman -Syu ``` 懶人包: 一段時間沒用 Arch Linux 的話,第一個安裝指令都是 ```bash sudo pacman -Syu ``` 而後續為了節省時間,會使用最快速的 ```bash sudo pacman -S ``` ### 安裝基本模組 這些東西八成都會用到的,裝下去就對ㄌ >w0 ```bash pacman -S linux linux-headers linux-firmware base-devel openssh networkmanager network-manager-applet wpa_supplicant wireless_tools netctl efibootmgr dialog mtools dosfstools ``` 另外至少裝一個用的順手的文字編輯器,以下是常見的兩個都裝。 ```bash pacman -S vim nano ``` ### 啟用系統服務 允許啟用剛剛裝的 Network Manager 和 ssh。 > 系統服務 [`systemctl`](https://wiki.archlinux.org/title/systemd) 的常用指令如下 (當然,正常使用者都需要 `sudo`) > > #### 單次啟用 `SERVICE_NAME` > 立即啟用服務。 > ``` > systemctl start <SERVICE_NAME> > ``` > #### 允許啟用 `SERVICE_NAME` > 在下次開機時生效。 > ``` > systemctl enable <SERVICE_NAME> > ``` > #### 允許並立即啟用 `SERVICE_NAME` > ``` > systemctl enable --now <SERVICE_NAME> > ``` > #### 停止啟用 `SERVICE_NAME` > 在下次開機時生效。 > ``` > systemctl disable <SERVICE_NAME> > ``` > #### 查看 `SERVICE_NAME` 的狀況 > ``` > systemctl status <SERVICE_NAME> > ``` > #### 刷新 `systemctl` > ``` > systemctl daemon-reload > ``` #### 啟用 network manager ``` systemctl enable NetworkManager ``` #### 啟用 ssh 服務 ``` systemctl enable sshd ``` ### 設定 initrd (initial ram disk) ``` mkinitcpio -p linux ``` > [mkinitcpio](https://wiki.archlinux.org/title/mkinitcpio) is a Bash script used to create an initial ramdisk environment. ### 設定密碼與使用者 #### 設定 root 密碼 ``` passwd ``` #### 為 `wheel` 使用者群組設立 `sudo` 權限 > 後續將假定 `wheel` 群組擁有 `sudo` 權限 ``` visudo ``` 然後至 `# %wheel ALL=(ALL) ALL` 這行將其反註解。 #### 新增新使用者 > 新增使用者 `SOME_NAME` 至 `users` 群組且為其指派家資料夾 (`-m`),並將其加入可選群組 `wheel`,以便使用 sudo。 ``` useradd -m -g users -G wheel SOME_NAME ``` #### 為新使用者設定密碼 > 為 `SOME_NAME` 使用者設定密碼。 ``` passwd SOME_NAME ``` ## 美麗的 rEFInd 安裝 [rEFInd](https://wiki.archlinux.org/title/REFInd) 套件。 ``` pacman -S refind ``` 接著將 rEFInd 安裝到 `/boot` 下,其安裝內容與設定檔會在 `/boot/EFI/refind` 下: ``` refind-install ``` 然後去刪除 `/boot/refind_linux.conf` 裡的前兩行 (與 USB 相關的掛載點)。 這樣便完成基本設定,接下來可以去 [rEFInd theme](https://github.com/topics/refind-theme) 找好看的主題安裝 :) 安裝在 `/boot/EFI/refind/themes` 下,並去 `/boot/EFI/refind/refind.conf` 的最後一行加入: ```txt include themes/<YOUR_THEME_FOLDER>/theme.conf ``` Ref: [rEFInd引导使用教程](https://zhuanlan.zhihu.com/p/67114559) 到此,已經完成最基本的設定,可以準備拔掉 USB 並初次重新開機。 # 成長茁壯 > 初次重新開機後的基本設定。 ## (Optional) 正式連上 Wifi [3 Ways to Connect to WiFi from the Command Line on Debian](https://linuxhint.com/3-ways-to-connect-to-wifi-from-the-command-line-on-debian/) ## 安裝 Nvidia > 這裡務必萬分謹慎,否則可能會落到要重裝的地步... > 安裝時請對照[官方文件](https://wiki.archlinux.org/title/NVIDIA),確認自己的 Nvidia 顯卡對應之驅動的安裝方式。 最泛用的安裝程序如下: * 安裝套件 ```bash sudo pacman -S nvidia ``` * 關閉 `kms` hook 來避免 `initramfs` 加載 `nouveau` 去 `/etc/mkinitcpio.conf` 把 `HOOKS` 這行列表中 `kms` 去掉。 * 套用新 `initramfs` 加載設定 ```bash sudo mkinitcpio -P ``` * 重新開機 > 不要拖,直接重開來應用設定 ```bash sudo reboot ``` ### 調整時區、主機、網路 這些設定不急,之後調都可以。 #### 列出時區相關資訊 ``` timedatectl ``` #### 列出所有時區 ``` timedatectl list-timezones ``` #### 將時區設為台北(以台北為例) ``` timedatectl set-timezone Asia/Taipei ``` #### 列出主機名稱相關資訊 ``` hostnamectl ``` #### 設定主機名稱為 `SOME_NAME` > 以下使用者都以 `SOME_NAME` 舉例,表示某使用者 ``` hostnamectl hostname SOME_NAME echo "SOME_NAME" >> /etc/hostname ``` #### 反註解自己的語言設定 ``` vim /etc/locale.gen ``` #### 正式生成語言設定 ``` locale-gen ``` #### 啟用時間自動同步的系統服務 ``` systemctl enable systemd-timesyncd ``` ## 安裝 [AUR](https://aur.archlinux.org/) 為 Arch 社群的套件庫,裏面各種五花八門的套件都有。事實上,真正使用應用程式時多數都不是使用 pacman,而是 AUR 的套件管理器: `yay`,用起來跟 pacman 一樣香。 另外注意到 `yay` 為了系統安全,不允許在管理者權限下安裝軟體,使用時應該作為一個正常使用者的情況下進行操作,而非 root。 ```bash sudo pacman -S git git clone https://aur.archlinux.org/yay.git cd yay makepkg -si ``` 有 `yay` 後我們可以先來補足前面缺少的一些小套件。 ### (Optional) 補齊 cpio ```bash yay -S mkinitcpio-firmware ``` ### 中文支援 ```bash yay -S ibus ibus-chewing libibus libchewing ``` 另外可以先安裝 `noto-fonts-cjk` 和 `noto-fonts-emoji` 預備。 ### 日本語支援 > 如果前面已經裝過 `ibus` 就不用再裝了 ```bash yay -S ibus ibus-mozc ``` ## tty 終端機字型調整 安裝適配原生終端機的 bitmap 字型 ``` sudo pacman -S terminus-font ``` 單次設定字型 ``` setfont <font-name.gz> ``` `<font-name.gz>` 有哪些選擇可至 `cd /usr/share/kbd/consolefonts` 查看。 然後設定每次開機的 tty 終端機字型,去 `/etc/vconsole.conf` 裡面加入 `FONT=<font-name.gz>` [How to Change Linux Console Fonts using Arch Linux - Change the font to actually see it!! (2021)](https://www.youtube.com/watch?v=nxUTnZVdS64) ## 優雅強大的終端機設定 `oh my zsh` > ~~提升開發效率 X, 心情愉快 O~~ > oh my zsh 算效能比較低的,不過簡單好設定 OwO ### 建置目標 #### 主體 | | Target | Feature| | ------------- | ----------- |--| | Shell | [`zsh`](https://zh.wikipedia.org/zh-tw/Z_shell) | 比起 `bash` 有更多開箱即用的功能,能輕鬆客製化 | | Framework | [`oh my zsh`](https://ohmyz.sh/) | 能裝很多主題、外掛的 `zsh` 框架 | | Theme| [`powerlevel10k`](https://github.com/romkatv/powerlevel10k) | 極其美妙的終端機主題,內建可調整許多美觀與呈現資訊設定 | #### 外掛 * [`zsh completion`](https://github.com/zsh-users/zsh-completions): 根據當前的輸入自動補全命令。 * [`auto suggestion`](https://github.com/zsh-users/zsh-autosuggestions): 根據過往的命令與當前的輸入自動建議輸入。輸入時在背後會浮現淺色的提示。 * [`syntax highlighting`](https://github.com/zsh-users/zsh-syntax-highlighting): 對命令加上顏色標註。合法的命令顯示綠色、不合法的為紅色、字串為黃色... ### 下載並安裝必要套件 先安裝等等要用到的套件... ```bash sudo pacman -S git curl vim neofetch zsh ``` 然後安裝 `oh my zsh`,接著下載 `zsh` 相關外掛於 `oh my zsh` 內。 > 使用 ZSH 變數將外掛放入 `oh my zsh` 內管理的命令自動化。 ```bash # install oh my zsh and zsh plugins yes | sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" # zsh-completion git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions # zsh-autosuggestions git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions # zsh-syntax-highlighting git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting # powerlevel10k git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k # after this, go into zsh zsh ``` (以下為讓 `powerlevel10k` 能大展身手的等寬字型的安裝,非必要。) 由 [powerlevel10k 官方](https://github.com/romkatv/powerlevel10k#fonts)建議,使用 `Meslo Nerd Font` 連體字型最合適,該網站列敘該如何安裝此字型,並在終端機中使用。 ### 調整 `zsh` 客製化設定 接著進入 `zsh` 設定檔 `~/.zshrc`。 > 請使用 `vim`, `nano`, `emacs`, `gedit` 之類的文字編輯器,依照前面的命令的話,應該已經裝好 `vim` 了。 1. 將 `powerlevel10k` 主題加入設定 找到 `ZSH_THEME` 參數,修改設定。 ```bash # Set name of the theme to load --- if set to "random", it will # load a random theme each time oh-my-zsh is loaded, in which case, # to know which specific one was loaded, run: echo $RANDOM_THEME # See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes ZSH_THEME="powerlevel10k/powerlevel10k" ``` 2. 將前面 clone 進來的外掛程式庫加入設定 注意 `zsh complition` 不應該直接加入 `plugins` 列表中。詳見 [issue 603](https://github.com/zsh-users/zsh-completions/issues/603#issuecomment-967116106)。 ```bash # auto suggestion, syntax highlighting plugins=(git zsh-autosuggestions zsh-syntax-highlighting) # zsh completion fpath+=${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions/src ``` 另外,以上設定必須在 `source $ZSH/oh-my-zsh.sh` 這行以前,因為該行即是啟動 `oh my zsh` 與其管理之所有外掛。 3. 啟用 `powerlevel10k` 主題 儲存對 `~./zshrc` 的修改,並用以下命令使其生效。 ```bash source ~/.zshrc ``` 此時 `powerlevel10k` 會根據當前終端機的字型提示我們跟如何完成此主題的快速調整。若對調整的結果不滿意,可使用 `powerlevel10k` 內建命令 `p10k configure` 來啟動快速設定程式。 4. (Optional) 使用 `neofetch` 將 `neofetch` 加入 `.zshrc` 的第一行,即可在每次開啟終端機時印出系統基本訊息。 # 開花結果 > 邁入圖形介面 Gnome 以 Gnome 為例,安裝只要一句就好,就是要稍等一下。 ``` sudo pacman -S gnome ``` 接著會問很多問題,無腦 Enter 是一個選擇,只是 Gnome 就會裝一堆你可能不想要的套件,最好可以查查那些套件都在做啥。 下面列出比較重要的幾個套件: * baobab: 硬碟空間分析 * gdm: Gnome display manager * gnome-backgrounds * gnome-characters * gnome-color-manager * [gnome-connections](https://apps.gnome.org/zh-TW/app/org.gnome.Connections/): 遠端連線 * gnome-console: 陽春終端機... (拿來裝 gnome-terminal 後就可以忽視了) * gnome-control-center: 設定 * gnome-disk-utility: 基礎易用的硬碟管理 * gnome-font-viewer * gnome-keyring: 密碼管理器 (鑰匙圈) * gnome-logs * gnome-menus: 如其名,menu,也就是檢視所有軟體的軟體 * gnome-remote-desktop * gnome-session * gnome-setting-daemon * gnome-shell * gnome-shell-extensions * gnome-software... 就是軟體商店...但真的沒多好用 0.0 * gnome-system-monitor * gnome-user-docs ?! * gnome-user-share * [grilo-plugins](https://gitlab.gnome.org/GNOME/grilo-plugins) * [gvfs](https://zh.wikipedia.org/zh-tw/GNOME%E8%99%9A%E6%8B%9F%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F) * `gvfs-*` 都是輔助軟體 * [malcontent](https://gitlab.gnome.org/GNOME/gnome-software/-/merge_requests/190) * mautilus: gnome 的檔案總管 * [Orca](https://help.gnome.org/users/orca/stable/) 然後啟用系統服務。 ```bash sudo systemctl enable gdm # enable gdm, will start service when next boot sudo systemctl start gdm # start gdm, switch to gnome immediately ``` ## Gnome 的基本設定與外掛 安裝 Gnome tweaks、gnome extension (根據不同版本的 Gnome 方法有異,就不記錄了)。 Gnome extensions 中建議安裝: * dash to dock: 讓工作列變得像 macOS * blur my shell: 讓頂端變的透明,像是 macOS * clipboard indicator: 顯示歷史複製文字列表 * freon: 安裝第二個,有圖示的那個 * net speed simplified: 顯示網速 * alphabetical app grid * just perfection * AppIndicator and KStatusNotifierItem Support: 顯示 CPU 等的性能數據 ## GUI 下好用軟體安裝紀錄 * [Vscode](https://wiki.archlinux.org/title/Visual_Studio_Code) > 以上官方推薦的三個都行,我是選 Microsoft 官方版。 > ~~不要裝 Gnome software store 或者野雞版的,保證會讓你失望,功能東缺一塊西缺一塊。~~ ```bash yay -S visual-studio-code-bin ``` * Discord + better discord ``` yay -S discord ``` 在 Linux 上裝 better discord 可見[官網](https://gist.github.com/ObserverOfTime/d7e60eb9aa7fe837545c8cb77cf31172)。 注意 better discord 的 themes 和 plugins 路徑為 `~/.config/BetterDiscord/{themes,plugins}`。 # 遠端作業 作為伺服器的 Arch Linux,需要確保能順暢遠端操作。 ## Wake On LAN 網路喚醒 ### WOL (Wake On LAN) 介紹 原理是特殊的網卡在電腦關機時,仍能接收 Magic Packet (魔法封包),接收到時透過 PCI 通知主機板開機。默認接收 Magic Packet 的 Port 為 `9` 或 `7`。 ### 魔法封包 魔法封包的內容為 6 bytes 的 `F` 和 96 bytes 的目標網卡 MAC 地址 (48 bits) 重複 16 遍。故封包大小為 $$ 6 + \dfrac{48}{8 \rm{bit}} \times 16 = 102 \ (\rm{bytes}) $$ > 魔法封包的細節原文,引自[維基百科](https://en.wikipedia.org/wiki/Wake-on-LAN)。 > > The magic packet is a frame that is most often sent as a broadcast and that contains anywhere within its payload 6 bytes of all 255 (FF FF FF FF FF FF in hexadecimal), followed by sixteen repetitions of the target computer's 48-bit MAC address, for a total of 102 bytes. ### 設定 WOL 有三方面的設定要完成。 1. 硬體 首先確認**主機板**與**網卡**是否支援 WOL (當今網卡基本上都支援)。 接著進 BIOS,依照各個主機板不同的方式開啟 WOL 功能。 :::success 比如[本主機板](https://www.asus.com/tw/motherboards-components/motherboards/prime/prime-b660m-k-d4-csm/techspec/),[華碩官網](https://www.asus.com/tw/support/FAQ/1045950/)說要啟動 Power On By PCI-E 選項。 ::: 2. OS 端 以下簡單說明作法。 1. 確認 `ethtool` 是否已安裝 ```bash sudo pacman -S ethtool ``` 2. 確認乙太網設備名稱 ```bash ip a # 列出所有網路設備與相應的連線資訊 ``` 找到狀態為 `UP` 的乙太網卡,其名稱通常以 `e` 開頭,比如 `ethX`, `enpXsY` (`X`, `Y` 為某數字)。找到後,以下暫稱該乙太網卡為 `ethX`。 3. 確認乙太網設備狀態 ```bash sudo ethtool ethX ``` 會列出 `ethX` 的一系列狀態,其中 `g` 表有啟用 WOL;`d` 表未啟用。若只想單次設置 WOL,用以下命令即可。 ```bash sudo ethtool -s ethX wol g # 設定 ethX 的 wol 項目為 g (enable) ``` 4. 為網路介面設定自動啟用 `WOL` * 以 yay 安裝 `wol-systemd` ```bash yay -S wol-systemd ``` * 啟動系統服務 > `@` 後面為監視 WOL 的網路介面 ```bash sudo systemctl enable wol@enp4s0 ``` 以上方法即可一勞永逸。 另外無線網卡的情況較複雜,而且 NAS 比較建議是走乙太網才較穩定且高速,故不特別介紹,有興趣者可參見[本網站](https://www.cyberciti.biz/faq/configure-wireless-wake-on-lan-for-linux-wifi-wowlan-card/)。 3. 啟動 此時 server 已經準備好被喚醒。我們需將 Magic Packet 送至網卡所在之主機的 Port `9` (or `7`)。 可以使用手機、電腦等喚醒。比如 Andriod 手機的 [WolOn](https://play.google.com/store/apps/details?id=com.bitklog.wolon&hl=zh_TW&gl=US)、Linux/macOS 的 `wakeonlan` 套件 (macOS 可使用 `brew` 下載使用)。 不過我也寫了個簡單的 Python 腳本可完成區域網路、網際網路 (IP/Domain name),請參考 [wakeonlan](https://github.com/Shiritai/wakeonlan) 腳本 * 區域網路喚醒 以 `wakeonlan` 套件為例。預設會將 `MAC_ADDRESS` 發送至 `255.255.255.255:9` (也就是 braodcast)。套件使用細節可用 `wakeonlan` 命令查詢。 ```bash wakeonlan MAC_ADDRESS ``` * 網際網路喚醒 除了要知道 MAC 地址,還需要知道 IP 位置。 :::warning 只要扯上網際網路,一切就麻煩起來了 :p ::: 為此要解決兩個問題: * 家用環境下,可能會遇到浮動 IP 的議題,此時可使用 DDNS 服務,或者將 IP 轉為固定 IP。 * 要調整 Port Forwarding,將封包傳遞至正確的 LAN IP + Port。(常見是 External Port `9` 傳遞至`Host_LAN_IP:9`) ## `SSH` 設定 > ssh 方便我們在遠端控制電腦,可依此使用 `SSHFS`, `VSCode remote service` 等方便功能。 * 安裝 > 其實前面已經做過這件事了。 ```bash sudo pacman -S openssh ``` * 啟用 ```bash sudo systemctl enable sshd # enable ssh server ``` * 確認伺服器端狀態是否正常 ```bash sudo systemctl status sshd # you should see ``` 應該看到類似以下結果。確認 `ssh.service` 和 `vendor preset` 為 `enable`,前者表當前是否啟用服務,後者表啟動時是否自動啟用本服務 (`ssh`)。 ```bash ● sshd.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: active (running) since ... ``` * (Optional) 將本地 ssh 公鑰加入伺服器 ```bash ssh-copy-id IP_OF_SERVER ``` ## Anydesk 遠端工作 ```bash yay -S anydesk-bin ``` 目前 anydesk 只支援 x-window GUI,wayland 這種比較新的不行,可用以下指令確認: ```bash echo $XDG_SESSION_TYPE ``` 如果出現 `x11` 表 ok,`wayland` 的話目前不行,可以 sign out 後在輸入密碼處右下角選擇 `gnome-xorg` 便可。 然後設定無人值守功能,這樣就不用每次連線時都需要在 host 點確認。 另外 Anydesk 實際上整合了 WOL 功能,>w0 很好用ㄉ ## Hyprland 為基於 Wayland 的 GUI,以高效絢麗著稱。 首先安裝 Hyprland... ```bash sudo pacman -S hyprland ``` 然後安裝 Hyprland 小工具 ```bash yay -S kitty waybar-hyprland otf-font-awesome network-manager-applet brightnessctl pw-volume hyprshot power-profiles-daemon wofi hyprpaper swayidle swaylock wlogout dunst cliphist pipewire pipewire-pulse wireplumber pavucontrol xorg xorg-xwayland xdg-desktop-portal-hyprland xdg-desktop-portal-gtk polkit-kde-agent qt5-wayland qt6-wayland qt5ct nwg-look udiskie greetd greetd-tuigreet chezmoi fcitx5-im fcitx5-chewing fcitx5-qt fcitx5-gtk fcitx5-chinese-addons ```