Merge lp:~juliank/debian-cd/boot-oem-kernel into lp:~ubuntu-cdimage/debian-cd/ubun3
- boot-oem-kernel
- Merge into ubun3
Status: | Merged |
---|---|
Merged at revision: | 2045 |
Proposed branch: | lp:~juliank/debian-cd/boot-oem-kernel |
Merge into: | lp:~ubuntu-cdimage/debian-cd/ubun3 |
Diff against target: |
151 lines (+68/-17) 2 files modified
tools/boot/focal/boot-amd64 (+40/-17) tools/boot/focal/dmi_modalias.cfg (+28/-0) |
To merge this branch: | bzr merge lp:~juliank/debian-cd/boot-oem-kernel |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Iain Lane | Approve | ||
Steve Langasek | Needs Fixing | ||
Review via email: mp+380532@code.launchpad.net |
Commit message
Description of the change
Julian Andres Klode (juliank) wrote : | # |
- 2044. By Julian Andres Klode
-
focal amd64 boot: Automatically load OEM kernels (initial version)
Add support for automatically loading oem kernels to the ISO. This initial
version is not entirely correct: We should be passing --linux to smbios, but
first need to upload a grub with that patch in.The kernels are installed so that generic kernel remains at /casper/vmlinuz,
while oem kernel (or other flavours) are installed to /casper-$flavour. - 2045. By Julian Andres Klode
-
simplify the grub.cfg by using casper_flavour instead of casper_
{kernel, initrd} One variable is one variable less than two variables. We save two lines
and redundant stuff.
Steve Langasek (vorlon) : | # |
- 2046. By Julian Andres Klode
-
dmi_modalias.cfg: Add --linux argument to smbios executions
It has landed
- 2047. By Julian Andres Klode
-
Address review comments
Julian Andres Klode (juliank) : | # |
Julian Andres Klode (juliank) wrote : | # |
This may have gone hidden, but I prefer to ship dmi_modalias.cfg now rather than building an extra grub update just to ship that file, because I don't have autopkgtests for it yet, and that all takes extra time, and we gotta get moving.
- 2048. By Julian Andres Klode
-
Do not use oem kernel for Ubuntu-
OEM-Kernel- Flavour default systems If the meta package declares Ubuntu-
OEM-Kernel- Flavour: default, do
not use the oem kernel, but the default one (generic, later hwe).
Iain Lane (laney) wrote : | # |
> This may have gone hidden, but I prefer to ship dmi_modalias.cfg now rather than building an extra grub update just to ship that file
We discussed this. Julian is going to take a task (card?) to do that with the next grub update.
I'm reviewing now.
Iain Lane (laney) wrote : | # |
Thanks. Please do take that task to fix the FIXME.
Preview Diff
1 | === modified file 'tools/boot/focal/boot-amd64' | |||
2 | --- tools/boot/focal/boot-amd64 2020-03-13 14:09:59 +0000 | |||
3 | +++ tools/boot/focal/boot-amd64 2020-03-24 15:59:51 +0000 | |||
4 | @@ -151,10 +151,15 @@ | |||
5 | 151 | done | 151 | done |
6 | 152 | fi | 152 | fi |
7 | 153 | if [ "$CDIMAGE_LIVE" = 1 ]; then | 153 | if [ "$CDIMAGE_LIVE" = 1 ]; then |
8 | 154 | mv $CDDIR/casper/filesystem.kernel-$FLAVOUR $CDDIR/casper/vmlinuz | ||
9 | 155 | CASPER_KERNEL=/casper/vmlinuz | 154 | CASPER_KERNEL=/casper/vmlinuz |
12 | 156 | CASPER_INITRD="/casper/initrd$(initrd_suffix "$CDDIR/casper/filesystem.initrd-$FLAVOUR")" | 155 | CASPER_INITRD=/casper/initrd |
13 | 157 | mv $CDDIR/casper/filesystem.initrd-$FLAVOUR "$CDDIR$CASPER_INITRD" | 156 | for kernel in $CDDIR/casper/filesystem.kernel-*; do |
14 | 157 | flavour=${kernel##*filesystem.kernel-} | ||
15 | 158 | flavour2="-${flavour}" | ||
16 | 159 | [ "$flavour" = "generic" ] && flavour2="" | ||
17 | 160 | mv $CDDIR/casper/filesystem.kernel-$flavour $CDDIR$CASPER_KERNEL${flavour2} | ||
18 | 161 | mv $CDDIR/casper/filesystem.initrd-$flavour $CDDIR$CASPER_INITRD${flavour2} | ||
19 | 162 | done | ||
20 | 158 | fi | 163 | fi |
21 | 159 | echo -n "-cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table " >> $N.mkisofs_opts | 164 | echo -n "-cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table " >> $N.mkisofs_opts |
22 | 160 | case "$MKISOFS" in | 165 | case "$MKISOFS" in |
23 | @@ -305,6 +310,24 @@ | |||
24 | 305 | rmdir boot$N/isolinux/grub | 310 | rmdir boot$N/isolinux/grub |
25 | 306 | sed -i '/^menuentry/Q' $CDDIR/boot/grub/grub.cfg | 311 | sed -i '/^menuentry/Q' $CDDIR/boot/grub/grub.cfg |
26 | 307 | 312 | ||
27 | 313 | |||
28 | 314 | # FIXME: dmi_modalias.cfg should be shipped in grub, with autopkgtest | ||
29 | 315 | cp $BASEDIR/tools/boot/$DI_CODENAME/dmi_modalias.cfg $CDDIR/boot/grub | ||
30 | 316 | |||
31 | 317 | # This dumps all oem meta packages in the cache, dumps their Modaliases fields, | ||
32 | 318 | # extracts all dmi: modaliases, joins them together using |, and then converts | ||
33 | 319 | # to a regular expressions by: anchoring it using ^(...)$, and converting * | ||
34 | 320 | # to .*. | ||
35 | 321 | # Then it uses grub's regexp module to match that one regex against the | ||
36 | 322 | # dmi_modalias variable that dmi_modalias.cfg generated for us. | ||
37 | 323 | cat >> $CDDIR/boot/grub/grub.cfg <<EOF | ||
38 | 324 | set casper_flavour="" | ||
39 | 325 | source \$prefix/dmi_modalias.cfg | ||
40 | 326 | if regexp '$($BASEDIR/tools/apt-selection cache show ^oem-.*-meta$ | grep-dctrl -v -XF Ubuntu-OEM-Kernel-Flavour default | grep-dctrl -P "" -nsModaliases | grep -o 'dmi:[^), ]*' | tr '\n' '|' | sed -E -e 's/(.*)/^(\1)$/' -e 's/\*/.*/g')' "\$dmi_modalias"; then | ||
41 | 327 | set casper_flavour="-oem" | ||
42 | 328 | fi | ||
43 | 329 | EOF | ||
44 | 330 | |||
45 | 308 | if [ "$BACKPORT_KERNEL" ]; then | 331 | if [ "$BACKPORT_KERNEL" ]; then |
46 | 309 | cat > $CDDIR/boot/grub/hwe-grub.cfg <<EOF | 332 | cat > $CDDIR/boot/grub/hwe-grub.cfg <<EOF |
47 | 310 | submenu 'Boot and Install with the HWE kernel' { | 333 | submenu 'Boot and Install with the HWE kernel' { |
48 | @@ -455,16 +478,16 @@ | |||
49 | 455 | cat >> $CDDIR/boot/grub/grub.cfg <<EOF | 478 | cat >> $CDDIR/boot/grub/grub.cfg <<EOF |
50 | 456 | menuentry "${livelabel#^}${suffix}" { | 479 | menuentry "${livelabel#^}${suffix}" { |
51 | 457 | set gfxpayload=keep | 480 | set gfxpayload=keep |
54 | 458 | linux $CASPER_KERNEL $KERNEL_PARAMS $DEFAULT_PRESEED$liveparams$LAYERFS_PATH_OPT $QUIET $SPLASH$extra_kopt --- | 481 | linux $CASPER_KERNEL\$casper_flavour $KERNEL_PARAMS $DEFAULT_PRESEED$liveparams$LAYERFS_PATH_OPT $QUIET $SPLASH$extra_kopt --- |
55 | 459 | initrd $CASPER_INITRD | 482 | initrd $CASPER_INITRD\$casper_flavour |
56 | 460 | } | 483 | } |
57 | 461 | EOF | 484 | EOF |
58 | 462 | done | 485 | done |
59 | 463 | cat >> $CDDIR/boot/grub/loopback.cfg <<EOF | 486 | cat >> $CDDIR/boot/grub/loopback.cfg <<EOF |
60 | 464 | menuentry "${livelabel#^}" { | 487 | menuentry "${livelabel#^}" { |
61 | 465 | set gfxpayload=keep | 488 | set gfxpayload=keep |
64 | 466 | linux $CASPER_KERNEL $KERNEL_PARAMS $DEFAULT_PRESEED$liveparams$LAYERFS_PATH_OPT iso-scan/filename=\${iso_path} $QUIET $SPLASH --- | 489 | linux $CASPER_KERNEL\$casper_flavour $KERNEL_PARAMS $DEFAULT_PRESEED$liveparams$LAYERFS_PATH_OPT iso-scan/filename=\${iso_path} $QUIET $SPLASH --- |
65 | 467 | initrd $CASPER_INITRD | 490 | initrd $CASPER_INITRD\$casper_flavour |
66 | 468 | } | 491 | } |
67 | 469 | EOF | 492 | EOF |
68 | 470 | if [ "$NOTRYONLYDO" != "true" ]; then | 493 | if [ "$NOTRYONLYDO" != "true" ]; then |
69 | @@ -480,15 +503,15 @@ | |||
70 | 480 | cat >> $CDDIR/boot/grub/grub.cfg <<EOF | 503 | cat >> $CDDIR/boot/grub/grub.cfg <<EOF |
71 | 481 | menuentry "Install $HUMANPROJECT${suffix}" { | 504 | menuentry "Install $HUMANPROJECT${suffix}" { |
72 | 482 | set gfxpayload=keep | 505 | set gfxpayload=keep |
75 | 483 | linux $CASPER_KERNEL $KERNEL_PARAMS $DEFAULT_PRESEED$LAYERFS_PATH_OPT only-ubiquity $QUIET $SPLASH$extra_kopt --- | 506 | linux $CASPER_KERNEL\$casper_flavour $KERNEL_PARAMS $DEFAULT_PRESEED$LAYERFS_PATH_OPT only-ubiquity $QUIET $SPLASH$extra_kopt --- |
76 | 484 | initrd $CASPER_INITRD | 507 | initrd $CASPER_INITRD\$casper_flavour |
77 | 485 | } | 508 | } |
78 | 486 | EOF | 509 | EOF |
79 | 487 | done | 510 | done |
80 | 488 | cat >> $CDDIR/boot/grub/loopback.cfg <<EOF | 511 | cat >> $CDDIR/boot/grub/loopback.cfg <<EOF |
81 | 489 | menuentry "Install $HUMANPROJECT" { | 512 | menuentry "Install $HUMANPROJECT" { |
84 | 490 | linux $CASPER_KERNEL $KERNEL_PARAMS $DEFAULT_PRESEED$LAYERFS_PATH_OPT only-ubiquity iso-scan/filename=\${iso_path} $QUIET $SPLASH --- | 513 | linux $CASPER_KERNEL\$casper_flavour $KERNEL_PARAMS $DEFAULT_PRESEED$LAYERFS_PATH_OPT only-ubiquity iso-scan/filename=\${iso_path} $QUIET $SPLASH --- |
85 | 491 | initrd $CASPER_INITRD | 514 | initrd $CASPER_INITRD\$casper_flavour |
86 | 492 | } | 515 | } |
87 | 493 | EOF | 516 | EOF |
88 | 494 | fi | 517 | fi |
89 | @@ -569,8 +592,8 @@ | |||
90 | 569 | cat >> $CDDIR/boot/grub/${!kp}grub.cfg <<EOF | 592 | cat >> $CDDIR/boot/grub/${!kp}grub.cfg <<EOF |
91 | 570 | menuentry "OEM install (for manufacturers)" { | 593 | menuentry "OEM install (for manufacturers)" { |
92 | 571 | set gfxpayload=keep | 594 | set gfxpayload=keep |
95 | 572 | linux $CASPER_KERNEL $KERNEL_PARAMS ${DEFAULT_PRESEED/$PREFIX_PRESEED/$PREFIX_PRESEED${!kp}}$LAYERFS_PATH_OPT only-ubiquity quiet splash oem-config/enable=true --- | 595 | linux $CASPER_KERNEL\$casper_flavour $KERNEL_PARAMS ${DEFAULT_PRESEED/$PREFIX_PRESEED/$PREFIX_PRESEED${!kp}}$LAYERFS_PATH_OPT only-ubiquity quiet splash oem-config/enable=true --- |
96 | 573 | initrd $CASPER_INITRD | 596 | initrd $CASPER_INITRD\$casper_flavour |
97 | 574 | } | 597 | } |
98 | 575 | EOF | 598 | EOF |
99 | 576 | else | 599 | else |
100 | @@ -631,14 +654,14 @@ | |||
101 | 631 | cat >> $CDDIR/boot/grub/grub.cfg <<EOF | 654 | cat >> $CDDIR/boot/grub/grub.cfg <<EOF |
102 | 632 | menuentry "Check disc for defects" { | 655 | menuentry "Check disc for defects" { |
103 | 633 | set gfxpayload=keep | 656 | set gfxpayload=keep |
106 | 634 | linux $CASPER_KERNEL $KERNEL_PARAMS$LAYERFS_PATH_OPT integrity-check quiet splash --- | 657 | linux $CASPER_KERNEL\$casper_flavour $KERNEL_PARAMS$LAYERFS_PATH_OPT integrity-check quiet splash --- |
107 | 635 | initrd $CASPER_INITRD | 658 | initrd $CASPER_INITRD\$casper_flavour |
108 | 636 | } | 659 | } |
109 | 637 | EOF | 660 | EOF |
110 | 638 | cat >> $CDDIR/boot/grub/loopback.cfg <<EOF | 661 | cat >> $CDDIR/boot/grub/loopback.cfg <<EOF |
111 | 639 | menuentry "Check disc for defects" { | 662 | menuentry "Check disc for defects" { |
114 | 640 | linux $CASPER_KERNEL $KERNEL_PARAMS$LAYERFS_PATH_OPT integrity-check iso-scan/filename=\${iso_path} quiet splash --- | 663 | linux $CASPER_KERNEL\$casper_flavour $KERNEL_PARAMS$LAYERFS_PATH_OPT integrity-check iso-scan/filename=\${iso_path} quiet splash --- |
115 | 641 | initrd $CASPER_INITRD | 664 | initrd $CASPER_INITRD\$casper_flavour |
116 | 642 | } | 665 | } |
117 | 643 | EOF | 666 | EOF |
118 | 644 | elif [ "$CDIMAGE_INSTALL_BASE" = 1 ]; then | 667 | elif [ "$CDIMAGE_INSTALL_BASE" = 1 ]; then |
119 | 645 | 668 | ||
120 | === added file 'tools/boot/focal/dmi_modalias.cfg' | |||
121 | --- tools/boot/focal/dmi_modalias.cfg 1970-01-01 00:00:00 +0000 | |||
122 | +++ tools/boot/focal/dmi_modalias.cfg 2020-03-24 15:59:51 +0000 | |||
123 | @@ -0,0 +1,28 @@ | |||
124 | 1 | # grub dmi modalias generator. buggy. | ||
125 | 2 | # | ||
126 | 3 | # (C) 2020 Canonical Ltd. | ||
127 | 4 | # SPDX-License-Identifier: GPL-2.0 | ||
128 | 5 | |||
129 | 6 | insmod smbios | ||
130 | 7 | |||
131 | 8 | # Extract dmi information | ||
132 | 9 | |||
133 | 10 | smbios --type 0 --get-string 4 --linux --set dmi_bvn # DMI_BIOS_VENDOR | ||
134 | 11 | smbios --type 0 --get-string 5 --linux --set dmi_bvr # DMI_BIOS_VERSION | ||
135 | 12 | smbios --type 0 --get-string 8 --linux --set dmi_bd # DMI_BIOS_DATE | ||
136 | 13 | |||
137 | 14 | smbios --type 1 --get-string 4 --linux --set dmi_svn # DMI_SYS_VENDOR | ||
138 | 15 | smbios --type 1 --get-string 5 --linux --set dmi_pn # DMI_PRODUCT_NAME | ||
139 | 16 | smbios --type 1 --get-string 6 --linux --set dmi_pvr # DMI_PRODUCT_VERSION | ||
140 | 17 | |||
141 | 18 | smbios --type 2 --get-string 4 --linux --set dmi_rvn # DMI_BOARD_VENDOR | ||
142 | 19 | smbios --type 2 --get-string 5 --linux --set dmi_rn # DMI_BOARD_NAME | ||
143 | 20 | smbios --type 2 --get-string 6 --linux --set dmi_rvr # DMI_BOARD_VERSION | ||
144 | 21 | |||
145 | 22 | smbios --type 3 --get-string 4 --linux --set dmi_cvn # DMI_CHASSIS_VENDOR | ||
146 | 23 | smbios --type 3 --get-byte 5 --set dmi_ct # DMI_CHASSIS_TYPE | ||
147 | 24 | smbios --type 3 --get-string 6 --linux --set dmi_cvr # DMI_CHASSIS_VERSION | ||
148 | 25 | |||
149 | 26 | # Construct a modalias string | ||
150 | 27 | |||
151 | 28 | set dmi_modalias="dmi:bvn${dmi_bvn}:bvr${dmi_bvr}:bd${dmi_bd}:svn${dmi_svn}:pn${dmi_pn}:pvr${dmi_pvr}:rvn${dmi_rvn}:rn${dmi_rn}:rvr${dmi_rvr}:cvn${dmi_cvn}:ct${dmi_ct}:cvr${dmi_cvr}" |
This is missing the --linux argument to smbios, as I first need to upload grub with that in, but otherwise works fine.