FreeBSD 安裝 ( macOS )

在 MacOS 安裝 FreeBSD

使用 parallels desktop 來操作

discdid 檔名結尾的比較

https://forums.freebsd.org/threads/difference-between-disc-1-and-dvd-1.54329/

parallels desktop 新增 VM

  1. 先選擇控制中心再選擇創建一個虛擬機器
  2. 選擇繼續
  3. 點選右邊的,使用鏡像檔來創建機器
  4. 繼續步驟
  5. 忽略警告並選擇 其他作業系統 (不是選其他 linux 系統)

安裝 FreeBSD

可以參考 : NYCU NASA 安裝 FreeBSD pdf

ssh 進入 FreeBSD ( 從 macOS 的終端機進入 FreeBSD VM )

  1. 輸入 ifconfig 指令來確認當前裝置被分配到的 IP
  2. ssh 進入 FreeBSD ( 跟登入其他 VPS 的步驟一樣 )
  3. 成功登入

作業

預先設定

  • judge 用戶 & group 設定
  • wireGuard VPN

功課說明

General task

  • SSH Public Key and judge User : 需要正確設定好 ssh 讓測試主機端有辦法連進來剛剛設定好的 VM 來測試主機的環境是否都達到作業需求。

public key (公鑰) 可以從 OJ(測試主機端) 下載,所以我們必須要將下載在本地端( macOS 這邊)的公鑰複製到 FreeBSD VM 中 (這個步驟可以看成是要將公鑰複製到任一台遠端的主機中一樣)

可以使用 ssh-copy-idscp 指令來將 public key 複製到 VM 中。

另一個解法是使用 curl 指令,直接從 OJ 下載 public key ( 就可以省去從本地端複製到遠端主機的步驟 )

至於 wiredGuard 的設定檔可以利用 scp 來複製到 VM 中 ( 同樣也可以利用 curl 指令來省去這個複製的步驟 )

  • Install FreeBSD 13.1-RELEASE and apply the security patch : 在安裝 FreeBSD 後, 執行 freebsd-version 應該會得到 13.1-RELEASE ( 並沒右 p7 標籤在後面 ) , 所以我們必須將系統更新到最新的修補版本 . 執行 freebsd-update fetch install 指令就可以將系統更新到最新修補版本了 .

  • Time Zone : 在執行 bsdintall 時,應該就已經把時區的部分設定完了

User & Group task

使用 adduser 指令( 在執行這個指令時,當前的用戶必須要有 root 的權限 ) 來新建立用戶並設定群組。

至於 judge user could run sudo command without password ( judge 用戶不需要輸入密碼就可以執行 sudo 指令 ) 的要求 , 我們必須要更改 sudoer 的設定檔 . ( 同樣的,在執行這個指令時,當前的用戶必須要有 root 的權限 )

  1. 透過 visudo 指令 : 從指令名稱就大概推的出來要如何使用了,visudo會直接開啟 vi 編輯器讓我們修改 sudoer 設定檔案
  2. 透過 vim 編輯器來修改 sudoer 設定檔 : 預設的 sudoer 設定檔位於 /usr/local/etc/sudoers , 所以我們可以透過 vim 來修改 sudoer 設定檔 ( vim 顯然比 vi 好用多了 ) .

WireGuard

scp 指令複製設定檔到 /usr/local/etc/wireguard/ 目錄 . 再透過 wg-quick 指令來開啟 VPN .

可以從這邊參考如何安裝 wireguard : https://www.wireguard.com/install/#freebsd-kmod-userspace-go-tools

commands

  • freebsd-update fetch install : 將系統更新至最新修補版本
  • shutdown -p now
  • reboot
  • su :
    • su - USERNAME : 切換至 USERNAME 用戶 ( 整個環境都會套用 )
    • su USERNAME : 切換至 USERNAME 用戶 ( 有些原本用戶的環境會被保留 )
  • groups USERNAME : 檢查 USERNAME 的群組
  • adduser
  • rmuser
  • pw group mod GROUP_NAME -m USERNAME : 將 USERNAME 用戶(已經建立的) 加到 GROUP_NAME 群組
  • visudo : 編輯 sudoer 設定檔
    • sudoer 設定檔預設路徑 : /usr/local/etc/sudoers
  • wg-quick
    • wg-quick up /path/to/file.conf : 啟動 VPN
    • /usr/local/etc/wiredguard/vpnName.conf ( 預設的設檔路徑 )
  • scp
    • scp /path/to/local-server/file User@Host:/path/to/remove-server/dir
  • ssh-copy-id
    • ssh-copy-id -i /path/to/keyGenFile.pub User@Host
  • service sshd restart

遇到的奇怪 Bug ?

Bug 說明: 在設定完 wiredGuardauthorized_keys 後,測試主機端有辦法 ping 到 VM 但沒有辦法 ssh 進入 VM

I have tried remove .ssh/authorized_keys and download public key from judge server serverl times , however the judge server still not can ssh into MV.

解決:

我朋友歐文,直接把整個整個 .ssh 資料夾刪除再重新創建並複 authorized_keys 就解決了 .

目前也還沒搞清楚是哪個步驟造成的?

參考資料