Raspberry Pi 4 運行 64bit OS+ 外置硬碟

CocoaCaa
7 min readNov 23, 2019

--

我上一部已經是國產紅色版的 Raspberry Pi,當時只有 512MB 的記憶體+ 1 核心 CPU。直到今天,Raspberry Pi 4 具備最高 4GB 的記憶體 + 4 核心 CPU,還有 USB 3.0,卡片大小的電腦已經有這樣的表現 (OAO)。作為一部個人電腦、一般網頁伺服器可說是綽綽有餘呢~

就是這樣,近日買了一部 Raspberry Pi 4 Modal B - 4GB 試試它的功能,設置為一部伺服器。

為何安裝 Ubuntu 而不是 Raspbian?

如果大家之前也有用 Raspberry Pi,可能會安裝官方提供的 Raspbian OS。不過 Raspbian OS 是 32bit。如果要運行 64 bit 的程式需要安裝 64bit 的 Kernal,但始終不是真正 64bit OS。而 Ubuntu 有 Raspberry Pi 4 而做的版本,亦是因為 Ubuntu 是用 Debian 作為基本,所以操作上和 Raspbian 分別不會太大。

使用外置硬碟的好處?

Raspberry Pi 使用 SD卡便可以運行,不過讀出及寫入也太慢了(就算是 Class 10 都只有 10MB/s,課金再高一級也太貴了吧……)現在的 Raspberry Pi 4 具備 USB3.0,連接外置硬碟/固態硬碟也比較經濟實惠而更高的效率,任何需要處理檔案的程式也相對上運行速度更快呢。

安裝

開始前的準備

開始前需要以下的東西:

下載 Ubuntu Server

可以經 Raspberry Pi 第三方下載頁 https://www.raspberrypi.org/downloads/,或直接前往 https://ubuntu.com/download/raspberry-pi。大約 630MB 的 .img.xz 映像檔案。

Ubuntu Server Raspberry Pi 3/4 映像檔案下載頁面

載入 Ubuntu Server 到 SD 卡

Raspberry Pi 官方網頁建議用 balenaEtcher 將映像檔案載入到 SD 卡裏,方便又快捷。那我們使用這個程式吧~(當然也可以用 dd 指令進行這個程序)

balenaEtcher 載入映像檔案界面

SSH 設定、開機

設定 SSH 為方便不用額外的顯示器和鍵盤,只要在 /system-boot 開一個新檔案名為 ssh(沒有副檔名)就可以 SSH了。然後將 SD 卡放入 Raspberry Pi,插入電源。

等一下後,開啟你電腦的終端機(在 Windows 可用 PowerShell)鍵入
ssh ubuntu@ubuntu
密碼是 “ubuntu”(全部都是 ubuntu XD)第一次連入需要更改密碼,之後再連入便可以真真正正進入 Raspberry Pi×Ubuntu 的世界了。

SSH 連入 Raspberry Pi

設定外置硬碟分割區

分割硬碟有很多不同的工具(例如:fdisk),而我選擇了使用 cfdisk(有互動界面的硬碟分割程式,本來就已經安裝了在 Ubuntu Server)如果只有一硬碟將會在 /dev/sda,鍵入 cfdisk /dev/sda,設定如下:

cfdisk 分割硬碟界面

我使用了大約 60GB 的硬碟,54GB 將會是系統的 “/”,而分配了 1.9 GB 作為 swap 空間(避免記憶體用滿後當機)

格式化硬碟

分割後就需要格式化才能使用,一般都是使用 ext4 格式,鍵入sudo mkfs.ext4 /dev/sdx1再將 /dev/sda2 可以用作 swap,鍵入sudo mkswap /dev/sdx2

格式化硬碟指令

複製系統檔案到外置硬碟

使用外置硬碟作為系統的主要存儲,將現正在 SD 卡的檔案複製到外置硬碟,先新增資料夾可用來掛載 /dev/sda1
sudo mkdir /mnt/usb
然後掛載
sudo mount /dev/sdx1 /mnt/usb
再將系統檔案複製到外置硬碟
sudo rsync -avx / /mnt/usb
(這程序需要一些時間去完成, 煮沸開水沖一杯茶就差不多了 w)

複製檔案使用 rsync

設定系統 swap

複製後,現在會有一個檔案 “fstab” 在 /mnt/usb/etc,這樣我們可以設定下一次開機也會自動掛載 swap 了。在 /mnt/usb/etc/fstab 內加入
UUID=<UUID> none swap defaults 0 0
查看 <UUID> 可以使用指令 sudo blkid /dev/sda2,將 UUID= 後的字放入 <UUID> 便可(當然也可以直接用 /dev/sda2)

設定掛載 swap

修改開機指令

這是最後的步驟了,在 /boot/firmware/nobtcmd.txt,更改 root=LABEL=writableroot=UUID=<UUID>,一樣可以使用指令 sudo blkid /dev/sda1 來查看 <UUID>(同上也可以直接用 /dev/sda1)

修改開機指令在 /boot/firmware/nobtcmd.txt

這裏會發生什麼事?開機時將會用 SD 卡,然後將系統掛載到外置硬碟。所以 SD 卡和外置硬碟是需要同時插在 Raspberry Pi 上喔。否則不能開機呢~

最後重新開機,再 SSH 連入,如果用 df -H 看到 /dev/sda1 掛載在 “/” ,用 htop 看到有 swap,你的 Raspberry Pi 就正在使用 64bit 的 OS+ 外置硬碟了 d(・∀・)b

參考

--

--

CocoaCaa
CocoaCaa

Written by CocoaCaa

喜歡畫插畫的軟件工程師

No responses yet