什么是块设备?

什么是块设备?

我正在使用 Windows 7 和 Ubuntu 创建双启动系统。我想检查 Windows 7 安装块设备。

什么是块设备?如何区分Windows 7安装块设备与Ubuntu?

我们如何确保Windows块设备不能被root用户删除?

答案1

任何允许读取或写入数据块的设备都是“块设备”。在 Ubuntu 中,硬盘驱动器由其驱动程序表示为/hdXIDE 驱动器或/sdXSCSI(或现代系统中的 SATA)驱动器。

代表第一个设备X的以 开头的字母a。因此,系统中的第一个硬盘驱动器将是/sda,第二个驱动器将是/sdb,等等。该设备上的分区进一步编号。第一个驱动器上的第一个分区是/sda1,第三个驱动器上的第三个分区是 ,/sdc3等等。

要列出系统中所有块设备的表示、UUID 和类型,我们可以发出以下命令:

sudo blkid
sudo lsblk

结合以下命令可提供有关分区的更多详细信息

sudo fdisk -l

应该为我们提供足够的信息来找出 Windows 或 Ubuntu 安装的位置。

在整个过程中,我们将提供有关如何引导的信息启动信息脚本

回答您的附加问题:root 可以做任何事情。因此,除了拔下驱动器外,没有其他办法可以防止 root 覆盖 Windows 分区。

答案2

什么是块设备?

块设备是一种一致的设备接口,类似于可读、易于查找(与磁带驱动器相比)、可能可写的非易失性存储。这包括真正的非易失性存储设备,如 ATA 和 SCSI 驱动器(/dev/sda)、此类设备的细分,如 NVMe 命名空间(/dev/nvme0n1)和分区(/dev/sda1),以及许多其他设备,如设备映射器(LVM、LUKS 等)卷(/dev/mapper/linux/dev/dm-0)、磁盘/文件系统映像的环回映射(/dev/loop0)和虚拟磁盘(/dev/vda)。块设备允许通过标准调用直接、轻松地操作底层数据,例如(2),(2和(2). 这与 Linux 中的字符设备不同,其中很多字符设备都使用特定于类的自定义格式。

可以通过ls -l在文件上使用 来识别块设备,其前导字符b表示它是块设备:

$ ls -l /dev/sda
brw-rw---- root disk 8, 0 Jan  1 00:00 /dev/sda 

或者使用stat,将文件显示为“块特殊文件”:

  File: /dev/sda
  Size: 0               Blocks: 0          IO Block: 4096   block special file
Device: 0,5     Inode: 164         Links: 1     Device type: 8,0
Access: (0660/brw-rw----)  Uid: (    0/    root)   Gid: (    6/    disk)

可以使用以下命令获取在线块设备列表lsblk

$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
sda           8:0    0   240G  0 disk  
├─sda1        8:1    0   128M  0 part  /boot/efi
├─sda2        8:2    0     4G  0 part  [SWAP]
└─sda3        8:3    0 235.9G  0 part  /

可以通过blkid以正确的权限运行来获取块设备的详细信息,例如其 UUID 和标签:

# blkid /dev/nvme0n1p1
/dev/nvme0n1p1: LABEL_FATBOOT="ESP" LABEL="ESP"
UUID="1234-5678" BLOCK_SIZE="512" TYPE="vfat"
PARTLABEL="EFI system partition"
PARTUUID="43465c49-75a0-4ff3-ac18-bbd4a4ca372b"

我的 Windows 在哪里?

通过使用lsblkblkid和 (在存在正确驱动程序的情况下)mount -o ro,您可以获得足够的信息来找出 Windows 或 Ubuntu 的位置。几乎所有 Windows 桌面的操作系统都在 NTFS 分区中,而Windows此类文件系统根目录中存在的文件夹通常就是一个线索。

如何向大多数人隐藏我的 Windows?

删除任何未挂载的块设备都是安全的。块设备不是真正的硬件,而是神奇的大门:你用正确的主号和次号创建大门,你的磁盘大门就会神奇地打开。

因为块设备是神奇的门,所以删除块设备只会抹去门的存在;实际数据不会受到影响。

# b2sum /dev/sda1
# rm /dev/sda1
# mknod -m 0660 /dev/sda1 b 8 1
# chown root:disk /dev/sda1
# b2sum /dev/sda1

如何隐藏我的 Windows,甚至不让 root 用户使用?

不幸的是,上述方法无法真正隐藏 root 的任何东西。即使你从中删除它/dev,通过创建具有正确编号的设备,它也会神奇地恢复:

# mknod -m 0660 /dev/sda3 b 8 3

完全隐藏其存在并防止其覆盖的唯一方法是拔下 Windows 驱动器,或者卸载并删除使用 Windows 驱动磁盘的任何驱动程序堆栈。

相关内容