标签: block-device

如何使用 dd 用特定字符填充磁盘?

我知道我可以像这样用 0x0 填充整个磁盘:

dd if=/dev/zero of=/dev/sda bs=4k conv=notrunc
Run Code Online (Sandbox Code Playgroud)

有没有办法用我选择的字符填充整个磁盘?

linux dd block-device

4
推荐指数
1
解决办法
5274
查看次数

从具有 O_DIRECT 的 HDD 读取()失败并显示 22(EINVAL,无效参数)

我想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 io hard-drive block-device

3
推荐指数
1
解决办法
8488
查看次数

Cygwin相当于Linux/dev/sda,/ dev/sdb等

在Linux上,我可以访问硬盘驱动器作为/ dev/sdX.这会忽略任何分区表,文件系统等,只是逐块访问驱动器.Cygwin中的等价物是什么?我已经搜索了谷歌,但找不到任何有用的东西.

我希望能够(例如)用类似的东西创建一个闪存驱动器的映像

dd if=/dev/??? of=image.bin
Run Code Online (Sandbox Code Playgroud)

我知道有Windows程序可以读写硬盘图像.dd命令只是一个澄清的例子.我不是在创建驱动器映像之后.我是在设备名称之后.

cygwin pythonpath uidevice block-device device-management

3
推荐指数
2
解决办法
3856
查看次数

如何通过 qemu 命令行将块设备附加到 qemu VM?

我想配置 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)。有谁知道如何做到这一点?

亲切的问候

qemu block-device ubuntu-16.04

3
推荐指数
1
解决办法
6142
查看次数

如何在Linux上检测块设备?

在 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"

c++ linux block-device

1
推荐指数
1
解决办法
694
查看次数