Summary: | Невозможно уменьшить раздел FAT32 в инсталяторе | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Антон Мидюков <antohami> | ||||
Component: | evms | Assignee: | Олег Соловьев <mcpain> | ||||
Status: | NEW --- | QA Contact: | qa-sisyphus | ||||
Severity: | normal | ||||||
Priority: | P5 | CC: | mcpain, mike | ||||
Version: | unstable | ||||||
Hardware: | all | ||||||
OS: | Linux | ||||||
Attachments: |
|
Description
Антон Мидюков
2023-01-07 17:44:07 MSK
На самом деле в аргументы fatresize вставляется vol->dev_node, который должен быть /dev/sdb1 В логи пишется vol->name и ради совместимости он оставлен без изменений, т.к. много чего на нём завязано в alterator-vm Выяснилось, что fatresize 1.0.3 не умеет работать с /dev/dm-* 1.1.0 должен уметь, судя по описанию коммита (Ответ для Олег Соловьев на комментарий #2) > 1.1.0 должен уметь, судя по описанию коммита 1.1.0, как оказалось, не умеет. Когда fatresize получает имя устройства, например, /dev/sda3, он делает вот что (приблизительно): - ищет устройство/диск (PedDisk), на котором находится партиция (/dev/sda); - узнает номер партиции по числовому суффиксу (номер 3); - получает PedPartition через вызов ped_disk_get_partition(disk, 3). Для devmapper все это не работает (диска-родителя нету, числовой суффикс может быть от балды). Но, как оказалось, libparted позволяет открывать devmapper устройства как PedDisk, и при этом первая партиция (PedPartition) на этом "диске" оказывается нашим искомым volume с FAT. В общем, собрал fatresize 1.1.0 с фиксом, пока в testonly: https://git.altlinux.org/tasks/313129 Несмотря на фикс devmapper, изменить размер у FAT на LVM LV (собранный в evms) все равно нельзя, т.к. evms кладет запрещенные прямые слэши в названия dm-устройств:
> The name "lvm2|vg|vg" should be mangled but it contains blacklisted characters
(Ответ для Slava Aseev на комментарий #4) > запрещенные прямые слэши Напутал, имеется в виду пайп "|" Created attachment 12268 [details] Лог evms (сборка с заданием 313129) (Ответ для Slava Aseev на комментарий #3) > (Ответ для Олег Соловьев на комментарий #2) > > 1.1.0 должен уметь, судя по описанию коммита > > 1.1.0, как оказалось, не умеет. > > Когда fatresize получает имя устройства, например, /dev/sda3, он делает вот > что (приблизительно): > - ищет устройство/диск (PedDisk), на котором находится партиция (/dev/sda); > - узнает номер партиции по числовому суффиксу (номер 3); > - получает PedPartition через вызов ped_disk_get_partition(disk, 3). > > Для devmapper все это не работает (диска-родителя нету, числовой суффикс > может быть от балды). > Но, как оказалось, libparted позволяет открывать devmapper устройства как > PedDisk, и при этом первая партиция (PedPartition) на этом "диске" > оказывается нашим искомым volume с FAT. > > В общем, собрал fatresize 1.1.0 с фиксом, пока в testonly: > https://git.altlinux.org/tasks/313129 Собрал образ с заданием. Обычный раздел fat32 на ESP разделе (gpt) пробую уменьшить на 16 МБ, также прерывается. (Ответ для Антон Мидюков на комментарий #6) > Создано вложение 12268 [details] [подробности] > Лог evms (сборка с заданием 313129) > > (Ответ для Slava Aseev на комментарий #3) > > (Ответ для Олег Соловьев на комментарий #2) > > > 1.1.0 должен уметь, судя по описанию коммита > > > > 1.1.0, как оказалось, не умеет. > > > > Когда fatresize получает имя устройства, например, /dev/sda3, он делает вот > > что (приблизительно): > > - ищет устройство/диск (PedDisk), на котором находится партиция (/dev/sda); > > - узнает номер партиции по числовому суффиксу (номер 3); > > - получает PedPartition через вызов ped_disk_get_partition(disk, 3). > > > > Для devmapper все это не работает (диска-родителя нету, числовой суффикс > > может быть от балды). > > Но, как оказалось, libparted позволяет открывать devmapper устройства как > > PedDisk, и при этом первая партиция (PedPartition) на этом "диске" > > оказывается нашим искомым volume с FAT. > > > > В общем, собрал fatresize 1.1.0 с фиксом, пока в testonly: > > https://git.altlinux.org/tasks/313129 > > Собрал образ с заданием. Обычный раздел fat32 на ESP разделе (gpt) пробую > уменьшить на 16 МБ, также прерывается. Полагаю, здесь причина вот в чем: fatresize -vvv -s 239951k /dev/dm-4 fatresize 1.1.0 (20230111) ped_device_get(/dev/dm-4) fix partition number for devmapper device ped_device_open() ped_disk_new() ped_disk_get_partition(1) part(start=0, end=649215, length=649216) ped_geometry_new(0) ped_unit_parse(468654) ped_geometry_duplicate() ped_geometry_init(0, 468751) snap_to_boundaries() ped_file_system_open() constraint_intersect_and_destroy() ped_disk_set_partition_geom(0, 468750) Resizing file system. Warning: The file system can only be resized to this size by converting to FAT16. If you convert to FAT16, and MS Windows is installed on this partition, then you must re-install the MS Windows boot loader. If you want to do this, you should consult the Parted manual (or your distribution's manual). OK/Cancel: (Ответ для Slava Aseev на комментарий #7) > Warning: The file system can only be resized to this size by converting to > FAT16. If you convert to FAT16, and MS Windows is installed on this > partition, then you must re-install the MS Windows boot loader. If you want > to do this, you should consult the Parted manual (or your distribution's > manual). Это, кстати, спрашивает именно libparted (не fatresize). В libparted прибит минимальный размер для fat32 в 65520 кластеров. А также минимальный размер кластера в 4096 байт или 4 сектора. Отсюда и проблемы со всеми fat, которые под эти критерии не попадают. Сама же fat в evms создается при помощи mkfs.fat, а у него таких ограничений нет. Если размер будет меньше 65520 кластеров, он просто уменьшит размер самого кластера (т.е. вместо 4 сектора на кластер будет 1). |