AlteratorLilo: различия между версиями

Материал из ALT Linux Wiki
м (переименовал Alterator/AlteratorLilo в AlteratorLilo)
 
(не показано 37 промежуточных версий 4 участников)
Строка 1: Строка 1:
[[Category:Sisyphus]]
[[Category:Sisyphus]]
{{MovedFromFreesourceInfo|AltLinux/Sisyphus/Alterator/AlteratorLilo}}


=== Alterator-Lilo ===
=== Alterator-Lilo ===
Строка 7: Строка 6:


(!) -- в существующем alterator-lilo пока нет
(!) -- в существующем alterator-lilo пока нет


====on_start()====
====on_start()====


* собираем инфу по системе
* собираем инфу по системе
  * варианты установки загрузчика
** варианты установки загрузчика
    * все диски, без raid и removable!
*** все диски, без raid и removable -- удобно получать у hal'a (можно и в /sys, но, говорят, там часто меняется формат)
      * удобно получать у hal'a
*** раздел, на котором находится /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 писать обычный...)
    * раздел, на котором находится /boot
** рекомендуемое место для загрузчика
      * в т.ч. raid
*** первый диск или raid, если на нем /boot (будет использоваться при переходе на simple UI)
      * грабли с raid под evms! Находится /dev/evms/md/md0, которого в системе не будет, непонятно как преобразовать его к /dev/md0 (который есть, но на которого нет ссылок из /dev/disk/* и про который не знает blkid и hal). Сейчас /evms/md просто отрезается...
** поиск других ОС
  * рекомендуемое место для загрузчика
**# найти все разделы всех дисков
    * первый диск или raid, если на нем /boot
**# исключить свой раздел
  * поиск других ОС
**# поискать загрузчик, определить тип ОС
    - найти все разделы всех дисков
**# (!) здесь сделать только заготовки названий, а умное добавление уникальных чисел делать позже!.
    - исключить свой раздел
**# (!) здесь же, видимо, прописывать параметр 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


* читаем lilo.conf
raw:
  * если есть системый,
* text
      берем его - нормализуем - чиним (применяем недостающие значения)
* runlilo
  * иначе - берем template - применяем рекомендуемые значение
* lilo_opts


on_read()
section:
* simple
* name
* expert
* image
* rawfile
* initrd
  * генерим и отдаем форматированный lilo.conf
* root
* kernel_opts
* master-boot


on_write()
====on_write()====
* simple
  - выставлять raid-extra-boot!.
* expert
* rawfile


on_list()
* simple -- выставлять raid-extra-boot в зависимости от boot.
Простой интерфейс
* simple или expert -- выставить message в зависимости от install
   
   
* Варианты установки загрузчика:
* rawfile
  * без root on raid:
 
    - все жесткие диски
если получили параметр commit=#t -- ставил lilo.conf в систему
    - раздел, на котором находится /boot
если получили еще и параметр runlilo=#t -- ставим bootable flags, запускаем lilo
    - (!) раздел на который ставится загрузчик в существующем lilo.conf
 
      (если отличается от предыдущих пунктов)
(пока ключ -b для evms-разделов)
  * root on raid
 
    - в инсталляторе не показывать никакой вариант, кроме.
====on_list()====
      (на все остальное lilo ругается)
 
* '''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)


* combobox "Загружать по умолчанию"
====Простой интерфейс====
   
   
===Политика работы с секциями===
* Варианты установки загрузчика:
** все жесткие диски
** раздел, на котором находится /boot
** (!) раздел на который ставится загрузчик в существующем lilo.conf (если отличается от предыдущих пунктов)
* Варианты загрузки -- неизменный список!
* combobox "Загружать по умолчанию"
* combobox "Время ожидания"
* кнопки "Применить" "Режим эксперта"
 
М.б пока не показывать никакие варианты кроме root on raid в инсталяторе?.. (на все остальное lilo ругается из-за кривого состояния evms+dm+raid)
 
====Политика работы с секциями====


В начале работы производится поиск других ОС. Кроме того, существует текущая конфигурация с какими-то своими секциями.
В начале работы производится поиск других ОС. Кроме того, существует текущая конфигурация с какими-то своими секциями.
* В экспертном интерфейсе показываются секции из конфигурационного файла, с возможностью добавлять и удалять вручную
* В экспертном интерфейсе показываются секции из конфигурационного файла, с возможностью добавлять и удалять вручную. Список найденных ОС никак не используется
* В простом интерфейсе показывается список секций из конфигурационного файла + непересекающиеся с ним по именам устройств секции найденных ОС. Checkbox'ами отмечено то, что включено в текущую конфигурацию. При генерации этого слитого списка происходит умная расстановка чисел в названия автоматически определенных секций (все имена должны быть уникальны).
* В простом интерфейсе показывается список секций из конфигурационного файла + непересекающиеся с ним по именам устройств секции для найденных ОС. Checkbox'ами отмечено то, что включено в текущую конфигурацию. При генерации этого слитого списка происходит умная расстановка чисел в названия автоматически определенных секций (все имена должны быть уникальны).


===Защита имен устройств===
====Защита имен устройств====


'''/dev/sda <-> /dev/disk/by-id/scsi-SATA_ST3250820AS_5QE2FCJP'''
Что-то типа такого: /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)
Строка 76: Строка 114:
Вопрос с root device. Надо ли, как это сейчас сделано, указывать его по uuid, или же для единообразия писать туда /dev/sda1 и, как и другие имена устройств, защищать с помощью /dev/disk/by-id (или /dev/disk/by-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 его как-то тоже странно понимает.
* 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}}}}

Текущая версия от 20: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)
    • поиск других ОС
      1. найти все разделы всех дисков
      2. исключить свой раздел
      3. поискать загрузчик, определить тип ОС
      4. (!) здесь сделать только заготовки названий, а умное добавление уникальных чисел делать позже!.
      5. (!) здесь же, видимо, прописывать параметр 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