|
|
进入终端(或者用SSH软件登陆MobaXterm_Personal_22.1 )这个如果不会,就不要往下看了。
安装 gdisk:
运行以下命令来安装 gdisk:
opkg install gdisk
系统会自动处理依赖关系并下载安装 gdisk 软件包。
验证安装 (可选):
安装完成后,你可以通过运行 gdisk 命令来验证它是否已成功安装。例如,可以尝试查看 gdisk 的版本号:
gdisk -v
或者直接尝试启动 gdisk (但不要对任何磁盘进行操作,按 q 退出即可):
gdisk
如果命令能够执行并显示相关信息或进入 gdisk 的交互提示符,则表示安装成功。
现在 gdisk 工具就已经安装在你的 ImmortalWrt 系统上了,你可以用它来管理 GPT 分区表,就像你在上一个问题中想要做的那样。
二、启动 gdisk:
打开路由器的 SSH 终端,输入以下命令启动 gdisk 并指向目标磁盘
gdisk /dev/mmcblk0
查看当前分区表 (可选但推荐):
输入 p 并按 Enter 键,可以打印当前的分区表和磁盘信息。这有助于你确认磁盘大小、现有分区以及可用的扇区范围。留意最后那个分区的结束扇区和磁盘的总扇区数。
创建新分区:
输入 n 并按 Enter 键,表示要创建一个新分区 (New partition)。
Partition number: gdisk 会询问分区号。由于 p1 到 p6 已存在,它可能会默认建议 7。如果默认是 7,直接按 Enter 键接受。如果不是,请输入 7 并按 Enter。
First sector: gdisk 会询问起始扇区。它通常会默认建议紧随最后一个分区 (mmcblk0p6) 之后的第一个可用扇区。直接按 Enter 键接受默认值,这样新分区就会从现有分区的末尾开始。
Last sector: gdisk 会询问结束扇区。它通常会默认建议磁盘上最后一个可用的扇区,这意味着使用所有剩余空间。直接按 Enter 键接受默认值。
Hex code or GUID: gdisk 会询问分区类型。对于标准的 Linux 数据分区,默认的 8300 (Linux filesystem) 通常是合适的。直接按 Enter 键接受默认值即可。如果你有特殊需求(如 Swap、LVM 等),可以输入相应的代码,但一般情况下默认就好。
再次检查分区表:
创建分区后,再次输入 p 并按 Enter 键,检查新的分区表。确认 Partition 7 (即 /dev/mmcblk0p7) 已经按照你的预期被添加,起始和结束扇区看起来正确。
写入更改:
如果分区表看起来完全正确,并且你确定要进行更改,请输入 w 并按 Enter 键。gdisk 会进行最后确认,询问 Do you want to proceed? (Y/N):。输入 Y 并按 Enter 键。
注意: 一旦写入,更改就是永久性的(除非你之后再修改分区表),并且之前的分区表状态就丢失了。
退出 gdisk:
写入成功后,gdisk 会自动退出。如果之前你没有选择写入(比如用了 q 命令退出),则不会有任何更改。
通知内核分区表已更改:
写入分区表后,内核可能不会立即识别新的分区。运行以下命令让内核重新读取分区表:
partprobe /dev/mmcblk0
如果 partprobe 命令无效或不存在,你可能需要重启路由器 (reboot) 来让内核识别新分区。
验证新分区:
再次运行 lsblk 命令:
lsblk
你应该能看到新的分区 /dev/mmcblk0p7 出现在列表中。
格式化新分区:
新分区 /dev/mmcblk0p7 只是划分了空间,还没有文件系统。你需要格式化它才能使用。常用的文件系统是 ext4。
mkfs.ext4 /dev/mmcblk0p7
Use code with caution.
Bash
(格式化会清除该分区上的所有数据,但因为是新分区,所以没有数据。)
挂载新分区 (可选):
如果你想立即使用这个分区,可以创建一个挂载点并挂载它:
mkdir -p /mnt/mmcblk0p7 # 创建挂载点目录,名字可以自定义
mount /dev/mmcblk0p7 /mnt/mmcblk0p7
Use code with caution.
Bash
现在你就可以通过 /mnt/mmcblk0p7 路径访问这个分区了。
设置自动挂载 (可选但常用):
为了让路由器每次启动时自动挂载这个分区,你需要配置 OpenWrt 的挂载点。最简单的方法是通过 LuCI Web 界面:
登录 LuCI。
导航到 "系统" -> "挂载点"。
在 "挂载点" 部分,点击 "添加"。
选择 "UUID" 并从下拉列表中找到对应 /dev/mmcblk0p7 的 UUID(或者直接选择设备 /dev/mmcblk0p7)。
选择 "挂载点",输入你之前创建的或希望使用的挂载点路径(例如 /mnt/mmcblk0p7 或 /opt 等)。
确保勾选 "启用此挂载点"。
点击 "保存并应用"
特殊固件遇到的分区问题的解决
正确的操作步骤
这个操作比之前预想的要多一步,但 gdisk 完全可以胜任。请严格按照以下步骤操作。
⚠️ 警告:高风险操作 ⚠️
这会重写GPT分区表头,虽然是标准操作,但依然存在风险。请确保您已准备好应对可能出现的意外。操作过程中绝对不能断电。
第一步:修复GPT表并创建新分区
以可写模式启动 gdisk:
gdisk /dev/mmcblk0
进入专家模式:
在 gdisk 提示符下,输入 x 然后按回车
Command (? for help): x
重新定位备份GPT表头到磁盘末尾 (关键步骤!):
在专家模式提示符下,输入 e 然后按回车。这个命令会找到磁盘的真实物理末尾,并将备份的GPT数据结构移动到那里。这是“解锁”剩余空间的关键。
Expert command (? for help): e
执行后,它可能会有一些提示,但一般不需要你再输入什么。
返回主菜单:
输入 m 然后按回车,
从专家模式返回到主分区菜单。
创建新分区:
现在GPT表已经知道磁盘的真实大小了,我们可以安全地创建新分区。
输入 n 然后按回车。
Command (? for help): n
gdisk会再次询问你几个问题,但这次的默认值将是正确的:
Partition number (7-128, default 7): 直接按 回车 接受默认值 7。
First sector (.... default: ...): 它会自动选择 mmcblk0p6 后面的第一个可用扇区。直接按 回车 接受。
Last sector (.... default: ...): 这里是见证奇迹的时刻。它现在应该会默认提供一个非常大的数字,代表物理磁盘的最后一个可用扇区。这就是我们想要的,将所有剩余空间分配给新分区。直接按 回- 车 接受。
Hex code or GUID (L to show codes, Enter = 8300): 直接按 回车 接受 8300 (Linux filesystem)。
打印分区表进行最终确认:
输入 p 然后按回车。
Command (? for help): p
现在,您应该能看到一个崭新的、非常大的 mmcblk0p7 分区了!检查一下它的起始和结束扇区,以及大小(应该是50多G)。
写入更改并退出 (不可逆!):
如果一切无误,输入 w 将更改写入磁盘。
Command (? for help): w
gdisk 会进行最后确认,询问 Do you want to proceed? (Y/N):。输入 Y 然后按回车。
操作完成后,gdisk 会退出。
第二步:重启路由器
写入新的分区表后,必须重启来让内核加载它。
第三步:格式化新分区
路由器重启并重新SSH登录后,检查新分区是否出现。
lsblk
正确的后续步骤
我们只需要先“卸载”这个分区,然后再格式化它。
第一步:卸载分区
执行以下命令来卸载分区:
umount /dev/mmcblk0p7
第二步:格式化分区
现在分区已经没有被使用了,可以安全地进行格式化了。再次执行您之前的命令:
mkfs.ext4 /dev/mmcblk0p7
第三步:设置永久挂载点
格式化完成后,我们就可以按照之前的计划,通过LuCI界面来设置一个永久的、我们自己命名的挂载点了。
登录 LuCI Web 界面。
导航到 系统 (System) -> 挂载点 (Mount Points)。
在页面下方“挂载点”部分,找到 /dev/mmcblk0p7 这一行(或者它可能已经消失了),您可以删除这个旧的、可能是自动生成的条目,然后点击“添加”来创建一个新的、干净的配置。
在添加/修改页面:
启用此挂载点:勾选。
UUID:在下拉菜单中选择 /dev/mmcblk0p7 对应的那个UUID。
挂载点:选择“自定义”,然后输入一个你喜欢的名字,推荐使用 /mnt/data 或者 /mnt/storage。
点击 “保存并应用”。
第四步:验证
保存应用后,系统会自动挂载。您可以通过SSH运行以下命令来验证:
df -h
|
|