[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