Linux

cfdisk:無法打開 /dev/sda

  • August 6, 2020

背景資料

我目前正在嘗試從頭開始建構 Linux (LFS) 分區。

這是我的第一次嘗試,我這樣做是為了挑戰自己,但我在開始時遇到了麻煩。

我正在使用 Raspberry Pi 3 和 16gb Micro SD,目前安裝了 Ubuntu 20.04LTS,作為我的基礎。

我在分配分區時遇到了麻煩。

我的問題

這是一個有點混亂的問題,但任何額外的清晰度或推薦的閱讀/研究都是受歡迎的!

  1. 從我目前發現的情況來看,似乎大多數非嵌入式 Linux 安裝以及許多嵌入式安裝可能不會/dev/用作實際的分區安裝空間?(來源)雖然我不太清楚這意味著什麼。我需要尋找不同的地方來嘗試安裝我的新分區嗎?
  2. /dev/sda/的. /dev/sdb/_ /dev/這對於 Ubuntu 或 SBC 的 Ubuntu 是否正常?我覺得這與我的第一個問題有關,但仍然不清楚為什麼會這樣。
  3. 我還看到使用MAKEDEV顯然不會使分區動態管理?有沒有辦法將它設置為動態管理,或者因為我使用它來建構我的 LFS 分區所以這很重要?

我試過的

我嘗試/dev/sda/使用sudo MAKEDEV sdafrom my創建,但顯然/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

您的系統有一個不使用(最初基於 SCSI)統一儲存設備命名的 SD/MMC 讀卡器。它使用不同的設備名稱樣式:您的整個磁碟設備是/dev/mmcblk0,並且它的分區被列為mmcblk0p<N>where<N>是分區的編號。是的,對於使用專用驅動程序而不是 USB 大容量儲存介面的 SD/MMC 讀卡器來說,這是正常的。

所以,你會想在sudo cfdisk /dev/mmcblk0這裡使用。

此外,如果您正在遵循通用或面向 x86 硬體的“Linux From Scratch”一書,您應該記住,無論何時何地,您都需要替換/dev/mmcblk0任何參考/dev/sda或類似內容,其預期含義是“我的系統磁碟作為整個磁碟”。同樣,當您看到/dev/sda1“我的系統盤的第一個分區”時,您應該替換/dev/mmcblk0p1它。對於任何其他分區,依此類推。

不,/dev/不是分區安裝空間。據我所知,沒有隔斷安裝空間這樣的東西。任何地方的任何目錄都可以充當另一個文件系統的掛載點。如果您想知道應該在哪裡設置掛載點,那麼您可能應該看看Filesystem Hierarchy Standard (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)”,也許吧?

引用自:https://unix.stackexchange.com/questions/603205