分区管理中怎么在没有partprobe命令的极简系统中通过ioctl强制内核同步新分区表

雨芳吖_6367

雨芳吖_6367

2026-08-15

923人浏览

原创

在无partprobe的极简系统中,可通过blkrrpart ioctl强制内核重读分区表,推荐使用blockdev --rereadpt /dev/sda;若无blockdev,可用c程序调用ioctl实现,操作前须确保设备未挂载且有root权限。

分区管理中怎么在没有partprobe命令的极简系统中通过ioctl强制内核同步新分区表

在没有 partprobe 的极简系统(如嵌入式 BusyBox 环境、initramfs 或定制精简内核)中,可通过直接调用 BLKRRPART ioctl 强制内核重新读取分区表。这本质上是 partprobe 的底层机制,无需额外工具,仅依赖 ioctl 系统调用能力。

确认设备节点与权限

确保目标块设备(如 /dev/sda)存在且可被 root 用户访问。注意:不能对已挂载或正被使用的设备执行此操作,否则会返回 EBUSY(设备忙)。

  • 检查设备是否存在:ls -l /dev/sd*
  • 验证是否被占用:lsof /dev/sda 或 cat /proc/mounts | grep sda
  • 若设备正用于根文件系统或 swap,需先卸载或禁用相关分区

使用 blockdev 命令触发重读(最简替代)

多数极简系统仍包含 blockdev(比 partprobe 更轻量),它封装了 BLKRRPART ioctl:

灵动AI
灵动AI

灵动AI是一款AI电商图片工具,专业的 AI 商品图生成工具。

下载
  • 强制重读单个磁盘:blockdev --rereadpt /dev/sda
  • 重读全部块设备(谨慎使用):for d in /dev/sd[a-z]; do blockdev --rereadpt "$d" 2>/dev/null; done
  • 成功无输出;失败时通常显示 Operation not permitted(权限不足)或 Device or resource busy

手动调用 ioctl(无 blockdev 时)

若连 blockdev 都不可用,可用 C 小程序或 Python(若有解释器)调用 ioctl。以下为最小可行 C 实现:

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys>
#include <linux>

int main(int argc, char *argv[]) {
    if (argc != 2) {
        fprintf(stderr, "Usage: %s /dev/sdX\n", argv[0]);
        return 1;
    }
    int fd = open(argv[1], O_RDONLY);
    if (fd == -1) {
        perror("open");
        return 1;
    }
    if (ioctl(fd, BLKRRPART, 0) == -1) {
        perror("ioctl BLKRRPART");
        close(fd);
        return 1;
    }
    printf("Partition table re-read OK for %s\n", argv[1]);
    close(fd);
    return 0;
}</linux></sys></unistd.h></fcntl.h></stdio.h>

编译运行:gcc -o reread reread.c && ./reread /dev/sda。静态链接可避免依赖 libc 动态库。

验证分区是否生效

执行后立即检查内核是否识别新分区:

  • 查看设备节点是否生成:ls /dev/sda*(应出现 /dev/sda1、/dev/sda2 等)
  • 检查内核日志:dmesg | tail -10,正常会有类似 sda: sda1 sda2 的识别记录
  • 确认 sysfs 信息:ls /sys/block/sda/sda*/start,有输出即表示分区已注册

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

900

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2732

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

916

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

809

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

414

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2476

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4592

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

747

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习