cfdisk:无法打开/dev/sda

cfdisk:无法打开/dev/sda

背景信息

我目前正在尝试构建 Linux From Scratch (LFS) 分区。
这是我的第一次尝试,我这样做是为了挑战自己,但我在开始时遇到了困难。

我使用的是带有 16gb Micro SD 的 Raspberry Pi 3,目前安装了 Ubuntu 20.04LTS,作为我的基础。
但我在分配分区时遇到了麻烦。

我的问题

这是一个有点混乱的问题,但欢迎任何额外的澄清或推荐的阅读/研究!

  1. 从我目前发现的情况来看,似乎大多数非嵌入式Linux安装以及许多嵌入式安装可能不会用作/dev/实际的分区安装空间? (来源)我不太清楚这意味着什么。我需要寻找不同的位置来尝试安装我的新分区吗?

  2. 我也没有在我的 中看到任何/dev/sda//dev/sdb//dev/。对于 Ubuntu 或针对 SBC 的 Ubuntu,这是正常现象吗?我觉得这和我的第一个问题有关,但仍然不清楚为什么会这样。

  3. 我还看到使用MAKEDEV显然不会使分区动态管理?有没有办法将其设置为动态管理,或者因为我使用它来构建我的 LFS 分区,所以这很重要吗?

我尝试过的

我尝试/dev/sda/使用sudo MAKEDEV sdamy进行创建/dev/,但显然没有MAKEDEV安装二进制文件。我目前正在尝试找到它所需的软件包(不确定这是否能解决我的整体问题,欢迎任何建议)。

布局

user@host:~$ cfdisk /dev/sda
cfdisk: cannot open /dev/sda: No such file or directory


user@host:~$ sudo cfdisk /dev/sda
cfdisk: cannot open /dev/sda: No such file or directory


user@host:~$ cat /proc/partitions
major minor  #blocks  name

   7        0      24084 loop0
   7        2      62720 loop2
   7        3      49608 loop3
   7        4      26564 loop4
   7        5      65316 loop5
   7        6      49956 loop6
 179        0   15558144 mmcblk0
 179        1     262144 mmcblk0p1
 179        2   15294959 mmcblk0p2


user@host:~$ ll /dev/sd*
ls: cannot access '/dev/sd*': No such file or directory


user@host:~$ ll /dev/disk/by-path/
total 0
drwxr-xr-x 2 root root 100 Jan  1  1970 ./
drwxr-xr-x 7 root root 140 Jan  1  1970 ../
lrwxrwxrwx 1 root root  13 Aug  4 23:07 platform-3f202000.mmc -> ../../mmcblk0
lrwxrwxrwx 1 root root  15 Aug  4 23:07 platform-3f202000.mmc-part1 -> ../../mmcblk0p1
lrwxrwxrwx 1 root root  15 Aug  4 23:07 platform-3f202000.mmc-part2 -> ../../mmcblk0p2


当前的思维过程

我正在尝试使用或其他一些方法进行/dev/sd*/分区MAKEDEV,然后继续cfdisk尝试完成我的构建的这一部分。对此有什么想法,是我想太多了,还是误解了我需要做什么?

答案1

您的系统具有不使用(最初基于 SCSI)统一存储设备命名的 SD/MMC 读卡器。它使用不同的设备名称样式:您的整个磁盘设备是/dev/mmcblk0,其分区列出为mmcblk0p<N>其中<N>是分区号。是的,对于使用专用驱动程序而不是 USB 海量存储接口的 SD/MMC 读卡器来说,这很正常。

所以,你会想sudo cfdisk /dev/mmcblk0在这里使用。

此外,如果您正在阅读一本面向通用或 x86 硬件的“Linux From Scratch”一书,您应该记住,无论何时何地,您都需要替换/dev/mmcblk0任何引用/dev/sda或类似的内容,其预期含义是“我的系统磁盘作为整个磁盘”。同样,当您看到/dev/sda1“我的系统磁盘的第一个分区”的引用时,您应该替换/dev/mmcblk0p1它。对于任何其他分区,依此类推。

不,/dev/不是一个隔断安装空间。据我所知,不存在这样的事情隔断安装空间。任何地方的任何目录都可以充当挂载点对于另一个文件系统。如果你想知道你在哪里应该设置你的挂载点,那么你应该看看文件系统层次结构标准 (FHS)。尽管如果您选择这样做,您完全可以自由地做自己的事情。

通常,当用作挂载点时,目录应该为空,因为任何现有内容都将被隐藏,并且挂载文件系统的根目录的内容将代替显示。 (在 Linux 中,系统管理员可以通过多种方式“查看”已安装的文件系统,但我离题了……)

/dev是设备节点(设备文件)的目录子树。通常只有它们以及它们的子目录应该位于此子树中。

在现代 Linux 系统上,/dev通常是基于 RAM 的文件系统(类型tmpfsdevtmpfs),由udev.因此,您通常只会看到系统上实际存在且加载了其内核级驱动程序的设备的设备节点。

例如,如果您在 SD 卡上创建第三个分区,您应该会看到/dev/mmcblk0p3自动出现。如果删除第二个分区,该分区/dev/mmcblk0p2就会消失。

设备节点不是普通文件:它们本质上是内核中特定设备驱动程序的连接点,以及驱动程序控制的硬件(或软件)设备。

/dev在开发动态管理文件系统之前,/dev它曾经只是根文件系统上的一个目录,包含设备节点。一组设备节点将在操作系统安装时创建,并将像常规文件一样保留在磁盘上的文件系统中。

(换句话说,/dev/它基本上只是一种将内核友好的设备规范“块设备,驱动程序#179,设备#1”映射到更易于人类阅读的名称的机制/dev/mmcblk0p1,反之亦然。)

创建(或重新创建,如果因任何原因删除)设备节点的标准方法是命令mknod和调用的脚本,该脚本MAKEDEV将使用命令循环 mknod来通过单个命令创建各种标准设备集。

不,MAKEDEV与分区本身无关。它也不会动态管理任何东西(无论是设备节点还是分区)。它是批量创建旧样式的工具静态管理设备节点。

动态管理目录/dev树很可能涉及安装udev.如果您正在使用 LFS,那可能会晚一些……也许会晚一些。

制作一个分割据我所知,“动态管理”并不是一个真正的东西。除非这是一种奇怪的说法“使用逻辑卷管理器(LVM)”,也许?

相关内容