123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <style type="text/css">
- @import url('../css/main.css');
- </style>
- <title>Installing libreboot</title>
- </head>
- <body>
- <div class="section">
-
- <h1 id="pagetop">Installing libreboot</h1>
- <p>
- This section relates to installing libreboot on supported targets.
- </p>
- <p>
- NOTE: if running flashrom -p internal for software based flashing, and you
- get an error related to /dev/mem access, you should reboot with iomem=relaxed
- kernel parameter before running flashrom, or use a kernel that has
- CONFIG_STRICT_DEVMEM not enabled.
- </p>
- <p>
- <a href="../index.html">Back to previous index</a>
- </p>
-
- </div>
-
- <div class="section">
-
- <h2>Software methods</h2>
- <ul>
- <li><a href="#rom">List of ROM images in libreboot</a></li>
- <li><a href="#flashrom">How to update or install libreboot (if you are already running libreboot or coreboot)</a></li>
- <li><a href="#flashrom">KFSN4-DRE: initial installation guide (if running the proprietary firmware or libreboot)</a></li>
- <li><a href="#flashrom_lenovobios">ThinkPad X60/T60: Initial installation guide (if running the proprietary firmware)</a></li>
- <li><a href="#flashrom_macbook21">MacBook2,1: Initial installation guide (if running the proprietary firmware)</a></li>
- <li><a href="c201.html">ASUS Chromebook C201 installation guide</a> (Installing Libreboot internally, from the device)</li>
- </ul>
- <h2>Hardware methods</h2>
- <ul>
- <li><a href="bbb_setup.html">How to program an SPI flash chip with the BeagleBone Black</a></li>
- <li><a href="ga-g41m-es2l.html">Flashing the Gigabyte GA-G41M-ES2L (has 2 SOIC-8 chips, one is backup)</a></li>
- <li><a href="d510mo.html">Flashing the Intel D510MO</a></li>
- <li><a href="bbb_ehci.html">How to configure EHCI debugging on the BeagleBone Black</a></li>
- <li><a href="kgpe-d16.html">KGPE-D16 (needed if running the proprietary firmware, or to unbrick)</a></li>
- <li><a href="kcma-d8.html">KCMA-D8 (needed if running the proprietary firmware, or to unbrick)</a></li>
- <li><a href="x60_unbrick.html">ThinkPad X60: Recovery guide</a></li>
- <li><a href="x60tablet_unbrick.html">ThinkPad X60 Tablet: Recovery guide</a></li>
- <li><a href="t60_unbrick.html">ThinkPad T60: Recovery guide</a></li>
- <li><a href="x200_external.html">ThinkPad X200/X200S/X200T (needed if running the proprietary firmware, or to unbrick)</a></li>
- <li><a href="r400_external.html">ThinkPad R400 (needed if running the proprietary firmware, or to unbrick)</a></li>
- <li><a href="t400_external.html">ThinkPad T400 (needed if running the proprietary firmware, or to unbrick)</a></li>
- <li><a href="t500_external.html">ThinkPad T500 (needed if running the proprietary firmware, or to unbrick)</a></li>
- <li><a href="c201.html">ASUS Chromebook C201 installation guide</a> (Installing Libreboot externally, with a SPI flash programmer)</li>
- </ul>
-
- </div>
- <div class="section">
- <h1 id="rom">List of ROM images in libreboot</h1>
- <p>
- Libreboot distributes pre-compiled ROM images, built from the libreboot source code.
- These images are provided for user convenience, so that they don't have
- to build anything from source on their own.
- </p>
- <p>
- The ROM images in each archive use the following at the end of the file name,
- if they are built with the GRUB payload: <b>_<i>keymap</i>_<i>mode</i>.rom</b>
- </p>
- <p>
- Available <i>modes</i>: <b>vesafb</b> or <b>txtmode</b>. The <i>vesafb</i> ROM images are recommended, in most cases;
- <i>txtmode</i> ROM images come with MemTest86+, which requires text-mode instead of the usual framebuffer used
- by coreboot native graphics initialization.
- </p>
- <p>
- <i>keymap</i> can be one of several keymaps that keyboard supports (there are quite a few),
- which affects the keyboard layout configuration that is used in GRUB. It doesn't matter
- which ROM image you choose here, as far as the keymap in GNU/Linux is concerned.
- </p>
- <p>
- Keymaps are named appropriately according to each keyboard layout
- support in GRUB. To learn how these keymaps are created, see
- <a href="../grub/index.html#grub_keyboard">../grub/index.html#grub_keyboard</a>
- </p>
-
- <h2 id="qemu">QEMU</h2>
-
- <p>
- Libreboot comes with ROM images built for QEMU, by default:
- </p>
- <p>
- Examples of how to use libreboot ROM images in QEMU:
- </p>
- <ul>
- <li>$ <b>qemu-system-i386 -M q35 -m 512 -bios qemu_q35_ich9_keymap_mode.rom</b></li>
- <li>$ <b>qemu-system-i386 -M pc -m 512 -bios qemu_i440fx_piix4_keymap_mode.rom</b></li>
- </ul>
- <p>
- You can optionally specify the <b>-serial stdio</b> argument, so that QEMU will emulate
- a serial terminal on the standard input/output (most likely your terminal emulator or TTY).
- </p>
- <p>
- Other arguments are available for QEMU. The manual will contain more information.
- </p>
- <p>
- <a href="#pagetop">Back to top of page.</a>
- </p>
-
- </div>
-
- <div class="section">
- <h1 id="flashrom">How to update or install libreboot (if you are already running libreboot or coreboot)</h1>
- <p>
- On all current targets, updating libreboot can be accomplished without disassembly and,
- therefore, without having to externally re-flash using any dedicated hardware. In other words,
- you can do everything entirely in software, directly from the OS that is running on your libreboot
- system.
- </p>
- <div class="important">
- <p>
- <b>If you are using libreboot_src or git, then make sure that you built the sources first (see <a href="../git/index.html#build">../git/index.html#build</a>).</b>
- </p>
- </div>
-
- <p>
- Look at the <a href="#rom">list of ROM images</a> to see which image is compatible with your device.
- </p>
- <h2>Are you currently running the original, proprietary firmware?</h2>
- <p>
- If you are currently running the proprietary firmware (not libreboot or coreboot),
- then the flashing instructions for your system are going to be different.
- </p>
- <p>
- X60/T60 users running the proprietary firmware should refer to <a href="#flashrom_lenovobios">#flashrom_lenovobios</a>.
- MacBook2,1 users running Apple EFI should refer to <a href="#flashrom_macbook21">#flashrom_macbook21</a>
- </p>
- <p>
- X200 users, refer to <a href="x200_external.html">x200_external.html</a>,
- R400 users refer to <a href="r400_external.html">r400_external.html</a>,
- T400 users refer to <a href="t400_external.html">t400_external.html</a>,
- T500 users refer to <a href="t500_external.html">t500_external.html</a>
- </p>
- <h2>ASUS KFSN4-DRE?</h2>
- <p>
- Internal flashing should work just fine, even if you are
- currently booting the proprietary firmware.
- </p>
- <p>
- Libreboot currently lacks documentation for externally
- re-flashing an LPC flash chip. However, these boards have
- the flash chip inside of a PLCC socket, and it is possible
- to hot-swap the chips. If you want to back up your
- known-working image, simply hot-swap the chip for one that
- is the same capacity, after having dumped a copy of the
- current firmware (flashrom -p internal -r yourchosenname.rom),
- and then flash that chip with the known-working image.
- Check whether the system still boots, and if it does, then
- it should be safe to flash the new image (because you now
- have a backup of the old image).
- </p>
- <p>
- Keeping at least one spare LPC PLCC chip with working firmware
- on it is highly recommended, in case of bricks.
- </p>
- <p>
- <b>
- DO NOT hot-swap the chip with your bare hands. Use a PLCC
- chip extractor. These can be found online.
- See <a href="http://www.coreboot.org/Developer_Manual/Tools#Chip_removal_tools">http://www.coreboot.org/Developer_Manual/Tools#Chip_removal_tools</a>
- </b>
- </p>
- <p>
- Do check the HCL entry: <a href="../hcl/kfsn4-dre.html">../hcl/kfsn4-dre.html</a>
- </p>
- <h2>ASUS KGPE-D16?</h2>
- <p>
- If you have the proprietary BIOS, you need to flash libreboot externally.
- See <a href="kgpe-d16.html">kgpe-d16.html</a>.
- </p>
- <p>
- If you already have coreboot or libreboot installed, without write protection on the flash
- chip, then you can do it in software (otherwise, see link above).
- </p>
- <p>
- <b>
- DO NOT hot-swap the chip with your bare hands. Use a PDIP-8
- chip extractor. These can be found online.
- See <a href="http://www.coreboot.org/Developer_Manual/Tools#Chip_removal_tools">http://www.coreboot.org/Developer_Manual/Tools#Chip_removal_tools</a>
- </b>
- </p>
- <p>
- Do check the HCL entry: <a href="../hcl/kgpe-d16.html">../hcl/kgpe-d16.html</a>
- </p>
- <h2>ASUS KCMA-D8?</h2>
- <p>
- If you have the proprietary BIOS, you need to flash libreboot externally.
- See <a href="kgpe-d16.html">kcma-d8.html</a>.
- </p>
- <p>
- If you already have coreboot or libreboot installed, without write protection on the flash
- chip, then you can do it in software (otherwise, see link above).
- </p>
- <p>
- <b>
- DO NOT hot-swap the chip with your bare hands. Use a PDIP-8
- chip extractor. These can be found online.
- See <a href="http://www.coreboot.org/Developer_Manual/Tools#Chip_removal_tools">http://www.coreboot.org/Developer_Manual/Tools#Chip_removal_tools</a>
- </b>
- </p>
- <p>
- Do check the HCL entry: <a href="../hcl/kcma-d8.html">../hcl/kcma-d8.html</a>
- </p>
- <h2>Are you currently running libreboot (or coreboot)?</h2>
-
- <p>
- X60/T60 users should be fine with this guide. If you write-protected the flash chip, please refer to
- <a href="x60_unbrick.html">x60_unbrick.html</a>, <a href="x60tablet_unbrick.html">x60tablet_unbrick.html</a>
- or <a href="t60_unbrick.html">t60_unbrick.html</a>. <i>This probably does not apply to you. Most people
- do not write-protect the flash chip, so you probably didn't either.</i>
- </p>
- <p>
- Similarly, it is possible to write-protect the flash chip in coreboot or libreboot on GM45 laptops
- (X200/R400/T400/T500). If you did this, then you will need to use the links above for flashing,
- treating your laptop as though it currently has the proprietary firmware (because write-protected SPI flash
- requires external re-flashing, as is also the case when running the proprietary firmware).
- </p>
-
- <p>
- If you did not write-protect the flash chip, or it came to you without any write-protection
- (<b><i>libreboot does not write-protect the flash chip by default, so this probably applies to you</i></b>),
- read on!
- </p>
- <h2>MAC address on GM45 (X200/R400/T400/T500)</h2>
- <p>
- <b>Users of the X200/R400/T400/T500 take note:</b> The MAC address for the onboard ethernet chipset
- is located inside the flash chip. Libreboot ROM images for these laptops contain a generic MAC
- address by default (00:F5:F0:40:71:FE), but this is not what you want.
- <i>Make sure to change the MAC address inside the ROM image, before flashing it.
- The instructions on <a href="../hcl/gm45_remove_me.html#ich9gen">../hcl/gm45_remove_me.html#ich9gen</a>
- show how to do this.</i>
- </p>
- <p>
- It is important that you change the default MAC address, before flashing. It will be printed on a sticker
- at the bottom of the laptop, or it will be printed on a sticker next to or underneath the RAM. Alternatively,
- and assuming that your current firmware has the correct MAC address in it, you can get it from your OS.
- </p>
- <h2>Flash chip size</h2>
- <p>
- Use this to find out:<br/>
- # <b>dmidecode | grep ROM\ Size</b>
- </p>
- <h2>All good?</h2>
- <p>Excellent! Moving on...</p>
- <p>
- Download the <i>libreboot_util.tar.xz</i> archive, and extract it. Inside, you will find
- a directory called <i>flashrom</i>. This contains statically compiled executable files of
- the <i>flashrom</i> utility, which you will use to re-flash your libreboot system.
- </p>
- <p>
- Simply use <i>cd</i> on your terminal, to switch to the <i>libreboot_util</i> directory. Inside,
- there is a script called <i>flash</i>, which will detect what CPU architecture you have
- (e.g. i686, x86_64) and use the appropriate executable. It is also possible for you to
- build these executables from the libreboot source code archives.
- </p>
- <div class="important">
- <p>
- How to update the flash chip contents:<br/>
- $ <b>sudo ./flash update <a href="#rom">yourrom.rom</a></b>
- </p>
- </div>
- <div class="important">
- <p>
- Ocassionally, coreboot changes the name of a given board. If flashrom complains about a board mismatch, but
- you are sure that you chose the correct ROM image, then run this alternative command:<br/>
- $ <b>sudo ./flash forceupdate <a href="#rom">yourrom.rom</a></b>
- </p>
- </div>
- <div class="important">
- <p>
- You should see <b>"Verifying flash... VERIFIED."</b> written at the end of the flashrom output. <b>Shut down</b>
- after you see this, and then boot up again after a few seconds.
- </p>
- </div>
- <p><a href="#pagetop">Back to top of page</a></p>
-
- </div>
- <div class="section">
- <h1 id="flashrom_lenovobios">ThinkPad X60/T60: Initial installation guide (if running the proprietary firmware)</h1>
- <p><b>This is for the ThinkPad X60 and T60 while running Lenovo BIOS. If you already have coreboot or libreboot running,
- then go to <a href="#flashrom">#flashrom</a> instead!</b></p>
- <p><b>If you are flashing a Lenovo ThinkPad T60, be sure to read <a href="../hcl/index.html#supported_t60_list">../hcl/index.html#supported_t60_list</a></b></p>
- <div class="important">
- <p>
- <b>If you are using libreboot_src or git, then make sure that you built the sources first (see <a href="../git/index.html#build">../git/index.html#build</a>).</b>
- </p>
- </div>
-
- <p>
- <b>
- Warning: this guide will not instruct the user how to backup the original Lenovo BIOS firmware. These backups
- are tied to each system, and will not work on any other.
- For that, please refer to <a href="http://www.coreboot.org/Board:lenovo/x60/Installation">http://www.coreboot.org/Board:lenovo/x60/Installation</a>.
- </b>
- </p>
- <div class="important">
- <p>
- <b>
- If you're using libreboot 20150518, note that there is a mistake in the flashing script.
- do this: <em>rm -f patch && wget -O flash http://git.savannah.gnu.org/cgit/libreboot.git/plain/flash?id=910b212e90c6f9c57025e1c7b0c08897af787496 && chmod +x flash</em>
- </b>
- </p>
-
- <p>
- The first half of the procedure is as follows:<br/>
- $ <b>sudo ./flash i945lenovo_firstflash <a href="#rom">yourrom.rom</a>.</b>
- </p>
-
- </div>
-
- <div class="important">
- <p>
- You should see within the output the following:<br/>
- <b>"Updated BUC.TS=1 - 64kb address ranges at 0xFFFE0000 and 0xFFFF0000 are swapped"</b>.
- </p>
- <p>
- You should also see within the output the following:<br/>
- <b>"Your flash chip is in an unknown state"</b>, <b>"FAILED"</b> and <b>"DO NOT REBOOT OR POWEROFF"</b><br/>
- Seeing this means that the operation was a <b>resounding</b> success! <b>DON'T PANIC</b>.
- </p>
- <p>
- See this link for more details:
- <a href="http://thread.gmane.org/gmane.linux.bios.flashrom/575">http://thread.gmane.org/gmane.linux.bios.flashrom/575</a>.
- </p>
- <p>
- If the above is what you see, then <b>SHUT DOWN</b>. Wait a few seconds, and then boot; libreboot is running, but there is a 2nd procedure <b>*needed*</b> (see below).
- </p>
- </div>
- <div class="important">
- <p>
- When you have booted up again, you must also do this:<br/>
- $ <b>sudo ./flash i945lenovo_secondflash <a href="#rom">yourrom.rom</a></b>
- </p>
- <p>
- If flashing fails at this stage, try the following:<br/>
- $ <b>sudo ./flashrom/i686/flashrom -p internal:laptop=force_I_want_a_brick -w <a href="#rom">yourrom.rom</a></b>
- </p>
- </div>
- <div class="important">
- <p>
- You should see within the output the following:<br/>
- <b>"Updated BUC.TS=0 - 128kb address range 0xFFFE0000-0xFFFFFFFF is untranslated"</b>
- </p>
- <p>
- You should also see within the output the following:<br/>
- <b>"Verifying flash... VERIFIED."</b>
- </p>
- </div>
- <p><a href="#pagetop">Back to top of page.</a></p>
-
- </div>
- <div class="section">
- <h1 id="flashrom_macbook21">MacBook2,1: Initial installation guide (if running the proprietary firmware)</h1>
- <div class="important">
- <p>
- <b>If you have a MacBook1,1, refer to <a href="../hcl/index.html#macbook11">../hcl/index.html#macbook11</a> for flashing instructions.</b>
- </p>
- </div>
- <p>
- <b>
- This is for the MacBook2,1 while running Apple EFI firmware. If you already have
- coreboot or libreboot running, then go to <a href="#flashrom">#flashrom</a> instead!
- </b>
- </p>
- <p>
- Be sure to read the information in <a href="../hcl/index.html#macbook21">../hcl/index.html#macbook21</a>.
- </p>
-
- <p>
- <b>
- Warning: this guide will not instruct the user how to backup the original Apple EFI firmware.
- For that, please refer to <a href="http://www.coreboot.org/Board:apple/macbook21">http://www.coreboot.org/Board:apple/macbook21</a>.
- </b>
- </p>
- <div class="important">
- <p>
- <b>If you are using libreboot_src or git, then make sure that you built the sources first (see <a href="../git/index.html#build">../git/index.html#build</a>).</b>
- </p>
- </div>
- <p>
- Look at the <a href="#rom">list of ROM images</a> to see which image is compatible with your device.
- </p>
- <div class="important">
- <p>
- Use this flashing script, to install libreboot:<br/>
- $ <b>sudo ./flash i945apple_firstflash <a href="#rom">yourrom.rom</a></b>
- </p>
- </div>
- <div class="important">
- <p>
- You should also see within the output the following:<br/>
- <b>"Verifying flash... VERIFIED."</b>
- </p>
- <p>
- Shut down.
- </p>
- </div>
- <p><a href="#pagetop">Back to top of page.</a></p>
-
- </div>
- <div class="section">
- <p>
- Copyright © 2014, 2015, 2016 Leah Rowe <info@minifree.org><br/>
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.3
- or any later version published by the Free Software Foundation;
- with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
- A copy of the license can be found at <a href="../gfdl-1.3.txt">../gfdl-1.3.txt</a>
- </p>
- <p>
- Updated versions of the license (when available) can be found at
- <a href="https://www.gnu.org/licenses/licenses.html">https://www.gnu.org/licenses/licenses.html</a>
- </p>
- <p>
- UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
- EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
- AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
- ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
- IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
- WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
- PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
- ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
- KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
- ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
- </p>
- <p>
- TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
- TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
- NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
- INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
- COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
- USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
- DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
- IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
- </p>
- <p>
- The disclaimer of warranties and limitation of liability provided
- above shall be interpreted in a manner that, to the extent
- possible, most closely approximates an absolute disclaimer and
- waiver of all liability.
- </p>
-
- </div>
- </body>
- </html>
|