ALT Linux Distributions development
 help / color / mirror / Atom feed
* [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