{"id":351,"date":"2026-02-11T22:10:33","date_gmt":"2026-02-11T21:10:33","guid":{"rendered":"https:\/\/blog.jeronimodiaz.com\/?p=351"},"modified":"2026-02-11T22:11:41","modified_gmt":"2026-02-11T21:11:41","slug":"actualizar-libreboot-en-thinkpad-t480s","status":"publish","type":"post","link":"https:\/\/blog.jeronimodiaz.com\/es\/actualizar-libreboot-en-thinkpad-t480s\/","title":{"rendered":"Actualizar libreboot en Thinkpad T480s"},"content":{"rendered":"\n<p>Como pod\u00e9is imaginar, no todo es instalar herramientas nuevas si no que tambi\u00e9n hay que mantenerlas actualizas&#8230; Y es por ello que he publicado esta entrada. Quiero detallar los pasos que he hecho para actualizar libreboot en mi ordenador.  <\/p>\n\n<h3 class=\"wp-block-heading\">Requisitos previos<\/h3>\n\n<ul class=\"wp-block-list\">\n<li>A laptop that is <a href=\"https:\/\/blog.jeronimodiaz.com\/es\/flashear-libreboot-en-thinkpad-t480s\/\">already running libreboot<\/a><\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">Preparaci\u00f3n del ordenador<\/h3>\n\n<p>He clonado el repositorio git oficial de libreboot.<\/p>\n\n<pre class=\"wp-block-code\"><code>git clone https:\/\/codeberg.org\/libreboot\/lbmk<\/code><\/pre>\n\n<p>He instalado las dependencias para debian.<\/p>\n\n<pre class=\"wp-block-code\"><code>cd lbmk\ngit checkout 25.06\n.\/mk dependencies debian<\/code><\/pre>\n\n<p>He compilado la herramienta flashprog.<\/p>\n\n<pre class=\"wp-block-code\"><code>.\/mk -b flashprog<\/code><\/pre>\n\n<p>Una vez finalizada la compilaci\u00f3n, se generaron algunos archivos binarios en <em>.\/elf\/flashprog\/flashprog<\/em><\/p>\n\n<h3 class=\"wp-block-heading\">Construye el firmware de la BIOS<\/h3>\n\n<p>Como hice al compilar libreboot por primera vez, compil\u00e9 el controlador de la BIOS utilizando los siguientes par\u00e1metros<\/p>\n\n<pre class=\"wp-block-code\"><code>.\/mk -b coreboot t480s_vfsp_16mb<\/code><\/pre>\n\n<h3 class=\"wp-block-heading\">Copia de seguridad de la BIOS del ordenador<\/h3>\n\n<p>Para verificar que la copia de seguridad era correcta, cre\u00e9 tres..<\/p>\n\n<p><strong>Copia de seguridad 1<\/strong><\/p>\n\n<pre class=\"wp-block-code\"><code>jeronimodiaz@thinkpad:~\/git\/lbmk$ sudo .\/elf\/flashprog\/flashprog -p internal:laptop=force_I_want_a_brick,boardmismatch=force -r dump.bin\n&#91;sudo] password for jeronimodiaz: \nflashprog p1.4-2-g564c93d on Linux 6.1.0-40-amd64 (x86_64)\nflashprog is free software, get the source code at https:\/\/flashprog.org\n\nUsing clock_gettime for delay loops (clk_id: 1, resolution: 1ns).\ncoreboot table found at 0x7aa33000.\nFound chipset \"Intel Kaby Lake U w\/ iHDCP2.2 Prem.\".\nEnabling flash write... Warning: Setting BIOS Control at 0xdc from 0x8b to 0x89 failed.\nNew value is 0x8b.\nSPI Configuration is locked down.\nOK.\nFound Programmer flash chip \"Opaque flash chip\" (16384 kB, Programmer-specific) on internal.\nReading flash... done.<\/code><\/pre>\n\n<p><strong>Copia de seguridad 2<\/strong><\/p>\n\n<pre class=\"wp-block-code\"><code>jeronimodiaz@thinkpad:~\/git\/lbmk$ sudo .\/elf\/flashprog\/flashprog -p internal:laptop=force_I_want_a_brick,boardmismatch=force -r dump1.bin\nflashprog p1.4-2-g564c93d on Linux 6.1.0-40-amd64 (x86_64)\nflashprog is free software, get the source code at https:\/\/flashprog.org\n\nUsing clock_gettime for delay loops (clk_id: 1, resolution: 1ns).\ncoreboot table found at 0x7aa33000.\nFound chipset \"Intel Kaby Lake U w\/ iHDCP2.2 Prem.\".\nEnabling flash write... Warning: Setting BIOS Control at 0xdc from 0x8b to 0x89 failed.\nNew value is 0x8b.\nSPI Configuration is locked down.\nOK.\nFound Programmer flash chip \"Opaque flash chip\" (16384 kB, Programmer-specific) on internal.\nReading flash... done.<\/code><\/pre>\n\n<p><strong>Copia de seguridad 3<\/strong><\/p>\n\n<pre class=\"wp-block-code\"><code>jeronimodiaz@thinkpad:~\/git\/lbmk$ sudo .\/elf\/flashprog\/flashprog -p internal:laptop=force_I_want_a_brick,boardmismatch=force -r dump2.bin\nflashprog p1.4-2-g564c93d on Linux 6.1.0-40-amd64 (x86_64)\nflashprog is free software, get the source code at https:\/\/flashprog.org\n\nUsing clock_gettime for delay loops (clk_id: 1, resolution: 1ns).\ncoreboot table found at 0x7aa33000.\nFound chipset \"Intel Kaby Lake U w\/ iHDCP2.2 Prem.\".\nEnabling flash write... Warning: Setting BIOS Control at 0xdc from 0x8b to 0x89 failed.\nNew value is 0x8b.\nSPI Configuration is locked down.\nOK.\nFound Programmer flash chip \"Opaque flash chip\" (16384 kB, Programmer-specific) on internal.\nReading flash... done.<\/code><\/pre>\n\n<p>Una vez completadas las copias de seguridad, las compar\u00e9 para comprobar que eran correctas.<\/p>\n\n<pre class=\"wp-block-code\"><code>jeronimodiaz@thinkpad:~\/git\/lbmk$ sha1sum dump.bin \n118e6381b370a3cabbcdf481ef64d3bdc8b2cec6  dump.bin\njeronimodiaz@thinkpad:~\/git\/lbmk$ sha1sum dump1.bin \n118e6381b370a3cabbcdf481ef64d3bdc8b2cec6  dump1.bin\njeronimodiaz@thinkpad:~\/git\/lbmk$ sha1sum dump2.bin \n118e6381b370a3cabbcdf481ef64d3bdc8b2cec6  dump2.bin<\/code><\/pre>\n\n<h3 class=\"wp-block-heading\">Grabar el firmware en la BIOS<\/h3>\n\n<p>Como mi port\u00e1til ya ejecutaba libreboot, no necesit\u00e9 utilizar ning\u00fan grabado externo y pude actualizar el controlador de la BIOS utilizando la herramienta flashprog directamente en el port\u00e1til.<\/p>\n\n<pre class=\"wp-block-code\"><code>jeronimodiaz@thinkpad:~\/git\/lbmk$ sudo .\/elf\/flashprog\/flashprog -p internal:laptop=force_I_want_a_brick,boardmismatch=force -w bin\/t480s_vfsp_16mb\/seabios_t480s_vfsp_16mb_libgfxinit_corebootfb.rom \nflashprog p1.4-2-g564c93d on Linux 6.1.0-40-amd64 (x86_64)\nflashprog is free software, get the source code at https:\/\/flashprog.org\n\nUsing clock_gettime for delay loops (clk_id: 1, resolution: 1ns).\ncoreboot table found at 0x7aa33000.\nFound chipset \"Intel Kaby Lake U w\/ iHDCP2.2 Prem.\".\nEnabling flash write... Warning: Setting BIOS Control at 0xdc from 0x8b to 0x89 failed.\nNew value is 0x8b.\nSPI Configuration is locked down.\nOK.\nFound Programmer flash chip \"Opaque flash chip\" (16384 kB, Programmer-specific) on internal.\nReading old flash chip contents... done.\nErasing and writing flash chip... Erase\/write done.\nVerifying flash... VERIFIED.<\/code><\/pre>\n\n<p>En este punto, la BIOS del port\u00e1til est\u00e1 actualizada y ejecuta la versi\u00f3n 25.06.<\/p>\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"726\" height=\"162\" src=\"https:\/\/blog.jeronimodiaz.com\/wp-content\/uploads\/2025\/11\/Libreboot-25-06.jpg\" alt=\"\" class=\"wp-image-332\"\/><\/figure>\n\n<p>Espero que esta entrada te haya resultado \u00fatil. Si tienes alguna pregunta, no dudes en compartirla en los comentarios. Estar\u00e9 encantado de ayudarte.  <\/p>\n\n<p>\u00a1Nos vemos en el pr\u00f3ximo post!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como pod\u00e9is imaginar, no todo es instalar herramientas nuevas si no que tambi\u00e9n hay que mantenerlas actualizas&#8230; Y es por ello que he publicado esta entrada. Quiero detallar los pasos&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[124,123],"tags":[],"class_list":["post-351","post","type-post","status-publish","format-standard","hentry","category-hardware-es","category-linux-es"],"_links":{"self":[{"href":"https:\/\/blog.jeronimodiaz.com\/es\/wp-json\/wp\/v2\/posts\/351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.jeronimodiaz.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jeronimodiaz.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jeronimodiaz.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jeronimodiaz.com\/es\/wp-json\/wp\/v2\/comments?post=351"}],"version-history":[{"count":1,"href":"https:\/\/blog.jeronimodiaz.com\/es\/wp-json\/wp\/v2\/posts\/351\/revisions"}],"predecessor-version":[{"id":352,"href":"https:\/\/blog.jeronimodiaz.com\/es\/wp-json\/wp\/v2\/posts\/351\/revisions\/352"}],"wp:attachment":[{"href":"https:\/\/blog.jeronimodiaz.com\/es\/wp-json\/wp\/v2\/media?parent=351"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jeronimodiaz.com\/es\/wp-json\/wp\/v2\/categories?post=351"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jeronimodiaz.com\/es\/wp-json\/wp\/v2\/tags?post=351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}