首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >cfdisk:无法打开/dev/sda

cfdisk:无法打开/dev/sda
EN

Unix & Linux用户
提问于 2020-08-06 17:03:36
回答 1查看 8.6K关注 0票数 2

背景信息

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

我正在使用一个Raspberry Pi 3,一个16 my的Micro,目前安装在Ubuntu20.04LTS作为我的基础。不过,我在分配分区时遇到了麻烦。

我的问题

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

  1. 从我到目前为止所发现的情况来看,似乎大多数非嵌入式Linux安装,以及许多嵌入式安装,都可能不使用/dev/作为实际的分区安装空间?(来源)我不太清楚这意味着什么。我需要找一个不同的地方尝试安装我的新分区吗?
  2. 我也没有看到任何/dev/sda//dev/sdb/等在我的/dev/。Ubuntu和Ubuntu对于SBC是正常的吗?我觉得这与我的第一个问题有关,但仍然不清楚为什么会这样。
  3. 我还看到,使用MAKEDEV显然不能动态管理分区?是否有一种方法可以将其设置为动态管理,或者因为我正在使用它构建我的LFS分区,这是否重要?

我试过什么

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

布局

代码语言:javascript
运行
复制
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来尝试并完成我的构建的这一部分。对这件事有什么想法,我是想得太多了,还是误解了我需要做的事情?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-08-06 18:32:03

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

所以,您需要在这里使用sudo cfdisk /dev/mmcblk0

此外,如果您正在遵循一本面向泛型或x86硬件的“Linux从头开始”的书,那么您应该记住,您需要用/dev/mmcblk0来代替对/dev/sda或类似的任何引用,无论何时何地,预期的意思是“我的系统磁盘作为一个整体磁盘”。同样,当您将/dev/sda1看作是对“我的系统磁盘的第一个分区”的引用时,您应该用/dev/mmcblk0p1代替它。其他分区也是如此。

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

通常情况下,一个目录在用作挂载点时应该是空的,因为任何现有的内容都会被隐藏,而挂载的文件系统的根目录的内容将被显示出来。(在Linux中,系统管理员可以“查看”安装的文件系统,但我偏离了.)

/dev是设备节点(设备文件)的目录子树.只有他们,以及他们的子目录,通常应该在这个子树中.

在现代Linux系统中,/dev通常是一个基于RAM的文件系统(类型为tmpfsdevtmpfs),由udev自动管理。因此,通常只会看到系统上实际存在的设备的设备节点,并加载了它们的内核级驱动程序。

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

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

在开发动态管理的/dev文件系统之前,/dev过去只是根文件系统上的一个目录,包含设备节点。一组设备节点将在OS安装时创建,并在磁盘上的文件系统中持久化,就像普通文件一样。

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

创建(或重新创建,如果由于任何原因而被删除)设备节点的标准方法是mknod命令,以及一个名为MAKEDEV的脚本,它将使用mknod命令的循环来使用单个命令创建各种标准设备集。

不,MAKEDEV与分区本身无关。它也不会动态管理任何东西(设备节点和分区)。它是大规模创建老式静态管理设备节点的工具。

动态管理/dev目录树很可能涉及安装udev。如果你和LFS一起工作,那可能会在以后.也许过得很晚。

据我所知,创建一个分区“动态管理”并不是一件真正的事情。除非这是一种奇怪的说法“使用逻辑卷管理器(LVM)",也许?

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/603205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档