Openwrt鏡像文件分區(qū)擴(kuò)容,重啟不失效

Openwrt官網(wǎng)下載的鏡像默認(rèn)只有120MB,根分區(qū)也僅有104MB。如果要安裝ADGuard Home、Nginx、Clash等服務(wù)就很容易不夠用了。這里介紹一種安裝前擴(kuò)容根分區(qū)的辦法,相比于安裝后的方法,重啟后不會失效。

1、準(zhǔn)備

需要準(zhǔn)備一臺Linux,虛擬機(jī)也可以,這里介紹Ubuntu上的操作方法,其他系統(tǒng)類似。

安裝依賴的工具:
wget
gzip
lsblk
e2fsck
resize2fs
losetup
fdisk
partx

sudo apt-get install wget gzip util-linux mount fdisk

2、下載解壓鏡像文件

這里使用的是:openwrt-22.03.0-x86-64-generic-ext4-combined.img.gz
注意:這里只能用ext4-combined
下載:官網(wǎng)或者國內(nèi)鏡像網(wǎng)址,根據(jù)實(shí)際情況選擇

官網(wǎng)下載地址:https://downloads.openwrt.org/releases/22.03.0/targets/x86/64/openwrt-22.03.0-x86-64-generic-ext4-combined.img.gz

國內(nèi)鏡像下載地址:https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0/targets/x86/64/openwrt-22.03.0-x86-64-generic-ext4-combined.img.gz

wget https://downloads.openwrt.org/releases/22.03.0/targets/x86/64/openwrt-22.03.0-x86-64-generic-ext4-combined.img.gz

解壓,將會得到文件openwrt-22.03.0-x86-64-generic-ext4-combined.img

gzip -d openwrt-22.03.0-x86-64-generic-ext4-combined.img.gz

3、擴(kuò)容

3.1 使用 dd 命令增加鏡像空間

使用dd命令,將鏡像文件增加到10G(群暉虛擬機(jī)最小磁盤大小)。

注意:dd命令中“count=512”,如果是其他值可能會失敗

也可根據(jù)需要修改bs的值,改為自己需要的大小

dd if=/dev/zero bs=20080k count=512 >> openwrt-22.03.0-x86-64-generic-ext4-combined.img

記錄了512+0 的讀入
記錄了512+0 的寫出
10527703040字節(jié)(11 GB,9.8 GiB)已復(fù)制,104.59 s,101 MB/s
ls -lh openwrt-22.03.0-x86-64-generic-ext4-combined.img
-rwxr-xr-x 1 root root 10G  9月  7 10:28 openwrt-22.03.0-x86-64-generic-ext4-combined.img

3.2 使用 losetup 命令,掛載鏡像到 loop 設(shè)備

losetup -f openwrt-22.03.0-x86-64-generic-ext4-combined.img

3.3 查看掛載的設(shè)備的名稱

3.3.1、使用 losetup 命令查看掛載的虛擬區(qū)塊設(shè)備

此處名為 /dev/loop12,實(shí)際每個(gè)人loop后面的數(shù)值可能不一樣,注意根據(jù)文件名區(qū)分

losetup
 
NAME  SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC
**********************(省略其它)**************************
/dev/loop12         0      0         0  0 openwrt-22.03.0-x86-64-generic-ext4-combined.img   0     512

3.3.2、使用 lsblk 命令查看塊設(shè)備信息

對應(yīng)上面查到的“/dev/loop12”,可以看到塊大小已經(jīng)增加到10G左右

lsblk
 
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
********************(省略其它)***********************
loop12   7:12   0   9.9G  0 loop

3.4 讀取分區(qū)信息,加載到系統(tǒng)

3.4.1 使用 partx 命令,加載分區(qū)信息

partx -a /dev/loop12

3.4.2 使用 lsblk 命令查看加載分區(qū)信息結(jié)果

lsblk
 
NAME       MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
************************(省略其它)*********************
loop12       7:12   0   9.9G  0 loop
├─loop12p1 259:0    0    16M  0 part
└─loop12p2 259:1    0   104M  0 part

loop12p2就是擴(kuò)容的分區(qū),雖然已經(jīng)增加到10G,但是識別到的仍然是120M。所以還需要進(jìn)行下面的操作。

3.5 使用 fdisk 命令調(diào)整分區(qū)大小

fdisk /dev/loop12
 
歡迎使用 fdisk (util-linux 2.37.2)。
更改將停留在內(nèi)存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
 
# 輸入p查看分區(qū)信息,記住/dev/loop12p2分區(qū)的開始扇區(qū)
命令(輸入 m 獲取幫助): p
Disk /dev/loop12:9.92 GiB,10654056448 字節(jié),20808704 個(gè)扇區(qū)
單元:扇區(qū) / 1 * 512 = 512 字節(jié)
扇區(qū)大小(邏輯/物理):512 字節(jié) / 512 字節(jié)
I/O 大小(最小/最佳):512 字節(jié) / 512 字節(jié)
磁盤標(biāo)簽類型:dos
磁盤標(biāo)識符:0x266b958d
 
設(shè)備          啟動  起點(diǎn)   末尾   扇區(qū)  大小 Id 類型
/dev/loop12p1 *      512  33279  32768   16M 83 Linux
/dev/loop12p2      33792 246783 212992  104M 83 Linux
 
# 刪除/dev/loop12p2分區(qū),輸入d之后輸入2(默認(rèn))
命令(輸入 m 獲取幫助): d
分區(qū)號 (1,2, 默認(rèn)  2): 2
 
分區(qū) 2 已刪除。
 
# 輸入n新建分區(qū)
命令(輸入 m 獲取幫助): n
分區(qū)類型
   p   主分區(qū) (1 primary, 0 extended, 3 free)
   e   擴(kuò)展分區(qū) (邏輯分區(qū)容器)
# 輸入p主分區(qū)
選擇 (默認(rèn) p): p
# 輸入2(默認(rèn))
分區(qū)號 (2-4, 默認(rèn)  2): 2
# 輸入分區(qū)2的開始扇區(qū),一定要和上面的一樣,這里是33792?。?!
第一個(gè)扇區(qū) (33280-20808703, 默認(rèn) 34816): 33792
# 輸入結(jié)束扇區(qū),一定要比33792大,如果直接回車就是全部剩余都將作為第二分區(qū),這里直接回車
Last sector, +/-sectors or +/-size{K,M,G,T,P} (33792-20808703, 默認(rèn) 20808703):
 
創(chuàng)建了一個(gè)新分區(qū) 2,類型為“Linux”,大小為 9.9 GiB。
分區(qū) #2 包含一個(gè) ext4 簽名。
 
# 提示,是否移除分區(qū)的簽名,這里一定要輸入n,不然鏡像會出問題?。?!
您想移除該簽名嗎? 是[Y]/否[N]: N
 
# 輸入w保存我們的更改
命令(輸入 m 獲取幫助): w
 
# 會有警告,這里不用管
分區(qū)表已調(diào)整。
將調(diào)用 ioctl() 來重新讀分區(qū)表。
重新讀取分區(qū)表失敗。: 無效的參數(shù)
 
# 提示說內(nèi)核依然會使用舊的分區(qū)表,新的分區(qū)表需要在下次重啟或運(yùn)行 partprobe(8)或kpartx(8)命令后生效
The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or partx(8).

3.6 更新新的分區(qū)信息,查看新的分區(qū)表

3.6.1 使用 partx 命令,更新分區(qū)信息

partx -u /dev/loop12

3.6.2 使用 lsblk 命令查看新的分區(qū)信息

lsblk
 
NAME       MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
**********************(省略其他)***********************
loop12       7:12   0   9.9G  0 loop
├─loop12p1 259:2    0    16M  0 part
└─loop12p2 259:3    0   9.9G  0 part

可以看到loop12p2分區(qū)已經(jīng)擴(kuò)容成功

3.7 同步更改后的分區(qū)信息到系統(tǒng)內(nèi)核

3.7.1 使用 e2fsck 鏡像檢測,糾錯(cuò)

e2fsck -f /dev/loop12p2
 
e2fsck 1.46.5 (30-Dec-2021)
第 1 遍:檢查 inode、塊,和大小
第 2 遍:檢查目錄結(jié)構(gòu)
第 3 遍:檢查目錄連接性
第 4 遍:檢查引用計(jì)數(shù)
第 5 遍:檢查組概要信息
Inode 位圖末尾的填充值未設(shè)置。 處理<y>? 是
 
 
rootfs:***** 文件系統(tǒng)已被修改 *****
rootfs:1445/6656 文件(0.0% 為非連續(xù)的),5165/26624 塊

3.7.2 使用 resize2fs 命令,同步分區(qū)大小

resize2fs /dev/loop12p2
 
resize2fs 1.46.5 (30-Dec-2021)
將 /dev/loop12p2 上的文件系統(tǒng)調(diào)整為 2596864 個(gè)塊(每塊 4k)。
/dev/loop12p2 上的文件系統(tǒng)大小已經(jīng)調(diào)整為 2596864 個(gè)塊(每塊 4k)。

3.8 卸載

3.8.1 卸載系統(tǒng)中的分區(qū)

partx -d /dev/loop12

3.8.2 卸載loop設(shè)備

losetup -d /dev/loop12

3.9 安裝、使用
此處不再贅述。

文中部分參考網(wǎng)絡(luò)。
————————————————

原文鏈接:https://blog.csdn.net/yuanmingming521/article/details/126741073

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容