我正在使用 Windows 7 和 Ubuntu 创建双启动系统。我想检查 Windows 7 安装块设备。
什么是块设备?如何区分Windows 7安装块设备与Ubuntu?
我们如何确保Windows块设备不能被root用户删除?
答案1
任何允许读取或写入数据块的设备都是“块设备”。在 Ubuntu 中,硬盘驱动器由其驱动程序表示为/hdX
IDE 驱动器或/sdX
SCSI(或现代系统中的 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 在哪里?
通过使用lsblk
、blkid
和 (在存在正确驱动程序的情况下)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 驱动磁盘的任何驱动程序堆栈。