我有一个 file.img 文件,是通过运行获得的dd if=/dev/sda of=file.img
。这是在具有两个分区 /dev/sda1 和 /dev/sda2 的设备上完成的。为了使用相同的映像刷新新设备,我使用网络启动来启动 Alpine Linux,从网络复制 file.img 并运行dd if=file.img of=/dev/sda
.此操作已成功完成,如果我重新启动,设备将正常启动。
问题是我想向新设备添加一些文件。当然,我想我只需安装 /dev/sda2 (这是我想要添加内容的设备)并在那里添加内容。好吧,没那么简单:/dev/sda2 有时会丢失。运行 dd 命令后,有时(未观察到任何模式)分区会丢失。使用检查磁盘fdisk -l /dev/sda
显示两个分区。
运行partprobe /dev/sda; dmesg
始终显示(dmesg 命令输出此信息),sda: sda1 sda2
因此分区在那里并且正在被识别。尽管如此,它们并没有出现在/dev/
.
有趣的是,跑步partprobe /dev/sda
有时可以解决问题,有时则不能。
有了所有这些疯狂,重新启动设备将始终正确启动。
如果有人知道我可以尝试什么,我将非常感激这些想法。
谢谢。
PS:我也尝试过跑步partx -uv /dev/sda
。这告诉我:
partition: none disk: /dev/sda, lower: 0, upper: 0
/dev/sda: partition table type 'dos' detected
/dev/sda: partition #1 added
/dev/sda: partition #2 added
但在/dev/sdaX下仍然找不到分区
答案1
对于任何寻求此问题解决方案的人,您可以:
- 在 /dev 下创建您的设备条目。添加 /dev/sda2 的示例如下:
mknod -m 660 /dev/sda2 b 8 2
- 尝试运行
mdev -s
第二个命令让我的生活更轻松,到目前为止它的工作没有任何问题。 Mdev 的手册页:
Usage:
mdev [-vS]
-v Verbose
-S Log to syslog too
-s Scan /sys and populate /dev
-d Daemon, listen on netlink
-f Run in foreground