Bug 40188

Summary: Поддержка образа syslinux/alt0/vmlinuz и boot/vmlinuz
Product: Sisyphus Reporter: Andrey Cherepanov <cas>
Component: alterator-netinstAssignee: Anton V. Boyarshinov <boyarsh>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: aen, andy, antohami, boyarsh, snowmix
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Andrey Cherepanov 2021-06-08 15:45:25 MSK
Необходимо поддерживать расположение vmlinuz в разных каталогах.
Comment 1 Антон Мидюков 2021-06-08 17:59:50 MSK
Он ещё и на syslinux завязан:

  [ -d "$MNT/syslinux" ] ||
    fatal "Error: bad image: no syslinux directory"
  [ -d "$TFTPDIR" ] ||
    fatal "Error: no $TFTPDIR"
  cp -f "/usr/lib/syslinux/pxelinux.0" "$TFTPDIR/pxelinux.0" ||
    fatal "Error: can't copy pxelinux.0 to $TFTPDIR"
  cp -fr "$MNT/syslinux" "$TFTPDIR/syslinux" ||
    fatal "Error: can't copy syslinux directory to $TFTPDIR"
  mkdir -p "$TFTPDIR/pxelinux.cfg" ||
    fatal "Error: can't create $TFTPDIR/pxelinux.cfg"

Только для Legacy?

По багу. Нужно исправить вот это место в alterator-netinst/bin/alterator-netinst:
  # Setting up pxelinux.cfg
  sed -e "
      1i\
  default $default
      s%\(kernel\)[[:space:]]\+\([^[:space:]]\+\)%\1 syslinux/\2%
      s%timeout[[:space:]]\+\([^[:space:]]\+\)%timeout 100%
      /^default[[:space:]]/d
      s/.*gfxboot bootlogo.*//
      /^[[:space:]]*append/{
        s%initrd=\([^[:space:]]\+\)%initrd=syslinux/\1%
        s%automatic=[^[:space:]]\+%%
        s%\$% automatic=method:nfs,network:dhcp${tz:+ tz=$tz} ${lang:+ lang=$lang} ${krb5:+ krb5} $vnc%
      }"\
    "$TFTPDIR/syslinux/isolinux.cfg" \
    > "$TFTPDIR/pxelinux.cfg/default"

Т.е. проблема в том, что раньше был относительный путь:
alt0/vmlinuz
теперь же абсолютный:
/boot/vmlimuz

Думаю, нужно уточнить

s%\(kernel\)[[:space:]]\+\([^[:space:]]\+\)%\1 syslinux/\2%
s%initrd=\([^[:space:]]\+\)%initrd=syslinux/\1%

каталогом alt0, чтобы не добавлял перед /boot syslinux.

И заменять дополнительно:

kernel /boot/
initrd /boot/

на

kernel boot/
initrd boot/
Comment 2 Антон Мидюков 2021-06-08 18:02:58 MSK
(Ответ для Антон Мидюков на комментарий #1)
> И заменять дополнительно:
> 
> kernel /boot/
> initrd /boot/
> 
> на
> 
> kernel boot/
> initrd boot/

initrd=/boot/
на
initrd=boot/

разумеется.
Comment 3 Andrew Vasilyev 2021-06-08 18:30:27 MSK
Этот /boot ещё нужно скопировать в $TFTPDIR/ :-)
А вот если его скопировать (при наличии /boot в корне образа) в $TFTPDIR/syslinux, то остальной код можно оставить как есть.
Comment 4 Andrew Vasilyev 2021-06-08 18:37:30 MSK
Как-то так:

http://git.altlinux.org/tasks/274065/gears/100/git
Comment 5 Антон Мидюков 2021-06-08 18:50:07 MSK
(Ответ для Andrew Vasilyev на комментарий #3)
> Этот /boot ещё нужно скопировать в $TFTPDIR/ :-)
> А вот если его скопировать (при наличии /boot в корне образа) в
> $TFTPDIR/syslinux, то остальной код можно оставить как есть.

Ага. Задание сразу увидел и посмотрел.
Только может не копировать каталоги, вложенные в boot/ ? Лишние мегабайты же (10 МБ).
Comment 6 Andrew Vasilyev 2021-06-08 18:56:17 MSK
(Ответ для Антон Мидюков на комментарий #5)
> (Ответ для Andrew Vasilyev на комментарий #3)
> > Этот /boot ещё нужно скопировать в $TFTPDIR/ :-)
> > А вот если его скопировать (при наличии /boot в корне образа) в
> > $TFTPDIR/syslinux, то остальной код можно оставить как есть.
> 
> Ага. Задание сразу увидел и посмотрел.
> Только может не копировать каталоги, вложенные в boot/ ? Лишние мегабайты же
> (10 МБ).

  Т.е. копировать только /boot/{vm*,full.cz}? А никаких других имён быть не может?

  И возникла ещё одна ошибка: если в isolinux.cfg есть, например в начале

ui menu.c32

  то ей тоже нужно добавить префикс syslinux/ (или удалить), иначе
  возникает ошибка.
Comment 7 Антон Мидюков 2021-06-08 19:06:01 MSK
(Ответ для Andrew Vasilyev на комментарий #6)
> (Ответ для Антон Мидюков на комментарий #5)
> > (Ответ для Andrew Vasilyev на комментарий #3)
> > > Этот /boot ещё нужно скопировать в $TFTPDIR/ :-)
> > > А вот если его скопировать (при наличии /boot в корне образа) в
> > > $TFTPDIR/syslinux, то остальной код можно оставить как есть.
> > 
> > Ага. Задание сразу увидел и посмотрел.
> > Только может не копировать каталоги, вложенные в boot/ ? Лишние мегабайты же
> > (10 МБ).
> 
>   Т.е. копировать только /boot/{vm*,full.cz}? А никаких других имён быть не
> может?

Конечно же нет. Создать каталог $TFTPDIR/syslinux/boot. Найти в каталоге boot файлы с глубиной поиска 0. Скопировать их в $TFTPDIR/syslinux/boot. Просто мало ли чего там лишнего лежит. Ну или каталоги после копирования удалить из $TFTPDIR/syslinux/boot. Но может и не стоит за копейки переживать.

> 
>   И возникла ещё одна ошибка: если в isolinux.cfg есть, например в начале
> 
> ui menu.c32
> 
>   то ей тоже нужно добавить префикс syslinux/ (или удалить), иначе
>   возникает ошибка.

Так может проблема эта и раньше была? Непохоже, что с этой как-то связана.
Comment 8 Andrew Vasilyev 2021-06-08 19:11:43 MSK
(Ответ для Антон Мидюков на комментарий #7)
> >   Т.е. копировать только /boot/{vm*,full.cz}? А никаких других имён быть не
> > может?
> 
> Конечно же нет. Создать каталог $TFTPDIR/syslinux/boot. Найти в каталоге
> boot файлы с глубиной поиска 0. Скопировать их в $TFTPDIR/syslinux/boot.
> Просто мало ли чего там лишнего лежит. Ну или каталоги после копирования
> удалить из $TFTPDIR/syslinux/boot. Но может и не стоит за копейки переживать.

  Если не переписывать всю логику (как предложил cas@: искать vmlinuz и т.п.
  и подставлять полные пути), а сделать простой fix, то не стоит усложнять.

> >   И возникла ещё одна ошибка: если в isolinux.cfg есть, например в начале
> > ui menu.c32
> >   то ей тоже нужно добавить префикс syslinux/ (или удалить), иначе
> >   возникает ошибка.
> 
> Так может проблема эта и раньше была? Непохоже, что с этой как-то связана.

  Да, но её тоже нужно исправлять. См. 
http://git.altlinux.org/tasks/274065/gears/200/git
Comment 9 Andrew Vasilyev 2021-06-08 22:51:41 MSK
  Добавил копирование pxelinux.0 с образа, если он там есть.

  http://git.altlinux.org/tasks/274065/gears/300/git
Comment 10 Anton V. Boyarshinov 2021-06-09 10:27:31 MSK
(Ответ для Антон Мидюков на комментарий #1)
> Он ещё и на syslinux завязан:
> 
 
> Только для Legacy?
> 
А кто-нибудь знает, как в UEFI вообще сетевая загрузка работает? Подозреваю, что в alterator-netinst на эту тему вообще ничего нет.
Comment 11 Mikhail Chernonog 2021-06-09 18:34:38 MSK
(Ответ для Anton V. Boyarshinov на комментарий #10)
> (Ответ для Антон Мидюков на комментарий #1)
> > Он ещё и на syslinux завязан:
> > 
>  
> > Только для Legacy?
> > 
> А кто-нибудь знает, как в UEFI вообще сетевая загрузка работает? Подозреваю,
> что в alterator-netinst на эту тему вообще ничего нет.

Проверяли сетевую установку в UEFI, точно работает с FTP, NFS. Так же проверяли автоустановку. Требуется выполнить дополнительные настройки, которые были добавлены в https://www.altlinux.org/Autoinstall#Автоустановка_в_UEFI начиная со слов "Скопировать файлы full.cz и vmlinuz ..."
Comment 12 Andrew Vasilyev 2021-06-10 23:15:19 MSK
  В Сизифе исправлено, в p9 отправлено.

* Tue Jun 08 2021 Andrew A. Vasilyev <andy@altlinux.org> 1.9.1-alt4
- Copy /boot from new images to syslinux directory.
- Remove user menu.
- Copy pxelinux.0 from image if exists.
Comment 13 AEN 2021-06-10 23:18:00 MSK
Спасибо!