Linux
Fdisk 不匹配 /proc/partitions 或掛載點(嵌入式)
我正在使用現有的嵌入式 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/sda
,fdisk
尤其是早期版本或小型嵌入式版本不適用於 GPT。您看到的是一種“兼容性”輸出,它不會向您顯示真實的結構,並且您將無法使用fdisk
.選項:
(1) 取出硬碟,連接到其他電腦,使用
gparted
等操作GPT分區表。(2) 查看嵌入式設備上的二進製文件(非忙盒),看看是否有可以修改 GPT 的東西,例如
gdisk
/cgdisk
/sgdisk
。(3) 交叉編譯
gdisk
//cgdisk
或sgdisk
類似的程序,甚至可能gparted
,因此它可以在您的嵌入式設備上執行。(4) 把舊式的MBR分區表放在硬碟上而不是GPT上,盡量保留你想保留的分區(如果你想做一個新的分區,至少要去一個舊的分區,反正)。如果您不小心,這可能會破壞數據,因此請先進行備份。