我知道我可以像这样用 0x0 填充整个磁盘:
dd if=/dev/zero of=/dev/sda bs=4k conv=notrunc
Run Code Online (Sandbox Code Playgroud)
有没有办法用我选择的字符填充整个磁盘?
我想read()用 SATA HDD制作一个基本的/dev/sdd。Awrite()似乎有效。也read()可以write()在没有 Flag 的情况下工作O_DIRECT。我读过,它必须与块大小对齐。所以我用它来获取块大小:
root$ blockdev --getsize /dev/sdd
488397168
root$ blockdev --getsize64 /dev/sdd
250059350016
root$ python -c "print 250059350016.0/488397168"
512.0
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我有根。HDD 通过 PCIe SATA 卡连接,并向lspci -vv我显示它使用基本的 ahci ( drivers/ata/ahci.c) 驱动程序。我在 64 位 Power Architecture 上使用 3.2.0 Linux 内核。
这是我的代码:
root$ blockdev --getsize /dev/sdd
488397168
root$ blockdev --getsize64 /dev/sdd
250059350016
root$ python -c "print 250059350016.0/488397168"
512.0
Run Code Online (Sandbox Code Playgroud)
输出是:
tmp_buffer is at: 1cc80010 % 512 = 16 …Run Code Online (Sandbox Code Playgroud) 在Linux上,我可以访问硬盘驱动器作为/ dev/sdX.这会忽略任何分区表,文件系统等,只是逐块访问驱动器.Cygwin中的等价物是什么?我已经搜索了谷歌,但找不到任何有用的东西.
我希望能够(例如)用类似的东西创建一个闪存驱动器的映像
dd if=/dev/??? of=image.bin
Run Code Online (Sandbox Code Playgroud)
我知道有Windows程序可以读写硬盘图像.dd命令只是一个澄清的例子.我不是在创建驱动器映像之后.我是在设备名称之后.
我想配置 qemu 以将特定块设备附加到 VM?
以下是我现在使用的命令:
qemu-system-x86_64 -enable-kvm -machine type=pc,accel=kvm
-cpu host -nographic -k de -usb -m 2048
-net nic -net user,hostfwd=tcp::3388-:22
ubuntu16.04.qcow2
Run Code Online (Sandbox Code Playgroud)
我知道以下是执行此操作的 virsh 命令:
virsh attach-disk ubuntuVM /dev/vdb
Run Code Online (Sandbox Code Playgroud)
但是我想在上面的命令行中指定这个(不想使用virsh)。有谁知道如何做到这一点?
亲切的问候
在 Linux 上使用 C++,如何检测块设备?现在,我正在使用这段代码:
for (const auto &entry : std::filesystem::directory_iterator("/dev/"))
{
std::string name = entry.path().filename().string();
if (name.find("sd") == 0 || name.find("nvme") == 0 || name.find("hd") == 0 || name.find("vd") == 0 || name.find("xvd") == 0)
{
std::cout << "Found device: " << entry.path() << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
这在实践中效果很好,但几乎可以肯定不是它“应该做的”方式。它也不完美,因为它错过了 losetup 设备,因为我没有包含"loop",它也错过了网络块设备,因为我没有包含"nbd"。
block-device ×5
linux ×3
c++ ×1
cygwin ×1
dd ×1
hard-drive ×1
io ×1
pythonpath ×1
qemu ×1
ubuntu-16.04 ×1
uidevice ×1