[devel] разбивалка диска (почему-то было: Шаги инсталлятора)
Leonid Krivoshein
klark.devel на gmail.com
Чт Июн 21 22:03:46 MSK 2018
21.06.2018 11:17, Michael Shigorin пишет:
> On Wed, Jun 20, 2018 at 12:50:21AM +0300, Leonid Krivoshein wrote:
>> Поизучав исходники Каламариса, посмотрев на инсталляторы в других
>> дистрибутивах, неоднократно выслушав пожелания иметь ещё и текстовый
>> инсталлятор, имея собственное желание объединить систему массового
>> развёртывания с инсталлятором в единое целое, поговорив с отдельными
>> товарищами на эту тему, решил пока сильно шашкой не размахивать, а
>> осилить "маленький, но важный кусочек", связанный с разбивкой диска,
> Это ни разу не "маленький", а САМЫЙ (с большим отрывом) сложный
> кусок инсталятора для разработчика и для пользователя тоже.
Потому и в кавычках. :) Надо же с чего-то начать.
> Его сложность обусловлена, с одной стороной, огромным наследием
> самых разных устройств и вариантов организации данных на них,
> а с другой -- риском потери этих данных лёгким движением руки.
>
> Известных мне работающих "машинок состояния", которые умеют
> "держать в уме" нюансы устройств/разбивок/ФС -- ровно два:
> libevms (апстрим давно умер) и libparted (который, помнится,
> сделали из партеда дебианщики для своего инсталятора).
Посмотрел много кода, в том числе linux-utils со всеми библиотеками,
evms, код dm/md в ядре. libfdisk, используемый всеми *disk'ами, тоже
ничего не меняет до последнего, но я бы не назвал её "машиной
состояния". Равно как libparted, она не поможет в случае md, lvm, dm, и
др... evms, подобно ядру и linux-utils, имеет описания множества
структур метаданных, но, в отличии от апстрима, там некому приводить это
в актуальное состояние. В результате чем дальше, тем хуже. Достаточно
сравнить структуры суперблока пресловутой ext2. Я нашёл способ не
использовать знания о размере и расположении метаданных, о внутренней их
структуре, а также дешёвый способ штатными методами обеспечить
сохранение состояния, комит и откат при необходимости. А для тех, у кого
достаточно лишней оперативки или на время инсталляции (развёртывания)
есть возможность выделить небольшой кусок реального диска, можно будет
предложить фичу "инсталляция в режиме --dry-run" с возможным применением
всех изменений только в самом конце. Но это я опять скатился к
обсуждению инсталлятора.
--
Best regards,
Leonid Krivoshein.
Подробная информация о списке рассылки Devel