AlteratorLilo
Материал из ALT Linux Wiki
(→Защита имен устройств) |
м (переименовал Alterator/AlteratorLilo в AlteratorLilo) |
||
(38 промежуточных версий не показаны.) | |||
Строка 1: | Строка 1: | ||
[[Category:Sisyphus]] | [[Category:Sisyphus]] | ||
- | |||
=== Alterator-Lilo === | === Alterator-Lilo === | ||
Строка 7: | Строка 6: | ||
(!) -- в существующем alterator-lilo пока нет | (!) -- в существующем alterator-lilo пока нет | ||
- | |||
====on_start()==== | ====on_start()==== | ||
* собираем инфу по системе | * собираем инфу по системе | ||
- | + | ** варианты установки загрузчика | |
- | + | *** все диски, без raid и removable -- удобно получать у hal'a (можно и в /sys, но, говорят, там часто меняется формат) | |
- | + | *** раздел, на котором находится /boot (в т.ч. raid). Грабли с raid под evms! Находится /dev/evms/md/md0, которого в системе не будет, непонятно как преобразовать его к /dev/md0 (который есть, но на которого нет ссылок из /dev/disk/* и про который не знает blkid и hal). Сейчас /evms/md просто отрезается... + Новые грабли с evms (uuid evms'ного раздела не видит ни udev ни lilo. При этом dootloader надо ставить на evms-раздел, а в lilo.conf писать обычный...) | |
- | + | ** рекомендуемое место для загрузчика | |
- | + | *** первый диск или raid, если на нем /boot (будет использоваться при переходе на simple UI) | |
- | + | ** поиск других ОС | |
- | + | **# найти все разделы всех дисков | |
- | + | **# исключить свой раздел | |
- | + | **# поискать загрузчик, определить тип ОС | |
- | + | **# (!) здесь сделать только заготовки названий, а умное добавление уникальных чисел делать позже!. | |
- | + | **# (!) здесь же, видимо, прописывать параметр master-boot для виндов | |
- | + | ||
- | + | ||
- | + | * читаем lilo.conf: | |
- | + | ** если есть системый, берем его - нормализуем - чиним (применяем недостающие значения) | |
- | + | *** сейчас root всегда жестко прописывается из fstab, видимо это и правильно... | |
- | + | ** иначе - берем template - применяем рекомендуемые значение | |
+ | *** append: из /proc/cmdline (сейчас фильтруются) | ||
+ | *** boot: первый диск или raid, если на нем /boot | ||
+ | *** root: из fstab | ||
- | + | * глобальные переменные: | |
- | + | ** lilo_opts="-H" | |
- | + | ** runlilo="#t" | |
- | + | ||
- | + | ||
- | + | ====on_read()==== | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | simple: | |
- | + | * boot | |
+ | * default | ||
+ | * timeout | ||
+ | |||
+ | expert: | ||
+ | * boot | ||
+ | * default | ||
+ | * timeout | ||
+ | * menu | ||
+ | * kernel_opts | ||
+ | * raid_extra_boot | ||
+ | * runlilo | ||
+ | |||
+ | raw: | ||
+ | * text | ||
+ | * runlilo | ||
+ | * lilo_opts | ||
+ | |||
+ | section: | ||
+ | * name | ||
+ | * image | ||
+ | * initrd | ||
+ | * root | ||
+ | * kernel_opts | ||
+ | * master-boot | ||
+ | |||
+ | ====on_write()==== | ||
+ | |||
+ | * simple -- выставлять raid-extra-boot в зависимости от boot. | ||
+ | * simple или expert -- выставить message в зависимости от install | ||
- | + | * rawfile | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | если получили параметр commit=#t -- ставил lilo.conf в систему | |
- | + | если получили еще и параметр runlilo=#t -- ставим bootable flags, запускаем lilo | |
- | + | ||
- | + | (пока ключ -b для evms-разделов) | |
+ | |||
+ | ====on_list()==== | ||
+ | |||
+ | * '''bootloader_places''' -- варианты установки загрузчика | ||
+ | * '''bootloader_places_expert''' -- ??? для editable combobox'a | ||
+ | * '''sections''' -- секции (в т.ч. для установки default section!) | ||
+ | * '''smart_sections''' -- секции для простого режима (существующие + найденные автоматом) | ||
+ | |||
+ | |||
+ | * '''install_variants''' (menu, text) | ||
+ | * '''raid_extra_boot_variants''' ("", none, auto, mbr, mbr-only) | ||
+ | * '''timeout_variants''' (0 10 50 100 200 600) | ||
+ | |||
+ | ====Простой интерфейс==== | ||
- | ===Политика работы с секциями=== | + | * Варианты установки загрузчика: |
+ | ** все жесткие диски | ||
+ | ** раздел, на котором находится /boot | ||
+ | ** (!) раздел на который ставится загрузчик в существующем lilo.conf (если отличается от предыдущих пунктов) | ||
+ | * Варианты загрузки -- неизменный список! | ||
+ | * combobox "Загружать по умолчанию" | ||
+ | * combobox "Время ожидания" | ||
+ | * кнопки "Применить" "Режим эксперта" | ||
+ | |||
+ | М.б пока не показывать никакие варианты кроме root on raid в инсталяторе?.. (на все остальное lilo ругается из-за кривого состояния evms+dm+raid) | ||
+ | |||
+ | ====Политика работы с секциями==== | ||
В начале работы производится поиск других ОС. Кроме того, существует текущая конфигурация с какими-то своими секциями. | В начале работы производится поиск других ОС. Кроме того, существует текущая конфигурация с какими-то своими секциями. | ||
- | * В экспертном интерфейсе показываются секции из конфигурационного файла, с возможностью добавлять и удалять вручную | + | * В экспертном интерфейсе показываются секции из конфигурационного файла, с возможностью добавлять и удалять вручную. Список найденных ОС никак не используется |
- | * В простом интерфейсе показывается список секций из конфигурационного файла + непересекающиеся с ним по именам устройств секции найденных ОС. Checkbox'ами отмечено то, что включено в текущую конфигурацию. При генерации этого слитого списка происходит умная расстановка чисел в названия автоматически определенных секций (все имена должны быть уникальны). | + | * В простом интерфейсе показывается список секций из конфигурационного файла + непересекающиеся с ним по именам устройств секции для найденных ОС. Checkbox'ами отмечено то, что включено в текущую конфигурацию. При генерации этого слитого списка происходит умная расстановка чисел в названия автоматически определенных секций (все имена должны быть уникальны). |
- | ===Защита имен устройств=== | + | ====Защита имен устройств==== |
- | + | Что-то типа такого: /dev/sda <-> /dev/disk/by-id/scsi-SATA_ST3250820AS_5QE2FCJP | |
Видимо, надо выполнять преобразование при сборке/разборке lilo.conf. Чтоб в простом и экспертном интерфейсе мы оперировали с /dev/sda, а в lilo.conf (и в режиме редактирования lilo.conf) -- с disk by id... (При этом, разумеется, ничто не мешает читать из lilo.conf /dev/sda и др., или писать в экспертном интерфейсе disk by id) | Видимо, надо выполнять преобразование при сборке/разборке lilo.conf. Чтоб в простом и экспертном интерфейсе мы оперировали с /dev/sda, а в lilo.conf (и в режиме редактирования lilo.conf) -- с disk by id... (При этом, разумеется, ничто не мешает читать из lilo.conf /dev/sda и др., или писать в экспертном интерфейсе disk by id) | ||
- | Вопрос с root device. Надо ли, как это сейчас сделано, указывать его по uuid, или же | + | Вопрос с root device. Надо ли, как это сейчас сделано, указывать его по uuid, или же для единообразия писать туда /dev/sda1 и, как и другие имена устройств, защищать с помощью /dev/disk/by-id (или /dev/disk/by-uuid)? |
- | ===странные грабли=== | + | (сейчас все сделано немного не так...) |
+ | |||
+ | ====Расстановка bootable-флагов==== | ||
+ | |||
+ | * Если загрузчик ставится на primary-раздел и на диске нет ни одного bootable-раздела -- ставлю флаг на этот раздел | ||
+ | * Если загрузчик ставится на extended-раздел или в MBR и на диске нет ни одного bootable-раздела -- ставлю флаг на первый раздел диска | ||
+ | * Если загрузчик ставится на raid -- произвожу эти действия для каждого из элементов raid'a. | ||
+ | |||
+ | Существующий код меня вполне устраивает. | ||
+ | |||
+ | ====странные грабли==== | ||
- | * Если у нас root на raid под evms, то lilo не хочет ставить загрузчик ни на что, кроме raid | + | * Если у нас root на raid под evms, то lilo не хочет ставить загрузчик ни на что, кроме raid (кажется, evms делает какое-то полусломанное состояние dm-устройств). Видимо из-за этого же raid под evms не виден ни в hal ни в /dev/disk/*, blkid его как-то тоже странно понимает. |
- | + | * Проблема с evms boot device. Раньше можно было указывать boot="UUID=...", теперь для устройств evms это нельзя (uuid таких устройств видит blkid, но не видит udev и lilo). Сейчас надо обязательно ставить lilo в /dev/evms/... | |
* hal не может определить id и flags и для некоторых разделов | * hal не может определить id и flags и для некоторых разделов | ||
+ | |||
+ | ====не забыть==== | ||
+ | |||
+ | * права доступа lilo.conf и tmp-файла - 0600 | ||
+ | |||
+ | {{Category navigation|title=Модули Alterator|category=Модули Alterator|sortkey={{SUBPAGENAME}}}} |
Текущая версия на 17:40, 21 июля 2015
Содержание |
Alterator-Lilo
В данный момент бэкенд alterator-lilo очень запутан и требует переделки. (Из-за существенной модификации интерфейса и довольно неаккуратной правки бэкенда, чтоб он этому интерфейсу соответствовал). Попробую cобрать здесь план нового бакенда...
(!) -- в существующем alterator-lilo пока нет
on_start()
- собираем инфу по системе
- варианты установки загрузчика
- все диски, без raid и removable -- удобно получать у hal'a (можно и в /sys, но, говорят, там часто меняется формат)
- раздел, на котором находится /boot (в т.ч. raid). Грабли с raid под evms! Находится /dev/evms/md/md0, которого в системе не будет, непонятно как преобразовать его к /dev/md0 (который есть, но на которого нет ссылок из /dev/disk/* и про который не знает blkid и hal). Сейчас /evms/md просто отрезается... + Новые грабли с evms (uuid evms'ного раздела не видит ни udev ни lilo. При этом dootloader надо ставить на evms-раздел, а в lilo.conf писать обычный...)
- рекомендуемое место для загрузчика
- первый диск или raid, если на нем /boot (будет использоваться при переходе на simple UI)
- поиск других ОС
- найти все разделы всех дисков
- исключить свой раздел
- поискать загрузчик, определить тип ОС
- (!) здесь сделать только заготовки названий, а умное добавление уникальных чисел делать позже!.
- (!) здесь же, видимо, прописывать параметр master-boot для виндов
- варианты установки загрузчика
- читаем lilo.conf:
- если есть системый, берем его - нормализуем - чиним (применяем недостающие значения)
- сейчас root всегда жестко прописывается из fstab, видимо это и правильно...
- иначе - берем template - применяем рекомендуемые значение
- append: из /proc/cmdline (сейчас фильтруются)
- boot: первый диск или raid, если на нем /boot
- root: из fstab
- если есть системый, берем его - нормализуем - чиним (применяем недостающие значения)
- глобальные переменные:
- lilo_opts="-H"
- runlilo="#t"
on_read()
simple:
- boot
- default
- timeout
expert:
- boot
- default
- timeout
- menu
- kernel_opts
- raid_extra_boot
- runlilo
raw:
- text
- runlilo
- lilo_opts
section:
- name
- image
- initrd
- root
- kernel_opts
- master-boot
on_write()
- simple -- выставлять raid-extra-boot в зависимости от boot.
- simple или expert -- выставить message в зависимости от install
- rawfile
если получили параметр commit=#t -- ставил lilo.conf в систему если получили еще и параметр runlilo=#t -- ставим bootable flags, запускаем lilo
(пока ключ -b для evms-разделов)
on_list()
- bootloader_places -- варианты установки загрузчика
- bootloader_places_expert -- ??? для editable combobox'a
- sections -- секции (в т.ч. для установки default section!)
- smart_sections -- секции для простого режима (существующие + найденные автоматом)
- install_variants (menu, text)
- raid_extra_boot_variants ("", none, auto, mbr, mbr-only)
- timeout_variants (0 10 50 100 200 600)
Простой интерфейс
- Варианты установки загрузчика:
- все жесткие диски
- раздел, на котором находится /boot
- (!) раздел на который ставится загрузчик в существующем lilo.conf (если отличается от предыдущих пунктов)
- Варианты загрузки -- неизменный список!
- combobox "Загружать по умолчанию"
- combobox "Время ожидания"
- кнопки "Применить" "Режим эксперта"
М.б пока не показывать никакие варианты кроме root on raid в инсталяторе?.. (на все остальное lilo ругается из-за кривого состояния evms+dm+raid)
Политика работы с секциями
В начале работы производится поиск других ОС. Кроме того, существует текущая конфигурация с какими-то своими секциями.
- В экспертном интерфейсе показываются секции из конфигурационного файла, с возможностью добавлять и удалять вручную. Список найденных ОС никак не используется
- В простом интерфейсе показывается список секций из конфигурационного файла + непересекающиеся с ним по именам устройств секции для найденных ОС. Checkbox'ами отмечено то, что включено в текущую конфигурацию. При генерации этого слитого списка происходит умная расстановка чисел в названия автоматически определенных секций (все имена должны быть уникальны).
Защита имен устройств
Что-то типа такого: /dev/sda <-> /dev/disk/by-id/scsi-SATA_ST3250820AS_5QE2FCJP
Видимо, надо выполнять преобразование при сборке/разборке lilo.conf. Чтоб в простом и экспертном интерфейсе мы оперировали с /dev/sda, а в lilo.conf (и в режиме редактирования lilo.conf) -- с disk by id... (При этом, разумеется, ничто не мешает читать из lilo.conf /dev/sda и др., или писать в экспертном интерфейсе disk by id)
Вопрос с root device. Надо ли, как это сейчас сделано, указывать его по uuid, или же для единообразия писать туда /dev/sda1 и, как и другие имена устройств, защищать с помощью /dev/disk/by-id (или /dev/disk/by-uuid)?
(сейчас все сделано немного не так...)
Расстановка bootable-флагов
- Если загрузчик ставится на primary-раздел и на диске нет ни одного bootable-раздела -- ставлю флаг на этот раздел
- Если загрузчик ставится на extended-раздел или в MBR и на диске нет ни одного bootable-раздела -- ставлю флаг на первый раздел диска
- Если загрузчик ставится на raid -- произвожу эти действия для каждого из элементов raid'a.
Существующий код меня вполне устраивает.
странные грабли
- Если у нас root на raid под evms, то lilo не хочет ставить загрузчик ни на что, кроме raid (кажется, evms делает какое-то полусломанное состояние dm-устройств). Видимо из-за этого же raid под evms не виден ни в hal ни в /dev/disk/*, blkid его как-то тоже странно понимает.
- Проблема с evms boot device. Раньше можно было указывать boot="UUID=...", теперь для устройств evms это нельзя (uuid таких устройств видит blkid, но не видит udev и lilo). Сейчас надо обязательно ставить lilo в /dev/evms/...
- hal не может определить id и flags и для некоторых разделов
не забыть
- права доступа lilo.conf и tmp-файла - 0600