Я работаю на существующем встроенном устройстве Linux, и у меня проблемы с редактированием разделов с помощью fdisk. Моя цель - создать раздел для тестирования на / dev / sda . Я использую fdisk в комплекте с BusyBox v1.23.2. См. Мою загадку ниже:
# 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
# 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)
указано 7 разделов. Информация об остальных 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
. Давайте проверим, к какому разделу userdata относится:
# 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) Просмотрите двоичные файлы (не Busybox) на вашем встроенном устройстве, чтобы узнать, есть ли у вас что-то, что может изменить GPT, например. gdisk
/cgdisk
/sgdisk
.
(3) Кросс-компилировать gdisk
/cgdisk
/sgdisk
или аналогичную программу, или даже gparted
, так что работает на вашем встроенном устройстве.
(4) Поместите на жесткий диск таблицу разделов MBR в старом стиле вместо GPT и попытайтесь сохранить разделы, которые вы хотите сохранить (если вы хотите создать новый раздел, по крайней мере один из старых разделов имеет все равно идти). Это может уничтожить данные, если вы не будете осторожны, поэтому сначала сделайте резервную копию.