我有一个带有内核 4.9.6 的抛物线 (arch)/Linux 安装。当我插入一个USB外置硬盘,我可以看到它在lsusb如
Bus 002 Device 055: ID 0411:01de BUFFALO INC. (formerly MelCo., Inc.) External Hard Drive HD-PCTU3 [Buffalo MiniStation]
但是我在 /dev 的任何地方都找不到它作为块设备。例如,lsblk返回
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223.6G 0 disk
??sda1 8:1 0 223.6G 0 part
??root 254:0 0 223.6G 0 crypt
??matrix-swap 254:1 0 2G 0 lvm [SWAP]
??matrix-root 254:2 0 199.4G 0 lvm /
??matrix-boot 254:3 0 2G 0 lvm /boot
??matrix-var 254:4 0 20.2G 0 …Run Code Online (Sandbox Code Playgroud) 我正在使用来自外部驱动器的 Linux。我根本不希望它在 Windows 中看到主磁盘。过去我一直通过将 1 写入/sys/block/devices/sd*/device/delete(从内存中写入)来做到这一点。
但对于其他有 NVMe 磁盘的笔记本电脑,结构不同,我必须使用/sys/block/devices/nvmep01/device/device/remove(再次,从内存中)。(USB连接外置磁盘还是按照之前的方式)为什么有两种方式呢?我不能只用一个吗?其中之一已被弃用吗?(我还没有检查 sd* 是否也可以删除)
(发行版是 Ubuntu 22,如果重要的话)
假设我有一个块设备或一个图像文件。并且说我还有一个字节序列或一个字符串或一些搜索模式。如何获得这种模式或字符串出现的位置?有什么工具可以做到这一点吗?
典型的linux机器挂载atmpfs来存储临时文件:
$ df
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 953M 702M 203M 78% /
tmpfs 1.5G 111M 1.5G 0% /tmp
...
Run Code Online (Sandbox Code Playgroud)
在实时计算机上,如何将底层内存作为tmpfs块设备访问,以便将其映像用于dd文件恢复/取证/入侵检测目的?没有设备可以/dev正确地将所使用的内存隔离并映射tmpfs到块设备。
此处已提出此问题,但没有一个答案有帮助:https://www.linuxquestions.org/questions/linux-general-1/how-to-backup-ramfs-or-tmpfs-using-dd-4175422520 /
我正在测试一些文件系统驱动程序代码,并希望在内核之外进行此操作。最简单、最安全的方法是从用户空间执行此操作。所以,我创建了一个一定长度的文件
\n\ndd if=/dev/zero of=testfs bs=10M count=50
然后我使用fdisk安装了MBR分区方案
\n\nfdisk testfs
我可以设置一个循环设备以块模拟模式访问我的文件:
\n\n$ losetup /dev/loop0 testfs\nRun Code Online (Sandbox Code Playgroud)\n\n此时我可以在设备列表中看到这个新的模拟块设备:
\n\nNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT\nsda 8:0 0 50G 0 disk \n\xe2\x94\x9c\xe2\x94\x80sda1 8:1 0 46G 0 part /\n\xe2\x94\x9c\xe2\x94\x80sda2 8:2 0 1K 0 part \n\xe2\x94\x94\xe2\x94\x80sda5 8:5 0 4G 0 part [SWAP]\nsr0 11:0 1 55.2M 0 rom \nloop0 7:0 0 50M 0 loop \nRun Code Online (Sandbox Code Playgroud)\n\n并且该设备具有以下分区表
\n\n$ fdisk -l /dev/loop0 \n\nDisk /dev/loop0: 52 MB, 52428800 bytes\n96 heads, 25 …Run Code Online (Sandbox Code Playgroud)