close

前言

想要把OpenWrt進行功能擴展,比如打造成一臺小型NAS服務器,或者網頁服務器等等,還有一道坎需要邁過。

因為路由器的CPU和內存與電腦甚至是手機相比,都要弱瞭不少。CPU計算慢一些還可以將就,畢竟咱也沒有那麼高的需求,但存儲空間不夠,就裝不瞭插件瞭,再強大的擴展能力也隻能望洋興嘆。

OpenWrt空間不夠用怎麼辦?掛載USB硬盤擴容系統和內存容量

空間已經快滿瞭,再滿的話文件系統就會崩潰,全盤變成read-only狀態,那時就隻能重刷固件瞭

需求

在折騰其它擴展之前,我要在OpenWrt上外接一塊500G的USB硬盤,實現以下需求:

  1. 硬盤分出一個512M的分區掛載為swap交換分區,可以看作是Windows平臺上的虛擬內存,達到擴容內存的作用。
  2. 再分出一個5G的分區掛載為系統目錄,擴容系統閃存。
  3. 剩餘空間留作備用,有需求的時候再建立新分區,掛載到系統目錄的子目錄就可以使用。

安裝需要的工具

要用到

cfdisk:傻瓜式分區工具

e2fsprogs:格式化工具

kmod-fs-ext4:ext4文件系統支持

SSH連接到OpenWrt命令行,輸入命令更新軟件包源:

opkg update

然後安裝工具,輸入命令:

opkg install cfdisk e2fsprogs kmod-fs-ext4

如果有提示“...installed in root is up to date”,說明系統中已經安裝瞭這個工具。

對硬盤進行分區

將USB硬盤連接到路由器。首先要對硬盤進行分區,命令行中輸入:

cfdisk

進入cfdisk程序界面,簡單介紹下cfdisk的界面:

OpenWrt空間不夠用怎麼辦?掛載USB硬盤擴容系統和內存容量

雙指放大查看

swap分區我之前已經做好瞭,接下來在未分區的位置上創建一個5G的新分區。

OpenWrt空間不夠用怎麼辦?掛載USB硬盤擴容系統和內存容量

雙指放大查看

OpenWrt空間不夠用怎麼辦?掛載USB硬盤擴容系統和內存容量

雙指放大查看

OpenWrt空間不夠用怎麼辦?掛載USB硬盤擴容系統和內存容量

雙指放大查看

OpenWrt空間不夠用怎麼辦?掛載USB硬盤擴容系統和內存容量

雙指放大查看

OpenWrt空間不夠用怎麼辦?掛載USB硬盤擴容系統和內存容量

雙指放大查看

OpenWrt空間不夠用怎麼辦?掛載USB硬盤擴容系統和內存容量

雙指放大查看

OpenWrt空間不夠用怎麼辦?掛載USB硬盤擴容系統和內存容量

雙指放大查看

分區建立好以後,還需要進行格式化,因為我之前已經格式化過瞭,這裡不再演示。格式化命令如下:

mkswap /dev/sda1           #把/dev/sda1建立為swap交換分區mkfs.ext4 /dev/sda2         #把/dev/sda2格式化為ext4文件系統

分別執行上面兩條命令,註意/dev/sda1是你的設備名稱,就是前面讓你記下來的。

掛載swap交換分區

進入OpenWrt後臺,系統→掛載點→swap→點擊添加。

OpenWrt空間不夠用怎麼辦?掛載USB硬盤擴容系統和內存容量

雙指放大查看

設備菜單處要選擇之前mkswap的那個分區。

OpenWrt空間不夠用怎麼辦?掛載USB硬盤擴容系統和內存容量

雙指放大查看

顯示已掛載,但還要拉到頁面最底部再點一次“保存並應用”。我之前設置不成功就是因為沒點這裡

驗證swap是否建立成功,隻需進入狀態→概況,出現“虛擬內存”,表示已經成功瞭。

OpenWrt空間不夠用怎麼辦?掛載USB硬盤擴容系統和內存容量

雙指放大查看

掛載系統根目錄

這裡本來要分兩步,首先是掛載overlayfs,再掛載根目錄。

overlayfs的主要作用有兩個。一是壓縮存儲文件,在磁盤空間緊張的情況下盡量少占用空間;二是加瞭一層對系統底層的保護機制,在折騰不當的情況下可以“還原出廠設置”,避免變磚。

但我們掛載硬盤後,空間是夠用的,路由器上還刷過不死Breed,overlay對我來說沒啥用瞭,反而還增加瞭一個壓縮過程,降低文件效率。

所以我決定直接掛載根目錄,放棄overlayfs。

讓我們再回到“掛載點”的設置頁面。

在頁面下方,swap上方,有個掛載點設置,點擊添加。

OpenWrt空間不夠用怎麼辦?掛載USB硬盤擴容系統和內存容量

雙指放大查看

註意,選擇用UUID掛載識別設備會更準確,UUID下拉菜單,每個選項後面都列出瞭設備名稱,可以幫你辨識設備。做完這幾步後先不要點保存並應用。

回到SSH,執行以下命令:

mkdir -p /tmp/introot                                                          #在/tmp目錄下創建introot文件夾 mkdir -p /tmp/extroot                                                         #在/tmp目錄下創建extroot文件夾 mount --bind / /tmp/introot                                               #將/根目錄掛載到inroot mount /dev/sda1 /tmp/extroot                                          #將硬盤掛載到extroot tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf -        #把introot中的系統鏡像打包並在硬盤中解包 umount /tmp/introot                                                          #取消掛載 umount /tmp/extroot                                                         #取消掛載

命令中涉及到設備名稱的(/dev/sda1)這些地方,要換成自己的設備名。

這一步是把根目錄復制鏡像到準備掛載的設備中,掛載完成以後,OpenWrt就會從USB硬盤啟動系統,並在閃存中保留備份,硬盤掛瞭的話,還可以從自身閃存啟動系統。

執行完命令,再回到後臺頁面,點擊保存並應用。

重啟路由器。

OpenWrt空間不夠用怎麼辦?掛載USB硬盤擴容系統和內存容量

雙指放大查看

可以看到已經擴容成功瞭。

結語

目前系統分區添加插件也不用擔心空間不夠瞭,添加瞭swap以後,雖然效率不高,但還是顯著提高瞭路由器的穩定性。下一步計劃掛載硬盤的剩餘空間,作為內網共享使用並安裝離線下載,初步實現NAS功能。



[比心]有用的話點個贊唄[比心]


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 3C王者宇晨 的頭像
    3C王者宇晨

    3C王者

    3C王者宇晨 發表在 痞客邦 留言(0) 人氣()