<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://doc.ycharbi.fr/index.php?action=history&amp;feed=atom&amp;title=Unified_kernel_image</id>
	<title>Unified kernel image - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://doc.ycharbi.fr/index.php?action=history&amp;feed=atom&amp;title=Unified_kernel_image"/>
	<link rel="alternate" type="text/html" href="https://doc.ycharbi.fr/index.php?title=Unified_kernel_image&amp;action=history"/>
	<updated>2026-04-17T03:25:37Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://doc.ycharbi.fr/index.php?title=Unified_kernel_image&amp;diff=1559&amp;oldid=prev</id>
		<title>Ycharbi : Ajout de la section &quot;Extraction&quot;</title>
		<link rel="alternate" type="text/html" href="https://doc.ycharbi.fr/index.php?title=Unified_kernel_image&amp;diff=1559&amp;oldid=prev"/>
		<updated>2025-04-29T11:12:09Z</updated>

		<summary type="html">&lt;p&gt;Ajout de la section &amp;quot;Extraction&amp;quot;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 29 avril 2025 à 13:12&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l133&quot;&gt;Ligne 133 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 133 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ainsi, dans le cas malencontreux où une mise à jour de noyau ou une reconstruction d{{'}}''initrd'' occasionne une impossibilité à démarrer, les versions précédentes de votre image vous permettront de vous en sortir.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ainsi, dans le cas malencontreux où une mise à jour de noyau ou une reconstruction d{{'}}''initrd'' occasionne une impossibilité à démarrer, les versions précédentes de votre image vous permettront de vous en sortir.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==Extraction==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Il peut être utile d'[https://discourse.ubuntu.com/t/how-to-inspect-kernel-efi-uki-universal-kernel-image-binary/38266 extraire] un élément particulier contenu dans une ''UKI''.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# lister les sections du fichier : &amp;lt;code&gt;objdump -h /boot/efi/EFI/Linux/1-debian.efi&amp;lt;/code&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# extraire un élément (exemple pour le noyau et l{{'}}''initrd'') :&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;## &amp;lt;code&gt;objcopy -O binary -j.linux /boot/efi/EFI/Linux/1-debian.efi /tmp/vmlinuz&amp;lt;/code&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;## &amp;lt;code&gt;objcopy -O binary -j.initrd /boot/efi/EFI/Linux/1-debian.efi /tmp/initrd&amp;lt;/code&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Sources de la section==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Sources de la section==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ycharbi</name></author>
	</entry>
	<entry>
		<id>https://doc.ycharbi.fr/index.php?title=Unified_kernel_image&amp;diff=1530&amp;oldid=prev</id>
		<title>Ycharbi : /* Image Noyau Unifiée */ Suppression du support de la génération d'un UKI par le script post installation du noyau. Ceci engendrait un UKI contenant deux fois le noyau au lieu d'une fois celui-ci et une fois l'initrd. Après réflexion, aucun cas de figure ne justifie le maintient de la génération d'un UKI dans le cas de figure imaginé à l'origine</title>
		<link rel="alternate" type="text/html" href="https://doc.ycharbi.fr/index.php?title=Unified_kernel_image&amp;diff=1530&amp;oldid=prev"/>
		<updated>2024-08-11T17:01:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Image Noyau Unifiée : &lt;/span&gt; Suppression du support de la génération d&amp;#039;un UKI par le script post installation du noyau. Ceci engendrait un UKI contenant deux fois le noyau au lieu d&amp;#039;une fois celui-ci et une fois l&amp;#039;initrd. Après réflexion, aucun cas de figure ne justifie le maintient de la génération d&amp;#039;un UKI dans le cas de figure imaginé à l&amp;#039;origine&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 11 août 2024 à 19:01&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l30&quot;&gt;Ligne 30 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 30 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Récupération de la version du noyau en cours d'utilisation&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Récupération de la version du noyau en cours d'utilisation&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;if [[ -n &quot;${1}&quot; ]]; then&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;version_noyau=&quot;${1}&quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	&lt;/del&gt;version_noyau=&quot;${1}&quot;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;else&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	version_noyau=&quot;$(uname -r)&quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;fi&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Chemin vers l'initrd de travail&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Chemin vers l'initrd de travail&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;if [[ -n &quot;${2}&quot; ]]; then&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;chemin_initrd=&quot;${2}&quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	&lt;/del&gt;chemin_initrd=&quot;${2}&quot;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;else&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	chemin_initrd=&quot;/boot/initrd.img-${version_noyau}&quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;fi&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Chemin vers le noyau de travail&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Chemin vers le noyau de travail&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;if [[ -n &quot;${2}&quot; ]]; then&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;chemin_noyau=&quot;/boot/vmlinuz-${version_noyau}&quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	chemin_noyau=&quot;/boot/vmlinuz-${1}&quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;else&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	&lt;/del&gt;chemin_noyau=&quot;/boot/vmlinuz-${version_noyau}&quot;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;fi&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Définition des variables du script&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Définition des variables du script&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l121&quot;&gt;Ligne 121 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 109 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Automatisation==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Automatisation==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Le script ainsi créé peut être lancé manuellement mais il est préférable qu'il soit appelé à chaque mise à jour de noyau ou d{{'}}''initrd'' afin de garantir un démarrage sur la dernière version disponible. Cette dépendance se créée en l'exposant dans &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;les &lt;/del&gt;répertoire de post-construction de &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nos &lt;/del&gt;deux &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;composants &lt;/del&gt;d'&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;intérêts.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Le script ainsi créé peut être lancé manuellement mais il est préférable qu'il soit appelé à chaque mise à jour de noyau ou d{{'}}''initrd'' afin de garantir un démarrage sur la dernière version disponible. Cette dépendance se créée en l'exposant dans &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;le &lt;/ins&gt;répertoire de post-construction de &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;l{{'}}''initrd'' (&amp;lt;code&amp;gt;/etc/initramfs/post-update.d/&amp;lt;/code&amp;gt;). Il n'est pas souhaitable (voir balise &quot;info&quot; ci-après) de spécifier d'actions dans &amp;lt;code&amp;gt;/etc/kernel/postinst.d/&amp;lt;/code&amp;gt; puisque une installation ou une mise à jour du noyau exécute systématiquement une reconstruction de  l{{'}}''initrd''.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{info|Nous ne voulons pas générer un ''UKI'' depuis la phase post-installation du noyau pour deux raisons :&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* le paramètre &amp;lt;code&amp;gt;$2&amp;lt;/code&amp;gt; envoyé au script est égale au chemin absolut du nouveau noyau et non de l{{'}}''initrd''. Cela a pour effet de générer un ''UKI'' contenant deux fois le noyau et aucune fois l{{'}}''initrd'' (corrompu de fait)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* dans la mesure où &amp;lt;code&amp;gt;dpkg&amp;lt;/code&amp;gt; exécute à la fois les scripts des répertoires &amp;lt;code&amp;gt;/etc/initramfs/post-update.d/&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;/etc/kernel/postinst.d/&amp;lt;/code&amp;gt;, &lt;/ins&gt;deux &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;roulements &lt;/ins&gt;d&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{'}}&lt;/ins&gt;'&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;'UKI'' (dont un corrompu) s'effectuerait, ce qui n'a aucun sens et n'est clairement pas souhaitable car deux images sur trois sont alors issues de la même mise à jour}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  mkdir -p /etc/initramfs/post-update.d&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  mkdir -p /etc/initramfs/post-update.d&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ln -s /usr/local/sbin/gen-uki /etc/initramfs/post-update.d/zz-gen-uki&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ln -s /usr/local/sbin/gen-uki /etc/initramfs/post-update.d/zz-gen-uki&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; ln -s /usr/local/sbin/gen-uki /etc/kernel/postinst.d/zz-gen-uki&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  chmod u+x /etc/initramfs/post-update.d/zz-gen-uki&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  chmod u+x /etc/initramfs/post-update&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.d/zz-gen-uki /etc/kernel/postinst&lt;/del&gt;.d/zz-gen-uki&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{info|Le répertoire &amp;lt;code&amp;gt;/etc/initramfs/post-update.d&amp;lt;/code&amp;gt; n'est pas créé par défaut dans ''GNU/Linux Debian'' mais est bien parcouru lors de la génération d'une nouvelle archive d{{'}}''init''.}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{info|Le répertoire &amp;lt;code&amp;gt;/etc/initramfs/post-update.d&amp;lt;/code&amp;gt; n'est pas créé par défaut dans ''GNU/Linux Debian'' mais est bien parcouru lors de la génération d'une nouvelle archive d{{'}}''init''.}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ycharbi</name></author>
	</entry>
	<entry>
		<id>https://doc.ycharbi.fr/index.php?title=Unified_kernel_image&amp;diff=1509&amp;oldid=prev</id>
		<title>Ycharbi : /* Secure Boot */ Ajout d'une recommandation sur le mot de passe UEFI</title>
		<link rel="alternate" type="text/html" href="https://doc.ycharbi.fr/index.php?title=Unified_kernel_image&amp;diff=1509&amp;oldid=prev"/>
		<updated>2024-02-28T11:46:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Secure Boot : &lt;/span&gt; Ajout d&amp;#039;une recommandation sur le mot de passe UEFI&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 28 février 2024 à 13:46&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l156&quot;&gt;Ligne 156 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 156 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Afin que cette fonction ai un sens, il est préférable de n'autoriser que vos propres clés. Ceci n'est malheureusement pas possible sur la plupart des ''PC'' du marcher. En effet, les ''UEFI'' des machines grand publique embarquent celles de ''Microsoft'' pour le démarrage de ''Windows'' (obligatoire pour bénéficier de la certification idoine) et elles ne proposent pas (dans toutes celles que j'ai vu) de fonction pour gérer la base interne de clés (elles ne proposent bien souvent même pas d'administrer les entrées de démarrage...). Il est peut-être possible de contourner cette limitation avec l'outil &amp;lt;code&amp;gt;mokutil&amp;lt;/code&amp;gt; mais je n'ai pas creusé cette piste... La problématique des clés ''Microsoft'' est bien entendu que leur présence rend caduc l'exclusivité de la validité de vos signatures. Qui peut utiliser leur clé ? L'administration de ce paramètre semble donc réservée aux ordinateurs professionnels (les ''DELL XPS'' le permettent) et aux plateformes serveurs.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Afin que cette fonction ai un sens, il est préférable de n'autoriser que vos propres clés. Ceci n'est malheureusement pas possible sur la plupart des ''PC'' du marcher. En effet, les ''UEFI'' des machines grand publique embarquent celles de ''Microsoft'' pour le démarrage de ''Windows'' (obligatoire pour bénéficier de la certification idoine) et elles ne proposent pas (dans toutes celles que j'ai vu) de fonction pour gérer la base interne de clés (elles ne proposent bien souvent même pas d'administrer les entrées de démarrage...). Il est peut-être possible de contourner cette limitation avec l'outil &amp;lt;code&amp;gt;mokutil&amp;lt;/code&amp;gt; mais je n'ai pas creusé cette piste... La problématique des clés ''Microsoft'' est bien entendu que leur présence rend caduc l'exclusivité de la validité de vos signatures. Qui peut utiliser leur clé ? L'administration de ce paramètre semble donc réservée aux ordinateurs professionnels (les ''DELL XPS'' le permettent) et aux plateformes serveurs.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Enfin, il &lt;/del&gt;convient de s'assurer qu'aucun accès physique non autorisé à la machine n'a lieu car les gros malins qui ont rédigés les spécifications de l{{'}}''UEFI'' n'ont pas crus bon d'imposer le stockage de sa configuration en mémoire morte... L'utilisation d'une mémoire vive maintenue par une pile comme sur l'antique ''BIOS'' ayant retenu leur préférence, le débranchement de cette dernière engendrera une réinitialisation complète des paramètres et de la base de clés ''Secure Boot'' (permettant ainsi l'introduction de toute forme de charges utiles au démarrage)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, ce qui ruinera &lt;/del&gt;la mince barrière de sécurité que nous venons de mettre en place...&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Il &lt;/ins&gt;convient &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;en outre &lt;/ins&gt;de s'assurer qu'aucun accès physique non autorisé à la machine n'a lieu car les gros malins qui ont rédigés les spécifications de l{{'}}''UEFI'' n'ont pas crus bon d'imposer le stockage de sa configuration en mémoire morte... L'utilisation d'une mémoire vive maintenue par une pile comme sur l'antique ''BIOS'' ayant retenu leur préférence, le débranchement de cette dernière engendrera une réinitialisation complète des paramètres et de la base de clés ''Secure Boot'' (permettant ainsi l'introduction de toute forme de charges utiles au démarrage)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Ceci aura donc pour effet de ruiner &lt;/ins&gt;la mince barrière de sécurité que nous venons de mettre en place..&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Enfin, un mot de passe d'accès aux paramètres de l{{'}}''UEFI'' reste tout de même une pratique à suivre afin de vous assurer qu'aucune injection de clé non autorisée n'ai lieu. Dans le cas d'une réinitialisation par débranchement de la pile, vous saurez au moins qu'une action physique a été opérée sur la machine et pourrez entreprendre les mesures qui s'imposent (à commencer par ne surtout pas taper votre phrase de passe [[Cryptsetup|LUKS]] !). Vous pourrez par la suite vérifier la signature de votre ''UKI'' via un autre système pour s'assurer de son intégrité (pensez également à vérifier la présence d'enregistreurs de frappes [https://www.youtube.com/watch?v=AMzv6ymmUcw matériels])&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Glossaire==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Glossaire==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ycharbi</name></author>
	</entry>
	<entry>
		<id>https://doc.ycharbi.fr/index.php?title=Unified_kernel_image&amp;diff=1507&amp;oldid=prev</id>
		<title>Ycharbi : Page créée avec « Category:Noyau_linux  Une Image Noyau Unifiée (INU) ou ''Unified Kernel Image'' (''UKI'') est la combinaison d'un programme de démarrage ''UEFI'', d'une image noyau ''Linux'', d'un ''initrd'' ainsi que d'autres ressources optionnelles dans un seul fichier ''UEFI [https://fr.wikipedia.org/wiki/Portable_Executable PE]''. Il peut alors être invoqué directement par : * le micrologiciel ''UEFI'' : utile notamment dans certains environnements d'informatique en... »</title>
		<link rel="alternate" type="text/html" href="https://doc.ycharbi.fr/index.php?title=Unified_kernel_image&amp;diff=1507&amp;oldid=prev"/>
		<updated>2024-02-28T00:34:12Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « &lt;a href=&quot;/index.php/Cat%C3%A9gorie:Noyau_linux&quot; title=&quot;Catégorie:Noyau linux&quot;&gt;Category:Noyau_linux&lt;/a&gt;  Une Image Noyau Unifiée (INU) ou &amp;#039;&amp;#039;Unified Kernel Image&amp;#039;&amp;#039; (&amp;#039;&amp;#039;UKI&amp;#039;&amp;#039;) est la combinaison d&amp;#039;un programme de démarrage &amp;#039;&amp;#039;UEFI&amp;#039;&amp;#039;, d&amp;#039;une image noyau &amp;#039;&amp;#039;Linux&amp;#039;&amp;#039;, d&amp;#039;un &amp;#039;&amp;#039;initrd&amp;#039;&amp;#039; ainsi que d&amp;#039;autres ressources optionnelles dans un seul fichier &amp;#039;&amp;#039;UEFI [https://fr.wikipedia.org/wiki/Portable_Executable PE]&amp;#039;&amp;#039;. Il peut alors être invoqué directement par : * le micrologiciel &amp;#039;&amp;#039;UEFI&amp;#039;&amp;#039; : utile notamment dans certains environnements d&amp;#039;informatique en... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Noyau_linux]]&lt;br /&gt;
&lt;br /&gt;
Une Image Noyau Unifiée (INU) ou ''Unified Kernel Image'' (''UKI'') est la combinaison d'un programme de démarrage ''UEFI'', d'une image noyau ''Linux'', d'un ''initrd'' ainsi que d'autres ressources optionnelles dans un seul fichier ''UEFI [https://fr.wikipedia.org/wiki/Portable_Executable PE]''. Il peut alors être invoqué directement par :&lt;br /&gt;
* le micrologiciel ''UEFI'' : utile notamment dans certains environnements d'informatique en nuage ou confidentiels&lt;br /&gt;
* un chargeur de démarrage : généralement utile pour permettre plusieurs versions de noyau avec une sélection interactive ou automatique de la version dans laquelle démarrer ([[Systemd-boot]] ou [[Grub]] permettent cela)&lt;br /&gt;
&lt;br /&gt;
L'amorçage de cette image unifiée est permise par le ''stub'', programme logé dans celle-ci et pouvant être interprété par l{{'}}''UEFI''. Il constitue donc la partie exécutable initiale de l'image combinée et charge par la suite d'autres ressources à partir du reste de l{{'}}''INU'', en particulier le noyau et l{{'}}''initrd''.&lt;br /&gt;
&lt;br /&gt;
La [https://uapi-group.org/specifications/specs/unified_kernel_image/ spécification officielle] définit le format et les composants (obligatoires et optionnels) des ''UKI'' qui sont fournis en tant que sections ''PE/COFF'' de l'exécutable.&lt;br /&gt;
&lt;br /&gt;
L'intérêt principal de cette approche est qu'elle permet de mieux sécuriser le démarrage d'un système en exposant un unique binaire (''UEFI PE'') en clair sur le disque d'amorçage (''EFI System Partition'' - ''ESP'') au lieu d'une multitude de fichiers pouvant être modifiés par le premier pirate venu. Cet exécutable pourra alors être signé par ''Secure Boot'' et permettre, entre-autre, le déchiffrement de la racine en s'assurant de l’absence de sa propre altération (enregistreur de frappes par exemple).&lt;br /&gt;
&lt;br /&gt;
=Image Noyau Unifiée=&lt;br /&gt;
==Installation des outils==&lt;br /&gt;
La génération d'une ''INU'' nécessite quelques outils. Le projet ''Systemd'' met à disposition un programme ''Python'' nommé &amp;lt;code&amp;gt;Ukify&amp;lt;/code&amp;gt; à partir de la version 253 de l{{'}}''init''. Il est logé à l'emplacement &amp;lt;code&amp;gt;/usr/lib/systemd/ukify&amp;lt;/code&amp;gt; mais nécessite la bibliothèque &amp;lt;code&amp;gt;python3-pefile&amp;lt;/code&amp;gt; et ses dépendances pour fonctionner. L'approche exposé dans ce document visant la frugalité (''Ukify'' apporte surtout une configuration épurée mais l'aspect fonctionnel est identique), le strict nécessaire sera installé.&lt;br /&gt;
 apt install --no-install-recommends systemd-boot-efi binutils gawk sbsigntool&lt;br /&gt;
&lt;br /&gt;
Détails des paquets installés :&lt;br /&gt;
* '''systemd-boot-efi''' : fournit le ''stub &amp;lt;code&amp;gt;/usr/lib/systemd/boot/efi/linuxx64.efi.stub&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''binutils''' : fournit le programme de construction du binaire ''PE'' &amp;lt;code&amp;gt;objdump&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''gawk''' : fournit la version ''GNU'' de l'interpréteur de langage ''AWK'' afin de ne pas avoir l'erreur de fonction non définie &amp;lt;code&amp;gt;function strtonum never defined&amp;lt;/code&amp;gt; du &amp;lt;code&amp;gt;awk&amp;lt;/code&amp;gt; de base&lt;br /&gt;
* '''sbsigntool''' : permet de signer l{{'}}''UKI'' en vu d'une validation ''Secure Boot'' (optionnel)&lt;br /&gt;
&lt;br /&gt;
==Script de génération==&lt;br /&gt;
La génération d'une ''UKI'' nécessitant la concaténation d'une multitude d'éléments, il n'est pas envisageable de renseigner l'ensemble des paramètres manuellement. Je vous propose un script permettant la création d'une image ainsi que sa rotation sur trois versions différentes (l'une écrase la précédente à chaque nouvelle exécution). &lt;br /&gt;
 vim /mnt/usr/local/sbin/gen-uki&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Récupération de la version du noyau en cours d'utilisation&lt;br /&gt;
if [[ -n &amp;quot;${1}&amp;quot; ]]; then&lt;br /&gt;
	version_noyau=&amp;quot;${1}&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
	version_noyau=&amp;quot;$(uname -r)&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Chemin vers l'initrd de travail&lt;br /&gt;
if [[ -n &amp;quot;${2}&amp;quot; ]]; then&lt;br /&gt;
	chemin_initrd=&amp;quot;${2}&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
	chemin_initrd=&amp;quot;/boot/initrd.img-${version_noyau}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Chemin vers le noyau de travail&lt;br /&gt;
if [[ -n &amp;quot;${2}&amp;quot; ]]; then&lt;br /&gt;
	chemin_noyau=&amp;quot;/boot/vmlinuz-${1}&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
	chemin_noyau=&amp;quot;/boot/vmlinuz-${version_noyau}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Définition des variables du script&lt;br /&gt;
chemin_lsb=&amp;quot;/usr/lib/os-release&amp;quot;&lt;br /&gt;
chemin_stub=&amp;quot;/usr/lib/systemd/boot/efi/linuxx64.efi.stub&amp;quot;&lt;br /&gt;
chemin_cmdline=&amp;quot;/etc/kernel/cmdline&amp;quot;&lt;br /&gt;
chemin_splash=&amp;quot;/dev/null&amp;quot;&lt;br /&gt;
nom_uki1=&amp;quot;1-debian.efi&amp;quot;&lt;br /&gt;
nom_uki2=&amp;quot;2-debian.efi&amp;quot;&lt;br /&gt;
nom_uki3=&amp;quot;3-debian.efi&amp;quot;&lt;br /&gt;
chemin_base=&amp;quot;/boot/efi/EFI/Linux/&amp;quot;&lt;br /&gt;
chemin_dst_uki=&amp;quot;${chemin_base}/${nom_uki1}&amp;quot;&lt;br /&gt;
chemin_sb_clef=&amp;quot;/usr/local/lib/secureboot/mok/MOK.priv&amp;quot;&lt;br /&gt;
chemin_sb_cert=&amp;quot;/usr/local/lib/secureboot/mok/MOK.pem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Création de l'arborescence des UKI&lt;br /&gt;
mkdir -p &amp;quot;${chemin_base}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Préparation de l'UKI&lt;br /&gt;
align=&amp;quot;$(objdump -p ${chemin_stub} | awk '{ if ($1 == &amp;quot;SectionAlignment&amp;quot;){print $2} }')&amp;quot;&lt;br /&gt;
align=$((16#$align))&lt;br /&gt;
osrel_offs=&amp;quot;$(objdump -h &amp;quot;${chemin_stub}&amp;quot; | awk 'NF==7 {size=strtonum(&amp;quot;0x&amp;quot;$3); offset=strtonum(&amp;quot;0x&amp;quot;$4)} END {print size + offset}')&amp;quot;&lt;br /&gt;
osrel_offs=$((osrel_offs + &amp;quot;$align&amp;quot; - osrel_offs % &amp;quot;$align&amp;quot;))&lt;br /&gt;
cmdline_offs=$((osrel_offs + $(stat -Lc%s &amp;quot;${chemin_lsb}&amp;quot;)))&lt;br /&gt;
cmdline_offs=$((cmdline_offs + &amp;quot;$align&amp;quot; - cmdline_offs % &amp;quot;$align&amp;quot;))&lt;br /&gt;
splash_offs=$((cmdline_offs + $(stat -Lc%s &amp;quot;${chemin_cmdline}&amp;quot;)))&lt;br /&gt;
splash_offs=$((splash_offs + &amp;quot;$align&amp;quot; - splash_offs % &amp;quot;$align&amp;quot;))&lt;br /&gt;
initrd_offs=$((splash_offs + $(stat -Lc%s &amp;quot;${chemin_splash}&amp;quot;)))&lt;br /&gt;
initrd_offs=$((initrd_offs + &amp;quot;$align&amp;quot; - initrd_offs % &amp;quot;$align&amp;quot;))&lt;br /&gt;
linux_offs=$((initrd_offs + $(stat -Lc%s &amp;quot;${chemin_initrd}&amp;quot;)))&lt;br /&gt;
linux_offs=$((linux_offs + &amp;quot;$align&amp;quot; - linux_offs % &amp;quot;$align&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
# Roulement, si elle existe et n'est pas vide, de l'UKI 2 en 3&lt;br /&gt;
if [[ -s &amp;quot;${chemin_base}${nom_uki2}&amp;quot; ]]; then&lt;br /&gt;
	echo &amp;quot;Copie de l'UKI 2 en 3...&amp;quot;&lt;br /&gt;
	cp -v &amp;quot;${chemin_base}${nom_uki2}&amp;quot; &amp;quot;${chemin_base}${nom_uki3}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Roulement, si elle existe et n'est pas vide, de l'UKI 1 en 2&lt;br /&gt;
if [[ -s &amp;quot;${chemin_dst_uki}&amp;quot; ]]; then&lt;br /&gt;
	echo &amp;quot;Copie de l'UKI 1 en 2...&amp;quot;&lt;br /&gt;
	cp -v &amp;quot;${chemin_dst_uki}&amp;quot; &amp;quot;${chemin_base}${nom_uki2}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Génération de l'image noyau combinée (UKI) numéro 1...&amp;quot;&lt;br /&gt;
objcopy \&lt;br /&gt;
    --add-section .osrel=&amp;quot;${chemin_lsb}&amp;quot; --change-section-vma .osrel=$(printf 0x%x $osrel_offs) \&lt;br /&gt;
    --add-section .cmdline=&amp;quot;${chemin_cmdline}&amp;quot; --change-section-vma .cmdline=$(printf 0x%x $cmdline_offs) \&lt;br /&gt;
    --add-section .splash=&amp;quot;${chemin_splash}&amp;quot; --change-section-vma .splash=$(printf 0x%x $splash_offs) \&lt;br /&gt;
    --add-section .initrd=&amp;quot;${chemin_initrd}&amp;quot; --change-section-vma .initrd=$(printf 0x%x $initrd_offs) \&lt;br /&gt;
    --add-section .linux=&amp;quot;${chemin_noyau}&amp;quot; --change-section-vma .linux=$(printf 0x%x $linux_offs) \&lt;br /&gt;
    &amp;quot;${chemin_stub}&amp;quot; &amp;quot;${chemin_dst_uki}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Signature de l'UKI pour la vérification Secure Boot seulement si la clé et son certificat son présents&lt;br /&gt;
if [[ -r &amp;quot;${chemin_sb_clef}&amp;quot; &amp;amp;&amp;amp; -r &amp;quot;${chemin_sb_cert}&amp;quot; ]]; then&lt;br /&gt;
	sbsign --key &amp;quot;${chemin_sb_clef}&amp;quot; --cert &amp;quot;${chemin_sb_cert}&amp;quot; --output &amp;quot;${chemin_dst_uki}&amp;quot; &amp;quot;${chemin_dst_uki}&amp;quot;&lt;br /&gt;
	sbverify --cert &amp;quot;${chemin_sb_cert}&amp;quot; &amp;quot;${chemin_dst_uki}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les [[Paramètres linux|paramètres]] du noyau (de la variable &amp;lt;code&amp;gt;$chemin_cmdline&amp;lt;/code&amp;gt;) doivent contenir les informations sur votre système de fichier racine afin que ''Linux'' puisse l'amorcer. Vous pouvez vous appuyer sur l'exemple ci-dessous qui comprend une partition chiffrée contenant un sous-volume ''BTRFS''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;root=UUID=${uuid_racine} cryptdevice=UUID=${uuid_luks} ro rootflags=subvol=@rootfs console=tty0 console=ttyS0,115200n8&amp;quot; &amp;gt; /mnt/etc/kernel/cmdline&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pensez bien entendu à remplacer les variables par vos propres valeurs...&lt;br /&gt;
&lt;br /&gt;
Vous pouvez également vous appuyer sur le &amp;lt;code&amp;gt;/proc/cmdline&amp;lt;/code&amp;gt; pour visualiser les paramètres utilisés par votre propre système afin de vous en inspirer. La liste des paramètres possible est visualisable dans la [https://www.kernel.org/doc/html/v6.5/admin-guide/kernel-parameters.html documentation] du noyau.&lt;br /&gt;
&lt;br /&gt;
 chmod u+x /usr/local/sbin/gen-uki&lt;br /&gt;
&lt;br /&gt;
==Automatisation==&lt;br /&gt;
Le script ainsi créé peut être lancé manuellement mais il est préférable qu'il soit appelé à chaque mise à jour de noyau ou d{{'}}''initrd'' afin de garantir un démarrage sur la dernière version disponible. Cette dépendance se créée en l'exposant dans les répertoire de post-construction de nos deux composants d'intérêts.&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /etc/initramfs/post-update.d&lt;br /&gt;
 ln -s /usr/local/sbin/gen-uki /etc/initramfs/post-update.d/zz-gen-uki&lt;br /&gt;
 ln -s /usr/local/sbin/gen-uki /etc/kernel/postinst.d/zz-gen-uki&lt;br /&gt;
 chmod u+x /etc/initramfs/post-update.d/zz-gen-uki /etc/kernel/postinst.d/zz-gen-uki&lt;br /&gt;
&lt;br /&gt;
{{info|Le répertoire &amp;lt;code&amp;gt;/etc/initramfs/post-update.d&amp;lt;/code&amp;gt; n'est pas créé par défaut dans ''GNU/Linux Debian'' mais est bien parcouru lors de la génération d'une nouvelle archive d{{'}}''init''.}}&lt;br /&gt;
&lt;br /&gt;
==Création des entrées de démarrage==&lt;br /&gt;
Dans l'optique d'optimiser au mieux le démarrage de notre machine, nous n'utiliserons aucun chargeur d'amorçage. Nous créerons alors des entrées de démarrage dans notre  ''UEFI'' pointant directement sur nos ''UKI'' (son menu nous permettra de sélectionner la version à lancer). Pour se faire, il est possible de passer par l'interface de celui-ci (lorsque l'option est disponible) ou via l'outil [[Efibootmgr]] (universel). Voici un exemple pour les trois générées par le script (il est possible de créer les entrées avant les images) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
disque_systeme=/dev/nvme0n1&lt;br /&gt;
&lt;br /&gt;
efibootmgr -c -d &amp;quot;${disque_systeme}&amp;quot; -p 1 -l '\EFI\Linux\1-debian.efi' -L &amp;quot;Debian UKI 1&amp;quot;&lt;br /&gt;
efibootmgr -c -d &amp;quot;${disque_systeme}&amp;quot; -p 1 -l '\EFI\Linux\2-debian.efi' -L &amp;quot;Debian UKI 2&amp;quot;&lt;br /&gt;
efibootmgr -c -d &amp;quot;${disque_systeme}&amp;quot; -p 1 -l '\EFI\Linux\3-debian.efi' -L &amp;quot;Debian UKI 3&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi, dans le cas malencontreux où une mise à jour de noyau ou une reconstruction d{{'}}''initrd'' occasionne une impossibilité à démarrer, les versions précédentes de votre image vous permettront de vous en sortir.&lt;br /&gt;
&lt;br /&gt;
==Sources de la section==&lt;br /&gt;
* https://uapi-group.org/specifications/specs/unified_kernel_image/&lt;br /&gt;
* https://0pointer.de/blog/brave-new-trusted-boot-world.html&lt;br /&gt;
* https://wiki.debian.org/EFIStub#Setting_up_a_Unified_Kernel_Image&lt;br /&gt;
&lt;br /&gt;
=Secure Boot=&lt;br /&gt;
&lt;br /&gt;
{{info|Cette section est facultative.}}&lt;br /&gt;
&lt;br /&gt;
''Secure Boot'' ([https://uefi.org/sites/default/files/resources/UEFI_Spec_2_3_1.pdf chapitre 27] des spécification ''UEFI'') est une fonctionnalité apparue avec la version 2.3.1 de l{{'}}''UEFI'' permettant de borner l'amorçage aux seuls systèmes dont la signature cryptographique est reconnue par sa base interne. Son intérêt principal est d'empêcher l'exécution de code ayant été ajouté à l{{'}}''UEFI PE'' à l'insu de l'administrateur de la machine mais il peut également servir, entre-autre, à empêcher tout autre système (amorçage ''USB'' par exemple) de démarrer.&lt;br /&gt;
&lt;br /&gt;
Afin que cette fonction ai un sens, il est préférable de n'autoriser que vos propres clés. Ceci n'est malheureusement pas possible sur la plupart des ''PC'' du marcher. En effet, les ''UEFI'' des machines grand publique embarquent celles de ''Microsoft'' pour le démarrage de ''Windows'' (obligatoire pour bénéficier de la certification idoine) et elles ne proposent pas (dans toutes celles que j'ai vu) de fonction pour gérer la base interne de clés (elles ne proposent bien souvent même pas d'administrer les entrées de démarrage...). Il est peut-être possible de contourner cette limitation avec l'outil &amp;lt;code&amp;gt;mokutil&amp;lt;/code&amp;gt; mais je n'ai pas creusé cette piste... La problématique des clés ''Microsoft'' est bien entendu que leur présence rend caduc l'exclusivité de la validité de vos signatures. Qui peut utiliser leur clé ? L'administration de ce paramètre semble donc réservée aux ordinateurs professionnels (les ''DELL XPS'' le permettent) et aux plateformes serveurs.&lt;br /&gt;
&lt;br /&gt;
Enfin, il convient de s'assurer qu'aucun accès physique non autorisé à la machine n'a lieu car les gros malins qui ont rédigés les spécifications de l{{'}}''UEFI'' n'ont pas crus bon d'imposer le stockage de sa configuration en mémoire morte... L'utilisation d'une mémoire vive maintenue par une pile comme sur l'antique ''BIOS'' ayant retenu leur préférence, le débranchement de cette dernière engendrera une réinitialisation complète des paramètres et de la base de clés ''Secure Boot'' (permettant ainsi l'introduction de toute forme de charges utiles au démarrage), ce qui ruinera la mince barrière de sécurité que nous venons de mettre en place...&lt;br /&gt;
&lt;br /&gt;
==Glossaire==&lt;br /&gt;
La base de clés de ''Secure Boot'' comporte cinq [https://www.malekal.com/quest-ce-que-secure-boot-protection-pc-uefi-comment-ca-marche/ sections] :&lt;br /&gt;
* '''MOK''' (''Machine Owner Key'') : base de données contenant les clés de l'utilisateur - inutile pour cette procédure&lt;br /&gt;
* '''PK''' (''Plateform Key'') : base de données contenant les clés de la machine - utile pour cette procédure&lt;br /&gt;
* '''DB''' (''Data Base'') : base de données des clés autorisées (liste blanche) - utile pour cette procédure&lt;br /&gt;
* '''KEK''' (''Key Exchange Keys'') : aucune idée - inutile pour cette procédure&lt;br /&gt;
* '''DBX''' : (''Data Base'' &amp;lt;introuvable dans les specs mais probablement ''Exclusion''&amp;gt;)  : base de données des clés interdites (liste noire) - inutile pour cette procédure&lt;br /&gt;
&lt;br /&gt;
==Génération de clés==&lt;br /&gt;
Création du répertoire de travail&lt;br /&gt;
 mkdir -p /usr/local/lib/secureboot/mok&lt;br /&gt;
&lt;br /&gt;
Génération d'une clé privée ''RSA'' 4096 bits (le maximum possible avec ''Shim'' - que nous n'utilisons pas - est, aux dernières nouvelles ([https://wiki.debian.org/SecureBoot#Generating_a_new_key 21/06/2022]) 2048 bits) et d'un certificat public associé&lt;br /&gt;
 openssl req -nodes -new -x509 -newkey rsa:4096 -keyout /usr/local/lib/secureboot/mok/MOK.priv -outform DER -out /usr/local/lib/secureboot/mok/MOK.der -days 36500 -subj &amp;quot;/CN=Mon Nom/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Conversion du certificat en ''PEM'' afin d'être utilisable par &amp;lt;code&amp;gt;sbsign&amp;lt;/code&amp;gt;&lt;br /&gt;
 openssl x509 -inform der -in /usr/local/lib/secureboot/mok/MOK.der -out /usr/local/lib/secureboot/mok/MOK.pem&lt;br /&gt;
&lt;br /&gt;
Empêcher la lecture de ces fichiers par un autre utilisateur que root&lt;br /&gt;
 chmod 400 /usr/local/lib/secureboot/mok/{MOK.priv,MOK.der,MOK.pem}&lt;br /&gt;
&lt;br /&gt;
Les étapes qui suivent sont réalisées automatiquement par le script créé plus haut et sont notées à titre indicatif.&lt;br /&gt;
&lt;br /&gt;
Le certificat au format ''PEM'' est utilisé par les commandes du paquet &amp;lt;code&amp;gt;sbsigntool&amp;lt;/code&amp;gt; alors que la ''DER'' est utilisée par les ''UEFI'' (pourquoi utiliser le même format hein ?). il doit être renseignée deux fois dans les menus de gestion des clés de votre carte mère :&lt;br /&gt;
* une fois dans ''Plateform Key'' (''PK'')&lt;br /&gt;
* l'autre dans ''DB'' (''Authorized Signatures'')&lt;br /&gt;
&lt;br /&gt;
Le certificat ''DER'' doit être accessible à l{{'}}''UEFI'' pour injection. Vous pouvez le mettre dans toute partition ''FAT'' comme votre ''ESP'' &amp;lt;code&amp;gt;/boot/efi/EFI/&amp;lt;/code&amp;gt; ou sur une clé ''USB'' afin de l'y sélectionner depuis le menu dédié (peut être supprimé à l'issue).&lt;br /&gt;
&lt;br /&gt;
==Signature de l'image==&lt;br /&gt;
Dans la commande qui suit, la signature de l'image va réécrir par dessus l'originale (sa somme de contrôle va changer). Ce comportement est volontaire mais peut être changé en modifiant la valeur de &amp;lt;code&amp;gt;--output&amp;lt;/code&amp;gt;&lt;br /&gt;
 sbsign --key /usr/local/lib/secureboot/mok/MOK.priv --cert /usr/local/lib/secureboot/mok/MOK.pem --output /boot/efi/EFI/Linux/1-debian.efi /boot/efi/EFI/Linux/1-debian.efi&lt;br /&gt;
&lt;br /&gt;
Vérification de la signature&lt;br /&gt;
 sbverify --cert /usr/local/lib/secureboot/mok/MOK.pem /boot/efi/EFI/Linux/1-debian.efi&lt;br /&gt;
&lt;br /&gt;
Une fois ''Secure Boot'' activé et votre système démarré, vous pouvez vérifier l'effectivité de cette fonctionnalité via la commande suivante du paquet &amp;lt;code&amp;gt;mokutil&amp;lt;/code&amp;gt;&lt;br /&gt;
 mokutil --sb-state&lt;br /&gt;
&lt;br /&gt;
{{astuce|La signature d'un module noyau complilé par vous même peut se faire via la commande suivante (exemple pour le pilote &amp;lt;code&amp;gt;ixgbe&amp;lt;/code&amp;gt;) : &amp;lt;code&amp;gt;/usr/lib/linux-kbuild-6.1/scripts/sign-file sha512 /usr/local/lib/secureboot/mok/MOK.{priv,der} /lib/modules/6.1.0-17-amd64/updates/drivers/net/ethernet/intel/ixgbe/ixgbe.ko /tmp/ixgbe.ko&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
==Sources de la section==&lt;br /&gt;
* https://uefi.org/specifications&lt;br /&gt;
* https://wiki.debian.org/SecureBoot#Generating_a_new_key&lt;br /&gt;
* https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-secure-boot-key-creation-and-management-guidance?view=windows-11&lt;/div&gt;</summary>
		<author><name>Ycharbi</name></author>
	</entry>
</feed>