{"id":1696,"date":"2020-06-12T08:33:15","date_gmt":"2020-06-12T06:33:15","guid":{"rendered":"https:\/\/locallost.net\/?p=1696"},"modified":"2020-06-12T08:33:15","modified_gmt":"2020-06-12T06:33:15","slug":"notes-to-self-for-future-breakage-involving-intel-microcode-updates","status":"publish","type":"post","link":"https:\/\/locallost.net\/?p=1696","title":{"rendered":"Notes to self for future breakage involving `intel-microcode` updates"},"content":{"rendered":"\n<p>The latest update of <code>intel-microcode<\/code> package on Ubuntu broke some systems (mine in particular), and was the occasion to learn a bit more about <code>initrd<\/code> images and Ubuntu boot procedure.<\/p>\n\n\n\n<p>So, here are some notes of things that may be useful for future problems.<\/p>\n\n\n\n<p>The <code>initrd<\/code> image is mini-filesystem used to boot the OS. It&rsquo;s a kind of trampoline root fileystem used by the kernel to initialize\/activate\/configure some hardware and\/or features (e.g. full disk encryption, etc.)<\/p>\n\n\n\n<p>Thus, this <code>initrd<\/code> contains binaries that might need to be updated. This process is automatically performed by Ubuntu when you install your package updates, with some packages triggering a rebuild of this <code>initrd<\/code> to incorporate the new and updated binaries.<\/p>\n\n\n\n<p>So, when you install an update of <code>intel-microcode<\/code>, the <code>initrd<\/code> image is rebuilt to incorporate the new microcode files.<\/p>\n\n\n\n<p>Ubuntu&rsquo;s <code>initrd<\/code> seems a bit different from what I used to tinker with in my earlier days in the sense that they are not a CPIO archive, but a kind of aggregate incorporating the microcode binaries (that are applied first-most) and a \u00ab\u00a0classical\u00a0\u00bb <code>initrd<\/code> archive in CPIO format.<\/p>\n\n\n\n<p>So, to introspect an <code>initrd<\/code> you&rsquo;ll have to use something like <code>binwalk<\/code> to get the offset of the <code>initrd<\/code> archive, extract it, then you&rsquo;ll have a \u00ab\u00a0classical\u00a0\u00bb CPIO image.<\/p>\n\n\n\n<p>In the case of this microcode update, the <code>initrd<\/code> filesystem image was not the culprit, but rather theses microcode firmware\/files.<\/p>\n\n\n\n<p>I managed to recover my system by booting from a bootable USB live OS, mounting and chrooting into the broken system, reverting the <code>intel-microcode<\/code> to the previous version which in turn triggered a rebuild of the <code>initrd<\/code> image incorporating this previous microcode.<\/p>\n\n\n\n<p>From issues\/tickets I learned that I also could have disabled the loading of the microcode by appending the <code>dis_ucode_ldr<\/code> flag to the kernel from Grub.<\/p>\n\n\n\n<p>Finally, here is the issue on GitHub: <a href=\"https:\/\/github.com\/intel\/Intel-Linux-Processor-Microcode-Data-Files\/issues\/31\">microcode-20200609 Release, at least 06-4e-03, hangs user&rsquo;s system<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The latest update of intel-microcode package on Ubuntu broke some systems (mine in particular), and was the occasion to learn a bit more about initrd images and Ubuntu boot procedure. So, here are some notes of things that may be &hellip; <a href=\"https:\/\/locallost.net\/?p=1696\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[17],"tags":[],"class_list":["post-1696","post","type-post","status-publish","format-standard","hentry","category-system"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p2Bei9-rm","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/locallost.net\/index.php?rest_route=\/wp\/v2\/posts\/1696","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/locallost.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/locallost.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/locallost.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/locallost.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1696"}],"version-history":[{"count":2,"href":"https:\/\/locallost.net\/index.php?rest_route=\/wp\/v2\/posts\/1696\/revisions"}],"predecessor-version":[{"id":1698,"href":"https:\/\/locallost.net\/index.php?rest_route=\/wp\/v2\/posts\/1696\/revisions\/1698"}],"wp:attachment":[{"href":"https:\/\/locallost.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1696"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/locallost.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1696"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/locallost.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1696"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}