* [devel-distro] grub и devicetree
@ 2019-12-17 17:10 Антон Мидюков
2019-12-18 18:56 ` Антон Мидюков
0 siblings, 1 reply; 8+ messages in thread
From: Антон Мидюков @ 2019-12-17 17:10 UTC (permalink / raw)
To: devel-distro
Доброго времени суток!
Существует задача прописать конкретный путь до devicetree в конфигурации
grub. Я так понимаю, что на данный момент devicetree задаётся автоматом
в /etc/grub.d/10_linux:
[...]
fdt=
for i in "dtb-${version}" "dtb-${alt_version}"; do
if test -e "${dirname}/${i}/foundation-v8.dtb" ; then
fdt="${i}/foundation-v8.dtb"
break
fi
done
[...]
if test -n "${fdt}" ; then
message="$(gettext_printf "Loading fdt ...")"
sed "s/^/$submenu_indentation/" << EOF
echo '$(echo "$message" | grub_quote)'
devicetree ${rel_dirname}/${fdt}
EOF
fi
У меня сразу же возник вопрос, а у какого из наших ядер есть
foundation-v8.dtb? Вроде нет такого.
Потому мне захотелось ввести переменную в /etc/sysconfig/grub2, например
$GRUB_FDT, которая будет проверяться в /etc/grub.d/10_linux и
подставляться в переменную fdt, т.е. в условие будет обёрнут лишь первый
участок кода.
Пока это просто идея. Может я вообще не в правильную сторону мыслю и
есть простое решение?
И насколько сложно у нас такой патч двинуть в Сизиф?
--
С уважением, Антон Мидюков <antohami@altlinux.org>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel-distro] grub и devicetree
2019-12-17 17:10 [devel-distro] grub и devicetree Антон Мидюков
@ 2019-12-18 18:56 ` Антон Мидюков
2019-12-18 20:28 ` Sergey Bolshakov
0 siblings, 1 reply; 8+ messages in thread
From: Антон Мидюков @ 2019-12-18 18:56 UTC (permalink / raw)
To: devel-distro
18.12.2019 0:10, Антон Мидюков пишет:
> Доброго времени суток!
>
> Существует задача прописать конкретный путь до devicetree в
> конфигурации grub. Я так понимаю, что на данный момент devicetree
> задаётся автоматом в /etc/grub.d/10_linux:
>
> [...]
Я сделал тестовое задание:
[#243217] [test-only] EPERM (try 2) grub.git=2.02-alt21
Изменения следующие:
1. Появилась возможность в /etc/sysconfig/grub2 записать в переменную
GRUB_FDT_LINUX имя необходимого dtb вместо умолчального
foundation-v8.dtb, который во всех наших ядрах для aarch64 есть (но есть
ещё и не совсем наши ядра). Возможно, стоит отказаться от этой
возможности. А может и не стоит, удобная фича.
2. Добавил в качестве пути поиска dtb для симлинков vmlinuz и kernel:
/boot/dtb
Таким образом, для того, чтобы можно было задать devicetree, должны быть
в наличии симлинки:
/boot/dtb -> /lib/devicetree/%version-%flavour-%release
/boot/dtb-%version-%flavour-%release ->
/lib/devicetree/%version-%flavour-%release
И в наличии должен быть
/boot/dtb-%version-%flavour-%release/${GRUB_FDT_LINUX} и
/boot/dtb/${GRUB_FDT_LINUX}
Вопрос: их, видимо, должен создавать installkernel при наличии
/lib/devicetree/%version-%flavour-%release?
Получается, нужно ещё доработать bootloaders-utils. Или добавить в пути
поиска /lib/devicetree/%version-%flavour-%release лучше?
--
С уважением, Антон Мидюков <antohami@altlinux.org>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel-distro] grub и devicetree
2019-12-18 18:56 ` Антон Мидюков
@ 2019-12-18 20:28 ` Sergey Bolshakov
2019-12-19 8:16 ` Антон Мидюков
0 siblings, 1 reply; 8+ messages in thread
From: Sergey Bolshakov @ 2019-12-18 20:28 UTC (permalink / raw)
To: Антон
Мидюков
Cc: devel-distro
>>>>> "Антон" == Антон Мидюков <midyukov-anton@ya.ru> writes:
> 18.12.2019 0:10, Антон Мидюков пишет:
>> Доброго времени суток!
>>
>> Существует задача прописать конкретный путь до devicetree в
>> конфигурации grub. Я так понимаю, что на данный момент devicetree
>> задаётся автоматом в /etc/grub.d/10_linux:
>>
>> [...]
> Я сделал тестовое задание:
> [#243217] [test-only] EPERM (try 2) grub.git=2.02-alt21
> Изменения следующие:
> 1. Появилась возможность в /etc/sysconfig/grub2 записать в переменную
> GRUB_FDT_LINUX имя необходимого dtb вместо умолчального
> foundation-v8.dtb, который во всех наших ядрах для aarch64 есть (но
> есть ещё и не совсем наши ядра). Возможно, стоит отказаться от этой
> возможности. А может и не стоит, удобная фича.
> 2. Добавил в качестве пути поиска dtb для симлинков vmlinuz и kernel:
> /boot/dtb
> Таким образом, для того, чтобы можно было задать devicetree, должны
> быть в наличии симлинки:
> /boot/dtb -> /lib/devicetree/%version-%flavour-%release
> /boot/dtb-%version-%flavour-%release ->
> /lib/devicetree/%version-%flavour-%release
> И в наличии должен быть
> /boot/dtb-%version-%flavour-%release/${GRUB_FDT_LINUX} и
> /boot/dtb/${GRUB_FDT_LINUX}
> Вопрос: их, видимо, должен создавать installkernel при наличии
> /lib/devicetree/%version-%flavour-%release?
> Получается, нужно ещё доработать bootloaders-utils. Или добавить в
> пути поиска /lib/devicetree/%version-%flavour-%release лучше?
Собственно, что за проблема таким образом решается ?
Напомню, что для варианта с загрузкой через u-boot,
по крайней мере mainline, имя файла с dtb уже наперёд известно
для каждого бинарника u-boot, так что достаточно указать путь
к директории со всеми известными dtb, что и делается симлинком
/boot/dtb для ядра по умолчанию либо полным версионированным
путём для каждого установленного ядра.
Использование же grub предполагает наличие UEFI, и вся эта
машинерия просто не нужна -- как правило, devicetree там
опционален, поскольку используется ACPI; но даже в том случае,
когда используется devicetree, он уже есть в памяти, и незачем
его подгружать откуда-то извне.
--
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel-distro] grub и devicetree
2019-12-18 20:28 ` Sergey Bolshakov
@ 2019-12-19 8:16 ` Антон Мидюков
2019-12-19 8:26 ` Антон Мидюков
2019-12-19 8:41 ` Sergey Bolshakov
0 siblings, 2 replies; 8+ messages in thread
From: Антон Мидюков @ 2019-12-19 8:16 UTC (permalink / raw)
To: devel-distro
19.12.2019 3:28, Sergey Bolshakov пишет:
> > 18.12.2019 0:10, Антон Мидюков пишет:
> >> Доброго времени суток!
> >>
> >> Существует задача прописать конкретный путь до devicetree в
> >> конфигурации grub. Я так понимаю, что на данный момент devicetree
> >> задаётся автоматом в /etc/grub.d/10_linux:
> >>
> >> [...]
>
> > Я сделал тестовое задание:
>
> > [#243217] [test-only] EPERM (try 2) grub.git=2.02-alt21
>
> > Изменения следующие:
>
> > 1. Появилась возможность в /etc/sysconfig/grub2 записать в переменную
> > GRUB_FDT_LINUX имя необходимого dtb вместо умолчального
> > foundation-v8.dtb, который во всех наших ядрах для aarch64 есть (но
> > есть ещё и не совсем наши ядра). Возможно, стоит отказаться от этой
> > возможности. А может и не стоит, удобная фича.
>
> > 2. Добавил в качестве пути поиска dtb для симлинков vmlinuz и kernel:
> > /boot/dtb
>
> > Таким образом, для того, чтобы можно было задать devicetree, должны
> > быть в наличии симлинки:
>
> > /boot/dtb -> /lib/devicetree/%version-%flavour-%release
>
> > /boot/dtb-%version-%flavour-%release ->
> > /lib/devicetree/%version-%flavour-%release
>
> > И в наличии должен быть
> > /boot/dtb-%version-%flavour-%release/${GRUB_FDT_LINUX} и
> > /boot/dtb/${GRUB_FDT_LINUX}
>
> > Вопрос: их, видимо, должен создавать installkernel при наличии
> > /lib/devicetree/%version-%flavour-%release?
>
> > Получается, нужно ещё доработать bootloaders-utils. Или добавить в
> > пути поиска /lib/devicetree/%version-%flavour-%release лучше?
>
> Собственно, что за проблема таким образом решается ?
Решаем возможность нормального обновления grub на системе с EFI, которая
не имеет ACPI и не предоставляет devicetree при загрузке.
Иначе, прописав в grub.cfg devicetree, после обновления его там уже не
будет.
Хорошенько подумав, я решил, что не стоит трогать installkernel, всё
можно сделать и в grub.
Так как я добавил ранее поиск devicetree в /boot/dtb для vmlinuz, то
пришлось отказаться от дефолтного значения, которое теперь стало ломать
загрузку на нормальных EFI.
Собран новый вариант, который ничего ломать не должен:
[#243217] [test-only] EPERM (try 5) grub.git=2.02-alt21
Ещё несколько слов. У нас поиск devicetree добавлялся ранее патчем от
2014 года
grub-2.02-sb-0005-Make-10_linux-work-with-our-changes-for-linux16-and-.patch
Но использоваться фактически не мог, так как мы не делаем симлинки:
boot/dtb-%version-%flavour-%release ->
/lib/devicetree/%version-%flavour-%release
--
С уважением, Антон Мидюков <antohami@altlinux.org>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel-distro] grub и devicetree
2019-12-19 8:16 ` Антон Мидюков
@ 2019-12-19 8:26 ` Антон Мидюков
2019-12-19 8:41 ` Sergey Bolshakov
1 sibling, 0 replies; 8+ messages in thread
From: Антон Мидюков @ 2019-12-19 8:26 UTC (permalink / raw)
To: devel-distro
19.12.2019 15:16, Антон Мидюков пишет:
> [...]
> Ещё несколько слов. У нас поиск devicetree добавлялся ранее патчем от
> 2014 года
> grub-2.02-sb-0005-Make-10_linux-work-with-our-changes-for-linux16-and-.patch
>
> Но использоваться фактически не мог, так как мы не делаем симлинки:
>
> boot/dtb-%version-%flavour-%release ->
> /lib/devicetree/%version-%flavour-%release
>
Вернее, если бы мы их делали, у нас была бы сломана загрузка на
нормальных EFI с ядрами, у которых собраны devicetree (aarch64).
Грузился бы только дефолтный пункт.
--
С уважением, Антон Мидюков <antohami@altlinux.org>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel-distro] grub и devicetree
2019-12-19 8:16 ` Антон Мидюков
2019-12-19 8:26 ` Антон Мидюков
@ 2019-12-19 8:41 ` Sergey Bolshakov
2019-12-19 8:51 ` Антон Мидюков
1 sibling, 1 reply; 8+ messages in thread
From: Sergey Bolshakov @ 2019-12-19 8:41 UTC (permalink / raw)
To: Антон
Мидюков
Cc: devel-distro
>>>>> "Антон" == Антон Мидюков <midyukov-anton@ya.ru> writes:
> 19.12.2019 3:28, Sergey Bolshakov пишет:
>> > 18.12.2019 0:10, Антон Мидюков пишет:
>> >> Доброго времени суток!
>> >>
>> >> Существует задача прописать конкретный путь до devicetree в
>> >> конфигурации grub. Я так понимаю, что на данный момент devicetree
>> >> задаётся автоматом в /etc/grub.d/10_linux:
>> >>
>> >> [...]
>>
>> > Я сделал тестовое задание:
>>
>> > [#243217] [test-only] EPERM (try 2) grub.git=2.02-alt21
>>
>> > Изменения следующие:
>>
>> > 1. Появилась возможность в /etc/sysconfig/grub2 записать в переменную
>> > GRUB_FDT_LINUX имя необходимого dtb вместо умолчального
>> > foundation-v8.dtb, который во всех наших ядрах для aarch64 есть (но
>> > есть ещё и не совсем наши ядра). Возможно, стоит отказаться от этой
>> > возможности. А может и не стоит, удобная фича.
>>
>> > 2. Добавил в качестве пути поиска dtb для симлинков vmlinuz и kernel:
>> > /boot/dtb
>>
>> > Таким образом, для того, чтобы можно было задать devicetree, должны
>> > быть в наличии симлинки:
>>
>> > /boot/dtb -> /lib/devicetree/%version-%flavour-%release
>>
>> > /boot/dtb-%version-%flavour-%release ->
>> > /lib/devicetree/%version-%flavour-%release
>>
>> > И в наличии должен быть
>> > /boot/dtb-%version-%flavour-%release/${GRUB_FDT_LINUX} и
>> > /boot/dtb/${GRUB_FDT_LINUX}
>>
>> > Вопрос: их, видимо, должен создавать installkernel при наличии
>> > /lib/devicetree/%version-%flavour-%release?
>>
>> > Получается, нужно ещё доработать bootloaders-utils. Или добавить в
>> > пути поиска /lib/devicetree/%version-%flavour-%release лучше?
>>
>> Собственно, что за проблема таким образом решается ?
> Решаем возможность нормального обновления grub на системе с EFI,
> которая не имеет ACPI и не предоставляет devicetree при загрузке.
Я высказывался offlist, повторю и сюда:
такое железо (EFI без ACPI и без вшитого devicetree) просто, в силу
принятых стандартов в этой области, не должно существовать, и я надеюсь,
что у сопровождающих grub достанет здравого смысла не принимать такие
изменения.
> Иначе, прописав в grub.cfg devicetree, после обновления его там уже не
> будет.
> Хорошенько подумав, я решил, что не стоит трогать installkernel, всё
> можно сделать и в grub.
> Так как я добавил ранее поиск devicetree в /boot/dtb для vmlinuz, то
> пришлось отказаться от дефолтного значения, которое теперь стало
> ломать загрузку на нормальных EFI.
> Собран новый вариант, который ничего ломать не должен:
> [#243217] [test-only] EPERM (try 5) grub.git=2.02-alt21
> Ещё несколько слов. У нас поиск devicetree добавлялся ранее патчем от
> 2014 года
> grub-2.02-sb-0005-Make-10_linux-work-with-our-changes-for-linux16-and-.patch
> Но использоваться фактически не мог, так как мы не делаем симлинки:
> boot/dtb-%version-%flavour-%release ->
> /lib/devicetree/%version-%flavour-%release
--
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel-distro] grub и devicetree
2019-12-19 8:41 ` Sergey Bolshakov
@ 2019-12-19 8:51 ` Антон Мидюков
2019-12-19 9:10 ` Nikolai Kostrigin
0 siblings, 1 reply; 8+ messages in thread
From: Антон Мидюков @ 2019-12-19 8:51 UTC (permalink / raw)
To: Sergey Bolshakov; +Cc: devel-distro
19.12.2019 15:41, Sergey Bolshakov пишет:
>>>>>> "Антон" == Антон Мидюков <midyukov-anton@ya.ru> writes:
> > 19.12.2019 3:28, Sergey Bolshakov пишет:
> >> > 18.12.2019 0:10, Антон Мидюков пишет:
> >> >> Доброго времени суток!
> >> >>
> >> >> Существует задача прописать конкретный путь до devicetree в
> >> >> конфигурации grub. Я так понимаю, что на данный момент devicetree
> >> >> задаётся автоматом в /etc/grub.d/10_linux:
> >> >>
> >> >> [...]
> >>
> >> > Я сделал тестовое задание:
> >>
> >> > [#243217] [test-only] EPERM (try 2) grub.git=2.02-alt21
> >>
> >> > Изменения следующие:
> >>
> >> > 1. Появилась возможность в /etc/sysconfig/grub2 записать в переменную
> >> > GRUB_FDT_LINUX имя необходимого dtb вместо умолчального
> >> > foundation-v8.dtb, который во всех наших ядрах для aarch64 есть (но
> >> > есть ещё и не совсем наши ядра). Возможно, стоит отказаться от этой
> >> > возможности. А может и не стоит, удобная фича.
> >>
> >> > 2. Добавил в качестве пути поиска dtb для симлинков vmlinuz и kernel:
> >> > /boot/dtb
> >>
> >> > Таким образом, для того, чтобы можно было задать devicetree, должны
> >> > быть в наличии симлинки:
> >>
> >> > /boot/dtb -> /lib/devicetree/%version-%flavour-%release
> >>
> >> > /boot/dtb-%version-%flavour-%release ->
> >> > /lib/devicetree/%version-%flavour-%release
> >>
> >> > И в наличии должен быть
> >> > /boot/dtb-%version-%flavour-%release/${GRUB_FDT_LINUX} и
> >> > /boot/dtb/${GRUB_FDT_LINUX}
> >>
> >> > Вопрос: их, видимо, должен создавать installkernel при наличии
> >> > /lib/devicetree/%version-%flavour-%release?
> >>
> >> > Получается, нужно ещё доработать bootloaders-utils. Или добавить в
> >> > пути поиска /lib/devicetree/%version-%flavour-%release лучше?
> >>
> >> Собственно, что за проблема таким образом решается ?
>
> > Решаем возможность нормального обновления grub на системе с EFI,
> > которая не имеет ACPI и не предоставляет devicetree при загрузке.
>
> Я высказывался offlist, повторю и сюда:
> такое железо (EFI без ACPI и без вшитого devicetree) просто, в силу
> принятых стандартов в этой области, не должно существовать, и я надеюсь,
> что у сопровождающих grub достанет здравого смысла не принимать такие
> изменения.
Хорошо. Тогда мне непонятно, зачем у нас накладывается патч:
grub-2.02-sb-0005-Make-10_linux-work-with-our-changes-for-linux16-and-.patch
Вернее его вторая половина про devicetree. Кабы не она, я бы не стал
ничего делать.
--
С уважением, Антон Мидюков <antohami@altlinux.org>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel-distro] grub и devicetree
2019-12-19 8:51 ` Антон Мидюков
@ 2019-12-19 9:10 ` Nikolai Kostrigin
0 siblings, 0 replies; 8+ messages in thread
From: Nikolai Kostrigin @ 2019-12-19 9:10 UTC (permalink / raw)
To: devel-distro
19.12.2019 11:51, Антон Мидюков пишет:
>
> Хорошо. Тогда мне непонятно, зачем у нас накладывается патч:
>
> grub-2.02-sb-0005-Make-10_linux-work-with-our-changes-for-linux16-and-.patch
>
>
> Вернее его вторая половина про devicetree. Кабы не она, я бы не стал
> ничего делать.
>
Эта серия патчей из fedora для совместимости grub2.02 c shim15+.
Прикладывалась оптом.
Если какая-то часть мешает, давайте пересмотрим и "пропатчим патчи".
--
Best regards,
Nikolai Kostrigin
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-12-19 9:10 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-17 17:10 [devel-distro] grub и devicetree Антон Мидюков
2019-12-18 18:56 ` Антон Мидюков
2019-12-18 20:28 ` Sergey Bolshakov
2019-12-19 8:16 ` Антон Мидюков
2019-12-19 8:26 ` Антон Мидюков
2019-12-19 8:41 ` Sergey Bolshakov
2019-12-19 8:51 ` Антон Мидюков
2019-12-19 9:10 ` Nikolai Kostrigin
ALT Linux Distributions development
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel-distro/0 devel-distro/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel-distro devel-distro/ http://lore.altlinux.org/devel-distro \
devel-distro@lists.altlinux.org devel-distro@lists.altlinux.ru devel-distro@lists.altlinux.com
public-inbox-index devel-distro
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel-distro
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git