Linux

Fdisk 不匹配 /proc/partitions 或掛載點(嵌入式)

  • June 9, 2017

我正在使用現有的嵌入式 Linux 設備,但無法使用 fdisk 編輯分區。我的目標是在/dev/sda上創建一個用於測試目的的分區。我正在使用與 BusyBox v1.23.2 捆綁的 fdisk。請看下面我的難題:

# cat /proc/partitions
major minor  #blocks  name
8        0   56582144 sda
8        1          8 sda1
8        2      32768 sda2
8        3     262144 sda3
8        4       1024 sda4
8        5        512 sda5
8        6        512 sda6
8        7   56285132 sda7

請注意,為sda列出了 7 個分區

# fdisk -l /dev/sda
Note: sector size is 4096 (not 512)

Disk /dev/sda: 57.9 GB, 57940115456 bytes
256 heads, 63 sectors/track, 877 cylinders
Units = cylinders of 16128 * 4096 = 66060288 bytes

 Device Boot        Start        End       Blocks    Id    System
/dev/sda1                1     266306   4294967292    ee    EFI GPT
Partition 1 has different physical/logical beginnings (non-Linux?):
       phys=(0,0,1) logical=(0,0,2)
Partition 1 has different physical/logical endings:
       phys=(1023, 255, 63) logical=(266305, 4, 4)

沒有顯示關於剩餘 6 個分區sda2 - sda7的資訊。

讓我們看看現在實際掛載的是什麼

# mount | grep '^/dev'
/dev/root on / type ext4 (rw,relatime,data=ordered)
/dev/block/bootdevice/by-name/userdata on /data type ext4 (rw,relatime,discard,noauto_da_alloc,data=ordered)
/dev/block/bootdevice/by-name/modem on /firmware type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
/dev/block/bootdevice/by-name/dsp on /dsp type ext4 (rw,relatime,discard,noauto_da_alloc,data=ordered)
/dev/block/bootdevice/by-name/bluetooth on /bt_firmware type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

特別注意/dev/block/bootdevice/by-name/userdata安裝在/data此處。讓我們檢查一下使用者數據指的是什麼分區:

# ls -alh /dev/block/bootdevice/by-name | grep userdata
lrwxrwxrwx    1 root     root           9 Jan 12 20:34 userdata -> /dev/sda7

我們可以在這裡看到它/dev/sda7正在被使用,因為它安裝在/data. 有什麼我可以做的,以便 fdisk 正確辨識所有分區並允許我編輯它們嗎?

您在 和 上有一個GUID 分區表(GPT) /dev/sdafdisk尤其是早期版本或小型嵌入式版本不適用於 GPT。您看到的是一種“兼容性”輸出,它不會向您顯示真實的結構,並且您將無法使用fdisk.

選項:

(1) 取出硬碟,連接到其他電腦,使用gparted等操作GPT分區表。

(2) 查看嵌入式設備上的二進製文件(非忙盒),看看是否有可以修改 GPT 的東西,例如gdisk/ cgdisk/ sgdisk

(3) 交叉編譯gdisk//cgdisksgdisk類似的程序,甚至可能gparted,因此它可以在您的嵌入式設備上執行。

(4) 把舊式的MBR分區表放在硬碟上而不是GPT上,盡量保留你想保留的分區(如果你想做一個新的分區,至少要去一個舊的分區,反正)。如果您不小心,這可能會破壞數據,因此請先進行備份。

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