diff options
35 files changed, 8287 insertions, 7678 deletions
diff --git a/docs/archive_old.html b/docs/archive_old.html index 0fb75819..6c950611 100644 --- a/docs/archive_old.html +++ b/docs/archive_old.html @@ -11,1242 +11,1274 @@ <title>Libreboot release information (old)</title> </head> <body> - <header> + + <div class="section"> + <h1 id="pagetop">Libreboot release information (old)</h1> - <aside>Current release information can be found at <a href="release.html">release.html</a>.</aside> - </header> - - <div class="important"> - <p> - <b>This page is *obsolete*, provided for historical purposes.</b> - </p> + <p> + Current release information can be found at <a href="release.html">release.html</a>. + </p> + + <div class="important"> + <p> + <b>This page is *obsolete*, provided for historical purposes.</b> + </p> + </div> + </div> - - <h2 id="rebootkey">GnuPG public key (signing key)</h2> - - <p> - pub 4096R/656F212E 2014-07-04 Libreboot Releases (signing key) <releases@libreboot.org><br/> - Fingerprint=C923 4BA3 200C F688 9CC0 764D 6E97 D575 656F 212E - </p> - <p> - <b>Download the key</b>: <a href="libreboot.asc">libreboot.asc</a>. - </p> - <p> - You should also be able to find it on a key server. Note: the above key is not for email. It is only for verifying the release archives. - </p> - - <h2>Releases</h2> - <ul> - <li><a href="#release20150124">r20150124 (2015 January 24th)</a></li> - <li><a href="#release20141015">r20141015 (2014 October 15th)</a></li> - <li><a href="#release6">6th release</a> (2014 September 11th <b>pre-release, 7th beta</b>)</li> - <li><a href="#release5">5th release</a> (2014 March 7th, revised 2014 June 22nd)</li> - <li><a href="#release4">4th release</a> (2014 February 21st)</li> - <li><a href="#release3">3rd release</a> (2013 December 14th)</li> - <li><a href="#release2">2nd release</a> (2013 December 13th)</li> - <li><a href="#release1">1st release</a> (2013 December 12th)</li> - </ul> - <p> - <b><i>"Release"</i></b> means that a new coreboot git revision with substantially different code has been adapted for libreboot. - </p> - <p> - <b><i>"Revision"</i></b> means a modification to an existing release, where the result is insubstantially different from what preceded it. - </p> - <p> - The 1st, 2nd, 3rd and 4th releases were really just older revisions of the 5th release. - For historical reasons (and to avoid confusion), these are still called 'releases' instead of correcting the mistake. - </p> - -<hr/> - - <h1 id="release20150124">Release 20150124</h1> - <p> - Release date: January 24th, 2015. - </p> + <div class="section"> - <h2>Binaries (right-click save as, or use wget)</h2> - <ul> - <li><a href="http://libreboot.org/release/20150124/libreboot_bin.tar.xz">http://libreboot.org/release/20150124/libreboot_bin.tar.xz</a></li> - <li><a href="http://libreboot.org/release/20150124/libreboot_bin.tar.xz.sig">http://libreboot.org/release/20150124/libreboot_bin.tar.xz.sig</a></li> - </ul> - <h2>Source code (right-click save as, or use wget)</h2> - <ul> - <li><a href="http://libreboot.org/release/20150124/libreboot_src.tar.xz">http://libreboot.org/release/20150124/libreboot_src.tar.xz</a></li> - <li><a href="http://libreboot.org/release/20150124/libreboot_src.tar.xz.sig">http://libreboot.org/release/20150124/libreboot_src.tar.xz.sig</a></li> - </ul> + <h2 id="rebootkey">GnuPG public key (signing key)</h2> <p> - Installation instructions can be found at <a href="install/index.html#flashrom">install/index.html#flashrom</a>. - Building instructions (for source code) can be found at <a href="git/index.html#build">git/index.html#build</a>. + pub 4096R/656F212E 2014-07-04 Libreboot Releases (signing key) <releases@libreboot.org><br/> + Fingerprint=C923 4BA3 200C F688 9CC0 764D 6E97 D575 656F 212E </p> - - <h2>Machines supported in this release:</h2> - <ul> - <li> - <b>Lenovo ThinkPad X60/X60s</b> - <ul> - <li> - You can also remove the motherboard from an X61/X61s and replace it with an X60/X60s motherboard. - An X60 Tablet motherboard will also fit inside an X60/X60s. - </li> - </ul> - </li> - <li> - <b>Lenovo ThinkPad X60 Tablet</b> (1024x768 and 1400x1050) with digitizer support - <ul> - <li>See <a href="hcl/index.html#supported_x60t_list">hcl/index.html#supported_x60t_list</a> for list of supported LCD panels</li> - <li>It is unknown whether an X61 Tablet can have it's mainboard replaced with an X60 Tablet motherboard.</li> - </ul> - </li> - <li> - <b>Lenovo ThinkPad T60</b> (Intel GPU) (there are issuesinstall/x200_external.html; see below): - <ul> - <li>See notes below for exceptions, and <a href="hcl/index.html#supported_t60_list">hcl/index.html#supported_t60_list</a> for known working LCD panels.</li> - <li>It is unknown whether a T61 can have it's mainboard replaced with a T60 motherboard.</li> - <li>See <a href="future/index.html#t60_cpu_microcode">future/index.html#t60_cpu_microcode</a>.</li> - <li>T60P (and T60 laptops with ATI GPU) will likely never be supported: <a href="hcl/index.html#t60_ati_intel">hcl/index.html#t60_ati_intel</a></li> - </ul> - </li> - <li> - <b>Lenovo ThinkPad X200</b> - <ul> - <li>X200S and X200 Tablet are also supported, conditionally; see <a href="hcl/x200.html">hcl/x200.html#x200s</a></li> - <li><b>ME/AMT</b>: libreboot removes this, permanently. <a href="hcl/x200_remove_me.html">hcl/x200_remove_me.html</a></li> - </ul> - </li> - <li> - <b>Apple MacBook1,1</b> (MA255LL/A, MA254LL/A, MA472LL/A) - <ul> - <li>See <a href="hcl/index.html#macbook11">hcl/index.html#macbook11</a>.</li> - </ul> - </li> - <li> - <b>Apple MacBook2,1</b> (MA699LL/A, MA701LL/A, MB061LL/A, MA700LL/A, MB063LL/A, MB062LL/A) - <ul> - <li>See <a href="hcl/index.html#macbook21">hcl/index.html#macbook21</a>.</li> - </ul> - </li> - </ul> - - <h2> - Changes for this release (latest changes first, earliest changes last) - </h2> - <ul> - <li>Documentation: added information about how to boot Guix GNU/Linux.</li> - <li>grub.cfg: Added (usb0) and (usb0,*) to the list of devices in the <i>Search for GRUB</i> menuentry (this is needed for Guix GNU/Linux)</li> - <li>grub.cfg: Added (ahci1) to list of devices for ISOLINUX parser (CD/DVD) (this is needed for the X200 docking station).</li> - <li>grub.cfg: ISOLINUX parsing is now done on all USB partitions.</li> - <li>grub.cfg: Automatically switched to /boot/grub/libreboot_grub.cfg on a partition, if it exists.</li> - <li>libreboot_bin: added static ARM binaries for flashrom, cbfstool, ich9gen and - ich9deblob (tested on beaglebone black).</li> - <li>Flashrom: removed redundant Macronix flashchip definitions (for X200 owners).</li> - <li>Flashrom: added whitelist for ThinkPad X200.</li> - <li>X200: fixed uneven backlight (at low levels)</li> - <li>ich9macchange (new script, uses ich9gen): for changing the default MAC address on X200 ROM images.</li> - <li>ich9gen: added capability to change the default MAC address (and update the checksum)</li> - <li>ich9deblob: added new utility ich9gen: this can generate a descriptor+gbe image without a factory.rom dump present.</li> - <li>Modified ich9deblob to use a struct for Gbe, documenting everything.</li> - <li>Massively updated the ich9deblob utility: re-factored everything completely.</li> - <li>Enabled cstates 1 and 2 on macbook21. This reduces idle heat / power consumption.</li> - <li>buildrom-withgrub: disabled creation of *txtmode*.rom for X200 (only framebuffer graphics work)</li> - <li>Updated SeaBIOS (again)</li> - <li>docs/install/index.html#flashrom_x200: improve instructions</li> - <li>Updated flashrom (again) - patches updated</li> - <li>Updated GRUB (again)</li> - <li>Updated coreboot (again)</li> - <li>build-release: not all files were copied to libreboot_src. fix that.</li> - <li>build-release: include cbmem (statically compiled) in libreboot_bin</li> - <li>Documentation (X200): added software-based flashing instructions</li> - <li>Documentation: remove all references to the bus pirate (replaced with BBB flashing tutorials)</li> - <li><b>New board:</b> ThinkPad X200S and X200 Tablet support added to libreboot</li> - <li>build: automatically find board names (configs) to build for</li> - <li><b>New board:</b> ThinkPad X200 support added to libreboot</li> - <li>coreboot-libre config (all boards): enable USB dongle log output (for BeagleBone Black)</li> - <li>cleandeps: actually clean grubinvaders</li> - <li>.gitignore: add powertop directory</li> - <li>cleandeps: clean i945-pwm utility</li> - <li>scripts (all): fix typos</li> - <li>Documentation: general cleanup.</li> - <li>builddeps-flashrom: reduce build commands to a single for loop</li> - <li>scripts (all): replace unnecessary rm -rf with rm -f</li> - <li>powertop.trisquel7: remove sudo (script already checks if the user is root)</li> - <li>docs/release.html: add lenovo g505s to the list of candidates</li> - <li>.gitignore: add libreboot_bin.tar.xz and libreboot_src.tar.xz</li> - <li> - libreboot_bin.tar.xz: Include utils as statically linked binaries - <ul> - <li>This means that the user does not have to install build dependency - or build from source anymore.</li> - </ul> - </li> - <li>deps-trisquel: Add binutils-source</li> - <li>powertop.trisquel7 (new): Setup powertop on trisquel 7</li> - <li>deps-trisquel,flash,lenovobios_firstflash,lenovobios_secondflash,macbook21_firstflash - x60flashfrom5,powertop.trisquel6: check if user is root</li> - <li>deps-trisquel: Make GRUB build on in Trisquel 7 x86_64. (cross compile dependencies. fixes build error in GRUB)</li> - <li>deps-parabola (removed) Remove Parabola dependencies script. Will re-add later (properly tested)</li> - <li>grub.cfg: Add more path checks to isolinux parser (more ISOs should work now)</li> - <li>Update SeaBIOS</li> - <li>x60flashfrom5 (new), for X60 users upgrading from 5th/early release</li> - <li>Update flashrom</li> - <li>Update GRUB</li> - <li> - Updated coreboot-libre - <ul> - <li>i945: permanently set tft_brightness to 0xff (fixes bug on X60 where - turning up brightness at max would make it loop back to low brightness)</li> - </ul> - </li> - <li> - getcb: Revert X60/T60 to legacy backlight controls - <ul> - <li>The ACPI brightness patches were abandoned and obsolete.</li> - </ul> - </li> - <li>grub.cfg: Only load initrd.img if it exists. Add rw to linux line (for ProteanOS)</li> - <li>build: Only generate the GRUB configurations once (re-use on all images)</li> - <li>Only build 2 GRUB payload executables, re-use on all boards.</li> - <li> - resources/utilities/grub-assemble/gen.txtmode.sh: Use GNU BASH<br/> - resources/utilities/grub-assemble/gen.vesafb.sh: Use GNU BASH - </li> - <li>scripts (error handling): Replace exit with exit 1 (make debugging easier)</li> - <li> - Move most files in CBFS to GRUB memdisk, except grub.cfg and grubtest.cfg - <ul> - This reduces the space used in CBFS because coreboot compresses - its payloads with LZMA by default. grub.cfg is all that most users - will want to modify, which remains in CBFS. - </ul> - </li> - <li>docs/release.html Add DMP vortex86ex to list of candidates.</li> - <li>docs/release.html Add ThinkPad X201 to list of candidates.</li> - <li>New links added to docs/security/x60_security and docs/security/t60_security</li> - <li>lenovobios_secondflash: Warn if BUCTS is not present. (not a dealbreaker. Can just pull out nvram battery/coin).</li> - <li>lenovobios_firstflash: Fail if BUCTS fails. (anti-bricking precaution)</li> - <li>Removed obnoxious warnings from flashing scripts, improved documentation instead.</li> - <li>scripts (all): add proper error checking (fail fast, fail early. Do not continue if there are errors)</li> - <li>buildrom-withgrub: rename image to boardname_layout_romtype.rom</li> - <li>buildrom-withgrub: don't move cbfstool, execute directly</li> - <li>resources/utilities/grub-assemble: add French Dvorak (BEPO) keyboard layout.</li> - <li>Documentation: add docs/hardware/x60_keyboard.html (show how to replace keyboard on X60/X60T)</li> - <li>Documentation: major cleanup (better structure, easier to find things)</li> - <li> - docs/release.html: Remove Acer CB5 from list of future candidates. - <ul> - <li> - Too many issues. Chromebooks are crippled (soldered RAM/storage/wifi) - and have too many usability issues for the libreboot project. - </li> - </ul> - </li> - <li>docs/gnulinux/grub_cbfs.html Major cleanup. Usability improvements.</li> - <li>hocs/gnulinux/encrypted_trisquel.html: Fixed mistakes/typos. General improvements</li> - <li> - flash (flashrom script): remove boardmismatch=force - <ul> - <li> - This was put there before for users upgrading from libreboot r5 - to r6, but also allows the user to flash the wrong image. For - example, the user could flash a T60 image on an X60, thus - bricking the machine. It's almost certain that most people - have upgraded by now, so remove this potentially dangerous - option. - </li> - </ul> - </li> - <li>Documentation: update compatibility list for X60T LCD panels.</li> - <li>docs/release.html: add note about X60 Tablet board in X60/X60s</li> - <li>docs/howtos/grub_boot_installer.html: small corrections</li> - <li>docs/howtos/grub_boot_installer.html: improved readability, fixed html errors</li> - <li>Documentation (macbook21 related): clean up</li> - </ul> - -<hr/> - - <h1 id="release20141015">Release 20141015</h1> - - <h2>Binaries (right-click save as, or use wget)</h2> - <ul> - <li><a href="http://libreboot.org/release/20141015/libreboot_bin.tar.xz">http://libreboot.org/release/20141015/libreboot_bin.tar.xz</a></li> - <li><a href="http://libreboot.org/release/20141015/libreboot_bin.tar.xz.sig">http://libreboot.org/release/20141015/libreboot_bin.tar.xz.sig</a></li> - </ul> - <h2>Source code (right-click save as, or use wget)</h2> - <ul> - <li><a href="http://libreboot.org/release/20141015/libreboot_src.tar.xz">http://libreboot.org/release/20141015/libreboot_src.tar.xz</a></li> - <li><a href="http://libreboot.org/release/20141015/libreboot_src.tar.xz.sig">http://libreboot.org/release/20141015/libreboot_src.tar.xz.sig</a></li> - </ul> - <p> - Installation instructions can be found at <a href="install/index.html#flashrom">install/index.html#flashrom</a>. - Building instructions (for source code) can be found at <a href="git/index.html#build">git/index.html#build</a>. + <b>Download the key</b>: <a href="libreboot.asc">libreboot.asc</a>. </p> - - <h2>Machines supported in this release:</h2> - <ul> - <li> - <b>Lenovo ThinkPad X60/X60s</b> - <ul> - <li> - You can also remove the motherboard from an X61/X61s and replace it with an X60/X60s motherboard. - An X60 Tablet motherboard will also fit inside an X60/X60s. - </li> - </ul> - </li> - <li> - <b>Lenovo ThinkPad X60 Tablet</b> (1024x768 and 1400x1050) with digitizer support - <ul> - <li>See <a href="hcl/index.html#supported_x60t_list">hcl/index.html#supported_x60t_list</a> for list of supported LCD panels</li> - <li>It is unknown whether an X61 Tablet can have its mainboard replaced with an X60 Tablet motherboard.</li> - </ul> - </li> - <li> - <b>Lenovo ThinkPad T60</b> (Intel GPU) (there are issues; see below): - <ul> - <li>See notes below for exceptions, and <a href="hcl/index.html#supported_t60_list">hcl/index.html#supported_t60_list</a> for known working LCD panels.</li> - <li>It is unknown whether a T61 can have its mainboard replaced with a T60 motherboard.</li> - <li>See <a href="future/index.html#t60_cpu_microcode">future/index.html#t60_cpu_microcode</a>.</li> - <li>T60P (and T60s with ATI GPU) will likely never be supported: <a href="hcl/index.html#t60_ati_intel">hcl/index.html#t60_ati_intel</a></li> - </ul> - </li> - <li> - <b>Apple MacBook1,1</b> (MA255LL/A, MA254LL/A, MA472LL/A) - <ul> - <li>See <a href="hcl/index.html#macbook11">hcl/index.html#macbook11</a>.</li> - </ul> - </li> - <li> - <b>Apple MacBook2,1</b> (MA699LL/A, MA701LL/A, MB061LL/A, MA700LL/A, MB063LL/A, MB062LL/A) - <ul> - <li>See <a href="hcl/index.html#macbook21">hcl/index.html#macbook21</a>.</li> - </ul> - </li> - </ul> - - <h2> - Changes for this release (latest changes first, earliest changes last) - </h2> - <ul> - <li>Updated coreboot (git commit 8ffc085e1affaabbe3dca8ac6a89346b71dfc02e), the latest at the time of writing.</li> - <li>Updated SeaBIOS (git commit 67d1fbef0f630e1e823f137d1bae7fa5790bcf4e), the latest at the time of writing.</li> - <li>Updated Flashrom (svn revision 1850), the latest at the time of writing.</li> - <li>Updated GRUB (git commit 9a67e1ac8e92cd0b7521c75a734fcaf2e58523ad), the latest at the time of writing.</li> - <li>Cleaned up the documentation, removed unneeded files.</li> - <li>ec/lenovo/h8 (x60/x60s/x60t/t60): Enable wifi/bluetooth/wwan/touchpad/trackpoint by default.</li> - <li>Documentation: Updated list of T60 LCDs (Samsung LTN150XG 15" XGA listed as non-working).</li> - <li>builddeps-coreboot: Don't build libpayload (not needed. This was leftover by mistake, when trying out the TINT payload).</li> - <li>Replaced most diff files (patches) for coreboot with gerrit checkouts (cherry-pick).</li> - <li>Documentation: x60_security.html and t60_security.html: added links to info about the ethernet controller (Intel 82573).</li> - <li>Documentation: x60_security.html and t60_security.html: added notes about DMA and the docking station.</li> - <li> - Documentation: configuring_parabola.html: basic post-install steps for Parabola GNU/Linux - (helpful, since libreboot development is being moved to Parabola at the time of writing). - </li> - <li>builddeps-coreboot: use 'make crossgcc-i386' instead of 'make crossgcc'. Libreboot only targets x86 at the time of writing.</li> - <li>ROM images no longer include SeaBIOS. Instead, the user adds it afterwards. Documentation and scripts updated.</li> - <li>docs/images/encrypted_parabola.html: Notes about linux-libre-grsec</li> - <li>Documentation: encrypted_parabola.html: add tutorial for encrypted Parabola GNU/Linux installation.</li> - <li>Documentation: added more info about wifi chipsets</li> - </ul> - - -<hr/> - - <h1 id="release6">6th release (pre-release, 7th beta)</h1> - - <ul> - <li>Released 2014 July 11th (pre-release) 1st beta</li> - <li>Revised (pre-release, 2nd beta) 2014 July 16th</li> - <li>Revised (pre-release, 3rd beta) 2014 July 20th</li> - <li>Revised (pre-release, 4th beta) 2014 July 29th</li> - <li>Revised (pre-release, 5th beta) 2014 August 11th (corrected 2014 August 11th)</li> - <li>Revised (pre-release, 6th beta) 2014 September 3rd</li> - <li>Revised (pre-release, 7th beta) 2014 September 11th</li> - </ul> - - <h2>Binaries (for flashing) (right-click save as, or use wget)</h2> - <ul> - <li><a href="http://libreboot.org/release/5/prerelease_beta7/libreboot_bin.tar.xz">http://libreboot.org/release/5/prerelease_beta7/libreboot_bin.tar.xz</a></li> - <li><a href="http://libreboot.org/release/5/prerelease_beta7/libreboot_bin.tar.xz.sig">http://libreboot.org/release/5/prerelease_beta7/libreboot_bin.tar.xz.sig</a></li> - </ul> - <h2>Source code (for hacking) (right-click save as, or use wget)</h2> - <ul> - <li><a href="http://libreboot.org/release/5/prerelease_beta7/libreboot_src.tar.xz">http://libreboot.org/release/5/prerelease_beta7/libreboot_src.tar.xz</a></li> - <li><a href="http://libreboot.org/release/5/prerelease_beta7/libreboot_src.tar.xz.sig">http://libreboot.org/release/5/prerelease_beta7/libreboot_src.tar.xz.sig</a></li> - </ul> - - <h2>Machines still supported (compared to previous release):</h2> - <ul> - <li> - <b>Lenovo ThinkPad X60/X60s</b> - <ul> - <li> - You can also remove the motherboard from an X61/X61s and replace it with an X60/X60s motherboard. - </li> - </ul> - </li> - </ul> - <h2>New machines supported in this release:</h2> - <ul> - <li> - <b>Lenovo ThinkPad X60 Tablet</b> (1024x768 and 1400x1050) with digitizer support - <ul> - <li>See <a href="hcl/index.html#supported_x60t_list">hcl/index.html#supported_x60t_list</a> for list of supported LCD panels</li> - <li>It is unknown whether an X61 Tablet can have its mainboard replaced with an X60 Tablet motherboard.</li> - </ul> - </li> - <li> - <b>Lenovo ThinkPad T60</b> (Intel GPU) (there are issues; see below) - <ul> - <li>See notes below for exceptions, and <a href="hcl/index.html#supported_t60_list">hcl/index.html#supported_t60_list</a> for known working LCD panels.</li> - <li>It is unknown whether a T61 can have its mainboard replaced with a T60 motherboard.</li> - <li>T60P (and T60s with ATI GPU) will likely never be supported: <a href="hcl/index.html#t60_ati_intel">hcl/index.html#t60_ati_intel</a></li> - </ul> - </li> - <li> - <b>Apple MacBook1,1</b> (MA255LL/A, MA254LL/A, MA472LL/A) - <ul> - <li>See <a href="hcl/index.html#macbook11">hcl/index.html#macbook11</a>.</li> - </ul> - </li> - <li> - <b>Apple MacBook2,1</b> (MA699LL/A, MA701LL/A, MB061LL/A, MA700LL/A, MB063LL/A, MB062LL/A) - <ul> - <li>See <a href="hcl/index.html#macbook21">hcl/index.html#macbook21</a>.</li> - </ul> - </li> - </ul> - <h2>Machines no longer supported (compared to previous release):</h2> - <ul> - <li><b>All previous machines still supported!</b></li> - </ul> - - <h2> - Revisions for 7th beta (2014 September 11th) - </h2> - <ul> - <li>The changes below were made in a git repository, unlike in previous releases. Descriptions below are copied from 'git log'.</li> - <li>Update .gitignore for new dependencies.</li> - <li>Use a submodule for i945-pwm.</li> - <li>Don't clean packages that fail or don't need cleaning.</li> - <li>Don't clean i945-pwm, it's not needed.</li> - <li>Regression fix: Parabola live ISO boot issues</li> - <li>Re-enable background images in ISOLINUX/SYSLINUX GRUB parser menus</li> - <li>Regression fix: Re-add CD-ROM (ata0) in GRUB</li> - <li>Documentation: add notes about performance penalty when using ecryptfs.</li> - <li>Documentation: Fixed spelling and grammatical errors.</li> - <li>Documentation: macbook21: add new machine as tested</li> - <li>Documentation: macbook21: add info about improving touchpad sensitivity</li> - <li>Documentation: X60 Tablet: add more information about finger input</li> - <li>Documentation: release.html: Add information about recently merged commit in coreboot</li> - </ul> - - <h2> - Revisions for 6th beta (2014 September 3rd) - </h2> - <ul> - <li>Added modified builddeb* scripts for Parabola GNU/Linux-libre: buildpac, buildpac-flashrom, buildpac-bucts (courtesy of Noah Vesely)</li> - <li>Documentation: updated all relevant areas to mention use of buildpac* scripts for Parabola users.</li> - <li>Documentation: added information showing how to enable or disable bluetooth on the X60</li> - <li>MacBook1,1 tested! See <a href="hcl/index.html#macbook11">hcl/index.html#macbook11</a></li> - <li>Documentation: fixed typo in index.html#get_edid_panelname (get-edit changed to get-edid)</li> - <li>Documentation: added images/x60_lcd_change/ (pics only for now)</li> - <li>Added gcry_serpent and gcry_whirlpool to the GRUB module list in the 'build' script (for luks users)</li> - <li> - <b>Libreboot is now based on a new coreboot version from August 23rd, 2014:<br/> - Merged commits (relates to boards that were already supported in libreboot):</b> - <ul> - <li><a href="http://review.coreboot.org/#/c/6697/">http://review.coreboot.org/#/c/6697/</a></li> - <li><a href="http://review.coreboot.org/#/c/6698/">http://review.coreboot.org/#/c/6698/</a> (merged already)</li> - <li><a href="http://review.coreboot.org/#/c/6699/">http://review.coreboot.org/#/c/6699/</a> (merged already)</li> - <li><a href="http://review.coreboot.org/#/c/6696/">http://review.coreboot.org/#/c/6696/</a> (merged already)</li> - <li><a href="http://review.coreboot.org/#/c/6695/">http://review.coreboot.org/#/c/6695/</a> (merged already)</li> - <li><b><a href="http://review.coreboot.org/#/c/5927/">http://review.coreboot.org/#/c/5927/</a> (merged already)</b></li> - <li><a href="http://review.coreboot.org/#/c/6717/">http://review.coreboot.org/#/c/6717/</a> (merged already)</li> - <li><a href="http://review.coreboot.org/#/c/6718/">http://review.coreboot.org/#/c/6718/</a> (merged already)</li> - <li> - <a href="http://review.coreboot.org/#/c/6723/">http://review.coreboot.org/#/c/6723/</a> (merged already) - (text-mode patch, might enable memtest. macbook21) - </li> - <li> - <a href="http://review.coreboot.org/#/c/6732/">http://review.coreboot.org/#/c/6732/</a> (MERGED) - (remove useless ps/2 keyboard delay from macbook21. already merged) - </li> - </ul> - </li> - <li> - These were also merged in coreboot (relates to boards that libreboot already supported): - <ul> - <li><a href="http://review.coreboot.org/#/c/5320/">http://review.coreboot.org/#/c/5320/</a> (merged)</li> - <li><a href="http://review.coreboot.org/#/c/5321/">http://review.coreboot.org/#/c/5321/</a> (merged)</li> - <li><a href="http://review.coreboot.org/#/c/5323/">http://review.coreboot.org/#/c/5323/</a> (merged)</li> - <li><a href="http://review.coreboot.org/#/c/6693/">http://review.coreboot.org/#/c/6693/</a> (merged)</li> - <li><a href="http://review.coreboot.org/#/c/6694/">http://review.coreboot.org/#/c/6694/</a> (merged)</li> - <li><a href="http://review.coreboot.org/#/c/5324/">http://review.coreboot.org/#/c/5324/</a> (merged)</li> - </ul> - </li> - <li>Documentation: removed the section about tft_brightness on X60 (new code makes it obsolete)</li> - <li>Removed all patches from resources/libreboot/patch/ and added new patch: 0000_t60_textmode.git.diff</li> - <li>Updated getcb script and DEBLOB script.</li> - <li>Updated configuration files under resources/libreboot/config/ to accomodate new coreboot version.</li> - <li> - Removed grub_serial*.cfg and libreboot_serial*.rom, all configs/rom files are now unified (containing same configuration as serial rom files from before). - <ul> - <li>Documentation: updated index.html#rom to reflect the above.</li> - </ul> - </li> - <li>Updated GRUB to new version from August 14th, 2014.</li> - <li>Unified all grub configurations for all machines to a single grub.cfg under resources/grub/config/</li> - <li>Updated flashrom to new version from August 20th, 2014</li> - <li> - Added getseabios and builddeps-seabios (builddeps and getall were also updated) - <ul> - <li> - Added instructions to 'buildrom-withgrub' to include bios.bin.elf and vgaroms/vgabios.bin from SeaBIOS inside the ROM. - </li> - </ul> - </li> - <li>Added seabios (and sgavgabios) to grub as payload option in menu</li> - <li> - Disabled serial output in Memtest86+ (no longer needed) to speed up tests. - <ul> - <li>MemTest86+ now works properly, it can output on the laptop screen (no serial port needed anymore).</li> - </ul> - </li> - <li> - Added getgrubinvaders, builddeps-grubinvaders scripts. Added these to getall and builddeps. - <ul> - <li> - Added <a href="http://www.coreboot.org/GRUB_invaders">GRUB Invaders</a> menu entry in resources/grub/config/grub.cfg - </li> - </ul> - </li> - <li>Added rules to builddeps-coreboot to build libpayload with TinyCurses. (added appropriate instructions to cleandeps script).</li> - <li>Commented out lines in resources/grub/config/grub.cfg for loading font/background (not useful anymore, now that GRUB is in text-mode).</li> - <li>Commented out lines in buildrom-withgrub that included backgrounds/fonts (not useful anymore, now that GRUB is in text-mode).</li> - <li> - Added resources/utilities/i945-pwm/ (from git://git.mtjm.eu/i945-pwm), for debugging acpi brightness on i945 machines. - <ul> - <li>Added instructions for it in builddeps, builddeps-i945pwm, builddeb and cleandeps</li> - </ul> - </li> - <li>'build' script: removed the parts that generated sha512sum manifests (not needed, since release tarballs are GPG-signed)</li> - <li> - 'build' script: removed the parts that generated libreboot_meta directory (not needed anymore, since _meta will be hosted in git) - <ul> - <li>Updated index.html#build_meta (and other parts of documentation) to accomodate this change.</li> - </ul> - </li> - <li>Documentation: simplified (refactored) the notes in index.html#rom</li> - <li> - 'build' script: removed the parts that generated libreboot_bin and added them to a new script: 'build-release' - <ul> - <li>Documentation: index.html#build updated to reflect the above.</li> - </ul> - </li> - <li>Removed 'sudo' from builddeb, builddeb-flashrom, powertop.trisquel6 and builddeb-bucts scripts (assuming that the user has it is a really bad idea).</li> - <li><s>Added all gcry_* modules to grub (luks/cryptomount): gcry_arcfour gcry_camellia gcry_crc gcry_dsa gcry_md4 gcry_rfc2268 gcry_rmd160 gcry_seed gcry_sha1 gcry_sha512 gcry_twofish gcry_blowfish gcry_cast5 gcry_des gcry_idea gcry_md5 gcry_rijndael gcry_rsa gcry_serpent gcry_sha256 gcry_tiger gcry_whirlpool</s></li> - <li>Added GNUtoo's list of GRUB modules (includes all of the gcry_* modules above), cryptomount should be working now.</li> - <li>Removed builddeb-bucts and builddeb-flashrom, merged them with builddeb (index.html updated accordingly)</li> - <li>Removed buildpac-bucts and buildpac-flashrom, merged them with buildpac (index.html updated accordingly)</li> - <li>Renamed builddeb to deps-trisquel (index.html updated accordingly)</li> - <li>Renamed buildpac to deps-parabola (index.html updated accordingly)</li> - <li>Documentation: removed all parts talking about build dependencies, replaced them with links to index.html#build_dependencies</li> - <li>Documentation: emphasized more strongly on the documentation, the need to re-build bucts and/or flashrom before flashing a ROM image.</li> - <li>build-release: flashrom, nvramtool, cbfstool and bucts are no longer provided pre-compiled in binary archives, and are now in source form only. (to maximize distro compatibility).</li> - <li>Documentation: added gnulinux/encrypted_trisquel.html showing how to setup a fully encrypted Trisquel installation (including /boot) and boot it from the GRUB payload.</li> - <li>'build' script: replaced grub.elf assembly instructons, it is now handled by a utility added under resources/utilities/grub-assemble</li> - <li>Moved resources/grub/keymap to resources/utilities/grub-assemble/keymap, and updated that utility to use it</li> - <li>Documentation: removed useless links to pictures of keyboard layouts and unmodified layouts.</li> - <li>Removed all unused fonts from dejavu-fonts-ttf-2.34/ directory</li> - <li>'buildrom-withgrub' script: updated it to create 2 sets of ROMs for each machine: one with text-mode, one with coreboot framebuffer.</li> - <li>Documentation: updated index.html#rom to reflect the above</li> - <li>Deleted unused README and COPYING file from main directory</li> - <li>Removed some rm -rf .git* instructions from the get* scripts and moved them to build-release script</li> - <li> - Split up default grub.cfg into 6 parts: extra/{common.cfg,txtmode.cfg,vesafb.cfg} and menuentries/{common.cfg,txtmode.cfg,vesafb.cfg} - <ul> - <li>buildrom-withgrub script uses these to generate the correct grub.cfg for each type of configuration.</li> - </ul> - </li> - <li>grub_memdisk.cfg (used inside grub.elf) now only loads grub.cfg from cbfs. It no longer enables serial output or sets prefix. (menuentries/common.cfg does instead)</li> - <li> - resources/grub/config/extra/common.cfg, added: - <ul> - <li>insmod instructions to load those modules: nativedisk, ehci, ohci, uhci, usb, usbserial_pl2303, usbserial_ftdi, usbserial_usbdebug</li> - <li>set prefix=(memdisk)/boot/grub</li> - <li> - For native graphics (recommended by coreboot wiki):<br/> - gfxpayload=keep<br/> - terminal_output --append gfxterm - </li> - <li> - Play a beep on startup:<br/> - play 480 440 1 - </li> - </ul> - </li> - <li> - Documentation: added note about 'fb=false' workaround for text-mode debian-installer (Trisquel net install) to - gnulinux/grub_boot_installer.html - </li> - <li> - Documentation: updated gnulinux/grub_cbfs.html to make it safer (and easier) to follow. - </li> - </ul> - - <h2> - Corrections to 5th beta (2014 August 2014) - </h2> - <ul> - <li>Fixed typo where revision list for 5th beta was listed as March 11th 2014, when in fact it was August 11th 2014</li> - <li>Fixed incorrect grub.cfg that was actually placed in resources/grub/config/x60/grub_usqwerty.cfg which broke the default GRUB menu entry on X60</li> - </ul> - - <h2> - Revisions for 5th beta (2014 August 11th) - </h2> - <ul> - <li>build: added 'luks', 'lvm', 'cmosdump' and 'cmostest' to the list of modules for grub.elf</li> - <li>Documentation: added pics showing T60 unbricking (still need to write a tutorial)</li> - <li>build: include cmos.layout (coreboot/src/mainboard/manufacturer/model/cmos.layout) files in libreboot_bin</li> - <li>Documentation: added <a href="install/x60tablet_unbrick.html">install/x60tablet_unbrick.html</a></li> - <li>Documentation: added <a href="install/t60_unbrick.html">install/t60_unbrick.html</a></li> - <li>Documentation: added <a href="hardware/t60_lcd_15.html">install/t60_lcd_15.html</a></li> - <li>Documentation: added <a href="security/t60_security.html">install/t60_security.html</a></li> - <li>Documentation: added <a href="hardware/t60_heatsink.html">install/t60_heatsink.html</a></li> - <li>Documentation: Renamed RELEASE.html to release.html</li> - <li>Documentation: removed pcmcia reference in x60_security.html (it's cardbus)</li> - <li>Documentation: added preliminary information about randomized seal (for physical intrusion detection) in x60_security.html and t60_security.html</li> - <li>Documentation: added preliminary information about preventing/mitigating cold-boot attack in x60_security.html and t60_security.html</li> - <li>Documentation: added info to index.html#macbook21 warning about issues with macbook21</li> - <li> - Documentation: X60/T60: added information about checking custom ROMs using dd to see whether or not the top 64K - region is duplicated below top or not. Advise caution about this in the tutorial that deals with flashing on top - of Lenovo BIOS, citing the correct dd commands necessary if it is confirmed that the ROM has not been applied with - dd yet. (in the case that the user compiled their own ROMs from libreboot, without using the build scripts, or if they forgot to use dd, etc). - </li> - <li> - Split resources/libreboot/patch/gitdiff into separate patch files (getcb script updated to accomodate this change). - </li> - <li>Re-added .git files to bucts</li> - <li>Fixed the oversight where macbook21_firstflash wasn't included in binary archives</li> - <li>Release archives are now compressed using .tar.xz for better compression</li> - </ul> - - <h2> - Revisions for 4th beta (2014 July 29th) - </h2> - <ul> - <li>Documentation: improved (more explanations, background info) in docs/security/x60_security.html (courtesy of Denis Carikli)</li> - <li>MacBook2,1 tested (confirmed)</li> - <li>macbook21: Added script 'macbook21_firstflash' for flashing libreboot while Apple EFI firmware is running.</li> - <li>Documentation: macbook21: added software-based flashing instructions for flashing libreboot while Apple EFI firmware is running.</li> - <li> - Reduced size of libreboot_src.tar.gz: - <ul> - <li> - Removed .git and .gitignore from grub directory (libreboot_src); not needed. - Removing them reduces the size of the archive (by a lot). GRUB development should be upstream. - </li> - <li> - Removed .git and .gitignore from bucts directory (libreboot_src); not needed. - Removing them reduces the size of the archive. bucts development should be upstream. - </li> - <li> - Removed .svn from flashrom directory (libreboot_src); not needed. - Removing it reduces the size of the archive. flashrom development should be upstream. - </li> - </ul> - </li> - <li> - Added ROMs with Qwerty (Italian) layout in GRUB (libreboot*itqwerty.rom) - </li> - <li> - Added resources/utilities/i945gpu/intel-regs.py for debugging issues related to LCD panel compatibility on X60 Tablet and T60. (courtesy of <a href="http://mtjm.eu">MichaÅ‚ MasÅ‚owski</a>) - </li> - </ul> - - <h2> - Revisions for 3rd beta (2014 July 20th) - </h2> - <ul> - <li> - Fixed typo that existed in 2nd beta where the release date of the 2nd beta was listed as being in year 2016, when in actual fact it was 2014. - </li> - <li> - Documentation: added (preliminary) details about (rare) buggy CPUs on the ThinkPad T60 that were found to fail (instability, kernel panics, etc) - without the microcode updates. - </li> - <li>Documentation: added docs/hardware/x60_heatsink.html for showing how to change the heatsink on the Thinkpad X60</li> - <li>Added ROM images for Azerty (French) keyboard layout in GRUB (courtesy of Olivier Mondoloni)</li> - <li> - Tidied up some scripts: - <ul> - <li><s>Re-factored those scripts (made easier to read/maintain): build-x60, build-x60t, build-t60, build-macbook21</s></li> - <li><s>Reduced the number of grub configs to 2 (or 1, for macbook21), the build scripts now generate the other configs at build time.</s></li> - <li>Deleted build-x60, build-x60t, build-t60, build-macbook21 and replaced with intelligent (generic) buildrom-withgrub script</li> - <li>Updated build to use buildrom-withgrub script for building the ROM images.</li> - <li>coreboot.rom and coreboot_serial.rom renamed to coreboot_usqwerty.rom and coreboot_serial_usqwerty.rom</li> - <li>coreboot_dvorak and coreboot_serial_dvorak.rom renamed to coreboot_usdvorak.rom and coreboot_serial_usdvorak.rom</li> - <li>Renamed coreboot*rom to libreboot*rom</li> - <li>Made flash, lenovobios_firstflash and lenovobios_secondflash scripts fail if the specified file does not exist.</li> - <li>Updated all relevant parts of the documentation to reflect the above.</li> - </ul> - </li> - <li>Replaced background.png with background.jpg. added gnulove.jpg. (resources/grub/background/)</li> - <li>Updated buildrom-withgrub to use background.jpg instead of background.png</li> - <li>Updated buildrom-withgrub to use gnulove.jpg aswell</li> - <li>Updated resources/grub/config/macbook21/grub*cfg to use gnulove.jpg background.</li> - <li>Updated resources/grub/config/{x60,t60,x60t}/grub*cfg to use background.jpg background.</li> - <li>Documentation: updated docs/index.html#grub_custom_keyboard to be more generally useful.</li> - <li> - nvramtool: - <ul> - <li>Updated builddeps-coreboot script to build it</li> - <li>Updated build script to include it in libreboot_bin</li> - </ul> - </li> - <li> - Documentation: added docs/security/x60_security.html (security hardening for X60) - </li> - </ul> - - <h2> - Revisions for 2nd beta (2014 July 16th) - </h2> - <ul> - <li> - Deleted all git-related files from the coreboot directory. This was necessary because - with those it is possible to run 'git diff' which shows the changes made in the form - of a patch (diff format); this includes the blobs that were deleted during deblobbing. - </li> - </ul> - - <h2> - Revisions for 1st beta (2014 July 11th) - </h2> - <ul> - <li>Initial release (new coreboot base, dated June 1st 2014. See 'getcb' script for reference)</li> - <li>DEBLOBBED coreboot</li> - <li>Removed the part from memtest86+ 'make' where it tried to connect to some scp server while compiling. (commented out line 24 in the Makefile)</li> - <li>X60 now uses a single .config (for coreboot)</li> - <li>X60 now uses a single grub.cfg (for grub memdisk)</li> - <li>X60 now uses a single grub.elf (payload)</li> - <li>Added new native graphics code for X60 (replaces the old 'replay' code) from Vladimir Serbinenko: 5320/9 from review.coreboot.org</li> - <li>T60 is now supported, with native graphics. (5345/4 from review.coreboot.org, cherry-picked on top of 5320/9 checkout)</li> - <li> - Added macbook2,1 support (from Mono Moosbart and Vladimir Serbinenko) from review.coreboot.org (see 'getcb' script to know how that was done) - <ul> - <li>Documentation: added information linking to correct page and talking about which models are supported.</li> - <li>Added resources/libreboot/config/macbook21config</li> - <li>macbook21: Added 'build-macbook21' script and linked to it in 'build' (ROMs included under bin/macbook21/)</li> - <li>macbook21: Removed dd instructions from build-macbook21 script (macbook21 does not need bucts when flashing libreboot while Apple EFI firmware is running)</li> - <li>Documentation: Added macbook21 ROMs to the list of ROMs in docs/index.html#rom</li> - <li>Documentation: Write documentation linking to Mono Moosbart's macbook21 and parabola page (and include a copy)</li> - </ul> - </li> - <li>Documentation: added a copy of Mono's Parabola install guide (for macbook21 with Apple EFI firmware) and linked in in main index.</li> - <li>Documentation: added a copy of Mono's Coreboot page (for macbook21) and linked it in main index.</li> - <li>T60: Copy CD option from the grub.cfg files for T60 *serial*.rom images into the grub configs for non-serial images. (T60s have CD/DVD drive on main laptop)</li> - <li>macbook21: remove options in build-macbook21 for *serial*.rom (there is no dock or serial port available for macbook21)</li> - <li> - Added patches for backlight controls on X60 and T60 with help from Denis Carikli (see ./resources/libreboot/patch/gitdiff and ./getcb and docs/i945_backlight.html) - <ul> - <li>Documentation: added docs/i945_backlight.html showing how backlight controls were made to work on X60/T60</li> - </ul> - </li> - <li> - Documentation: Added info about getting LCD panel name based on EDID data. - <ul> - <li>Documentation: Added a link to this from the list of supported T60s and LCD panels for T60 (so that the user can check what LCD panel they have).</li> - </ul> - </li> - <li> - X60/T60: Merged patches for 3D fix (from Paul Menzel) when using kernel 3.12 or higher (see ./resources/libreboot/patch/gitdiff and ./getcb) - <ul> - <li>based on 5927/11 and 5932/5 from review.coreboot.org</li> - </ul> - </li> - <li> - Improved thinkpad_acpi support (from coreboot ): xsensors shows more information. - <ul> - <li>From 4650/29 in review.coreboot.org (merged in coreboot 'master' on June 1st 2014)</li> - </ul> - </li> - <li> - Merged changes for digitizer (X60 Tablet) and IR (X60 and T60) based on 5243/17, 5242/17 and 5239/19 from review.coreboot.org - <ul> - <li>(see ./resources/libreboot/patch/gitdiff and ./getcb)</li> - </ul> - </li> - <li>Documentation: added information about building flashrom using 'builddeps-flashrom' script.</li> - <li>Re-created resources/libreboot/config/x60config</li> - <li>Re-created resources/libreboot/config/t60config</li> - <li> - Added 'x60tconfig' in resources/libreboot/config (because X60 Tablet has different information about serial/model/version in 'dmidecode') - <ul> - <li>Added 'build-x60t' script</li> - <li>Updated 'build' script to use 'build-x60t'</li> - <li>Documentation: added to #config section the section #config_x60t (libreboot configuration and dmidecode info)</li> - <li>Documentation: added x60t ROMs to the list of ROMs</li> - </ul> - </li> - <li>Tidied up the 'builddeps' script (easier to read)</li> - <li>Tidied up the 'cleandeps' script (easier to read)</li> - <li>Annotated the 'buildall' script</li> - <li>Added 'getcb' script for getting coreboot revision used from git, and patching it.</li> - <li>Added 'getgrub' script for getting the GRUB revision used from git, and patching it.</li> - <li>Added 'getmt86' script for getting the memtest86+ version used, and patching it.</li> - <li>Added 'getbucts' script for getting the bucts version used.</li> - <li>Added 'getflashrom' script for getting the flashrom version used, and patching it</li> - <li>Added 'getall' script which runs all of the other 'get' scripts.</li> - <li> - Add instructions to the 'build' script to prepare libreboot_meta.tar.gz - <ul> - <li>New archive: libreboot_meta.tar.gz - minimal archive, using the 'get' scripts to download all the dependencies (coreboot, memtest, grub and so on).</li> - </ul> - </li> - <li>Documentation: added information about where 'build' script prepares the libreboot_meta.tar.gz archive.</li> - <li> - Documentation: added information about how to use the 'get' scripts in libreboot_meta.tar.gz (to generate libreboot_src.tar.gz) - <ul> - <li>Documentation: mention that meta doesn't create libreboot_src/ directory, but that libreboot_meta itself becomes the same.</li> - <li>Documentation: advise to rename libreboot_meta to libreboot_src after running 'getall'.</li> - </ul> - </li> - <li>Annotated the 'builddeb' script, to say what each set of dependencies are for.</li> - <li>Separated bucts/flashrom builddeb sections into separate scripts: builddeb-flashrom, builddeb-bucts.</li> - <li>Documentation: Updated relevant parts based on the above.</li> - <li>Added instructions to 'build' script for including builddeb-bucts and builddeb-flashrom in libreboot_bin</li> - <li> - Updated flashrom checkout (r1822 2014-06-16) from SVN (http://flashrom.org/Downloads). - <ul> - <li>Updated flashing instructions in docs/index.html for new commands needed (Macronix chip on X60/T60)</li> - <li>For X60/T60 (flashrom): Patched flashchips.c_lenovobios_macronix and flashchips.c_lenovobios_sst executables for SST/macronix (included in resources/flashrom/patch)</li> - <li>Updated builddeps to build flashrom_lenovobios_sst and flashrom_lenovobios_macronix, for X60/T60 users with Lenovo BIOS</li> - <li>moved the flashrom build instructions from 'builddeps' and put them in 'builddeps-flashrom', excecuting that from 'builddeps'.</li> - <li>Added builddeps-flashrom to libreboot_bin.tar.gz</li> - </ul> - </li> - <li> - flashrom: added patched flashchips.c to resources/flashrom/patch (automatically use correct macronix chip on libreboot, without using '-c' switch) - <ul> - <li>removed 'MX25L1605' and 'MX25L1605A/MX25L1606E' entries in flashchips.c for the patched version of flashchips.c</li> - <li>added instructions to 'builddeps-flashrom' to automatically use this modified flashchips.c in the default build</li> - </ul> - </li> - <li>Added builddeb to libreboot_bin.tar.gz</li> - <li> - Moved 'bucts' build instructions from builddeps to builddeps-bucts - <ul> - <li>builddeps now runs 'builddeps-bucts' instead</li> - <li>Added 'builddeps-bucts' to libreboot_bin.tar.gz</li> - <li>Documentation: Added information about using 'builddep-bucts' to build the BUC.TS utility.</li> - </ul> - </li> - <li> - Added 'lenovobios_firstflash' and 'lenovobios_secondflash' scripts - <ul> - <li>Added instructions to 'build' script for including those files in libreboot_bin</li> - <li>Documentation: Add tutorial for flashing while Lenovo BIOS is running (on X60/T60)</li> - </ul> - </li> - <li> - Added 'flash' script (make sure to run builddeps-flashrom first) which (while libreboot is already running) can use flashrom to flash a ROM - <ul> - <li>eg: "sudo ./flash bin/x60/coreboot_serial_ukdvorak.rom" equivalent to "sudo ./flashrom/flashrom -p internal -w bin/x60/coreboot_uk_dvorak.rom"</li> - <li>updated 'build' script to include the 'flash' script in libreboot_bin.tar.gz</li> - </ul> - </li> - <li>Documentation: replaced default flashrom tutorial to recommend the 'flash' script instead.</li> - <li> - Re-add cbfstool source code back into libreboot_bin.tar.gz, as cbfstool_standalone - <ul> - <li>Patched that version to work (able to be built and used) without requiring the entire coreboot source code.</li> - <li> - Created patched version of the relevant source files and added it into resources/cbfstool/patch - <ul> - <li>see coreboot/util/cbfstool/rmodule.c and then the patched version in resources/cbfstool/patch/rmodule.c</li> - <li>see coreboot/src/include/rmodule-defs.h and the rule in 'build' for including this in ../libreboot_bin/cbfstool_standalone</li> - </ul> - </li> - <li>Added instructions to 'build' script for applying this patch to the cbfstool_standalone source in libreboot_bin</li> - <li>Added instructions to 'build' script for then re-compiling cbfstool_standalone in libreboot_bin after applying the patch</li> - <li>Added a 'builddeps-cbfstool' script (in src, but only used in bin and put in bin by 'build') that compiles cbfstool_standalone in libreboot_bin (make), moves the cbfstool and rmodtool binaries into libreboot_bin/ and then does 'make clean' in libreboot_bin/cbfstool_standalone</li> - <li>Updated the 'build' script to put 'builddeps-cbfstool' in libreboot_bin</li> - <li>Updated the 'build' script in the cbfstool (standalone) part to accomodate the above.</li> - <li>Documentation: added notes about cbfstool (standalone) in libreboot_bin</li> - </ul> - </li> - <li>Documentation: made docs/gnulinux/grub_cbfs.html slightly easier to follow.</li> - <li>Annotate the 'build*' scripts with 'echo' commands, to help the user understand what it actually happening during the build process.</li> - <li> - Documentation: added information about how 'dmidecode' data was put in the coreboot configs - <ul> - <li>Documentation: In fact, document how the 'config' files in resources/libreboot/config/ were created</li> - </ul> - </li> - <li>Documentation: Added information about which ThinkPad T60s are supported, and which are not.</li> - <li> - Documentation: added information about LCD inverters (for upgrading the LCD panel on a T60 14.1' XGA or 15.1' XGA) - <ul> - <li>it's FRU P/N 41W1478 (on T60 14.1") so this was added to the docs.</li> - <li>it's P/N 42T0078 FRU 42T0079 or P/N 41W1338 (on T60 15.1") so this was added to the docs.</li> - </ul> - </li> - <li>Documentation: added information about names of LCD panels for T60 to the relevant parts of the documentation.</li> - <li>Documentation: added information (with pictures) about the differences between T60 with Intel GPU and T60 with ATI GPU.</li> - <li>Documentation: added pictures of keyboard layouts (US/UK Qwerty/Dvorak) to the ROM list, to let the user compare with their own keyboard.</li> - <li> - Move the coreboot build instructions in 'builddeps' into 'builddeps-coreboot' and link it in 'builddeps' - <ul> - <li>Link to 'builddeps-coreboot' in final stage of 'getcb'</li> - </ul> - </li> - <li> - Move GRUB build instructions from 'builddeps' into 'builddeps-grub', link from 'builddeps' - <ul> - <li>Link to 'builddeps-grub' in final stage of 'getgrub'</li> - </ul> - </li> - <li> - Move MemTest86+ build instructions from 'builddeps' into 'builddeps-memtest86', link from 'builddeps' - <ul> - <li>Link to 'builddeps-memtest86' in final stage of 'getmt86'</li> - </ul> - </li> - <li>made 'build' script put resources/ directory in libreboot_bin, to make builddeps-flashrom work in libreboot_bin</li> - <li>Removed instructions for building source code in the 'get' script (they don't really belong there)</li> - <li>Added libfuse-dev and liblzma-dev to the list of GRUB dependencies in 'builddeb' script.</li> - <li>Converted the 'RELEASE' file to 'docs/RELEASE.html'</li> - <li>Added those dependencies to builddeb script (for GRUB part): gawk libdevmapper-dev libtool libfreetype6-dev</li> - <li>Added to build script the instruction at the end to create a sha512sum.txt with a file manifest plus checksums.</li> - <li>Deleted the RELEASE and BACKPORT files (no longer needed)</li> - <li> - Documentation: added information about X60/T60 dock (ultrabase x6 and advanced mini dock) to relevant sections. - <ul> - <li>Added to docs/index.html#serial</li> - </ul> - </li> - </ul> - - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> - - <h1 id="release5">5th release</h1> - - <ul> - <li>2014 March 7th</li> - <li>revised 2014 June 22nd</li> - </ul> - - <h2>Officially supported</h2> - <ul> - <li>ThinkPad X60</li> - <li>ThinkPad X60s</li> - </ul> - - <h2>Binaries (for flashing)</h2> - <ul> - <li><a href="http://libreboot.org/release/4/libreboot_bin.tar.gz">http://libreboot.org/release/4/libreboot_bin.tar.gz</a></li> - <li>sha512: 75aace225cb3f897cf4a64980c5b746727f9a64646a640692f475e7c37989c836f0fc071ec31c6e9a746133feda35b60b3df700a6331d600ecd65fe70646a124</li> - </ul> - - <h2>Source code (for hacking)</h2> - <ul> - <li><a href="http://libreboot.org/release/4/libreboot_src.tar.gz">http://libreboot.org/release/4/libreboot_src.tar.gz</a></li> - <li>sha512: a773462fd60b529f20e14a82281f962985579bd523c3e6c9ab8639f7a12da8f1ccb44a56c648b19de914a15d4490366222d0bbc80552e91419f2afecbddc10ae</li> - </ul> <p> - (gluglug.org.uk/X60/release/4/X60_source.tar.gz and gluglug.org.uk/X60/release/4/X60_binary.tar.gz were the old links, - but they no longer exist) + You should also be able to find it on a key server. Note: the above key is not for email. It is only for verifying the release archives. </p> - <h2>Development notes</h2> - <ul> - <li> - Binary archive now have 2 images: - <ul> - <li>With serial output enabled and memtest86+ included (debug level 8 in coreboot)</li> - <li>With serial output disabled and memtest86+ excluded (faster boot speeds) (debugging disabled)</li> - </ul> - </li> - <li> - Reduced impact on battery life: - <ul> - <li>'processor.max_cstate=2' instead of 'idle=halt' for booting default kernel</li> - </ul> - </li> - <li> - coreboot.rom (faster boot speeds, debugging disabled): - <ul> - <li>Disabled coreboot serial output (Console-> in "make menuconfig")</li> - <li>Set coreboot debug level to 0 instead of 8 (Console-> in "make menuconfig")</li> - <li>Changed GRUB timeout to 1 second instead of 2 (in grub.cfg</li> - <li>Removed background image in GRUB.</li> - <li>Removed memtest86+ payload (since it relies on serial output) - </ul> - </li> - <li> - coreboot_serial.rom (slower boot speeds, debugging enabled): - <ul> - <li>Boot time still reduced, but only by ~2 seconds</li> - <li>has the memtest86+ payload included in the ROM</li> - <li>has serial port enabled. How this is achieved (from X60_source): Turn on debugging level to 8, and enable serial output</li> - </ul> - </li> - <li>(in Console-> in coreboot "make menuconfig")</li> - <li>(and build with grub_serial.cfg and grub_memdisk_serial.cfg)</li> - </ul> - - <h2>Revision notes (2014 March 9th):</h2> - <ul> - <li>recreated coreboot config from scratch</li> - <li>GRUB loads even faster now (less than 2 seconds).</li> - <li>Total boot time reduced by further ~5 seconds.</li> - <li>Added crypto and cryptodisk modules to GRUB</li> - <li>cbfstool now included in the binary archives</li> - </ul> - - <h2>Revision notes (2014 June 5th):</h2> - <ul> - <li>added backlight support (Fn+Home and Fn+End) on X60</li> - <li>fixed broken/unstable 3D when using kernel 3.12 or higher</li> - <li>(see 'BACKPORT' file)</li> - </ul> - - <h2>Revision notes (2014 June 11th):</h2> - <ul> - <li>removed 'CD' boot option from coreboot.rom (not needed)</li> - <li>removed 'processor.max_cstate=2' and 'idle=halt' options (see README.powertop file)</li> - </ul> - - <h2>Revision notes (2014 June 22nd)</h2> - <ul> - <li>updated GRUB (git 4b8b9135f1676924a8458da528d264bbc7bbb301, April 20th 2014)</li> - <li>Made "DeJavu Sans Mono" the default font in GRUB (fixes border corruption).</li> - <li>re-added background image in GRUB (meditating GNU)</li> - <li> - added 6 more images: - <ul> - <li>coreboot_ukqwerty.rom (UK Qwerty keyboard layout in GRUB)</li> - <li>coreboot_serial_ukqwerty.rom (UK Qwerty keyboard layout in GRUB)</li> - <li>coreboot_dvorak.rom (US Dvorak keyboard layout in GRUB)</li> - <li>coreboot_serial_dvorak.rom (US Dvorak keyboard layout in GRUB)</li> - <li>coreboot_ukdvorak.rom (UK Dvorak keyboard layout in GRUB)</li> - <li>coreboot_serial_ukdvorak.rom (UK Dvorak keyboard layout in GRUB)</li> - <li>(coreboot.rom and coreboot_serial.rom have US Qwerty keyboard layout in GRUB, as usual)</li> - </ul> - </li> - <li> - improved the documentation: - <ul> - <li>removed FLASH_INSTRUCTION and README.powertop and merged them with README</li> - <li>removed obsolete info from README and tidied it up</li> - <li>deleted README (replaced with docs/index.html)</li> - </ul> - </li> - <li>tidied up the menu entries in GRUB</li> - <li>tidied up the root directory of X60_source/, sorted more files into subdirectories</li> - <li>added 'pkg-config' to the list of dependencies for building powertop on Trisquel</li> - <li>wrote a script (powertop.trisquel6) to automatically setup Powertop to run at boot time (for Trisquel 6 users)</li> - <li>improved the commenting inside the 'build' script (should make modifying it easier)</li> - <li>Renamed X60_binary.tar.gz and X60_source.tar.gz to libreboot_bin.tar.gz and libreboot_src.tar.gz, respectively.</li> - <li>Replaced "GNU GRUB version" with "FREE AS IN FREEDOM" on GNU GRUB start screen.</li> - <li>Added sha512.txt files in libreboot_src and libreboot_bin. (inside the archives)</li> - <li>Added libreboot_bin.tar.gz.sha512.txt and libreboot_src.tar.gz.sha512.txt files (outside of the archives)</li> - </ul> - - <h2>Revision (2014 June 22nd - extra)</h2> - <ul> - <li>Documentation: Improved the instructions for using flashrom</li> - <li>Documentation: Improved the instructions for using cbfstool (to change the default GRUB menu)</li> - <li>Documentation: Numerous small fixes.</li> - </ul> - - <h2>Revision (2014 June 22nd - extra)</h2> - <ul> - <li>Documentation: added X60 Unbricking tutorial</li> - <li>Documentation: added info about enabling or disabling wifi</li> - <li>Documentation: added info about enabling or disabling trackpoint</li> - </ul> - - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> - - <h1 id="release4">4th release</h1> - - <ul> - <li>2014 February 21st</li> - </ul> - - <h2>Officially supported</h2> - <ul> - <li>ThinkPad X60</li> - <li>ThinkPad X60s</li> - </ul> - - <h2>Binaries (for flashing)</h2> - <ul> - <li><a href="http://libreboot.org/release/ancient/3/X60_binary.tar.gz">http://libreboot.org/release/ancient/3/X60_binary.tar.gz</a></li> - </ul> + </div> + + <div class="section"> - <h2>Source code (for hacking)</h2> + <h2>Releases</h2> <ul> - <li><a href="http://libreboot.org/release/ancient/3/X60_source.tar.gz">http://libreboot.org/release/ancient/3/X60_source.tar.gz</a></li> + <li><a href="#release20150124">r20150124 (2015 January 24th)</a></li> + <li><a href="#release20141015">r20141015 (2014 October 15th)</a></li> + <li><a href="#release6">6th release</a> (2014 September 11th <b>pre-release, 7th beta</b>)</li> + <li><a href="#release5">5th release</a> (2014 March 7th, revised 2014 June 22nd)</li> + <li><a href="#release4">4th release</a> (2014 February 21st)</li> + <li><a href="#release3">3rd release</a> (2013 December 14th)</li> + <li><a href="#release2">2nd release</a> (2013 December 13th)</li> + <li><a href="#release1">1st release</a> (2013 December 12th)</li> </ul> + <p> + <b><i>"Release"</i></b> means that a new coreboot git revision with substantially different code has been adapted for libreboot. + </p> + <p> + <b><i>"Revision"</i></b> means a modification to an existing release, where the result is insubstantially different from what preceded it. + </p> + <p> + The 1st, 2nd, 3rd and 4th releases were really just older revisions of the 5th release. + For historical reasons (and to avoid confusion), these are still called 'releases' instead of correcting the mistake. + </p> + + </div> + + <div class="section"> - <h2>Development notes</h2> - <ul> - <li>Removed SeaBIOS (redundant)</li> - <li> - New GRUB version (2.02~beta2) - <ul> - <li>Fixes some USB issues</li> - <li>Includes ISOLINUX/SYSLINUX parser</li> - </ul> - </li> - <li>New grub.cfg</li> - <li> - Removed useless options: - <ul> - <li>options for booting sda 2/3/4</li> - <li>seabios boot option</li> - </ul> - </li> - <li> - Added new menu entries: - <ul> - <li>Parse ISOLINUX config (USB)</li> - <li>Parse ISOLINUX config (CD)</li> - <li>Added 'cat' module for use on GRUB command line.</li> - </ul> - </li> - <li>"set pager=1" is set in grub.cfg, for less-like functionality</li> - </ul> + <h1 id="release20150124">Release 20150124</h1> + <p> - The "Parse" options read ./isolinux/isolinux.cfg on a CD or USB, - and automatically converts it to a grub config and switches to the boot menu of that distro. - This makes booting ISOs *much* easier than before. + Release date: January 24th, 2015. </p> - <p><a href="#pagetop">Back to top of page.</a></p> + <h2>Binaries (right-click save as, or use wget)</h2> + <ul> + <li><a href="http://libreboot.org/release/20150124/libreboot_bin.tar.xz">http://libreboot.org/release/20150124/libreboot_bin.tar.xz</a></li> + <li><a href="http://libreboot.org/release/20150124/libreboot_bin.tar.xz.sig">http://libreboot.org/release/20150124/libreboot_bin.tar.xz.sig</a></li> + </ul> + <h2>Source code (right-click save as, or use wget)</h2> + <ul> + <li><a href="http://libreboot.org/release/20150124/libreboot_src.tar.xz">http://libreboot.org/release/20150124/libreboot_src.tar.xz</a></li> + <li><a href="http://libreboot.org/release/20150124/libreboot_src.tar.xz.sig">http://libreboot.org/release/20150124/libreboot_src.tar.xz.sig</a></li> + </ul> + + <p> + Installation instructions can be found at <a href="install/index.html#flashrom">install/index.html#flashrom</a>. + Building instructions (for source code) can be found at <a href="git/index.html#build">git/index.html#build</a>. + </p> + + <h2>Machines supported in this release:</h2> + <ul> + <li> + <b>Lenovo ThinkPad X60/X60s</b> + <ul> + <li> + You can also remove the motherboard from an X61/X61s and replace it with an X60/X60s motherboard. + An X60 Tablet motherboard will also fit inside an X60/X60s. + </li> + </ul> + </li> + <li> + <b>Lenovo ThinkPad X60 Tablet</b> (1024x768 and 1400x1050) with digitizer support + <ul> + <li>See <a href="hcl/index.html#supported_x60t_list">hcl/index.html#supported_x60t_list</a> for list of supported LCD panels</li> + <li>It is unknown whether an X61 Tablet can have it's mainboard replaced with an X60 Tablet motherboard.</li> + </ul> + </li> + <li> + <b>Lenovo ThinkPad T60</b> (Intel GPU) (there are issuesinstall/x200_external.html; see below): + <ul> + <li>See notes below for exceptions, and <a href="hcl/index.html#supported_t60_list">hcl/index.html#supported_t60_list</a> for known working LCD panels.</li> + <li>It is unknown whether a T61 can have it's mainboard replaced with a T60 motherboard.</li> + <li>See <a href="future/index.html#t60_cpu_microcode">future/index.html#t60_cpu_microcode</a>.</li> + <li>T60P (and T60 laptops with ATI GPU) will likely never be supported: <a href="hcl/index.html#t60_ati_intel">hcl/index.html#t60_ati_intel</a></li> + </ul> + </li> + <li> + <b>Lenovo ThinkPad X200</b> + <ul> + <li>X200S and X200 Tablet are also supported, conditionally; see <a href="hcl/x200.html">hcl/x200.html#x200s</a></li> + <li><b>ME/AMT</b>: libreboot removes this, permanently. <a href="hcl/x200_remove_me.html">hcl/x200_remove_me.html</a></li> + </ul> + </li> + <li> + <b>Apple MacBook1,1</b> (MA255LL/A, MA254LL/A, MA472LL/A) + <ul> + <li>See <a href="hcl/index.html#macbook11">hcl/index.html#macbook11</a>.</li> + </ul> + </li> + <li> + <b>Apple MacBook2,1</b> (MA699LL/A, MA701LL/A, MB061LL/A, MA700LL/A, MB063LL/A, MB062LL/A) + <ul> + <li>See <a href="hcl/index.html#macbook21">hcl/index.html#macbook21</a>.</li> + </ul> + </li> + </ul> + + <h2> + Changes for this release (latest changes first, earliest changes last) + </h2> + <ul> + <li>Documentation: added information about how to boot Guix GNU/Linux.</li> + <li>grub.cfg: Added (usb0) and (usb0,*) to the list of devices in the <i>Search for GRUB</i> menuentry (this is needed for Guix GNU/Linux)</li> + <li>grub.cfg: Added (ahci1) to list of devices for ISOLINUX parser (CD/DVD) (this is needed for the X200 docking station).</li> + <li>grub.cfg: ISOLINUX parsing is now done on all USB partitions.</li> + <li>grub.cfg: Automatically switched to /boot/grub/libreboot_grub.cfg on a partition, if it exists.</li> + <li>libreboot_bin: added static ARM binaries for flashrom, cbfstool, ich9gen and + ich9deblob (tested on beaglebone black).</li> + <li>Flashrom: removed redundant Macronix flashchip definitions (for X200 owners).</li> + <li>Flashrom: added whitelist for ThinkPad X200.</li> + <li>X200: fixed uneven backlight (at low levels)</li> + <li>ich9macchange (new script, uses ich9gen): for changing the default MAC address on X200 ROM images.</li> + <li>ich9gen: added capability to change the default MAC address (and update the checksum)</li> + <li>ich9deblob: added new utility ich9gen: this can generate a descriptor+gbe image without a factory.rom dump present.</li> + <li>Modified ich9deblob to use a struct for Gbe, documenting everything.</li> + <li>Massively updated the ich9deblob utility: re-factored everything completely.</li> + <li>Enabled cstates 1 and 2 on macbook21. This reduces idle heat / power consumption.</li> + <li>buildrom-withgrub: disabled creation of *txtmode*.rom for X200 (only framebuffer graphics work)</li> + <li>Updated SeaBIOS (again)</li> + <li>docs/install/index.html#flashrom_x200: improve instructions</li> + <li>Updated flashrom (again) - patches updated</li> + <li>Updated GRUB (again)</li> + <li>Updated coreboot (again)</li> + <li>build-release: not all files were copied to libreboot_src. fix that.</li> + <li>build-release: include cbmem (statically compiled) in libreboot_bin</li> + <li>Documentation (X200): added software-based flashing instructions</li> + <li>Documentation: remove all references to the bus pirate (replaced with BBB flashing tutorials)</li> + <li><b>New board:</b> ThinkPad X200S and X200 Tablet support added to libreboot</li> + <li>build: automatically find board names (configs) to build for</li> + <li><b>New board:</b> ThinkPad X200 support added to libreboot</li> + <li>coreboot-libre config (all boards): enable USB dongle log output (for BeagleBone Black)</li> + <li>cleandeps: actually clean grubinvaders</li> + <li>.gitignore: add powertop directory</li> + <li>cleandeps: clean i945-pwm utility</li> + <li>scripts (all): fix typos</li> + <li>Documentation: general cleanup.</li> + <li>builddeps-flashrom: reduce build commands to a single for loop</li> + <li>scripts (all): replace unnecessary rm -rf with rm -f</li> + <li>powertop.trisquel7: remove sudo (script already checks if the user is root)</li> + <li>docs/release.html: add lenovo g505s to the list of candidates</li> + <li>.gitignore: add libreboot_bin.tar.xz and libreboot_src.tar.xz</li> + <li> + libreboot_bin.tar.xz: Include utils as statically linked binaries + <ul> + <li>This means that the user does not have to install build dependency + or build from source anymore.</li> + </ul> + </li> + <li>deps-trisquel: Add binutils-source</li> + <li>powertop.trisquel7 (new): Setup powertop on trisquel 7</li> + <li>deps-trisquel,flash,lenovobios_firstflash,lenovobios_secondflash,macbook21_firstflash + x60flashfrom5,powertop.trisquel6: check if user is root</li> + <li>deps-trisquel: Make GRUB build on in Trisquel 7 x86_64. (cross compile dependencies. fixes build error in GRUB)</li> + <li>deps-parabola (removed) Remove Parabola dependencies script. Will re-add later (properly tested)</li> + <li>grub.cfg: Add more path checks to isolinux parser (more ISOs should work now)</li> + <li>Update SeaBIOS</li> + <li>x60flashfrom5 (new), for X60 users upgrading from 5th/early release</li> + <li>Update flashrom</li> + <li>Update GRUB</li> + <li> + Updated coreboot-libre + <ul> + <li>i945: permanently set tft_brightness to 0xff (fixes bug on X60 where + turning up brightness at max would make it loop back to low brightness)</li> + </ul> + </li> + <li> + getcb: Revert X60/T60 to legacy backlight controls + <ul> + <li>The ACPI brightness patches were abandoned and obsolete.</li> + </ul> + </li> + <li>grub.cfg: Only load initrd.img if it exists. Add rw to linux line (for ProteanOS)</li> + <li>build: Only generate the GRUB configurations once (re-use on all images)</li> + <li>Only build 2 GRUB payload executables, re-use on all boards.</li> + <li> + resources/utilities/grub-assemble/gen.txtmode.sh: Use GNU BASH<br/> + resources/utilities/grub-assemble/gen.vesafb.sh: Use GNU BASH + </li> + <li>scripts (error handling): Replace exit with exit 1 (make debugging easier)</li> + <li> + Move most files in CBFS to GRUB memdisk, except grub.cfg and grubtest.cfg + <ul> + This reduces the space used in CBFS because coreboot compresses + its payloads with LZMA by default. grub.cfg is all that most users + will want to modify, which remains in CBFS. + </ul> + </li> + <li>docs/release.html Add DMP vortex86ex to list of candidates.</li> + <li>docs/release.html Add ThinkPad X201 to list of candidates.</li> + <li>New links added to docs/security/x60_security and docs/security/t60_security</li> + <li>lenovobios_secondflash: Warn if BUCTS is not present. (not a dealbreaker. Can just pull out nvram battery/coin).</li> + <li>lenovobios_firstflash: Fail if BUCTS fails. (anti-bricking precaution)</li> + <li>Removed obnoxious warnings from flashing scripts, improved documentation instead.</li> + <li>scripts (all): add proper error checking (fail fast, fail early. Do not continue if there are errors)</li> + <li>buildrom-withgrub: rename image to boardname_layout_romtype.rom</li> + <li>buildrom-withgrub: don't move cbfstool, execute directly</li> + <li>resources/utilities/grub-assemble: add French Dvorak (BEPO) keyboard layout.</li> + <li>Documentation: add docs/hardware/x60_keyboard.html (show how to replace keyboard on X60/X60T)</li> + <li>Documentation: major cleanup (better structure, easier to find things)</li> + <li> + docs/release.html: Remove Acer CB5 from list of future candidates. + <ul> + <li> + Too many issues. Chromebooks are crippled (soldered RAM/storage/wifi) + and have too many usability issues for the libreboot project. + </li> + </ul> + </li> + <li>docs/gnulinux/grub_cbfs.html Major cleanup. Usability improvements.</li> + <li>hocs/gnulinux/encrypted_trisquel.html: Fixed mistakes/typos. General improvements</li> + <li> + flash (flashrom script): remove boardmismatch=force + <ul> + <li> + This was put there before for users upgrading from libreboot r5 + to r6, but also allows the user to flash the wrong image. For + example, the user could flash a T60 image on an X60, thus + bricking the machine. It's almost certain that most people + have upgraded by now, so remove this potentially dangerous + option. + </li> + </ul> + </li> + <li>Documentation: update compatibility list for X60T LCD panels.</li> + <li>docs/release.html: add note about X60 Tablet board in X60/X60s</li> + <li>docs/howtos/grub_boot_installer.html: small corrections</li> + <li>docs/howtos/grub_boot_installer.html: improved readability, fixed html errors</li> + <li>Documentation (macbook21 related): clean up</li> + </ul> + + </div> -<hr/> + <div class="section"> + + <h1 id="release20141015">Release 20141015</h1> + + <h2>Binaries (right-click save as, or use wget)</h2> + <ul> + <li><a href="http://libreboot.org/release/20141015/libreboot_bin.tar.xz">http://libreboot.org/release/20141015/libreboot_bin.tar.xz</a></li> + <li><a href="http://libreboot.org/release/20141015/libreboot_bin.tar.xz.sig">http://libreboot.org/release/20141015/libreboot_bin.tar.xz.sig</a></li> + </ul> + <h2>Source code (right-click save as, or use wget)</h2> + <ul> + <li><a href="http://libreboot.org/release/20141015/libreboot_src.tar.xz">http://libreboot.org/release/20141015/libreboot_src.tar.xz</a></li> + <li><a href="http://libreboot.org/release/20141015/libreboot_src.tar.xz.sig">http://libreboot.org/release/20141015/libreboot_src.tar.xz.sig</a></li> + </ul> + + <p> + Installation instructions can be found at <a href="install/index.html#flashrom">install/index.html#flashrom</a>. + Building instructions (for source code) can be found at <a href="git/index.html#build">git/index.html#build</a>. + </p> + + <h2>Machines supported in this release:</h2> + <ul> + <li> + <b>Lenovo ThinkPad X60/X60s</b> + <ul> + <li> + You can also remove the motherboard from an X61/X61s and replace it with an X60/X60s motherboard. + An X60 Tablet motherboard will also fit inside an X60/X60s. + </li> + </ul> + </li> + <li> + <b>Lenovo ThinkPad X60 Tablet</b> (1024x768 and 1400x1050) with digitizer support + <ul> + <li>See <a href="hcl/index.html#supported_x60t_list">hcl/index.html#supported_x60t_list</a> for list of supported LCD panels</li> + <li>It is unknown whether an X61 Tablet can have its mainboard replaced with an X60 Tablet motherboard.</li> + </ul> + </li> + <li> + <b>Lenovo ThinkPad T60</b> (Intel GPU) (there are issues; see below): + <ul> + <li>See notes below for exceptions, and <a href="hcl/index.html#supported_t60_list">hcl/index.html#supported_t60_list</a> for known working LCD panels.</li> + <li>It is unknown whether a T61 can have its mainboard replaced with a T60 motherboard.</li> + <li>See <a href="future/index.html#t60_cpu_microcode">future/index.html#t60_cpu_microcode</a>.</li> + <li>T60P (and T60s with ATI GPU) will likely never be supported: <a href="hcl/index.html#t60_ati_intel">hcl/index.html#t60_ati_intel</a></li> + </ul> + </li> + <li> + <b>Apple MacBook1,1</b> (MA255LL/A, MA254LL/A, MA472LL/A) + <ul> + <li>See <a href="hcl/index.html#macbook11">hcl/index.html#macbook11</a>.</li> + </ul> + </li> + <li> + <b>Apple MacBook2,1</b> (MA699LL/A, MA701LL/A, MB061LL/A, MA700LL/A, MB063LL/A, MB062LL/A) + <ul> + <li>See <a href="hcl/index.html#macbook21">hcl/index.html#macbook21</a>.</li> + </ul> + </li> + </ul> + + <h2> + Changes for this release (latest changes first, earliest changes last) + </h2> + <ul> + <li>Updated coreboot (git commit 8ffc085e1affaabbe3dca8ac6a89346b71dfc02e), the latest at the time of writing.</li> + <li>Updated SeaBIOS (git commit 67d1fbef0f630e1e823f137d1bae7fa5790bcf4e), the latest at the time of writing.</li> + <li>Updated Flashrom (svn revision 1850), the latest at the time of writing.</li> + <li>Updated GRUB (git commit 9a67e1ac8e92cd0b7521c75a734fcaf2e58523ad), the latest at the time of writing.</li> + <li>Cleaned up the documentation, removed unneeded files.</li> + <li>ec/lenovo/h8 (x60/x60s/x60t/t60): Enable wifi/bluetooth/wwan/touchpad/trackpoint by default.</li> + <li>Documentation: Updated list of T60 LCDs (Samsung LTN150XG 15" XGA listed as non-working).</li> + <li>builddeps-coreboot: Don't build libpayload (not needed. This was leftover by mistake, when trying out the TINT payload).</li> + <li>Replaced most diff files (patches) for coreboot with gerrit checkouts (cherry-pick).</li> + <li>Documentation: x60_security.html and t60_security.html: added links to info about the ethernet controller (Intel 82573).</li> + <li>Documentation: x60_security.html and t60_security.html: added notes about DMA and the docking station.</li> + <li> + Documentation: configuring_parabola.html: basic post-install steps for Parabola GNU/Linux + (helpful, since libreboot development is being moved to Parabola at the time of writing). + </li> + <li>builddeps-coreboot: use 'make crossgcc-i386' instead of 'make crossgcc'. Libreboot only targets x86 at the time of writing.</li> + <li>ROM images no longer include SeaBIOS. Instead, the user adds it afterwards. Documentation and scripts updated.</li> + <li>docs/images/encrypted_parabola.html: Notes about linux-libre-grsec</li> + <li>Documentation: encrypted_parabola.html: add tutorial for encrypted Parabola GNU/Linux installation.</li> + <li>Documentation: added more info about wifi chipsets</li> + </ul> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> - <h1 id="release3">3rd release</h1> + <div class="section"> - <ul> - <li>2013 December 14th</li> - </ul> + <h1 id="release6">6th release (pre-release, 7th beta)</h1> - <h2>Supported:</h2> <ul> - <li>ThinkPad X60</li> - <li>ThinkPad X60s</li> + <li>Released 2014 July 11th (pre-release) 1st beta</li> + <li>Revised (pre-release, 2nd beta) 2014 July 16th</li> + <li>Revised (pre-release, 3rd beta) 2014 July 20th</li> + <li>Revised (pre-release, 4th beta) 2014 July 29th</li> + <li>Revised (pre-release, 5th beta) 2014 August 11th (corrected 2014 August 11th)</li> + <li>Revised (pre-release, 6th beta) 2014 September 3rd</li> + <li>Revised (pre-release, 7th beta) 2014 September 11th</li> </ul> - <h2>Binaries (for flashing)</h2> - <ul> - <li><a href="http://libreboot.org/release/ancient/2/X60_binary.tar.gz">http://libreboot.org/release/ancient/2/X60_binary.tar.gz</a></li> - </ul> + <h2>Binaries (for flashing) (right-click save as, or use wget)</h2> + <ul> + <li><a href="http://libreboot.org/release/5/prerelease_beta7/libreboot_bin.tar.xz">http://libreboot.org/release/5/prerelease_beta7/libreboot_bin.tar.xz</a></li> + <li><a href="http://libreboot.org/release/5/prerelease_beta7/libreboot_bin.tar.xz.sig">http://libreboot.org/release/5/prerelease_beta7/libreboot_bin.tar.xz.sig</a></li> + </ul> + <h2>Source code (for hacking) (right-click save as, or use wget)</h2> + <ul> + <li><a href="http://libreboot.org/release/5/prerelease_beta7/libreboot_src.tar.xz">http://libreboot.org/release/5/prerelease_beta7/libreboot_src.tar.xz</a></li> + <li><a href="http://libreboot.org/release/5/prerelease_beta7/libreboot_src.tar.xz.sig">http://libreboot.org/release/5/prerelease_beta7/libreboot_src.tar.xz.sig</a></li> + </ul> + + <h2>Machines still supported (compared to previous release):</h2> + <ul> + <li> + <b>Lenovo ThinkPad X60/X60s</b> + <ul> + <li> + You can also remove the motherboard from an X61/X61s and replace it with an X60/X60s motherboard. + </li> + </ul> + </li> + </ul> + <h2>New machines supported in this release:</h2> + <ul> + <li> + <b>Lenovo ThinkPad X60 Tablet</b> (1024x768 and 1400x1050) with digitizer support + <ul> + <li>See <a href="hcl/index.html#supported_x60t_list">hcl/index.html#supported_x60t_list</a> for list of supported LCD panels</li> + <li>It is unknown whether an X61 Tablet can have its mainboard replaced with an X60 Tablet motherboard.</li> + </ul> + </li> + <li> + <b>Lenovo ThinkPad T60</b> (Intel GPU) (there are issues; see below) + <ul> + <li>See notes below for exceptions, and <a href="hcl/index.html#supported_t60_list">hcl/index.html#supported_t60_list</a> for known working LCD panels.</li> + <li>It is unknown whether a T61 can have its mainboard replaced with a T60 motherboard.</li> + <li>T60P (and T60s with ATI GPU) will likely never be supported: <a href="hcl/index.html#t60_ati_intel">hcl/index.html#t60_ati_intel</a></li> + </ul> + </li> + <li> + <b>Apple MacBook1,1</b> (MA255LL/A, MA254LL/A, MA472LL/A) + <ul> + <li>See <a href="hcl/index.html#macbook11">hcl/index.html#macbook11</a>.</li> + </ul> + </li> + <li> + <b>Apple MacBook2,1</b> (MA699LL/A, MA701LL/A, MB061LL/A, MA700LL/A, MB063LL/A, MB062LL/A) + <ul> + <li>See <a href="hcl/index.html#macbook21">hcl/index.html#macbook21</a>.</li> + </ul> + </li> + </ul> + <h2>Machines no longer supported (compared to previous release):</h2> + <ul> + <li><b>All previous machines still supported!</b></li> + </ul> + + <h2> + Revisions for 7th beta (2014 September 11th) + </h2> + <ul> + <li>The changes below were made in a git repository, unlike in previous releases. Descriptions below are copied from 'git log'.</li> + <li>Update .gitignore for new dependencies.</li> + <li>Use a submodule for i945-pwm.</li> + <li>Don't clean packages that fail or don't need cleaning.</li> + <li>Don't clean i945-pwm, it's not needed.</li> + <li>Regression fix: Parabola live ISO boot issues</li> + <li>Re-enable background images in ISOLINUX/SYSLINUX GRUB parser menus</li> + <li>Regression fix: Re-add CD-ROM (ata0) in GRUB</li> + <li>Documentation: add notes about performance penalty when using ecryptfs.</li> + <li>Documentation: Fixed spelling and grammatical errors.</li> + <li>Documentation: macbook21: add new machine as tested</li> + <li>Documentation: macbook21: add info about improving touchpad sensitivity</li> + <li>Documentation: X60 Tablet: add more information about finger input</li> + <li>Documentation: release.html: Add information about recently merged commit in coreboot</li> + </ul> + + <h2> + Revisions for 6th beta (2014 September 3rd) + </h2> + <ul> + <li>Added modified builddeb* scripts for Parabola GNU/Linux-libre: buildpac, buildpac-flashrom, buildpac-bucts (courtesy of Noah Vesely)</li> + <li>Documentation: updated all relevant areas to mention use of buildpac* scripts for Parabola users.</li> + <li>Documentation: added information showing how to enable or disable bluetooth on the X60</li> + <li>MacBook1,1 tested! See <a href="hcl/index.html#macbook11">hcl/index.html#macbook11</a></li> + <li>Documentation: fixed typo in index.html#get_edid_panelname (get-edit changed to get-edid)</li> + <li>Documentation: added images/x60_lcd_change/ (pics only for now)</li> + <li>Added gcry_serpent and gcry_whirlpool to the GRUB module list in the 'build' script (for luks users)</li> + <li> + <b>Libreboot is now based on a new coreboot version from August 23rd, 2014:<br/> + Merged commits (relates to boards that were already supported in libreboot):</b> + <ul> + <li><a href="http://review.coreboot.org/#/c/6697/">http://review.coreboot.org/#/c/6697/</a></li> + <li><a href="http://review.coreboot.org/#/c/6698/">http://review.coreboot.org/#/c/6698/</a> (merged already)</li> + <li><a href="http://review.coreboot.org/#/c/6699/">http://review.coreboot.org/#/c/6699/</a> (merged already)</li> + <li><a href="http://review.coreboot.org/#/c/6696/">http://review.coreboot.org/#/c/6696/</a> (merged already)</li> + <li><a href="http://review.coreboot.org/#/c/6695/">http://review.coreboot.org/#/c/6695/</a> (merged already)</li> + <li><b><a href="http://review.coreboot.org/#/c/5927/">http://review.coreboot.org/#/c/5927/</a> (merged already)</b></li> + <li><a href="http://review.coreboot.org/#/c/6717/">http://review.coreboot.org/#/c/6717/</a> (merged already)</li> + <li><a href="http://review.coreboot.org/#/c/6718/">http://review.coreboot.org/#/c/6718/</a> (merged already)</li> + <li> + <a href="http://review.coreboot.org/#/c/6723/">http://review.coreboot.org/#/c/6723/</a> (merged already) + (text-mode patch, might enable memtest. macbook21) + </li> + <li> + <a href="http://review.coreboot.org/#/c/6732/">http://review.coreboot.org/#/c/6732/</a> (MERGED) + (remove useless ps/2 keyboard delay from macbook21. already merged) + </li> + </ul> + </li> + <li> + These were also merged in coreboot (relates to boards that libreboot already supported): + <ul> + <li><a href="http://review.coreboot.org/#/c/5320/">http://review.coreboot.org/#/c/5320/</a> (merged)</li> + <li><a href="http://review.coreboot.org/#/c/5321/">http://review.coreboot.org/#/c/5321/</a> (merged)</li> + <li><a href="http://review.coreboot.org/#/c/5323/">http://review.coreboot.org/#/c/5323/</a> (merged)</li> + <li><a href="http://review.coreboot.org/#/c/6693/">http://review.coreboot.org/#/c/6693/</a> (merged)</li> + <li><a href="http://review.coreboot.org/#/c/6694/">http://review.coreboot.org/#/c/6694/</a> (merged)</li> + <li><a href="http://review.coreboot.org/#/c/5324/">http://review.coreboot.org/#/c/5324/</a> (merged)</li> + </ul> + </li> + <li>Documentation: removed the section about tft_brightness on X60 (new code makes it obsolete)</li> + <li>Removed all patches from resources/libreboot/patch/ and added new patch: 0000_t60_textmode.git.diff</li> + <li>Updated getcb script and DEBLOB script.</li> + <li>Updated configuration files under resources/libreboot/config/ to accomodate new coreboot version.</li> + <li> + Removed grub_serial*.cfg and libreboot_serial*.rom, all configs/rom files are now unified (containing same configuration as serial rom files from before). + <ul> + <li>Documentation: updated index.html#rom to reflect the above.</li> + </ul> + </li> + <li>Updated GRUB to new version from August 14th, 2014.</li> + <li>Unified all grub configurations for all machines to a single grub.cfg under resources/grub/config/</li> + <li>Updated flashrom to new version from August 20th, 2014</li> + <li> + Added getseabios and builddeps-seabios (builddeps and getall were also updated) + <ul> + <li> + Added instructions to 'buildrom-withgrub' to include bios.bin.elf and vgaroms/vgabios.bin from SeaBIOS inside the ROM. + </li> + </ul> + </li> + <li>Added seabios (and sgavgabios) to grub as payload option in menu</li> + <li> + Disabled serial output in Memtest86+ (no longer needed) to speed up tests. + <ul> + <li>MemTest86+ now works properly, it can output on the laptop screen (no serial port needed anymore).</li> + </ul> + </li> + <li> + Added getgrubinvaders, builddeps-grubinvaders scripts. Added these to getall and builddeps. + <ul> + <li> + Added <a href="http://www.coreboot.org/GRUB_invaders">GRUB Invaders</a> menu entry in resources/grub/config/grub.cfg + </li> + </ul> + </li> + <li>Added rules to builddeps-coreboot to build libpayload with TinyCurses. (added appropriate instructions to cleandeps script).</li> + <li>Commented out lines in resources/grub/config/grub.cfg for loading font/background (not useful anymore, now that GRUB is in text-mode).</li> + <li>Commented out lines in buildrom-withgrub that included backgrounds/fonts (not useful anymore, now that GRUB is in text-mode).</li> + <li> + Added resources/utilities/i945-pwm/ (from git://git.mtjm.eu/i945-pwm), for debugging acpi brightness on i945 machines. + <ul> + <li>Added instructions for it in builddeps, builddeps-i945pwm, builddeb and cleandeps</li> + </ul> + </li> + <li>'build' script: removed the parts that generated sha512sum manifests (not needed, since release tarballs are GPG-signed)</li> + <li> + 'build' script: removed the parts that generated libreboot_meta directory (not needed anymore, since _meta will be hosted in git) + <ul> + <li>Updated index.html#build_meta (and other parts of documentation) to accomodate this change.</li> + </ul> + </li> + <li>Documentation: simplified (refactored) the notes in index.html#rom</li> + <li> + 'build' script: removed the parts that generated libreboot_bin and added them to a new script: 'build-release' + <ul> + <li>Documentation: index.html#build updated to reflect the above.</li> + </ul> + </li> + <li>Removed 'sudo' from builddeb, builddeb-flashrom, powertop.trisquel6 and builddeb-bucts scripts (assuming that the user has it is a really bad idea).</li> + <li><s>Added all gcry_* modules to grub (luks/cryptomount): gcry_arcfour gcry_camellia gcry_crc gcry_dsa gcry_md4 gcry_rfc2268 gcry_rmd160 gcry_seed gcry_sha1 gcry_sha512 gcry_twofish gcry_blowfish gcry_cast5 gcry_des gcry_idea gcry_md5 gcry_rijndael gcry_rsa gcry_serpent gcry_sha256 gcry_tiger gcry_whirlpool</s></li> + <li>Added GNUtoo's list of GRUB modules (includes all of the gcry_* modules above), cryptomount should be working now.</li> + <li>Removed builddeb-bucts and builddeb-flashrom, merged them with builddeb (index.html updated accordingly)</li> + <li>Removed buildpac-bucts and buildpac-flashrom, merged them with buildpac (index.html updated accordingly)</li> + <li>Renamed builddeb to deps-trisquel (index.html updated accordingly)</li> + <li>Renamed buildpac to deps-parabola (index.html updated accordingly)</li> + <li>Documentation: removed all parts talking about build dependencies, replaced them with links to index.html#build_dependencies</li> + <li>Documentation: emphasized more strongly on the documentation, the need to re-build bucts and/or flashrom before flashing a ROM image.</li> + <li>build-release: flashrom, nvramtool, cbfstool and bucts are no longer provided pre-compiled in binary archives, and are now in source form only. (to maximize distro compatibility).</li> + <li>Documentation: added gnulinux/encrypted_trisquel.html showing how to setup a fully encrypted Trisquel installation (including /boot) and boot it from the GRUB payload.</li> + <li>'build' script: replaced grub.elf assembly instructons, it is now handled by a utility added under resources/utilities/grub-assemble</li> + <li>Moved resources/grub/keymap to resources/utilities/grub-assemble/keymap, and updated that utility to use it</li> + <li>Documentation: removed useless links to pictures of keyboard layouts and unmodified layouts.</li> + <li>Removed all unused fonts from dejavu-fonts-ttf-2.34/ directory</li> + <li>'buildrom-withgrub' script: updated it to create 2 sets of ROMs for each machine: one with text-mode, one with coreboot framebuffer.</li> + <li>Documentation: updated index.html#rom to reflect the above</li> + <li>Deleted unused README and COPYING file from main directory</li> + <li>Removed some rm -rf .git* instructions from the get* scripts and moved them to build-release script</li> + <li> + Split up default grub.cfg into 6 parts: extra/{common.cfg,txtmode.cfg,vesafb.cfg} and menuentries/{common.cfg,txtmode.cfg,vesafb.cfg} + <ul> + <li>buildrom-withgrub script uses these to generate the correct grub.cfg for each type of configuration.</li> + </ul> + </li> + <li>grub_memdisk.cfg (used inside grub.elf) now only loads grub.cfg from cbfs. It no longer enables serial output or sets prefix. (menuentries/common.cfg does instead)</li> + <li> + resources/grub/config/extra/common.cfg, added: + <ul> + <li>insmod instructions to load those modules: nativedisk, ehci, ohci, uhci, usb, usbserial_pl2303, usbserial_ftdi, usbserial_usbdebug</li> + <li>set prefix=(memdisk)/boot/grub</li> + <li> + For native graphics (recommended by coreboot wiki):<br/> + gfxpayload=keep<br/> + terminal_output --append gfxterm + </li> + <li> + Play a beep on startup:<br/> + play 480 440 1 + </li> + </ul> + </li> + <li> + Documentation: added note about 'fb=false' workaround for text-mode debian-installer (Trisquel net install) to + gnulinux/grub_boot_installer.html + </li> + <li> + Documentation: updated gnulinux/grub_cbfs.html to make it safer (and easier) to follow. + </li> + </ul> + + <h2> + Corrections to 5th beta (2014 August 2014) + </h2> + <ul> + <li>Fixed typo where revision list for 5th beta was listed as March 11th 2014, when in fact it was August 11th 2014</li> + <li>Fixed incorrect grub.cfg that was actually placed in resources/grub/config/x60/grub_usqwerty.cfg which broke the default GRUB menu entry on X60</li> + </ul> + + <h2> + Revisions for 5th beta (2014 August 11th) + </h2> + <ul> + <li>build: added 'luks', 'lvm', 'cmosdump' and 'cmostest' to the list of modules for grub.elf</li> + <li>Documentation: added pics showing T60 unbricking (still need to write a tutorial)</li> + <li>build: include cmos.layout (coreboot/src/mainboard/manufacturer/model/cmos.layout) files in libreboot_bin</li> + <li>Documentation: added <a href="install/x60tablet_unbrick.html">install/x60tablet_unbrick.html</a></li> + <li>Documentation: added <a href="install/t60_unbrick.html">install/t60_unbrick.html</a></li> + <li>Documentation: added <a href="hardware/t60_lcd_15.html">install/t60_lcd_15.html</a></li> + <li>Documentation: added <a href="security/t60_security.html">install/t60_security.html</a></li> + <li>Documentation: added <a href="hardware/t60_heatsink.html">install/t60_heatsink.html</a></li> + <li>Documentation: Renamed RELEASE.html to release.html</li> + <li>Documentation: removed pcmcia reference in x60_security.html (it's cardbus)</li> + <li>Documentation: added preliminary information about randomized seal (for physical intrusion detection) in x60_security.html and t60_security.html</li> + <li>Documentation: added preliminary information about preventing/mitigating cold-boot attack in x60_security.html and t60_security.html</li> + <li>Documentation: added info to index.html#macbook21 warning about issues with macbook21</li> + <li> + Documentation: X60/T60: added information about checking custom ROMs using dd to see whether or not the top 64K + region is duplicated below top or not. Advise caution about this in the tutorial that deals with flashing on top + of Lenovo BIOS, citing the correct dd commands necessary if it is confirmed that the ROM has not been applied with + dd yet. (in the case that the user compiled their own ROMs from libreboot, without using the build scripts, or if they forgot to use dd, etc). + </li> + <li> + Split resources/libreboot/patch/gitdiff into separate patch files (getcb script updated to accomodate this change). + </li> + <li>Re-added .git files to bucts</li> + <li>Fixed the oversight where macbook21_firstflash wasn't included in binary archives</li> + <li>Release archives are now compressed using .tar.xz for better compression</li> + </ul> + + <h2> + Revisions for 4th beta (2014 July 29th) + </h2> + <ul> + <li>Documentation: improved (more explanations, background info) in docs/security/x60_security.html (courtesy of Denis Carikli)</li> + <li>MacBook2,1 tested (confirmed)</li> + <li>macbook21: Added script 'macbook21_firstflash' for flashing libreboot while Apple EFI firmware is running.</li> + <li>Documentation: macbook21: added software-based flashing instructions for flashing libreboot while Apple EFI firmware is running.</li> + <li> + Reduced size of libreboot_src.tar.gz: + <ul> + <li> + Removed .git and .gitignore from grub directory (libreboot_src); not needed. + Removing them reduces the size of the archive (by a lot). GRUB development should be upstream. + </li> + <li> + Removed .git and .gitignore from bucts directory (libreboot_src); not needed. + Removing them reduces the size of the archive. bucts development should be upstream. + </li> + <li> + Removed .svn from flashrom directory (libreboot_src); not needed. + Removing it reduces the size of the archive. flashrom development should be upstream. + </li> + </ul> + </li> + <li> + Added ROMs with Qwerty (Italian) layout in GRUB (libreboot*itqwerty.rom) + </li> + <li> + Added resources/utilities/i945gpu/intel-regs.py for debugging issues related to LCD panel compatibility on X60 Tablet and T60. (courtesy of <a href="http://mtjm.eu">MichaÅ‚ MasÅ‚owski</a>) + </li> + </ul> + + <h2> + Revisions for 3rd beta (2014 July 20th) + </h2> + <ul> + <li> + Fixed typo that existed in 2nd beta where the release date of the 2nd beta was listed as being in year 2016, when in actual fact it was 2014. + </li> + <li> + Documentation: added (preliminary) details about (rare) buggy CPUs on the ThinkPad T60 that were found to fail (instability, kernel panics, etc) + without the microcode updates. + </li> + <li>Documentation: added docs/hardware/x60_heatsink.html for showing how to change the heatsink on the Thinkpad X60</li> + <li>Added ROM images for Azerty (French) keyboard layout in GRUB (courtesy of Olivier Mondoloni)</li> + <li> + Tidied up some scripts: + <ul> + <li><s>Re-factored those scripts (made easier to read/maintain): build-x60, build-x60t, build-t60, build-macbook21</s></li> + <li><s>Reduced the number of grub configs to 2 (or 1, for macbook21), the build scripts now generate the other configs at build time.</s></li> + <li>Deleted build-x60, build-x60t, build-t60, build-macbook21 and replaced with intelligent (generic) buildrom-withgrub script</li> + <li>Updated build to use buildrom-withgrub script for building the ROM images.</li> + <li>coreboot.rom and coreboot_serial.rom renamed to coreboot_usqwerty.rom and coreboot_serial_usqwerty.rom</li> + <li>coreboot_dvorak and coreboot_serial_dvorak.rom renamed to coreboot_usdvorak.rom and coreboot_serial_usdvorak.rom</li> + <li>Renamed coreboot*rom to libreboot*rom</li> + <li>Made flash, lenovobios_firstflash and lenovobios_secondflash scripts fail if the specified file does not exist.</li> + <li>Updated all relevant parts of the documentation to reflect the above.</li> + </ul> + </li> + <li>Replaced background.png with background.jpg. added gnulove.jpg. (resources/grub/background/)</li> + <li>Updated buildrom-withgrub to use background.jpg instead of background.png</li> + <li>Updated buildrom-withgrub to use gnulove.jpg aswell</li> + <li>Updated resources/grub/config/macbook21/grub*cfg to use gnulove.jpg background.</li> + <li>Updated resources/grub/config/{x60,t60,x60t}/grub*cfg to use background.jpg background.</li> + <li>Documentation: updated docs/index.html#grub_custom_keyboard to be more generally useful.</li> + <li> + nvramtool: + <ul> + <li>Updated builddeps-coreboot script to build it</li> + <li>Updated build script to include it in libreboot_bin</li> + </ul> + </li> + <li> + Documentation: added docs/security/x60_security.html (security hardening for X60) + </li> + </ul> + + <h2> + Revisions for 2nd beta (2014 July 16th) + </h2> + <ul> + <li> + Deleted all git-related files from the coreboot directory. This was necessary because + with those it is possible to run 'git diff' which shows the changes made in the form + of a patch (diff format); this includes the blobs that were deleted during deblobbing. + </li> + </ul> + + <h2> + Revisions for 1st beta (2014 July 11th) + </h2> + <ul> + <li>Initial release (new coreboot base, dated June 1st 2014. See 'getcb' script for reference)</li> + <li>DEBLOBBED coreboot</li> + <li>Removed the part from memtest86+ 'make' where it tried to connect to some scp server while compiling. (commented out line 24 in the Makefile)</li> + <li>X60 now uses a single .config (for coreboot)</li> + <li>X60 now uses a single grub.cfg (for grub memdisk)</li> + <li>X60 now uses a single grub.elf (payload)</li> + <li>Added new native graphics code for X60 (replaces the old 'replay' code) from Vladimir Serbinenko: 5320/9 from review.coreboot.org</li> + <li>T60 is now supported, with native graphics. (5345/4 from review.coreboot.org, cherry-picked on top of 5320/9 checkout)</li> + <li> + Added macbook2,1 support (from Mono Moosbart and Vladimir Serbinenko) from review.coreboot.org (see 'getcb' script to know how that was done) + <ul> + <li>Documentation: added information linking to correct page and talking about which models are supported.</li> + <li>Added resources/libreboot/config/macbook21config</li> + <li>macbook21: Added 'build-macbook21' script and linked to it in 'build' (ROMs included under bin/macbook21/)</li> + <li>macbook21: Removed dd instructions from build-macbook21 script (macbook21 does not need bucts when flashing libreboot while Apple EFI firmware is running)</li> + <li>Documentation: Added macbook21 ROMs to the list of ROMs in docs/index.html#rom</li> + <li>Documentation: Write documentation linking to Mono Moosbart's macbook21 and parabola page (and include a copy)</li> + </ul> + </li> + <li>Documentation: added a copy of Mono's Parabola install guide (for macbook21 with Apple EFI firmware) and linked in in main index.</li> + <li>Documentation: added a copy of Mono's Coreboot page (for macbook21) and linked it in main index.</li> + <li>T60: Copy CD option from the grub.cfg files for T60 *serial*.rom images into the grub configs for non-serial images. (T60s have CD/DVD drive on main laptop)</li> + <li>macbook21: remove options in build-macbook21 for *serial*.rom (there is no dock or serial port available for macbook21)</li> + <li> + Added patches for backlight controls on X60 and T60 with help from Denis Carikli (see ./resources/libreboot/patch/gitdiff and ./getcb and docs/i945_backlight.html) + <ul> + <li>Documentation: added docs/i945_backlight.html showing how backlight controls were made to work on X60/T60</li> + </ul> + </li> + <li> + Documentation: Added info about getting LCD panel name based on EDID data. + <ul> + <li>Documentation: Added a link to this from the list of supported T60s and LCD panels for T60 (so that the user can check what LCD panel they have).</li> + </ul> + </li> + <li> + X60/T60: Merged patches for 3D fix (from Paul Menzel) when using kernel 3.12 or higher (see ./resources/libreboot/patch/gitdiff and ./getcb) + <ul> + <li>based on 5927/11 and 5932/5 from review.coreboot.org</li> + </ul> + </li> + <li> + Improved thinkpad_acpi support (from coreboot ): xsensors shows more information. + <ul> + <li>From 4650/29 in review.coreboot.org (merged in coreboot 'master' on June 1st 2014)</li> + </ul> + </li> + <li> + Merged changes for digitizer (X60 Tablet) and IR (X60 and T60) based on 5243/17, 5242/17 and 5239/19 from review.coreboot.org + <ul> + <li>(see ./resources/libreboot/patch/gitdiff and ./getcb)</li> + </ul> + </li> + <li>Documentation: added information about building flashrom using 'builddeps-flashrom' script.</li> + <li>Re-created resources/libreboot/config/x60config</li> + <li>Re-created resources/libreboot/config/t60config</li> + <li> + Added 'x60tconfig' in resources/libreboot/config (because X60 Tablet has different information about serial/model/version in 'dmidecode') + <ul> + <li>Added 'build-x60t' script</li> + <li>Updated 'build' script to use 'build-x60t'</li> + <li>Documentation: added to #config section the section #config_x60t (libreboot configuration and dmidecode info)</li> + <li>Documentation: added x60t ROMs to the list of ROMs</li> + </ul> + </li> + <li>Tidied up the 'builddeps' script (easier to read)</li> + <li>Tidied up the 'cleandeps' script (easier to read)</li> + <li>Annotated the 'buildall' script</li> + <li>Added 'getcb' script for getting coreboot revision used from git, and patching it.</li> + <li>Added 'getgrub' script for getting the GRUB revision used from git, and patching it.</li> + <li>Added 'getmt86' script for getting the memtest86+ version used, and patching it.</li> + <li>Added 'getbucts' script for getting the bucts version used.</li> + <li>Added 'getflashrom' script for getting the flashrom version used, and patching it</li> + <li>Added 'getall' script which runs all of the other 'get' scripts.</li> + <li> + Add instructions to the 'build' script to prepare libreboot_meta.tar.gz + <ul> + <li>New archive: libreboot_meta.tar.gz - minimal archive, using the 'get' scripts to download all the dependencies (coreboot, memtest, grub and so on).</li> + </ul> + </li> + <li>Documentation: added information about where 'build' script prepares the libreboot_meta.tar.gz archive.</li> + <li> + Documentation: added information about how to use the 'get' scripts in libreboot_meta.tar.gz (to generate libreboot_src.tar.gz) + <ul> + <li>Documentation: mention that meta doesn't create libreboot_src/ directory, but that libreboot_meta itself becomes the same.</li> + <li>Documentation: advise to rename libreboot_meta to libreboot_src after running 'getall'.</li> + </ul> + </li> + <li>Annotated the 'builddeb' script, to say what each set of dependencies are for.</li> + <li>Separated bucts/flashrom builddeb sections into separate scripts: builddeb-flashrom, builddeb-bucts.</li> + <li>Documentation: Updated relevant parts based on the above.</li> + <li>Added instructions to 'build' script for including builddeb-bucts and builddeb-flashrom in libreboot_bin</li> + <li> + Updated flashrom checkout (r1822 2014-06-16) from SVN (http://flashrom.org/Downloads). + <ul> + <li>Updated flashing instructions in docs/index.html for new commands needed (Macronix chip on X60/T60)</li> + <li>For X60/T60 (flashrom): Patched flashchips.c_lenovobios_macronix and flashchips.c_lenovobios_sst executables for SST/macronix (included in resources/flashrom/patch)</li> + <li>Updated builddeps to build flashrom_lenovobios_sst and flashrom_lenovobios_macronix, for X60/T60 users with Lenovo BIOS</li> + <li>moved the flashrom build instructions from 'builddeps' and put them in 'builddeps-flashrom', excecuting that from 'builddeps'.</li> + <li>Added builddeps-flashrom to libreboot_bin.tar.gz</li> + </ul> + </li> + <li> + flashrom: added patched flashchips.c to resources/flashrom/patch (automatically use correct macronix chip on libreboot, without using '-c' switch) + <ul> + <li>removed 'MX25L1605' and 'MX25L1605A/MX25L1606E' entries in flashchips.c for the patched version of flashchips.c</li> + <li>added instructions to 'builddeps-flashrom' to automatically use this modified flashchips.c in the default build</li> + </ul> + </li> + <li>Added builddeb to libreboot_bin.tar.gz</li> + <li> + Moved 'bucts' build instructions from builddeps to builddeps-bucts + <ul> + <li>builddeps now runs 'builddeps-bucts' instead</li> + <li>Added 'builddeps-bucts' to libreboot_bin.tar.gz</li> + <li>Documentation: Added information about using 'builddep-bucts' to build the BUC.TS utility.</li> + </ul> + </li> + <li> + Added 'lenovobios_firstflash' and 'lenovobios_secondflash' scripts + <ul> + <li>Added instructions to 'build' script for including those files in libreboot_bin</li> + <li>Documentation: Add tutorial for flashing while Lenovo BIOS is running (on X60/T60)</li> + </ul> + </li> + <li> + Added 'flash' script (make sure to run builddeps-flashrom first) which (while libreboot is already running) can use flashrom to flash a ROM + <ul> + <li>eg: "sudo ./flash bin/x60/coreboot_serial_ukdvorak.rom" equivalent to "sudo ./flashrom/flashrom -p internal -w bin/x60/coreboot_uk_dvorak.rom"</li> + <li>updated 'build' script to include the 'flash' script in libreboot_bin.tar.gz</li> + </ul> + </li> + <li>Documentation: replaced default flashrom tutorial to recommend the 'flash' script instead.</li> + <li> + Re-add cbfstool source code back into libreboot_bin.tar.gz, as cbfstool_standalone + <ul> + <li>Patched that version to work (able to be built and used) without requiring the entire coreboot source code.</li> + <li> + Created patched version of the relevant source files and added it into resources/cbfstool/patch + <ul> + <li>see coreboot/util/cbfstool/rmodule.c and then the patched version in resources/cbfstool/patch/rmodule.c</li> + <li>see coreboot/src/include/rmodule-defs.h and the rule in 'build' for including this in ../libreboot_bin/cbfstool_standalone</li> + </ul> + </li> + <li>Added instructions to 'build' script for applying this patch to the cbfstool_standalone source in libreboot_bin</li> + <li>Added instructions to 'build' script for then re-compiling cbfstool_standalone in libreboot_bin after applying the patch</li> + <li>Added a 'builddeps-cbfstool' script (in src, but only used in bin and put in bin by 'build') that compiles cbfstool_standalone in libreboot_bin (make), moves the cbfstool and rmodtool binaries into libreboot_bin/ and then does 'make clean' in libreboot_bin/cbfstool_standalone</li> + <li>Updated the 'build' script to put 'builddeps-cbfstool' in libreboot_bin</li> + <li>Updated the 'build' script in the cbfstool (standalone) part to accomodate the above.</li> + <li>Documentation: added notes about cbfstool (standalone) in libreboot_bin</li> + </ul> + </li> + <li>Documentation: made docs/gnulinux/grub_cbfs.html slightly easier to follow.</li> + <li>Annotate the 'build*' scripts with 'echo' commands, to help the user understand what it actually happening during the build process.</li> + <li> + Documentation: added information about how 'dmidecode' data was put in the coreboot configs + <ul> + <li>Documentation: In fact, document how the 'config' files in resources/libreboot/config/ were created</li> + </ul> + </li> + <li>Documentation: Added information about which ThinkPad T60s are supported, and which are not.</li> + <li> + Documentation: added information about LCD inverters (for upgrading the LCD panel on a T60 14.1' XGA or 15.1' XGA) + <ul> + <li>it's FRU P/N 41W1478 (on T60 14.1") so this was added to the docs.</li> + <li>it's P/N 42T0078 FRU 42T0079 or P/N 41W1338 (on T60 15.1") so this was added to the docs.</li> + </ul> + </li> + <li>Documentation: added information about names of LCD panels for T60 to the relevant parts of the documentation.</li> + <li>Documentation: added information (with pictures) about the differences between T60 with Intel GPU and T60 with ATI GPU.</li> + <li>Documentation: added pictures of keyboard layouts (US/UK Qwerty/Dvorak) to the ROM list, to let the user compare with their own keyboard.</li> + <li> + Move the coreboot build instructions in 'builddeps' into 'builddeps-coreboot' and link it in 'builddeps' + <ul> + <li>Link to 'builddeps-coreboot' in final stage of 'getcb'</li> + </ul> + </li> + <li> + Move GRUB build instructions from 'builddeps' into 'builddeps-grub', link from 'builddeps' + <ul> + <li>Link to 'builddeps-grub' in final stage of 'getgrub'</li> + </ul> + </li> + <li> + Move MemTest86+ build instructions from 'builddeps' into 'builddeps-memtest86', link from 'builddeps' + <ul> + <li>Link to 'builddeps-memtest86' in final stage of 'getmt86'</li> + </ul> + </li> + <li>made 'build' script put resources/ directory in libreboot_bin, to make builddeps-flashrom work in libreboot_bin</li> + <li>Removed instructions for building source code in the 'get' script (they don't really belong there)</li> + <li>Added libfuse-dev and liblzma-dev to the list of GRUB dependencies in 'builddeb' script.</li> + <li>Converted the 'RELEASE' file to 'docs/RELEASE.html'</li> + <li>Added those dependencies to builddeb script (for GRUB part): gawk libdevmapper-dev libtool libfreetype6-dev</li> + <li>Added to build script the instruction at the end to create a sha512sum.txt with a file manifest plus checksums.</li> + <li>Deleted the RELEASE and BACKPORT files (no longer needed)</li> + <li> + Documentation: added information about X60/T60 dock (ultrabase x6 and advanced mini dock) to relevant sections. + <ul> + <li>Added to docs/index.html#serial</li> + </ul> + </li> + </ul> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> + + <div class="section"> - <h2>Source code (for hacking)</h2> - <ul> - <li><a href="http://libreboot.org/release/ancient/2/X60_source.tar.gz">http://libreboot.org/release/ancient/2/X60_source.tar.gz</a></li> - </ul> + <h1 id="release5">5th release</h1> - <h2>Development notes</h2> <ul> - <li>Added SeaBIOS payload to GRUB2 (for booting USB drives)</li> - <li>new grub.cfg</li> + <li>2014 March 7th</li> + <li>revised 2014 June 22nd</li> </ul> - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> + <h2>Officially supported</h2> + <ul> + <li>ThinkPad X60</li> + <li>ThinkPad X60s</li> + </ul> + + <h2>Binaries (for flashing)</h2> + <ul> + <li><a href="http://libreboot.org/release/4/libreboot_bin.tar.gz">http://libreboot.org/release/4/libreboot_bin.tar.gz</a></li> + <li>sha512: 75aace225cb3f897cf4a64980c5b746727f9a64646a640692f475e7c37989c836f0fc071ec31c6e9a746133feda35b60b3df700a6331d600ecd65fe70646a124</li> + </ul> + + <h2>Source code (for hacking)</h2> + <ul> + <li><a href="http://libreboot.org/release/4/libreboot_src.tar.gz">http://libreboot.org/release/4/libreboot_src.tar.gz</a></li> + <li>sha512: a773462fd60b529f20e14a82281f962985579bd523c3e6c9ab8639f7a12da8f1ccb44a56c648b19de914a15d4490366222d0bbc80552e91419f2afecbddc10ae</li> + </ul> + <p> + (gluglug.org.uk/X60/release/4/X60_source.tar.gz and gluglug.org.uk/X60/release/4/X60_binary.tar.gz were the old links, + but they no longer exist) + </p> + + <h2>Development notes</h2> + <ul> + <li> + Binary archive now have 2 images: + <ul> + <li>With serial output enabled and memtest86+ included (debug level 8 in coreboot)</li> + <li>With serial output disabled and memtest86+ excluded (faster boot speeds) (debugging disabled)</li> + </ul> + </li> + <li> + Reduced impact on battery life: + <ul> + <li>'processor.max_cstate=2' instead of 'idle=halt' for booting default kernel</li> + </ul> + </li> + <li> + coreboot.rom (faster boot speeds, debugging disabled): + <ul> + <li>Disabled coreboot serial output (Console-> in "make menuconfig")</li> + <li>Set coreboot debug level to 0 instead of 8 (Console-> in "make menuconfig")</li> + <li>Changed GRUB timeout to 1 second instead of 2 (in grub.cfg</li> + <li>Removed background image in GRUB.</li> + <li>Removed memtest86+ payload (since it relies on serial output) + </ul> + </li> + <li> + coreboot_serial.rom (slower boot speeds, debugging enabled): + <ul> + <li>Boot time still reduced, but only by ~2 seconds</li> + <li>has the memtest86+ payload included in the ROM</li> + <li>has serial port enabled. How this is achieved (from X60_source): Turn on debugging level to 8, and enable serial output</li> + </ul> + </li> + <li>(in Console-> in coreboot "make menuconfig")</li> + <li>(and build with grub_serial.cfg and grub_memdisk_serial.cfg)</li> + </ul> + + <h2>Revision notes (2014 March 9th):</h2> + <ul> + <li>recreated coreboot config from scratch</li> + <li>GRUB loads even faster now (less than 2 seconds).</li> + <li>Total boot time reduced by further ~5 seconds.</li> + <li>Added crypto and cryptodisk modules to GRUB</li> + <li>cbfstool now included in the binary archives</li> + </ul> + + <h2>Revision notes (2014 June 5th):</h2> + <ul> + <li>added backlight support (Fn+Home and Fn+End) on X60</li> + <li>fixed broken/unstable 3D when using kernel 3.12 or higher</li> + <li>(see 'BACKPORT' file)</li> + </ul> + + <h2>Revision notes (2014 June 11th):</h2> + <ul> + <li>removed 'CD' boot option from coreboot.rom (not needed)</li> + <li>removed 'processor.max_cstate=2' and 'idle=halt' options (see README.powertop file)</li> + </ul> + + <h2>Revision notes (2014 June 22nd)</h2> + <ul> + <li>updated GRUB (git 4b8b9135f1676924a8458da528d264bbc7bbb301, April 20th 2014)</li> + <li>Made "DeJavu Sans Mono" the default font in GRUB (fixes border corruption).</li> + <li>re-added background image in GRUB (meditating GNU)</li> + <li> + added 6 more images: + <ul> + <li>coreboot_ukqwerty.rom (UK Qwerty keyboard layout in GRUB)</li> + <li>coreboot_serial_ukqwerty.rom (UK Qwerty keyboard layout in GRUB)</li> + <li>coreboot_dvorak.rom (US Dvorak keyboard layout in GRUB)</li> + <li>coreboot_serial_dvorak.rom (US Dvorak keyboard layout in GRUB)</li> + <li>coreboot_ukdvorak.rom (UK Dvorak keyboard layout in GRUB)</li> + <li>coreboot_serial_ukdvorak.rom (UK Dvorak keyboard layout in GRUB)</li> + <li>(coreboot.rom and coreboot_serial.rom have US Qwerty keyboard layout in GRUB, as usual)</li> + </ul> + </li> + <li> + improved the documentation: + <ul> + <li>removed FLASH_INSTRUCTION and README.powertop and merged them with README</li> + <li>removed obsolete info from README and tidied it up</li> + <li>deleted README (replaced with docs/index.html)</li> + </ul> + </li> + <li>tidied up the menu entries in GRUB</li> + <li>tidied up the root directory of X60_source/, sorted more files into subdirectories</li> + <li>added 'pkg-config' to the list of dependencies for building powertop on Trisquel</li> + <li>wrote a script (powertop.trisquel6) to automatically setup Powertop to run at boot time (for Trisquel 6 users)</li> + <li>improved the commenting inside the 'build' script (should make modifying it easier)</li> + <li>Renamed X60_binary.tar.gz and X60_source.tar.gz to libreboot_bin.tar.gz and libreboot_src.tar.gz, respectively.</li> + <li>Replaced "GNU GRUB version" with "FREE AS IN FREEDOM" on GNU GRUB start screen.</li> + <li>Added sha512.txt files in libreboot_src and libreboot_bin. (inside the archives)</li> + <li>Added libreboot_bin.tar.gz.sha512.txt and libreboot_src.tar.gz.sha512.txt files (outside of the archives)</li> + </ul> + + <h2>Revision (2014 June 22nd - extra)</h2> + <ul> + <li>Documentation: Improved the instructions for using flashrom</li> + <li>Documentation: Improved the instructions for using cbfstool (to change the default GRUB menu)</li> + <li>Documentation: Numerous small fixes.</li> + </ul> + + <h2>Revision (2014 June 22nd - extra)</h2> + <ul> + <li>Documentation: added X60 Unbricking tutorial</li> + <li>Documentation: added info about enabling or disabling wifi</li> + <li>Documentation: added info about enabling or disabling trackpoint</li> + </ul> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> - <h1 id="release2">2nd release</h1> + <div class="section"> - <ul> - <li>2013 December 13th</li> - </ul> + <h1 id="release4">4th release</h1> - <h2>Supported:</h2> <ul> - <li>ThinkPad X60</li> - <li>ThinkPad X60s</li> + <li>2014 February 21st</li> </ul> - <h2>Binaries (for flashing)</h2> - <ul> - <li><a href="http://libreboot.org/release/ancient/1/X60_binary.tar.gz">http://libreboot.org/release/ancient/1/X60_binary.tar.gz</a></li> - </ul> + <h2>Officially supported</h2> + <ul> + <li>ThinkPad X60</li> + <li>ThinkPad X60s</li> + </ul> + + <h2>Binaries (for flashing)</h2> + <ul> + <li><a href="http://libreboot.org/release/ancient/3/X60_binary.tar.gz">http://libreboot.org/release/ancient/3/X60_binary.tar.gz</a></li> + </ul> + + <h2>Source code (for hacking)</h2> + <ul> + <li><a href="http://libreboot.org/release/ancient/3/X60_source.tar.gz">http://libreboot.org/release/ancient/3/X60_source.tar.gz</a></li> + </ul> + + <h2>Development notes</h2> + <ul> + <li>Removed SeaBIOS (redundant)</li> + <li> + New GRUB version (2.02~beta2) + <ul> + <li>Fixes some USB issues</li> + <li>Includes ISOLINUX/SYSLINUX parser</li> + </ul> + </li> + <li>New grub.cfg</li> + <li> + Removed useless options: + <ul> + <li>options for booting sda 2/3/4</li> + <li>seabios boot option</li> + </ul> + </li> + <li> + Added new menu entries: + <ul> + <li>Parse ISOLINUX config (USB)</li> + <li>Parse ISOLINUX config (CD)</li> + <li>Added 'cat' module for use on GRUB command line.</li> + </ul> + </li> + <li>"set pager=1" is set in grub.cfg, for less-like functionality</li> + </ul> + <p> + The "Parse" options read ./isolinux/isolinux.cfg on a CD or USB, + and automatically converts it to a grub config and switches to the boot menu of that distro. + This makes booting ISOs *much* easier than before. + </p> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> - <h2>Source code (for hacking)</h2> - <ul> - <li><a href="http://libreboot.org/release/ancient/1/X60_source.tar.gz">http://libreboot.org/release/ancient/1/X60_source.tar.gz</a></li> - </ul> + <div class="section"> + + <h1 id="release3">3rd release</h1> - <h2>Development notes</h2> <ul> - <li>added background image to GRUB2</li> - <li>added memtest86+ payload to grub2</li> - <li>improvements to the documentation</li> - <li>new grub.cfg</li> + <li>2013 December 14th</li> </ul> - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> + <h2>Supported:</h2> + <ul> + <li>ThinkPad X60</li> + <li>ThinkPad X60s</li> + </ul> + + <h2>Binaries (for flashing)</h2> + <ul> + <li><a href="http://libreboot.org/release/ancient/2/X60_binary.tar.gz">http://libreboot.org/release/ancient/2/X60_binary.tar.gz</a></li> + </ul> + + <h2>Source code (for hacking)</h2> + <ul> + <li><a href="http://libreboot.org/release/ancient/2/X60_source.tar.gz">http://libreboot.org/release/ancient/2/X60_source.tar.gz</a></li> + </ul> + + <h2>Development notes</h2> + <ul> + <li>Added SeaBIOS payload to GRUB2 (for booting USB drives)</li> + <li>new grub.cfg</li> + </ul> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> - <h1 id="release1">1st release</h1> + <div class="section"> - <ul> - <li>2013 December 12th</li> - </ul> + <h1 id="release2">2nd release</h1> - <h2>Supported:</h2> <ul> - <li>ThinkPad X60</li> - <li>ThinkPad X60s</li> + <li>2013 December 13th</li> </ul> - <h2>Binaries (for flashing)</h2> - <ul> - <li><a href="http://libreboot.org/release/ancient/0/X60_binary.tar.gz">http://libreboot.org/release/ancient/0/X60_binary.tar.gz</a></li> - </ul> + <h2>Supported:</h2> + <ul> + <li>ThinkPad X60</li> + <li>ThinkPad X60s</li> + </ul> + + <h2>Binaries (for flashing)</h2> + <ul> + <li><a href="http://libreboot.org/release/ancient/1/X60_binary.tar.gz">http://libreboot.org/release/ancient/1/X60_binary.tar.gz</a></li> + </ul> + + <h2>Source code (for hacking)</h2> + <ul> + <li><a href="http://libreboot.org/release/ancient/1/X60_source.tar.gz">http://libreboot.org/release/ancient/1/X60_source.tar.gz</a></li> + </ul> + + <h2>Development notes</h2> + <ul> + <li>added background image to GRUB2</li> + <li>added memtest86+ payload to grub2</li> + <li>improvements to the documentation</li> + <li>new grub.cfg</li> + </ul> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> - <h2>Source code (for hacking)</h2> - <ul> - <li><a href="http://libreboot.org/release/ancient/0/X60_source.tar.gz">http://libreboot.org/release/ancient/0/X60_source.tar.gz</a></li> - </ul> + <div class="section"> + + <h1 id="release1">1st release</h1> - <h2>Development notes</h2> <ul> - <li>initial release</li> - <li>source code deblobbed</li> + <li>2013 December 12th</li> </ul> - <p><a href="#pagetop">Back to top of page.</a></p> + <h2>Supported:</h2> + <ul> + <li>ThinkPad X60</li> + <li>ThinkPad X60s</li> + </ul> + + <h2>Binaries (for flashing)</h2> + <ul> + <li><a href="http://libreboot.org/release/ancient/0/X60_binary.tar.gz">http://libreboot.org/release/ancient/0/X60_binary.tar.gz</a></li> + </ul> + + <h2>Source code (for hacking)</h2> + <ul> + <li><a href="http://libreboot.org/release/ancient/0/X60_source.tar.gz">http://libreboot.org/release/ancient/0/X60_source.tar.gz</a></li> + </ul> + + <h2>Development notes</h2> + <ul> + <li>initial release</li> + <li>source code deblobbed</li> + </ul> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> -<hr/> + <div class="section"> - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="license.txt">license.txt</a>. - </p> + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="license.txt">license.txt</a>. + </p> - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="license.txt">license.txt</a> for more information. - </p> + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="license.txt">license.txt</a> for more information. + </p> + + </div> </body> </html> diff --git a/docs/css/main.css b/docs/css/main.css index 11a07737..66a0503c 100644 --- a/docs/css/main.css +++ b/docs/css/main.css @@ -2,7 +2,7 @@ Main CSS stylesheet for libreboot.org (documentation section) - Copyright (C) 2014 Francis Rowe <info@gluglug.org.uk> + Copyright (C) 2014, 2015 Francis Rowe <info@gluglug.org.uk> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,13 +19,31 @@ */ body { - background:#fff; - color:#000; - font-family:100% sans-serif; - font-size:0.875em; + background:#dfdfdf; + color:#2B2B2B; + font-family:Lato,sans-serif; + font-size:0.92em; + font-weight:400; + padding:0px; + margin:0px; } -p, aside { +div.section { + background:#FFF; + border-radius:0.5em; + box-shadow: 0px 0px 5px 0px rgba(50, 50, 50, 0.75); + padding:1em; + margin:1em; +} +p, aside, li { margin: 0.33em 0px 0.6em; + text-align:justify; +} +a { + color:#2B2BAA; + font-size:1.1em; +} +a:hover { + text-decoration:none; } h1,h2,h3 { margin-bottom:0.2em; @@ -34,13 +52,25 @@ h1,h2,h3 { img { max-width:100%; height:auto; + border:solid 0.5em #fff; + border-radius:0.25em; + box-shadow: 0px 0px 5px 0px rgba(50, 50, 50, 0.75); + margin:0px; + padding:0px; + margin-right:1em; + margin-bottom:1em; } + p.lenovobios { font-weight:bold; color:#f00; font-style:italic; font-size:1.2em; } p.lenovobios:hover { color: #000; } -div.important, pre { - background-color:#ccc; +div.important, pre, div.subsection { + padding:1em; + margin-bottom:1em; + background-color:#ece0e2; + border-radius:0.25em; + box-shadow: 0px 0px 5px 0px rgba(50, 50, 50, 0.75); } diff --git a/docs/future/index.html b/docs/future/index.html index 6f050229..450e85ae 100644 --- a/docs/future/index.html +++ b/docs/future/index.html @@ -16,199 +16,333 @@ <body> - <header> - <h1 id="pagetop">Development notes</h1> - <aside>These are development notes, for future use. For old (obselete) notes, see <a href="old.html">old.html</a>.</aside> - </header> - - <p> - Or go <a href="../index.html">back to main document index</a>. - </p> + <div class="section"> -<hr/> + <h1 id="pagetop">Development notes</h1> + <p> + These are development notes, for future use. For old (obselete) notes, see <a href="old.html">old.html</a>. + </p> + <p> + Or go <a href="../index.html">back to main document index</a>. + </p> + + </div> - <h2>Contents</h2> - <ul> - <li><a href="#standard_test">Standard test</a></li> - <li><a href="#t60_cpu_microcode">T60 cpu microcode</a></li> - <li><a href="#i945_vram_size">i945 VRAM size</a></li> - <li><a href="#lcd_i945_incompatibility">LCD panels on i945 - fix incompatible panels</a></li> - <li><a href="#i945_vbt">i945 X60/T60 VBT implementation (experimental: testing)</a></li> - <li><a href="#intelvbttool_results">IntelVbtTool results</a></li> - <li><a href="#fallback_patches">Fallback patches for i945</a></li> - </ul> + <div class="section"> + + <h1>Table of contents</h1> + <ul> + <li><a href="#standard_test">Standard test</a></li> + <li><a href="#t60_cpu_microcode">T60 cpu microcode</a></li> + <li><a href="#i945_vram_size">i945 VRAM size</a></li> + <li><a href="#lcd_i945_incompatibility">LCD panels on i945 - fix incompatible panels</a></li> + <li><a href="#i945_vbt">i945 X60/T60 VBT implementation (experimental: testing)</a></li> + <li><a href="#intelvbttool_results">IntelVbtTool results</a></li> + <li><a href="#fallback_patches">Fallback patches for i945</a></li> + </ul> + + </div> -<hr/> + <div class="section"> + + <h1 id="standard_test">standard test</h1> + <p> + These logs are usually obtained when testing changes related to graphics on i945 (X60 and T60). + </p> + <ul> + <li> + Make a copy of these files: + <ul> + <li>/var/log/dmesg</li> + <li>/var/log/kern.log</li> + <li>/var/log/Xorg.0.log</li> + <li>/proc/ioports</li> + <li>/proc/iomem</li> + <li>/sys/class/drm/card0/error</li> + </ul> + </li> + <li> + Record these outputs: + <ul> + <li>sudo intel_reg_dumper</li> + <li>uname -r</li> + <li>lspci -vvvvnnnnxxxx</li> + <li>sudo modprobe msr</li> + <li>sudo inteltool -a</li> + <li>sudo cbmem -c</li> + </ul> + </li> + <li> + Try some 3D games with latest kernel. + </li> + </ul> - <h1 id="standard_test">standard test</h1> - <p> - These logs are usually obtained when testing changes related to graphics on i945 (X60 and T60). - </p> - <ul> - <li> - Make a copy of these files: + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> + + <div class="section"> + + <h1 id="t60_cpu_microcode">T60 cpu microcode</h1> + + <p> + TODO: T60: find (for rare buggy CPUs that are unstable without microcode updates) if there is a workaround (patched kernel, special parameter, etc) So far, only 1 processor has been found to have issues. See microcode errata sheets http://download.intel.com/design/mobile/SPECUPDT/31407918.pdf and http://download.intel.com/design/mobile/SPECUPDT/30922214.pdf and then look at the debugging results collected in <a href="../t7200q">t7200q</a> directory (q means quirk). + </p> + + <p> + Every other T7200 tested so far has worked without microcode updates. + </p> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> + + <div class="section"> + + <h1 id="i945_vram_size">i945 VRAM size</h1> + + <p> + Apparently, only 8MB VRAM is available on i945 GPUs (though it could do 64MB):<br/> + phcoder: No. Hardware default is 8 MiB. When I wanted to make it configurable, I saw that docs mention only one other alternative: 1MiB. Later isn't event enough for 1024x768 at 24bpp without any acceleration or double buffering. It's possible that there are undocumented values. Which options do you have in vendor BIOS? + How to find out how much vram you have:<br/> + phcoder: TOM - BSM<br/> + phcoder: check what vendor BIOS offers as options<br/> + fchmmr: I thought it could do 64MB usually<br/> + phcoder: not accorging to doc.<br/> + phcoder: see mobile-945-express-chipset-datasheet page 93<br/> + phcoder: see also src/northbridge/intel/i945/{early_init,northbridge,gma}.c<br/> + fchmmr: "011 = DVMT (UMA) mode, 8 MB of memory pre-allocated for<br/> + fchmmr: frame buffer."<br/> + fchmmr: "Others - reserved"<br/> + phcoder: the easiest way is a loop at this position which tries different values and reads (and prints) BSM with them<br/> + stefanct: fchmmr: he suggest that you change the value and look how BSM reacts to that<br/> + stefanct: as he pointed out earlier vram size = TOM - BSM<br/> + stefanct: different values of GMS<br/> + stefanct: phcoder: hm... this could be a hint. look at the text description of TOLUD at page 103<br/> + stefanct: it mentions 64 MB in the text about BSM as well<br/> + stefanct: table 18...<br/> + phcoder: stefanct: I have a guess which value make is 64 but I will not tell to avoid skewing test results<br/> + stefanct: phcoder: sure... i assumed you were not sure if it supports it at all. testing it properly is of course a good idea :)<br/> + stefanct: test the various possible (but reserved) values of GMS and see what the resulting VRAM size is<br/> + fchmmr: so, TOM - BSM + </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + + </div> + + <div class="section"> + + <h1 id="lcd_i945_incompatibility">LCD panels on i945 - fix incompatible panels</h1> + + <p> + Fix T60 issues (see incompatible panels listed at <a href="../hcl/index.html#supported_t60_list">../hcl/index.html#supported_t60_list</a>). + </p> + + <p> + Run that tool (resources/utilities/i945gpu/intel-regs.py) as root on machines with the offending panels in: + </p> <ul> - <li>/var/log/dmesg</li> - <li>/var/log/kern.log</li> - <li>/var/log/Xorg.0.log</li> - <li>/proc/ioports</li> - <li>/proc/iomem</li> - <li>/sys/class/drm/card0/error</li> + <li>Coreboot (or libreboot, whatever) with VBIOS (disable native graphics also)</li> + <li>(Factory BIOS also?)</li> </ul> - </li> - <li> - Record these outputs: + + <p> + This shows values in devicetree.cb and src/northbridge/intel/i945/gma.c, the idea is that you run it on factory bios or vbios + and that it will (might) show different values: then you try those in the native graphics (in libreboot). + </p> + + <p> + Other values/registers might also need to be added to the script for these tests. + </p> + + <p> + check if intel_bios_reader from intel-gpu-tools reports the same value (BIOS has a hardcoded value) for PWM modulation frequency. + This file can read the VBIOS (64K dump). + </p> + + <p> + Check other tools in intel-gpu-tools aswell, compare outputs. Possibly add more information to intel-regs.py output (submit changes to mtjm). + Do oprom trace / replay (<a href="http://www.coreboot.org/User:GNUtoo#How_to_get_rid_of_the_vbios_of_the_x60_.5BNew_Version.5D">http://www.coreboot.org/User:GNUtoo#How_to_get_rid_of_the_vbios_of_the_x60_.5BNew_Version.5D</a>) + </p> + + <p> + Study how EDID works and how gma.c handles it. + </p> + + <p> + Original getregs.py script can be found at <a href="http://hg.mtjm.eu/scripts/file/tip/intel-regs.py">http://hg.mtjm.eu/scripts/file/tip/intel-regs.py</a> + written by MichaÅ‚ MasÅ‚owski. + </p> + + <p> + About fixing remaining LCD panels on 5345:<br/> + 'polarity' is mentioned in coreboot log (cbmem -c). compare output (with working and non-working panel). (and see the other notes in docs/future/index.html)<br/> + phcoder says: hint for T60: it might be that failing panels are 8bpc<br/> + fchmmr: what does 8bpc mean? And what do you think the other (non-failing) panel are?<br/> + phcoder: 6bpc. bits per colour. May also be reffered as 18-bit vs 24-bit panels<br/> + phcoder: just collect EDIDs from failing and working panels<br/> + <b>phcoder gave me this for collecting EDID data: + <a href="http://www.o2genum.com/2013/08/lp156wh2-tlaa-lcd-panel-edid.html">http://www.o2genum.com/2013/08/lp156wh2-tlaa-lcd-panel-edid.html</a></b> + </p> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> + + <div class="section"> + + <h1 id="i945_vbt">i945 gfx: X60/T60 VBT implementation (experimental: testing)</h1> + + <p> + intel_bios_dumper in intel-gpu-tools seems interesting. + </p> + <p> + <b>Use 'drm.debug=0x06' kernel parameter when booting in grub!</b> + </p> + <p> + Before each test run, boot a live USB and delete the old logs in /var/log (kernel log, xorg log, dmesg and so on). + </p> + <p> + Load (from the ROM) the runningvga.bin for each LCD panel on each machine; do not execute it, only load it! (coreboot will have to be modified). + Rename the ROM appropriately, based on the machine name and the panel name. coreboot_nativegfx_5868_plusrunningvga_t60_14_LTD141ECMB.rom, + for instance. Keep a copy for later use. + </p> + + <p>You are supposed to:</p> <ul> - <li>sudo intel_reg_dumper</li> - <li>uname -r</li> - <li>lspci -vvvvnnnnxxxx</li> - <li>sudo modprobe msr</li> - <li>sudo inteltool -a</li> - <li>sudo cbmem -c</li> + <li>enable native graphics in menuconfig</li> + <li>include the self-modified VGA ROM (load, but not execute) - for reverse engineering the correct VBT tables.</li> </ul> - </li> - <li> - Try some 3D games with latest kernel. - </li> - </ul> - - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> - - <h1 id="t60_cpu_microcode">T60 cpu microcode</h1> - - <p> - TODO: T60: find (for rare buggy CPUs that are unstable without microcode updates) if there is a workaround (patched kernel, special parameter, etc) So far, only 1 processor has been found to have issues. See microcode errata sheets http://download.intel.com/design/mobile/SPECUPDT/31407918.pdf and http://download.intel.com/design/mobile/SPECUPDT/30922214.pdf and then look at the debugging results collected in <a href="../t7200q">t7200q</a> directory (q means quirk). - </p> - - <p> - Every other T7200 tested so far has worked without microcode updates. - </p> - - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> - - <h1 id="i945_vram_size">i945 VRAM size</h1> - <p> - Apparently, only 8MB VRAM is available on i945 GPUs (though it could do 64MB):<br/> - phcoder: No. Hardware default is 8 MiB. When I wanted to make it configurable, I saw that docs mention only one other alternative: 1MiB. Later isn't event enough for 1024x768 at 24bpp without any acceleration or double buffering. It's possible that there are undocumented values. Which options do you have in vendor BIOS? - How to find out how much vram you have:<br/> - phcoder: TOM - BSM<br/> - phcoder: check what vendor BIOS offers as options<br/> - fchmmr: I thought it could do 64MB usually<br/> - phcoder: not accorging to doc.<br/> - phcoder: see mobile-945-express-chipset-datasheet page 93<br/> - phcoder: see also src/northbridge/intel/i945/{early_init,northbridge,gma}.c<br/> - fchmmr: "011 = DVMT (UMA) mode, 8 MB of memory pre-allocated for<br/> - fchmmr: frame buffer."<br/> - fchmmr: "Others - reserved"<br/> - phcoder: the easiest way is a loop at this position which tries different values and reads (and prints) BSM with them<br/> - stefanct: fchmmr: he suggest that you change the value and look how BSM reacts to that<br/> - stefanct: as he pointed out earlier vram size = TOM - BSM<br/> - stefanct: different values of GMS<br/> - stefanct: phcoder: hm... this could be a hint. look at the text description of TOLUD at page 103<br/> - stefanct: it mentions 64 MB in the text about BSM as well<br/> - stefanct: table 18...<br/> - phcoder: stefanct: I have a guess which value make is 64 but I will not tell to avoid skewing test results<br/> - stefanct: phcoder: sure... i assumed you were not sure if it supports it at all. testing it properly is of course a good idea :)<br/> - stefanct: test the various possible (but reserved) values of GMS and see what the resulting VRAM size is<br/> - fchmmr: so, TOM - BSM - </p> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> - -<hr/> - - <h1 id="lcd_i945_incompatibility">LCD panels on i945 - fix incompatible panels</h1> - - <p> - Fix T60 issues (see incompatible panels listed at <a href="../hcl/index.html#supported_t60_list">../hcl/index.html#supported_t60_list</a>). - </p> + <p> + With each boot, make notes about what you see and get logs using the <a href="#standard_test">standard test</a>. + You will need the files from <a href="#intelvbttool_results">#intelvbttool_results</a> for each machine. + </p> - <p> - Run that tool (resources/utilities/i945gpu/intel-regs.py) as root on machines with the offending panels in: - </p> - <ul> - <li>Coreboot (or libreboot, whatever) with VBIOS (disable native graphics also)</li> - <li>(Factory BIOS also?)</li> - </ul> - - <p> - This shows values in devicetree.cb and src/northbridge/intel/i945/gma.c, the idea is that you run it on factory bios or vbios - and that it will (might) show different values: then you try those in the native graphics (in libreboot). - </p> + Results (# means untested): + <ul> + <li> + <b>X60/X60s:</b> + <ul> + <li>TMD-Toshiba LTD121ECHB: #</li> + <li>CMO N121X5-L06: #</li> + <li>Samsung LTN121XJ-L07: #</li> + <li>BOE-Hydis HT121X01-101: #</li> + </ul> + </li> + <li> + <b>X60T XGA:</b> + <ul> + <li>BOE-Hydis HV121X03-100: #</li> + </ul> + </li> + <li> + <b>X60T SXGA+:</b> + <ul> + <li>BOE-Hydis HV121P01-100: #</li> + </ul> + </li> + <li> + <b>T60 14" XGA:</b> + <ul> + <li>Samsung LTN141XA-L01: #</li> + <li>CMO N141XC: #</li> + <li>BOE-Hydis HT14X14: #</li> + <li>TMD-Toshiba LTD141ECMB: #</li> + </ul> + </li> + <li> + <b>T60 14" SXGA+</b> + <ul> + <li>TMD-Toshiba LTD141EN9B: #</li> + <li>Samsung LTN141P4-L02: #</li> + <li>Boe-Hydis HT14P12: #</li> + </ul> + </li> + <li> + <b>T60 15" XGA</b> + <ul> + <li>Samsung LTN150XG-L08: #</li> + <li>LG-Philips LP150X09: #</li> + <li>13N7068 (IDtech): #</li> + <li>13N7069 (CMO): #</li> + + </ul> + </li> + <li> + <b>T60 15" SXGA+</b> + <ul> + <li>LG-Philips LP150E05-A2K1: #</li> + <li>BOE-Hydis HV150P01-100: #</li> + </ul> + </li> + <li> + <b>T60 15" UXGA</b> + <ul> + <li>BOE-Hydis HV150UX1-100: #</li> + <li>IDTech N150U3-L01: #</li> + <li>BOE-Hydis HV150UX1-102: #</li> + </ul> + </li> + <li> + <b>T50 15" QXGA</b> + <ul> + <li>IDtech IAQX10N: #</li> + <li>IDtech IAQX10S: #</li> + </ul> + </li> + </ul> - <p> - Other values/registers might also need to be added to the script for these tests. - </p> + <p><a href="#pagetop">Back to top of page</a></p> + + </div> - <p> - check if intel_bios_reader from intel-gpu-tools reports the same value (BIOS has a hardcoded value) for PWM modulation frequency. - This file can read the VBIOS (64K dump). - </p> + <div class="section"> - <p> - Check other tools in intel-gpu-tools aswell, compare outputs. Possibly add more information to intel-regs.py output (submit changes to mtjm). - Do oprom trace / replay (<a href="http://www.coreboot.org/User:GNUtoo#How_to_get_rid_of_the_vbios_of_the_x60_.5BNew_Version.5D">http://www.coreboot.org/User:GNUtoo#How_to_get_rid_of_the_vbios_of_the_x60_.5BNew_Version.5D</a>) - </p> + <h1 id="intelvbttool_results">intelvbttool test results (VGA ROM dumps)</h1> + <p> + The VBIOS on i945 (intel gpu) platforms is self-modifying; that is, + its contents change when you run it. intelvbttool takes a dump of + the currently running vbios, and parses it. + </p> - <p> - Study how EDID works and how gma.c handles it. - </p> - - <p> - Original getregs.py script can be found at <a href="http://hg.mtjm.eu/scripts/file/tip/intel-regs.py">http://hg.mtjm.eu/scripts/file/tip/intel-regs.py</a> - written by MichaÅ‚ MasÅ‚owski. - </p> + <p> + The idea is that we can extract the VBT tables using this knowledge, on the X60, X60 Tablet and T60 (Intel GPU). + </p> - <p> - About fixing remaining LCD panels on 5345:<br/> - 'polarity' is mentioned in coreboot log (cbmem -c). compare output (with working and non-working panel). (and see the other notes in docs/future/index.html)<br/> - phcoder says: hint for T60: it might be that failing panels are 8bpc<br/> - fchmmr: what does 8bpc mean? And what do you think the other (non-failing) panel are?<br/> - phcoder: 6bpc. bits per colour. May also be reffered as 18-bit vs 24-bit panels<br/> - phcoder: just collect EDIDs from failing and working panels<br/> - <b>phcoder gave me this for collecting EDID data: - <a href="http://www.o2genum.com/2013/08/lp156wh2-tlaa-lcd-panel-edid.html">http://www.o2genum.com/2013/08/lp156wh2-tlaa-lcd-panel-edid.html</a></b> - </p> + <p> + Here is an example of how VBT was implemented on the ThinkPad X230: + <a href="http://review.coreboot.org/#/c/5396">http://review.coreboot.org/#/c/5396</a>. + </p> - <p><a href="#pagetop">Back to top of page.</a></p> + <p> + You'll need to build a T60 ROM with SeaBIOS and the VGA ROM (for Intel GPU). An X60 ROM is also needed (same configuration, using the VGA ROM for X60). + </p> -<hr/> + <p> + T60 has DVI on its dock, make sure that the dock is attached when getting this output. + </p> - <h1 id="i945_vbt">i945 gfx: X60/T60 VBT implementation (experimental: testing)</h1> + <p> + Get intelvbttool here: <a href="http://review.coreboot.org/#/c/5842">http://review.coreboot.org/#/c/5842</a> (util/intelvbttool). + </p> - <p> - intel_bios_dumper in intel-gpu-tools seems interesting. - </p> - <p> - <b>Use 'drm.debug=0x06' kernel parameter when booting in grub!</b> - </p> - <p> - Before each test run, boot a live USB and delete the old logs in /var/log (kernel log, xorg log, dmesg and so on). - </p> - <p> - Load (from the ROM) the runningvga.bin for each LCD panel on each machine; do not execute it, only load it! (coreboot will have to be modified). - Rename the ROM appropriately, based on the machine name and the panel name. coreboot_nativegfx_5868_plusrunningvga_t60_14_LTD141ECMB.rom, - for instance. Keep a copy for later use. - </p> + <p> + Now dump a copy of the running VGA BIOS: + <b>$ sudo dd if=/dev/mem bs=64k of=runningvga.bin skip=12 count=1</b><br/> + Then do (and record the output):<br/> + <b>$ ./intelvbttool runningvga.bin > intelvbttool_out</b> + </p> - <p>You are supposed to:</p> - <ul> - <li>enable native graphics in menuconfig</li> - <li>include the self-modified VGA ROM (load, but not execute) - for reverse engineering the correct VBT tables.</li> - </ul> + <p> + Backup both files (runningvga.bin and intelvbttool_out), renaming them to match the machine and LCD panel used. + <a href="../misc/index.html#get_edid_panelname">../misc/index.html#get_edid_panelname</a> will show you how to get the name (model) of the LCD panel used. + </p> - <p> - With each boot, make notes about what you see and get logs using the <a href="#standard_test">standard test</a>. - You will need the files from <a href="#intelvbttool_results">#intelvbttool_results</a> for each machine. - </p> + <h2>Test results (# means untested and all had docks, unless noted).</h2> - Results (# means untested): <ul> <li> <b>X60/X60s:</b> @@ -216,23 +350,23 @@ <li>TMD-Toshiba LTD121ECHB: #</li> <li>CMO N121X5-L06: #</li> <li>Samsung LTN121XJ-L07: #</li> - <li>BOE-Hydis HT121X01-101: #</li> + <li>BOE-Hydis HT121X01-101: #</li> </ul> </li> <li> - <b>X60T XGA:</b> + <b>X60T XGA (1024x768):</b> <ul> <li>BOE-Hydis HV121X03-100: #</li> </ul> </li> <li> - <b>X60T SXGA+:</b> + <b>X60T SXGA+ (1400x1050):</b> <ul> <li>BOE-Hydis HV121P01-100: #</li> </ul> </li> <li> - <b>T60 14" XGA:</b> + <b>T60 14" XGA (1024x768):</b> <ul> <li>Samsung LTN141XA-L01: #</li> <li>CMO N141XC: #</li> @@ -241,7 +375,7 @@ </ul> </li> <li> - <b>T60 14" SXGA+</b> + <b>T60 14" SXGA+ (1400x1050):</b> <ul> <li>TMD-Toshiba LTD141EN9B: #</li> <li>Samsung LTN141P4-L02: #</li> @@ -249,24 +383,23 @@ </ul> </li> <li> - <b>T60 15" XGA</b> + <b>T60 15" XGA (1024x768):</b> <ul> <li>Samsung LTN150XG-L08: #</li> <li>LG-Philips LP150X09: #</li> <li>13N7068 (IDtech): #</li> <li>13N7069 (CMO): #</li> - </ul> </li> <li> - <b>T60 15" SXGA+</b> + <b>T60 15" SXGA+ (1400x1050):</b> <ul> <li>LG-Philips LP150E05-A2K1: #</li> <li>BOE-Hydis HV150P01-100: #</li> </ul> </li> <li> - <b>T60 15" UXGA</b> + <b>T60 15" UXGA (1600x1200):</b> <ul> <li>BOE-Hydis HV150UX1-100: #</li> <li>IDTech N150U3-L01: #</li> @@ -274,7 +407,7 @@ </ul> </li> <li> - <b>T50 15" QXGA</b> + <b>T60 15" QXGA (2048x1536):</b> <ul> <li>IDtech IAQX10N: #</li> <li>IDtech IAQX10S: #</li> @@ -282,175 +415,69 @@ </li> </ul> - <p><a href="#pagetop">Back to top of page</a></p> - -<hr/> - - <h1 id="intelvbttool_results">intelvbttool test results (VGA ROM dumps)</h1> - <p> - The VBIOS on i945 (intel gpu) platforms is self-modifying; that is, - its contents change when you run it. intelvbttool takes a dump of - the currently running vbios, and parses it. - </p> - - <p> - The idea is that we can extract the VBT tables using this knowledge, on the X60, X60 Tablet and T60 (Intel GPU). - </p> - - <p> - Here is an example of how VBT was implemented on the ThinkPad X230: - <a href="http://review.coreboot.org/#/c/5396">http://review.coreboot.org/#/c/5396</a>. - </p> + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> + + <div class="section"> + + <h1 id="fallback_patches">Fallback patches</h1> - <p> - You'll need to build a T60 ROM with SeaBIOS and the VGA ROM (for Intel GPU). An X60 ROM is also needed (same configuration, using the VGA ROM for X60). - </p> + <ul> + <li> + Todo: test gnutoo's fallback patches: <a href="http://www.coreboot.org/Fallback_mechanism">http://www.coreboot.org/Fallback_mechanism</a> + (some parts use systemd. adapt for upstart, which is what trisquel uses)<br/> + see <a href="gnutoo_fallback_patch">this IRC log</a> (warning, not cleaned up) + </li> + </ul> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> + + <div class="section"> - <p> - T60 has DVI on its dock, make sure that the dock is attached when getting this output. - </p> + <h1 id="other">Other - unlisted (low priority)</h1> + + <ul> + <li> + PTE errors still exist on i945 with 6718 (which is merged). <a href="http://review.coreboot.org/#/c/6718/">http://review.coreboot.org/#/c/6718/</a> + <ul> + <li><a href="future/dumps/pte_x60_6718/dmesg">dmesg</a></li> + <li><a href="future/dumps/pte_x60_6718/kern.log">kern.log</a></li> + <li>This doesn't seem to cause any issues for general use.</li> + </ul> + </li> + <li> + Implement INT 10H support in i945 native graphics. (this will be a lot of work. SeaBIOS has code for some geode boards, to get a general idea). + </li> + <li> + T60 15" QXGA (2048x1536): fixed issue where GRUB wouldn't show any graphics. (Not many people have this panel) + <ul> + <li>It might be the same issue I ran into with Paul on the X60 (not enough memory being allocated) since the same code works on T60 SXGA+ and UXGA, where GRUB actually display graphics.</li> + </ul> + </li> + </ul> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> - <p> - Get intelvbttool here: <a href="http://review.coreboot.org/#/c/5842">http://review.coreboot.org/#/c/5842</a> (util/intelvbttool). - </p> + <div class="section"> <p> - Now dump a copy of the running VGA BIOS: - <b>$ sudo dd if=/dev/mem bs=64k of=runningvga.bin skip=12 count=1</b><br/> - Then do (and record the output):<br/> - <b>$ ./intelvbttool runningvga.bin > intelvbttool_out</b> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. </p> <p> - Backup both files (runningvga.bin and intelvbttool_out), renaming them to match the machine and LCD panel used. - <a href="../misc/index.html#get_edid_panelname">../misc/index.html#get_edid_panelname</a> will show you how to get the name (model) of the LCD panel used. + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. </p> - - <h2>Test results (# means untested and all had docks, unless noted).</h2> - - <ul> - <li> - <b>X60/X60s:</b> - <ul> - <li>TMD-Toshiba LTD121ECHB: #</li> - <li>CMO N121X5-L06: #</li> - <li>Samsung LTN121XJ-L07: #</li> - <li>BOE-Hydis HT121X01-101: #</li> - </ul> - </li> - <li> - <b>X60T XGA (1024x768):</b> - <ul> - <li>BOE-Hydis HV121X03-100: #</li> - </ul> - </li> - <li> - <b>X60T SXGA+ (1400x1050):</b> - <ul> - <li>BOE-Hydis HV121P01-100: #</li> - </ul> - </li> - <li> - <b>T60 14" XGA (1024x768):</b> - <ul> - <li>Samsung LTN141XA-L01: #</li> - <li>CMO N141XC: #</li> - <li>BOE-Hydis HT14X14: #</li> - <li>TMD-Toshiba LTD141ECMB: #</li> - </ul> - </li> - <li> - <b>T60 14" SXGA+ (1400x1050):</b> - <ul> - <li>TMD-Toshiba LTD141EN9B: #</li> - <li>Samsung LTN141P4-L02: #</li> - <li>Boe-Hydis HT14P12: #</li> - </ul> - </li> - <li> - <b>T60 15" XGA (1024x768):</b> - <ul> - <li>Samsung LTN150XG-L08: #</li> - <li>LG-Philips LP150X09: #</li> - <li>13N7068 (IDtech): #</li> - <li>13N7069 (CMO): #</li> - </ul> - </li> - <li> - <b>T60 15" SXGA+ (1400x1050):</b> - <ul> - <li>LG-Philips LP150E05-A2K1: #</li> - <li>BOE-Hydis HV150P01-100: #</li> - </ul> - </li> - <li> - <b>T60 15" UXGA (1600x1200):</b> - <ul> - <li>BOE-Hydis HV150UX1-100: #</li> - <li>IDTech N150U3-L01: #</li> - <li>BOE-Hydis HV150UX1-102: #</li> - </ul> - </li> - <li> - <b>T60 15" QXGA (2048x1536):</b> - <ul> - <li>IDtech IAQX10N: #</li> - <li>IDtech IAQX10S: #</li> - </ul> - </li> - </ul> - - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> - - <h1 id="fallback_patches">Fallback patches</h1> - - <ul> - <li> - Todo: test gnutoo's fallback patches: <a href="http://www.coreboot.org/Fallback_mechanism">http://www.coreboot.org/Fallback_mechanism</a> - (some parts use systemd. adapt for upstart, which is what trisquel uses)<br/> - see <a href="gnutoo_fallback_patch">this IRC log</a> (warning, not cleaned up) - </li> - </ul> -<hr/> - - <h1 id="other">Other - unlisted (low priority)</h1> - - <ul> - <li> - PTE errors still exist on i945 with 6718 (which is merged). <a href="http://review.coreboot.org/#/c/6718/">http://review.coreboot.org/#/c/6718/</a> - <ul> - <li><a href="future/dumps/pte_x60_6718/dmesg">dmesg</a></li> - <li><a href="future/dumps/pte_x60_6718/kern.log">kern.log</a></li> - <li>This doesn't seem to cause any issues for general use.</li> - </ul> - </li> - <li> - Implement INT 10H support in i945 native graphics. (this will be a lot of work. SeaBIOS has code for some geode boards, to get a general idea). - </li> - <li> - T60 15" QXGA (2048x1536): fixed issue where GRUB wouldn't show any graphics. (Not many people have this panel) - <ul> - <li>It might be the same issue I ran into with Paul on the X60 (not enough memory being allocated) since the same code works on T60 SXGA+ and UXGA, where GRUB actually display graphics.</li> - </ul> - </li> - </ul> - -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + </div> </body> </html> diff --git a/docs/future/old.html b/docs/future/old.html index eeaa96e1..0f77a0aa 100644 --- a/docs/future/old.html +++ b/docs/future/old.html @@ -16,256 +16,272 @@ <body> - <header> - <h1 id="pagetop">Development notes (old/obsolete notes)</h1> - <aside>For current notes, see <a href="index.html">index.html</a>.</aside> - </header> - - <p> - These are old (obsolete) notes that mare kept because they might become useful again in the future. - </p> - -<hr/> - - <h2>Contents</h2> - <ul> - <li><a href="#x60_native_notes">X60 native graphics initialization (backlight controls)</a></li> - <li><a href="#t60_native_notes">T60 native graphics initialization (backlight controls)</a></li> - <li><a href="#5320_kernel312fix">i945: 3D fix (based on 5927) for kernel 3.12+ on 5320</a></li> - <li><a href="#x60_cb5927_testing">i945/x60: coreboot 5927 testing (3D fix for kernel 3.12+ on replay code)</a></li> - </ul> + <div class="section"> -<hr/> + <h1 id="pagetop">Development notes (old/obsolete notes)</h1> + <p> + For current notes, see <a href="index.html">index.html</a>. + </p> - <h1 id="x60_native_notes">X60 native graphics initialization (with backlight controls)</h1> + <p> + These are old (obsolete) notes that mare kept because they might become useful again in the future. + </p> + + </div> - <p> - <b> - This is now obsolete. A better way was found (included in libreboot): <a href="http://review.coreboot.org/#/c/6731/">http://review.coreboot.org/#/c/6731/</a> - </b> - </p> + <div class="section"> + + <h1>Table of contents</h1> + <ul> + <li><a href="#x60_native_notes">X60 native graphics initialization (backlight controls)</a></li> + <li><a href="#t60_native_notes">T60 native graphics initialization (backlight controls)</a></li> + <li><a href="#5320_kernel312fix">i945: 3D fix (based on 5927) for kernel 3.12+ on 5320</a></li> + <li><a href="#x60_cb5927_testing">i945/x60: coreboot 5927 testing (3D fix for kernel 3.12+ on replay code)</a></li> + </ul> + + </div> + + <div class="section"> + + <h1 id="x60_native_notes">X60 native graphics initialization (with backlight controls)</h1> - <p> - <b><i>Also check <a href="#5320_kernel312fix">#5320_kernel312fix</a> (to fix 3D on kernel 3.12/higher)</i></b> - </p> - <p> - <b>The fix below was done on 5320/6 (from review.coreboot.org) but should work just fine on later versions of 5320.</b> - </p> - <p> - Native gpu init + backlight controls! (Fn keys). Also confirmed on X60 Tablet (1024x768) and X60 Tablet (1400x1050) - </p> - <p> - <b>Add backlight controls:</b> in <i>src/mainboard/lenovo/x60/devicetree.cb</i>, change <b>gpu_backlight</b> to <b>0x879F879E</b> - </p> - <p> - That's all! <b>This has also been backported into libreboot 5th release (line 1233 in src/mainboard/lenovo/x60/i915io.c)</b>. GNUtoo (Denis Carikli) - told me about the register <b>BLC_PWM_CTL</b> and that you could set it to control backlight. I read that address using devmem2 while running the VBIOS:<br/> - <b># devmem2 0xe4361254 w</b> - </p> - <p> - The change is also included in libreboot 6. - </p> - <p> - When doing this, it gave back that value. The same trick was used to get backlight controls for T60 (see <a href="#t60_native_notes">#t60_native_notes</a>). - </p> + <p> + <b> + This is now obsolete. A better way was found (included in libreboot): <a href="http://review.coreboot.org/#/c/6731/">http://review.coreboot.org/#/c/6731/</a> + </b> + </p> - <h2>Further notes</h2> <p> - Reading <b>0xe4361254</b> (address) in Lenovo BIOS always yields FFFFFFFF, even when writing to it (and writing to it doesn't affect brightness controls). - 'mtjm' on IRC found that the buttons (Fn keys) control /sys/class/backlight/acpi_video0 which has no affect on 61254 (BLC_PWM_CTL). He says - intel_backlight has different values and uses the register. devmem2 works, needs checking <b>lspci -vv</b> for where the memory is mapped, - which is different than on coreboot; mtjm found that it was 0xec061254 on his machine (X60 Tablet), and the register value is different too. - <b>This is relevant, because we still don't know how backlight controls are actually handled. We got it working by accident. We need to know more.</b>. + <b><i>Also check <a href="#5320_kernel312fix">#5320_kernel312fix</a> (to fix 3D on kernel 3.12/higher)</i></b> </p> <p> - Intel-gpu-tools may prove useful for further debugging: <a href="http://cgit.freedesktop.org/xorg/app/intel-gpu-tools/">http://cgit.freedesktop.org/xorg/app/intel-gpu-tools/</a> + <b>The fix below was done on 5320/6 (from review.coreboot.org) but should work just fine on later versions of 5320.</b> </p> <p> - mtjm says 0xe4300000 is an MMIO region of the gpu (lspci -vv shows it), 0x61254 (BLC_PWM_CTL) is a documented register. Searching the kernel driver for backlight - shows that in intel_panel.c this register is used (there is an XXX comment about finding the right value, where recent kernels get it from. + Native gpu init + backlight controls! (Fn keys). Also confirmed on X60 Tablet (1024x768) and X60 Tablet (1400x1050) </p> <p> - What we want to do is calculate a good value, instead of setting it in devicetree.cb. mtjm says about backlight physics: - it has a light source , uses pulse width modulation (PWM) to turn it on/off, dimming is done by spending less time on. - <b>Note: this may not be correct; he says his understanding is based on how the Lenote yeeloong works</b>. + <b>Add backlight controls:</b> in <i>src/mainboard/lenovo/x60/devicetree.cb</i>, change <b>gpu_backlight</b> to <b>0x879F879E</b> </p> <p> - mtjm goes on to say, that the register specifies the frequency used for PWM in its depending on the GPU core frequency, so it - might be possible to calculate it without hardcoded laptop-specific values. Therefore, I am supposed to find out the 'display core frequency' - (mtjm says there might be a register for it; also, it might be in 5320 or the replay code) and the PWM modulation frequency. - https://en.wikipedia.org/wiki/Backlight#Flicker_due_to_backlight_dimming + That's all! <b>This has also been backported into libreboot 5th release (line 1233 in src/mainboard/lenovo/x60/i915io.c)</b>. GNUtoo (Denis Carikli) + told me about the register <b>BLC_PWM_CTL</b> and that you could set it to control backlight. I read that address using devmem2 while running the VBIOS:<br/> + <b># devmem2 0xe4361254 w</b> </p> <p> - phcoder (Vladimir Serbinenko) who is author of 5320 (review.coreboot.org) talks about 'duty cycle limit' and 'flickering frequency'. + The change is also included in libreboot 6. + </p> + <p> + When doing this, it gave back that value. The same trick was used to get backlight controls for T60 (see <a href="#t60_native_notes">#t60_native_notes</a>). </p> - <p><a href="#pagetop">Back to top of page</a></p> - -<hr/> + <h2>Further notes</h2> + <p> + Reading <b>0xe4361254</b> (address) in Lenovo BIOS always yields FFFFFFFF, even when writing to it (and writing to it doesn't affect brightness controls). + 'mtjm' on IRC found that the buttons (Fn keys) control /sys/class/backlight/acpi_video0 which has no affect on 61254 (BLC_PWM_CTL). He says + intel_backlight has different values and uses the register. devmem2 works, needs checking <b>lspci -vv</b> for where the memory is mapped, + which is different than on coreboot; mtjm found that it was 0xec061254 on his machine (X60 Tablet), and the register value is different too. + <b>This is relevant, because we still don't know how backlight controls are actually handled. We got it working by accident. We need to know more.</b>. + </p> + <p> + Intel-gpu-tools may prove useful for further debugging: <a href="http://cgit.freedesktop.org/xorg/app/intel-gpu-tools/">http://cgit.freedesktop.org/xorg/app/intel-gpu-tools/</a> + </p> + <p> + mtjm says 0xe4300000 is an MMIO region of the gpu (lspci -vv shows it), 0x61254 (BLC_PWM_CTL) is a documented register. Searching the kernel driver for backlight + shows that in intel_panel.c this register is used (there is an XXX comment about finding the right value, where recent kernels get it from. + </p> + <p> + What we want to do is calculate a good value, instead of setting it in devicetree.cb. mtjm says about backlight physics: + it has a light source , uses pulse width modulation (PWM) to turn it on/off, dimming is done by spending less time on. + <b>Note: this may not be correct; he says his understanding is based on how the Lenote yeeloong works</b>. + </p> + <p> + mtjm goes on to say, that the register specifies the frequency used for PWM in its depending on the GPU core frequency, so it + might be possible to calculate it without hardcoded laptop-specific values. Therefore, I am supposed to find out the 'display core frequency' + (mtjm says there might be a register for it; also, it might be in 5320 or the replay code) and the PWM modulation frequency. + https://en.wikipedia.org/wiki/Backlight#Flicker_due_to_backlight_dimming + </p> + <p> + phcoder (Vladimir Serbinenko) who is author of 5320 (review.coreboot.org) talks about 'duty cycle limit' and 'flickering frequency'. + </p> + + <p><a href="#pagetop">Back to top of page</a></p> + + </div> + + <div class="section"> + + <h1 id="t60_native_notes">T60 native graphics initialization (with backlight controls)</h1> - <h1 id="t60_native_notes">T60 native graphics initialization (with backlight controls)</h1> + <p> + <b> + This is now obsolete. A better way was found (included in libreboot): <a href="http://review.coreboot.org/#/c/6731/">http://review.coreboot.org/#/c/6731/</a> + </b> + </p> + <p> + <b><i>Also check <a href="#5320_kernel312fix">#5320_kernel312fix</a> (to fix 3D on kernel 3.12/higher)</i></b> + </p> + <p> + <b>The fix below was done on an earlier version of 5345 changeset (review.coreboot.org), but should work on the current version. it is included in libreboot 6</b> + </p> + <p> + <b>Add backlight controls:</b> in <i>src/mainboard/lenovo/t60/devicetree.cb</i>, change <b>gpu_backlight</b> to <b>0x58BF58BE</b> + </p> + <p> + Hold on! Check <a href="../misc/index.html#get_edid_panelname">../misc/index.html#get_edid_panelname</a> to know what LCD panel you have. This is important for the next step! + </p> - <p> - <b> - This is now obsolete. A better way was found (included in libreboot): <a href="http://review.coreboot.org/#/c/6731/">http://review.coreboot.org/#/c/6731/</a> - </b> - </p> - <p> - <b><i>Also check <a href="#5320_kernel312fix">#5320_kernel312fix</a> (to fix 3D on kernel 3.12/higher)</i></b> - </p> - <p> - <b>The fix below was done on an earlier version of 5345 changeset (review.coreboot.org), but should work on the current version. it is included in libreboot 6</b> - </p> - <p> - <b>Add backlight controls:</b> in <i>src/mainboard/lenovo/t60/devicetree.cb</i>, change <b>gpu_backlight</b> to <b>0x58BF58BE</b> - </p> - <p> - Hold on! Check <a href="../misc/index.html#get_edid_panelname">../misc/index.html#get_edid_panelname</a> to know what LCD panel you have. This is important for the next step! - </p> + <h2>Supported panels</h2> + <p> + <a href="../hcl/index.html#supported_t60_list">../hcl/index.html#supported_t60_list</a>. + </p> - <h2>Supported panels</h2> <p> - <a href="../hcl/index.html#supported_t60_list">../hcl/index.html#supported_t60_list</a>. + See <a href="index.html#lcd_i945_incompatibility">index.html#lcd_i945_incompatibility</a>. </p> + + <p><a href="#pagetop">Back to top of page</a></p> + + </div> - <p> - See <a href="index.html#lcd_i945_incompatibility">index.html#lcd_i945_incompatibility</a>. - </p> - - <p><a href="#pagetop">Back to top of page</a></p> - -<hr/> + <div class="section"> - <h1 id="5320_kernel312fix">i945: 3D fix (based on 5927) for kernel 3.12+ on 5320</h1> + <h1 id="5320_kernel312fix">i945: 3D fix (based on 5927) for kernel 3.12+ on 5320</h1> - <p> - <b> - This is now obsolete. Merged in coreboot: <a href="http://review.coreboot.org/#/c/5927/">http://review.coreboot.org/#/c/5927/</a> - </b> - </p> + <p> + <b> + This is now obsolete. Merged in coreboot: <a href="http://review.coreboot.org/#/c/5927/">http://review.coreboot.org/#/c/5927/</a> + </b> + </p> - <p><b>This needs to be rewritten (or better organized, or deleted?)</b>. This is also now included in libreboot 6 (using the proper way, not the 7c0000 method which was a hack)</p> + <p><b>This needs to be rewritten (or better organized, or deleted?)</b>. This is also now included in libreboot 6 (using the proper way, not the 7c0000 method which was a hack)</p> - <p> - <b>This was done on 5320/6 so far. The fix below is for 5320/6 which is now obsolete. This needs to be re-done for the latest version - of 5320. The fix below is (in practise) only for reference, therefore.</b> - </p> + <p> + <b>This was done on 5320/6 so far. The fix below is for 5320/6 which is now obsolete. This needs to be re-done for the latest version + of 5320. The fix below is (in practise) only for reference, therefore.</b> + </p> - <p> - See <a href="#x60_cb5927_testing">#x60_cb5927_testing</a> for the original (and current) fix, for the replay code. Now we want - to implement that on top of <a href="http://review.coreboot.org/#/c/5320">http://review.coreboot.org/#/c/5320</a> - which is the current code for native graphics initialization on i945. - </p> + <p> + See <a href="#x60_cb5927_testing">#x60_cb5927_testing</a> for the original (and current) fix, for the replay code. Now we want + to implement that on top of <a href="http://review.coreboot.org/#/c/5320">http://review.coreboot.org/#/c/5320</a> + which is the current code for native graphics initialization on i945. + </p> - <p> - src/northbridge/intel/i945/gma.c (using the 7c0000 hack) on 5320: <a href="dumps/5320_7c0000_gma.c">5320_7c0000_gma.c</a> (rename it to gma.c, - replacing the current one). - </p> + <p> + src/northbridge/intel/i945/gma.c (using the 7c0000 hack) on 5320: <a href="dumps/5320_7c0000_gma.c">5320_7c0000_gma.c</a> (rename it to gma.c, + replacing the current one). + </p> - <p> - The above is a hack (as is the original). A better (more correct) method is implemented in later versions of 5927, so - that should also be adapted for 5320. For now, you can use the above fix. - </p> + <p> + The above is a hack (as is the original). A better (more correct) method is implemented in later versions of 5927, so + that should also be adapted for 5320. For now, you can use the above fix. + </p> - <p> - The correct way to do it is to set gtt address to (end of stolen memory - gtt size), which is what later versions of 5927 do (successfully). - </p> + <p> + The correct way to do it is to set gtt address to (end of stolen memory - gtt size), which is what later versions of 5927 do (successfully). + </p> - <p> - Here is some debugging output using intel_gpu_tools v1.2-1 (from trisquel repositories) using tool "intel_gtt": - </p> + <p> + Here is some debugging output using intel_gpu_tools v1.2-1 (from trisquel repositories) using tool "intel_gtt": + </p> - <ul> - <li> - Trisquel 6. kernel 3.14.4: - <ul> - <li>with libreboot 5th release (using the 7c0000 gtt hack from 5927/3): <a href="http://paste.debian.net/104306">http://paste.debian.net/104306</a></li> - <li>with coreboot+vgarom: <a href="http://paste.debian.net/104309">http://paste.debian.net/104309</a></li> - </ul> - </li> - <li> - Trisquel 6. kernel 3.2.0-60 (from Trisquel repositories): - <ul> - <li>with coreboot (no vbios or native init): <a href="http://paste.debian.net/104341">http://paste.debian.net/104341</a></li> - </ul> - </li> - </ul> + <ul> + <li> + Trisquel 6. kernel 3.14.4: + <ul> + <li>with libreboot 5th release (using the 7c0000 gtt hack from 5927/3): <a href="http://paste.debian.net/104306">http://paste.debian.net/104306</a></li> + <li>with coreboot+vgarom: <a href="http://paste.debian.net/104309">http://paste.debian.net/104309</a></li> + </ul> + </li> + <li> + Trisquel 6. kernel 3.2.0-60 (from Trisquel repositories): + <ul> + <li>with coreboot (no vbios or native init): <a href="http://paste.debian.net/104341">http://paste.debian.net/104341</a></li> + </ul> + </li> + </ul> + + <p><a href="#pagetop">Back to top of page</a></p> + + </div> + + <div class="section"> + + <h1 id="x60_cb5927_testing">i945/X60: Coreboot 5927 testing (3D fix for kernel 3.12+ on replay code)</h1> - <p><a href="#pagetop">Back to top of page</a></p> + <p> + <b> + This is now obsolete. Merged in coreboot: <a href="http://review.coreboot.org/#/c/5927/">http://review.coreboot.org/#/c/5927/</a> + </b> + </p> -<hr/> + <p><b>The latest version as-is (5927/11) has not been tested by me yet. Always boot with 'drm.debug=0x06' kernel parameter when testing this.</b></p> - <h1 id="x60_cb5927_testing">i945/X60: Coreboot 5927 testing (3D fix for kernel 3.12+ on replay code)</h1> + <p> + This is the fix for 3D on kernel 3.12 and higher on i945 (ThinkPad X60 in this case). This is for the replay code. + Libreboot 5th release has a version of this backported already (based on 5927/3 using the '7c0000' hack). + </p> - <p> - <b> - This is now obsolete. Merged in coreboot: <a href="http://review.coreboot.org/#/c/5927/">http://review.coreboot.org/#/c/5927/</a> - </b> - </p> + <p> + <b> + The replay code is obsolete (see 5320 changeset on review.coreboot.org for better version + which supports more machines/screens, and then 5345 for T60). Information here for reference since that is where the fix was first applied. + </b> + </p> - <p><b>The latest version as-is (5927/11) has not been tested by me yet. Always boot with 'drm.debug=0x06' kernel parameter when testing this.</b></p> + <p> + Read the information on <a href="http://review.coreboot.org/#/c/5927/">http://review.coreboot.org/#/c/5927/</a>. + </p> - <p> - This is the fix for 3D on kernel 3.12 and higher on i945 (ThinkPad X60 in this case). This is for the replay code. - Libreboot 5th release has a version of this backported already (based on 5927/3 using the '7c0000' hack). - </p> + <p> + For historical purposes, here is a collection of IRC logs that once existed on this page, related to the issue: + <a href="dumps/kernel312_irc">kernel312_irc</a>. + </p> - <p> - <b> - The replay code is obsolete (see 5320 changeset on review.coreboot.org for better version - which supports more machines/screens, and then 5345 for T60). Information here for reference since that is where the fix was first applied. - </b> - </p> + <p> + PGETBL_CTL differs between VBIOS (-) and native graphics init (+).<br/> - <p> - Read the information on <a href="http://review.coreboot.org/#/c/5927/">http://review.coreboot.org/#/c/5927/</a>. - </p> + - PGETBL_CTL: 0x3ffc0001<br/> + + PGETBL_CTL: 0x3f800001 + </p> + <p>GTT (graphics translation table) size is PGETBL_save, max 256 KiB. BSM (Base of Stolen Memory) is given by the bios.</p> + + <ul> + <li>5927/7: <a href="dumps/5927_7.tar.gz">5927_7.tar.gz</a> (GRUB graphics are correct now, and 3D still works)</li> + <li>5927/6: <a href="dumps/5927_6.tar.gz">5927_6.tar.gz</a> (GRUB graphics still corrupt, 3D/everything still works after GRUB)</li> + <li>5927/5: <a href="dumps/5927_5.tar.gz">5927_5.tar.gz</a> (GRUB graphics corrupt, 3D/everything still works after GRUB)</li> + <li>5927/3: <a href="dumps/5927_3.tar.gz">5927_3.tar.gz</a> (3D still works! kernel 3.14.4) - the '7c0000' hack</li> + <li>5927/2: <a href="dumps/5927_2.tar.gz">5927_2.tar.gz</a> (3D works! kernel 3.14.4) - the '7c0000' hack</li> + <li> + 5927/1 (didn't fix the 3D issue): + <ul> + <li><a href="dumps/5927_cbmemc">cbmem -c</a></li> + <li><a href="dumps/5927_crashdump">/sys/class/drm/card0/error</a></li> + <li><a href="dumps/5927_config">.config</a></li> + </ul> + </li> + </ul> + + <p><a href="#pagetop">Back to top of page</a></p> + + </div> + + <div class="section"> + <p> - For historical purposes, here is a collection of IRC logs that once existed on this page, related to the issue: - <a href="dumps/kernel312_irc">kernel312_irc</a>. + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. </p> <p> - PGETBL_CTL differs between VBIOS (-) and native graphics init (+).<br/> - - - PGETBL_CTL: 0x3ffc0001<br/> - + PGETBL_CTL: 0x3f800001 + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. </p> - - <p>GTT (graphics translation table) size is PGETBL_save, max 256 KiB. BSM (Base of Stolen Memory) is given by the bios.</p> - - <ul> - <li>5927/7: <a href="dumps/5927_7.tar.gz">5927_7.tar.gz</a> (GRUB graphics are correct now, and 3D still works)</li> - <li>5927/6: <a href="dumps/5927_6.tar.gz">5927_6.tar.gz</a> (GRUB graphics still corrupt, 3D/everything still works after GRUB)</li> - <li>5927/5: <a href="dumps/5927_5.tar.gz">5927_5.tar.gz</a> (GRUB graphics corrupt, 3D/everything still works after GRUB)</li> - <li>5927/3: <a href="dumps/5927_3.tar.gz">5927_3.tar.gz</a> (3D still works! kernel 3.14.4) - the '7c0000' hack</li> - <li>5927/2: <a href="dumps/5927_2.tar.gz">5927_2.tar.gz</a> (3D works! kernel 3.14.4) - the '7c0000' hack</li> - <li> - 5927/1 (didn't fix the 3D issue): - <ul> - <li><a href="dumps/5927_cbmemc">cbmem -c</a></li> - <li><a href="dumps/5927_crashdump">/sys/class/drm/card0/error</a></li> - <li><a href="dumps/5927_config">.config</a></li> - </ul> - </li> - </ul> - - <p><a href="#pagetop">Back to top of page</a></p> - -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + + </div> </body> </html> diff --git a/docs/git/index.html b/docs/git/index.html index 1239adaa..cc61384b 100644 --- a/docs/git/index.html +++ b/docs/git/index.html @@ -8,645 +8,681 @@ @import url('../css/main.css'); </style> - <title>Developing libreboot</title> + <title>Building libreboot from source</title> </head> <body> - <h1 id="pagetop">Developing libreboot</h1> - <p> - This section relates to building libreboot from source, and - working with the git repository. - </p> - <p> - Or <a href="../index.html">Back to main index</a>. - </p> - <ul> - <li><a href="#build_dependencies">Install build dependencies</a></li> - <li><a href="#build_meta">Get the full source code from metadata (git clone)</a></li> - <li><a href="#build_bucts">How to build "bucts" (for LenovoBIOS X60/X60S/X60T/T60)</a></li> - <li><a href="#build_flashrom">How to build "flashrom"</a></li> - <li> - <a href="#config">Configuring libreboot</a> - <ul> - <li><a href="#config_dmidecode">dmidecode</a></li> - <li><a href="#config_x60">ThinkPad X60, X60S and X60 Tablet</a></li> - <li><a href="#config_t60">ThinkPad T60</a></li> - <li><a href="#config_x200">ThinkPad X200</a></li> - <li><a href="#config_macbook21">MacBook2,1</a></li> - <li><a href="#config_qemu_i440fx_piix4">QEMU (x86 i440fx/piix4)</a></li> - <li><a href="#config_qemu_q35_ich9">QEMU (x86 q35/ich9)</a></li> - </ul> - </li> - <li><a href="#build">How to build the ROM images</a></li> - <li><a href="#build_addseabios">Add SeaBIOS to the ROM images</a></li> - </ul> - -<hr/> - - <h1 id="build_dependencies">Install build dependencies</h1> - - <p> - Before doing anything, you need the dependencies first. This is true if - you want to build libreboot from source, with either libreboot_src.tar.xz or git. - <b>If you are using libreboot_bin.tar.xz (binary archive) then you can ignore this, because - ROM images and statically compiled executables for the utilities are included.</b> - </p> + <div class="section"> + <h1 id="pagetop">Building libreboot from source</h1> + <p> + This section relates to building libreboot from source, and + working with the git repository. + </p> + <p> + Or <a href="../index.html">Back to main index</a>. + </p> <ul> - <li><b>deps-trisquel</b> script installs dependencies for Trisquel 6 (also tested in Trisquel 7).</li> + <li><a href="#build_dependencies">Install build dependencies</a></li> + <li><a href="#build_meta">Get the full source code from metadata (git clone)</a></li> + <li><a href="#build_bucts">How to build "bucts" (for LenovoBIOS X60/X60S/X60T/T60)</a></li> + <li><a href="#build_flashrom">How to build "flashrom"</a></li> + <li> + <a href="#config">Configuring libreboot</a> + <ul> + <li><a href="#config_dmidecode">dmidecode</a></li> + <li><a href="#config_x60">ThinkPad X60, X60S and X60 Tablet</a></li> + <li><a href="#config_t60">ThinkPad T60</a></li> + <li><a href="#config_x200">ThinkPad X200</a></li> + <li><a href="#config_macbook21">MacBook2,1</a></li> + <li><a href="#config_qemu_i440fx_piix4">QEMU (x86 i440fx/piix4)</a></li> + <li><a href="#config_qemu_q35_ich9">QEMU (x86 q35/ich9)</a></li> + </ul> + </li> + <li><a href="#build">How to build the ROM images</a></li> + <li><a href="#build_addseabios">Add SeaBIOS to the ROM images</a></li> </ul> + </div> - <p> - For all other GNU/Linux distributions, you may have to adapt these scripts. By all means send patches! - </p> - - <p><a href="#pagetop">Back to top of page</a></p> - -<hr/> - - <h1 id="build_meta">Get the full source code from metadata (git clone)</h1> - - <p> - If you downloaded libreboot from git, then there are some steps to download and patch - the source code for all relevant dependencies. The archive in the git repository used to be - available as a tarball called 'libreboot_meta.tar.gz'. It contains 'metadata' (scripts) - which define how the source was created (where it came from). - </p> - - <p> - You can use the scripts included to download everything. - </p> - - <p> - First, <a href="#build_dependencies">install the build dependencies</a>. - </p> - - <p> - Since libreboot makes extensive use of git, you need to configure git properly. If you have not yet configured - git, then the minimum requirement is:<br/> - $ <b>git config --global user.name "Your Name"</b><br/> - $ <b>git config --global user.email your@emailaddress.com</b><br/> - This is what will also appear in git logs if you ever commit your own changes to a given repository. For - more information, see <a href="http://git-scm.com/doc">http://git-scm.com/doc</a>. - </p> - - <p> - Another nice config for you (optional, but recommended):<br/> - $ <b>git config --global core.editor nano</b><br/> - $ <b>git config --global color.status auto</b><br/> - $ <b>git config --global color.branch auto</b><br/> - $ <b>git config --global color.interactive auto</b><br/> - $ <b>git config --global color.diff auto</b> - </p> - - <p> - After that, run the get script:<br/> - <b>$ ./getall</b> - </p> - - <p> - What this did was download everything (grub, coreboot, memtest86+, bucts, flashrom) - at the versions last tested for this release, and patch them. Read the script - in a text editor to learn more. - </p> - - <p> - To build the ROM images, see <a href="#build">#build</a>. - </p> - - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> - - <h1 id="build_bucts">How to build "bucts" (for LenovoBIOS X60/X60S/X60T/T60)</h1> - - <p> - <b>This is for Lenovo BIOS users on the ThinkPad X60/X60S, X60 Tablet and T60. If you have coreboot or libreboot running already, ignore this.</b> - </p> - - <p> - Bucts is needed when flashing in software the X60/X60S/X60T/T60 ROM while Lenovo BIOS is running; - external flashing will be safe regardless. - Each ROM contains identical data inside the two final 64K region in the file. - This corresponds to the final two 64K regions in the flash chip. Lenovo BIOS will prevent you from writing the - final one, so running "<b>bucts 1</b>" will set the machine to boot from the other block instead (which - is writeable along with everything beneath it when using a patched flashrom. see <a href="#build_flashrom">#build_flashrom</a>). - After shutting down and booting up after the first flash, - the final 64K block is writeable so you flash the ROM again with an unpatched flashrom and run "<b>bucts 0</b>" to - make the machine boot from the normal (highest) block again. - </p> - - <p> - BUC.TS utility is included in libreboot_src.tar.xz and libreboot_bin.tar.xz.<br/> - <b>If you downloaded from git, follow <a href="#build_meta">#build_meta</a> before you proceed.</b> - </p> - - <p> - "BUC" means "<b>B</b>ack<b>u</b>p <b>C</b>ontrol" (it's a register) and "TS" means "<b>T</b>op <b>S</b>wap" - (it's a status bit). Hence "bucts" (BUC.TS). TS 1 and TS 0 corresponds to bucts 1 and bucts 0. - </p> - - <p> - If you have the binary release archive, you'll find executables under ./bucts/. Otherwise if you need to build from source, continue reading. - </p> - - <p> - First, <a href="#build_dependencies">install the build dependencies</a>. - </p> + <div class="section"> - <p> - To build bucts, do this in the main directory:<br/> - <b>$ ./builddeps-bucts</b> - </p> + <h1 id="build_dependencies">Install build dependencies</h1> - <p> - The "builddeps" script in libreboot_src also makes use of builddeps-bucts. - </p> + <p> + Before doing anything, you need the dependencies first. This is true if + you want to build libreboot from source, with either libreboot_src.tar.xz or git. + <b>If you are using libreboot_bin.tar.xz (binary archive) then you can ignore this, because + ROM images and statically compiled executables for the utilities are included.</b> + </p> + <ul> + <li><b>deps-trisquel</b> script installs dependencies for Trisquel 6 (also tested in Trisquel 7).</li> + </ul> - <p><a href="#pagetop">Back to top of page.</a></p> + <p> + For all other GNU/Linux distributions, you may have to adapt these scripts. By all means send patches! + </p> -<hr/> + <p><a href="#pagetop">Back to top of page</a></p> + + </div> - <h1 id="build_flashrom">How to build "flashrom"</h1> + <div class="section"> - <p> - Flashrom is the utility for flashing/dumping ROM images. This is what you will use to install libreboot. - </p> + <h1 id="build_meta">Get the full source code from metadata (git clone)</h1> - <p> - Flashrom source code is included in libreboot_src.tar.gz and libreboot_bin.tar.gz.<br/> - <b>If you downloaded from git, follow <a href="#build_meta">#build_meta</a> before you proceed.</b> - </p> - - <p> - If you are using the binary release archive, then there are already binaries included - under ./flashrom/. The flashing scripts will try to choose the correct one for you. Otherwise - if you wish to re-build flashrom from source, continue reading. - </p> + <p> + If you downloaded libreboot from git, then there are some steps to download and patch + the source code for all relevant dependencies. The archive in the git repository used to be + available as a tarball called 'libreboot_meta.tar.gz'. It contains 'metadata' (scripts) + which define how the source was created (where it came from). + </p> - <p> - First, <a href="#build_dependencies">install the build dependencies</a>. - </p> + <p> + You can use the scripts included to download everything. + </p> - <p> - To build it, do that in the main directory:<br/> - <b>$ ./builddeps-flashrom</b> - </p> + <p> + First, <a href="#build_dependencies">install the build dependencies</a>. + </p> + + <p> + Since libreboot makes extensive use of git, you need to configure git properly. If you have not yet configured + git, then the minimum requirement is:<br/> + $ <b>git config --global user.name "Your Name"</b><br/> + $ <b>git config --global user.email your@emailaddress.com</b><br/> + This is what will also appear in git logs if you ever commit your own changes to a given repository. For + more information, see <a href="http://git-scm.com/doc">http://git-scm.com/doc</a>. + </p> + + <p> + Another nice config for you (optional, but recommended):<br/> + $ <b>git config --global core.editor nano</b><br/> + $ <b>git config --global color.status auto</b><br/> + $ <b>git config --global color.branch auto</b><br/> + $ <b>git config --global color.interactive auto</b><br/> + $ <b>git config --global color.diff auto</b> + </p> - <p> - After you've done that, under ./flashrom/ you will find the following executables: - </p> - <ul> - <li> - <b>flashrom</b> - <ul> - <li>For flashing while coreboot or libreboot is running.</li> - </ul> - </li> - <li> - <b>flashrom_lenovobios_sst</b> - <ul> - <li>This is patched for flashing while Lenovo BIOS is running on an X60 or T60 with the SST25VF016B (SST) flash chip.</li> - </ul> - </li> - <li> - <b>flashrom_lenovobios_macronix</b> - <ul> - <li>This is patched for flashing while Lenovo BIOS is running on an X60 or T60 with the MX25L1605D (Macronix) flash chip.</li> - </ul> - </li> - </ul> + <p> + After that, run the get script:<br/> + <b>$ ./getall</b> + </p> - <p> - The "builddeps" script in libreboot_src also makes use of builddeps-flashrom. - </p> + <p> + What this did was download everything (grub, coreboot, memtest86+, bucts, flashrom) + at the versions last tested for this release, and patch them. Read the script + in a text editor to learn more. + </p> - <p><a href="#pagetop">Back to top of page.</a></p> + <p> + To build the ROM images, see <a href="#build">#build</a>. + </p> -<hr/> + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> - <h1 id="config">Configuring libreboot</h1> + <div class="section"> - <p> - Before building a ROM in libreboot (or coreboot, for that matter), you need to configure it. - This is done using the following inside the source tree:<br/> - $ <b>cd coreboot/</b><br/> - $ <b>make menuconfig</b> - </p> + <h1 id="build_bucts">How to build "bucts" (for LenovoBIOS X60/X60S/X60T/T60)</h1> - <p> - If you've already built a kernel before, you know how to use this interface. - </p> + <p> + <b>This is for Lenovo BIOS users on the ThinkPad X60/X60S, X60 Tablet and T60. If you have coreboot or libreboot running already, ignore this.</b> + </p> - <p> - Configurations are then saved as files called <b>".config"</b>. Copies of each configuration used - for each machine type by the libreboot build scripts are stored in resources/libreboot/config/ - </p> + <p> + Bucts is needed when flashing in software the X60/X60S/X60T/T60 ROM while Lenovo BIOS is running; + external flashing will be safe regardless. + Each ROM contains identical data inside the two final 64K region in the file. + This corresponds to the final two 64K regions in the flash chip. Lenovo BIOS will prevent you from writing the + final one, so running "<b>bucts 1</b>" will set the machine to boot from the other block instead (which + is writeable along with everything beneath it when using a patched flashrom. see <a href="#build_flashrom">#build_flashrom</a>). + After shutting down and booting up after the first flash, + the final 64K block is writeable so you flash the ROM again with an unpatched flashrom and run "<b>bucts 0</b>" to + make the machine boot from the normal (highest) block again. + </p> - <h2 id="config_dmidecode"> - dmidecode - </h2> <p> - There is certain information that can be useful to enter in particular: + BUC.TS utility is included in libreboot_src.tar.xz and libreboot_bin.tar.xz.<br/> + <b>If you downloaded from git, follow <a href="#build_meta">#build_meta</a> before you proceed.</b> </p> - <ul> - <li>Local version string</li> - <li>SMBIOS Serial Number</li> - <li>SMBIOS Manufacturer</li> - <li>SMBIOS Version</li> - <li>SMBIOS Product name</li> - </ul> + <p> - This information can be obtained using:<br/> - <b>$ sudo dmidecode</b><br/> - <b># dmidecode</b> + "BUC" means "<b>B</b>ack<b>u</b>p <b>C</b>ontrol" (it's a register) and "TS" means "<b>T</b>op <b>S</b>wap" + (it's a status bit). Hence "bucts" (BUC.TS). TS 1 and TS 0 corresponds to bucts 1 and bucts 0. </p> + <p> - Specifically, it's good practise to enter the same information for libreboot that you found when running this - with the original BIOS or firmware. <b>libreboot has already done this for you. This information is for reference, - in the hope that it will be useful.</b> + If you have the binary release archive, you'll find executables under ./bucts/. Otherwise if you need to build from source, continue reading. </p> - <h2 id="config_x60"> - ThinkPad X60, X60S and X60 Tablet configuration (file: resources/libreboot/config/x60/config) - </h2> - <ul> - <li>General setup / Expert mode = <i>enable</i></li> - <li>Mainboard / Mainboard vendor = <i>Lenovo</i></li> - <li>Mainboard / Mainboard model = <i>ThinkPad X60 / X60s / X60t</i></li> - <li>Mainboard / ROM chip size = <i>2048 KB (2 MB)</i></li> - <li>Chipset / Include CPU microcode in CBFS = <i>Do not include microcode updates</i></li> - <li>Devices / Use native graphics initialization = <i>enable</i></li> - <li> - Display / Keep VESA framebuffer = <i>disable</i> (disable for text-mode graphics, enable for coreboot vesa framebuffer) - <ul> - <li>Libreboot provides this with text-mode enabled by default, but it automatically patches a copy of the config at build time - to enable coreboot framebuffer for a separate set of ROM images, in each machine.</li> - </ul> - </li> - <li>Generic Drivers / Digitizer = <i>Autodetect</i></li> - <li>Generic Drivers / USB 2.0 EHCI debug dongle support = <i>Enable</i></li> - <li>Generic Drivers / Enable early (pre-RAM) usbdebug = <i>Enable</i></li> - <li>Generic Drivers / Type of dongle = <i>BeagleBone Black</i></li> - <li>Generic Drivers / Digitizer = <i>Present</i></li> - <li>Console / Send console output to a CBMEM buffer = <i>enable</i></li> - <li>Console / USB dongle log output = <i>enable</i></li> - <li>Payload / Add a payload = <i>An ELF executable payload</i></li> - <li>Payload / Payload path and filename = <i>grub.elf</i></li> - </ul> <p> - Now go back into Devices: + First, <a href="#build_dependencies">install the build dependencies</a>. </p> - <ul> - <li>Devices / Run VGA Option ROMs = <i>disable</i></li> - <li>Devices / Run Option ROMs on PCI devices = <i>disable</i></li> - </ul> + <p> - The resulting .config file was saved as resources/libreboot/config/<b>x60/config</b> and is used by the build - scripts for this machine. + To build bucts, do this in the main directory:<br/> + <b>$ ./builddeps-bucts</b> </p> + <p> - This configuration is used on all variants: X60, X60S and X60 Tablet. + The "builddeps" script in libreboot_src also makes use of builddeps-bucts. </p> - <h2 id="config_t60"> - ThinkPad T60 configuration (file: resources/libreboot/config/t60/config) - </h2> - <ul> - <li>General setup / Expert mode = <i>enable</i></li> - <li>General setup / Local version string = <i>79ETE7WW (2.27 )</i></li> - <li>Mainboard / Mainboard vendor = <i>Lenovo</i></li> - <li>Mainboard / Mainboard model = <i>ThinkPad T60 / T60p</i></li> - <li>Mainboard / ROM chip size = <i>2048 KB (2 MB)</i></li> - <li>System tables / SMBIOS Serial Number = <i>L3DKE06</i></li> - <li>System tables / SMBIOS Version Number = <i>ThinkPad T60</i></li> - <li>System tables / SMBIOS Manufacturer = <i>LENOVO</i></li> - <li>System tables / SMBIOS Product name = <i>1951FEG</i></li> - <li>Chipset / Include CPU microcode in CBFS = <i>Do not include microcode updates</i></li> - <li>Devices / Use native graphics initialization = <i>enable</i></li> - <li> - Display / Keep VESA framebuffer = <i>disable</i> (disable for text-mode graphics, enable for coreboot vesa framebuffer) - <ul> - <li>Libreboot provides this with text-mode enabled by default, but it automatically patches a copy of the config at build time - to enable coreboot framebuffer for a separate set of ROM images, in each machine.</li> - </ul> - </li> - <li>Generic Drivers / USB 2.0 EHCI debug dongle support = <i>Enable</i></li> - <li>Generic Drivers / Enable early (pre-RAM) usbdebug = <i>Enable</i></li> - <li>Generic Drivers / Type of dongle = <i>BeagleBone Black</i></li> - <li>Console / Send console output to a CBMEM buffer = <i>enable</i></li> - <li>Console / USB dongle log output = <i>enable</i></li> - <li>Payload / Add a payload = <i>An ELF executable payload</i></li> - <li>Payload / Payload path and filename = <i>grub.elf</i></li> - </ul> + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> + + <div class="section"> + + <h1 id="build_flashrom">How to build "flashrom"</h1> + <p> - Go back into Devices: + Flashrom is the utility for flashing/dumping ROM images. This is what you will use to install libreboot. </p> - <ul> - <li>Devices / Run VGA Option ROMs = <i>disable</i></li> - <li>Devices / Run Option ROMs on PCI devices = <i>disable</i></li> - </ul> - <p> - The resulting .config file was saved as resources/libreboot/config/<b>t60/config</b> and is used by the build - scripts for this machine. - </p> + <p> - It is believed that the motherboards on 14.1" and 15.1" T60s are the same, so the same configuration is used - on both the 14.1" and 15.1" T60s. + Flashrom source code is included in libreboot_src.tar.gz and libreboot_bin.tar.gz.<br/> + <b>If you downloaded from git, follow <a href="#build_meta">#build_meta</a> before you proceed.</b> </p> - <h2 id="config_x200"> - ThinkPad X200 configuration (file: resources/libreboot/config/x200_4mb/config and resources/libreboot/config/x200_8mb/config) - </h2> <p> - These are saved as two configs, because there are 2 size flash chips: 4MB or 8MB. + If you are using the binary release archive, then there are already binaries included + under ./flashrom/. The flashing scripts will try to choose the correct one for you. Otherwise + if you wish to re-build flashrom from source, continue reading. </p> - <ul> - <li>General / Expert mode = <i>enable</i></li> - <li>Mainboard / Mainboard vendor = <i>Lenovo</i></li> - <li>Mainboard / Mainboard model = <i>ThinkPad X200</i></li> - <li>Mainboard / ROM chip size = <i>4096 KB (4 MB)</i> or <i>8192 KB (8 MB)</i> depending on flash chip size</li> - <li>Chipset / Include CPU microcode in CBFS = <i>Do not include microcode updates</i></li> - <li>Chipset / Size of CBFS filesystem in ROM = byte size <i>0x7FD000</i> (for 8MB flash chip) or <i>3FD000</i> (for 4MB flash chip)</li> - <li>Devices / Use native graphics initialization = <i>enable</i></li> - <li> - Display / Keep VESA framebuffer = <i>disable</i> (disable for text-mode graphics, enable for coreboot vesa framebuffer) - <ul> - <li>Libreboot provides this with text-mode enabled by default, but it automatically patches a copy of the config at build time - to enable coreboot framebuffer for a separate set of ROM images, in each machine.</li> - </ul> - </li> - <li>Generic Drivers / USB 2.0 EHCI debug dongle support = <i>Enable</i></li> - <li>Generic Drivers / Enable early (pre-RAM) usbdebug = <i>Enable</i></li> - <li>Generic Drivers / Type of dongle = <i>BeagleBone Black</i></li> - <li>Console / Send console output to a CBMEM buffer = <i>enable</i></li> - <li>Console / USB dongle log output = <i>enable</i></li> - <li>Payload / Add a payload = <i>An ELF executable payload</i></li> - <li>Payload / Payload path and filename = <i>grub.elf</i></li> - </ul> + <p> - Go back and disable option ROMs: + First, <a href="#build_dependencies">install the build dependencies</a>. </p> - <ul> - <li>Devices / Run VGA Option ROMs = <i>disable</i></li> - <li>Devices / Run Option ROMs on PCI devices = <i>disable</i></li> - </ul> + <p> - The resulting .config file was saved as resources/libreboot/config/<b>x200_8mb/config</b> and - resources/libreboot/config/<b>x200_4mb/config</b> and is used by the build - scripts for this machine. + To build it, do that in the main directory:<br/> + <b>$ ./builddeps-flashrom</b> </p> - <h2 id="config_macbook21"> - MacBook2,1 configuration (file: resources/libreboot/config/macbook21/config) - </h2> + <p> + After you've done that, under ./flashrom/ you will find the following executables: + </p> <ul> - <li>General / Expert mode = <i>enable</i></li> - <li>General / Local version string = <i>" MB21.88Z.00A5.B07.0706270922"</i> (without the quotes)</li> - <li>Mainboard / Mainboard vendor = <i>Apple</i></li> - <li>Mainboard / Mainboard model = <i>Macbook2,1 ICH7 TESTING</i></li> - <li>Mainboard / ROM chip size = <i>2048 KB (2 MB)</i></li> - <li>System tables / SMBIOS Serial Number = <i>W8724XXXXXX</i></li> - <li>System tables / SMBIOS Version Number = <i>1.0</i></li> - <li>System tables / SMBIOS Manufacturer = <i>Apple Inc.</i></li> - <li>System tables / SMBIOS Product Name = <i>MacBook2,1</i></li> - <li>Chipset / Include CPU microcode in CBFS = <i>Do not include microcode updates</i></li> - <li>Devices / Use native graphics initialization = <i>enable</i></li> <li> - Display / Keep VESA framebuffer = <i>disable</i> (disable for text-mode graphics, enable for coreboot vesa framebuffer) + <b>flashrom</b> <ul> - <li>Libreboot provides this with text-mode enabled by default, but it automatically patches a copy of the config at build time - to enable coreboot framebuffer for a separate set of ROM images, in each machine.</li> + <li>For flashing while coreboot or libreboot is running.</li> </ul> </li> - <li>Generic Drivers / USB 2.0 EHCI debug dongle support = <i>Enable</i></li> - <li>Generic Drivers / Enable early (pre-RAM) usbdebug = <i>Enable</i></li> - <li>Generic Drivers / Type of dongle = <i>BeagleBone Black</i></li> - <li>Console / Send console output to a CBMEM buffer = <i>enable</i></li> - <li>Console / USB dongle log output = <i>enable</i></li> - <li>Payload / Add a payload = <i>An ELF executable payload</i></li> - <li>Payload / Payload path and filename = <i>grub.elf</i></li> - </ul> - <p> - Go back and disable option ROMs: - </p> - <ul> - <li>Devices / Run VGA Option ROMs = <i>disable</i></li> - <li>Devices / Run Option ROMs on PCI devices = <i>disable</i></li> - </ul> - <p> - The resulting .config file was saved as resources/libreboot/config/<b>macbook21/config</b> and is used by the build - scripts for this machine. <b>This config is also used for the MacBook1,1</b>. - </p> - - <h2 id="config_qemu_i440fx_piix4"> - QEMU (x86 i440fx/piix4) configuration (file: resources/libreboot/config/qemu_i440fx_piix4/config) - </h2> - <ul> - <li>General / Expert mode = <i>enable</i></li> - <li>Mainboard / Mainboard vendor = <i>Emulation</i></li> - <li>Mainboard / Mainboard model = <i>QEMU x86 i440fx/piix4 (aka qemu -M pc)</i></li> - <li>Mainboard / ROM chip size = <i>8192 KB (8 MB)</i></li> - <li>Devices / Use native graphics initialization = <i>enable</i> (should already be enabled)</li> <li> - Display / Keep VESA framebuffer = <i>enable</i> (disable for text-mode graphics, enable for coreboot vesa framebuffer) + <b>flashrom_lenovobios_sst</b> <ul> - <li>Libreboot provides this with framebuffer enabled by default, but it automatically patches a copy of the config at build time - to enable coreboot text-mode for a separate set of ROM images, in each machine.</li> + <li>This is patched for flashing while Lenovo BIOS is running on an X60 or T60 with the SST25VF016B (SST) flash chip.</li> </ul> </li> - <li>Console / Send console output to a CBMEM buffer = <i>enable</i></li> - <li>Payload / Add a payload = <i>An ELF executable payload</i></li> - <li>Payload / Payload path and filename = <i>grub.elf</i></li> - </ul> - <p> - Go back and disable option ROMs: - </p> - <ul> - <li>Devices / Run VGA Option ROMs = <i>disable</i></li> - <li>Devices / Run Option ROMs on PCI devices = <i>disable</i></li> - </ul> - <p> - The resulting .config file was saved as resources/libreboot/config/<b>qemu_i440fx_piix4/config</b> and is used by the build - scripts for this machine. - </p> - - <h2 id="config_qemu_q35_ich9"> - QEMU (x86 q35/ich9) configuration (file: resources/libreboot/config/qemu_q35_ich9/config) - </h2> - <ul> - <li>General / Expert mode = <i>enable</i></li> - <li>Mainboard / Mainboard vendor = <i>Emulation</i></li> - <li>Mainboard / Mainboard model = <i>QEMU x86 q35/ich9 (aka qemu -M q35)</i></li> - <li>Mainboard / ROM chip size = <i>8192 KB (8 MB)</i></li> - <li>Devices / Use native graphics initialization = <i>enable</i> (should already be enabled)</li> <li> - Display / Keep VESA framebuffer = <i>enable</i> (disable for text-mode graphics, enable for coreboot vesa framebuffer) + <b>flashrom_lenovobios_macronix</b> <ul> - <li>Libreboot provides this with framebuffer enabled by default, but it automatically patches a copy of the config at build time - to enable coreboot text-mode for a separate set of ROM images, in each machine.</li> + <li>This is patched for flashing while Lenovo BIOS is running on an X60 or T60 with the MX25L1605D (Macronix) flash chip.</li> </ul> </li> - <li>Console / Send console output to a CBMEM buffer = <i>enable</i></li> - <li>Payload / Add a payload = <i>An ELF executable payload</i></li> - <li>Payload / Payload path and filename = <i>grub.elf</i></li> - </ul> - <p> - Go back and disable option ROMs: - </p> - <ul> - <li>Devices / Run VGA Option ROMs = <i>disable</i></li> - <li>Devices / Run Option ROMs on PCI devices = <i>disable</i></li> </ul> + <p> - The resulting .config file was saved as resources/libreboot/config/<b>qemu_q35_ich9/config</b> and is used by the build - scripts for this machine. + The "builddeps" script in libreboot_src also makes use of builddeps-flashrom. </p> - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> - <h1 id="build">How to build the ROM images!</h1> + <div class="section"> - <p>You don't need to do much, as there are scripts already written for you that can build everything automatically.</p> + <h1 id="config">Configuring libreboot</h1> - <p> - You can build libreboot from source on a 32-bit (i686) or 64-bit (x86_64) system. Recommended (if possible): x86_64. - On a ThinkPad T60, you can replace the CPU (Core 2 Duo T5600, T7200 or T7600. T5600 recommended) for 64-bit support. - On an X60s, you can replace the board with one that has a Core 2 Duo L7400 (you could also use an X60 Tablet board with the same CPU). - On an X60, you can replace the board with one that has a Core 2 Duo T5600 or T7200 (T5600 is recommended). All MacBook2,1 laptops - are 64-bit, as are all ThinkPad X200, X200S and X200 Tablet laptops. Warning: MacBook1,1 laptops are all 32-bit only. - </p> + <p> + Before building a ROM in libreboot (or coreboot, for that matter), you need to configure it. + This is done using the following inside the source tree:<br/> + $ <b>cd coreboot/</b><br/> + $ <b>make menuconfig</b> + </p> - <p> - First, <a href="#build_dependencies">install the build dependencies</a>. - </p> - <p> - If you downloaded libreboot from git, refer to <a href="#build_meta">#build_meta</a>. - </p> + <p> + If you've already built a kernel before, you know how to use this interface. + </p> - <p>If running for the first time, run this:<br/> - <b>$ ./buildall</b> (also performs the "./build" step below)<br/> - Or if you only want to build dependencies (crossgcc, grub and so on):<br/> - <b>$ ./builddeps</b></p> + <p> + Configurations are then saved as files called <b>".config"</b>. Copies of each configuration used + for each machine type by the libreboot build scripts are stored in resources/libreboot/config/ + </p> - <p>If you've already run ./builddeps and/or ./buildall before, you don't need to run them again. - Just run that from now on to build the ROM images:<br/> - <b>$ ./build</b></p> + <div class="subsection"> + <h2 id="config_dmidecode"> + dmidecode + </h2> + <p> + There is certain information that can be useful to enter in particular: + </p> + <ul> + <li>Local version string</li> + <li>SMBIOS Serial Number</li> + <li>SMBIOS Manufacturer</li> + <li>SMBIOS Version</li> + <li>SMBIOS Product name</li> + </ul> + <p> + This information can be obtained using:<br/> + <b>$ sudo dmidecode</b><br/> + <b># dmidecode</b> + </p> + <p> + Specifically, it's good practise to enter the same information for libreboot that you found when running this + with the original BIOS or firmware. <b>libreboot has already done this for you. This information is for reference, + in the hope that it will be useful.</b> + </p> + </div> + + <div class="subsection"> + <h2 id="config_x60"> + ThinkPad X60, X60S and X60 Tablet configuration (file: resources/libreboot/config/x60/config) + </h2> + <ul> + <li>General setup / Expert mode = <i>enable</i></li> + <li>Mainboard / Mainboard vendor = <i>Lenovo</i></li> + <li>Mainboard / Mainboard model = <i>ThinkPad X60 / X60s / X60t</i></li> + <li>Mainboard / ROM chip size = <i>2048 KB (2 MB)</i></li> + <li>Chipset / Include CPU microcode in CBFS = <i>Do not include microcode updates</i></li> + <li>Devices / Use native graphics initialization = <i>enable</i></li> + <li> + Display / Keep VESA framebuffer = <i>disable</i> (disable for text-mode graphics, enable for coreboot vesa framebuffer) + <ul> + <li>Libreboot provides this with text-mode enabled by default, but it automatically patches a copy of the config at build time + to enable coreboot framebuffer for a separate set of ROM images, in each machine.</li> + </ul> + </li> + <li>Generic Drivers / Digitizer = <i>Autodetect</i></li> + <li>Generic Drivers / USB 2.0 EHCI debug dongle support = <i>Enable</i></li> + <li>Generic Drivers / Enable early (pre-RAM) usbdebug = <i>Enable</i></li> + <li>Generic Drivers / Type of dongle = <i>BeagleBone Black</i></li> + <li>Generic Drivers / Digitizer = <i>Present</i></li> + <li>Console / Send console output to a CBMEM buffer = <i>enable</i></li> + <li>Console / USB dongle log output = <i>enable</i></li> + <li>Payload / Add a payload = <i>An ELF executable payload</i></li> + <li>Payload / Payload path and filename = <i>grub.elf</i></li> + </ul> + <p> + Now go back into Devices: + </p> + <ul> + <li>Devices / Run VGA Option ROMs = <i>disable</i></li> + <li>Devices / Run Option ROMs on PCI devices = <i>disable</i></li> + </ul> + <p> + The resulting .config file was saved as resources/libreboot/config/<b>x60/config</b> and is used by the build + scripts for this machine. + </p> + <p> + This configuration is used on all variants: X60, X60S and X60 Tablet. + </p> + </div> + + <div class="subsection"> + <h2 id="config_t60"> + ThinkPad T60 configuration (file: resources/libreboot/config/t60/config) + </h2> + <ul> + <li>General setup / Expert mode = <i>enable</i></li> + <li>General setup / Local version string = <i>79ETE7WW (2.27 )</i></li> + <li>Mainboard / Mainboard vendor = <i>Lenovo</i></li> + <li>Mainboard / Mainboard model = <i>ThinkPad T60 / T60p</i></li> + <li>Mainboard / ROM chip size = <i>2048 KB (2 MB)</i></li> + <li>System tables / SMBIOS Serial Number = <i>L3DKE06</i></li> + <li>System tables / SMBIOS Version Number = <i>ThinkPad T60</i></li> + <li>System tables / SMBIOS Manufacturer = <i>LENOVO</i></li> + <li>System tables / SMBIOS Product name = <i>1951FEG</i></li> + <li>Chipset / Include CPU microcode in CBFS = <i>Do not include microcode updates</i></li> + <li>Devices / Use native graphics initialization = <i>enable</i></li> + <li> + Display / Keep VESA framebuffer = <i>disable</i> (disable for text-mode graphics, enable for coreboot vesa framebuffer) + <ul> + <li>Libreboot provides this with text-mode enabled by default, but it automatically patches a copy of the config at build time + to enable coreboot framebuffer for a separate set of ROM images, in each machine.</li> + </ul> + </li> + <li>Generic Drivers / USB 2.0 EHCI debug dongle support = <i>Enable</i></li> + <li>Generic Drivers / Enable early (pre-RAM) usbdebug = <i>Enable</i></li> + <li>Generic Drivers / Type of dongle = <i>BeagleBone Black</i></li> + <li>Console / Send console output to a CBMEM buffer = <i>enable</i></li> + <li>Console / USB dongle log output = <i>enable</i></li> + <li>Payload / Add a payload = <i>An ELF executable payload</i></li> + <li>Payload / Payload path and filename = <i>grub.elf</i></li> + </ul> + <p> + Go back into Devices: + </p> + <ul> + <li>Devices / Run VGA Option ROMs = <i>disable</i></li> + <li>Devices / Run Option ROMs on PCI devices = <i>disable</i></li> + </ul> + <p> + The resulting .config file was saved as resources/libreboot/config/<b>t60/config</b> and is used by the build + scripts for this machine. + </p> + <p> + It is believed that the motherboards on 14.1" and 15.1" T60s are the same, so the same configuration is used + on both the 14.1" and 15.1" T60s. + </p> + </div> + + <div class="subsection"> + <h2 id="config_x200"> + ThinkPad X200 configuration (file: resources/libreboot/config/x200_4mb/config and resources/libreboot/config/x200_8mb/config) + </h2> + <p> + These are saved as two configs, because there are 2 size flash chips: 4MB or 8MB. + </p> + <ul> + <li>General / Expert mode = <i>enable</i></li> + <li>Mainboard / Mainboard vendor = <i>Lenovo</i></li> + <li>Mainboard / Mainboard model = <i>ThinkPad X200</i></li> + <li>Mainboard / ROM chip size = <i>4096 KB (4 MB)</i> or <i>8192 KB (8 MB)</i> depending on flash chip size</li> + <li>Chipset / Include CPU microcode in CBFS = <i>Do not include microcode updates</i></li> + <li>Chipset / Size of CBFS filesystem in ROM = byte size <i>0x7FD000</i> (for 8MB flash chip) or <i>3FD000</i> (for 4MB flash chip)</li> + <li>Devices / Use native graphics initialization = <i>enable</i></li> + <li> + Display / Keep VESA framebuffer = <i>disable</i> (disable for text-mode graphics, enable for coreboot vesa framebuffer) + <ul> + <li>Libreboot provides this with text-mode enabled by default, but it automatically patches a copy of the config at build time + to enable coreboot framebuffer for a separate set of ROM images, in each machine.</li> + </ul> + </li> + <li>Generic Drivers / USB 2.0 EHCI debug dongle support = <i>Enable</i></li> + <li>Generic Drivers / Enable early (pre-RAM) usbdebug = <i>Enable</i></li> + <li>Generic Drivers / Type of dongle = <i>BeagleBone Black</i></li> + <li>Console / Send console output to a CBMEM buffer = <i>enable</i></li> + <li>Console / USB dongle log output = <i>enable</i></li> + <li>Payload / Add a payload = <i>An ELF executable payload</i></li> + <li>Payload / Payload path and filename = <i>grub.elf</i></li> + </ul> + <p> + Go back and disable option ROMs: + </p> + <ul> + <li>Devices / Run VGA Option ROMs = <i>disable</i></li> + <li>Devices / Run Option ROMs on PCI devices = <i>disable</i></li> + </ul> + <p> + The resulting .config file was saved as resources/libreboot/config/<b>x200_8mb/config</b> and + resources/libreboot/config/<b>x200_4mb/config</b> and is used by the build + scripts for this machine. + </p> + </div> + + <div class="subsection"> + <h2 id="config_macbook21"> + MacBook2,1 configuration (file: resources/libreboot/config/macbook21/config) + </h2> + <ul> + <li>General / Expert mode = <i>enable</i></li> + <li>General / Local version string = <i>" MB21.88Z.00A5.B07.0706270922"</i> (without the quotes)</li> + <li>Mainboard / Mainboard vendor = <i>Apple</i></li> + <li>Mainboard / Mainboard model = <i>Macbook2,1 ICH7 TESTING</i></li> + <li>Mainboard / ROM chip size = <i>2048 KB (2 MB)</i></li> + <li>System tables / SMBIOS Serial Number = <i>W8724XXXXXX</i></li> + <li>System tables / SMBIOS Version Number = <i>1.0</i></li> + <li>System tables / SMBIOS Manufacturer = <i>Apple Inc.</i></li> + <li>System tables / SMBIOS Product Name = <i>MacBook2,1</i></li> + <li>Chipset / Include CPU microcode in CBFS = <i>Do not include microcode updates</i></li> + <li>Devices / Use native graphics initialization = <i>enable</i></li> + <li> + Display / Keep VESA framebuffer = <i>disable</i> (disable for text-mode graphics, enable for coreboot vesa framebuffer) + <ul> + <li>Libreboot provides this with text-mode enabled by default, but it automatically patches a copy of the config at build time + to enable coreboot framebuffer for a separate set of ROM images, in each machine.</li> + </ul> + </li> + <li>Generic Drivers / USB 2.0 EHCI debug dongle support = <i>Enable</i></li> + <li>Generic Drivers / Enable early (pre-RAM) usbdebug = <i>Enable</i></li> + <li>Generic Drivers / Type of dongle = <i>BeagleBone Black</i></li> + <li>Console / Send console output to a CBMEM buffer = <i>enable</i></li> + <li>Console / USB dongle log output = <i>enable</i></li> + <li>Payload / Add a payload = <i>An ELF executable payload</i></li> + <li>Payload / Payload path and filename = <i>grub.elf</i></li> + </ul> + <p> + Go back and disable option ROMs: + </p> + <ul> + <li>Devices / Run VGA Option ROMs = <i>disable</i></li> + <li>Devices / Run Option ROMs on PCI devices = <i>disable</i></li> + </ul> + <p> + The resulting .config file was saved as resources/libreboot/config/<b>macbook21/config</b> and is used by the build + scripts for this machine. <b>This config is also used for the MacBook1,1</b>. + </p> + </div> + + <div class="subsection"> + <h2 id="config_qemu_i440fx_piix4"> + QEMU (x86 i440fx/piix4) configuration (file: resources/libreboot/config/qemu_i440fx_piix4/config) + </h2> + <ul> + <li>General / Expert mode = <i>enable</i></li> + <li>Mainboard / Mainboard vendor = <i>Emulation</i></li> + <li>Mainboard / Mainboard model = <i>QEMU x86 i440fx/piix4 (aka qemu -M pc)</i></li> + <li>Mainboard / ROM chip size = <i>8192 KB (8 MB)</i></li> + <li>Devices / Use native graphics initialization = <i>enable</i> (should already be enabled)</li> + <li> + Display / Keep VESA framebuffer = <i>enable</i> (disable for text-mode graphics, enable for coreboot vesa framebuffer) + <ul> + <li>Libreboot provides this with framebuffer enabled by default, but it automatically patches a copy of the config at build time + to enable coreboot text-mode for a separate set of ROM images, in each machine.</li> + </ul> + </li> + <li>Console / Send console output to a CBMEM buffer = <i>enable</i></li> + <li>Payload / Add a payload = <i>An ELF executable payload</i></li> + <li>Payload / Payload path and filename = <i>grub.elf</i></li> + </ul> + <p> + Go back and disable option ROMs: + </p> + <ul> + <li>Devices / Run VGA Option ROMs = <i>disable</i></li> + <li>Devices / Run Option ROMs on PCI devices = <i>disable</i></li> + </ul> + <p> + The resulting .config file was saved as resources/libreboot/config/<b>qemu_i440fx_piix4/config</b> and is used by the build + scripts for this machine. + </p> + </div> + + <div class="subsection"> + <h2 id="config_qemu_q35_ich9"> + QEMU (x86 q35/ich9) configuration (file: resources/libreboot/config/qemu_q35_ich9/config) + </h2> + <ul> + <li>General / Expert mode = <i>enable</i></li> + <li>Mainboard / Mainboard vendor = <i>Emulation</i></li> + <li>Mainboard / Mainboard model = <i>QEMU x86 q35/ich9 (aka qemu -M q35)</i></li> + <li>Mainboard / ROM chip size = <i>8192 KB (8 MB)</i></li> + <li>Devices / Use native graphics initialization = <i>enable</i> (should already be enabled)</li> + <li> + Display / Keep VESA framebuffer = <i>enable</i> (disable for text-mode graphics, enable for coreboot vesa framebuffer) + <ul> + <li>Libreboot provides this with framebuffer enabled by default, but it automatically patches a copy of the config at build time + to enable coreboot text-mode for a separate set of ROM images, in each machine.</li> + </ul> + </li> + <li>Console / Send console output to a CBMEM buffer = <i>enable</i></li> + <li>Payload / Add a payload = <i>An ELF executable payload</i></li> + <li>Payload / Payload path and filename = <i>grub.elf</i></li> + </ul> + <p> + Go back and disable option ROMs: + </p> + <ul> + <li>Devices / Run VGA Option ROMs = <i>disable</i></li> + <li>Devices / Run Option ROMs on PCI devices = <i>disable</i></li> + </ul> + <p> + The resulting .config file was saved as resources/libreboot/config/<b>qemu_q35_ich9/config</b> and is used by the build + scripts for this machine. + </p> + </div> - <p>To un-build (clean) the build dependencies that you built before, do the following:<br/> - This also deletes the ROM images under ./bin/:<br/> - <b>$ ./cleandeps</b></p> + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> - <p>Note: after running 'cleandeps', you will need to run 'builddeps' or 'buildall' again before you can use 'build'.</p> + <div class="section"> - <p>After 'build' or 'buildall' has finished, you'll find the ROM images for each machine under ./bin/</p> + <h1 id="build">How to build the ROM images!</h1> - <h2>Preparing release archives (optional)</h2> + <p>You don't need to do much, as there are scripts already written for you that can build everything automatically.</p> <p> - Run that script:<br/> - <b>$ ./build-release</b> + You can build libreboot from source on a 32-bit (i686) or 64-bit (x86_64) system. Recommended (if possible): x86_64. + On a ThinkPad T60, you can replace the CPU (Core 2 Duo T5600, T7200 or T7600. T5600 recommended) for 64-bit support. + On an X60s, you can replace the board with one that has a Core 2 Duo L7400 (you could also use an X60 Tablet board with the same CPU). + On an X60, you can replace the board with one that has a Core 2 Duo T5600 or T7200 (T5600 is recommended). All MacBook2,1 laptops + are 64-bit, as are all ThinkPad X200, X200S and X200 Tablet laptops. Warning: MacBook1,1 laptops are all 32-bit only. </p> <p> - If you are building on an i686 host, this will include statically linked 32-bit binaries in the binary release archive that you created, - for: <b>nvramtool, cbfstool, bucts, flashrom, ich9deblob, cbmem</b>. + First, <a href="#build_dependencies">install the build dependencies</a>. </p> - <p> - If you are building on an x86_64 host, this will include statically linked 32- and 64-bit binaries for <b>cbmem</b>, <b>ich9deblob</b>, <b>cbfstool</b> and <b>nvramtool</b>, while <b>flashrom</b> - and <b>bucts</b> will be included only as 64-bit statically linked binaries. <b>To include a statically linked flashrom and bucts for i686, you - will need to build them on a chroot, a virtual machine or a real 32-bit system. You can find the build dependencies for these packages listed in deps-*</b> + If you downloaded libreboot from git, refer to <a href="#build_meta">#build_meta</a>. </p> + + <p>If running for the first time, run this:<br/> + <b>$ ./buildall</b> (also performs the "./build" step below)<br/> + Or if you only want to build dependencies (crossgcc, grub and so on):<br/> + <b>$ ./builddeps</b></p> + + <p>If you've already run ./builddeps and/or ./buildall before, you don't need to run them again. + Just run that from now on to build the ROM images:<br/> + <b>$ ./build</b></p> + + <p>To un-build (clean) the build dependencies that you built before, do the following:<br/> + This also deletes the ROM images under ./bin/:<br/> + <b>$ ./cleandeps</b></p> + + <p>Note: after running 'cleandeps', you will need to run 'builddeps' or 'buildall' again before you can use 'build'.</p> + + <p>After 'build' or 'buildall' has finished, you'll find the ROM images for each machine under ./bin/</p> + + <div class="subsection"> + + <h2>Preparing release archives (optional)</h2> + + <p> + Run that script:<br/> + <b>$ ./build-release</b> + </p> + + <p> + If you are building on an i686 host, this will include statically linked 32-bit binaries in the binary release archive that you created, + for: <b>nvramtool, cbfstool, bucts, flashrom, ich9deblob, cbmem</b>. + </p> + + <p> + If you are building on an x86_64 host, this will include statically linked 32- and 64-bit binaries for <b>cbmem</b>, <b>ich9deblob</b>, <b>cbfstool</b> and <b>nvramtool</b>, while <b>flashrom</b> + and <b>bucts</b> will be included only as 64-bit statically linked binaries. <b>To include a statically linked flashrom and bucts for i686, you + will need to build them on a chroot, a virtual machine or a real 32-bit system. You can find the build dependencies for these packages listed in deps-*</b> + </p> + + <p> + armv7l binaries (tested on a BeagleBone Black) are also included in libreboot_bin, for: + </p> + <ul> + <li>cbfstool</li> + <li>ich9gen</li> + <li>ich9deblob</li> + <li>flashrom</li> + </ul> + + <p> + If you are building 32-bit binaries on a live system or chroot (for flashrom/bucts), you can use the following to statically link them:<br/> + $ <b>./builddeps-flashrom static</b><br/> + $ <b>./builddeps-bucts static</b> + </p> + + <p> + The same as above applies for ARM (except, building bucts on ARM is pointless, and for flashrom + you only need the normal executable since the lenovobios_sst and _macronix executables are meant + to run on an X60/T60 while lenovo bios is present, working around the security restrictions). + </p> + + <p> + The script <b>mkextbuild</b> will generate a small source tarball called <b>tobuild.tar.xz</b> that + contains everything you need (including source) with which to build flashrom/bucts on these hosts. + The <b>build-release</b> script will have already executed this script for you, so the archive should + already exist. + </p> + + <p> + You'll find that the files libreboot_bin.tar.xz and libreboot_src.tar.xz have been created. + </p> + </div> + + <p><a href="#pagetop">Back to top of page</a></p> + + </div> + + <div class="section"> + + <h1 id="build_addseabios">How to add SeaBIOS to the ROM images</h1> + <p> - armv7l binaries (tested on a BeagleBone Black) are also included in libreboot_bin, for: + SeaBIOS isn't really needed since libreboot uses the GRUB payload which + is much better (for several reasons), so it is no longer included in the ROM + images by default. Instead, you can add it afterwards. </p> - <ul> - <li>cbfstool</li> - <li>ich9gen</li> - <li>ich9deblob</li> - <li>flashrom</li> - </ul> <p> - If you are building 32-bit binaries on a live system or chroot (for flashrom/bucts), you can use the following to statically link them:<br/> - $ <b>./builddeps-flashrom static</b><br/> - $ <b>./builddeps-bucts static</b> + In the supplied binary archives, or in your own (if you did 'build-release') you can add SeaBIOS + to the ROM images, along with SeaVGABIOS which is a free/libre Video BIOS implementation that wraps + around the 'native graphics initializitation' code in coreboot, for boards that have support for it. </p> - + <p> - The same as above applies for ARM (except, building bucts on ARM is pointless, and for flashrom - you only need the normal executable since the lenovobios_sst and _macronix executables are meant - to run on an X60/T60 while lenovo bios is present, working around the security restrictions). + First, <a href="#build_dependencies">install the build dependencies</a>. </p> - + <p> - The script <b>mkextbuild</b> will generate a small source tarball called <b>tobuild.tar.xz</b> that - contains everything you need (including source) with which to build flashrom/bucts on these hosts. - The <b>build-release</b> script will have already executed this script for you, so the archive should - already exist. + Binaries for cbfstool are provided (built from libreboot_src) statically linked under cbfstool/ and the <b>addseabios</b> + script (see below) will try to automatically select the right one to use. </p> <p> - You'll find that the files libreboot_bin.tar.xz and libreboot_src.tar.xz have been created. + Now:<br/> + $ <b>./addseabios</b> </p> - <p><a href="#pagetop">Back to top of page</a></p> - -<hr/> - - <h1 id="build_addseabios">How to add SeaBIOS to the ROM images</h1> - - <p> - SeaBIOS isn't really needed since libreboot uses the GRUB payload which - is much better (for several reasons), so it is no longer included in the ROM - images by default. Instead, you can add it afterwards. - </p> - - <p> - In the supplied binary archives, or in your own (if you did 'build-release') you can add SeaBIOS - to the ROM images, along with SeaVGABIOS which is a free/libre Video BIOS implementation that wraps - around the 'native graphics initializitation' code in coreboot, for boards that have support for it. - </p> + <p> + SeaBIOS and SeaVGABIOS (which the build scripts created, and the build-release script put - compiled - + inside the binary archive) have now been added to all of the ROM images under ./bin/. A GRUB menuentry will show + up when you boot your machine, allowing you to use SeaBIOS. + </p> - <p> - First, <a href="#build_dependencies">install the build dependencies</a>. - </p> + <p><a href="#pagetop">Back to top of page</a></p> + + </div> - <p> - Binaries for cbfstool are provided (built from libreboot_src) statically linked under cbfstool/ and the <b>addseabios</b> - script (see below) will try to automatically select the right one to use. - </p> + <div class="section"> <p> - Now:<br/> - $ <b>./addseabios</b> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. </p> <p> - SeaBIOS and SeaVGABIOS (which the build scripts created, and the build-release script put - compiled - - inside the binary archive) have now been added to all of the ROM images under ./bin/. A GRUB menuentry will show - up when you boot your machine, allowing you to use SeaBIOS. + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. </p> - - <p><a href="#pagetop">Back to top of page</a></p> - -<hr/> - - <p> - Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + + </div> </body> </html> diff --git a/docs/gnulinux/configuring_parabola.html b/docs/gnulinux/configuring_parabola.html index 0c8e92a2..7f69cf7b 100644 --- a/docs/gnulinux/configuring_parabola.html +++ b/docs/gnulinux/configuring_parabola.html @@ -12,143 +12,169 @@ </head> <body> - <header> + <div class="section"> <h1 id="pagetop">Configuring Parabola (post-install)</h1> - <aside>Or <a href="index.html">back to main index</a></aside> - </header> - -<hr/> - - <h2>Table of Contents</h2> - <ul> - <li> - <a href="#pacman_configure">Configuring pacman</a> - <ul> - <li><a href="#pacman_update">Updating Parabola</a></li> - <li> - <a href="#pacman_maintain">Maintaining Parabola during system updates</a> - <ul> - <li><a href="#pacman_cacheclean">Clearing package cache after updating</a></li> - <li><a href="#pacman_commandequiv">Pacman command equivalents (compared to other package managers)</a></li> - </ul> - </li> - <li><a href="#yourfreedom">your-freedom</a></li> - </ul> - </li> - <li><a href="#useradd">Add a user account</a></li> - <li><a href="#systemd">System D</a></li> - <li><a href="#interesting_repos">Interesting repositories</a></li> - <li> - <a href="#network">Setup a network connection in Parabola</a> - <ul> - <li><a href="#network_hostname">Setting hostname</a></li> - <li><a href="#network_status">Network status</a></li> - <li><a href="#network_devicenames">Network interface names</a></li> - <li><a href="#network_setup">Network setup</a></li> - </ul> - </li> - <li><a href="#system_maintain">System maintenance</a> - important!</li> - <li> - <a href="#desktop">Configuring the desktop</a> - <ul> - <li><a href="#desktop_xorg">Install Xorg</a></li> - <li><a href="#desktop_kblayout">Xorg keyboard layout</a></li> - <li><a href="#desktop_lxde">Install LXDE</a></li> - <li><a href="#lxde_clock">LXDE - clock</a></li> - <li><a href="#lxde_font">LXDE - font</a></li> - <li><a href="#lxde_screenlock">LXDE - screenlock</a></li> - <li><a href="#lxde_automount">LXDE - automounting</a></li> - <li><a href="#lxde_suspend">LXDE - disable suspend</a></li> - <li><a href="#lxde_battery">LXDE - battery monitor</a></li> - <li><a href="#lxde_network">LXDE - network manager</a></li> - </ul> - </li> - </ul> - -<hr/> - - <p> - While not strictly related to the libreboot project, this guide - is intended to be useful for those interested in installing - Parabola on their libreboot machine. - </p> - - <p> - It details configuration steps that I took after installing the base system, - as a follow up to <a href="encrypted_parabola.html">encrypted_parabola.html</a>. - This guide is likely to become obsolete at a later date (due to the volatile - 'rolling-release' model that Arch/Parabola both use), but attempts will be made to maintain it. - </p> - - <p> - <b> - This guide was valid on 2014-09-21. If you see any changes that should to be made at the present date, please get in touch - with the libreboot project! - </b> - </p> - - <p> - You do not necessarily have to follow this guide word-for-word; <i>parabola</i> is extremely flexible. - The aim here is to provide a common setup that most users will be happy with. While Parabola - can seem daunting at first glance (especially for new GNU/Linux users), with a simple guide it can provide - all the same usability as Trisquel, without hiding any details from the user. - </p> - - <p> - Paradoxically, as you get more advanced Parabola can actually become <i>easier to use</i> - when you want to set up your machine in a special way compared to what most distributions provide. - You will find over time that other distributions tend to <i>get in your way</i>. - </p> - - <p> - <b> - This guide assumes that you already have Parabola installed. If you have not yet installed Parabola, - then <a href="encrypted_parabola.html">this guide</a> is highly recommended! - </b> - </p> - - <p> - A lot of the steps in this guide will refer to the Arch wiki. Arch is the upstream distribution that Parabola uses. - Most of this guide will also tell you to read wiki articles, other pages, manuals, and so on. In general it tries - to cherry pick the most useful information but nonetheless you are encouraged to learn as much as possible. - <b>It might take you a few days to fully install your system how you like, depending on how much you need to read. Patience is key, - especially for new users</b>. - </p> - - <p> - The Arch wiki will sometimes use bad language, such as calling the whole system Linux, using the term open-source (or closed-source), - and it will sometimes recommend the use of proprietary software. You need to be careful about this when reading anything on the - Arch wiki. - </p> - - <p> - Some of these steps require internet access. I'll go into networking later but for now, I just connected - my machine to a switch and did:<br/> - # <b>systemctl start dhcpcd.service</b><br/> - You can stop it later by running:<br/> - # <b>systemctl stop dhcpcd.service</b><br/> - For most people this should be enough, but if you don't have DHCP on your network then you should setup your network connection first:<br/> - <a href="#network">Setup network connection in Parabola</a> - </p> - -<hr/> - - <h2 id="pacman_configure">Configure pacman</h2> + <p> + Post-installation configuration steps for Parabola GNU/Linux-libre. Parabola is extremely flexible; this is just an example. + </p> + <p> + <a href="index.html">Back to previous index</a> + </p> + </div> + + <div class="section"> + + <h1>Table of Contents</h1> + <ul> + <li> + <a href="#pacman_configure">Configuring pacman</a> + <ul> + <li><a href="#pacman_update">Updating Parabola</a></li> + <li> + <a href="#pacman_maintain">Maintaining Parabola during system updates</a> + <ul> + <li><a href="#pacman_cacheclean">Clearing package cache after updating</a></li> + <li><a href="#pacman_commandequiv">Pacman command equivalents (compared to other package managers)</a></li> + </ul> + </li> + <li><a href="#yourfreedom">your-freedom</a></li> + </ul> + </li> + <li><a href="#useradd">Add a user account</a></li> + <li><a href="#systemd">System D</a></li> + <li><a href="#interesting_repos">Interesting repositories</a></li> + <li> + <a href="#network">Setup a network connection in Parabola</a> + <ul> + <li><a href="#network_hostname">Setting hostname</a></li> + <li><a href="#network_status">Network status</a></li> + <li><a href="#network_devicenames">Network interface names</a></li> + <li><a href="#network_setup">Network setup</a></li> + </ul> + </li> + <li><a href="#system_maintain">System maintenance</a> - important!</li> + <li> + <a href="#desktop">Configuring the desktop</a> + <ul> + <li><a href="#desktop_xorg">Install Xorg</a></li> + <li><a href="#desktop_kblayout">Xorg keyboard layout</a></li> + <li><a href="#desktop_lxde">Install LXDE</a></li> + <li><a href="#lxde_clock">LXDE - clock</a></li> + <li><a href="#lxde_font">LXDE - font</a></li> + <li><a href="#lxde_screenlock">LXDE - screenlock</a></li> + <li><a href="#lxde_automount">LXDE - automounting</a></li> + <li><a href="#lxde_suspend">LXDE - disable suspend</a></li> + <li><a href="#lxde_battery">LXDE - battery monitor</a></li> + <li><a href="#lxde_network">LXDE - network manager</a></li> + </ul> + </li> + </ul> + + </div> + + <div class="section"> + + <p> + While not strictly related to the libreboot project, this guide + is intended to be useful for those interested in installing + Parabola on their libreboot machine. + </p> + + <p> + It details configuration steps that I took after installing the base system, + as a follow up to <a href="encrypted_parabola.html">encrypted_parabola.html</a>. + This guide is likely to become obsolete at a later date (due to the volatile + 'rolling-release' model that Arch/Parabola both use), but attempts will be made to maintain it. + </p> + + <p> + <b> + This guide was valid on 2014-09-21. If you see any changes that should to be made at the present date, please get in touch + with the libreboot project! + </b> + </p> + + </div> + + <div class="section"> + + <p> + You do not necessarily have to follow this guide word-for-word; <i>parabola</i> is extremely flexible. + The aim here is to provide a common setup that most users will be happy with. While Parabola + can seem daunting at first glance (especially for new GNU/Linux users), with a simple guide it can provide + all the same usability as Trisquel, without hiding any details from the user. + </p> + + <p> + Paradoxically, as you get more advanced Parabola can actually become <i>easier to use</i> + when you want to set up your machine in a special way compared to what most distributions provide. + You will find over time that other distributions tend to <i>get in your way</i>. + </p> + + </div> + + <div class="section"> + + <p> + <b> + This guide assumes that you already have Parabola installed. If you have not yet installed Parabola, + then <a href="encrypted_parabola.html">this guide</a> is highly recommended! + </b> + </p> + <p> - pacman (<b>pac</b>kage <b>man</b>ager) is the name of the package management system in Arch, which Parabola - (as a deblobbed parallel effort) also uses. Like with 'apt-get' on debian-based systems like Trisquel, - this can be used to add/remove and update the software on your computer. + A lot of the steps in this guide will refer to the Arch wiki. Arch is the upstream distribution that Parabola uses. + Most of this guide will also tell you to read wiki articles, other pages, manuals, and so on. In general it tries + to cherry pick the most useful information but nonetheless you are encouraged to learn as much as possible. + <b>It might take you a few days to fully install your system how you like, depending on how much you need to read. Patience is key, + especially for new users</b>. </p> + <p> - Based on <a href="https://wiki.parabolagnulinux.org/Installation_Guide#Configure_pacman">https://wiki.parabolagnulinux.org/Installation_Guide#Configure_pacman</a> - and from reading <a href="https://wiki.archlinux.org/index.php/Pacman">https://wiki.archlinux.org/index.php/Pacman</a> (make sure to read and understand this, - it's very important) and - <a href="https://wiki.parabolagnulinux.org/Official_Repositories">https://wiki.parabolagnulinux.org/Official_Repositories</a> + The Arch wiki will sometimes use bad language, such as calling the whole system Linux, using the term open-source (or closed-source), + and it will sometimes recommend the use of proprietary software. You need to be careful about this when reading anything on the + Arch wiki. </p> + + </div> + + <div class="section"> + <p> - <a href="#pagetop">Back to top of page.</a> + Some of these steps require internet access. I'll go into networking later but for now, I just connected + my machine to a switch and did:<br/> + # <b>systemctl start dhcpcd.service</b><br/> + You can stop it later by running:<br/> + # <b>systemctl stop dhcpcd.service</b><br/> + For most people this should be enough, but if you don't have DHCP on your network then you should setup your network connection first:<br/> + <a href="#network">Setup network connection in Parabola</a> </p> - <h3 id="pacman_update">Updating Parabola</h3> + + </div> + + <div class="section"> + + <h2 id="pacman_configure">Configure pacman</h2> + <p> + pacman (<b>pac</b>kage <b>man</b>ager) is the name of the package management system in Arch, which Parabola + (as a deblobbed parallel effort) also uses. Like with 'apt-get' on debian-based systems like Trisquel, + this can be used to add/remove and update the software on your computer. + </p> + <p> + Based on <a href="https://wiki.parabolagnulinux.org/Installation_Guide#Configure_pacman">https://wiki.parabolagnulinux.org/Installation_Guide#Configure_pacman</a> + and from reading <a href="https://wiki.archlinux.org/index.php/Pacman">https://wiki.archlinux.org/index.php/Pacman</a> (make sure to read and understand this, + it's very important) and + <a href="https://wiki.parabolagnulinux.org/Official_Repositories">https://wiki.parabolagnulinux.org/Official_Repositories</a> + </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + + </div> + + <div class="section"> + + <h2 id="pacman_update">Updating Parabola</h2> <p> In the end, I didn't change my configuration for pacman. When you are updating, resync with the latest package names/versions:<br/> # <b>pacman -Syy</b><br/> @@ -191,7 +217,12 @@ <p> <a href="#pagetop">Back to top of page.</a> </p> - <h3 id="pacman_maintain">Maintaining Parabola</h3> + + </div> + + <div class="section"> + + <h2 id="pacman_maintain">Maintaining Parabola</h2> <p> Parabola is a very simple distro, in the sense that you are in full control and everything is made transparent to you. One consequence is @@ -202,7 +233,7 @@ <p> <a href="#pagetop">Back to top of page.</a> </p> - <h4 id="pacman_cacheclean">Cleaning the package cache</h4> + <h3 id="pacman_cacheclean">Cleaning the package cache</h3> <p> <b> The following is very important as you continue to use, update and maintain your Parabola system:<br/> @@ -229,7 +260,7 @@ <p> <a href="#pagetop">Back to top of page.</a> </p> - <h4 id="pacman_commandequiv">pacman command equivalents</h4> + <h3 id="pacman_commandequiv">pacman command equivalents</h3> <p> The following table lists other distro package manager commands, and their equivalent in pacman:<br/> <a href="https://wiki.archlinux.org/index.php/Pacman_Rosetta">https://wiki.archlinux.org/index.php/Pacman_Rosetta</a> @@ -237,8 +268,12 @@ <p> <a href="#pagetop">Back to top of page.</a> </p> + + </div> - <h3 id="yourfreedom">your-freedom</h3> + <div class="section"> + + <h2 id="yourfreedom">your-freedom</h2> <p> your-freedom is a package specific to Parabola, and it is installed by default. What it does is conflict with packages from Arch that are known to be non-free (proprietary) software. When migrating from Arch (there is a guide on the Parabola @@ -249,526 +284,565 @@ <p> <a href="#pagetop">Back to top of page.</a> </p> + + </div> -<hr/> + <div class="section"> - <h2 id="useradd">Add a user</h2> - <p> - Based on <a href="https://wiki.archlinux.org/index.php/Users_and_Groups">https://wiki.archlinux.org/index.php/Users_and_Groups</a>. - </p> - <p> - It is important (for security reasons) to create and use a non-root (non-admin) user account for everyday use. The default 'root' account is intended - only for critical administrative work, since it has complete access to the entire operating system. - </p> - <p> - Read the entire document linked to above, and then continue. - </p> - <p> - Add your user:<br/> - # <b>useradd -m -G wheel -s /bin/bash <i>yourusername</i></b><br/> - Set a password:<br/> - # <b>passwd <i>yourusername</i></b> - </p> - - <p><a href="#pagetop">Back to top of page</a></p> - -<hr/> - - <h2 id="systemd">systemd</h2> - <p> - This is the name of the system used for managing services in Parabola. It is a good idea to become familiar with it. - Read <a href="https://wiki.archlinux.org/index.php/systemd">https://wiki.archlinux.org/index.php/systemd</a> - and <a href="https://wiki.archlinux.org/index.php/systemd#Basic_systemctl_usage">https://wiki.archlinux.org/index.php/systemd#Basic_systemctl_usage</a> - to gain a full understanding. <b>This is very important! Make sure to read them.</b> - </p> - <p> - An example of a 'service' could be a webserver (such as lighttpd), or sshd (openssh), dhcp, etc. There are countless others. - </p> - <p> - <a href="https://bbs.archlinux.org/viewtopic.php?pid=1149530#p1149530">https://bbs.archlinux.org/viewtopic.php?pid=1149530#p1149530</a> explains - the background behind the decision by Arch (Parabola's upstream supplier) to use systemd. - </p> - - <p> - The manpage should also help:<br/> - # <b>man systemd</b><br/> - The section on 'unit types' is especially useful. - </p> - - <p> - According to the wiki, systemd 'journal' keeps logs of a size up to 10% of the total size your / partition takes up. - on a 60GB root this would mean 6GB. That's not exactly practical, and can have performance implications later when the - log gets too big. Based on instructions from the wiki, I will reduce the total size of the journal to 50MiB (the wiki - recommends 50MiB). - </p> - <p> - Open /etc/systemd/journald.conf and find the line that says:<br/> - <i>#SystemMaxUse=</i><br/> - Change it to say:<br/> - <i>SystemMaxUse=50M</i> - </p> - <p> - The wiki also recommended a method for forwarding journal output to TTY 12 (accessible by pressing ctrl+alt+f12, - and you use ctrl+alt+[F1-F12] to switch between terminals). I decided not to enable it. - </p> - <p> - Restart journald:<br/> - # <b>systemctl restart systemd-journald</b> - </p> - - <p> - The wiki recommends that if the journal gets too large, you can also simply delete (rm -rf) everything inside /var/log/journald/* - but recommends backing it up. This shouldn't be necessary, since you already set the size limit above and systemd will automatically - start to delete older records when the journal size reaches it's limit (according to systemd developers). - </p> - - <p> - Finally, the wiki mentions 'temporary' files and the utility for managing them.<br/> - # <b>man systemd-tmpfiles</b><br/> - The command for 'clean' is:<br/> - # <b>systemd-tmpfiles --clean</b><br/> - According to the manpage, this <i>"cleans all files and directories with an age parameter"</i>. - According to the Arch wiki, this reads information in /etc/tmpfiles.d/ and /usr/lib/tmpfiles.d/ - to know what actions to perform. Therefore, it is a good idea to read what's stored in these locations - to get a better understanding. - </p> - <p> - I looked in /etc/tmpfiles.d/ and found that it was empty on my system. However, /usr/lib/tmpfiles.d/ contained some files. - The first one was etc.conf, containing information and a reference to this manpage:<br/> - # <b>man tmpfiles.d</b><br/> - Read that manpage, and then continue studying all the files. - </p> - <p> - The systemd developers tell me that it isn't usually necessary to touch the systemd-tmpfiles utility manually at all. - </p> - - <p><a href="#pagetop">Back to top of page</a></p> - -<hr/> - - <h2 id="interesting_repos">Interesting repositories</h2> - <p> - Parabola wiki at <a href="https://wiki.parabolagnulinux.org/Repositories#kernels">https://wiki.parabolagnulinux.org/Repositories#kernels</a> - mentions about a repository called [kernels] for custom kernels that aren't in the default base. It might be worth looking into what is available - there, depending on your use case. - </p> - <p> - I enabled it on my system, to see what was in it. Edit /etc/pacman.conf and below the 'extra' section add:<br/> - <i> - [kernels]<br/> - Include = /etc/pacman.d/mirrorlist - </i> - </p> - <p> - Now sync with the repository:<br/> - # <b>pacman -Syy</b> - </p> - <p> - List all available packages in this repository:<br/> - # <b>pacman -Sl kernels</b> - </p> - <p> - In the end, I decided not to install anything from it but I kept the repository enabled regardless. - </p> - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> - - <h2 id="network">Setup a network connection in Parabola</h2> - <p> - Read <a href="https://wiki.archlinux.org/index.php/Configuring_Network">https://wiki.archlinux.org/index.php/Configuring_Network</a>. - </p> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> - <h3 id="network_hostname">Set the hostname</h3> - <p> - This should be the same as the hostname that you set in /etc/hostname when installing Parabola. You can also do it with systemd (do so now, if you like):<br/> - # <b>hostnamectl set-hostname <i>yourhostname</i></b><br/> - This writes the specified hostname to /etc/hostname. More information can be found in these manpages:<br/> - # <b>man hostname</b><br/> - # <b>info hostname</b><br/> - # <b>man hostnamectl</b> - </p> - <p> - Add the same hostname to /etc/hosts, on each line. Example:<br/> - <i> - 127.0.0.1 localhost.localdomain localhost <u>myhostname</u><br/> - ::1 localhost.localdomain localhost <u>myhostname</u> - </i> - </p> - <p> - You'll note that I set both lines; the 2nd line is for IPv6. More and more ISPs are providing this now (mine does) - so it's good to be forward-thinking here. - </p> - <p> - The <i>hostname</i> utility is part of the <i>inetutils</i> package and is in core/, installed by default (as part of <i>base</i>). - </p> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> - <h3 id="network_status">Network Status</h3> - <p> - According to the Arch wiki, <a href="https://wiki.archlinux.org/index.php/Udev">udev</a> should already detect the ethernet chipset - and load the driver for it automatically at boot time. You can check this in the <i>"Ethernet controller"</i> section - when running this command:<br/> - # <b>lspci -v</b> - </p> - <p> - Look at the remaining sections <i>'Kernel driver in use'</i> and <i>'Kernel modules'</i>. In my case it was as follows:<br/> - <i> - Kernel driver in use: e1000e<br/> - Kernel modules: e1000e - </i> - </p> - <p> - Check that the driver was loaded by issuing <i>dmesg | grep module_name</i>. In my case, I did:<br/> - # <b>dmesg | grep e1000e</b> - </p> - <h3 id="network_devicenames">Network device names</h3> + <h2 id="useradd">Add a user</h2> <p> - According to <a href="https://wiki.archlinux.org/index.php/Configuring_Network#Device_names">https://wiki.archlinux.org/index.php/Configuring_Network#Device_names</a>, - it is important to note that the old interface names like eth0, wlan0, wwan0 and so on no longer apply. Instead, <i>systemd</i> - creates device names starting with en (for enternet), wl (for wifi) and ww (for wwan) with a fixed identifier that systemd automatically generates. - An example device name for your ethernet chipset would be <i>enp0s25</i>, where it is never supposed to change. + Based on <a href="https://wiki.archlinux.org/index.php/Users_and_Groups">https://wiki.archlinux.org/index.php/Users_and_Groups</a>. </p> <p> - If you want to enable the old names (eth0, wlan0, wwan0, etc), the Arch wiki recommends - adding <i>net.ifnames=0</i> to your kernel parameters (in libreboot context, this would be accomplished by following the - instructions in <a href="grub_cbfs.html">grub_cbfs.html</a>). + It is important (for security reasons) to create and use a non-root (non-admin) user account for everyday use. The default 'root' account is intended + only for critical administrative work, since it has complete access to the entire operating system. </p> <p> - For background information, - read <a href="http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/">Predictable Network Interface Names</a> + Read the entire document linked to above, and then continue. </p> <p> - Show device names:<br/> - # <b>ls /sys/class/net</b> - </p> - <p> - Changing the device names is possible (I chose not to do it):<br/> - <a href="https://wiki.archlinux.org/index.php/Configuring_Network#Change_device_name">https://wiki.archlinux.org/index.php/Configuring_Network#Change_device_name</a> - </p> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> - <h3 id="network_setup">Network setup</h3> - <p> - I actually chose to ignore most of Networking section on the wiki. Instead, I plan to set up LXDE desktop with the graphical - network-manager client. Here is a list of network managers:<br/> - <a href="https://wiki.archlinux.org/index.php/List_of_applications/Internet#Network_managers">https://wiki.archlinux.org/index.php/List_of_applications/Internet#Network_managers</a>. - If you need to, set a static IP address (temporarily) using the networking guide and the Arch wiki, or start the dhcpcd service in systemd. - NetworkManager will be setup later, after installing LXDE. - </p> - <p> - <a href="#pagetop">Back to top of page.</a> + Add your user:<br/> + # <b>useradd -m -G wheel -s /bin/bash <i>yourusername</i></b><br/> + Set a password:<br/> + # <b>passwd <i>yourusername</i></b> </p> -<hr/> + <p><a href="#pagetop">Back to top of page</a></p> + + </div> - <h2 id="system_maintain">System Maintenance</h2> - <p> - Read <a href="https://wiki.archlinux.org/index.php/System_maintenance">https://wiki.archlinux.org/index.php/System_maintenance</a> before continuing. - Also read <a href="https://wiki.archlinux.org/index.php/Enhance_system_stability">https://wiki.archlinux.org/index.php/Enhance_system_stability</a>. - <b>This is important, so make sure to read them!</b> - </p> - <p> - Install smartmontools (it can be used to check smart data. HDDs use non-free firmware inside, but it's transparent to you - but the smart data comes from it. Therefore, don't rely on it too much):<br/> - # <b>pacman -S smartmontools</b><br/> - Read <a href="https://wiki.archlinux.org/index.php/S.M.A.R.T.">https://wiki.archlinux.org/index.php/S.M.A.R.T.</a> to learn how to use it. - </p> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> - -<hr/> - - <h2 id="desktop">Configuring the desktop</h2> - <p> - Based on steps from - <a href="https://wiki.archlinux.org/index.php/General_recommendations#Graphical_user_interface">General Recommendations</a> on the Arch wiki. - The plan is to use LXDE and LXDM/LightDM, along with everything else that you would expect on other distributions that provide LXDE - by default. - </p> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> + <div class="section"> - <h3 id="desktop_xorg">Installing Xorg</h3> - <p> - Based on <a href="https://wiki.archlinux.org/index.php/Xorg">https://wiki.archlinux.org/index.php/Xorg</a>. - </p> - <p> - Firstly, install it!<br/> - # <b>pacman -S xorg-server</b><br/> - I also recommend installing this (contains lots of useful tools, including <i>xrandr</i>):<br/> - # <b>pacman -S xorg-server-utils</b> - </p> - <p> - Install the driver. For me this was <i>xf86-video-intel</i> on the ThinkPad X60. T60 and macbook11/21 should be the same.<br/> - # <b>pacman -S xf86-video-intel</b><br/> - For other systems you can try:<br/> - # <b>pacman -Ss xf86-video- | less</b><br/> - Combined with looking at your <i>lspci</i> output, you can determine which driver is needed. - By default, Xorg will revert to xf86-video-vesa which is a generic driver and doesn't provide true hardware acceleration. - </p> - <p> - Other drivers (not just video) can be found by looking at the <i>xorg-drivers</i> group:<br/> - # <b>pacman -Sg xorg-drivers</b><br/> - </p> + <h2 id="systemd">systemd</h2> <p> - Mostly you will rely on a display manager, but in case you ever want to start X without one:<br/> - # <b>pacman -S xorg-xinit</b> + This is the name of the system used for managing services in Parabola. It is a good idea to become familiar with it. + Read <a href="https://wiki.archlinux.org/index.php/systemd">https://wiki.archlinux.org/index.php/systemd</a> + and <a href="https://wiki.archlinux.org/index.php/systemd#Basic_systemctl_usage">https://wiki.archlinux.org/index.php/systemd#Basic_systemctl_usage</a> + to gain a full understanding. <b>This is very important! Make sure to read them.</b> </p> <p> - <optional><br/> - Arch wiki recommends installing these, for testing that X works:<br/> - # <b>pacman -S xorg-twm xorg-xclock xterm</b><br/> - Refer to <a href="https://wiki.archlinux.org/index.php/Xinitrc">https://wiki.archlinux.org/index.php/Xinitrc</a>. - and test X:<br/> - # <b>startx</b><br/> - When you are satisfied, type <b><i>exit</i></b> in xterm, inside the X session.<br/> - Uninstall them (clutter. eww): # <b>pacman -S xorg-xinit xorg-twm xorg-xclock xterm</b><br/> - </optional> + An example of a 'service' could be a webserver (such as lighttpd), or sshd (openssh), dhcp, etc. There are countless others. </p> <p> - <a href="#pagetop">Back to top of page.</a> + <a href="https://bbs.archlinux.org/viewtopic.php?pid=1149530#p1149530">https://bbs.archlinux.org/viewtopic.php?pid=1149530#p1149530</a> explains + the background behind the decision by Arch (Parabola's upstream supplier) to use systemd. </p> - <h3 id="desktop_kblayout">Xorg keyboard layout</h3> - <p> - Refer to <a href="https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg">https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg</a>. - </p> - <p> - Xorg uses a different configuration method for keyboard layouts, so you will notice that the layout you - set in /etc/vconsole.conf earlier might not actually be the same in X. - </p> - <p> - To see what layout you currently use, try this on a terminal emulator in X:<br/> - # <b>setxkbmap -print -verbose 10</b> - </p> - <p> - In my case, I wanted to use the Dvorak (UK) keyboard which is quite different from Xorg's default Qwerty (US) layout. - </p> - <p> - I'll just say it now: <i>XkbModel</i> can be <i>pc105</i> in this case (ThinkPad X60, with a 105-key UK keyboard). - If you use an American keyboard (typically 104 keys) you will want to use <i>pc104</i>. - </p> - <p> - <i>XkbLayout</i> in my case would be <i>gb</i>, and <i>XkbVariant</i> would be <i>dvorak</i>. - </p> - <p> - The Arch wiki recommends two different methods for setting the keyboard layout:<br/> - <a href="https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg#Using_X_configuration_files">https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg#Using_X_configuration_files</a> and<br/> - <a href="https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg#Using_localectl">https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg#Using_localectl</a>. - </p> - <p> - In my case, I chose to use the <i>configuration file</i> method:<br/> - Create the file /etc/X11/xorg.conf.d/10-keyboard.conf and put this inside:<br/> - <i> - Section "InputClass"<br/> - Identifier "system-keyboard"<br/> - MatchIsKeyboard "on"<br/> - Option "XkbLayout" "gb"<br/> - Option "XkbModel" "pc105"<br/> - Option "XkbVariant" "dvorak"<br/> - EndSection - </i> - </p> - <p> - For you, the steps above may differ if you have a different layout. If you use a US Qwerty keyboard, then - you don't even need to do anything (though it might help, for the sake of being explicit). - </p> <p> - <a href="#pagetop">Back to top of page.</a> + The manpage should also help:<br/> + # <b>man systemd</b><br/> + The section on 'unit types' is especially useful. </p> - <h3 id="desktop_lxde">Install LXDE</h3> - <p> - Desktop choice isn't that important to me, so for simplicity I decided to use LXDE. It's lightweight - and does everything that I need. - If you would like to try something different, refer to - <a href="https://wiki.archlinux.org/index.php/Desktop_environment">https://wiki.archlinux.org/index.php/Desktop_environment</a> - </p> <p> - Refer to <a href="https://wiki.archlinux.org/index.php/LXDE">https://wiki.archlinux.org/index.php/LXDE</a>. + According to the wiki, systemd 'journal' keeps logs of a size up to 10% of the total size your / partition takes up. + on a 60GB root this would mean 6GB. That's not exactly practical, and can have performance implications later when the + log gets too big. Based on instructions from the wiki, I will reduce the total size of the journal to 50MiB (the wiki + recommends 50MiB). </p> <p> - Install it, choosing 'all' when asked for the default package list:<br/> - # <b>pacman -S lxde obconf</b> + Open /etc/systemd/journald.conf and find the line that says:<br/> + <i>#SystemMaxUse=</i><br/> + Change it to say:<br/> + <i>SystemMaxUse=50M</i> </p> <p> - I didn't want the following, so I removed them:<br/> - # <b>pacman -R lxmusic lxtask</b> + The wiki also recommended a method for forwarding journal output to TTY 12 (accessible by pressing ctrl+alt+f12, + and you use ctrl+alt+[F1-F12] to switch between terminals). I decided not to enable it. </p> <p> - I also lazily installed all fonts:<br/> - # <b>pacman -S $(pacman -Ssq ttf-)</b> + Restart journald:<br/> + # <b>systemctl restart systemd-journald</b> </p> + <p> - LXDE comes with a terminal. You probably want a browser to go with that; I choose GNU IceCat, part of the <i><a href="https://gnu.org/">GNU project</a></i>:<br/> - # <b>pacman -S icecat</b><br/> - And a mail client:<br/> - # <b>pacman -S icedove</b> + The wiki recommends that if the journal gets too large, you can also simply delete (rm -rf) everything inside /var/log/journald/* + but recommends backing it up. This shouldn't be necessary, since you already set the size limit above and systemd will automatically + start to delete older records when the journal size reaches it's limit (according to systemd developers). </p> + <p> - In IceCat, go to <i>Preferences :: Advanced</i> and disable <i>GNU IceCat Health Report</i>. + Finally, the wiki mentions 'temporary' files and the utility for managing them.<br/> + # <b>man systemd-tmpfiles</b><br/> + The command for 'clean' is:<br/> + # <b>systemd-tmpfiles --clean</b><br/> + According to the manpage, this <i>"cleans all files and directories with an age parameter"</i>. + According to the Arch wiki, this reads information in /etc/tmpfiles.d/ and /usr/lib/tmpfiles.d/ + to know what actions to perform. Therefore, it is a good idea to read what's stored in these locations + to get a better understanding. </p> <p> - I also like to install these:<br/> - # <b>pacman -S xsensors stress htop</b> + I looked in /etc/tmpfiles.d/ and found that it was empty on my system. However, /usr/lib/tmpfiles.d/ contained some files. + The first one was etc.conf, containing information and a reference to this manpage:<br/> + # <b>man tmpfiles.d</b><br/> + Read that manpage, and then continue studying all the files. </p> <p> - Enable LXDM (the default display manager, providing a graphical login):<br/> - # <b>systemctl enable lxdm.service</b><br/> - It will start when you boot up the machine. To start it now, do:<br/> - # <b>systemctl start lxdm.service</b> + The systemd developers tell me that it isn't usually necessary to touch the systemd-tmpfiles utility manually at all. </p> + + <p><a href="#pagetop">Back to top of page</a></p> + + </div> + + <div class="section"> + + <h2 id="interesting_repos">Interesting repositories</h2> <p> - Log in with your standard (non-root) user that you created earlier. - It is advisable to also create an xinitrc rule in case you ever want to start lxde without lxdm. - Read <a href="https://wiki.archlinux.org/index.php/Xinitrc">https://wiki.archlinux.org/index.php/Xinitrc</a>. + Parabola wiki at <a href="https://wiki.parabolagnulinux.org/Repositories#kernels">https://wiki.parabolagnulinux.org/Repositories#kernels</a> + mentions about a repository called [kernels] for custom kernels that aren't in the default base. It might be worth looking into what is available + there, depending on your use case. </p> <p> - Open LXterminal:<br/> - $ <b>cp /etc/skel/.xinitrc ~</b><br/> - Open .xinitrc and add the following plus a line break at the bottom of the file.<br/> + I enabled it on my system, to see what was in it. Edit /etc/pacman.conf and below the 'extra' section add:<br/> <i> - # Probably not needed. The same locale info that we set before<br/> - # Based on advice from the LXDE wiki - export LC_ALL=en_GB.UTF-8<br/> - export LANGUAGE=en_GB.UTF-8<br/> - export LANG=en_GB.UTF-8<br/> - <br/> - # Start lxde desktop<br/> - exec startlxde<br/> + [kernels]<br/> + Include = /etc/pacman.d/mirrorlist </i> - Now make sure that it is executable:<br/> - $ <b>chmod +x .xinitrc</b> </p> <p> - <a href="#pagetop">Back to top of page.</a> + Now sync with the repository:<br/> + # <b>pacman -Syy</b> </p> - - <h3 id="lxde_clock">LXDE - clock</h3> <p> - In <b>Digital Clock Settings</b> (right click the clock) I set the Clock Format to <i>%Y/%m/%d %H:%M:%S</i> + List all available packages in this repository:<br/> + # <b>pacman -Sl kernels</b> </p> <p> - <a href="#pagetop">Back to top of page.</a> + In the end, I decided not to install anything from it but I kept the repository enabled regardless. </p> + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> - <h3 id="lxde_font">LXDE - font</h3> - <p> - NOTE TO SELF: come back to this later. - </p> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> + <div class="section"> - <h3 id="lxde_screenlock">LXDE - screenlock</h3> - <p> - Arch wiki recommends to use <i>xscreensaver</i>:<br/> - # <b>pacman -S xscreensaver</b> - </p> + <h2 id="network">Setup a network connection in Parabola</h2> <p> - Under <i>Preferences :: Screensaver</i> in the LXDE menu, I chose <i>Mode: Blank Screen Only</i>, - setting <i>Blank After</i>, <i>Cycle After</i> and <i>Lock Screen After</i> (checked) to 10 minutes. - </p> - <p> - You can now lock the screen with <i>Logout :: Lock Screen</i> in the LXDE menu. + Read <a href="https://wiki.archlinux.org/index.php/Configuring_Network">https://wiki.archlinux.org/index.php/Configuring_Network</a>. </p> <p> <a href="#pagetop">Back to top of page.</a> </p> + <h3 id="network_hostname">Set the hostname</h3> + <p> + This should be the same as the hostname that you set in /etc/hostname when installing Parabola. You can also do it with systemd (do so now, if you like):<br/> + # <b>hostnamectl set-hostname <i>yourhostname</i></b><br/> + This writes the specified hostname to /etc/hostname. More information can be found in these manpages:<br/> + # <b>man hostname</b><br/> + # <b>info hostname</b><br/> + # <b>man hostnamectl</b> + </p> + <p> + Add the same hostname to /etc/hosts, on each line. Example:<br/> + <i> + 127.0.0.1 localhost.localdomain localhost <u>myhostname</u><br/> + ::1 localhost.localdomain localhost <u>myhostname</u> + </i> + </p> + <p> + You'll note that I set both lines; the 2nd line is for IPv6. More and more ISPs are providing this now (mine does) + so it's good to be forward-thinking here. + </p> + <p> + The <i>hostname</i> utility is part of the <i>inetutils</i> package and is in core/, installed by default (as part of <i>base</i>). + </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + <h3 id="network_status">Network Status</h3> + <p> + According to the Arch wiki, <a href="https://wiki.archlinux.org/index.php/Udev">udev</a> should already detect the ethernet chipset + and load the driver for it automatically at boot time. You can check this in the <i>"Ethernet controller"</i> section + when running this command:<br/> + # <b>lspci -v</b> + </p> + <p> + Look at the remaining sections <i>'Kernel driver in use'</i> and <i>'Kernel modules'</i>. In my case it was as follows:<br/> + <i> + Kernel driver in use: e1000e<br/> + Kernel modules: e1000e + </i> + </p> + <p> + Check that the driver was loaded by issuing <i>dmesg | grep module_name</i>. In my case, I did:<br/> + # <b>dmesg | grep e1000e</b> + </p> + <h3 id="network_devicenames">Network device names</h3> + <p> + According to <a href="https://wiki.archlinux.org/index.php/Configuring_Network#Device_names">https://wiki.archlinux.org/index.php/Configuring_Network#Device_names</a>, + it is important to note that the old interface names like eth0, wlan0, wwan0 and so on no longer apply. Instead, <i>systemd</i> + creates device names starting with en (for enternet), wl (for wifi) and ww (for wwan) with a fixed identifier that systemd automatically generates. + An example device name for your ethernet chipset would be <i>enp0s25</i>, where it is never supposed to change. + </p> + <p> + If you want to enable the old names (eth0, wlan0, wwan0, etc), the Arch wiki recommends + adding <i>net.ifnames=0</i> to your kernel parameters (in libreboot context, this would be accomplished by following the + instructions in <a href="grub_cbfs.html">grub_cbfs.html</a>). + </p> + <p> + For background information, + read <a href="http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/">Predictable Network Interface Names</a> + </p> + <p> + Show device names:<br/> + # <b>ls /sys/class/net</b> + </p> + <p> + Changing the device names is possible (I chose not to do it):<br/> + <a href="https://wiki.archlinux.org/index.php/Configuring_Network#Change_device_name">https://wiki.archlinux.org/index.php/Configuring_Network#Change_device_name</a> + </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + <h3 id="network_setup">Network setup</h3> + <p> + I actually chose to ignore most of Networking section on the wiki. Instead, I plan to set up LXDE desktop with the graphical + network-manager client. Here is a list of network managers:<br/> + <a href="https://wiki.archlinux.org/index.php/List_of_applications/Internet#Network_managers">https://wiki.archlinux.org/index.php/List_of_applications/Internet#Network_managers</a>. + If you need to, set a static IP address (temporarily) using the networking guide and the Arch wiki, or start the dhcpcd service in systemd. + NetworkManager will be setup later, after installing LXDE. + </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + + </div> - <h3 id="lxde_automount">LXDE - automounting</h3> - <p> - Refer to <a href="https://wiki.archlinux.org/index.php/File_manager_functionality">https://wiki.archlinux.org/index.php/File_manager_functionality</a>. - </p> - <p> - I chose to ignore this for now. NOTE TO SELF: come back to this later. - </p> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> - <h3 id="lxde_suspend">LXDE - disable suspend</h3> - <p> - When closing the laptop lid, the machine suspends. This is annoying at least to me. - NOTE TO SELF: disable it, then document the steps here. - </p> + <div class="section"> + + <h2 id="system_maintain">System Maintenance</h2> <p> - <a href="#pagetop">Back to top of page.</a> + Read <a href="https://wiki.archlinux.org/index.php/System_maintenance">https://wiki.archlinux.org/index.php/System_maintenance</a> before continuing. + Also read <a href="https://wiki.archlinux.org/index.php/Enhance_system_stability">https://wiki.archlinux.org/index.php/Enhance_system_stability</a>. + <b>This is important, so make sure to read them!</b> </p> - <h3 id="lxde_battery">LXDE - battery monitor</h3> <p> - Right click lxde panel and <i>Add/Remove Panel Items</i>. Click <i>Add</i> and select <i>Battery Monitor</i>, then click <i>Add</i>. - Close and then right-click the applet and go to <i>Battery Monitor Settings</i>, check the box that says <i>Show Extended Information</i>. - Now click <i>Close</i>. When you hover the cursor over it, it'll show information about the battery. + Install smartmontools (it can be used to check smart data. HDDs use non-free firmware inside, but it's transparent to you + but the smart data comes from it. Therefore, don't rely on it too much):<br/> + # <b>pacman -S smartmontools</b><br/> + Read <a href="https://wiki.archlinux.org/index.php/S.M.A.R.T.">https://wiki.archlinux.org/index.php/S.M.A.R.T.</a> to learn how to use it. </p> <p> <a href="#pagetop">Back to top of page.</a> </p> - <h3 id="lxde_network">LXDE - Network Manager</h3> - <p> - Refer to <a href="https://wiki.archlinux.org/index.php/LXDE#Network_Management">https://wiki.archlinux.org/index.php/LXDE#Network_Management</a>. - Then I read: <a href="https://wiki.archlinux.org/index.php/NetworkManager">https://wiki.archlinux.org/index.php/NetworkManager</a>. - </p> - <p> - Install Network Manager:<br/> - # <b>pacman -S networkmanager</b> - </p> - <p> - You will also want the graphical applet:<br/> - # <b>pacman -S network-manager-applet</b><br/> - Arch wiki says that an autostart rule will be written at <i>/etc/xdg/autostart/nm-applet.desktop</i> - </p> - <p> - I want to be able to use a VPN at some point, so the wiki tells me to do:<br/> - # <b>pacman -S networkmanager-openvpn</b> - </p> - <p> - LXDE uses openbox, so I refer to:<br/> - <a href="https://wiki.archlinux.org/index.php/NetworkManager#Openbox">https://wiki.archlinux.org/index.php/NetworkManager#Openbox</a>. - </p> - <p> - It tells me for the applet I need:<br/> - # <b>pacman -S xfce4-notifyd gnome-icon-theme</b><br/> - Also, for storing authentication details (wifi) I need:<br/> - # <b>pacman -S gnome-keyring</b> - </p> - <p> - I wanted to quickly enable networkmanager:<br/> - # <b>systemctl stop dhcpcd</b><br/> - # <b>systemctl start NetworkManager</b><br/> - Enable NetworkManager at boot time:<br/> - # <b>systemctl enable NetworkManager</b> - </p> - <p> - Restart LXDE (log out, and then log back in). - </p> + + </div> + + <div class="section"> + + <h2 id="desktop">Configuring the desktop</h2> <p> - I added the volume control applet to the panel (right click panel, and add a new applet). - I also later changed the icons to use the gnome icon theme, in <i>lxappearance</i>. + Based on steps from + <a href="https://wiki.archlinux.org/index.php/General_recommendations#Graphical_user_interface">General Recommendations</a> on the Arch wiki. + The plan is to use LXDE and LXDM/LightDM, along with everything else that you would expect on other distributions that provide LXDE + by default. </p> <p> <a href="#pagetop">Back to top of page.</a> </p> -<hr/> + <div class="subsection"> + <h3 id="desktop_xorg">Installing Xorg</h3> + <p> + Based on <a href="https://wiki.archlinux.org/index.php/Xorg">https://wiki.archlinux.org/index.php/Xorg</a>. + </p> + <p> + Firstly, install it!<br/> + # <b>pacman -S xorg-server</b><br/> + I also recommend installing this (contains lots of useful tools, including <i>xrandr</i>):<br/> + # <b>pacman -S xorg-server-utils</b> + </p> + <p> + Install the driver. For me this was <i>xf86-video-intel</i> on the ThinkPad X60. T60 and macbook11/21 should be the same.<br/> + # <b>pacman -S xf86-video-intel</b><br/> + For other systems you can try:<br/> + # <b>pacman -Ss xf86-video- | less</b><br/> + Combined with looking at your <i>lspci</i> output, you can determine which driver is needed. + By default, Xorg will revert to xf86-video-vesa which is a generic driver and doesn't provide true hardware acceleration. + </p> + <p> + Other drivers (not just video) can be found by looking at the <i>xorg-drivers</i> group:<br/> + # <b>pacman -Sg xorg-drivers</b><br/> + </p> + <p> + Mostly you will rely on a display manager, but in case you ever want to start X without one:<br/> + # <b>pacman -S xorg-xinit</b> + </p> + <p> + <optional><br/> + Arch wiki recommends installing these, for testing that X works:<br/> + # <b>pacman -S xorg-twm xorg-xclock xterm</b><br/> + Refer to <a href="https://wiki.archlinux.org/index.php/Xinitrc">https://wiki.archlinux.org/index.php/Xinitrc</a>. + and test X:<br/> + # <b>startx</b><br/> + When you are satisfied, type <b><i>exit</i></b> in xterm, inside the X session.<br/> + Uninstall them (clutter. eww): # <b>pacman -S xorg-xinit xorg-twm xorg-xclock xterm</b><br/> + </optional> + </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + </div> + + <div class="subsection"> + <h3 id="desktop_kblayout">Xorg keyboard layout</h3> + <p> + Refer to <a href="https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg">https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg</a>. + </p> + <p> + Xorg uses a different configuration method for keyboard layouts, so you will notice that the layout you + set in /etc/vconsole.conf earlier might not actually be the same in X. + </p> + <p> + To see what layout you currently use, try this on a terminal emulator in X:<br/> + # <b>setxkbmap -print -verbose 10</b> + </p> + <p> + In my case, I wanted to use the Dvorak (UK) keyboard which is quite different from Xorg's default Qwerty (US) layout. + </p> + <p> + I'll just say it now: <i>XkbModel</i> can be <i>pc105</i> in this case (ThinkPad X60, with a 105-key UK keyboard). + If you use an American keyboard (typically 104 keys) you will want to use <i>pc104</i>. + </p> + <p> + <i>XkbLayout</i> in my case would be <i>gb</i>, and <i>XkbVariant</i> would be <i>dvorak</i>. + </p> + <p> + The Arch wiki recommends two different methods for setting the keyboard layout:<br/> + <a href="https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg#Using_X_configuration_files">https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg#Using_X_configuration_files</a> and<br/> + <a href="https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg#Using_localectl">https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg#Using_localectl</a>. + </p> + <p> + In my case, I chose to use the <i>configuration file</i> method:<br/> + Create the file /etc/X11/xorg.conf.d/10-keyboard.conf and put this inside:<br/> + <i> + Section "InputClass"<br/> + Identifier "system-keyboard"<br/> + MatchIsKeyboard "on"<br/> + Option "XkbLayout" "gb"<br/> + Option "XkbModel" "pc105"<br/> + Option "XkbVariant" "dvorak"<br/> + EndSection + </i> + </p> + <p> + For you, the steps above may differ if you have a different layout. If you use a US Qwerty keyboard, then + you don't even need to do anything (though it might help, for the sake of being explicit). + </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + </div> + + <div class="subsection"> + <h3 id="desktop_lxde">Install LXDE</h3> + <p> + Desktop choice isn't that important to me, so for simplicity I decided to use LXDE. It's lightweight + and does everything that I need. + If you would like to try something different, refer to + <a href="https://wiki.archlinux.org/index.php/Desktop_environment">https://wiki.archlinux.org/index.php/Desktop_environment</a> + </p> + <p> + Refer to <a href="https://wiki.archlinux.org/index.php/LXDE">https://wiki.archlinux.org/index.php/LXDE</a>. + </p> + <p> + Install it, choosing 'all' when asked for the default package list:<br/> + # <b>pacman -S lxde obconf</b> + </p> + <p> + I didn't want the following, so I removed them:<br/> + # <b>pacman -R lxmusic lxtask</b> + </p> + <p> + I also lazily installed all fonts:<br/> + # <b>pacman -S $(pacman -Ssq ttf-)</b> + </p> + <p> + LXDE comes with a terminal. You probably want a browser to go with that; I choose GNU IceCat, part of the <i><a href="https://gnu.org/">GNU project</a></i>:<br/> + # <b>pacman -S icecat</b><br/> + And a mail client:<br/> + # <b>pacman -S icedove</b> + </p> + <p> + In IceCat, go to <i>Preferences :: Advanced</i> and disable <i>GNU IceCat Health Report</i>. + </p> + <p> + I also like to install these:<br/> + # <b>pacman -S xsensors stress htop</b> + </p> + <p> + Enable LXDM (the default display manager, providing a graphical login):<br/> + # <b>systemctl enable lxdm.service</b><br/> + It will start when you boot up the machine. To start it now, do:<br/> + # <b>systemctl start lxdm.service</b> + </p> + <p> + Log in with your standard (non-root) user that you created earlier. + It is advisable to also create an xinitrc rule in case you ever want to start lxde without lxdm. + Read <a href="https://wiki.archlinux.org/index.php/Xinitrc">https://wiki.archlinux.org/index.php/Xinitrc</a>. + </p> + <p> + Open LXterminal:<br/> + $ <b>cp /etc/skel/.xinitrc ~</b><br/> + Open .xinitrc and add the following plus a line break at the bottom of the file.<br/> + <i> + # Probably not needed. The same locale info that we set before<br/> + # Based on advice from the LXDE wiki + export LC_ALL=en_GB.UTF-8<br/> + export LANGUAGE=en_GB.UTF-8<br/> + export LANG=en_GB.UTF-8<br/> + <br/> + # Start lxde desktop<br/> + exec startlxde<br/> + </i> + Now make sure that it is executable:<br/> + $ <b>chmod +x .xinitrc</b> + </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + </div> + + <div class="subsection"> + <h3 id="lxde_clock">LXDE - clock</h3> + <p> + In <b>Digital Clock Settings</b> (right click the clock) I set the Clock Format to <i>%Y/%m/%d %H:%M:%S</i> + </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + </div> + + <div class="subsection"> + <h3 id="lxde_font">LXDE - font</h3> + <p> + NOTE TO SELF: come back to this later. + </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + </div> + + <div class="subsection"> + <h3 id="lxde_screenlock">LXDE - screenlock</h3> + <p> + Arch wiki recommends to use <i>xscreensaver</i>:<br/> + # <b>pacman -S xscreensaver</b> + </p> + <p> + Under <i>Preferences :: Screensaver</i> in the LXDE menu, I chose <i>Mode: Blank Screen Only</i>, + setting <i>Blank After</i>, <i>Cycle After</i> and <i>Lock Screen After</i> (checked) to 10 minutes. + </p> + <p> + You can now lock the screen with <i>Logout :: Lock Screen</i> in the LXDE menu. + </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + </div> + + <div class="subsection"> + <h3 id="lxde_automount">LXDE - automounting</h3> + <p> + Refer to <a href="https://wiki.archlinux.org/index.php/File_manager_functionality">https://wiki.archlinux.org/index.php/File_manager_functionality</a>. + </p> + <p> + I chose to ignore this for now. NOTE TO SELF: come back to this later. + </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + </div> + + <div class="subsection"> + <h3 id="lxde_suspend">LXDE - disable suspend</h3> + <p> + When closing the laptop lid, the machine suspends. This is annoying at least to me. + NOTE TO SELF: disable it, then document the steps here. + </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + </div> + + <div class="subsection"> + <h3 id="lxde_battery">LXDE - battery monitor</h3> + <p> + Right click lxde panel and <i>Add/Remove Panel Items</i>. Click <i>Add</i> and select <i>Battery Monitor</i>, then click <i>Add</i>. + Close and then right-click the applet and go to <i>Battery Monitor Settings</i>, check the box that says <i>Show Extended Information</i>. + Now click <i>Close</i>. When you hover the cursor over it, it'll show information about the battery. + </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + </div> + + <div class="subsection"> + <h3 id="lxde_network">LXDE - Network Manager</h3> + <p> + Refer to <a href="https://wiki.archlinux.org/index.php/LXDE#Network_Management">https://wiki.archlinux.org/index.php/LXDE#Network_Management</a>. + Then I read: <a href="https://wiki.archlinux.org/index.php/NetworkManager">https://wiki.archlinux.org/index.php/NetworkManager</a>. + </p> + <p> + Install Network Manager:<br/> + # <b>pacman -S networkmanager</b> + </p> + <p> + You will also want the graphical applet:<br/> + # <b>pacman -S network-manager-applet</b><br/> + Arch wiki says that an autostart rule will be written at <i>/etc/xdg/autostart/nm-applet.desktop</i> + </p> + <p> + I want to be able to use a VPN at some point, so the wiki tells me to do:<br/> + # <b>pacman -S networkmanager-openvpn</b> + </p> + <p> + LXDE uses openbox, so I refer to:<br/> + <a href="https://wiki.archlinux.org/index.php/NetworkManager#Openbox">https://wiki.archlinux.org/index.php/NetworkManager#Openbox</a>. + </p> + <p> + It tells me for the applet I need:<br/> + # <b>pacman -S xfce4-notifyd gnome-icon-theme</b><br/> + Also, for storing authentication details (wifi) I need:<br/> + # <b>pacman -S gnome-keyring</b> + </p> + <p> + I wanted to quickly enable networkmanager:<br/> + # <b>systemctl stop dhcpcd</b><br/> + # <b>systemctl start NetworkManager</b><br/> + Enable NetworkManager at boot time:<br/> + # <b>systemctl enable NetworkManager</b> + </p> + <p> + Restart LXDE (log out, and then log back in). + </p> + <p> + I added the volume control applet to the panel (right click panel, and add a new applet). + I also later changed the icons to use the gnome icon theme, in <i>lxappearance</i>. + </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + </div> + + </div> + + <div class="section"> - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. + </p> - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. + </p> + + </div> </body> </html> diff --git a/docs/gnulinux/encrypted_parabola.html b/docs/gnulinux/encrypted_parabola.html index a48e4896..85cb6ce2 100644 --- a/docs/gnulinux/encrypted_parabola.html +++ b/docs/gnulinux/encrypted_parabola.html @@ -12,262 +12,293 @@ </head> <body> - <header> + <div class="section"> <h1>Installing Parabola GNU/Linux with full disk encryption (including /boot)</h1> - <aside>Or <a href="index.html">back to main index</a></aside> - </header> - - <p> - Libreboot uses the GRUB <a href="http://www.coreboot.org/Payloads#GRUB_2">payload</a> - by default, which means that the GRUB configuration file - (where your GRUB menu comes from) is stored directly alongside libreboot - and it's GRUB payload executable, inside - the flash chip. In context, this means that installing distributions and managing them - is handled slightly differently compared to traditional BIOS systems. - </p> - - <p> - On most systems, the /boot partition has to be left unencrypted while the others are encrypted. - This is so that GRUB, and therefore the kernel, can be loaded and executed since the firmware - can't open a LUKS volume. Not so with libreboot! Since GRUB is already included directly as a - payload, even /boot can be encrypted. This protects /boot from tampering by someone with physical - access to the machine. - </p> - - <p> - Boot Parabola's install environment. <a href="grub_boot_installer.html">How to boot a GNU/Linux installer</a>. - </p> - - <p> - For this guide I used the 2013 09 01 image to boot the live installer and install the system. - </p> - - <p> - Parabola is much more flexible than Trisquel, but also more involved to set up. - </p> - - <p> - Firstly if you use an SSD, beware there are issues with TRIM (not enabled through luks) and security issues if you do enable it. - See <a href="https://wiki.archlinux.org/index.php/Dm-crypt/Specialties#Discard.2FTRIM_support_for_solid_state_drives_.28SSD.29">this page</a> - for more info. - </p> - - <p> - <b>If you are using an SSD for this, make sure it's brand-new (or barely used). Or, otherwise, be sure that it never previously - contained plaintext copies of your data.</b> - </p> - - <p> - Wipe the MBR (if you use MBR):<br/> - # <b>lsblk</b><br/> - Your HDD is probably /dev/sda: - # <b>dd if=/dev/zero of=/dev/sda bs=446 count=1; sync</b><br/> - Never use SeaBIOS! The MBR section can easily be changed with malicious code, which SeaBIOS will blindly execute. - This guide is for libreboot with GRUB-as-payload only. - </p> - - <p> - Securely wipe the drive:<br/> - # <b>dd if=/dev/urandom of=/dev/sda; sync</b><br/> - NOTE: If you have an SSD, only do this the first time. If it was already LUKS-encrypted before, - use the info below to wipe the LUKS header. Also, check online for your SSD what the recommended - erase block size is. For example if it was 2MiB:<br/> - # <b>dd if=/dev/urandom of=/dev/sda bs=2M; sync</b> - </p> - <p> - If your drive was already LUKS encrypted (maybe you are re-installing your distro) then - it is already 'wiped'. You should just wipe the LUKS header. - <a href="https://www.lisenet.com/2013/luks-add-keys-backup-and-restore-volume-header/">https://www.lisenet.com/2013/luks-add-keys-backup-and-restore-volume-header/</a> - showed me how to do this. It recommends doing the first 3MiB. Now, that guide is recommending putting zero there. I'm doing to use urandom. Do this:<br/> - # <b>head -c 3145728 /dev/urandom > /dev/sda; sync</b><br/> - (wiping the LUKS header is important, since it has hashed passphrases and so on. It's 'secure', but 'potentially' a risk). - </p> - <p> - <b> - If you do plan to use an SSD, make sure to read - <a href="https://wiki.archlinux.org/index.php/Solid_State_Drives">https://wiki.archlinux.org/index.php/Solid_State_Drives</a><br/> - Edit /etc/fstab later on when chrooted into your install. Also, read the whole article and keep all points in mind, adapting - them for this guide. - </b> - </p> - - <p> - This guide will go through the installation steps taken at the time of writing, which may or may not change due to - the volatile nature of Parabola (it changes all the time). In general most of it should remain the same. If you spot mistakes, - please say so! This guide will be ported to the Parabola wiki at a later date. For up to date Parabola install guide, go to - the Parabola wiki. This guide essentially cherry picks the useful information (valid at the time of writing: 2014-09-15). - </p> - - <h2> - Change keyboard layout - </h2> - <p> - Parabola live shell assumes US Qwerty. If you have something different, use:<br/> - # <b>loadkeys LAYOUT</b><br/> - For me, LAYOUT would have been dvorak-uk. - </p> + <p> + Libreboot uses the GRUB <a href="http://www.coreboot.org/Payloads#GRUB_2">payload</a> + by default, which means that the GRUB configuration file + (where your GRUB menu comes from) is stored directly alongside libreboot + and it's GRUB payload executable, inside + the flash chip. In context, this means that installing distributions and managing them + is handled slightly differently compared to traditional BIOS systems. + </p> - <h2>Getting started</h2> - <p> - The beginning is based on <a href="https://wiki.parabolagnulinux.org/Installation_Guide">https://wiki.parabolagnulinux.org/Installation_Guide</a>. - Then I referred to <a href="https://wiki.archlinux.org/index.php/Partitioning">https://wiki.archlinux.org/index.php/Partitioning</a> at first. - </p> + <p> + On most systems, the /boot partition has to be left unencrypted while the others are encrypted. + This is so that GRUB, and therefore the kernel, can be loaded and executed since the firmware + can't open a LUKS volume. Not so with libreboot! Since GRUB is already included directly as a + payload, even /boot can be encrypted. This protects /boot from tampering by someone with physical + access to the machine. + </p> + <p> + <a href="index.html">Back to previous index</a> + </p> + </div> - <h2>dm-mod</h2> + <div class="section"> + <p> - device-mapper will be used - a lot. Make sure that the kernel module is loaded:<br/> - # <b>modprobe dm-mod</b> + Boot Parabola's install environment. <a href="grub_boot_installer.html">How to boot a GNU/Linux installer</a>. </p> - <h2>Create LUKS partition</h2> - <p> - I am using MBR partitioning, so I use cfdisk:<br/> - # <b>cfdisk /dev/sda</b> - </p> - <p> - I create a single large sda1 filling the whole drive, leaving it as the default type 'Linux' (83). - </p> <p> - Now I refer to <a href="https://wiki.archlinux.org/index.php/Dm-crypt/Drive_preparation#Partitioning">https://wiki.archlinux.org/index.php/Dm-crypt/Drive_preparation#Partitioning</a>:<br/> - I am then directed to <a href="https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption">https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption</a>. + For this guide I used the 2013 09 01 image to boot the live installer and install the system. </p> + <p> - Parabola forces you to RTFM. - </p> - <p> - It tells me to run:<br/> - # <b>cryptsetup benchmark</b> (for making sure the list below is populated)<br/> - Then:<br/> - # <b>cat /proc/crypto</b><br/> - This gives me crypto options that I can use. It also provides a representation of the best way to set up LUKS (in this case, security is a priority; speed, a distant second). - To gain a better understanding, I am also reading:<br/> - # <b>man cryptsetup</b> - </p> - <p> - Following that page, based on my requirements, I do the following based on <a href="https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption#Encryption_options_for_LUKS_mode">https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption#Encryption_options_for_LUKS_mode</a>. - Reading through, it seems like Serpent (encryption) and Whirlpool (hash) is the best option. - </p> - <p> - I am initializing LUKS with the following:<br/> - # <b>cryptsetup -v --cipher serpent-xts-plain64 --key-size 512 --hash whirlpool --use-random --verify-passphrase luksFormat /dev/sda1</b> - -- choose a <b>secure</b> passphrase here. Ideally lots of lowercase/uppercase numbers, letters, symbols etc all in a random pattern. The password - length should be as long as you are able to handle without writing it down or storing it anywhere. Ideally, 100 characters or more. - It might take you a while to memorize a long passphrase before beginning this step. + This guide will go through the installation steps taken at the time of writing, which may or may not change due to + the volatile nature of Parabola (it changes all the time). In general most of it should remain the same. If you spot mistakes, + please say so! This guide will be ported to the Parabola wiki at a later date. For up to date Parabola install guide, go to + the Parabola wiki. This guide essentially cherry picks the useful information (valid at the time of writing: 2014-09-15). </p> + + </div> - <h2>Create LVM</h2> - <p> - Now I refer to <a href="https://wiki.archlinux.org/index.php/LVM">https://wiki.archlinux.org/index.php/LVM</a>. - </p> + <div class="section"> + <p> - Open the LUKS partition:<br/> - # <b>cryptsetup open --type luks /dev/sda1 lvm</b><br/> - (it will be available at /dev/mapper/lvm)<br/> - I'm told that the above is old syntax, which is what I did anyway. You could also try:<br/> - # <b>cryptsetup luksOpen /dev/sda1 lvm</b> - </p> - <p> - Create LVM partition:<br/> - # <b>pvcreate /dev/mapper/lvm</b><br/> - Show that you just created it:<br/> - # <b>pvdisplay</b> - </p> - <p> - Now I create the volume group, inside of which the logical volumes will be created:<br/> - # <b>vgcreate matrix /dev/mapper/lvm</b> (volume group name is 'matrix')<br/> - Show that you created it:<br/> - # <b>vgdisplay</b> - </p> - <p> - Now create the logical volumes:<br/> - # <b>lvcreate -L 2G matrix -n swapvol</b> (2G swap partition, named <u>swapvol</u>)<br/> - # <b>lvcreate -l +100%FREE matrix -n rootvol</b> (single large partition in the rest of the space, named <u>rootvol</u>)<br/> - You can also be flexible here, for example you can specify a /boot, a /, a /home, a /var, a /usr, etc. For example, - if you will be running a web/mail server then you want /var in its own partition (so that if it fills up with logs, it won't crash your system). - For a home/laptop system (typical use case), a root and a swap will do (really). - </p> - <p> - Verify that the logical volumes were created, using the following command:<br/> - # <b>lvdisplay</b> + Firstly if you use an SSD, beware there are issues with TRIM (not enabled through luks) and security issues if you do enable it. + See <a href="https://wiki.archlinux.org/index.php/Dm-crypt/Specialties#Discard.2FTRIM_support_for_solid_state_drives_.28SSD.29">this page</a> + for more info. </p> - <h2>Create / and swap partitions</h2> <p> - For the swapvol LV I use:<br/> - # <b>mkswap /dev/mapper/matrix-swapvol</b> - </p> - <p> - For the rootvol LV I use:<br/> - # <b>mkfs.ext4 /dev/mapper/matrix-rootvol</b> + <b>If you are using an SSD for this, make sure it's brand-new (or barely used). Or, otherwise, be sure that it never previously + contained plaintext copies of your data.</b> </p> - <h2>Continue with Parabola installation</h2> - <p> - Mount the root (/) partition:<br/> - # <b>mount /dev/matrix/rootvol /mnt</b><br/> - </p> - <p> - This guide is really about GRUB, Parabola and cryptomount. I have to show how to install Parabola - so that the guide can continue. - </p> <p> - Now I am following the rest of <a href="https://wiki.parabolagnulinux.org/Installation_Guide">https://wiki.parabolagnulinux.org/Installation_Guide</a>. - I also cross referenced <a href="https://wiki.archlinux.org/index.php/Installation_guide">https://wiki.archlinux.org/index.php/Installation_guide</a>. - </p> - <p> - Create /home and /boot on rootvol mountpoint:<br/> - # <b>mkdir /mnt/home</b><br/> - # <b>mkdir /mnt/boot</b> - </p> - <p> - The wiki says to enable the swap so that it can be detected by 'genfstab':<br/> - # <b>swapon /dev/matrix/swapvol</b> - </p> - <p> - DHCP was already working for me, so I had internet during the install. Therefore, I ignore the 'Connect to the Internet' section of the install guide. - I also ignore wifi, since I can set that up after the install. For now, I am just using ethernet. - Otherwise, refer to <a href="https://wiki.archlinux.org/index.php/Configuring_Network">https://wiki.archlinux.org/index.php/Configuring_Network</a>. - You can test to see if internet is already working by pinging a few domains. + Wipe the MBR (if you use MBR):<br/> + # <b>lsblk</b><br/> + Your HDD is probably /dev/sda: + # <b>dd if=/dev/zero of=/dev/sda bs=446 count=1; sync</b><br/> + Never use SeaBIOS! The MBR section can easily be changed with malicious code, which SeaBIOS will blindly execute. + This guide is for libreboot with GRUB-as-payload only. </p> <p> - I commented out all lines except the Server line for the UK Parabola server (main server) in <b>/etc/pacman.d/mirrorlist</b> and then did:<br/> - # <b>pacman -Syy</b><br/> - # <b>pacman -Syu</b><br/> - # <b>pacman -Sy pacman</b> (and then I did the other 2 steps above, again)<br/> - In my case I did the steps in the next paragraph, and followed the steps in this paragraph again. + Securely wipe the drive:<br/> + # <b>dd if=/dev/urandom of=/dev/sda; sync</b><br/> + NOTE: If you have an SSD, only do this the first time. If it was already LUKS-encrypted before, + use the info below to wipe the LUKS header. Also, check online for your SSD what the recommended + erase block size is. For example if it was 2MiB:<br/> + # <b>dd if=/dev/urandom of=/dev/sda bs=2M; sync</b> </p> <p> - <troubleshooting><br/> - The following is based on 'Verification of package signatures' in the Parabola install guide.<br/> - Check there first to see if steps differ by now.<br/> - Now you have to update the default Parabola keyring. This is used for signing and verifying packages:<br/> - # <b>pacman -Sy parabola-keyring</b><br/> - It says that if you get GPG errors, then it's probably an expired key and, therefore, you should do:<br/> - # <b>pacman-key --populate parabola</b><br/> - # <b>pacman-key --refresh-keys</b><br/> - # <b>pacman -Sy parabola-keyring</b><br/> - To be honest, you should do the above anyway. Parabola has a lot of maintainers, and a lot of keys. Really!<br/> - Also, it says that if the clock is set incorrectly then you have to manually set the correct time <br/> - (if keys are listed as expired because of it):<br/> - # <b>date MMDDhhmm[[CC]YY][.ss]</b><br/> - I also had to install:<br/> - # <b>pacman -S archlinux-keyring</b><br/> - # <b>pacman-key --populate archlinux</b><br/> - In my case I saw some conflicting files reported in pacman, stopping me from using it.<br/> - I deleted the files that it mentioned - and then it worked. Specifically, I had this error:<br/> - <i>licenses: /usr/share/licenses/common/MPS exists in filesystem</i><br/> - I rm -rf'd the file and then pacman worked. I'm told that the following would have also made it work:<br/> - # <b>pacman -Sf licenses</b><br/> - </troubleshooting><br/> + If your drive was already LUKS encrypted (maybe you are re-installing your distro) then + it is already 'wiped'. You should just wipe the LUKS header. + <a href="https://www.lisenet.com/2013/luks-add-keys-backup-and-restore-volume-header/">https://www.lisenet.com/2013/luks-add-keys-backup-and-restore-volume-header/</a> + showed me how to do this. It recommends doing the first 3MiB. Now, that guide is recommending putting zero there. I'm doing to use urandom. Do this:<br/> + # <b>head -c 3145728 /dev/urandom > /dev/sda; sync</b><br/> + (wiping the LUKS header is important, since it has hashed passphrases and so on. It's 'secure', but 'potentially' a risk). </p> <p> - I also like to install other packages (base-devel, compilers and so on) and wpa_supplicant/dialog are needed for wireless after the install:<br/> - # <b>pacstrap /mnt base base-devel wpa_supplicant dialog</b> + <b> + If you do plan to use an SSD, make sure to read + <a href="https://wiki.archlinux.org/index.php/Solid_State_Drives">https://wiki.archlinux.org/index.php/Solid_State_Drives</a><br/> + Edit /etc/fstab later on when chrooted into your install. Also, read the whole article and keep all points in mind, adapting + them for this guide. + </b> </p> + + </div> + + <div class="section"> + + <h2> + Change keyboard layout + </h2> + <p> + Parabola live shell assumes US Qwerty. If you have something different, use:<br/> + # <b>loadkeys LAYOUT</b><br/> + For me, LAYOUT would have been dvorak-uk. + </p> + + </div> + + <div class="section"> + + <h2>Getting started</h2> + <p> + The beginning is based on <a href="https://wiki.parabolagnulinux.org/Installation_Guide">https://wiki.parabolagnulinux.org/Installation_Guide</a>. + Then I referred to <a href="https://wiki.archlinux.org/index.php/Partitioning">https://wiki.archlinux.org/index.php/Partitioning</a> at first. + </p> + + </div> + + <div class="section"> + + <h2>dm-mod</h2> + <p> + device-mapper will be used - a lot. Make sure that the kernel module is loaded:<br/> + # <b>modprobe dm-mod</b> + </p> + + <h2>Create LUKS partition</h2> + <p> + I am using MBR partitioning, so I use cfdisk:<br/> + # <b>cfdisk /dev/sda</b> + </p> + <p> + I create a single large sda1 filling the whole drive, leaving it as the default type 'Linux' (83). + </p> + <p> + Now I refer to <a href="https://wiki.archlinux.org/index.php/Dm-crypt/Drive_preparation#Partitioning">https://wiki.archlinux.org/index.php/Dm-crypt/Drive_preparation#Partitioning</a>:<br/> + I am then directed to <a href="https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption">https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption</a>. + </p> + <p> + Parabola forces you to RTFM. + </p> + <p> + It tells me to run:<br/> + # <b>cryptsetup benchmark</b> (for making sure the list below is populated)<br/> + Then:<br/> + # <b>cat /proc/crypto</b><br/> + This gives me crypto options that I can use. It also provides a representation of the best way to set up LUKS (in this case, security is a priority; speed, a distant second). + To gain a better understanding, I am also reading:<br/> + # <b>man cryptsetup</b> + </p> + <p> + Following that page, based on my requirements, I do the following based on <a href="https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption#Encryption_options_for_LUKS_mode">https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption#Encryption_options_for_LUKS_mode</a>. + Reading through, it seems like Serpent (encryption) and Whirlpool (hash) is the best option. + </p> + <p> + I am initializing LUKS with the following:<br/> + # <b>cryptsetup -v --cipher serpent-xts-plain64 --key-size 512 --hash whirlpool --use-random --verify-passphrase luksFormat /dev/sda1</b> + -- choose a <b>secure</b> passphrase here. Ideally lots of lowercase/uppercase numbers, letters, symbols etc all in a random pattern. The password + length should be as long as you are able to handle without writing it down or storing it anywhere. Ideally, 100 characters or more. + It might take you a while to memorize a long passphrase before beginning this step. + </p> + + </div> - <h3>Configure the system</h3> + <div class="section"> + + <h2>Create LVM</h2> + <p> + Now I refer to <a href="https://wiki.archlinux.org/index.php/LVM">https://wiki.archlinux.org/index.php/LVM</a>. + </p> + <p> + Open the LUKS partition:<br/> + # <b>cryptsetup open --type luks /dev/sda1 lvm</b><br/> + (it will be available at /dev/mapper/lvm)<br/> + I'm told that the above is old syntax, which is what I did anyway. You could also try:<br/> + # <b>cryptsetup luksOpen /dev/sda1 lvm</b> + </p> + <p> + Create LVM partition:<br/> + # <b>pvcreate /dev/mapper/lvm</b><br/> + Show that you just created it:<br/> + # <b>pvdisplay</b> + </p> + <p> + Now I create the volume group, inside of which the logical volumes will be created:<br/> + # <b>vgcreate matrix /dev/mapper/lvm</b> (volume group name is 'matrix')<br/> + Show that you created it:<br/> + # <b>vgdisplay</b> + </p> + <p> + Now create the logical volumes:<br/> + # <b>lvcreate -L 2G matrix -n swapvol</b> (2G swap partition, named <u>swapvol</u>)<br/> + # <b>lvcreate -l +100%FREE matrix -n rootvol</b> (single large partition in the rest of the space, named <u>rootvol</u>)<br/> + You can also be flexible here, for example you can specify a /boot, a /, a /home, a /var, a /usr, etc. For example, + if you will be running a web/mail server then you want /var in its own partition (so that if it fills up with logs, it won't crash your system). + For a home/laptop system (typical use case), a root and a swap will do (really). + </p> + <p> + Verify that the logical volumes were created, using the following command:<br/> + # <b>lvdisplay</b> + </p> + + </div> + + <div class="section"> + + <h2>Create / and swap partitions</h2> + <p> + For the swapvol LV I use:<br/> + # <b>mkswap /dev/mapper/matrix-swapvol</b> + </p> + <p> + For the rootvol LV I use:<br/> + # <b>mkfs.ext4 /dev/mapper/matrix-rootvol</b> + </p> + + </div> + + <div class="section"> + + <h2>Continue with Parabola installation</h2> + <p> + Mount the root (/) partition:<br/> + # <b>mount /dev/matrix/rootvol /mnt</b><br/> + </p> + <p> + This guide is really about GRUB, Parabola and cryptomount. I have to show how to install Parabola + so that the guide can continue. + </p> + <p> + Now I am following the rest of <a href="https://wiki.parabolagnulinux.org/Installation_Guide">https://wiki.parabolagnulinux.org/Installation_Guide</a>. + I also cross referenced <a href="https://wiki.archlinux.org/index.php/Installation_guide">https://wiki.archlinux.org/index.php/Installation_guide</a>. + </p> + <p> + Create /home and /boot on rootvol mountpoint:<br/> + # <b>mkdir /mnt/home</b><br/> + # <b>mkdir /mnt/boot</b> + </p> + <p> + The wiki says to enable the swap so that it can be detected by 'genfstab':<br/> + # <b>swapon /dev/matrix/swapvol</b> + </p> + <p> + DHCP was already working for me, so I had internet during the install. Therefore, I ignore the 'Connect to the Internet' section of the install guide. + I also ignore wifi, since I can set that up after the install. For now, I am just using ethernet. + Otherwise, refer to <a href="https://wiki.archlinux.org/index.php/Configuring_Network">https://wiki.archlinux.org/index.php/Configuring_Network</a>. + You can test to see if internet is already working by pinging a few domains. + </p> + + <p> + I commented out all lines except the Server line for the UK Parabola server (main server) in <b>/etc/pacman.d/mirrorlist</b> and then did:<br/> + # <b>pacman -Syy</b><br/> + # <b>pacman -Syu</b><br/> + # <b>pacman -Sy pacman</b> (and then I did the other 2 steps above, again)<br/> + In my case I did the steps in the next paragraph, and followed the steps in this paragraph again. + </p> + <p> + <troubleshooting><br/> + The following is based on 'Verification of package signatures' in the Parabola install guide.<br/> + Check there first to see if steps differ by now.<br/> + Now you have to update the default Parabola keyring. This is used for signing and verifying packages:<br/> + # <b>pacman -Sy parabola-keyring</b><br/> + It says that if you get GPG errors, then it's probably an expired key and, therefore, you should do:<br/> + # <b>pacman-key --populate parabola</b><br/> + # <b>pacman-key --refresh-keys</b><br/> + # <b>pacman -Sy parabola-keyring</b><br/> + To be honest, you should do the above anyway. Parabola has a lot of maintainers, and a lot of keys. Really!<br/> + Also, it says that if the clock is set incorrectly then you have to manually set the correct time <br/> + (if keys are listed as expired because of it):<br/> + # <b>date MMDDhhmm[[CC]YY][.ss]</b><br/> + I also had to install:<br/> + # <b>pacman -S archlinux-keyring</b><br/> + # <b>pacman-key --populate archlinux</b><br/> + In my case I saw some conflicting files reported in pacman, stopping me from using it.<br/> + I deleted the files that it mentioned + and then it worked. Specifically, I had this error:<br/> + <i>licenses: /usr/share/licenses/common/MPS exists in filesystem</i><br/> + I rm -rf'd the file and then pacman worked. I'm told that the following would have also made it work:<br/> + # <b>pacman -Sf licenses</b><br/> + </troubleshooting><br/> + </p> + <p> + I also like to install other packages (base-devel, compilers and so on) and wpa_supplicant/dialog are needed for wireless after the install:<br/> + # <b>pacstrap /mnt base base-devel wpa_supplicant dialog</b> + </p> + + </div> + + <div class="section"> + + <h2>Configure the system</h2> <p> From the Parabola installation guide (Arch's one was identical):<br/> # <b>genfstab -p /mnt >> /mnt/etc/fstab</b> @@ -359,8 +390,12 @@ # <b>mkinitcpio -p linux-libre-grsec</b> </li> </ul> + + </div> - <h3>Set a root password</h3> + <div class="section"> + + <h2>Set a root password</h2> <p> At the time of writing, Parabola used SHA512 by default for it's password hashing. </p> @@ -374,8 +409,12 @@ # <b>passwd root</b><br/> Make sure to set a secure password! Also, it must never be the same as your LUKS password. </p> + + </div> + + <div class="section"> - <h3>Extra security tweaks</h3> + <h2>Extra security tweaks</h2> <p> Based on <a href="https://wiki.archlinux.org/index.php/Security">https://wiki.archlinux.org/index.php/Security</a>. </p> @@ -397,8 +436,12 @@ Configure sudo - not covered here. Will be covered post-installation in another tutorial, at a later date. If this is a single-user system, you don't really need sudo. </p> + + </div> + + <div class="section"> - <h3>Unmount, reboot!</h3> + <h2>Unmount, reboot!</h2> <p> Exit from chroot:<br/> # <b>exit</b> @@ -421,8 +464,12 @@ # <b>shutdown -h now</b><br/> Then boot up again. </p> + + </div> - <h3>Booting from GRUB</h3> + <div class="section"> + + <h2>Booting from GRUB</h2> <p> Initially you will have to boot manually. Press C to get to the GRUB command line. The underlined parts are optional (using those 2 underlines will boot lts kernel instead of normal). @@ -437,132 +484,144 @@ <p> You could also make it load /boot/vmlinuz-linux-libre-grsec and /boot/initramfs-linux-libre-grsec.img </p> + + </div> -<hr/> + <div class="section"> + + <h2>Modify grub.cfg inside the ROM</h2> - <h2>Modify grub.cfg inside the ROM</h2> + <p> + Now you need to modify the ROM, so that Parabola can boot automatically with this configuration. + <a href="grub_cbfs.html">grub_cbfs.html</a> shows you how. Follow that guide, using the configuration details below. + </p> + <p> + Inside the 'Load Operating System' menu entry, change the contents to:<br/> + <b><i> + cryptomount -a (ahci0,msdos1)<br/> + set root='lvm/matrix-rootvol'<br/> + linux /boot/vmlinuz-linux-libre<u>-lts</u> root=/dev/matrix/rootvol cryptdevice=/dev/sda1:root<br/> + initrd /boot/initramfs-linux-libre<u>-lts</u>.img + </i></b> + </p> - <p> - Now you need to modify the ROM, so that Parabola can boot automatically with this configuration. - <a href="grub_cbfs.html">grub_cbfs.html</a> shows you how. Follow that guide, using the configuration details below. - </p> - <p> - Inside the 'Load Operating System' menu entry, change the contents to:<br/> - <b><i> - cryptomount -a (ahci0,msdos1)<br/> - set root='lvm/matrix-rootvol'<br/> - linux /boot/vmlinuz-linux-libre<u>-lts</u> root=/dev/matrix/rootvol cryptdevice=/dev/sda1:root<br/> - initrd /boot/initramfs-linux-libre<u>-lts</u>.img - </i></b> - </p> + <p> + Note: the underlined parts above (-lts) can also be removed, to boot the latest kernel instead of LTS (long-term support) kernels. + You could also copy the menu entry and in one have -lts, and without in the other menuentry. + You could also create a menu entry to load /boot/vmlinuz-linux-libre-grsec and /boot/initramfs-linux-libre-grsec.img + </p> - <p> - Note: the underlined parts above (-lts) can also be removed, to boot the latest kernel instead of LTS (long-term support) kernels. - You could also copy the menu entry and in one have -lts, and without in the other menuentry. - You could also create a menu entry to load /boot/vmlinuz-linux-libre-grsec and /boot/initramfs-linux-libre-grsec.img - </p> + <p> + Personally, I opted to have the entry for linux-libre-grsec at the top, so that it would load by default. + </p> - <p> - Personally, I opted to have the entry for linux-libre-grsec at the top, so that it would load by default. - </p> + <p> + Above the 'Load Operating System' menu entry you should also add a GRUB password, like so: + </p> + <pre><b><i>set superusers="root" + password_pbkdf2 root grub.pbkdf2.sha512.10000.711F186347156BC105CD83A2ED7AF1EB971AA2B1EB2640172F34B0DEFFC97E654AF48E5F0C3B7622502B76458DA494270CC0EA6504411D676E6752FD1651E749.8DD11178EB8D1F633308FD8FCC64D0B243F949B9B99CCEADE2ECA11657A757D22025986B0FA116F1D5191E0A22677674C994EDBFADE62240E9D161688266A711 + </i></b></pre> - <p> - Above the 'Load Operating System' menu entry you should also add a GRUB password, like so: - </p> -<pre><b><i>set superusers="root" -password_pbkdf2 root grub.pbkdf2.sha512.10000.711F186347156BC105CD83A2ED7AF1EB971AA2B1EB2640172F34B0DEFFC97E654AF48E5F0C3B7622502B76458DA494270CC0EA6504411D676E6752FD1651E749.8DD11178EB8D1F633308FD8FCC64D0B243F949B9B99CCEADE2ECA11657A757D22025986B0FA116F1D5191E0A22677674C994EDBFADE62240E9D161688266A711 -</i></b></pre> + <p> + Note that the above entry specifies user 'root'; this is just a username for GRUB. You don't even need to use root. + Change root on both of those 2 lines to whatever you want. + </p> - <p> - Note that the above entry specifies user 'root'; this is just a username for GRUB. You don't even need to use root. - Change root on both of those 2 lines to whatever you want. - </p> + <p> + Start dhcp on ethernet:<br/> + # <b>systemctl start dhcpcd.service</b> + This is just for the step below. I won't cover network configuration here. That is for another Parabola article. + </p> - <p> - Start dhcp on ethernet:<br/> - # <b>systemctl start dhcpcd.service</b> - This is just for the step below. I won't cover network configuration here. That is for another Parabola article. - </p> + <p> + The password hash (it's <b>password</b>, by the way) after <i>'password_pbkdf2 root'</i> <i>should be changed</i> and is created by the <b>grub-mkpasswd-pbkdf2</b> utility, which you need to install or otherwise compile, + like so:<br/> + # <b>pacman -S grub</b> + </p> + + <p> + GRUB isn't needed for booting, since it's already included as a payload in libreboot. This is only so that the utility needed becomes available. Get your hash + by entering your chosen password at the prompt, when running this command:<br/> + # <b>grub-mkpasswd-pbkdf2</b> + </p> - <p> - The password hash (it's <b>password</b>, by the way) after <i>'password_pbkdf2 root'</i> <i>should be changed</i> and is created by the <b>grub-mkpasswd-pbkdf2</b> utility, which you need to install or otherwise compile, - like so:<br/> - # <b>pacman -S grub</b> - </p> - - <p> - GRUB isn't needed for booting, since it's already included as a payload in libreboot. This is only so that the utility needed becomes available. Get your hash - by entering your chosen password at the prompt, when running this command:<br/> - # <b>grub-mkpasswd-pbkdf2</b> - </p> + <p> + It will output the hash for the password that you entered. Make sure to specify a password that is different from both your LUKS *and* your root/user password. + Use it to replace the default hash mentioned above. + </p> - <p> - It will output the hash for the password that you entered. Make sure to specify a password that is different from both your LUKS *and* your root/user password. - Use it to replace the default hash mentioned above. - </p> + <p> + With this setup, you will have to enter a password at boot time, in GRUB, before being able to use any of the menu entries or switch to the terminal. + This protects your system from an attacker simply booting a live usb distro and re-flashing the boot firmware. + </p> - <p> - With this setup, you will have to enter a password at boot time, in GRUB, before being able to use any of the menu entries or switch to the terminal. - This protects your system from an attacker simply booting a live usb distro and re-flashing the boot firmware. - </p> + <p> + You probably only need base-devel (compilers and so on) to build and use cbfstool. It was already installed if you followed this tutorial, but here it is:<br/> + # <b>pacman -S base-devel</b> + </p> - <p> - You probably only need base-devel (compilers and so on) to build and use cbfstool. It was already installed if you followed this tutorial, but here it is:<br/> - # <b>pacman -S base-devel</b> - </p> + <p> + For flashing the modified ROM, I just used flashrom from the Parabola repo's:<br/> + # <b>pacman -S flashrom</b><br/> + I also installed dmidecode:<br/> + # <b>pacman -S dmidecode</b> + </p> - <p> - For flashing the modified ROM, I just used flashrom from the Parabola repo's:<br/> - # <b>pacman -S flashrom</b><br/> - I also installed dmidecode:<br/> - # <b>pacman -S dmidecode</b> - </p> + <p> + When done, deleted GRUB (remember, we only needed it for the <i>grub-mkpasswd-pbkdf2</i> utility; + GRUB is already part of libreboot, flashed alongside it as a <i>payload</i>):<br/> + # <b>pacman -R grub</b> + </p> + + </div> + + <div class="section"> <p> - When done, deleted GRUB (remember, we only needed it for the <i>grub-mkpasswd-pbkdf2</i> utility; - GRUB is already part of libreboot, flashed alongside it as a <i>payload</i>):<br/> - # <b>pacman -R grub</b> + If you followed all that correctly, you should now have a fully encrypted Parabola installation. + This is a very barebones Parabola install (the default one). Refer to the wiki for how to do the rest + (desktop, etc). </p> + + </div> -<hr/> + <div class="section"> - <p> - If you followed all that correctly, you should now have a fully encrypted Parabola installation. - This is a very barebones Parabola install (the default one). Refer to the wiki for how to do the rest - (desktop, etc). - </p> + <h2>Further security tips</h2> + <p> + <a href="https://wiki.archlinux.org/index.php/Security">https://wiki.archlinux.org/index.php/Security</a>.<br/> + <a href="https://wiki.parabolagnulinux.org/User:GNUtoo/laptop">https://wiki.parabolagnulinux.org/User:GNUtoo/laptop</a> + </p> + + </div> -<hr/> + <div class="section"> - <h2>Further security tips</h2> - <p> - <a href="https://wiki.archlinux.org/index.php/Security">https://wiki.archlinux.org/index.php/Security</a>.<br/> - <a href="https://wiki.parabolagnulinux.org/User:GNUtoo/laptop">https://wiki.parabolagnulinux.org/User:GNUtoo/laptop</a> - </p> + <h2>Follow-up tutorial: configuring Parabola</h2> + <p> + <a href="configuring_parabola.html">configuring_parabola.html</a> shows my own notes post-installation. Using these, you can get a basic + system similar to the one that I chose for myself. You can also cherry pick useful notes and come up with your own system. + Parabola is user-centric, which means that you are in control. For more information, read <a href="https://wiki.archlinux.org/index.php/The_Arch_Way">The Arch Way</a> + (Parabola also follows it). + </p> + + </div> -<hr/> + <div class="section"> - <h2>Follow-up tutorial: configuring Parabola</h2> <p> - <a href="configuring_parabola.html">configuring_parabola.html</a> shows my own notes post-installation. Using these, you can get a basic - system similar to the one that I chose for myself. You can also cherry pick useful notes and come up with your own system. - Parabola is user-centric, which means that you are in control. For more information, read <a href="https://wiki.archlinux.org/index.php/The_Arch_Way">The Arch Way</a> - (Parabola also follows it). + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. </p> -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. + </p> + + </div> </body> </html> diff --git a/docs/gnulinux/encrypted_trisquel.html b/docs/gnulinux/encrypted_trisquel.html index 8e369a45..c24d5f1a 100644 --- a/docs/gnulinux/encrypted_trisquel.html +++ b/docs/gnulinux/encrypted_trisquel.html @@ -12,280 +12,325 @@ </head> <body> - <header> + <div class="section"> <h1>Installing Trisquel GNU/Linux with full disk encryption (including /boot)</h1> - <aside>Or <a href="index.html">back to main index</a></aside> - </header> - - <p> - Libreboot uses the GRUB <a href="http://www.coreboot.org/Payloads#GRUB_2">payload</a> - by default, which means that the GRUB configuration file - (where your GRUB menu comes from) is stored directly alongside libreboot - and its GRUB payload executable, inside - the flash chip. In context, this means that installing distributions and managing them - is handled slightly differently compared to traditional BIOS systems. - </p> - - <p> - On most systems, the /boot partition has to be left unencrypted while the others are encrypted. - This is so that GRUB, and therefore the kernel, can be loaded and executed since the firmware - can't open a LUKS volume. Not so with libreboot! Since GRUB is already included directly as a - payload, even /boot can be encrypted. This protects /boot from tampering by someone with physical - access to the machine. - </p> - - <p> - This works in Trisquel 7, and probably Trisquel 6. Boot the 'net installer' (Install Trisquel in Text Mode). <a href="grub_boot_installer.html">How to boot a GNU/Linux installer</a>. - </p> - - <p> - Set a strong user password (ideally above 40 characters, of lowercase/uppercase, numbers and symbols). - </p> - - <p> - when the installer asks you to set up - encryption (ecryptfs) for your home directory, select 'Yes' if you want to: <b>LUKS is already secure and performs well. Having ecryptfs on top of it - will add noticeable performance penalty, for little security gain in most use cases. This is therefore optional, and not recommended. - Choose 'no'.</b> - </p> - - <p> - <b> - Your user password should be different from the LUKS password which you will set later on. - Your LUKS password should, like the user password, be secure. - </b> - </p> - - <h1>Partitioning</h1> - - <p>Choose 'Manual' partitioning:</p> - <ul> - <li>Select drive and create new partition table</li> - <li> - Single large partition. The following are mostly defaults: - <ul> - <li>Use as: physical volume for encryption</li> - <li>Encryption: aes</li> - <li>key size: 256</li> - <li>IV algorithm: xts-plain64</li> - <li>Encryption key: passphrase</li> - <li>erase data: Yes (only choose 'No' if it's a new drive that doesn't contain your private data)</li> - </ul> - </li> - <li> - Select 'configure encrypted volumes' - <ul> - <li>Create encrypted volumes</li> - <li>Select your partition</li> - <li>Finish</li> - <li>Really erase: Yes</li> - <li>(erase will take a long time. be patient)</li> - <li>(if your old system was encrypted, just let this run for about a minute to - make sure that the LUKS header is wiped out)</li> - </ul> - </li> - <li> - Select encrypted space: - <ul> - <li>use as: physical volume for LVM</li> - <li>Choose 'done setting up the partition'</li> - </ul> - </li> - <li> - Configure the logical volume manager: - <ul> - <li>Keep settings: Yes</li> - </ul> - </li> - <li> - Create volume group: - <ul> - <li>Name: <b>grubcrypt</b> (you can use whatever you want here, this is just an example)</li> - <li>Select crypto partition</li> - </ul> - </li> - <li> - Create logical volume - <ul> - <li>select <b>grubcrypt</b> (or whatever you named it before)</li> - <li>name: <b>trisquel</b> (you can use whatever you want here, this is just an example)</li> - <li>size: default, minus 2048 MB</li> - </ul> - </li> - <li> - Create logical volume - <ul> - <li>select <b>grubcrypt</b> (or whatever you named it before)</li> - <li>name: <b>swap</b> (you can use whatever you want here, this is just an example)</li> - <li>size: press enter</li> - </ul> - </li> - </ul> - - <h1>Further partitioning</h1> - - <p> - Now you are back at the main partitioning screen. You will simply set mountpoints and filesystems to use. - </p> - <ul> - <li> - LVM LV trisquel - <ul> - <li>use as: ext4</li> - <li>mount point: /</li> - <li>done setting up partition</li> - </ul> - </li> - <li> - LVM LV swap - <ul> - <li>use as: swap area</li> - <li>done setting up partition</li> - </ul> - </li> - <li>Now you select 'Finished partitioning and write changes to disk'.</li> - </ul> - - <h1>Kernel</h1> - - <p> - Installation will ask what kernel you want to use. linux-generic is fine. - </p> - - <h1>Tasksel</h1> - - <p> - Choose <i>"Trisquel Desktop Environment"</i> if you want GNOME, - <i>"Trisquel-mini Desktop Environment"</i> if you - want LXDE or <i>"Triskel Desktop Environment"</i> if you want KDE. - If you want to have no desktop (just a basic shell) - when you boot or if you want to create your own custom setup, then choose nothing here (don't select anything). - You might also want to choose some of the other package groups; it's up to you. - </p> - - <h1>Postfix configuration</h1> - - <p> - If asked, choose <i>"No Configuration"</i> here (or maybe you want to select something else. It's up to you.) - </p> - - <h1>Install the GRUB boot loader to the master boot record</h1> - - <p> - Choose 'Yes'. It will fail, but don't worry. Then at the main menu, choose 'Continue without a bootloader'. - You could also choose 'No'. Choice is irrelevant here. - </p> - - <p> - <i>You do not need to install GRUB at all, since in libreboot you are using the GRUB payload (for libreboot) to boot your system directly.</i> - </p> - - <h1>Clock UTC</h1> - - <p> - Just say 'Yes'. - </p> - - <h1> - Booting your system - </h1> - - <p> - At this point, you will have finished the installation. At your GRUB payload, press C to get to the command line. - </p> - + <p> + Libreboot uses the GRUB <a href="http://www.coreboot.org/Payloads#GRUB_2">payload</a> + by default, which means that the GRUB configuration file + (where your GRUB menu comes from) is stored directly alongside libreboot + and its GRUB payload executable, inside + the flash chip. In context, this means that installing distributions and managing them + is handled slightly differently compared to traditional BIOS systems. + </p> + + <p> + On most systems, the /boot partition has to be left unencrypted while the others are encrypted. + This is so that GRUB, and therefore the kernel, can be loaded and executed since the firmware + can't open a LUKS volume. Not so with libreboot! Since GRUB is already included directly as a + payload, even /boot can be encrypted. This protects /boot from tampering by someone with physical + access to the machine. + </p> + <p> + This works in Trisquel 7, and probably Trisquel 6. Boot the 'net installer' (Install Trisquel in Text Mode). + <a href="grub_boot_installer.html">How to boot a GNU/Linux installer</a>. + </p> + <p><a href="index.html">Back to previous index</a></p> + </div> + + <div class="section"> + <p> - Do that:<br/> - grub> <b>cryptomount -a (ahci0,msdos1)</b><br/> - grub> <b>set root='lvm/grubcrypt-trisquel'</b><br/> - grub> <b>linux /vmlinuz root=/dev/mapper/grubcrypt-trisquel cryptdevice=/dev/mapper/grubcrypt-trisquel:root</b><br/> - grub> <b>initrd /initrd.img</b><br/> - grub> <b>boot</b> - </p> - - <h1> - ecryptfs - </h1> - - <p> - If you didn't encrypt your home directory, then you can safely ignore this section. - </p> - - <p> - Immediately after logging in, do that:<br/> - $ <b>sudo ecryptfs-unwrap-passphrase</b> - </p> - - <p> - This will be needed in the future if you ever need to recover your home directory from another system, so write it down and keep the note - somewhere secret. Ideally, you should memorize it and then burn the note (or not even write it down, and memorize it still)> - </p> - - <h1> - Modify grub.cfg (CBFS) - </h1> - - <p> - Now you need to set it up so that the system will automatically boot, without having to type a bunch of commands. - </p> - - <p> - Modify your grub.cfg (in the firmware) <a href="grub_cbfs.html">using this tutorial</a>; - just change the default menu entry 'Load Operating System' to say this inside: + Set a strong user password (ideally above 40 characters, of lowercase/uppercase, numbers and symbols). </p> <p> - <b>cryptomount -a (ahci0,msdos1)</b><br/> - <b>set root='lvm/grubcrypt-trisquel'</b><br/> - <b>linux /vmlinuz root=/dev/mapper/grubcrypt-trisquel cryptdevice=/dev/mapper/grubcrypt-trisquel:root</b><br/> - <b>initrd /initrd.img</b> + when the installer asks you to set up + encryption (ecryptfs) for your home directory, select 'Yes' if you want to: <b>LUKS is already secure and performs well. Having ecryptfs on top of it + will add noticeable performance penalty, for little security gain in most use cases. This is therefore optional, and not recommended. + Choose 'no'.</b> </p> <p> - Additionally, you should set a GRUB password. This is not your LUKS password, but it's a password that you have to enter to see - GRUB. This protects your system from an attacker simply booting a live USB and re-flashing your firmware. <b>This should be different than your LUKS passphrase and user password.</b> + <b> + Your user password should be different from the LUKS password which you will set later on. + Your LUKS password should, like the user password, be secure. + </b> </p> + + </div> + + <div class="section"> + + <h1>Partitioning</h1> + + <p>Choose 'Manual' partitioning:</p> + <ul> + <li>Select drive and create new partition table</li> + <li> + Single large partition. The following are mostly defaults: + <ul> + <li>Use as: physical volume for encryption</li> + <li>Encryption: aes</li> + <li>key size: 256</li> + <li>IV algorithm: xts-plain64</li> + <li>Encryption key: passphrase</li> + <li>erase data: Yes (only choose 'No' if it's a new drive that doesn't contain your private data)</li> + </ul> + </li> + <li> + Select 'configure encrypted volumes' + <ul> + <li>Create encrypted volumes</li> + <li>Select your partition</li> + <li>Finish</li> + <li>Really erase: Yes</li> + <li>(erase will take a long time. be patient)</li> + <li>(if your old system was encrypted, just let this run for about a minute to + make sure that the LUKS header is wiped out)</li> + </ul> + </li> + <li> + Select encrypted space: + <ul> + <li>use as: physical volume for LVM</li> + <li>Choose 'done setting up the partition'</li> + </ul> + </li> + <li> + Configure the logical volume manager: + <ul> + <li>Keep settings: Yes</li> + </ul> + </li> + <li> + Create volume group: + <ul> + <li>Name: <b>grubcrypt</b> (you can use whatever you want here, this is just an example)</li> + <li>Select crypto partition</li> + </ul> + </li> + <li> + Create logical volume + <ul> + <li>select <b>grubcrypt</b> (or whatever you named it before)</li> + <li>name: <b>trisquel</b> (you can use whatever you want here, this is just an example)</li> + <li>size: default, minus 2048 MB</li> + </ul> + </li> + <li> + Create logical volume + <ul> + <li>select <b>grubcrypt</b> (or whatever you named it before)</li> + <li>name: <b>swap</b> (you can use whatever you want here, this is just an example)</li> + <li>size: press enter</li> + </ul> + </li> + </ul> + + </div> + + <div class="section"> + + <h1>Further partitioning</h1> + + <p> + Now you are back at the main partitioning screen. You will simply set mountpoints and filesystems to use. + </p> + <ul> + <li> + LVM LV trisquel + <ul> + <li>use as: ext4</li> + <li>mount point: /</li> + <li>done setting up partition</li> + </ul> + </li> + <li> + LVM LV swap + <ul> + <li>use as: swap area</li> + <li>done setting up partition</li> + </ul> + </li> + <li>Now you select 'Finished partitioning and write changes to disk'.</li> + </ul> + + </div> + + <div class="section"> + + <h1>Kernel</h1> + + <p> + Installation will ask what kernel you want to use. linux-generic is fine. + </p> + + </div> + + <div class="section"> + + <h1>Tasksel</h1> + + <p> + Choose <i>"Trisquel Desktop Environment"</i> if you want GNOME, + <i>"Trisquel-mini Desktop Environment"</i> if you + want LXDE or <i>"Triskel Desktop Environment"</i> if you want KDE. + If you want to have no desktop (just a basic shell) + when you boot or if you want to create your own custom setup, then choose nothing here (don't select anything). + You might also want to choose some of the other package groups; it's up to you. + </p> + + </div> + + <div class="section"> + + <h1>Postfix configuration</h1> + + <p> + If asked, choose <i>"No Configuration"</i> here (or maybe you want to select something else. It's up to you.) + </p> + + </div> + + <div class="section"> + + <h1>Install the GRUB boot loader to the master boot record</h1> + + <p> + Choose 'Yes'. It will fail, but don't worry. Then at the main menu, choose 'Continue without a bootloader'. + You could also choose 'No'. Choice is irrelevant here. + </p> + + <p> + <i>You do not need to install GRUB at all, since in libreboot you are using the GRUB payload (for libreboot) to boot your system directly.</i> + </p> + + </div> + + <div class="section"> + + <h1>Clock UTC</h1> + + <p> + Just say 'Yes'. + </p> + + </div> + + <div class="section"> + + <h1> + Booting your system + </h1> + + <p> + At this point, you will have finished the installation. At your GRUB payload, press C to get to the command line. + </p> + + <p> + Do that:<br/> + grub> <b>cryptomount -a (ahci0,msdos1)</b><br/> + grub> <b>set root='lvm/grubcrypt-trisquel'</b><br/> + grub> <b>linux /vmlinuz root=/dev/mapper/grubcrypt-trisquel cryptdevice=/dev/mapper/grubcrypt-trisquel:root</b><br/> + grub> <b>initrd /initrd.img</b><br/> + grub> <b>boot</b> + </p> + + </div> + + <div class="section"> + + <h1> + ecryptfs + </h1> + + <p> + If you didn't encrypt your home directory, then you can safely ignore this section. + </p> + + <p> + Immediately after logging in, do that:<br/> + $ <b>sudo ecryptfs-unwrap-passphrase</b> + </p> + + <p> + This will be needed in the future if you ever need to recover your home directory from another system, so write it down and keep the note + somewhere secret. Ideally, you should memorize it and then burn the note (or not even write it down, and memorize it still)> + </p> + + </div> + + <div class="section"> + + <h1> + Modify grub.cfg (CBFS) + </h1> + + <p> + Now you need to set it up so that the system will automatically boot, without having to type a bunch of commands. + </p> + + <p> + Modify your grub.cfg (in the firmware) <a href="grub_cbfs.html">using this tutorial</a>; + just change the default menu entry 'Load Operating System' to say this inside: + </p> + + <p> + <b>cryptomount -a (ahci0,msdos1)</b><br/> + <b>set root='lvm/grubcrypt-trisquel'</b><br/> + <b>linux /vmlinuz root=/dev/mapper/grubcrypt-trisquel cryptdevice=/dev/mapper/grubcrypt-trisquel:root</b><br/> + <b>initrd /initrd.img</b> + </p> + + <p> + Additionally, you should set a GRUB password. This is not your LUKS password, but it's a password that you have to enter to see + GRUB. This protects your system from an attacker simply booting a live USB and re-flashing your firmware. <b>This should be different than your LUKS passphrase and user password.</b> + </p> + + <p> + The GRUB utility can be used like so:<br/> + $ <b>grub-mkpasswd-pbkdf2</b> + </p> + + <p> + Give it a password (remember, it has to be secure) and it'll output something like:<br/> + <b>grub.pbkdf2.sha512.10000.711F186347156BC105CD83A2ED7AF1EB971AA2B1EB2640172F34B0DEFFC97E654AF48E5F0C3B7622502B76458DA494270CC0EA6504411D676E6752FD1651E749.8DD11178EB8D1F633308FD8FCC64D0B243F949B9B99CCEADE2ECA11657A757D22025986B0FA116F1D5191E0A22677674C994EDBFADE62240E9D161688266A711</b> + </p> + + <p> + Put that in the grub.cfg (the one for CBFS inside the ROM) before the 'Load Operating System' menu entry like so (example):<br/> + </p> + <pre> +<b>set superusers="root"</b> +<b>password_pbkdf2 root grub.pbkdf2.sha512.10000.711F186347156BC105CD83A2ED7AF1EB971AA2B1EB2640172F34B0DEFFC97E654AF48E5F0C3B7622502B76458DA494270CC0EA6504411D676E6752FD1651E749.8DD11178EB8D1F633308FD8FCC64D0B243F949B9B99CCEADE2ECA11657A757D22025986B0FA116F1D5191E0A22677674C994EDBFADE62240E9D161688266A711</b> + </pre> - <p> - The GRUB utility can be used like so:<br/> - $ <b>grub-mkpasswd-pbkdf2</b> - </p> + <p> + Obviously, replace it with the correct hash that you actually got for the password that you entered. Meaning, not the hash that you see above! + </p> - <p> - Give it a password (remember, it has to be secure) and it'll output something like:<br/> - <b>grub.pbkdf2.sha512.10000.711F186347156BC105CD83A2ED7AF1EB971AA2B1EB2640172F34B0DEFFC97E654AF48E5F0C3B7622502B76458DA494270CC0EA6504411D676E6752FD1651E749.8DD11178EB8D1F633308FD8FCC64D0B243F949B9B99CCEADE2ECA11657A757D22025986B0FA116F1D5191E0A22677674C994EDBFADE62240E9D161688266A711</b> - </p> + <p> + After this, you will have a modified ROM with the menu entry for cryptomount, and the entry before that for the GRUB password. Flash the modified ROM + using <a href="../install/index.html#flashrom">this tutorial</a>. + </p> + + </div> - <p> - Put that in the grub.cfg (the one for CBFS inside the ROM) before the 'Load Operating System' menu entry like so (example):<br/> - </p> - <pre> -<b>set superusers="root"</b> -<b>password_pbkdf2 root grub.pbkdf2.sha512.10000.711F186347156BC105CD83A2ED7AF1EB971AA2B1EB2640172F34B0DEFFC97E654AF48E5F0C3B7622502B76458DA494270CC0EA6504411D676E6752FD1651E749.8DD11178EB8D1F633308FD8FCC64D0B243F949B9B99CCEADE2ECA11657A757D22025986B0FA116F1D5191E0A22677674C994EDBFADE62240E9D161688266A711</b> - </pre> + <div class="section"> <p> - Obviously, replace it with the correct hash that you actually got for the password that you entered. Meaning, not the hash that you see above! + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. </p> <p> - After this, you will have a modified ROM with the menu entry for cryptomount, and the entry before that for the GRUB password. Flash the modified ROM - using <a href="../install/index.html#flashrom">this tutorial</a>. + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. </p> - -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + + </div> </body> </html> diff --git a/docs/gnulinux/grub_boot_installer.html b/docs/gnulinux/grub_boot_installer.html index 8a5a8f89..3a99d001 100644 --- a/docs/gnulinux/grub_boot_installer.html +++ b/docs/gnulinux/grub_boot_installer.html @@ -12,144 +12,168 @@ </head> <body> - <header> + <div class="section"> <h1>Boot a GNU/Linux installer on USB</h1> - <aside>Or <a href="index.html">back to main index</a></aside> - </header> - - <h2>Prepare the USB drive (in GNU/Linux)</h2> - - <p> - Connect the USB drive. Check dmesg:<br/> - <b>$ dmesg</b><br/> - - Check lsblk to confirm which drive it is:<br/> - <b>$ lsblk</b> - </p> - - <p> - Check that it wasn't automatically mounted. If it was, unmount it. For example:<br/> - <b>$ sudo umount /dev/sdb*</b><br/> - <b># umount /dev/sdb*</b> - </p> + <p> + <a href="index.html">Back to previous index</a> + </p> + </div> - <p> - dmesg told you what device it is. Overwrite the drive, writing your distro ISO to it with dd. For example:<br/> - <b>$ sudo dd if=gnulinux.iso of=/dev/sdb bs=8M; sync</b><br/> - <b># dd if=gnulinux.iso of=/dev/sdb bs=8M; sync</b> - </p> + <div class="section"> - <h2>GNU Guix System Distribution?</h2> + <h2>Prepare the USB drive (in GNU/Linux)</h2> - <p> - Guix USB installers use the GRUB bootloader, unlike most GNU/Linux installers which will likely use ISOLINUX. - </p> - <p> - To boot the Guix live USB install, select <b><i>Search for GRUB configuration (grub.cfg) outside of CBFS</i></b> from - the GRUB payload menu. After you have done that, a new menuentry will appear at the very bottom with text like - <b><i>Load Config from (usb0)</i></b>; select that, and it should boot. - </p> - <p> - Once you have installed Guix onto the main storage device, check - <a href="grub_cbfs.html#libreboot_grub_config_ondisk">grub_cbfs.html#libreboot_grub_config_ondisk</a> for hints on how - to boot it. - </p> + <p> + Connect the USB drive. Check dmesg:<br/> + <b>$ dmesg</b><br/> - <h2>Booting ISOLINUX images</h2> + Check lsblk to confirm which drive it is:<br/> + <b>$ lsblk</b> + </p> - <p> - Boot it in GRUB using the <i>Parse ISOLINUX config (USB)</i> option. + <p> + Check that it wasn't automatically mounted. If it was, unmount it. For example:<br/> + <b>$ sudo umount /dev/sdb*</b><br/> + <b># umount /dev/sdb*</b> + </p> - A new menu should appear in GRUB, showing the boot options for that distro; this is a GRUB menu, converted from the usual - ISOLINUX menu provided by that distro. - </p> + <p> + dmesg told you what device it is. Overwrite the drive, writing your distro ISO to it with dd. For example:<br/> + <b>$ sudo dd if=gnulinux.iso of=/dev/sdb bs=8M; sync</b><br/> + <b># dd if=gnulinux.iso of=/dev/sdb bs=8M; sync</b> + </p> + + </div> - <h2>Booting manually</h2> - - <p> - If the ISOLINUX parser or <i>Search for GRUB configuration</i> options won't work, then press C to get to the GRUB command line.<br/> - grub> <b>ls</b><br/> - - Get the device from above output, eg (usb0). Example:<br/> - grub> <b>cat (usb0)/isolinux/isolinux.cfg</b><br/> + <div class="section"> + + <h2>GNU Guix System Distribution?</h2> - Either this will show the ISOLINUX menuentries for that ISO, or link to other .cfg files, for example /isolinux/foo.cfg.<br/> + <p> + Guix USB installers use the GRUB bootloader, unlike most GNU/Linux installers which will likely use ISOLINUX. + </p> + <p> + To boot the Guix live USB install, select <b><i>Search for GRUB configuration (grub.cfg) outside of CBFS</i></b> from + the GRUB payload menu. After you have done that, a new menuentry will appear at the very bottom with text like + <b><i>Load Config from (usb0)</i></b>; select that, and it should boot. + </p> + <p> + Once you have installed Guix onto the main storage device, check + <a href="grub_cbfs.html#libreboot_grub_config_ondisk">grub_cbfs.html#libreboot_grub_config_ondisk</a> for hints on how + to boot it. + </p> + + </div> - If it did that, then you do:<br/> - grub> <b>cat (usb0)/isolinux/foo.cfg</b><br/> + <div class="section"> + + <h2>Booting ISOLINUX images</h2> - And so on, until you find the correct menuentries for ISOLINUX. - </p> + <p> + Boot it in GRUB using the <i>Parse ISOLINUX config (USB)</i> option. - <p> - Now look at the ISOLINUX menuentry. It'll look like:<br/> - <b> - kernel /path/to/kernel<br/> - append PARAMETERS initrd=/path/to/initrd MAYBE_MORE_PARAMETERS<br/> - </b> - - GRUB works the same way, but in it's own way. Example GRUB commands:<br/> - grub> <b>linux (usb0)/path/to/kernel PARAMETERS MAYBE_MORE_PARAMETERS</b><br/> - grub> <b>initrd (usb0)/path/to/initrd</b><br/> - grub> <b>boot</b><br/> - - Of course this will vary from distro to distro. If you did all that correctly, it should now be booting the ISO - the way you specified. - </p> + A new menu should appear in GRUB, showing the boot options for that distro; this is a GRUB menu, converted from the usual + ISOLINUX menu provided by that distro. + </p> + + </div> + + <div class="section"> + + <h2>Booting manually</h2> - <h1>Troubleshooting</h1> + <p> + If the ISOLINUX parser or <i>Search for GRUB configuration</i> options won't work, then press C to get to the GRUB command line.<br/> + grub> <b>ls</b><br/> - <p> - Most of these issues occur when using libreboot with coreboot's 'text mode' instead of the coreboot framebuffer. - This mode is useful for booting payloads like memtest86+ which expect text-mode, but for GNU/Linux distributions - it can be problematic when they are trying to switch to a framebuffer because it doesn't exist. - </p> + Get the device from above output, eg (usb0). Example:<br/> + grub> <b>cat (usb0)/isolinux/isolinux.cfg</b><br/> - <p> - In most cases, you should use the vesafb ROM's. Example filename: libreboot_ukdvorak_vesafb.rom. - </p> + Either this will show the ISOLINUX menuentries for that ISO, or link to other .cfg files, for example /isolinux/foo.cfg.<br/> - <h2>parabola won't boot in text-mode</h2> + If it did that, then you do:<br/> + grub> <b>cat (usb0)/isolinux/foo.cfg</b><br/> - <p> - Use one of the ROM images with vesafb in the filename (uses coreboot framebuffer instead of text-mode). + And so on, until you find the correct menuentries for ISOLINUX. </p> - <h2>debian-installer (trisquel net install) graphical corruption in text-mode</h2> <p> - When using the ROM images that use coreboot's "text mode" instead of the coreboot framebuffer, - booting the Trisquel net installer results in graphical corruption because it is trying to switch to a framebuffer which doesn't - exist. Use that kernel parameter on the 'linux' line when booting it:<br/> - <b>vga=normal fb=false</b> + Now look at the ISOLINUX menuentry. It'll look like:<br/> + <b> + kernel /path/to/kernel<br/> + append PARAMETERS initrd=/path/to/initrd MAYBE_MORE_PARAMETERS<br/> + </b> + + GRUB works the same way, but in it's own way. Example GRUB commands:<br/> + grub> <b>linux (usb0)/path/to/kernel PARAMETERS MAYBE_MORE_PARAMETERS</b><br/> + grub> <b>initrd (usb0)/path/to/initrd</b><br/> + grub> <b>boot</b><br/> + + Of course this will vary from distro to distro. If you did all that correctly, it should now be booting the ISO + the way you specified. </p> + + </div> - <p> - Tested in Trisquel 6 (and 7). This forces debian-installer to start in text-mode, instead of trying to switch to a framebuffer. - </p> + <div class="section"> + + <h1>Troubleshooting</h1> <p> - If selecting text-mode from a GRUB menu created using the ISOLINUX parser, you can press E on the menu entry to add this. - Or, if you are booting manually (from GRUB terminal) then just add the parameters. + Most of these issues occur when using libreboot with coreboot's 'text mode' instead of the coreboot framebuffer. + This mode is useful for booting payloads like memtest86+ which expect text-mode, but for GNU/Linux distributions + it can be problematic when they are trying to switch to a framebuffer because it doesn't exist. </p> <p> - This workaround was found on the page: <a href="https://www.debian.org/releases/stable/i386/ch05s04.html">https://www.debian.org/releases/stable/i386/ch05s04.html</a>. - It should also work for gNewSense, Debian and any other apt-get distro that provides debian-installer (text mode) net install method. + In most cases, you should use the vesafb ROM's. Example filename: libreboot_ukdvorak_vesafb.rom. </p> -<hr/> + <h2>parabola won't boot in text-mode</h2> + + <p> + Use one of the ROM images with vesafb in the filename (uses coreboot framebuffer instead of text-mode). + </p> + + <h2>debian-installer (trisquel net install) graphical corruption in text-mode</h2> + <p> + When using the ROM images that use coreboot's "text mode" instead of the coreboot framebuffer, + booting the Trisquel net installer results in graphical corruption because it is trying to switch to a framebuffer which doesn't + exist. Use that kernel parameter on the 'linux' line when booting it:<br/> + <b>vga=normal fb=false</b> + </p> + + <p> + Tested in Trisquel 6 (and 7). This forces debian-installer to start in text-mode, instead of trying to switch to a framebuffer. + </p> - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> + <p> + If selecting text-mode from a GRUB menu created using the ISOLINUX parser, you can press E on the menu entry to add this. + Or, if you are booting manually (from GRUB terminal) then just add the parameters. + </p> - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + <p> + This workaround was found on the page: <a href="https://www.debian.org/releases/stable/i386/ch05s04.html">https://www.debian.org/releases/stable/i386/ch05s04.html</a>. + It should also work for gNewSense, Debian and any other apt-get distro that provides debian-installer (text mode) net install method. + </p> + + </div> + + <div class="section"> + + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. + </p> + + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. + </p> + + </div> </body> </html> diff --git a/docs/gnulinux/grub_cbfs.html b/docs/gnulinux/grub_cbfs.html index c22d71d9..73cce0cf 100644 --- a/docs/gnulinux/grub_cbfs.html +++ b/docs/gnulinux/grub_cbfs.html @@ -12,444 +12,467 @@ </head> <body> - <header> + <div class="section"> <h1 id="pagetop">How to change your default GRUB menu</h1> - <aside>Or <a href="index.html">back to main index</a></aside> - </header> - - <p> - Libreboot uses the GRUB <a href="http://www.coreboot.org/Payloads#GRUB_2">payload</a> - by default, which means that the GRUB configuration file - (where your GRUB menu comes from) is stored directly alongside libreboot - and it's GRUB payload executable, inside - the flash chip. In context, this means that installing distributions and managing them - is handled slightly differently compared to traditional BIOS systems. - </p> - - <p> - A libreboot (or coreboot) ROM image is not simply "flat"; there is an actual - filesystem inside called CBFS (coreboot filesystem). A utility called 'cbfstool' - allows you to change the contents of the ROM image. In this case, libreboot is configured - such that the 'grub.cfg' and 'grubtest.cfg' files exists directly inside CBFS instead of - inside the GRUB payload 'memdisk' (which is itself stored in CBFS). - </p> - <p> - You can either modify - the GRUB configuration stored in the flash chip, or you can modify a GRUB configuration - file on the main storage which the libreboot GRUB payload will automatically search for. - </p> - - <p> - Here is an excellent writeup about CBFS (coreboot filesystem): - <a href="http://lennartb.home.xs4all.nl/coreboot/col5.html">http://lennartb.home.xs4all.nl/coreboot/col5.html</a>. - </p> - -<hr/> - - <h2>Table of Contents</h2> - - <ul> - <li><a href="#getting_started">Getting started</a></li> - <li><a href="#libreboot_grub_config_ondisk">Don't want to flash a new ROM image?</a></li> - <li><a href="#build_cbfstool">Build 'cbfstool' from source</a></li> - <li><a href="#which_rom">Which ROM image should I use?</a></li> - <li><a href="#extract_grubtest">Extract grubtest from the ROM image</a> - <li> - <a href="#example_modifications">Example modifications for <i>grubtest.cfg</i></a> - <ul> - <li><a href="#example_modifications_trisquel">Trisquel GNU/Linux-libre</a></li> - <li><a href="#example_modifications_parabola">Parabola GNU/Linux-libre</a></li> - </ul> - </li> - <li><a href="#reinsert_modified_grubtest">Re-insert the modified grubtest.cfg into the ROM image</a></li> - <li><a href="#test_it">Test it!</a> - <li><a href="#final_steps">Final steps</a></li> - <li><a href="#troubleshooting">Troubleshooting</a></li> - </ul> - -<hr/> - - <h2 id="getting_started">Getting started</h2> + <p> + Libreboot uses the GRUB <a href="http://www.coreboot.org/Payloads#GRUB_2">payload</a> + by default, which means that the GRUB configuration file + (where your GRUB menu comes from) is stored directly alongside libreboot + and it's GRUB payload executable, inside + the flash chip. In context, this means that installing distributions and managing them + is handled slightly differently compared to traditional BIOS systems. + </p> + <p> + A libreboot (or coreboot) ROM image is not simply "flat"; there is an actual + filesystem inside called CBFS (coreboot filesystem). A utility called 'cbfstool' + allows you to change the contents of the ROM image. In this case, libreboot is configured + such that the 'grub.cfg' and 'grubtest.cfg' files exists directly inside CBFS instead of + inside the GRUB payload 'memdisk' (which is itself stored in CBFS). + </p> + <p> + You can either modify + the GRUB configuration stored in the flash chip, or you can modify a GRUB configuration + file on the main storage which the libreboot GRUB payload will automatically search for. + </p> + <p> + Here is an excellent writeup about CBFS (coreboot filesystem): + <a href="http://lennartb.home.xs4all.nl/coreboot/col5.html">http://lennartb.home.xs4all.nl/coreboot/col5.html</a>. + </p> + <p> + <a href="index.html">Back to previous index</a> + </p> + </div> - <p> - Download the latest release from - <a href="http://libreboot.org/">http://libreboot.org/</a> - <br/><b>If you downloaded from git, refer to - <a href="../git/index.html#build_meta">../git/index.html#build_meta</a> before continuing.</b> - </p> + <div class="section"> + + <h1>Table of Contents</h1> + + <ul> + <li><a href="#getting_started">Getting started</a></li> + <li><a href="#libreboot_grub_config_ondisk">Don't want to flash a new ROM image?</a></li> + <li><a href="#build_cbfstool">Build 'cbfstool' from source</a></li> + <li><a href="#which_rom">Which ROM image should I use?</a></li> + <li><a href="#extract_grubtest">Extract grubtest from the ROM image</a> + <li> + <a href="#example_modifications">Example modifications for <i>grubtest.cfg</i></a> + <ul> + <li><a href="#example_modifications_trisquel">Trisquel GNU/Linux-libre</a></li> + <li><a href="#example_modifications_parabola">Parabola GNU/Linux-libre</a></li> + </ul> + </li> + <li><a href="#reinsert_modified_grubtest">Re-insert the modified grubtest.cfg into the ROM image</a></li> + <li><a href="#test_it">Test it!</a> + <li><a href="#final_steps">Final steps</a></li> + <li><a href="#troubleshooting">Troubleshooting</a></li> + </ul> + + </div> - <p> - <a href="../git/index.html#build_dependencies">Install the build dependencies</a>. - </p> + <div class="section"> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> + <h2 id="getting_started">Getting started</h2> -<hr/> - - <h2 id="libreboot_grub_config_ondisk">Don't want to flash a new ROM image?</h2> + <p> + Download the latest release from + <a href="http://libreboot.org/">http://libreboot.org/</a> + <br/><b>If you downloaded from git, refer to + <a href="../git/index.html#build_meta">../git/index.html#build_meta</a> before continuing.</b> + </p> - <p> - There are several advantages to modifying the GRUB configuration stored in CBFS, but - this also means that you have to flash a new libreboot ROM image on your machine (some users - feel intimidated by this, to say the least). - Doing so can be risky if not handled correctly, because it can result in a bricked - machine (recovery is easy if you have the <a href="../install/bbb_setup.html">equipment</a> - for it, but most people don't). If you aren't up to that then don't worry; it is possible - to use a custom GRUB menu without flashing a new image, by loading a GRUB configuration - from a partition on the main storage instead. - </p> + <p> + <a href="../git/index.html#build_dependencies">Install the build dependencies</a>. + </p> - <p> - By default, GRUB in libreboot is configured to scan all partitions on the main storage - for /boot/grub/libreboot_grub.cfg or /grub/libreboot_grub.cfg(for systems where /boot - is on a dedicated partition), and then use it automatically. - </p> - <p> - Simply create your custom GRUB configuration and save it to <b>/boot/grub/libreboot_grub.cfg</b> - on the running system. The next time you boot, GRUB (in libreboot) will automatically switch to - this configuration file. <b>This means that you do not have to re-flash, recompile or otherwise - modify libreboot at all!</b> - </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + + </div> - <p> - Ideally, your distribution should automatically generate a libreboot_grub.cfg file that is written - specifically under the assumption that it will be read and used on a libreboot system that uses - GRUB as a payload. If your distribution does not do this, then you can try to add that feature - yourself or politely ask someone involved with or otherwise knowledgeable about the distribution - to do it for you. The libreboot_grub.cfg could either contain the full configuration, or it could - chainload another GRUB ELF executable (built to be used as a coreboot payload) that is located in - a partition on the main storage. - </p> + <div class="section"> - <p> - If you want to adapt a copy of the existing <i>libreboot</i> GRUB configuration and use that for the libreboot_grub.cfg file, then - follow <a href="#build_cbfstool">#build_cbfstool</a>, <a href="#which_rom">#which_rom</a> and - <a href="#extract_grubtest">#extract_grubtest</a> to get the <b><i>grubtest.cfg</i></b>. - Rename <b><i>grubtest.cfg</i></b> to <b><i>libreboot_grub.cfg</i></b> and save it to <b><i>/boot/grub/</i></b> - on the running system where it is intended to be used. Modify the file at that location however you see fit, - and then stop reading this guide (the rest of this page is irrelevant to you); <b>in libreboot_grub.cfg on disk, - if you are adapting it based on grub.cfg from CBFS then remove the check for libreboot_grub.cfg otherwise it will loop.</b>. - </p> - - <p> - <a href="#pagetop">Back to top of page.</a> - </p> - -<hr/> + <h2 id="libreboot_grub_config_ondisk">Don't want to flash a new ROM image?</h2> - <h2 id="build_cbfstool">Build 'cbfstool' from source</h2> - - <p> - If you are working with libreboot_src, then you can run <b><i>make</i></b> command in - libreboot_src/coreboot/util/cbfstool to build the <b><i>cbfstool</i></b> and <b><i>rmodtool</i></b> - executable. - </p> - <p> - Alternatively if you are working with libreboot_bin, you will find binaries under ./cbfstool/ - </p> + <p> + There are several advantages to modifying the GRUB configuration stored in CBFS, but + this also means that you have to flash a new libreboot ROM image on your machine (some users + feel intimidated by this, to say the least). + Doing so can be risky if not handled correctly, because it can result in a bricked + machine (recovery is easy if you have the <a href="../install/bbb_setup.html">equipment</a> + for it, but most people don't). If you aren't up to that then don't worry; it is possible + to use a custom GRUB menu without flashing a new image, by loading a GRUB configuration + from a partition on the main storage instead. + </p> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> + <p> + By default, GRUB in libreboot is configured to scan all partitions on the main storage + for /boot/grub/libreboot_grub.cfg or /grub/libreboot_grub.cfg(for systems where /boot + is on a dedicated partition), and then use it automatically. + </p> + <p> + Simply create your custom GRUB configuration and save it to <b>/boot/grub/libreboot_grub.cfg</b> + on the running system. The next time you boot, GRUB (in libreboot) will automatically switch to + this configuration file. <b>This means that you do not have to re-flash, recompile or otherwise + modify libreboot at all!</b> + </p> -<hr/> + <p> + Ideally, your distribution should automatically generate a libreboot_grub.cfg file that is written + specifically under the assumption that it will be read and used on a libreboot system that uses + GRUB as a payload. If your distribution does not do this, then you can try to add that feature + yourself or politely ask someone involved with or otherwise knowledgeable about the distribution + to do it for you. The libreboot_grub.cfg could either contain the full configuration, or it could + chainload another GRUB ELF executable (built to be used as a coreboot payload) that is located in + a partition on the main storage. + </p> + + <p> + If you want to adapt a copy of the existing <i>libreboot</i> GRUB configuration and use that for the libreboot_grub.cfg file, then + follow <a href="#build_cbfstool">#build_cbfstool</a>, <a href="#which_rom">#which_rom</a> and + <a href="#extract_grubtest">#extract_grubtest</a> to get the <b><i>grubtest.cfg</i></b>. + Rename <b><i>grubtest.cfg</i></b> to <b><i>libreboot_grub.cfg</i></b> and save it to <b><i>/boot/grub/</i></b> + on the running system where it is intended to be used. Modify the file at that location however you see fit, + and then stop reading this guide (the rest of this page is irrelevant to you); <b>in libreboot_grub.cfg on disk, + if you are adapting it based on grub.cfg from CBFS then remove the check for libreboot_grub.cfg otherwise it will loop.</b>. + </p> - <h2 id="which_rom">Which ROM image should I use?</h2> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + + </div> - <p> - You can work directly with one of the ROM images already included in the libreboot ROM archives. For the purpose of - this tutorial it is assumed that your ROM image file is named <i>libreboot.rom</i>, so please make sure to adapt. - </p> + <div class="section"> - <p> - If you want to re-use the ROM that you currently have flashed (and running) then see - <a href="../git/index.html#build_flashrom">../git/index.html#build_flashrom</a> - and then run:<br/> - <b>$ sudo ./flashrom -p internal -r libreboot.rom</b><br/> - Notice that this is using <b>"-r"</b> (read) instead of <b>"-w"</b> (write). - This will create a dump (copy) of your current firmware and name it <b>libreboot.rom</b>. - You need to take ownership of the file. For example:<br/> - <b>$ sudo chown yourusername:yourusername libreboot.rom</b><br/> - <b># chown yourusername:yourusername libreboot.rom</b> - </p> + <h2 id="build_cbfstool">Build 'cbfstool' from source</h2> - <p> - If you currently have flashed a ROM image from an older version, it is recommended to update first: - basically, modify one of the latest ROM images and then flash it. - </p> + <p> + If you are working with libreboot_src, then you can run <b><i>make</i></b> command in + libreboot_src/coreboot/util/cbfstool to build the <b><i>cbfstool</i></b> and <b><i>rmodtool</i></b> + executable. + </p> + <p> + Alternatively if you are working with libreboot_bin, you will find binaries under ./cbfstool/ + </p> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + + </div> -<hr/> + <div class="section"> - <h2 id="extract_grubtest">Extract grubtest.cfg from the ROM image</h2> + <h2 id="which_rom">Which ROM image should I use?</h2> - <p> - Display contents of ROM:<br/> - <b>$ ./cbfstool libreboot.rom print</b> - </p> + <p> + You can work directly with one of the ROM images already included in the libreboot ROM archives. For the purpose of + this tutorial it is assumed that your ROM image file is named <i>libreboot.rom</i>, so please make sure to adapt. + </p> - <p> - The libreboot.rom file contains your <i>grub.cfg</i> and <i>grubtest.cfg</i> files. - You should extract, modify and re-insert the copy first. grub.cfg will load first, - but it has a menu entry for switching to the copy (grubtest.cfg). - This reduces your chance of making a mistake that could make your machine unbootable (or very hard to boot). - </p> + <p> + If you want to re-use the ROM that you currently have flashed (and running) then see + <a href="../git/index.html#build_flashrom">../git/index.html#build_flashrom</a> + and then run:<br/> + <b>$ sudo ./flashrom -p internal -r libreboot.rom</b><br/> + Notice that this is using <b>"-r"</b> (read) instead of <b>"-w"</b> (write). + This will create a dump (copy) of your current firmware and name it <b>libreboot.rom</b>. + You need to take ownership of the file. For example:<br/> + <b>$ sudo chown yourusername:yourusername libreboot.rom</b><br/> + <b># chown yourusername:yourusername libreboot.rom</b> + </p> - <p> - Extract grubtest.cfg from the ROM image:<br/> - <b>$ ./cbfstool libreboot.rom extract -n grubtest.cfg -f grubtest.cfg</b> - </p> + <p> + If you currently have flashed a ROM image from an older version, it is recommended to update first: + basically, modify one of the latest ROM images and then flash it. + </p> - <p> - Now you have a grubtest.cfg in cbfstool directory. Edit it however you wish. - </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + + </div> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> + <div class="section"> -<hr/> + <h2 id="extract_grubtest">Extract grubtest.cfg from the ROM image</h2> - <div class="important"> + <p> + Display contents of ROM:<br/> + <b>$ ./cbfstool libreboot.rom print</b> + </p> - <h2 id="example_modifications">Example modifications for <i>grubtest.cfg</i></h2> + <p> + The libreboot.rom file contains your <i>grub.cfg</i> and <i>grubtest.cfg</i> files. + You should extract, modify and re-insert the copy first. grub.cfg will load first, + but it has a menu entry for switching to the copy (grubtest.cfg). + This reduces your chance of making a mistake that could make your machine unbootable (or very hard to boot). + </p> <p> - These are some common examples of ways in which the grubtest.cfg file can be modified. + Extract grubtest.cfg from the ROM image:<br/> + <b>$ ./cbfstool libreboot.rom extract -n grubtest.cfg -f grubtest.cfg</b> </p> - <h3 id="example_modifications_trisquel">Trisquel GNU/Linux-libre</h3> + <p> + Now you have a grubtest.cfg in cbfstool directory. Edit it however you wish. + </p> - <p> - As an example, on my test system in /boot/grub/grub.cfg (on the HDD/SSD) I see for the main menu entry: - </p> - <ul> - <li><b>linux /boot/vmlinuz-3.15.1-gnu.nonpae root=UUID=3a008e14-4871-497b-95e5-fb180f277951 ro crashkernel=384M-2G:64M,2G-:128M quiet splash $vt_handoff</b></li> - <li><b>initrd /boot/initrd.img-3.15.1-gnu.nonpae</b></li> - </ul> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + + </div> - <p> - <b>ro</b>, <b>quiet</b>, <b>splash</b>, <b>crashkernel=384M-2G:64M,2G-:128M</b> and - <b>$vt_handoff</b> can be safely ignored. - </p> + <div class="section"> - <p> - I use this to get my partition layout:<br/> - $ <b>lsblk</b> - </p> + <div class="subsection"> - <p> - In my case, I have no /boot partition, instead /boot is on the same partition as / on sda1. - Yours might be different. In GRUB terms, sda means ahci0. 1 means msdos1, or gpt1, depending - on whether I am using MBR or GPT partitioning. Thus, /dev/sda1 is GRUB is (ahci0,msdos1) or - (ahci0,gpt1). In my case, I use MBR partitioning so it's (ahci0,msdos1). - 'msdos' is a GRUB name simply because this partitioning type is traditionally used by MS-DOS. - It doesn't mean that you have a proprietary OS. - </p> + <h2 id="example_modifications">Example modifications for <i>grubtest.cfg</i></h2> <p> - Trisquel doesn't keep the filenames of kernels consistent, instead it keeps old kernels and - new kernel updates are provided with the version in the filename. This can make GRUB payload - a bit tricky. Fortunately, there are symlinks /vmlinuz and /initrd.img - so if your /boot and / are on the same partition, you can set GRUB to boot from that. - These are also updated automatically when installing kernel updates from your distributions - apt-get repositories. - <b> - Note: when using <a href="http://jxself.org/linux-libre">jxself kernel releases</a>, - these are not updated at all and you have to update them manually. - </b> + These are some common examples of ways in which the grubtest.cfg file can be modified. </p> - <p> - For the GRUB payload grubtest.cfg (in the 'Load Operating System' menu entry), we therefore have (in this example):<br/> - <b>set root='ahci0,msdos1'</b><br/> - <b>linux /vmlinuz root=UUID=3a008e14-4871-497b-95e5-fb180f277951</b><br/> - <b>initrd /initrd.img</b> - </p> + <h3 id="example_modifications_trisquel">Trisquel GNU/Linux-libre</h3> + + <p> + As an example, on my test system in /boot/grub/grub.cfg (on the HDD/SSD) I see for the main menu entry: + </p> + <ul> + <li><b>linux /boot/vmlinuz-3.15.1-gnu.nonpae root=UUID=3a008e14-4871-497b-95e5-fb180f277951 ro crashkernel=384M-2G:64M,2G-:128M quiet splash $vt_handoff</b></li> + <li><b>initrd /boot/initrd.img-3.15.1-gnu.nonpae</b></li> + </ul> + + <p> + <b>ro</b>, <b>quiet</b>, <b>splash</b>, <b>crashkernel=384M-2G:64M,2G-:128M</b> and + <b>$vt_handoff</b> can be safely ignored. + </p> + + <p> + I use this to get my partition layout:<br/> + $ <b>lsblk</b> + </p> + + <p> + In my case, I have no /boot partition, instead /boot is on the same partition as / on sda1. + Yours might be different. In GRUB terms, sda means ahci0. 1 means msdos1, or gpt1, depending + on whether I am using MBR or GPT partitioning. Thus, /dev/sda1 is GRUB is (ahci0,msdos1) or + (ahci0,gpt1). In my case, I use MBR partitioning so it's (ahci0,msdos1). + 'msdos' is a GRUB name simply because this partitioning type is traditionally used by MS-DOS. + It doesn't mean that you have a proprietary OS. + </p> + + <p> + Trisquel doesn't keep the filenames of kernels consistent, instead it keeps old kernels and + new kernel updates are provided with the version in the filename. This can make GRUB payload + a bit tricky. Fortunately, there are symlinks /vmlinuz and /initrd.img + so if your /boot and / are on the same partition, you can set GRUB to boot from that. + These are also updated automatically when installing kernel updates from your distributions + apt-get repositories. + <b> + Note: when using <a href="http://jxself.org/linux-libre">jxself kernel releases</a>, + these are not updated at all and you have to update them manually. + </b> + </p> + + <p> + For the GRUB payload grubtest.cfg (in the 'Load Operating System' menu entry), we therefore have (in this example):<br/> + <b>set root='ahci0,msdos1'</b><br/> + <b>linux /vmlinuz root=UUID=3a008e14-4871-497b-95e5-fb180f277951</b><br/> + <b>initrd /initrd.img</b> + </p> + + <p> + Optionally, you can convert the UUID to its real device name, for example /dev/sda1 in this case. + sdX naming isn't very reliable, though, which is why UUID is used for most distributions. + </p> + + <p> + Alternatively, if your /boot is on a separate partition then you cannot rely on the /vmlinuz and /initrd.img symlinks. + Instead, go into /boot and create your own symlinks (update them manually when you install a new kernel update).<br/> + $ <b>sudo -s</b><br/> + # <b>cd /boot/</b><br/> + # <b>rm -rf vmlinuz initrd.img</b><br/> + # <b>ln -s <u>kernel</u> ksym</b><br/> + # <b>ln -s <u>initrd</u> isym</b><br/> + # <b>exit</b> + </p> + + <p> + Replace the underlined <b>kernel</b> and <b>initrd</b> filenames above with the actual filenames, of course. + </p> + + <p> + Then your grubtest.cfg menu entry (for payload) becomes like that, for example if / was on sda2 and /boot was on sda1:<br/> + <b>set root='ahci0,msdos1'</b><br/> + <b>linux /ksym root=/dev/sda2</b><br/> + <b>initrd /isym</b> + </p> + + <p> + There are lots of possible variations so please try to adapt. + </p> + + <h3 id="example_modifications_parabola">Parabola GNU/Linux-libre</h3> + + <p> + You can basically adapt the above. Note however that Parabola does not keep old kernels still installed, and the file names + are always consistent, so you don't need to boot from symlinks, you can just use the real thing directly. + </p> + + </div> - <p> - Optionally, you can convert the UUID to its real device name, for example /dev/sda1 in this case. - sdX naming isn't very reliable, though, which is why UUID is used for most distributions. - </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + + </div> - <p> - Alternatively, if your /boot is on a separate partition then you cannot rely on the /vmlinuz and /initrd.img symlinks. - Instead, go into /boot and create your own symlinks (update them manually when you install a new kernel update).<br/> - $ <b>sudo -s</b><br/> - # <b>cd /boot/</b><br/> - # <b>rm -rf vmlinuz initrd.img</b><br/> - # <b>ln -s <u>kernel</u> ksym</b><br/> - # <b>ln -s <u>initrd</u> isym</b><br/> - # <b>exit</b> - </p> + <div class="section"> - <p> - Replace the underlined <b>kernel</b> and <b>initrd</b> filenames above with the actual filenames, of course. - </p> + <h2 id="reinsert_modified_grubtest">Re-insert the modified grubtest.cfg into the ROM image</h2> - <p> - Then your grubtest.cfg menu entry (for payload) becomes like that, for example if / was on sda2 and /boot was on sda1:<br/> - <b>set root='ahci0,msdos1'</b><br/> - <b>linux /ksym root=/dev/sda2</b><br/> - <b>initrd /isym</b> - </p> + <p> + Delete the grubtest.cfg that remained inside the ROM:<br/> + <b>$ ./cbfstool libreboot.rom remove -n grubtest.cfg</b> + </p> - <p> - There are lots of possible variations so please try to adapt. - </p> + <p> + Display ROM contents and now you see grubtest.cfg no longer exists there:<br/> + <b>$ ./cbfstool libreboot.rom print</b> + </p> - <h3 id="example_modifications_parabola">Parabola GNU/Linux-libre</h3> + <p> + Add the modified version that you just made:<br/> + <b>$ ./cbfstool libreboot.rom add -n grubtest.cfg -f grubtest.cfg -t raw</b> + </p> - <p> - You can basically adapt the above. Note however that Parabola does not keep old kernels still installed, and the file names - are always consistent, so you don't need to boot from symlinks, you can just use the real thing directly. - </p> + <p> + Now display ROM contents again and see that it exists again:<br/> + <b>$ ./cbfstool libreboot.rom print</b> + </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + </div> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> + <div class="section"> -<hr/> - - <h2 id="reinsert_modified_grubtest">Re-insert the modified grubtest.cfg into the ROM image</h2> - - <p> - Delete the grubtest.cfg that remained inside the ROM:<br/> - <b>$ ./cbfstool libreboot.rom remove -n grubtest.cfg</b> - </p> - - <p> - Display ROM contents and now you see grubtest.cfg no longer exists there:<br/> - <b>$ ./cbfstool libreboot.rom print</b> - </p> + <h2 id="test_it">Test it!</h2> - <p> - Add the modified version that you just made:<br/> - <b>$ ./cbfstool libreboot.rom add -n grubtest.cfg -f grubtest.cfg -t raw</b> - </p> - - <p> - Now display ROM contents again and see that it exists again:<br/> - <b>$ ./cbfstool libreboot.rom print</b> - </p> - - <p> - <a href="#pagetop">Back to top of page.</a> - </p> + <p> + <b> + Now you have a modified ROM. Refer back to <a href="../install/index.html#flashrom">../install/index.html#flashrom</a> for information + on how to flash it. Once you have done that, shut down and then boot up with your new test configuration. + </b> + </p> -<hr/> + <p> + Choose (in GRUB) the menu entry that switches to grubtest.cfg. If it works, then your config is safe and you can continue below. + </p> - <h2 id="test_it">Test it!</h2> + <p> + <b> + If it does not work like you want it to, if you are unsure or sceptical in any way, + then re-do the steps above until you get it right! Do *not* proceed past this point + unless you are 100% sure that your new configuration is safe (or desirable) to use. + </b> + </p> - <p> - <b> - Now you have a modified ROM. Refer back to <a href="../install/index.html#flashrom">../install/index.html#flashrom</a> for information - on how to flash it. Once you have done that, shut down and then boot up with your new test configuration. - </b> - </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + + </div> - <p> - Choose (in GRUB) the menu entry that switches to grubtest.cfg. If it works, then your config is safe and you can continue below. - </p> + <div class="section"> - <p> - <b> - If it does not work like you want it to, if you are unsure or sceptical in any way, - then re-do the steps above until you get it right! Do *not* proceed past this point - unless you are 100% sure that your new configuration is safe (or desirable) to use. - </b> - </p> + <h2 id="final_steps">Final steps</h2> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> + <p> + Create a copy of grubtest.cfg, called grub.cfg, which is the same except for one difference: + change the menuentry 'Switch to grub.cfg' to 'Switch to grubtest.cfg' and inside it, + change all instances of grub.cfg to grubtest.cfg. This is so that the main config still + links (in the menu) to grubtest.cfg, so that you don't have to manually switch to it, in + case you ever want to follow this guide again in the future (modifying the already modified config)<br/> + $ <b>sed -e 's:(cbfsdisk)/grub.cfg:(cbfsdisk)/grubtest.cfg:g' -e 's:Switch to grub.cfg:Switch to grubtest.cfg:g' < grubtest.cfg > grub.cfg</b><br/> + </p> -<hr/> + <p> + Delete the grub.cfg that remained inside the ROM:<br/> + <b>$ ./cbfstool libreboot.rom remove -n grub.cfg</b> + </p> - <h2 id="final_steps">Final steps</h2> + <p> + Display ROM contents and now you see grub.cfg no longer exists there:<br/> + <b>$ ./cbfstool libreboot.rom print</b> + </p> - <p> - Create a copy of grubtest.cfg, called grub.cfg, which is the same except for one difference: - change the menuentry 'Switch to grub.cfg' to 'Switch to grubtest.cfg' and inside it, - change all instances of grub.cfg to grubtest.cfg. This is so that the main config still - links (in the menu) to grubtest.cfg, so that you don't have to manually switch to it, in - case you ever want to follow this guide again in the future (modifying the already modified config)<br/> - $ <b>sed -e 's:(cbfsdisk)/grub.cfg:(cbfsdisk)/grubtest.cfg:g' -e 's:Switch to grub.cfg:Switch to grubtest.cfg:g' < grubtest.cfg > grub.cfg</b><br/> - </p> + <p> + Add the modified version that you just made:<br/> + <b>$ ./cbfstool libreboot.rom add -n grub.cfg -f grub.cfg -t raw</b> + </p> - <p> - Delete the grub.cfg that remained inside the ROM:<br/> - <b>$ ./cbfstool libreboot.rom remove -n grub.cfg</b> - </p> + <p> + Now display ROM contents again and see that it exists again:<br/> + <b>$ ./cbfstool libreboot.rom print</b> + </p> - <p> - Display ROM contents and now you see grub.cfg no longer exists there:<br/> - <b>$ ./cbfstool libreboot.rom print</b> - </p> + <p> + <b> + Now you have a modified ROM. Refer back to <a href="../install/index.html#flashrom">../install/index.html#flashrom</a> for information + on how to flash it. Once you have done that, shut down and then boot up with your new configuration. + </b> + </p> - <p> - Add the modified version that you just made:<br/> - <b>$ ./cbfstool libreboot.rom add -n grub.cfg -f grub.cfg -t raw</b> - </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + + </div> - <p> - Now display ROM contents again and see that it exists again:<br/> - <b>$ ./cbfstool libreboot.rom print</b> - </p> + <div class="section"> - <p> - <b> - Now you have a modified ROM. Refer back to <a href="../install/index.html#flashrom">../install/index.html#flashrom</a> for information - on how to flash it. Once you have done that, shut down and then boot up with your new configuration. - </b> - </p> + <h2 id="troubleshooting">Troubleshooting</h2> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> + <p> + A user reported that segmentation faults occur with cbfstool + when using this procedure depending on the size of the grub.cfg being re-insterted. + In his case, a minimum size of 857 bytes was required. This could (at the time of + this release) be a bug in cbfstool that should be investigated with the coreboot + community. If cbfstool segfaults, then keep this in mind. 'strace' (or gdb? clang?) + could be used for debugging. This was in libreboot 5th release (based on coreboot + from late 2013), and I'm not sure if the issue persists in the current releases. + I have not been able to reproduce it. strace (from that user) is here: + <a href="cbfstool_libreboot5_strace">cbfstool_libreboot5_strace</a>. + The issue has been reported by a few users, so it does not happen all the time: + this bug (if it still exists) could (should) be reproduced. + </p> -<hr/> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + + </div> - <h2 id="troubleshooting">Troubleshooting</h2> + <div class="section"> <p> - A user reported that segmentation faults occur with cbfstool - when using this procedure depending on the size of the grub.cfg being re-insterted. - In his case, a minimum size of 857 bytes was required. This could (at the time of - this release) be a bug in cbfstool that should be investigated with the coreboot - community. If cbfstool segfaults, then keep this in mind. 'strace' (or gdb? clang?) - could be used for debugging. This was in libreboot 5th release (based on coreboot - from late 2013), and I'm not sure if the issue persists in the current releases. - I have not been able to reproduce it. strace (from that user) is here: - <a href="cbfstool_libreboot5_strace">cbfstool_libreboot5_strace</a>. - The issue has been reported by a few users, so it does not happen all the time: - this bug (if it still exists) could (should) be reproduced. + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. </p> <p> - <a href="#pagetop">Back to top of page.</a> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. </p> - -<hr/> - - <p> - Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + + </div> </body> </html> diff --git a/docs/gnulinux/index.html b/docs/gnulinux/index.html index c384575b..e58639d3 100644 --- a/docs/gnulinux/index.html +++ b/docs/gnulinux/index.html @@ -13,39 +13,45 @@ <body> - <h1 id="pagetop">GNU/Linux distributions</h1> + <div class="section"> + + <h1 id="pagetop">GNU/Linux distributions</h1> + <p> + This section relates to dealing with GNU/Linux distributions: preparing bootable USB drives, + changing the default GRUB menu and so on. + </p> + <p> + <a href="../index.html">Back to previous index</a>. + </p> + <ul> + <li><a href="grub_boot_installer.html">How to install a GNU/Linux distribution</a></li> + <li><a href="grub_cbfs.html">How to change your default GRUB menu</a></li> + <li> + <a href="encrypted_parabola.html">Installing Parabola GNU/Linux-libre with full disk encryption (including /boot)</a> + <ul> + <li>Follow-up tutorial: <a href="configuring_parabola.html">Configuring Parabola (post-install)</a></li> + </ul> + </li> + <li><a href="encrypted_trisquel.html">Installing Trisquel GNU/Linux-libre with full disk encryption (including /boot)</a></li> + </ul> + + </div> + + <div class="section"> + <p> - This section relates to dealing with GNU/Linux distributions: preparing bootable USB drives, - changing the default GRUB menu and so on. + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. </p> + <p> - Or <a href="../index.html">Back to main index</a>. + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. </p> - <ul> - <li><a href="grub_boot_installer.html">How to install a GNU/Linux distribution</a></li> - <li><a href="grub_cbfs.html">How to change your default GRUB menu</a></li> - <li> - <a href="encrypted_parabola.html">Installing Parabola GNU/Linux-libre with full disk encryption (including /boot)</a> - <ul> - <li>Follow-up tutorial: <a href="configuring_parabola.html">Configuring Parabola (post-install)</a></li> - </ul> - </li> - <li><a href="encrypted_trisquel.html">Installing Trisquel GNU/Linux-libre with full disk encryption (including /boot)</a></li> - </ul> - -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + + </div> </body> </html> diff --git a/docs/grub/index.html b/docs/grub/index.html index e4dd8dc0..82333764 100644 --- a/docs/grub/index.html +++ b/docs/grub/index.html @@ -13,111 +13,127 @@ <body> - <h1 id="pagetop">GRUB payload</h1> - <p> - This section relates to the GRUB payload used in libreboot. - </p> - <p> - Or <a href="../index.html">Back to main index</a>. - </p> - <ul> - <li><a href="#grub_font">Setting font in GRUB</a></li> - <li><a href="#grub_keyboard">GRUB keyboard layouts</a> - <ul> - <li><a href="#grub_custom_keyboard">Custom keyboard layout in GRUB</a></li> - <li><a href="#grub_ukdvorak_keyboard">UK Dvorak keyboard layout in GRUB</a></li> - </ul> - </li> - </ul> + <div class="section"> + <h1 id="pagetop">GRUB payload</h1> + <p> + This section relates to the GRUB payload used in libreboot. + </p> + <p> + Or <a href="../index.html">Back to main index</a>. + </p> + <ul> + <li><a href="#grub_font">Setting font in GRUB</a></li> + <li><a href="#grub_keyboard">GRUB keyboard layouts</a> + <ul> + <li><a href="#grub_custom_keyboard">Custom keyboard layout in GRUB</a></li> + <li><a href="#grub_ukdvorak_keyboard">UK Dvorak keyboard layout in GRUB</a></li> + </ul> + </li> + </ul> + </div> -<hr/> + <div class="section"> - <h1 id="grub_font">Setting font in GRUB (for reference)</h1> + <h1 id="grub_font">Setting font in GRUB (for reference)</h1> - <p>You don't need to do this unless you would like to change the default font yourself. - (this is just for reference. It has already been done for you)</p> + <p>You don't need to do this unless you would like to change the default font yourself. + (this is just for reference. It has already been done for you)</p> - <p>The old font used was Unifont, and this had some missing characters: for instance, the border showed ??? characters instead of lines.</p> + <p>The old font used was Unifont, and this had some missing characters: for instance, the border showed ??? characters instead of lines.</p> - <p>I tried DeJavu Sans Mono from this website: - <a href="http://dejavu-fonts.org/wiki/Download">dejavu-fonts.org</a></p> + <p>I tried DeJavu Sans Mono from this website: + <a href="http://dejavu-fonts.org/wiki/Download">dejavu-fonts.org</a></p> - <p>Specifically, the version that I chose was the latest at the time of writing (Saturday 21 June 2014): - <a href="http://sourceforge.net/projects/dejavu/files/dejavu/2.34/dejavu-fonts-ttf-2.34.tar.bz2">this one</a></p> + <p>Specifically, the version that I chose was the latest at the time of writing (Saturday 21 June 2014): + <a href="http://sourceforge.net/projects/dejavu/files/dejavu/2.34/dejavu-fonts-ttf-2.34.tar.bz2">this one</a></p> - <p>This is a free font that is also contained in GNU/Linux distributions like Trisquel or Parabola.</p> + <p>This is a free font that is also contained in GNU/Linux distributions like Trisquel or Parabola.</p> - <p><b>$ cd libreboot_src/grub</b><br/> - compile grub ('build' script has the info on how to do this)<br/> - come back out into libreboot_src/resources/grub:<br/> - <b>$ cd ../libreboot_src/resources/grub/font</b></p> + <p><b>$ cd libreboot_src/grub</b><br/> + compile grub ('build' script has the info on how to do this)<br/> + come back out into libreboot_src/resources/grub:<br/> + <b>$ cd ../libreboot_src/resources/grub/font</b></p> - <p>I took Dejavu Sans Mono from dejavu (included in this version of libreboot) and did:<br/> - <b>$ ../../../grub/grub-mkfont -o dejavusansmono.pf2 ../../../dejavu-fonts-ttf-2.34/ttf/DejaVuSansMono.ttf</b></p> + <p>I took Dejavu Sans Mono from dejavu (included in this version of libreboot) and did:<br/> + <b>$ ../../../grub/grub-mkfont -o dejavusansmono.pf2 ../../../dejavu-fonts-ttf-2.34/ttf/DejaVuSansMono.ttf</b></p> - <p>I then added the instructions to 'build' script to include resources/grub/dejavusansmono.pf2 in all of the ROM images in root of cbfs.<br/> - I then added that instructions to the grub.cfg files (to load the font):<br/> - <b>loadfont (cbfsdisk)/dejavusansmono.pf2</b></p> + <p>I then added the instructions to 'build' script to include resources/grub/dejavusansmono.pf2 in all of the ROM images in root of cbfs.<br/> + I then added that instructions to the grub.cfg files (to load the font):<br/> + <b>loadfont (cbfsdisk)/dejavusansmono.pf2</b></p> - <p><a href="#pagetop">Back to top of page</a></p> + <p><a href="#pagetop">Back to top of page</a></p> + + </div> + + <div class="section"> -<hr/> + <h1 id="grub_keyboard">GRUB keyboard layouts (for reference)</h1> - <h1 id="grub_keyboard">GRUB keyboard layouts (for reference)</h1> + <div class="subsection"> + + <h2 id="grub_custom_keyboard">Custom keyboard layout in GRUB (for reference)</h2> - <h2 id="grub_custom_keyboard">Custom keyboard layout in GRUB (for reference)</h2> + <p> + Keymaps are stored in resources/utilities/grub-assemble/keymap/. + </p> - <p> - Keymaps are stored in resources/utilities/grub-assemble/keymap/. - </p> + <p> + Example (French Azerty):<br/> + <b>$ ckbcomp fr > frazerty</b><br/><br/> + Go in grub directory:<br/> + <b>cat frazerty | ./grub/grub-mklayout -o frazerty.gkb</b> + </p> - <p> - Example (French Azerty):<br/> - <b>$ ckbcomp fr > frazerty</b><br/><br/> - Go in grub directory:<br/> - <b>cat frazerty | ./grub/grub-mklayout -o frazerty.gkb</b> - </p> + <p> + You must make sure that the files are named keymap and keymap.gkb (where 'keymap' can be whatever you want). + </p> - <p> - You must make sure that the files are named keymap and keymap.gkb (where 'keymap' can be whatever you want). - </p> + <p> + Then from the above example, you would put <b>frazerty</b> in <b>resources/utilities/grub-assemble/keymap/original/</b> and + the <b>frazerty.gkb</b> file goes under <b>resources/utilities/grub-assemble/keymap/</b> + </p> - <p> - Then from the above example, you would put <b>frazerty</b> in <b>resources/utilities/grub-assemble/keymap/original/</b> and - the <b>frazerty.gkb</b> file goes under <b>resources/utilities/grub-assemble/keymap/</b> - </p> + <p> + The scripts <b>build</b> and <b>buildrom-withgrub</b> will automatically see this, and automatically build + ROM images with your custom layout (given the name) and include them under bin. Example: <b>libreboot_frazerty.rom</b>. + </p> - <p> - The scripts <b>build</b> and <b>buildrom-withgrub</b> will automatically see this, and automatically build - ROM images with your custom layout (given the name) and include them under bin. Example: <b>libreboot_frazerty.rom</b>. - </p> + <p><a href="#pagetop">Back to top of page</a></p> + + </div> + + <div class="subsection"> - <p><a href="#pagetop">Back to top of page</a></p> + <h2 id="grub_ukdvorak_keyboard">UK Dvorak keyboard layout in GRUB (for reference)</h2> - <h2 id="grub_ukdvorak_keyboard">UK Dvorak keyboard layout in GRUB (for reference)</h2> + <p> + ukdvorak had to be created manually, based on usdvorak. diff them (under resources/utilities/grub-assemble/keymap/original) + to see how ukdvorak file was created + </p> - <p> - ukdvorak had to be created manually, based on usdvorak. diff them (under resources/utilities/grub-assemble/keymap/original) - to see how ukdvorak file was created - </p> - - <p><b>$ cat ukdvorak | ./grub/grub-mklayout -o ukdvorak.gkb</b></p> + <p><b>$ cat ukdvorak | ./grub/grub-mklayout -o ukdvorak.gkb</b></p> - <p><a href="#pagetop">Back to top of page</a></p> + <p><a href="#pagetop">Back to top of page</a></p> + + </div> + + </div> -<hr/> + <div class="section"> - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> + <p> + Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. + </p> - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. + </p> + + </div> </body> </html> diff --git a/docs/hardware/index.html b/docs/hardware/index.html index 4ad8b681..9c53f0a6 100644 --- a/docs/hardware/index.html +++ b/docs/hardware/index.html @@ -13,34 +13,38 @@ <body> - <h1 id="pagetop">Hardware maintenance</h1> + <div class="section"> + <h1 id="pagetop">Hardware maintenance</h1> + <p> + This section relates to hardware maintenance on supported targets. + </p> + <p> + <a href="../index.html">Back to previous index</a>. + </p> + <ul> + <li><a href="x60_keyboard.html">ThinkPad X60/X60s/X60T: Change keyboard</a></li> + <li><a href="x60_heatsink.html">ThinkPad X60/X60S: change the fan/heatsink</a></li> + <li><a href="x60_lcd_change.html">ThinkPad X60/X60s: How to change the LCD panel</a> (incomplete. pics only for now)</li> + <li><a href="t60_lcd_15.html">ThinkPad T60 15.1" changing LCD panel</a></li> + <li><a href="t60_heatsink.html">ThinkPad T60: change the fan/heatsink</a></li> + </ul> + </div> + + <div class="section"> + <p> - This section relates to hardware maintenance on supported targets. + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. </p> + <p> - Or <a href="../index.html">Back to main index</a>. + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. </p> - <ul> - <li><a href="x60_keyboard.html">ThinkPad X60/X60s/X60T: Change keyboard</a></li> - <li><a href="x60_heatsink.html">ThinkPad X60/X60S: change the fan/heatsink</a></li> - <li><a href="x60_lcd_change.html">ThinkPad X60/X60s: How to change the LCD panel</a> (incomplete. pics only for now)</li> - <li><a href="t60_lcd_15.html">ThinkPad T60 15.1" changing LCD panel</a></li> - <li><a href="t60_heatsink.html">ThinkPad T60: change the fan/heatsink</a></li> - </ul> - -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + + </div> </body> </html> diff --git a/docs/hardware/t60_heatsink.html b/docs/hardware/t60_heatsink.html index 47950025..1f0fd3bd 100644 --- a/docs/hardware/t60_heatsink.html +++ b/docs/hardware/t60_heatsink.html @@ -8,121 +8,132 @@ @import url('../css/main.css'); </style> - <title>Libreboot documentation: Unbricking the ThinkPad T60</title> + <title>Changing the heatsink or CPU on a ThinkPad T60</title> </head> <body> - <header> + <div class="section"> <h1>Changing heatsink (or CPU) on the ThinkPad T60</h1> - <aside>Using this guide you can also change/upgrade the CPU.</aside> - </header> - - <p>Or go <a href="index.html">back to main index</a></p> - - <h1 id="hardware_requirements">Hardware requirements</h1> - <ul> - <li>rubbing alcohol or isopropyl alcohol, and thermal compound for changing CPU heatsink (procedure involves removing heatsink)</li> - <li>thermal compound/paste (Arctic Silver 5 is good. Others are also good.)</li> - </ul> - - <h1 id="software_requirements">Software requirements</h1> - <ul> - <li>xsensors</li> - <li>stress</li> - </ul> - - <h1 id="recovery">Disassembly</h1> - - <p> - Remove those screws and remove the HDD:<br/> - <img src="../images/t60_dev/0001.JPG" alt="" /> <img src="../images/t60_dev/0002.JPG" alt="" /> - </p> - - <p> - Lift off the palm rest:<br/> - <img src="../images/t60_dev/0003.JPG" alt="" /> - </p> - - <p> - Lift up the keyboard, pull it back a bit, flip it over like that and then disconnect it from the board:<br/> - <img src="../images/t60_dev/0004.JPG" alt="" /> <img src="../images/t60_dev/0005.JPG" alt="" /> <img src="../images/t60_dev/0006.JPG" alt="" /> - </p> - - <p> - Gently wedge both sides loose:<br/> - <img src="../images/t60_dev/0007.JPG" alt="" /> <img src="../images/t60_dev/0008.JPG" alt="" /> - </p> - - <p> - Remove that cable from the position:<br/> - <img src="../images/t60_dev/0009.JPG" alt="" /> <img src="../images/t60_dev/0010.JPG" alt="" /> - </p> - - <p> - Remove the bezel (sorry forgot to take pics). - </p> - - <p> - On the CPU (and there is another chip south-east to it, sorry forgot to take pic) - clean off the old thermal paste (with the alcohol) and apply new (Artic Silver 5 is good, others are good too) - you should also clean the heatsink the same way<br/> - <img src="../images/t60_dev/0051.JPG" alt="" /> - </p> - - <p> - This is also an opportunity to change the CPU to another one. For example if you had a Core Duo T2400, you can upgrade it to a better processor - (higher speed, 64-bit support). A Core 2 Duo T7600 was installed here. - </p> - - <p> - Attach the heatsink and install the screws (also, make sure to install the AC jack as highlighted):<br/> - <img src="../images/t60_dev/0052.JPG" alt="" /> - </p> - - <p> - Reinstall that upper bezel:<br/> - <img src="../images/t60_dev/0053.JPG" alt="" /> - </p> + <p> + Using this guide you can also change/upgrade the CPU. + </p> + <p><a href="index.html">Back to previous index</a></p> + </div> + + <div class="section"> + <h1 id="hardware_requirements">Hardware requirements</h1> + <ul> + <li>rubbing alcohol or isopropyl alcohol, and thermal compound for changing CPU heatsink (procedure involves removing heatsink)</li> + <li>thermal compound/paste (Arctic Silver 5 is good. Others are also good.)</li> + </ul> + </div> + + <div class="section"> + <h1 id="software_requirements">Software requirements</h1> + <ul> + <li>xsensors</li> + <li>stress</li> + </ul> + </div> + + <div class="section"> + + <h1 id="recovery">Disassembly</h1> + + <p> + Remove those screws and remove the HDD:<br/> + <img src="../images/t60_dev/0001.JPG" alt="" /> <img src="../images/t60_dev/0002.JPG" alt="" /> + </p> + + <p> + Lift off the palm rest:<br/> + <img src="../images/t60_dev/0003.JPG" alt="" /> + </p> + + <p> + Lift up the keyboard, pull it back a bit, flip it over like that and then disconnect it from the board:<br/> + <img src="../images/t60_dev/0004.JPG" alt="" /> <img src="../images/t60_dev/0005.JPG" alt="" /> <img src="../images/t60_dev/0006.JPG" alt="" /> + </p> + + <p> + Gently wedge both sides loose:<br/> + <img src="../images/t60_dev/0007.JPG" alt="" /> <img src="../images/t60_dev/0008.JPG" alt="" /> + </p> + + <p> + Remove that cable from the position:<br/> + <img src="../images/t60_dev/0009.JPG" alt="" /> <img src="../images/t60_dev/0010.JPG" alt="" /> + </p> + + <p> + Remove the bezel (sorry forgot to take pics). + </p> + + <p> + On the CPU (and there is another chip south-east to it, sorry forgot to take pic) + clean off the old thermal paste (with the alcohol) and apply new (Artic Silver 5 is good, others are good too) + you should also clean the heatsink the same way<br/> + <img src="../images/t60_dev/0051.JPG" alt="" /> + </p> + + <p> + This is also an opportunity to change the CPU to another one. For example if you had a Core Duo T2400, you can upgrade it to a better processor + (higher speed, 64-bit support). A Core 2 Duo T7600 was installed here. + </p> + + <p> + Attach the heatsink and install the screws (also, make sure to install the AC jack as highlighted):<br/> + <img src="../images/t60_dev/0052.JPG" alt="" /> + </p> + + <p> + Reinstall that upper bezel:<br/> + <img src="../images/t60_dev/0053.JPG" alt="" /> + </p> + + <p> + Do that:<br/> + <img src="../images/t60_dev/0054.JPG" alt="" /> <img src="../images/t60_dev/0055.JPG" alt="" /> + </p> + + <p> + Attach keyboard:<br/> + <img src="../images/t60_dev/0056.JPG" alt="" /> + </p> + + <p> + Place keyboard and (sorry, forgot to take pics) reinstall the palmrest and insert screws on the underside:<br/> + <img src="../images/t60_dev/0058.JPG" alt="" /> + </p> + + <p> + It lives!<br/> + <img src="../images/t60_dev/0071.JPG" alt="" /> <img src="../images/t60_dev/0072.JPG" alt="" /> <img src="../images/t60_dev/0073.JPG" alt="" /> + </p> + + <p> + Always stress test ('stress -c 2' and xsensors. below 90C is ok) when replacing cpu paste/heatsink:<br/> + <img src="../images/t60_dev/0074.JPG" alt="" /> + </p> + + </div> + + <div class="section"> <p> - Do that:<br/> - <img src="../images/t60_dev/0054.JPG" alt="" /> <img src="../images/t60_dev/0055.JPG" alt="" /> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. </p> <p> - Attach keyboard:<br/> - <img src="../images/t60_dev/0056.JPG" alt="" /> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. </p> - - <p> - Place keyboard and (sorry, forgot to take pics) reinstall the palmrest and insert screws on the underside:<br/> - <img src="../images/t60_dev/0058.JPG" alt="" /> - </p> - - <p> - It lives!<br/> - <img src="../images/t60_dev/0071.JPG" alt="" /> <img src="../images/t60_dev/0072.JPG" alt="" /> <img src="../images/t60_dev/0073.JPG" alt="" /> - </p> - - <p> - Always stress test ('stress -c 2' and xsensors. below 90C is ok) when replacing cpu paste/heatsink:<br/> - <img src="../images/t60_dev/0074.JPG" alt="" /> - </p> - -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + + </div> </body> </html> diff --git a/docs/hardware/t60_lcd_15.html b/docs/hardware/t60_lcd_15.html index b1293c14..e2acfc37 100644 --- a/docs/hardware/t60_lcd_15.html +++ b/docs/hardware/t60_lcd_15.html @@ -13,77 +13,84 @@ <body> - <header> + <div class="section"> <h1>Changing the LCD panel on a 15.1" T60</h1> - <aside>This is for the 15.1" T60. If you have another size then the procedure will differ; for example, on 14.1" you have - to remove the hinges and the procedure is a bit more involved than on 15.1".</aside> - </header> - - <p>Or go <a href="index.html">back to main index</a></p> - - <h1 id="recovery">Disassembly</h1> - - <p> - Remove those covers and unscrew:<br/> - <img src="../images/t60_dev/0059.JPG" alt="" /> <img src="../images/t60_dev/0060.JPG" alt="" /> <img src="../images/t60_dev/0061.JPG" alt="" /> - </p> - - <p> - Gently pry off the front bezel. - </p> - <p> - Remove inverter board:<br/> - <img src="../images/t60_dev/0064.JPG" alt="" /> + This is for the 15.1" T60. If you have another size then the procedure will differ; for example, on 14.1" you have + to remove the hinges and the procedure is a bit more involved than on 15.1". </p> + <p><a href="index.html">Back to previous index</a></p> + </div> + + <div class="section"> + + <h1 id="recovery">Disassembly</h1> + + <p> + Remove those covers and unscrew:<br/> + <img src="../images/t60_dev/0059.JPG" alt="" /> <img src="../images/t60_dev/0060.JPG" alt="" /> <img src="../images/t60_dev/0061.JPG" alt="" /> + </p> + + <p> + Gently pry off the front bezel. + </p> + + <p> + Remove inverter board:<br/> + <img src="../images/t60_dev/0064.JPG" alt="" /> + </p> + + <p> + Disconnect LCD cable:<br/> + <img src="../images/t60_dev/0065.JPG" alt="" /> + </p> + + <p> + Remove the panel:<br/> + <img src="../images/t60_dev/0066.JPG" alt="" /> + </p> + + <p> + Move the rails (left and right side) from the old panel to the new one and then attach LCD cable:<br/> + <img src="../images/t60_dev/0068.JPG" alt="" /> + </p> + + <p> + Insert panel (this one is an LG-Philips LP150E05-A2K1, and there are others. See <a href="../hcl/index.html#supported_t60_list">../hcl/index.html#supported_t60_list</a>):<br/> + <img src="../images/t60_dev/0069.JPG" alt="" /> + </p> + + <p> + Insert new inverter board (see <a href="../hcl/index.html#supported_t60_list">../hcl/index.html#supported_t60_list</a> for what is recommended on your LCD panel):<br/> + <img src="../images/t60_dev/0070.JPG" alt="" /> + </p> + + <p> + Now re-attach the front bezel and put all the screws in. + </p> + + <p> + It lives!<br/> + <img src="../images/t60_dev/0071.JPG" alt="" /> <img src="../images/t60_dev/0072.JPG" alt="" /> <img src="../images/t60_dev/0073.JPG" alt="" /> + </p> + + </div> + + <div class="section"> <p> - Disconnect LCD cable:<br/> - <img src="../images/t60_dev/0065.JPG" alt="" /> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. </p> <p> - Remove the panel:<br/> - <img src="../images/t60_dev/0066.JPG" alt="" /> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. </p> - - <p> - Move the rails (left and right side) from the old panel to the new one and then attach LCD cable:<br/> - <img src="../images/t60_dev/0068.JPG" alt="" /> - </p> - - <p> - Insert panel (this one is an LG-Philips LP150E05-A2K1, and there are others. See <a href="../hcl/index.html#supported_t60_list">../hcl/index.html#supported_t60_list</a>):<br/> - <img src="../images/t60_dev/0069.JPG" alt="" /> - </p> - - <p> - Insert new inverter board (see <a href="../hcl/index.html#supported_t60_list">../hcl/index.html#supported_t60_list</a> for what is recommended on your LCD panel):<br/> - <img src="../images/t60_dev/0070.JPG" alt="" /> - </p> - - <p> - Now re-attach the front bezel and put all the screws in. - </p> - - <p> - It lives!<br/> - <img src="../images/t60_dev/0071.JPG" alt="" /> <img src="../images/t60_dev/0072.JPG" alt="" /> <img src="../images/t60_dev/0073.JPG" alt="" /> - </p> - -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + + </div> </body> </html> diff --git a/docs/hardware/x60_heatsink.html b/docs/hardware/x60_heatsink.html index a591e75b..178af567 100644 --- a/docs/hardware/x60_heatsink.html +++ b/docs/hardware/x60_heatsink.html @@ -13,132 +13,141 @@ <body> - <header> + <div class="section"> <h1>Changing the fan/heatsink on the ThinkPad X60</h1> - <aside>This guide will teach you how to replace the fan and heatsink on your ThinkPad X60.</aside> - </header> - - <p>Or go <a href="index.html">back to main index</a></p> - - <h2>Table of Contents</h2> - <ul> - <li><a href="#hardware_requirements">Hardware Requirements</a></li> - <li><a href="#software_requirements">Software Requirements</a></li> - <li><a href="#procedure">The procedure</a></li> - </ul> - - <h1 id="hardware_requirements">Hardware requirements</h1> - <ul> - <li>isopropyl alcohol (sometimes called rubbing alcohol)</li> - <li>your new fan and/or heatsink</li> - <li>CPU thermal compound (some say Arctic Silver 5 or IC Diamond 7 are good, others are also 'ok')</li> - <li>Something to spread the paste with</li> - </ul> - - <h1 id="software_requirements">Software requirements (for CPU stress testing)</h1> - <ul> - <li>xsensors utility</li> - <li>stress utility</li> - </ul> - - <h1 id="procedure">Disassembly</h1> - <p> - Remove those screws:<br/> - <img src="../images/x60_heatsink/0000.jpg" alt="" /> - </p> - <p> - Push the keyboard forward (carefully):<br/> - <img src="../images/x60_heatsink/0001.jpg" alt="" /> - </p> - <p> - Lift the keyboard up and disconnect it from the board:<br/> - <img src="../images/x60_heatsink/0002.jpg" alt="" /> - </p> - <p> - Grab the right-hand side of the chassis and force it off (gently) and pry up the rest of the chassis:<br/> - <img src="../images/x60_heatsink/0003.jpg" alt="" /> - </p> - <p> - You should now have this:<br/> - <img src="../images/x60_heatsink/0004.jpg" alt="" /> - </p> - <p> - Disconnect the wifi antenna cables, the modem cable and the speaker:<br/> - <img src="../images/x60_heatsink/0005.jpg" alt="" /> - </p> - <p> - Unroute the cables along their path, carefully lifting the tape that holds them in place. Then, disconnect the modem - cable (other end) and power connection and unroute all the cables so that they dangle by the monitor hinge on the right-hand - side:<br/> - <img src="../images/x60_heatsink/0006.jpg" alt="" /> - </p> - <p> - Disconnect the monitor from the motherboard, and unroute the grey antenna cable, carefully lifting the tape - that holds it into place:<br/> - <img src="../images/x60_heatsink/0008.jpg" alt="" /> - </p> - <p> - Carefully lift the remaining tape and unroute the left antenna cable so that it is loose:<br/> - <img src="../images/x60_heatsink/0009.jpg" alt="" /> - </p> - <p> - Remove those screws:<br/> - <img src="../images/x60_heatsink/0011.jpg" alt="" /> - </p> - <p> - Remove those screws:<br/> - <img src="../images/x60_heatsink/0012.jpg" alt="" /> - </p> - <p> - Carefully remove the plate, like so:<br/> - <img src="../images/x60_heatsink/0013.jpg" alt="" /> - </p> - <p> - Remove the SATA connector:<br/> - <img src="../images/x60_heatsink/0014.jpg" alt="" /> - </p> - <p> - Now remove the motherboard (gently) and cast the lcd/chassis aside:<br/> - <img src="../images/x60_heatsink/0015.jpg" alt="" /> - </p> - <p> - Look at that black tape above the heatsink, remove it:<br/> - <img src="../images/x60_heatsink/0016.jpg" alt="" /> - </p> - <p> - Now you have removed it:<br/> - <img src="../images/x60_heatsink/0017.jpg" alt="" /> - </p> - - <p> - Disconnect the fan and remove all the screws, heatsink will easily come off:<br/> - <img src="../images/x60_heatsink/0018.jpg" alt="" /> - </p> - - <p> - Remove the old paste with a cloth (from the CPU and heatsink) and then clean both of them with the alcohol (to remove remaining residue of the paste). - Apply a pea-sized amount of paste to the both chipsets that the heatsink covered and spread it evenly (uniformally). - Finally reinstall the heatsink, reversing previous steps. - </p> - - <p> - <b>stress -c 2</b> command can be used to push the CPU to 100%, and <b>xsensors</b> (or <b>watch sensors</b> command) can be used to monitor heat. - Below 90C is ok. - </p> - -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + <p> + This guide will teach you how to replace the fan and heatsink on your ThinkPad X60. + </p> + <p><a href="index.html">Back to main index</a></p> + </div> + + <div class="section"> + <h1>Table of Contents</h1> + <ul> + <li><a href="#hardware_requirements">Hardware Requirements</a></li> + <li><a href="#software_requirements">Software Requirements</a></li> + <li><a href="#procedure">Disassembly</a></li> + </ul> + </div> + + <div class="section"> + <h1 id="hardware_requirements">Hardware requirements</h1> + <ul> + <li>isopropyl alcohol (sometimes called rubbing alcohol)</li> + <li>your new fan and/or heatsink</li> + <li>CPU thermal compound (some say Arctic Silver 5 or IC Diamond 7 are good, others are also 'ok')</li> + <li>Something to spread the paste with</li> + </ul> + </div> + + <div class="section"> + <h1 id="software_requirements">Software requirements (for CPU stress testing)</h1> + <ul> + <li>xsensors utility</li> + <li>stress utility</li> + </ul> + </div> + + <div class="section"> + <h1 id="procedure">Disassembly</h1> + <p> + Remove those screws:<br/> + <img src="../images/x60_heatsink/0000.jpg" alt="" /> + </p> + <p> + Push the keyboard forward (carefully):<br/> + <img src="../images/x60_heatsink/0001.jpg" alt="" /> + </p> + <p> + Lift the keyboard up and disconnect it from the board:<br/> + <img src="../images/x60_heatsink/0002.jpg" alt="" /> + </p> + <p> + Grab the right-hand side of the chassis and force it off (gently) and pry up the rest of the chassis:<br/> + <img src="../images/x60_heatsink/0003.jpg" alt="" /> + </p> + <p> + You should now have this:<br/> + <img src="../images/x60_heatsink/0004.jpg" alt="" /> + </p> + <p> + Disconnect the wifi antenna cables, the modem cable and the speaker:<br/> + <img src="../images/x60_heatsink/0005.jpg" alt="" /> + </p> + <p> + Unroute the cables along their path, carefully lifting the tape that holds them in place. Then, disconnect the modem + cable (other end) and power connection and unroute all the cables so that they dangle by the monitor hinge on the right-hand + side:<br/> + <img src="../images/x60_heatsink/0006.jpg" alt="" /> + </p> + <p> + Disconnect the monitor from the motherboard, and unroute the grey antenna cable, carefully lifting the tape + that holds it into place:<br/> + <img src="../images/x60_heatsink/0008.jpg" alt="" /> + </p> + <p> + Carefully lift the remaining tape and unroute the left antenna cable so that it is loose:<br/> + <img src="../images/x60_heatsink/0009.jpg" alt="" /> + </p> + <p> + Remove those screws:<br/> + <img src="../images/x60_heatsink/0011.jpg" alt="" /> + </p> + <p> + Remove those screws:<br/> + <img src="../images/x60_heatsink/0012.jpg" alt="" /> + </p> + <p> + Carefully remove the plate, like so:<br/> + <img src="../images/x60_heatsink/0013.jpg" alt="" /> + </p> + <p> + Remove the SATA connector:<br/> + <img src="../images/x60_heatsink/0014.jpg" alt="" /> + </p> + <p> + Now remove the motherboard (gently) and cast the lcd/chassis aside:<br/> + <img src="../images/x60_heatsink/0015.jpg" alt="" /> + </p> + <p> + Look at that black tape above the heatsink, remove it:<br/> + <img src="../images/x60_heatsink/0016.jpg" alt="" /> + </p> + <p> + Now you have removed it:<br/> + <img src="../images/x60_heatsink/0017.jpg" alt="" /> + </p> + + <p> + Disconnect the fan and remove all the screws, heatsink will easily come off:<br/> + <img src="../images/x60_heatsink/0018.jpg" alt="" /> + </p> + + <p> + Remove the old paste with a cloth (from the CPU and heatsink) and then clean both of them with the alcohol (to remove remaining residue of the paste). + Apply a pea-sized amount of paste to the both chipsets that the heatsink covered and spread it evenly (uniformally). + Finally reinstall the heatsink, reversing previous steps. + </p> + + <p> + <b>stress -c 2</b> command can be used to push the CPU to 100%, and <b>xsensors</b> (or <b>watch sensors</b> command) can be used to monitor heat. + Below 90C is ok. + </p> + </div> + + <div class="section"> + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. + </p> + + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. + </p> + </div> </body> </html> diff --git a/docs/hardware/x60_keyboard.html b/docs/hardware/x60_keyboard.html index 20b905de..13e82738 100644 --- a/docs/hardware/x60_keyboard.html +++ b/docs/hardware/x60_keyboard.html @@ -13,37 +13,43 @@ <body> - <header> + <div class="section"> <h1>Thinkpad X60/X60s/X60t: Change keyboard</h1> - <aside>Use this guide to replace the keyboard on your ThinkPad X60. Also works for X60s and X60 Tablet.</aside> - </header> + <p> + Use this guide to replace the keyboard on your ThinkPad X60. Also works for X60s and X60 Tablet. + </p> + <p><a href="index.html">Back to previous index</a></p> + </div> - <p>Or go <a href="index.html">back to main index</a></p> + <div class="section"> + <h1 id="recovery">Just follow these steps, and then reverse</h1> - <h1 id="recovery">Just follow these steps, and then reverse</h1> + <p> + <img src="../images/x60_keyboard/1.JPG"><br/> + <img src="../images/x60_keyboard/2.JPG"><br/> + <img src="../images/x60_keyboard/3.JPG"><br/> + <img src="../images/x60_keyboard/4.JPG"><br/> + <img src="../images/x60_keyboard/5.JPG"> + </p> + + </div> + + <div class="section"> <p> - <img src="../images/x60_keyboard/1.JPG"><br/> - <img src="../images/x60_keyboard/2.JPG"><br/> - <img src="../images/x60_keyboard/3.JPG"><br/> - <img src="../images/x60_keyboard/4.JPG"><br/> - <img src="../images/x60_keyboard/5.JPG"> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. </p> -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. + </p> + + </div> </body> </html> diff --git a/docs/hardware/x60_lcd_change.html b/docs/hardware/x60_lcd_change.html index 261814a5..bb2c361f 100644 --- a/docs/hardware/x60_lcd_change.html +++ b/docs/hardware/x60_lcd_change.html @@ -13,37 +13,39 @@ <body> - <header> + <div class="section"> <h1>Changing the LCD panel on X60</h1> - </header> - - <p>Or go <a href="index.html">back to main index</a></p> - - <p>This tutorial is incomplete, and only pictures for now.</p> - - <p> - <img src="../images/x60_lcd_change/0001.JPG" alt="" /> - <img src="../images/x60_lcd_change/0002.JPG" alt="" /> - <img src="../images/x60_lcd_change/0003.JPG" alt="" /> - <img src="../images/x60_lcd_change/0004.JPG" alt="" /> - <img src="../images/x60_lcd_change/0005.JPG" alt="" /> - <img src="../images/x60_lcd_change/0006.JPG" alt="" /> - <img src="../images/x60_lcd_change/0007.JPG" alt="" /> - </p> - -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + <p>This tutorial is incomplete, and only pictures for now.</p> + <p><a href="index.html">Back to previous index</a></p> + </div> + + <div class="section"> + <p> + <img src="../images/x60_lcd_change/0001.JPG" alt="" /> + <img src="../images/x60_lcd_change/0002.JPG" alt="" /> + <img src="../images/x60_lcd_change/0003.JPG" alt="" /> + <img src="../images/x60_lcd_change/0004.JPG" alt="" /> + <img src="../images/x60_lcd_change/0005.JPG" alt="" /> + <img src="../images/x60_lcd_change/0006.JPG" alt="" /> + <img src="../images/x60_lcd_change/0007.JPG" alt="" /> + </p> + </div> + + <div class="section"> + + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. + </p> + + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. + </p> + + </div> </body> </html> diff --git a/docs/hcl/index.html b/docs/hcl/index.html index 29a587a6..6aec1c70 100644 --- a/docs/hcl/index.html +++ b/docs/hcl/index.html @@ -13,156 +13,164 @@ <body> - <h1 id="pagetop">Hardware compatibility list</h1> - <p> - This sections relates to known hardware compatibility in libreboot. - </p> - <p> - Or <a href="../index.html">back to main index</a>. - </p> - <ul> - <li><a href="#supported_list">List of supported hardware</a></li> - <li><a href="#recommended_wifi">Recommended wifi chipsets</a></li> - <li><a href="#supported_x60_list">List of supported ThinkPad X60/X60s</a></li> - <li><a href="#supported_x60t_list">List of supported ThinkPad X60 Tablets</a></li> - <li><a href="#supported_t60_list">List of supported ThinkPad T60s</a></li> - <li><a href="x200.html">List of supported ThinkPad X200s</a></li> - <li><a href="#t60_ati_intel">ThinkPad T60 (ATI GPU) and ThinkPad T60 (Intel GPU) differences.</a></li> - <li><a href="#macbook11">Information about the Macbook1,1</a></li> - <li><a href="#macbook21">Information about the Macbook2,1</a></li> - </ul> - -<hr/> - - <h1 id="supported_list">List of supported hardware</h1> - - <p> - Libreboot supports the following machines in this release: - </p> + <div class="section"> + <h1 id="pagetop">Hardware compatibility list</h1> + <p> + This sections relates to known hardware compatibility in libreboot. + </p> <ul> - <li><a href="#supported_x60_list">Lenovo ThinkPad X60/X60s</a></li> - <li><a href="#supported_x60t_list">Lenovo ThinkPad X60 Tablet</a></li> - <li><a href="#supported_t60_list">Lenovo ThinkPad T60</a> (there are exceptions. see link)</li> - <li><a href="x200.html">Lenovo ThinkPad X200</a></li> - <li><a href="#macbook11">Apple MacBook1,1</a></li> - <li><a href="#macbook21">Apple MacBook2,1</a></li> + <li><a href="#supported_list">List of supported hardware</a></li> + <li><a href="#recommended_wifi">Recommended wifi chipsets</a></li> + <li><a href="#supported_x60_list">List of supported ThinkPad X60/X60s</a></li> + <li><a href="#supported_x60t_list">List of supported ThinkPad X60 Tablets</a></li> + <li><a href="#supported_t60_list">List of supported ThinkPad T60s</a></li> + <li><a href="x200.html">List of supported ThinkPad X200s</a></li> + <li><a href="#t60_ati_intel">ThinkPad T60 (ATI GPU) and ThinkPad T60 (Intel GPU) differences.</a></li> + <li><a href="#macbook11">Information about the Macbook1,1</a></li> + <li><a href="#macbook21">Information about the Macbook2,1</a></li> </ul> + <p> + <a href="../index.html">Back to previous index</a>. + </p> + </div> - <p> - 'Supported' means that the build scripts know how to build ROM images for these machines, - and that the machines have been tested (confirmed working). There may be exceptions; - in other words, this is a list of 'officially' supported machines. - </p> + <div class="section"> - <p> - It is also possible to build ROM images (from source) for other machines (and virtual machines, e.g. QEMU). - </p> + <h2 id="supported_list">List of supported hardware</h2> - <p><a href="#pagetop">Back to top of page</a></p> + <p> + Libreboot supports the following machines in this release: + </p> + <ul> + <li><a href="#supported_x60_list">Lenovo ThinkPad X60/X60s</a></li> + <li><a href="#supported_x60t_list">Lenovo ThinkPad X60 Tablet</a></li> + <li><a href="#supported_t60_list">Lenovo ThinkPad T60</a> (there are exceptions. see link)</li> + <li><a href="x200.html">Lenovo ThinkPad X200</a></li> + <li><a href="#macbook11">Apple MacBook1,1</a></li> + <li><a href="#macbook21">Apple MacBook2,1</a></li> + </ul> -<hr/> + <p> + 'Supported' means that the build scripts know how to build ROM images for these machines, + and that the machines have been tested (confirmed working). There may be exceptions; + in other words, this is a list of 'officially' supported machines. + </p> - <h1 id="recommended_wifi">Recommended wifi chipsets</h1> - <p> - The following are known to work well: - </p> - <ul> - <li><a href="http://h-node.org/search/results/en/1/search/wifi/ar9285">Atheros AR5B95</a> (chipset: Atheros AR9285); mini PCI-E. Most of these are half-height, so you will need a half>full height mini PCI express adapter/bracket.</li> - <li><a href="http://h-node.org/wifi/view/en/116/Atheros-Communications-Inc--AR928X-Wireless-Network-Adapter--PCI-Express---rev-01-">Atheros AR928X</a> chipset; mini PCI-E. Most of these are half-height, so you will need a half>full height mini PCI express adapter/bracket</li> - <li>Unex DNUA-93F (chipset: <a href="http://h-node.org/search/results/en/1/search/wifi/ar9271">Atheros AR9271</a>); USB.</li> - <li>Any of the chipsets listed at <a href="https://fsf.org/ryf">https://fsf.org/ryf</a></li> - <li>Any of the chipsets listed at <a href="http://h-node.org/wifi/catalogue/en/1/1/undef/undef/yes?">http://h-node.org/wifi/catalogue/en/1/1/undef/undef/yes?</a> - </ul> + <p> + It is also possible to build ROM images (from source) for other machines (and virtual machines, e.g. QEMU). + </p> - <p><a href="#pagetop">Back to top of page</a></p> + <p><a href="#pagetop">Back to top of page</a></p> + + </div> -<hr/> + <div class="section"> - <h1 id="supported_x60_list">List of supported ThinkPad X60s</h1> + <h2 id="recommended_wifi">Recommended wifi chipsets</h2> + <p> + The following are known to work well: + </p> + <ul> + <li><a href="http://h-node.org/search/results/en/1/search/wifi/ar9285">Atheros AR5B95</a> (chipset: Atheros AR9285); mini PCI-E. Most of these are half-height, so you will need a half>full height mini PCI express adapter/bracket.</li> + <li><a href="http://h-node.org/wifi/view/en/116/Atheros-Communications-Inc--AR928X-Wireless-Network-Adapter--PCI-Express---rev-01-">Atheros AR928X</a> chipset; mini PCI-E. Most of these are half-height, so you will need a half>full height mini PCI express adapter/bracket</li> + <li>Unex DNUA-93F (chipset: <a href="http://h-node.org/search/results/en/1/search/wifi/ar9271">Atheros AR9271</a>); USB.</li> + <li>Any of the chipsets listed at <a href="https://fsf.org/ryf">https://fsf.org/ryf</a></li> + <li>Any of the chipsets listed at <a href="http://h-node.org/wifi/catalogue/en/1/1/undef/undef/yes?">http://h-node.org/wifi/catalogue/en/1/1/undef/undef/yes?</a> + </ul> - <p> - Native gpu initialization ('native graphics') which replaces the proprietary VGA Option ROM - ('<a href="https://en.wikipedia.org/wiki/Video_BIOS">Video BIOS</a>' or 'VBIOS'), - all known LCD panels are currently compatible: - </p> + <p><a href="#pagetop">Back to top of page</a></p> + + </div> - <p> - To find what LCD panel you have, see: <a href="../misc/index.html#get_edid_panelname">../misc/index.html#get_edid_panelname</a>. - </p> + <div class="section"> - <ul> - <li>TMD-Toshiba LTD121ECHB: #</li> - <li>CMO N121X5-L06: #</li> - <li>Samsung LTN121XJ-L07: #</li> - <li>BOE-Hydis HT121X01-101: #</li> - </ul> + <h2 id="supported_x60_list">List of supported ThinkPad X60s</h2> - <p> - You can remove an X61/X61s motherboard from the chassis and install an X60/X60s motherboard in it's place (for flashing libreboot). The chassis is mostly identical - and the motherboards are the same shape/size. - </p> + <p> + Native gpu initialization ('native graphics') which replaces the proprietary VGA Option ROM + ('<a href="https://en.wikipedia.org/wiki/Video_BIOS">Video BIOS</a>' or 'VBIOS'), + all known LCD panels are currently compatible: + </p> - <p> - The X60 typically comes with an Intel wifi chipset which does not work at all without proprietary firmware, and while Lenovo BIOS is running - the machine will refuse to boot if you replace the card. Fortunately it is very easily replaced; - just remove the card and install another one <b>after</b> libreboot is installed. See <a href="#recommended_wifi">#recommended_wifi</a> for replacements. - </p> + <p> + To find what LCD panel you have, see: <a href="../misc/index.html#get_edid_panelname">../misc/index.html#get_edid_panelname</a>. + </p> - <p><a href="#pagetop">Back to top of page.</a></p> + <ul> + <li>TMD-Toshiba LTD121ECHB: #</li> + <li>CMO N121X5-L06: #</li> + <li>Samsung LTN121XJ-L07: #</li> + <li>BOE-Hydis HT121X01-101: #</li> + </ul> -<hr/> + <p> + You can remove an X61/X61s motherboard from the chassis and install an X60/X60s motherboard in it's place (for flashing libreboot). The chassis is mostly identical + and the motherboards are the same shape/size. + </p> - <h1 id="supported_x60t_list">List of supported ThinkPad X60 Tablets</h1> + <p> + The X60 typically comes with an Intel wifi chipset which does not work at all without proprietary firmware, and while Lenovo BIOS is running + the machine will refuse to boot if you replace the card. Fortunately it is very easily replaced; + just remove the card and install another one <b>after</b> libreboot is installed. See <a href="#recommended_wifi">#recommended_wifi</a> for replacements. + </p> - <p> - Native gpu initialization ('native graphics') which replaces the proprietary VGA Option ROM - ('<a href="https://en.wikipedia.org/wiki/Video_BIOS">Video BIOS</a>' or 'VBIOS'). - </p> + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> - <p> - To find what LCD panel you have, see: <a href="../misc/index.html#get_edid_panelname">../misc/index.html#get_edid_panelname</a>. - </p> + <div class="section"> - <p> - There are 5 known LCD panels for the X60 Tablet: - </p> - <ul> - <li> - <b>X60T XGA (1024x768):</b> - <ul> - <li>BOE-Hydis HV121X03-100 (works)</li> - <li>Samsung LTN121XP01 (does not work. blank screen)</li> - <li>BOE-Hydis HT12X21-351 (does not work. blank screen)</li> - </ul> - </li> - <li> - <b>X60T SXGA+ (1400x1050):</b> - <ul> - <li>BOE-Hydis HV121P01-100 (works)</li> - <li>BOE-Hydis HV121P01-101 (works)</li> - </ul> - </li> - </ul> + <h2 id="supported_x60t_list">List of supported ThinkPad X60 Tablets</h2> - <p> - Most X60Ts only have digitizer (pen), but some have finger (touch) aswell as pen; finger/multitouch doesn't work, only digitizer (pen) does. - </p> + <p> + Native gpu initialization ('native graphics') which replaces the proprietary VGA Option ROM + ('<a href="https://en.wikipedia.org/wiki/Video_BIOS">Video BIOS</a>' or 'VBIOS'). + </p> - <p> - You can remove an X61/X61s motherboard from the chassis and install an X60/X60s motherboard in its place (for flashing libreboot). The chassis is mostly identical - and the motherboards are the same shape/size. <b>It is unknown if the same applies between the X60 Tablet and the X61 Tablet</b>. - </p> + <p> + To find what LCD panel you have, see: <a href="../misc/index.html#get_edid_panelname">../misc/index.html#get_edid_panelname</a>. + </p> - <p> - The X60 Tablet typically comes with an Intel wifi chipset which does not work at all without proprietary firmware, and while Lenovo BIOS is running - the machine will refuse to boot if you replace the card. Fortunately it is very easily replaced; - just remove the card and install another one <b>after</b> libreboot is installed. See <a href="#recommended_wifi">#recommended_wifi</a> for replacements. - </p> + <p> + There are 5 known LCD panels for the X60 Tablet: + </p> + <ul> + <li> + <b>X60T XGA (1024x768):</b> + <ul> + <li>BOE-Hydis HV121X03-100 (works)</li> + <li>Samsung LTN121XP01 (does not work. blank screen)</li> + <li>BOE-Hydis HT12X21-351 (does not work. blank screen)</li> + </ul> + </li> + <li> + <b>X60T SXGA+ (1400x1050):</b> + <ul> + <li>BOE-Hydis HV121P01-100 (works)</li> + <li>BOE-Hydis HV121P01-101 (works)</li> + </ul> + </li> + </ul> - <p> - A user with a X60T that has digitizer+finger support, reported that they could get finger input working. They - used linuxwacom at git tag 0.25.99.2 and had the following in their xorg.conf: - </p> + <p> + Most X60Ts only have digitizer (pen), but some have finger (touch) aswell as pen; finger/multitouch doesn't work, only digitizer (pen) does. + </p> + + <p> + You can remove an X61/X61s motherboard from the chassis and install an X60/X60s motherboard in its place (for flashing libreboot). The chassis is mostly identical + and the motherboards are the same shape/size. <b>It is unknown if the same applies between the X60 Tablet and the X61 Tablet</b>. + </p> + + <p> + The X60 Tablet typically comes with an Intel wifi chipset which does not work at all without proprietary firmware, and while Lenovo BIOS is running + the machine will refuse to boot if you replace the card. Fortunately it is very easily replaced; + just remove the card and install another one <b>after</b> libreboot is installed. See <a href="#recommended_wifi">#recommended_wifi</a> for replacements. + </p> + + <p> + A user with a X60T that has digitizer+finger support, reported that they could get finger input working. They + used linuxwacom at git tag 0.25.99.2 and had the following in their xorg.conf: + </p> <pre> # Now, for some reason (probably a bug in linuxwacom), @@ -173,33 +181,33 @@ # tested with linuxwacom git 42a42b2a8636abc9e105559e5dea467163499de7 Section "Monitor" - Identifier "<default monitor>" - DisplaySize 245 184 + Identifier "<default monitor>" + DisplaySize 245 184 EndSection Section "Screen" - Identifier "Default Screen Section" - Monitor "<default monitor<" + Identifier "Default Screen Section" + Monitor "<default monitor<" EndSection Section "InputDevice" - Identifier "WTouch" - Driver "wacom" - Option "Device" "/dev/ttyS0" + Identifier "WTouch" + Driver "wacom" + Option "Device" "/dev/ttyS0" # Option "DebugLevel" "12" - Option "BaudRate" "38400" - Option "Type" "touch" - Option "Touch" "on" - Option "Gesture" "on" - Option "ForceDevice" "ISDV4" + Option "BaudRate" "38400" + Option "Type" "touch" + Option "Touch" "on" + Option "Gesture" "on" + Option "ForceDevice" "ISDV4" # Option "KeepShape" "on" - Option "Mode" "Absolute" - Option "RawSample" "2" + Option "Mode" "Absolute" + Option "RawSample" "2" # Option "TPCButton" "off" - Option "TopX" "17" - Option "TopY" "53" - Option "BottomX" "961" - Option "BottomY" "985" + Option "TopX" "17" + Option "TopY" "53" + Option "BottomX" "961" + Option "BottomY" "985" EndSection Section "ServerLayout" @@ -210,310 +218,332 @@ EndSection </pre> - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> - - <h1 id="supported_t60_list">Supported T60 list</h1> - - <p> - Native gpu initialization ('native graphics') which replaces the proprietary VGA Option ROM - ('<a href="https://en.wikipedia.org/wiki/Video_BIOS">Video BIOS</a>' or 'VBIOS'). - </p> + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> - <p> - To find what LCD panel you have, see: <a href="../misc/index.html#get_edid_panelname">../misc/index.html#get_edid_panelname</a>. - </p> + <div class="section"> - <p> - <b> - Some T60s have ATI GPUs, and all T60P laptops have ATI GPUs These are incompatible! See <a href="#t60_ati_intel">#t60_ati_intel</a> for how to remedy this. - </b> - </p> + <h2 id="supported_t60_list">Supported T60 list</h2> - <p> - How to dump the EDID:<br/> - - </p> + <p> + Native gpu initialization ('native graphics') which replaces the proprietary VGA Option ROM + ('<a href="https://en.wikipedia.org/wiki/Video_BIOS">Video BIOS</a>' or 'VBIOS'). + </p> - <p> - Tested LCD panels: <b>working(compatible)</b> - </p> - <ul> - <li>TMD-Toshiba LTD141EN9B (14.1" 1400x1050) (FRU P/N 41W1478 recommended for the inverter board)</li> - <li>Samsung LTN141P4-L02 (14.1" 1400x1050) (FRU P/N 41W1478 recommended for the inverter board)</li> - <li>LG-Philips LP150E05-A2K1 (15.1" 1400x1050) (P/N 42T0078 FRU 42T0079 or P/N 41W1338 recommended for the inverter board)</li> - <li>Samsung LTN150P4-L01 (15.1" 1400x1050) (P/N 42T0078 FRU 42T0079 or P/N 41W1338 recommended for the inverter board) (not a T60 screen afaik, but it works)</li> - <li>BOE-Hydis HV150UX1-100 (15.1" 1600x1200) (P/N 42T0078 FRU 42T0079 or P/N 41W1338 recommended for the inverter board)</li> - </ul> + <p> + To find what LCD panel you have, see: <a href="../misc/index.html#get_edid_panelname">../misc/index.html#get_edid_panelname</a>. + </p> - <div class="important"> + <p> + <b> + Some T60s have ATI GPUs, and all T60P laptops have ATI GPUs These are incompatible! See <a href="#t60_ati_intel">#t60_ati_intel</a> for how to remedy this. + </b> + </p> <p> - Tested LCD panels: <b>not working yet (incompatible; see <a href="../future/index.html#lcd_i945_incompatibility">../future/index.html#lcd_i945_incompatibility</a>)</b> + How to dump the EDID:<br/> + </p> - <ul> - <li>Samsung LTN141XA-L01 (14.1" 1024x768)</li> - <li>LG-Philips LP150X09 (15.1" 1024x768)</li> - <li>Samsung LTN150XG (15.1" 1024x768) - <a href="../future/dumps/LTN150XG_edid">EDID dump</a> (taken using <b>sudo i2cdump -y 5 0x50</b>)</li> - <li>LG-Philips LP150E06-A5K4 (15.1" 1400x1050) (also, not an official T60 screen)</li> - <li>Samsung LTN154X3-L0A (15.4" 1280x800)</li> - <li>IDtech IAQX10N (15.1" 2048x1536) (no display in GRUB, display in GNU/Linux is temperamental) (P/N 42T0078 FRU 42T0079 or P/N 41W1338 recommended for the inverter board)</li> - </ul> <p> - <u><i>The following LCD panels are <b>UNTESTED</b>. If you have one of these panels - then please submit a report!</i></u>: + Tested LCD panels: <b>working(compatible)</b> </p> <ul> - <li>CMO(IDtech?) N141XC (14.1" 1024x768)</li> - <li>BOE-Hydis HT14X14 (14.1" 1024x768)</li> - <li>TMD-Toshiba LTD141ECMB (14.1" 1024x768)</li> - <li>Boe-Hydis HT14P12 (14.1" 1400x1050) (FRU P/N 41W1478 recommended for the inverter board)</li> - <li>CMO (IDtech?) 13N7068 (15.1" 1024x768)</li> - <li>CMO (IDtech?) 13N7069 (15.1" 1024x768)</li> - <li>BOE-Hydis HV150P01-100 (15.1" 1400x1050) (P/N 42T0078 FRU 42T0079 or P/N 41W1338 recommended for the inverter board)</li> - <li>IDtech N150U3-L01 (15.1" 1600x1200) (P/N 42T0078 FRU 42T0079 or P/N 41W1338 recommended for the inverter board)</li> - <li>BOE-Hydis HV150UX1-102 (15.1" 1600x1200) (P/N 42T0078 FRU 42T0079 or P/N 41W1338 recommended for the inverter board)</li> - <li>IDtech IAQX10S (15.1" 2048x1536) (P/N 42T0078 FRU 42T0079 or P/N 41W1338 recommended for the inverter board)</li> - <li>Samsung LTN154P2-L05 (42X4641 42T0329) (15.4" 1680x1050)</li> - <li>LG-Philips LP154W02-TL10 (13N7020 42T0423) (15.4" 1680x1050)</li> - <li>LG-Philips LP154WU1-TLB1 (42T0361) (15.4" 1920x1200) <b>(for T61p but it might work in T60. Unknown!)</b></li> - <li>Samsung LTN154U2-L05 (42T0408 42T0574) (15.4" 1920x1200) <b>(for T61p but it might work in T60. Unknown!)</b></li> + <li>TMD-Toshiba LTD141EN9B (14.1" 1400x1050) (FRU P/N 41W1478 recommended for the inverter board)</li> + <li>Samsung LTN141P4-L02 (14.1" 1400x1050) (FRU P/N 41W1478 recommended for the inverter board)</li> + <li>LG-Philips LP150E05-A2K1 (15.1" 1400x1050) (P/N 42T0078 FRU 42T0079 or P/N 41W1338 recommended for the inverter board)</li> + <li>Samsung LTN150P4-L01 (15.1" 1400x1050) (P/N 42T0078 FRU 42T0079 or P/N 41W1338 recommended for the inverter board) (not a T60 screen afaik, but it works)</li> + <li>BOE-Hydis HV150UX1-100 (15.1" 1600x1200) (P/N 42T0078 FRU 42T0079 or P/N 41W1338 recommended for the inverter board)</li> </ul> - <p> - It is unknown whether the 1680x1050 (15.4") and 1920x1200 (15.4") panels use a different inverter board than the 1280x800 panels. - </p> + <div class="subsection"> - <p> - The T60 typically comes with an Intel wifi chipset which does not work at all without proprietary firmware, and while Lenovo BIOS is running - the machine will refuse to boot if you replace the card. Fortunately it is very easily replaced; - just remove the card and install another one <b>after</b> libreboot is installed. See <a href="#recommended_wifi">#recommended_wifi</a> for replacements. - </p> + <p> + Tested LCD panels: <b>not working yet (incompatible; see <a href="../future/index.html#lcd_i945_incompatibility">../future/index.html#lcd_i945_incompatibility</a>)</b> + </p> + <ul> + <li>Samsung LTN141XA-L01 (14.1" 1024x768)</li> + <li>LG-Philips LP150X09 (15.1" 1024x768)</li> + <li>Samsung LTN150XG (15.1" 1024x768) - <a href="../future/dumps/LTN150XG_edid">EDID dump</a> (taken using <b>sudo i2cdump -y 5 0x50</b>)</li> + <li>LG-Philips LP150E06-A5K4 (15.1" 1400x1050) (also, not an official T60 screen)</li> + <li>Samsung LTN154X3-L0A (15.4" 1280x800)</li> + <li>IDtech IAQX10N (15.1" 2048x1536) (no display in GRUB, display in GNU/Linux is temperamental) (P/N 42T0078 FRU 42T0079 or P/N 41W1338 recommended for the inverter board)</li> + </ul> - </div> + </div> + + <div class="subsection"> - <p><a href="#pagetop">Back to top of page.</a></p> + <p> + <u><i>The following LCD panels are <b>UNTESTED</b>. If you have one of these panels + then please submit a report!</i></u>: + </p> + <ul> + <li>CMO(IDtech?) N141XC (14.1" 1024x768)</li> + <li>BOE-Hydis HT14X14 (14.1" 1024x768)</li> + <li>TMD-Toshiba LTD141ECMB (14.1" 1024x768)</li> + <li>Boe-Hydis HT14P12 (14.1" 1400x1050) (FRU P/N 41W1478 recommended for the inverter board)</li> + <li>CMO (IDtech?) 13N7068 (15.1" 1024x768)</li> + <li>CMO (IDtech?) 13N7069 (15.1" 1024x768)</li> + <li>BOE-Hydis HV150P01-100 (15.1" 1400x1050) (P/N 42T0078 FRU 42T0079 or P/N 41W1338 recommended for the inverter board)</li> + <li>IDtech N150U3-L01 (15.1" 1600x1200) (P/N 42T0078 FRU 42T0079 or P/N 41W1338 recommended for the inverter board)</li> + <li>BOE-Hydis HV150UX1-102 (15.1" 1600x1200) (P/N 42T0078 FRU 42T0079 or P/N 41W1338 recommended for the inverter board)</li> + <li>IDtech IAQX10S (15.1" 2048x1536) (P/N 42T0078 FRU 42T0079 or P/N 41W1338 recommended for the inverter board)</li> + <li>Samsung LTN154P2-L05 (42X4641 42T0329) (15.4" 1680x1050)</li> + <li>LG-Philips LP154W02-TL10 (13N7020 42T0423) (15.4" 1680x1050)</li> + <li>LG-Philips LP154WU1-TLB1 (42T0361) (15.4" 1920x1200) <b>(for T61p but it might work in T60. Unknown!)</b></li> + <li>Samsung LTN154U2-L05 (42T0408 42T0574) (15.4" 1920x1200) <b>(for T61p but it might work in T60. Unknown!)</b></li> + </ul> -<hr/> + <p> + It is unknown whether the 1680x1050 (15.4") and 1920x1200 (15.4") panels use a different inverter board than the 1280x800 panels. + </p> - <h1 id="t60_ati_intel">ThinkPad T60 (ATI GPU) and ThinkPad T60 (Intel GPU) differences.</h1> + <p> + The T60 typically comes with an Intel wifi chipset which does not work at all without proprietary firmware, and while Lenovo BIOS is running + the machine will refuse to boot if you replace the card. Fortunately it is very easily replaced; + just remove the card and install another one <b>after</b> libreboot is installed. See <a href="#recommended_wifi">#recommended_wifi</a> for replacements. + </p> - <p> - If your T60 is a 14.1" or 15.1" model with an ATI GPU, it won't work with libreboot by default but - you can replace the motherboard with another T60 motherboard that has an Intel GPU, and then libreboot should work. - </p> + </div> - <p> - As far as I know, 14.1" (Intel GPU) and 15.1" (Intel GPU) T60 motherboards are the same, where - 'spacers' are used on the 15.1" T60. In any case, it makes sense to find one that is guaranteed to fit in your chassis. - </p> + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> - <p> - There is also a 15.4" T60 with Intel GPU. - </p> + <div class="section"> - <p> - Note: the T60<b>p</b> laptops all have ATI graphics. - The T60p laptops cannot be used with libreboot under any circumstances. - </p> + <h2 id="t60_ati_intel">ThinkPad T60 (ATI GPU) and ThinkPad T60 (Intel GPU) differences.</h2> - <p> - The following T60 motherboard (see area highlighted in white) shows an empty space where the ATI GPU would be (this particular motherboard has an Intel GPU):<br/> - <img src="../images/t60_dev/t60_unbrick.jpg" alt="" /> - </p> + <p> + If your T60 is a 14.1" or 15.1" model with an ATI GPU, it won't work with libreboot by default but + you can replace the motherboard with another T60 motherboard that has an Intel GPU, and then libreboot should work. + </p> - <p> - The reason that the ATI GPU on T60 is unsupported is due to the VBIOS (Video BIOS) which is non-free. - The VBIOS for the Intel GPU on X60/T60 has been reverse engineered, and replaced with Free Software and - so will work in libreboot. - </p> + <p> + As far as I know, 14.1" (Intel GPU) and 15.1" (Intel GPU) T60 motherboards are the same, where + 'spacers' are used on the 15.1" T60. In any case, it makes sense to find one that is guaranteed to fit in your chassis. + </p> - <p> - The 'Video BIOS' is what initializes graphics. - </p> + <p> + There is also a 15.4" T60 with Intel GPU. + </p> - <p> - See: <a href="https://en.wikipedia.org/wiki/Video_BIOS">https://en.wikipedia.org/wiki/Video_BIOS</a>.<br/> - In fact, lack of free VBIOS in general is a big problem in coreboot, and is one reason (among others) why many ports for coreboot are - unsuitable for libreboot's purpose. - </p> + <p> + Note: the T60<b>p</b> laptops all have ATI graphics. + The T60p laptops cannot be used with libreboot under any circumstances. + </p> - <p> - Theoretically, the ThinkPad T60 with ATI GPU can work with libreboot and have ROM images compiled for it, however - in practise it would not be usable as a laptop because there would be no visual display at all. That being said, - such a configuration is acceptable for use in a 'headless' server setup (with serial and/or ssh console as the display). - </p> + <p> + The following T60 motherboard (see area highlighted in white) shows an empty space where the ATI GPU would be (this particular motherboard has an Intel GPU):<br/><br/> + <img src="../images/t60_dev/t60_unbrick.jpg" alt="" /> + </p> - <p><a href="#pagetop">Back to top of page.</a></p> + <p> + The reason that the ATI GPU on T60 is unsupported is due to the VBIOS (Video BIOS) which is non-free. + The VBIOS for the Intel GPU on X60/T60 has been reverse engineered, and replaced with Free Software and + so will work in libreboot. + </p> -<hr/> + <p> + The 'Video BIOS' is what initializes graphics. + </p> - <h1 id="macbook11">Information about the macbook1,1</h1> + <p> + See: <a href="https://en.wikipedia.org/wiki/Video_BIOS">https://en.wikipedia.org/wiki/Video_BIOS</a>.<br/> + In fact, lack of free VBIOS in general is a big problem in coreboot, and is one reason (among others) why many ports for coreboot are + unsuitable for libreboot's purpose. + </p> - <p> - There is an Apple laptop called the macbook1,1 from 2006 which uses the same i945 chipset as the ThinkPad X60/T60. - A developer ported the <a href="#macbook21">MacBook2,1</a> to coreboot, the ROM images also work on the macbook1,1. - </p> + <p> + Theoretically, the ThinkPad T60 with ATI GPU can work with libreboot and have ROM images compiled for it, however + in practise it would not be usable as a laptop because there would be no visual display at all. That being said, + such a configuration is acceptable for use in a 'headless' server setup (with serial and/or ssh console as the display). + </p> - <p> - You can refer to <a href="#macbook21">#macbook21</a> for most of this. Macbook2,1 laptops come with Core 2 Duo processors - which support 64-bit operating systems (and 32-bit). The MacBook1,1 uses Core Duo processors (supports 32-bit OS but not 64-bit), - and it is believed that this is the only difference. - </p> + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> - <p> - It is believed that all models are compatible, listed here: - </p> - <ul> - <li><a href="http://www.everymac.com/ultimate-mac-lookup/?search_keywords=MacBook1,1">http://www.everymac.com/ultimate-mac-lookup/?search_keywords=MacBook1,1</a></li> - </ul> + <div class="section"> + + <h2 id="macbook11">Information about the macbook1,1</h2> - <h2> - Compatible models - </h2> <p> - Specifically (Order No. / Model No. / CPU): + There is an Apple laptop called the macbook1,1 from 2006 which uses the same i945 chipset as the ThinkPad X60/T60. + A developer ported the <a href="#macbook21">MacBook2,1</a> to coreboot, the ROM images also work on the macbook1,1. + </p> + + <p> + You can refer to <a href="#macbook21">#macbook21</a> for most of this. Macbook2,1 laptops come with Core 2 Duo processors + which support 64-bit operating systems (and 32-bit). The MacBook1,1 uses Core Duo processors (supports 32-bit OS but not 64-bit), + and it is believed that this is the only difference. + </p> + + <p> + It is believed that all models are compatible, listed here: </p> <ul> - <li>MA255LL/A / A1181 (EMC 2092) / Core Duo T2500 <b>(tested - working)</b></li> - <li>MA254LL/A / A1181 (EMC 2092) / Core Duo T2400 (untested)</li> - <li>MA472LL/A / A1181 (EMC 2092) / Core Duo T2500 (untested)</li> + <li><a href="http://www.everymac.com/ultimate-mac-lookup/?search_keywords=MacBook1,1">http://www.everymac.com/ultimate-mac-lookup/?search_keywords=MacBook1,1</a></li> </ul> + + <div class="subsection"> + <h3> + Compatible models + </h3> + <p> + Specifically (Order No. / Model No. / CPU): + </p> + <ul> + <li>MA255LL/A / A1181 (EMC 2092) / Core Duo T2500 <b>(tested - working)</b></li> + <li>MA254LL/A / A1181 (EMC 2092) / Core Duo T2400 (untested)</li> + <li>MA472LL/A / A1181 (EMC 2092) / Core Duo T2500 (untested)</li> + </ul> + </div> - <p> - Also of interest: <a href="../git/index.html#config_macbook21">../git/index.html#config_macbook21</a>. - </p> - - <p> - Unbricking: <a href="https://www.ifixit.com/Device/MacBook_Core_2_Duo">this page shows disassembly guides</a> and mono's page (see <a href="#macbook21">#macbook21</a>) - shows the location of the SPI flash chip on the motherboard. <a href="https://www.ifixit.com/Guide/MacBook+Core+2+Duo+PRAM+Battery+Replacement/529">How to remove the motherboard</a>. - </p> + <p> + Also of interest: <a href="../git/index.html#config_macbook21">../git/index.html#config_macbook21</a>. + </p> - <p> - No method is yet known for flashing in GNU/Linux while the Apple firmware is running. You will need to disassemble the machine and flash externally. - Reading from flash seems to work. For external flashing, refer to <a href="../install/bbb_setup.html">../install/bbb_setup.html</a>. - </p> + <p> + Unbricking: <a href="https://www.ifixit.com/Device/MacBook_Core_2_Duo">this page shows disassembly guides</a> and mono's page (see <a href="#macbook21">#macbook21</a>) + shows the location of the SPI flash chip on the motherboard. <a href="https://www.ifixit.com/Guide/MacBook+Core+2+Duo+PRAM+Battery+Replacement/529">How to remove the motherboard</a>. + </p> - <p><a href="#pagetop">Back to top of page.</a></p> + <p> + No method is yet known for flashing in GNU/Linux while the Apple firmware is running. You will need to disassemble the machine and flash externally. + Reading from flash seems to work. For external flashing, refer to <a href="../install/bbb_setup.html">../install/bbb_setup.html</a>. + </p> -<hr/> + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> - <h1 id="macbook21">Information about the macbook2,1</h1> + <div class="section"> - <p> - There is an Apple laptop called the macbook2,1 from late 2006 or early 2007 that uses the same i945 chipset - as the ThinkPad X60 and ThinkPad T60. A developer ported coreboot to his macbook2,1, and now libreboot can run on it. - </p> - <p> - Mono Moosbart is the person who wrote the port for macbook2,1. Referenced below are copies (up to date at the time of writing, 20140630) - of the pages he wrote when porting coreboot to the macbook2,1. They are included here in case the main site goes down for - whatever reason, since they include a lot of useful information. - </p> - <p> - Backups created using wget:<br/> - <b>$ wget -m -p -E -k -K -np http://macbook.donderklumpen.de/</b><br/> - <b>$ wget -m -p -E -k -K -np http://macbook.donderklumpen.de/coreboot/</b><br/> - Use <b>-e robots=off</b> if using this trick for other sites and the site restricts using robots.txt - </p> + <h2 id="macbook21">Information about the macbook2,1</h2> - <p> - <b>Links to wget backups (and the backups themselves) of Mono's pages (see above) removed temporarily. Mono has given me permission to distribute them, but I need to ask - him to tell me what license these works fall under first. Otherwise, the above URLs should be fine. NOTE TO SELF: REMOVE THIS WHEN DONE</b> - </p> + <p> + There is an Apple laptop called the macbook2,1 from late 2006 or early 2007 that uses the same i945 chipset + as the ThinkPad X60 and ThinkPad T60. A developer ported coreboot to his macbook2,1, and now libreboot can run on it. + </p> + <p> + Mono Moosbart is the person who wrote the port for macbook2,1. Referenced below are copies (up to date at the time of writing, 20140630) + of the pages he wrote when porting coreboot to the macbook2,1. They are included here in case the main site goes down for + whatever reason, since they include a lot of useful information. + </p> + <p> + Backups created using wget:<br/> + <b>$ wget -m -p -E -k -K -np http://macbook.donderklumpen.de/</b><br/> + <b>$ wget -m -p -E -k -K -np http://macbook.donderklumpen.de/coreboot/</b><br/> + Use <b>-e robots=off</b> if using this trick for other sites and the site restricts using robots.txt + </p> - <h2> - Installing GNU/Linux distributions (on Apple EFI firmware) - </h2> - <ul> - <li><a href="#">Parabola GNU/Linux installation on a macbook2,1 with Apple EFI firmware</a> (this is a copy of Mono's page, see above)</li> - </ul> <p> - How to boot an ISO: burn it to a CD (like you would normally) and hold down the Alt/Control key while booting. - The bootloader will detect the GNU/Linux CD as 'Windows' (because Apple doesn't think GNU/Linux exists). Install it like you normally would. - When you boot up again, hold Alt/Control once more. The installation (on the HDD) will once again be seen as 'Windows'. (it's not actually Windows, - but Apple likes to think that Apple and Microsoft are all that exist.) - Now to install libreboot, follow <a href="../install/index.html#flashrom_macbook21">../install/index.html#flashrom_macbook21</a>. + <b>Links to wget backups (and the backups themselves) of Mono's pages (see above) removed temporarily. Mono has given me permission to distribute them, but I need to ask + him to tell me what license these works fall under first. Otherwise, the above URLs should be fine. NOTE TO SELF: REMOVE THIS WHEN DONE</b> </p> - <h2> - Information about coreboot - </h2> - <ul> - <li><a href="#">Coreboot on the macbook2,1</a> (this is a copy of Mono's page, see above)</li> - </ul> + <div class="subsection"> + <h3> + Installing GNU/Linux distributions (on Apple EFI firmware) + </h3> + <ul> + <li><a href="#">Parabola GNU/Linux installation on a macbook2,1 with Apple EFI firmware</a> (this is a copy of Mono's page, see above)</li> + </ul> + <p> + How to boot an ISO: burn it to a CD (like you would normally) and hold down the Alt/Control key while booting. + The bootloader will detect the GNU/Linux CD as 'Windows' (because Apple doesn't think GNU/Linux exists). Install it like you normally would. + When you boot up again, hold Alt/Control once more. The installation (on the HDD) will once again be seen as 'Windows'. (it's not actually Windows, + but Apple likes to think that Apple and Microsoft are all that exist.) + Now to install libreboot, follow <a href="../install/index.html#flashrom_macbook21">../install/index.html#flashrom_macbook21</a>. + </p> + </div> + + <div class="subsection"> + <h3> + Information about coreboot + </h3> + <ul> + <li><a href="#">Coreboot on the macbook2,1</a> (this is a copy of Mono's page, see above)</li> + </ul> + </div> - <h2> - coreboot wiki page - </h2> - <ul> - <li><a href="http://www.coreboot.org/Board:apple/macbook21">http://www.coreboot.org/Board:apple/macbook21</a></li> - </ul> + <div class="subsection"> + <h3> + coreboot wiki page + </h3> + <ul> + <li><a href="http://www.coreboot.org/Board:apple/macbook21">http://www.coreboot.org/Board:apple/macbook21</a></li> + </ul> + </div> + + <div class="subsection"> + <h3> + Compatible models + </h3> + <p> + It is believed that all models are compatible, listed here: + </p> + <ul> + <li><a href="http://www.everymac.com/ultimate-mac-lookup/?search_keywords=MacBook2,1">http://www.everymac.com/ultimate-mac-lookup/?search_keywords=MacBook2,1</a></li> + </ul> + <p> + Specifically (Order No. / Model No. / CPU): + </p> + <ul> + <li>MA699LL/A / A1181 (EMC 2121) / Intel Core 2 Duo T5600 <b>(tested - working)</b></li> + <li>MA701LL/A / A1181 (EMC 2121) / Intel Core 2 Duo T7200 <b>(tested - working)</b></li> + <li>MB061LL/A / A1181 (EMC 2139) / Intel Core 2 Duo T7200 (untested)</li> + <li>MA700LL/A / A1181 (EMC 2121) / Intel Core 2 Duo T7200 <b>(tested - working)</b></li> + <li>MB063LL/A / A1181 (EMC 2139) / Intel Core 2 Duo T7400 (untested)</li> + <li>MB062LL/A / A1181 (EMC 2139) / Intel Core 2 Duo T7400 <b>(tested - working)</b></li> + </ul> + </div> - <h2> - Compatible models - </h2> <p> - It is believed that all models are compatible, listed here: + Also of interest: <a href="../git/index.html#config_macbook21">../git/index.html#config_macbook21</a>. </p> - <ul> - <li><a href="http://www.everymac.com/ultimate-mac-lookup/?search_keywords=MacBook2,1">http://www.everymac.com/ultimate-mac-lookup/?search_keywords=MacBook2,1</a></li> - </ul> + <p> - Specifically (Order No. / Model No. / CPU): + Unbricking: <a href="https://www.ifixit.com/Device/MacBook_Core_2_Duo">this page shows disassembly guides</a> and mono's page (see above) + shows the location of the SPI flash chip on the motherboard. <a href="https://www.ifixit.com/Guide/MacBook+Core+2+Duo+PRAM+Battery+Replacement/529">How to remove the motherboard</a>. </p> - <ul> - <li>MA699LL/A / A1181 (EMC 2121) / Intel Core 2 Duo T5600 <b>(tested - working)</b></li> - <li>MA701LL/A / A1181 (EMC 2121) / Intel Core 2 Duo T7200 <b>(tested - working)</b></li> - <li>MB061LL/A / A1181 (EMC 2139) / Intel Core 2 Duo T7200 (untested)</li> - <li>MA700LL/A / A1181 (EMC 2121) / Intel Core 2 Duo T7200 <b>(tested - working)</b></li> - <li>MB063LL/A / A1181 (EMC 2139) / Intel Core 2 Duo T7400 (untested)</li> - <li>MB062LL/A / A1181 (EMC 2139) / Intel Core 2 Duo T7400 <b>(tested - working)</b></li> - </ul> - - <p> - Also of interest: <a href="../git/index.html#config_macbook21">../git/index.html#config_macbook21</a>. - </p> - - <p> - Unbricking: <a href="https://www.ifixit.com/Device/MacBook_Core_2_Duo">this page shows disassembly guides</a> and mono's page (see above) - shows the location of the SPI flash chip on the motherboard. <a href="https://www.ifixit.com/Guide/MacBook+Core+2+Duo+PRAM+Battery+Replacement/529">How to remove the motherboard</a>. - </p> - <p> - For external flashing, refer to <a href="../install/bbb_setup.html">../install/bbb_setup.html</a>. - </p> + <p> + For external flashing, refer to <a href="../install/bbb_setup.html">../install/bbb_setup.html</a>. + </p> - <p> - You need to replace OS X with GNU/Linux before flashing libreboot. (OSX won't run at all in libreboot). - </p> + <p> + You need to replace OS X with GNU/Linux before flashing libreboot. (OSX won't run at all in libreboot). + </p> - <p> - There are some issues with this machine (compared to other computers that libreboot supports): - </p> + <p> + There are some issues with this machine (compared to other computers that libreboot supports): + </p> - <p> - This is an apple laptop, so it comes with OS X: it has an Apple keyboard, which means that certain keys you expect are missing: - insert, del, home, end, pgup, pgdown. There is also one mouse button only. Battery life is poor compared to X60/T60 (for now). - It also has other issues: for example, the Apple logo on the back is a hole, exposing the backlight, which means that it glows. You should cover it up. - </p> + <p> + This is an apple laptop, so it comes with OS X: it has an Apple keyboard, which means that certain keys you expect are missing: + insert, del, home, end, pgup, pgdown. There is also one mouse button only. Battery life is poor compared to X60/T60 (for now). + It also has other issues: for example, the Apple logo on the back is a hole, exposing the backlight, which means that it glows. You should cover it up. + </p> - <p> - The machine does get a bit hotter compared to when running the original firmware. It is certainly hotter - than an X60/T60. The heat issues have been partially fixed by the following patch (now merged in libreboot): - <a href="http://review.coreboot.org/#/c/7923/">http://review.coreboot.org/#/c/7923/</a>. - </p> + <p> + The machine does get a bit hotter compared to when running the original firmware. It is certainly hotter + than an X60/T60. The heat issues have been partially fixed by the following patch (now merged in libreboot): + <a href="http://review.coreboot.org/#/c/7923/">http://review.coreboot.org/#/c/7923/</a>. + </p> - <p> - <b> - The MacBook2,1 comes with a webcam, which does not work without proprietary software. Also, webcams are a security risk; cover it up! Or remove it. - </b> - </p> + <p> + <b> + The MacBook2,1 comes with a webcam, which does not work without proprietary software. Also, webcams are a security risk; cover it up! Or remove it. + </b> + </p> - <p> - A user reported that they could get better response from the touchpad with the following in their xorg.conf: - </p> + <p> + A user reported that they could get better response from the touchpad with the following in their xorg.conf: + </p> <pre> Section "InputClass" @@ -558,21 +588,25 @@ Section "InputClass" EndSection </pre> - <p><a href="#pagetop">Back to top of page.</a></p> + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> -<hr/> + <div class="section"> - <p> - Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. + </p> - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../../license.txt</a> for more information. - </p> + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. + </p> + + </div> </body> </html> diff --git a/docs/hcl/x200.html b/docs/hcl/x200.html index 3aa1963d..0435efce 100644 --- a/docs/hcl/x200.html +++ b/docs/hcl/x200.html @@ -13,38 +13,39 @@ <body> - <h1 id="pagetop">ThinkPad X200</h1> - <p> - Or <a href="index.html">back to main index</a>. - </p> - - <p> - It is believed that all X200 laptops are compatible. X200S and X200 Tablet will - also work, <a href="#x200s">depending on the configuration</a>. - </p> - <p> - It *might* be possible to put an X200 motherboard in an X201 chassis, though this is currently untested - by the libreboot project. The same may also apply between X200S and X201S; again, this is untested. - <b>It's most likely true.</b> - </p> - - <p> - There are two possible flash chip sizes for the X200: 4MiB (32Mbit) or 8MiB (64Mbit). - This can be identified by the type of flash chip below the palmrest: 4MiB is SOIC-8, 8MiB - is SOIC-16. - </p> - - <p> - <b>The X200 laptops come with the ME (and sometimes AMT in addition) before flashing libreboot. Libreboot disables and removes it - by using a modified descriptor: see <a href="x200_remove_me.html">x200_remove_me.html</a></b> (contains notes, plus - instructions) - </p> - - <p> - Flashing instructions can be found at <a href="../install/index.html#flashrom">../install/index.html#flashrom</a> - </p> + <div class="section"> + <h1 id="pagetop">ThinkPad X200</h1> + + <p> + It is believed that all X200 laptops are compatible. X200S and X200 Tablet will + also work, <a href="#x200s">depending on the configuration</a>. + </p> + <p> + It *might* be possible to put an X200 motherboard in an X201 chassis, though this is currently untested + by the libreboot project. The same may also apply between X200S and X201S; again, this is untested. + <b>It's most likely true.</b> + </p> + + <p> + There are two possible flash chip sizes for the X200: 4MiB (32Mbit) or 8MiB (64Mbit). + This can be identified by the type of flash chip below the palmrest: 4MiB is SOIC-8, 8MiB + is SOIC-16. + </p> + + <p> + <b>The X200 laptops come with the ME (and sometimes AMT in addition) before flashing libreboot. Libreboot disables and removes it + by using a modified descriptor: see <a href="x200_remove_me.html">x200_remove_me.html</a></b> (contains notes, plus + instructions) + </p> -<hr/> + <p> + Flashing instructions can be found at <a href="../install/index.html#flashrom">../install/index.html#flashrom</a> + </p> + + <p> + <a href="index.html">Back to previous index</a>. + </p> + </div> <div class="section"> @@ -68,22 +69,22 @@ non-descriptor mode would wipe it out). </p> - <h3 id="hwvirt">Hardware virtualization (vt-x)</h3> - <p> - The X200, when run without CPU microcode updates in coreboot, currently kernel panics - if running QEMU with vt-x enabled on 2 cores for the guest. With a single core enabled - for the guest, the guest panics (but the host is fine). Working around this in QEMU - might be possible; if not, software virtualization should work fine (it's just slower). - </p> - <p> - The following errata datasheet from Intel might help with investigation: - <a href="http://download.intel.com/design/mobile/specupdt/320121.pdf">http://download.intel.com/design/mobile/specupdt/320121.pdf</a> - </p> + <div class="subsection"> + <h3 id="hwvirt">Hardware virtualization (vt-x)</h3> + <p> + The X200, when run without CPU microcode updates in coreboot, currently kernel panics + if running QEMU with vt-x enabled on 2 cores for the guest. With a single core enabled + for the guest, the guest panics (but the host is fine). Working around this in QEMU + might be possible; if not, software virtualization should work fine (it's just slower). + </p> + <p> + The following errata datasheet from Intel might help with investigation: + <a href="http://download.intel.com/design/mobile/specupdt/320121.pdf">http://download.intel.com/design/mobile/specupdt/320121.pdf</a> + </p> + </div> </div> -<hr/> - <div class="section"> <h2 id="x200s">X200S and X200 Tablet.</h2> @@ -140,140 +141,146 @@ src or git). </p> - <h3 id="x200s_raminit">Proper GS45 raminit</h3> - <p> - A new northbridge gs45 should be added to coreboot, based on gm45, - and a new port x200st (X200S and X200T) should be added based on - the x200 port. - </p> - <p> - This port would have proper raminit. Alternatively, gs45 (if - raminit is taken to be the only issue with it) can be part of - gm45 northbridge support (and X200S/Tablet being part of the X200 - port) with conditional checks in the raminit that make raminit - work differently (as required) for GS45. nico_h and pgeorgi/patrickg - in the coreboot IRC channel should know more about raminit on gm45 - and likely gs45. - </p> - <p> - pgeorgi recommends to run SerialICE on the factory BIOS (for X200S), - comparing it with X200 (factory BIOS) and X200 (gm45 raminit code - in coreboot), to see what the differences are. Then tweak raminit - code based on that. - </p> + <div class="subsection"> + <h3 id="x200s_raminit">Proper GS45 raminit</h3> + <p> + A new northbridge gs45 should be added to coreboot, based on gm45, + and a new port x200st (X200S and X200T) should be added based on + the x200 port. + </p> + <p> + This port would have proper raminit. Alternatively, gs45 (if + raminit is taken to be the only issue with it) can be part of + gm45 northbridge support (and X200S/Tablet being part of the X200 + port) with conditional checks in the raminit that make raminit + work differently (as required) for GS45. nico_h and pgeorgi/patrickg + in the coreboot IRC channel should know more about raminit on gm45 + and likely gs45. + </p> + <p> + pgeorgi recommends to run SerialICE on the factory BIOS (for X200S), + comparing it with X200 (factory BIOS) and X200 (gm45 raminit code + in coreboot), to see what the differences are. Then tweak raminit + code based on that. + </p> + </div> </div> + + <div class="section"> -<hr/> - - <h1 id="lcd_supported_list">LCD compatibility list</h1> - <p> - Unless otherwise noted (italic styling, underlined), these are CCFL 1280x800 screens with TN panels inside. - Please do advise if you spot mistakes here. - </p> - <p> - Use the instructions at <a href="../misc/index.html#get_edid_panelname">../misc/index.html#get_edid_panelname</a> - to get the name of your panel, then check it against the list below. If your panel is untested, then by all means - try it! (and get in touch with the libreboot project to advise whether or not it worked). - </p> - <p> - AUO = AU Optronics. List of panels below based on - <a href="http://www.thinkwiki.org/wiki/TFT_display">http://www.thinkwiki.org/wiki/TFT_display</a> - </p> - <p> - Tested LCD panels (confirmed working): - </p> - <ul> - <li>X200/X200S: LG-Philips LP121WX3-TLC1 (sgsit on IRC has this panel) (LED backlight)</li> - <li>X200/X200S: Samsung LTN121AT03 (phcoder on IRC has this panel)</li> - <li>X200/X200S: AUO B121EW03 V.6 (fchmmr on IRC has this panel)</li> - <li>X200S: TMD-Toshiba LTD121EQ3B (1440x900 resolution) (LED backlight) (sgsit on IRC has this panel)</li> - </ul> - <p> - Untested LCD panels (status unknown): - </p> - <ul> - <li>X200 Tablet: TMD-Toshiba LTD121KX6B (LED backlight)</li> - <li>X200/X200S: TMD-Toshiba LTD121EWVB</li> - <li>X200/X200S: AOU B121EW09 V.2 (LED backlight)</li> - <li>X200/X200S: FRU 42T0715 (no manufacturer/model given) (LED backlight)</li> - <li>X200/X200S: LG-Philips LP121WX3-TLA1 (LED backlight)</li> - <li>X200/X200S: 42T0713 FRU (no model/manufacturer given) (LED backlight)</li> - </ul> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> - - <h2 id="ips"> - AFFS/IPS panels - </h2> - <h3>X200</h3> - <p> - Adapted from <a href="https://github.com/bibanon/Coreboot-ThinkPads/wiki/ThinkPad-X200">https://github.com/bibanon/Coreboot-ThinkPads/wiki/ThinkPad-X200</a> - </p> - <p> - Look at wikipedia for difference between TN and IPS panels. IPS have much better colour/contrast than - a regular TN, and will typically have good viewing angles. - </p> - <p> - These seem to be from the X200 tablet. You need to find one without the glass touchscreen protection on it - (might be able to remove it, though). It also must not have a digitizer on it (again, might be possible to - just simply remove the digitizer). - </p> - <ul> - <li>BOE-Hydis HV121WX4-120, HV121WX4-110 or HV121WX4-100 - cheap-ish, might be hard to find</li> - <li>Samsung LTN121AP02-001 - common to find, cheap</li> - </ul> - <p> - <b>If your X200 has an LED backlit panel in it, then you also need to get an inverter and harness cable - that is compatible with the CCFL panels. To see which panel type you have, see - <a href="#led_howtotell">#led_howtotell</a>. If you need the inverter/cable, here are part numbers: - 44C9909 for CCFL LVDS cable with bluetooth and camera connections, and 42W8009 or 42W8010 for the - inverter.</b> - </p> - <p> - There are glossy and matte versions of these. Matte means anti-glare, which is what you want (in this authors opinion). - </p> - <p> - Refer to the HMM (hardware maintenance manual) for how to replace the screen. - </p> - <p>Sources:</p> - <ul> - <li><a href="http://forum.thinkpads.com/viewtopic.php?f=2&t=84941">ThinkPad Forums - Matte AFFS Panel on X200</a></li> - <li><a href="http://forum.thinkpads.com/viewtopic.php?p=660662#p660662">ThinkPad Forums - Parts for X200 AFFS Mod</a></li> - <li><a href="http://thinkwiki.de/X200_Displayumbau">ThinkWiki.de - X200 Displayumbau</a> (achtung: du musst lesen und/oder spreche deutsch; - oder ein freund fur hilfe)</li> - </ul> - <h3>X200S</h3> - <p> - <a href="http://forum.thinkpads.com/viewtopic.php?p=618928#p618928">http://forum.thinkpads.com/viewtopic.php?p=618928#p618928</a> - explains that the X200S screens/assemblies are thinner. You need to replace the whole lid with one from a normal X200/X201. - </p> + <h2 id="lcd_supported_list">LCD compatibility list</h2> + <p> + Unless otherwise noted (italic styling, underlined), these are CCFL 1280x800 screens with TN panels inside. + Please do advise if you spot mistakes here. + </p> + <p> + Use the instructions at <a href="../misc/index.html#get_edid_panelname">../misc/index.html#get_edid_panelname</a> + to get the name of your panel, then check it against the list below. If your panel is untested, then by all means + try it! (and get in touch with the libreboot project to advise whether or not it worked). + </p> + <p> + AUO = AU Optronics. List of panels below based on + <a href="http://www.thinkwiki.org/wiki/TFT_display">http://www.thinkwiki.org/wiki/TFT_display</a> + </p> + <p> + Tested LCD panels (confirmed working): + </p> + <ul> + <li>X200/X200S: LG-Philips LP121WX3-TLC1 (sgsit on IRC has this panel) (LED backlight)</li> + <li>X200/X200S: Samsung LTN121AT03 (phcoder on IRC has this panel)</li> + <li>X200/X200S: AUO B121EW03 V.6 (fchmmr on IRC has this panel)</li> + <li>X200S: TMD-Toshiba LTD121EQ3B (1440x900 resolution) (LED backlight) (sgsit on IRC has this panel)</li> + </ul> + <p> + Untested LCD panels (status unknown): + </p> + <ul> + <li>X200 Tablet: TMD-Toshiba LTD121KX6B (LED backlight)</li> + <li>X200/X200S: TMD-Toshiba LTD121EWVB</li> + <li>X200/X200S: AOU B121EW09 V.2 (LED backlight)</li> + <li>X200/X200S: FRU 42T0715 (no manufacturer/model given) (LED backlight)</li> + <li>X200/X200S: LG-Philips LP121WX3-TLA1 (LED backlight)</li> + <li>X200/X200S: 42T0713 FRU (no model/manufacturer given) (LED backlight)</li> + </ul> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + <div class="subsection"> + <h3 id="ips"> + AFFS/IPS panels + </h3> + <h4>X200</h4> + <p> + Adapted from <a href="https://github.com/bibanon/Coreboot-ThinkPads/wiki/ThinkPad-X200">https://github.com/bibanon/Coreboot-ThinkPads/wiki/ThinkPad-X200</a> + </p> + <p> + Look at wikipedia for difference between TN and IPS panels. IPS have much better colour/contrast than + a regular TN, and will typically have good viewing angles. + </p> + <p> + These seem to be from the X200 tablet. You need to find one without the glass touchscreen protection on it + (might be able to remove it, though). It also must not have a digitizer on it (again, might be possible to + just simply remove the digitizer). + </p> + <ul> + <li>BOE-Hydis HV121WX4-120, HV121WX4-110 or HV121WX4-100 - cheap-ish, might be hard to find</li> + <li>Samsung LTN121AP02-001 - common to find, cheap</li> + </ul> + <p> + <b>If your X200 has an LED backlit panel in it, then you also need to get an inverter and harness cable + that is compatible with the CCFL panels. To see which panel type you have, see + <a href="#led_howtotell">#led_howtotell</a>. If you need the inverter/cable, here are part numbers: + 44C9909 for CCFL LVDS cable with bluetooth and camera connections, and 42W8009 or 42W8010 for the + inverter.</b> + </p> + <p> + There are glossy and matte versions of these. Matte means anti-glare, which is what you want (in this authors opinion). + </p> + <p> + Refer to the HMM (hardware maintenance manual) for how to replace the screen. + </p> + <p>Sources:</p> + <ul> + <li><a href="http://forum.thinkpads.com/viewtopic.php?f=2&t=84941">ThinkPad Forums - Matte AFFS Panel on X200</a></li> + <li><a href="http://forum.thinkpads.com/viewtopic.php?p=660662#p660662">ThinkPad Forums - Parts for X200 AFFS Mod</a></li> + <li><a href="http://thinkwiki.de/X200_Displayumbau">ThinkWiki.de - X200 Displayumbau</a> (achtung: du musst lesen und/oder spreche deutsch; + oder ein freund fur hilfe)</li> + </ul> + </div> + <div class="subsection"> + <h3>X200S</h3> + <p> + <a href="http://forum.thinkpads.com/viewtopic.php?p=618928#p618928">http://forum.thinkpads.com/viewtopic.php?p=618928#p618928</a> + explains that the X200S screens/assemblies are thinner. You need to replace the whole lid with one from a normal X200/X201. + </p> + </div> + <p> <a href="#pagetop">Back to top of page.</a> </p> - -<hr/> - - <h1 id="led_howtotell">How to tell if it has an LED or CCFL?</h1> - - <p> - Some X200s have a CCFL backlight and some have an LED backlight, in their LCD panel. This - also means that the inverters will vary, so you must be careful if ever replacing either - the panel and/or inverter. (a CCFL inverter is high-voltage and will destroy an LED backlit panel). - </p> - <p> - CCFLs contain mercury. An X200 with a CCFL backlight will (<b></b>unless it has been changed to an LED, - with the correct inverter. Check with your supplier!</b>) the following: <i>"This product - contains Lithium Ion Battery, Lithium Battery and a lamp which contains mercury; dispose according to - local, state or federal laws"</i> (one with an LED backlit panel will say something different). - </p> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> + + </div> -<hr/> + <div class="section"> + <h2 id="led_howtotell">How to tell if it has an LED or CCFL?</h2> + + <p> + Some X200s have a CCFL backlight and some have an LED backlight, in their LCD panel. This + also means that the inverters will vary, so you must be careful if ever replacing either + the panel and/or inverter. (a CCFL inverter is high-voltage and will destroy an LED backlit panel). + </p> + <p> + CCFLs contain mercury. An X200 with a CCFL backlight will (<b></b>unless it has been changed to an LED, + with the correct inverter. Check with your supplier!</b>) the following: <i>"This product + contains Lithium Ion Battery, Lithium Battery and a lamp which contains mercury; dispose according to + local, state or federal laws"</i> (one with an LED backlit panel will say something different). + </p> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + </div> <div class="section"> @@ -299,8 +306,6 @@ </div> -<hr/> - <div class="section"> <h2 id="unsorted">Unsorted notes</h2> @@ -315,19 +320,21 @@ </div> -<hr/> + <div class="section"> - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. + </p> - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../../license.txt</a> for more information. - </p> + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. + </p> + + </div> </body> </html> diff --git a/docs/hcl/x200_remove_me.html b/docs/hcl/x200_remove_me.html index 48468c62..ae0a83f7 100644 --- a/docs/hcl/x200_remove_me.html +++ b/docs/hcl/x200_remove_me.html @@ -13,181 +13,189 @@ <body> - <h1 id="pagetop">ThinkPad X200: remove the ME (manageability engine)</h1> - <p> - This sections relates to disabling and removing the ME (Intel <b>M</b>anagement <b>E</b>ngine) - on the ThinkPad X200. - </p> - <p> - The ME is a blob that typically must be left inside the flash chip (in the ME region, as outlined - by the default descriptor). On the X200, it is possible to remove it without any ill effects. All - other parts of coreboot on the X200 can be blob-free, so removing the ME was the last obstacle to - get X200 support in libreboot (the machine can also work without the microcode blobs). - </p> - <p> - The ME is removed and disabled in libreboot by modifying the descriptor. More info about - this can be found in the ich9deblob/ich9gen source code in resources/utilities/ich9deblob/ - in libreboot, or more generally on this page. - </p> - <p> - Or <a href="x200.html">back to main X200 compatibility page (x200.html)</a>. - </p> + <div class="section"> + + <h1 id="pagetop">ThinkPad X200: remove the ME (manageability engine)</h1> + <p> + This sections relates to disabling and removing the ME (Intel <b>M</b>anagement <b>E</b>ngine) + on the ThinkPad X200. + </p> + <p> + The ME is a blob that typically must be left inside the flash chip (in the ME region, as outlined + by the default descriptor). On the X200, it is possible to remove it without any ill effects. All + other parts of coreboot on the X200 can be blob-free, so removing the ME was the last obstacle to + get X200 support in libreboot (the machine can also work without the microcode blobs). + </p> + <p> + The ME is removed and disabled in libreboot by modifying the descriptor. More info about + this can be found in the ich9deblob/ich9gen source code in resources/utilities/ich9deblob/ + in libreboot, or more generally on this page. + </p> + <p> + <a href="x200.html">Back to main X200 compatibility page (x200.html)</a>. + </p> + + </div> -<hr/> + <div class="section"> - <h1 id="ich9gen">ICH9 gen utility</h1> - - <p> - <b>This is no longer strictly necessary. Libreboot ROM images for X200 now - contain the 12KiB descriptor+gbe generated from ich9gen, by default.</b> - </p> - - <p> - It is no longer necessary to use <a href="#ich9deblob">ich9deblob</a> to generate - a deblobbed descriptor+gbe image for the X200. ich9gen is a small utility within - ich9deblob that can generate them from scratch, without a factory.bin dump. - </p> - - <p> - Run:<br/> - $ <b>./ich9gen</b> - </p> - - <p> - It is also possible to generate a descriptor+gbe image with your own MAC address - inside (with the Gbe checksum updated to match). Run:<br/> - $ <b>./ich9gen --macaddress XX:XX:XX:XX:XX:XX</b><br/> - (replace the XX chars with the hexadecimal chars in the MAC address that you want) - </p> - - <p> - You can find out your MAC address from <b>ip addr</b> or <b>ifconfig</b> in GNU/Linux. - Alternatively, if you are running libreboot already (with the correct MAC address in your - ROM), dump it (flashrom -r) and read the first 6 bytes from position 0x1000 (or 0x2000) in a hex editor - (or, rename it to factory.rom and run it in ich9deblob: in the newly created mkgbe.c - will be the individual bytes of your MAC address). If you are currently running the stock firmware - and haven't installed libreboot yet, you can also run that through ich9deblob to get the mac address. - </p> - - <p> - An even simpler way to get the MAC address would be to read what's on the little sticker on - the underside. (on the X200, this would be near the VGA port). - </p> + <h1 id="ich9gen">ICH9 gen utility</h1> - <p> - A bash script is also included in libreboot which will change the mac address (using ich9gen) - on all X200 ROM images. For instance:<br/> - $ <b>./ich9macchange XX:XX:XX:XX:XX:XX</b> - </p> + <p> + <b>This is no longer strictly necessary. Libreboot ROM images for X200 now + contain the 12KiB descriptor+gbe generated from ich9gen, by default.</b> + </p> - <p> - Two new files will be created: - </p> - <ul> - <li><b>ich9fdgbe_4m.bin</b>: this is for X200 laptops with the 4MB flash chip.</li> - <li><b>ich9fdgbe_8m.bin</b>: this is for X200 laptops with the 8MB flash chip.</li> - </ul> + <p> + It is no longer necessary to use <a href="#ich9deblob">ich9deblob</a> to generate + a deblobbed descriptor+gbe image for the X200. ich9gen is a small utility within + ich9deblob that can generate them from scratch, without a factory.bin dump. + </p> - <p> - ich9gen executables can be found under ./ich9deblob/ statically compiled in - libreboot_bin. If you are using src or git, build ich9gen from source with:<br/> - $ <b>./builddeps-ich9deblob</b><br/> - The executable will appear under resources/utilities/ich9deblob/ - </p> - - <p> - Assuming that your X200 libreboot image is named <b>libreboot.rom</b>, copy - the file to where <b>libreboot.rom</b> is located - and then run, for instance:<br/> - $ <b>dd if=ich9fdgbe_8m.bin of=libreboot.rom bs=1 count=12k conv=notrunc</b><br/> - or:<br/> - $ <b>dd if=ich9fdgbe_4m.bin of=libreboot.rom bs=1 count=12k conv=notrunc</b> - </p> - - <p> - Your X200 libreboot.rom image is now ready to be flashed on the machine. Refer back to - <a href="../install/index.html#flashrom">../install/index.html#flashrom</a> - for how to flash it. - </p> + <p> + Run:<br/> + $ <b>./ich9gen</b> + </p> + + <p> + It is also possible to generate a descriptor+gbe image with your own MAC address + inside (with the Gbe checksum updated to match). Run:<br/> + $ <b>./ich9gen --macaddress XX:XX:XX:XX:XX:XX</b><br/> + (replace the XX chars with the hexadecimal chars in the MAC address that you want) + </p> + + <p> + You can find out your MAC address from <b>ip addr</b> or <b>ifconfig</b> in GNU/Linux. + Alternatively, if you are running libreboot already (with the correct MAC address in your + ROM), dump it (flashrom -r) and read the first 6 bytes from position 0x1000 (or 0x2000) in a hex editor + (or, rename it to factory.rom and run it in ich9deblob: in the newly created mkgbe.c + will be the individual bytes of your MAC address). If you are currently running the stock firmware + and haven't installed libreboot yet, you can also run that through ich9deblob to get the mac address. + </p> + + <p> + An even simpler way to get the MAC address would be to read what's on the little sticker on + the underside. (on the X200, this would be near the VGA port). + </p> + + <p> + A bash script is also included in libreboot which will change the mac address (using ich9gen) + on all X200 ROM images. For instance:<br/> + $ <b>./ich9macchange XX:XX:XX:XX:XX:XX</b> + </p> + + <p> + Two new files will be created: + </p> + <ul> + <li><b>ich9fdgbe_4m.bin</b>: this is for X200 laptops with the 4MB flash chip.</li> + <li><b>ich9fdgbe_8m.bin</b>: this is for X200 laptops with the 8MB flash chip.</li> + </ul> + + <p> + ich9gen executables can be found under ./ich9deblob/ statically compiled in + libreboot_bin. If you are using src or git, build ich9gen from source with:<br/> + $ <b>./builddeps-ich9deblob</b><br/> + The executable will appear under resources/utilities/ich9deblob/ + </p> + + <p> + Assuming that your X200 libreboot image is named <b>libreboot.rom</b>, copy + the file to where <b>libreboot.rom</b> is located + and then run, for instance:<br/> + $ <b>dd if=ich9fdgbe_8m.bin of=libreboot.rom bs=1 count=12k conv=notrunc</b><br/> + or:<br/> + $ <b>dd if=ich9fdgbe_4m.bin of=libreboot.rom bs=1 count=12k conv=notrunc</b> + </p> + + <p> + Your X200 libreboot.rom image is now ready to be flashed on the machine. Refer back to + <a href="../install/index.html#flashrom">../install/index.html#flashrom</a> + for how to flash it. + </p> + + </div> -<hr/> + <div class="section"> - <h1 id="ich9deblob">ICH9 deblob utility</h1> - - <p> - <b>This is no longer strictly necessary. Libreboot ROM images for X200 now - contain the 12KiB descriptor+gbe generated from ich9gen, by default.</b> - </p> + <h1 id="ich9deblob">ICH9 deblob utility</h1> - <p> - This was the tool originally used to disable the ME on X200. <a href="#ich9gen">ich9gen</a> now supersedes it; - ich9gen is better because it does not rely on dumping the factory.rom image (whereas, ich9deblob does). - </p> - - <p> - This is what you will use to generate the deblobbed descriptor+gbe regions for your libreboot ROM image. - </p> - <p> - If you are working with libreboot_src (or git), you can find the source under resources/utilities/ich9deblob/ - and will already be compiled if you ran ./builddeps or ./builddeps-ich9deblob from the main directory (./), - otherwise you can build it like so:<br/> - $ <b>./builddeps-ich9deblob</b><br/> - An executable file named <b>ich9deblob</b> will now appear under resources/utilities/ich9deblob/ - </p> - <p> - If you are working with libreboot_bin release archive, you can find the utility included, statically compiled - (for i686 and x86_64 on GNU/Linux) under ./ich9deblob/. - </p> - - <p> - Place the factory.rom from your X200 - (can be obtained using the guide at <a href="../install/x200_external.html">../install/x200_external.html</a>) in - the directory where you have your ich9deblob executable, then run the tool:<br/> - $ <b>./ich9deblob</b> - </p> - <p> - A 12kiB file named <b>deblobbed_descriptor.bin</b> will now appear. <b>Keep this and the factory.rom stored in a safe location!</b> - The first 4KiB contains the descriptor data region for your machine, and the next 8KiB contains the gbe region (config data for your - gigabit NIC). These 2 regions could actually be separate files, but they are joined into 1 file in this case. - </p> - - <p> - Assuming that your X200 libreboot image is named <b>libreboot.rom</b>, copy - the <b>deblobbed_descriptor.bin</b> file to where <b>libreboot.rom</b> is located - and then run:<br/> - $ <b>dd if=deblobbed_descriptor.bin of=libreboot.rom bs=1 count=12k conv=notrunc</b> - </p> - - <p> - The utility will also generate 4 additional files: - </p> - <ul> - <li>mkdescriptor.c</li> - <li>mkdescriptor.h</li> - <li>mkgbe.c</li> - <li>mkgbe.h</li> - </ul> - <p> - These are C source files that can re-generate the very same Gbe and Descriptor structs - (from ich9deblob/ich9gen). To use these, place them in src/ich9gen/ in ich9deblob, then re-build. - The newly built <b>ich9gen</b> executable will be able to re-create the very same 12KiB file from scratch, - based on the C structs, this time <b>without</b> the need for a factory.rom dump! - </p> + <p> + <b>This is no longer strictly necessary. Libreboot ROM images for X200 now + contain the 12KiB descriptor+gbe generated from ich9gen, by default.</b> + </p> + + <p> + This was the tool originally used to disable the ME on X200. <a href="#ich9gen">ich9gen</a> now supersedes it; + ich9gen is better because it does not rely on dumping the factory.rom image (whereas, ich9deblob does). + </p> - <p> - You should now have a <b>libreboot.rom</b> image containing the correct 4K descriptor and 8K gbe regions, which - will then be safe to flash. Refer back to <a href="../install/index.html#flashrom">../install/index.html#flashrom</a> - for how to flash it. - </p> + <p> + This is what you will use to generate the deblobbed descriptor+gbe regions for your libreboot ROM image. + </p> + <p> + If you are working with libreboot_src (or git), you can find the source under resources/utilities/ich9deblob/ + and will already be compiled if you ran ./builddeps or ./builddeps-ich9deblob from the main directory (./), + otherwise you can build it like so:<br/> + $ <b>./builddeps-ich9deblob</b><br/> + An executable file named <b>ich9deblob</b> will now appear under resources/utilities/ich9deblob/ + </p> + <p> + If you are working with libreboot_bin release archive, you can find the utility included, statically compiled + (for i686 and x86_64 on GNU/Linux) under ./ich9deblob/. + </p> + + <p> + Place the factory.rom from your X200 + (can be obtained using the guide at <a href="../install/x200_external.html">../install/x200_external.html</a>) in + the directory where you have your ich9deblob executable, then run the tool:<br/> + $ <b>./ich9deblob</b> + </p> + <p> + A 12kiB file named <b>deblobbed_descriptor.bin</b> will now appear. <b>Keep this and the factory.rom stored in a safe location!</b> + The first 4KiB contains the descriptor data region for your machine, and the next 8KiB contains the gbe region (config data for your + gigabit NIC). These 2 regions could actually be separate files, but they are joined into 1 file in this case. + </p> + + <p> + Assuming that your X200 libreboot image is named <b>libreboot.rom</b>, copy + the <b>deblobbed_descriptor.bin</b> file to where <b>libreboot.rom</b> is located + and then run:<br/> + $ <b>dd if=deblobbed_descriptor.bin of=libreboot.rom bs=1 count=12k conv=notrunc</b> + </p> + + <p> + The utility will also generate 4 additional files: + </p> + <ul> + <li>mkdescriptor.c</li> + <li>mkdescriptor.h</li> + <li>mkgbe.c</li> + <li>mkgbe.h</li> + </ul> + <p> + These are C source files that can re-generate the very same Gbe and Descriptor structs + (from ich9deblob/ich9gen). To use these, place them in src/ich9gen/ in ich9deblob, then re-build. + The newly built <b>ich9gen</b> executable will be able to re-create the very same 12KiB file from scratch, + based on the C structs, this time <b>without</b> the need for a factory.rom dump! + </p> + + <p> + You should now have a <b>libreboot.rom</b> image containing the correct 4K descriptor and 8K gbe regions, which + will then be safe to flash. Refer back to <a href="../install/index.html#flashrom">../install/index.html#flashrom</a> + for how to flash it. + </p> + + </div> -<hr/> + <div class="section"> <p> The sections below are adapted from (mostly) IRC logs related to early development getting the ME removed on the X200. They are useful for background information. This could not have been done without sgsit's help. </p> - <div class="section"> + <div class="subsection"> <h2 id="early_notes">Early notes</h2> @@ -216,9 +224,11 @@ </div> -<hr/> + </div> + + <div class="section"> - <div class="section"> + <div class="subsection"> <h2 id="flashchips">Flash chips</h2> @@ -243,11 +253,11 @@ </div> -<hr/> + </div> - <div class="section"> + <div class="section"> - <h2 id="early_development_notes">Early development notes</h2> + <h2 id="early_development_notes">Early development notes</h2> <pre> <i> @@ -312,35 +322,33 @@ Flash Erase Size = 0x1000 </i> </pre> - <p> - It's a utility called 'Flash Image Tool' for ME 4.x that was used for this. You drag a complete - image into in and the utility decomposes the various components, allowing you to set soft straps. - </p> - <p> - This tool is proprietary, for Windows only, but was used to deblob the X200. End justified means, and - the utility is no longer needed since the ich9deblob utility (documented on this page) can now be - used to create deblobbed descriptors. - </p> - - </div> + <p> + It's a utility called 'Flash Image Tool' for ME 4.x that was used for this. You drag a complete + image into in and the utility decomposes the various components, allowing you to set soft straps. + </p> + <p> + This tool is proprietary, for Windows only, but was used to deblob the X200. End justified means, and + the utility is no longer needed since the ich9deblob utility (documented on this page) can now be + used to create deblobbed descriptors. + </p> -<hr/> + </div> - <div class="section"> + <div class="section"> - <h2 id="gbe_region"> - GBE (gigabit ethernet) region in SPI flash - </h2> + <h2 id="gbe_region"> + GBE (gigabit ethernet) region in SPI flash + </h2> - <p> - Of the 8K, about 95% is 0xFF. - The data is the gbe region is fully documented in this public datasheet: - <a href="http://www.intel.co.uk/content/dam/doc/application-note/i-o-controller-hub-9m-82567lf-lm-v-nvm-map-appl-note.pdf">http://www.intel.co.uk/content/dam/doc/application-note/i-o-controller-hub-9m-82567lf-lm-v-nvm-map-appl-note.pdf</a> - </p> + <p> + Of the 8K, about 95% is 0xFF. + The data is the gbe region is fully documented in this public datasheet: + <a href="http://www.intel.co.uk/content/dam/doc/application-note/i-o-controller-hub-9m-82567lf-lm-v-nvm-map-appl-note.pdf">http://www.intel.co.uk/content/dam/doc/application-note/i-o-controller-hub-9m-82567lf-lm-v-nvm-map-appl-note.pdf</a> + </p> - <p> - The only actual content found was: - </p> + <p> + The only actual content found was: + </p> <pre> <i> @@ -358,17 +366,19 @@ DD CC 18 00 11 20 17 00 DD DD 18 00 12 20 17 00 </i> </pre> - <p> - The first part is the MAC address set to all 0x1F. It's repeated haly way through - the 8K area, and the rest is all 0xFF. This is all documented in the datasheet. - </p> + <p> + The first part is the MAC address set to all 0x1F. It's repeated haly way through + the 8K area, and the rest is all 0xFF. This is all documented in the datasheet. + </p> - <p> - The GBe region starts at 0x20A000 bytes from the *end* of a factory image and is 0x2000 bytes long. - In libreboot (deblobbed) the descriptor is set to put gbe directly after the initial 4K flash descriptor. - So the first 4K of the ROM is the descriptor, and then the next 8K is the gbe region. - </p> + <p> + The GBe region starts at 0x20A000 bytes from the *end* of a factory image and is 0x2000 bytes long. + In libreboot (deblobbed) the descriptor is set to put gbe directly after the initial 4K flash descriptor. + So the first 4K of the ROM is the descriptor, and then the next 8K is the gbe region. + </p> + <div class="subsection"> + <h3 id="gbe_region_changemacaddress">GBE region: change MAC address</h3> <p> @@ -399,116 +409,117 @@ DD CC 18 00 11 20 17 00 DD DD 18 00 12 20 17 00 and that has to add up to 0xBABA. In other words, the checksum is 0xBABA minus the total of the first 0x3E 16bit numbers (unsigned), ignoring any overflow.</li> </ul> - + </div> -<hr/> + </div> - <div class="section"> + <div class="section"> - <h2 id="flash_descriptor_region">Flash descriptor region</h2> + <h2 id="flash_descriptor_region">Flash descriptor region</h2> - <p> - <a href="http://www.intel.co.uk/content/dam/doc/datasheet/io-controller-hub-9-datasheet.pdf">http://www.intel.co.uk/content/dam/doc/datasheet/io-controller-hub-9-datasheet.pdf</a> - from page 850 onwards. This explains everything that is in the flash descriptor, which can be used to understand what libreboot - is doing about modifying it. - </p> + <p> + <a href="http://www.intel.co.uk/content/dam/doc/datasheet/io-controller-hub-9-datasheet.pdf">http://www.intel.co.uk/content/dam/doc/datasheet/io-controller-hub-9-datasheet.pdf</a> + from page 850 onwards. This explains everything that is in the flash descriptor, which can be used to understand what libreboot + is doing about modifying it. + </p> - <p> - How to deblob: - </p> - <ul> - <li>patch the number of regions present in the descriptor from 5 - 3</li> - <li>originally descriptor + bios + me + gbe + platform</li> - <li>modified = descriptor + bios + gbe</li> - <li>the next stage is to patch the part of the descriptor which defines the start and end point of each section</li> - <li>then cut out the gbe region and insert it just after the region</li> - <li>all this can be substantiated with public docs (ICH9 datasheet)</li> - <li>the final part is flipping 2 bits. Halting the ME via 1 MCH soft strap and 1 ICH soft strap</li> - <li>the part of the descriptor described there gives the base address and length of each region (bits 12:24 of each address)</li> - <li>to disable a region, you set the base address to 0xFFF and the length to 0</li> - <li>and you change the number of regions from 4 (zero based) to 2</li> - </ul> + <p> + How to deblob: + </p> + <ul> + <li>patch the number of regions present in the descriptor from 5 - 3</li> + <li>originally descriptor + bios + me + gbe + platform</li> + <li>modified = descriptor + bios + gbe</li> + <li>the next stage is to patch the part of the descriptor which defines the start and end point of each section</li> + <li>then cut out the gbe region and insert it just after the region</li> + <li>all this can be substantiated with public docs (ICH9 datasheet)</li> + <li>the final part is flipping 2 bits. Halting the ME via 1 MCH soft strap and 1 ICH soft strap</li> + <li>the part of the descriptor described there gives the base address and length of each region (bits 12:24 of each address)</li> + <li>to disable a region, you set the base address to 0xFFF and the length to 0</li> + <li>and you change the number of regions from 4 (zero based) to 2</li> + </ul> - <p> - There's an interesting parameter called 'ME Alternate disable', which allows the ME to only handle hardware errata in the southbridge, - but disables any other functionality. This is similar to the 'ignition' in the 5 series and higher but using the standard firmware - instead of a small 128K version. Useless for libreboot, though. - </p> + <p> + There's an interesting parameter called 'ME Alternate disable', which allows the ME to only handle hardware errata in the southbridge, + but disables any other functionality. This is similar to the 'ignition' in the 5 series and higher but using the standard firmware + instead of a small 128K version. Useless for libreboot, though. + </p> - <p> - To deblob the x200, you chop out the platform and ME regions and correct the addresses in flReg1-4. - Then you set meDisable to 1 in ICHSTRAP0 and MCHSTRAP0. - </p> + <p> + To deblob the x200, you chop out the platform and ME regions and correct the addresses in flReg1-4. + Then you set meDisable to 1 in ICHSTRAP0 and MCHSTRAP0. + </p> - <p>How to patch the descriptor from the factory.rom dump</p> - <ul> - <li>map the first 4k into the struct (minus the gbe region)</li> - <li>set NR in FLMAP0 to 2 (from 4)</li> - <li>adjust BASE and LIMIT in flReg1,2,3,4 to reflect the new location of each region (or remove them in the case of Platform and ME)</li> - <li>set meDisable to 1/true in ICHSTRAP0 and MCHSTRAP0</li> - <li>extract the 8k GBe region and append that to the end of the 4k descriptor</li> - <li>output the 12k concatenated chunk</li> - <li>Then it can be dd'd into the first 12K part of a coreboot image.</li> - <li>the GBe region always starts 0x20A000 bytes from the end of the ROM</li> - </ul> + <p>How to patch the descriptor from the factory.rom dump</p> + <ul> + <li>map the first 4k into the struct (minus the gbe region)</li> + <li>set NR in FLMAP0 to 2 (from 4)</li> + <li>adjust BASE and LIMIT in flReg1,2,3,4 to reflect the new location of each region (or remove them in the case of Platform and ME)</li> + <li>set meDisable to 1/true in ICHSTRAP0 and MCHSTRAP0</li> + <li>extract the 8k GBe region and append that to the end of the 4k descriptor</li> + <li>output the 12k concatenated chunk</li> + <li>Then it can be dd'd into the first 12K part of a coreboot image.</li> + <li>the GBe region always starts 0x20A000 bytes from the end of the ROM</li> + </ul> - <p> - This means that libreboot's descriptor region will simply define the following regions: - </p> - <ul> - <li>descriptor (4K)</li> - <li>gbe (8K)</li> - <li>bios (rest of flash chip. CBFS also set to occupy this whole size)</li> - </ul> + <p> + This means that libreboot's descriptor region will simply define the following regions: + </p> + <ul> + <li>descriptor (4K)</li> + <li>gbe (8K)</li> + <li>bios (rest of flash chip. CBFS also set to occupy this whole size)</li> + </ul> - <p> - The data in the descriptor region is little endian, and it represents bits 24:12 of the address - (bits 12-24, written this way since bit 24 is nearer to left than bit 12 in the binary representation). - </p> - <p> - So, <i>x << 12 = address</i> - </p> - <p> - If it's in descriptor mode, then the first 4 bytes will be 5A A5 F0 0F. - </p> + <p> + The data in the descriptor region is little endian, and it represents bits 24:12 of the address + (bits 12-24, written this way since bit 24 is nearer to left than bit 12 in the binary representation). + </p> + <p> + So, <i>x << 12 = address</i> + </p> + <p> + If it's in descriptor mode, then the first 4 bytes will be 5A A5 F0 0F. + </p> - </div> + </div> -<hr/> - <div class="section"> + <div class="section"> - <h2 id="platform_data_region">platform data partition in boot flash (factory.rom / lenovo bios)</h2> + <h2 id="platform_data_region">platform data partition in boot flash (factory.rom / lenovo bios)</h2> - <p> - Basically useless for libreboot, since it appears to be a blob. - Removing it didn't cause any issues in libreboot. - </p> - <p> - This is a 32K region from the factory image. It could be data - (non-functional) that the original Lenovo BIOS used, but we don't know. - </p> - - <p> - It has only a 448 byte fragment different from 0x00 or 0xFF. - </p> + <p> + Basically useless for libreboot, since it appears to be a blob. + Removing it didn't cause any issues in libreboot. + </p> + <p> + This is a 32K region from the factory image. It could be data + (non-functional) that the original Lenovo BIOS used, but we don't know. + </p> - </div> + <p> + It has only a 448 byte fragment different from 0x00 or 0xFF. + </p> + + </div> -<hr/> + <div class="section"> - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. + </p> - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../../license.txt</a> for more information. - </p> + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../../license.txt</a> for more information. + </p> + + </div> </body> </html> diff --git a/docs/index.html b/docs/index.html index f672db1b..f3439c4b 100644 --- a/docs/index.html +++ b/docs/index.html @@ -12,213 +12,162 @@ </head> <body> - <h1 id="pagetop">Libreboot project documentation</h1> - - <p> - It is expected that your libreboot-compatible device is running <a href="https://www.gnu.org/distros/">GNU/Linux</a> - (no other operating system is known to work with this release of libreboot). - </p> - <p> - <a href="#why">What is libreboot?</a> - </p> - -<hr/> - - <h2>Release information</h2> + + <div class="section"> + <h1 id="pagetop">Libreboot project documentation</h1> <p> Information about this release can be found at <a href="release.html">release.html</a>. Always check <a href="http://libreboot.org">libreboot.org</a> for updates. </p> <p> - The release page and <a href="future/index.html">future/index.html</a> contain details - about future work. - </p> - - <h2>Hardware compatibility list</h2> - <p> - Information about what systems libreboot supports. - </p> - <p> - Goto <a href="hcl/index.html">hcl/index.html</a>. - </p> - - <h2>Installing libreboot</h2> - <p> - Information about how to install libreboot on supported targets, - using software and/or dedicated hardware. - </p> - <p> - Goto <a href="install/index.html">install/index.html</a>. - </p> - - <h2>GNU/Linux distributions</h2> - <p> - Installing GNU/Linux distributions, preparing bootable USB drives, changing the default GRUB - menu and so on. - </p> - <p> - This also contains guides for fully encrypted Trisquel and Parabola GNU/Linux-libre installations. - </p> - <p> - Goto <a href="gnulinux/index.html">gnulinux/index.html</a>. - </p> - - <h2>Developing libreboot</h2> - <p> - Information about configuring libreboot, building from source, maintaining the project, - working in git and so on. - </p> - <p> - Goto <a href="git/index.html">git/index.html</a>. - </p> - - <h2>Security topics</h2> - <p> - Goto <a href="security/index.html">security/index.html</a>. - </p> - - <h2>Hardware maintenance</h2> - <p> - Goto <a href="hardware/index.html">hardware/index.html</a>. + <a href="#why">What is libreboot?</a> </p> + </div> - <h2>GRUB payload</h2> - <p> - Information about fonts and keyboard layouts used in GRUB. - </p> - <p> - Goto <a href="grub/index.html">grub/index.html</a> - </p> - - <h2>Miscellaneous</h2> - <p> - Random topics that don't belong anywhere else. - </p> - <p> - Goto <a href="misc/index.html">misc/index.html</a>. - </p> - -<hr/> - - <h1 id="why">What is libreboot, really?</h1> - + <div class="section"> + + <h1>Table of contents</h1> + <ul> + <li><a href="hcl/index.html">Hardware compatibility list</a> - <a href="https://www.gnu.org/distros/">GNU/Linux</a> is expected to be running on your device.</li> + <li><a href="install/index.html">How to install libreboot</a></li> + <li><a href="gnulinux/index.html">How to install GNU/Linux on a libreboot system</a></li> + <li><a href="git/index.html">How to use the git repository and build libreboot from source</a></li> + <li><a href="security/index.html">Hardware security</a></li> + <li><a href="hardware/index.html">Hardware maintenance</a></li> + <li><a href="grub/index.html">GRUB payload</a></li> + <li><a href="future/index.html">Planned work</a></li> + <li><a href="misc/index.html">Miscellaneous</a></li> + </ul> + + </div> + + <div class="section" id="why"> + + <h1>About the libreboot project</h1> + + <p> + Libreboot is a <a href="http://coreboot.org/">coreboot</a> distribution (distro) with proprietary software removed, + intended to be a <a href="https://www.fsf.org/about/what-is-free-software">free</a> + (libre) 'BIOS' replacement for your computer. The project is aimed at users, attempting to make + coreboot as easy to use as possible. + </p> + + <p> + Read the full <a href="https://www.gnu.org/philosophy/free-sw.html">Free Software definition</a>. + </p> + + <div class="subsection"> + <h2> + The libreboot project has three main goals: + </h2> + <ul> + <li> + <i><u><b>Recommend and distribute only free software</b></u></i>. The coreboot project distributes proprietary code/blobs on some computers; + this can include things like CPU microcode updates, memory initialization code and so on. The project also actively + recommends that the user install additional blobs in some cases (such as the video BIOS or Intel ME). + While this can be necessary from the coreboot project's point of view, Libreboot is an attempt to support as many + computers from coreboot as possible, without distributing any blobs and without having the user install additional + proprietary software. This is not to say that the coreboot project is bad; a lot of extremely dedicated and talented + individuals in coreboot work night and day to reverse engineer and free those blobs that still remain in coreboot. + <i>Any system from coreboot that can run without blobs is a viable libreboot candidate!</i> + </li> + <li> + <i><u><b>Support as much hardware as possible!</b></u></i> This goes without saying. The list of officially supported hardware + in libreboot is smaller than in upstream (coreboot), because some boards in coreboot require proprietary software which + libreboot does not and will not distribute. The main goal of the libreboot project is to spread free software at a low-level + (the boot firmware) to as many people as possible, so of course that means supporting as much hardware as possible (but without + compromising on the main goal). + </li> + <li> + <i><u><b>Make coreboot easy to use</b></u></i>. The main problem that many users have with coreboot is that it is extremely difficult to + understand, learn about, install and use. This is understandable; coreboot is a low-level piece of software and has many + talented individuals working on it, but the project's resources are limited and so the developers focus their efforts on the code. + Coreboot offers wonderful support for other coreboot developers and those who wish to climb up + that steep curve to learn everything that they can.<br/><br/> + + At the same time, those who simply want to use coreboot (for any number + of reasons) are often left feeling intimidated and many of them give up in frustration. Libreboot attempts to bridge this gap; + its documentation is entirely focussed on users, with detailed steps showing exactly how to install and use it and the issues + that they may come across (and how to work around them).<br/><br/> + + Almost everything in libreboot is completely automated, with + scripts for downloading, building and installing the various components used in libreboot. Pre-compiled ROM images built + from the libreboot source code are provided, along with the utilities (statically compiled, from libreboot sources) that the user will need for installing them.<br/><br/> + + Libreboot is similar in concept to a GNU/Linux or GNU/Linux-libre distribution; it is composed of not just coreboot (deblobbed), + but everything else that the user will need, such as GRUB and flashrom. These are all fully integrated, in a way where + most of the detailed steps otherwise required of the user (if they used coreboot, the upstream provider) are completely eliminated.<br/><br/> + + In much the same way that you can simply download an ISO image for your favourite GNU/Linux-libre distribution, and install it, + you can download pre-compiled libreboot ROM images (built from the sources) along with installation scripts and documentation + that make libreboot as easy to use as possible. + </li> + </ul> + </div> + + <p> + Libreboot is <b>not</b> a fork of coreboot, despite misconceptions of this fact. Libreboot (downstream supplier) is a parallel effort + which works closely with and re-bases on the latest coreboot (upstream supplier) every so often. + </p> + + <p> + <b> + As such, all new coreboot development should be done in coreboot, not libreboot! + Libreboot is about deblobbing, and packaging coreboot in a user-friendly way, where most work is already done for the user! + If, for example you wanted to attempt porting a new motherboard then you should do that in coreboot. Libreboot will (as a downstream supplier) + receive your change at some point in the future, in a future release. + </b> + </p> + + <p> + <i>Libreboot</i> as a whole is the distribution consisting of everything surrounding coreboot. However, the main component is coreboot; + libreboot's deblobbed coreboot tree is sometimes referred to as <i>coreboot-libre</i> to distinguish it as a component of <i>libreboot</i>. + </p> + + <h2> + Libreboot is a 'stable' coreboot + </h2> + <ul> + <li> + Coreboot uses the <a href="https://en.wikipedia.org/wiki/Rolling_release">rolling release</a> model, which + is quite volatile; one day when you build coreboot, it may or may not work correctly on your machine. + </li> + <li> + Libreboot changes less often (as far as the release model is concerned), focusing instead on 'tested' releases for <i>specific machines</i>. + At any given time, it might also be possible to build ROM images for systems other than those officially supported. If you get your board to work + (without violating the <i>"coreboot development goes in coreboot"</i> rule), then others could benefit from it. + </li> + </ul> + + <p> + On the other hand, coreboot is also strict about what it accepts (merges) into the main git repository: + most of the time, a lot of changes are under review at review.coreboot.org (as a way of encouraging as much further development + as possible before accepting the patch). + </p> + + <p> + Meanwhile, libreboot is a lot less strict in this area and freely merges specific patches that are desirable, sometimes before they are merged into coreboot's main repository. + </p> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> + + <div class="section"> + <p> - Libreboot is a <a href="http://coreboot.org/">coreboot</a> distribution (distro) with proprietary software removed, - intended to be a <a href="https://www.fsf.org/about/what-is-free-software">free</a> - (libre) 'BIOS' replacement for your computer. The project is aimed at users, attempting to make - coreboot as easy to use as possible. + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="license.txt">license.txt</a>. </p> <p> - Read the full <a href="https://www.gnu.org/philosophy/free-sw.html">Free Software definition</a>. + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="license.txt">license.txt</a> for more information. </p> - - <h2> - The libreboot project has three main goals: - </h2> - <ul> - <li> - <i><u><b>Recommend and distribute only free software</b></u></i>. The coreboot project distributes proprietary code/blobs on some computers; - this can include things like CPU microcode updates, memory initialization code and so on. The project also actively - recommends that the user install additional blobs in some cases (such as the video BIOS or Intel ME). - While this can be necessary from the coreboot project's point of view, Libreboot is an attempt to support as many - computers from coreboot as possible, without distributing any blobs and without having the user install additional - proprietary software. This is not to say that the coreboot project is bad; a lot of extremely dedicated and talented - individuals in coreboot work night and day to reverse engineer and free those blobs that still remain in coreboot. - <i>Any system from coreboot that can run without blobs is a viable libreboot candidate!</i> - </li> - <li> - <i><u><b>Support as much hardware as possible!</b></u></i> This goes without saying. The list of officially supported hardware - in libreboot is smaller than in upstream (coreboot), because some boards in coreboot require proprietary software which - libreboot does not and will not distribute. The main goal of the libreboot project is to spread free software at a low-level - (the boot firmware) to as many people as possible, so of course that means supporting as much hardware as possible (but without - compromising on the main goal). - </li> - <li> - <i><u><b>Make coreboot easy to use</b></u></i>. The main problem that many users have with coreboot is that it is extremely difficult to - understand, learn about, install and use. This is understandable; coreboot is a low-level piece of software and has many - talented individuals working on it, but the project's resources are limited and so the developers focus their efforts on the code. - Coreboot offers wonderful support for other coreboot developers and those who wish to climb up - that steep curve to learn everything that they can.<br/><br/> - - At the same time, those who simply want to use coreboot (for any number - of reasons) are often left feeling intimidated and many of them give up in frustration. Libreboot attempts to bridge this gap; - its documentation is entirely focussed on users, with detailed steps showing exactly how to install and use it and the issues - that they may come across (and how to work around them).<br/><br/> - - Almost everything in libreboot is completely automated, with - scripts for downloading, building and installing the various components used in libreboot. Pre-compiled ROM images built - from the libreboot source code are provided, along with the utilities (statically compiled, from libreboot sources) that the user will need for installing them.<br/><br/> - - Libreboot is similar in concept to a GNU/Linux or GNU/Linux-libre distribution; it is composed of not just coreboot (deblobbed), - but everything else that the user will need, such as GRUB and flashrom. These are all fully integrated, in a way where - most of the detailed steps otherwise required of the user (if they used coreboot, the upstream provider) are completely eliminated.<br/><br/> - - In much the same way that you can simply download an ISO image for your favourite GNU/Linux-libre distribution, and install it, - you can download pre-compiled libreboot ROM images (built from the sources) along with installation scripts and documentation - that make libreboot as easy to use as possible. - </li> - </ul> - - <p> - Libreboot is <b>not</b> a fork of coreboot, despite misconceptions of this fact. Libreboot (downstream supplier) is a parallel effort - which works closely with and re-bases on the latest coreboot (upstream supplier) every so often. - </p> - - <p> - <b> - As such, all new coreboot development should be done in coreboot, not libreboot! - Libreboot is about deblobbing, and packaging coreboot in a user-friendly way, where most work is already done for the user! - If, for example you wanted to attempt porting a new motherboard then you should do that in coreboot. Libreboot will (as a downstream supplier) - receive your change at some point in the future, in a future release. - </b> - </p> - - <p> - <i>Libreboot</i> as a whole is the distribution consisting of everything surrounding coreboot. However, the main component is coreboot; - libreboot's deblobbed coreboot tree is sometimes referred to as <i>coreboot-libre</i> to distinguish it as a component of <i>libreboot</i>. - </p> - - <h2> - A 'stable' coreboot: - </h2> - <ul> - <li> - Coreboot uses the <a href="https://en.wikipedia.org/wiki/Rolling_release">rolling release</a> model - (and it is therefore quite volatile; one day when you build coreboot, it may or may not work correctly on your machine). - </li> - <li> - Libreboot changes less often (as far as the release model is concerned), focusing instead on 'tested' releases for <i>specific machines</i>. - At any given time, it might also be possible to build ROM images for systems other than those officially supported. If you get your board to work - (without violating the <i>"coreboot development goes in coreboot"</i> rule), then others could benefit from it. - </li> - </ul> - - <p> - On the other hand, coreboot is also strict about what it accepts (merges) into the main git repository: - most of the time, a lot of changes are under review at review.coreboot.org (as a way of encouraging as much further development - as possible before accepting the patch). - </p> - - <p> - Meanwhile, libreboot is a lot less strict in this area and freely merges specific patches that are desirable, sometimes before they are merged into coreboot's main repository. - </p> - - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> - - <p> - Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="license.txt">license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="license.txt">license.txt</a> for more information. - </p> + + </div> </body> </html> diff --git a/docs/install/bbb_setup.html b/docs/install/bbb_setup.html index 3ccebc78..ee2326f4 100644 --- a/docs/install/bbb_setup.html +++ b/docs/install/bbb_setup.html @@ -13,70 +13,69 @@ <body> - <header> + <div class="section"> <h1 id="pagetop">Setup the BeagleBone Black as an SPI flashrom programmer</h1> - <aside>How to use the BBB as an external flashrom programmer, for reading/writing an SPI flash chip.</aside> - </header> + <p>How to use the BBB as an external flashrom programmer, for reading/writing an SPI flash chip.</p> + <p><a href="index.html">Back to previous index</a></p> + </div> - <p>Or go <a href="index.html">back to main index</a></p> + <div class="section"> -<hr/> - - <h1 id="hardware_requirements">Hardware requirements</h1> - - <p> - Shopping list (pictures of this hardware is shown later): - </p> - <ul> - <li> - External SPI programmer: <b>BeagleBone Black</b> (rev. C) - is highly recommended. Sometimes referred to as 'BBB'. - </li> - <li> - Clip for connecting to the flash chip: <b>Pomona 5250</b> - (SOIC-8) or <b>Pomona 5252</b> (SOIC-16) is recommended - (<b>X200S and X200 Tablet users will need a soldering iron - instead</b>, because of the type of package the flash chip is - in on those machines). - </li> - <li> - <b>External 3.3V DC power supply</b>. The one used by this - author has the label HF100W-SF-3.3 on it, but any decent - supply will be fine. Some people use the 3.3V from an ATX - PSU for instance (the kind that you get on a typical - Intel/AMD desktop computer. 6A supply should be fine, - the one used by this author is 20A (it won't actually use - that, it's just what the PSU is capable of). - </li> - <li> - Dupont <b>jumper cables</b> (2.54mm / 0.1" headers) - You should get male-male, male-female and female-female - cables in 10cm and 20cm sizes. Just get a load of them. - </li> - <li> - <b>Mini USB A-B cable</b> (the BeagleBone probably already comes - with one.) - </li> - <li> - <b>FTDI serial board</b>, for unbricking the BeagleBone if - necessary. - </li> - <li> - <b>5V DC power supply</b> (from wall outlet to the BeagleBone). - The BeagleBone can have power supplied via USB, but a - dedicated power supply is recommended. - </li> - </ul> - - <p> - <a href="#pagetop">Back to top of page.</a> - </p> + <h1 id="hardware_requirements">Hardware requirements</h1> + + <p> + Shopping list (pictures of this hardware is shown later): + </p> + <ul> + <li> + External SPI programmer: <b>BeagleBone Black</b> (rev. C) + is highly recommended. Sometimes referred to as 'BBB'. + </li> + <li> + Clip for connecting to the flash chip: <b>Pomona 5250</b> + (SOIC-8) or <b>Pomona 5252</b> (SOIC-16) is recommended + (<b>X200S and X200 Tablet users will need a soldering iron + instead</b>, because of the type of package the flash chip is + in on those machines). + </li> + <li> + <b>External 3.3V DC power supply</b>. The one used by this + author has the label HF100W-SF-3.3 on it, but any decent + supply will be fine. Some people use the 3.3V from an ATX + PSU for instance (the kind that you get on a typical + Intel/AMD desktop computer. 6A supply should be fine, + the one used by this author is 20A (it won't actually use + that, it's just what the PSU is capable of). + </li> + <li> + Dupont <b>jumper cables</b> (2.54mm / 0.1" headers) + You should get male-male, male-female and female-female + cables in 10cm and 20cm sizes. Just get a load of them. + </li> + <li> + <b>Mini USB A-B cable</b> (the BeagleBone probably already comes + with one.) + </li> + <li> + <b>FTDI serial board</b>, for unbricking the BeagleBone if + necessary. + </li> + <li> + <b>5V DC power supply</b> (from wall outlet to the BeagleBone). + The BeagleBone can have power supplied via USB, but a + dedicated power supply is recommended. + </li> + </ul> + + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + + </div> -<hr/> + <div class="section"> - <h1 id="configure_bbb">Configuring the BeagleBone Black</h1> - - <h2>Setting up the 3.3V DC PSU</h2> + <h1>Setting up the 3.3V DC PSU</h1> <p> With my PSU, first I had wire up the mains power cable. Any clover or kettle lead will do. Cut the end off (not the one that goes in the wall, but the kettle/clover connector). @@ -107,7 +106,12 @@ If you are using a different PSU, then the steps will change from those above. Anyway, once you are satisfied, continue reading... </p> - <h2>Setting up the BBB</h2> + + </div> + + <div class="section"> + + <h1>Setting up the BBB</h1> <p> Your BBB will have an sshd with no password on root. Find it's IP address (it will use DHCP by default) and set a root password. The steps below @@ -265,9 +269,14 @@ Note: flashrom can never write if the flash chip isn't found automatically. This means that it's working (the clip isn't connected to any flash chip, so the error is fine). </p> - <h2> + + </div> + + <div class="section"> + + <h1> Connecting the Pomona 5250/5252 - </h2> + </h1> <p> Use this image for reference when connecting the pomona to the BBB: <a href="http://beagleboard.org/Support/bone101#headers">http://beagleboard.org/Support/bone101#headers</a> @@ -326,20 +335,24 @@ Note: flashrom can never write if the flash chip isn't found automatically. <p> <a href="#pagetop">Back to top of page.</a> </p> + + </div> -<hr/> + <div class="section"> - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. + </p> - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. + </p> + + </div> </body> </html> diff --git a/docs/install/index.html b/docs/install/index.html index 313c7243..60d9a738 100644 --- a/docs/install/index.html +++ b/docs/install/index.html @@ -13,17 +13,25 @@ <body> - <h1 id="pagetop">Installing libreboot</h1> - <p> - This section relates to installing libreboot on supported targets. - </p> - <p> - Or <a href="../index.html">Back to main index</a>. - </p> + <div class="section"> + + <h1 id="pagetop">Installing libreboot</h1> + <p> + This section relates to installing libreboot on supported targets. + </p> + <p> + <a href="../index.html">Back to previous index</a> + </p> + + </div> + + <div class="section"> + <h2>Setting up external programmers</h2> <ul> <li><a href="bbb_setup.html">Setup the BeagleBone Black as an SPI flashrom programmer</a></li> </ul> + <h2>Installing libreboot (software)</h2> <ul> <li><a href="#qemu">QEMU</a></li> @@ -41,379 +49,396 @@ <li><a href="x200_external.html">ThinkPad X200: How to unbrick</a> (also the initial installation guide for this machine)</li> </ul> -<hr/> - - <h1 id="qemu">QEMU</h1> - - <p> - You don't really do anything here, just run (example):<br/> - $ <b>qemu-system-i386 -M pc -m 512 -bios bin/qemu_i440fx_piix4/qemu_i440fx_piix4_ukdvorak_vesafb.rom -serial stdio</b><br/> - $ <b>qemu-system-i386 -M q35 -m 512 -bios bin/qemu_q35_ich9/qemu_q35_ich9_ukdvorak_vesafb.rom -serial stdio</b> - </p> - -<hr/> + </div> + + <div class="section"> - <h1 id="rom">Recommended ROMs to flash</h1> - - <p> - List of directories corresponding to each board: - </p> - <ul> - <li>ThinkPad X60, X60s and X60 Tablet: <b>bin/x60/</b></li> - <li>ThinkPad T60: <b>bin/t60/</b> (note, see <a href="../hcl/index.html#supported_t60_list">../hcl/index.html#supported_t60_list</a>)</li> - <li>ThinkPad X200: <b>bin/x200_8mb/</b> (8MiB flash chip) or <b>bin/x200_4mb</b> (4MiB flash chip) (see <a href="../hcl/x200.html">../hcl/x200.html</a>)</li> - <li>Apple MacBook2,1: <b>bin/macbook21/</b></li> - <li>Apple MacBook1,1: <b>bin/macbook21/</b> (it's not a typo; the same ROMs work)</li> - </ul> - - <p>These images use coreboot text-mode graphics:</p> - <ul> - <li>US Qwerty keyboard: <b><i>boardname</i>_usqwerty_txtmode.rom</b></li> - <li>UK Qwerty keyboard: <b><i>boardname</i>_ukqwerty_txtmode.rom</b></li> - <li>US Dvorak keyboard: <b><i>boardname</i>_usdvorak_txtmode.rom</b></li> - <li>UK Dvorak keyboard: <b><i>boardname</i>_ukdvorak_txtmode.rom</b></li> - <li>French Azerty keyboard: <b><i>boardname</i>_frazerty_txtmode.rom</b></li> - <li>French Dvorak (BEPO): <b><i>boardname</i>_frdvbepo_txtmode.rom</b></li> - <li>Italian Qwerty keyboard: <b><i>boardname</i>_itqwerty_txtmode.rom</b></li> - <li>Swedish Qwerty keyboard: <b><i>boardname</i>_svenska_txtmode.rom</b></li> - </ul> - <p>These images use coreboot framebuffer graphics:</p> - <ul> - <li>US Qwerty keyboard: <b><i>boardname</i>_usqwerty_vesafb.rom</b></li> - <li>UK Qwerty keyboard: <b><i>boardname</i>_ukqwerty_vesafb.rom</b></li> - <li>US Dvorak keyboard: <b><i>boardname</i>_usdvorak_vesafb.rom</b></li> - <li>UK Dvorak keyboard: <b><i>boardname</i>_ukdvorak_vesafb.rom</b></li> - <li>French Azerty keyboard: <b><i>boardname</i>_frazerty_vesafb.rom</b></li> - <li>French Dvorak (BEPO): <b><i>boardname</i>_frdvbepo_vesafb.rom</b></li> - <li>Italian Qwerty keyboard: <b><i>boardname</i>_itqwerty_vesafb.rom</b></li> - <li>Swedish Qwerty keyboard: <b><i>boardname</i>_svenska_vesafb.rom</b></li> - </ul> + <h1 id="qemu">QEMU</h1> + + <p> + You don't really do anything here, just run (example):<br/> + $ <b>qemu-system-i386 -M pc -m 512 -bios bin/qemu_i440fx_piix4/qemu_i440fx_piix4_ukdvorak_vesafb.rom -serial stdio</b><br/> + $ <b>qemu-system-i386 -M q35 -m 512 -bios bin/qemu_q35_ich9/qemu_q35_ich9_ukdvorak_vesafb.rom -serial stdio</b> + </p> + <p> + <a href="#pagetop">Back to top of page</a>. + </p> - <p> - The boards for <i>boardname</i> in the examples above can be found by the names of the directories - in <b>./bin/</b> or <b>./resources/libreboot/config/</b>. - </p> - - <p> - _txtmode images come with a working MemTest86+ and GRUB Invaders, both of which require text-mode. - _vesafb images are recommended in most cases. - </p> - - <p> - This will give you your native keyboard layout inside GRUB. The preferences in your OS are not affected, it just makes using - the GRUB command line easier (if you ever need to do that). - <a href="../grub/index.html#grub_keyboard">../grub/index.html#grub_keyboard</a> shows you how this was done. If your native keyboard layout - differs, you can adapt those notes and hack the 'build' script for your needs. - </p> - - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> + </div> - <h1 id="flashrom_lenovobios">X60/X60S/X60T/T60: How to flash the ROMs onto your machine (if running Lenovo BIOS firmware).</h1> + <div class="section"> - <div class="important"> + <h1 id="rom">Recommended ROMs to flash</h1> <p> - Hover over the next paragraph to make it black. + List of directories corresponding to each board: </p> - <p class="lenovobios"> - Following this guide means simply flashing a libreboot ROM. This guide will not (directly) teach you how to make a backup (dump) of the original Lenovo BIOS - because to do so would be to explicitly endorse proprietary software. However, for the purposes of reverse engineering it can be useful - to have a backup. Each copy of the original Lenovo BIOS is tied to the specific machine that it came from; it will not run - on any other machine, even if it's the same type of machine as yours. What this means is that, effectively, you can back it up now (so that you can - re-flash it later if you want to run the original Lenovo BIOS again) or lose it forever. The X60/T60 installation - guide on the coreboot wiki will show you how to do this: - <a href="http://www.coreboot.org/Board:lenovo/x60/Installation">http://www.coreboot.org/Board:lenovo/x60/Installation</a>.<br/> - Do not make this decision lightly! This is your last and only chance. + <ul> + <li>ThinkPad X60, X60s and X60 Tablet: <b>bin/x60/</b></li> + <li>ThinkPad T60: <b>bin/t60/</b> (note, see <a href="../hcl/index.html#supported_t60_list">../hcl/index.html#supported_t60_list</a>)</li> + <li>ThinkPad X200: <b>bin/x200_8mb/</b> (8MiB flash chip) or <b>bin/x200_4mb</b> (4MiB flash chip) (see <a href="../hcl/x200.html">../hcl/x200.html</a>)</li> + <li>Apple MacBook2,1: <b>bin/macbook21/</b></li> + <li>Apple MacBook1,1: <b>bin/macbook21/</b> (it's not a typo; the same ROMs work)</li> + </ul> + + <p>These images use coreboot text-mode graphics:</p> + <ul> + <li>US Qwerty keyboard: <b><i>boardname</i>_usqwerty_txtmode.rom</b></li> + <li>UK Qwerty keyboard: <b><i>boardname</i>_ukqwerty_txtmode.rom</b></li> + <li>US Dvorak keyboard: <b><i>boardname</i>_usdvorak_txtmode.rom</b></li> + <li>UK Dvorak keyboard: <b><i>boardname</i>_ukdvorak_txtmode.rom</b></li> + <li>French Azerty keyboard: <b><i>boardname</i>_frazerty_txtmode.rom</b></li> + <li>French Dvorak (BEPO): <b><i>boardname</i>_frdvbepo_txtmode.rom</b></li> + <li>Italian Qwerty keyboard: <b><i>boardname</i>_itqwerty_txtmode.rom</b></li> + <li>Swedish Qwerty keyboard: <b><i>boardname</i>_svenska_txtmode.rom</b></li> + </ul> + <p>These images use coreboot framebuffer graphics:</p> + <ul> + <li>US Qwerty keyboard: <b><i>boardname</i>_usqwerty_vesafb.rom</b></li> + <li>UK Qwerty keyboard: <b><i>boardname</i>_ukqwerty_vesafb.rom</b></li> + <li>US Dvorak keyboard: <b><i>boardname</i>_usdvorak_vesafb.rom</b></li> + <li>UK Dvorak keyboard: <b><i>boardname</i>_ukdvorak_vesafb.rom</b></li> + <li>French Azerty keyboard: <b><i>boardname</i>_frazerty_vesafb.rom</b></li> + <li>French Dvorak (BEPO): <b><i>boardname</i>_frdvbepo_vesafb.rom</b></li> + <li>Italian Qwerty keyboard: <b><i>boardname</i>_itqwerty_vesafb.rom</b></li> + <li>Swedish Qwerty keyboard: <b><i>boardname</i>_svenska_vesafb.rom</b></li> + </ul> + + <p> + The boards for <i>boardname</i> in the examples above can be found by the names of the directories + in <b>./bin/</b> or <b>./resources/libreboot/config/</b>. </p> <p> - The following is for the libreboot image and *not* the factory bios dump: + _txtmode images come with a working MemTest86+ and GRUB Invaders, both of which require text-mode. + _vesafb images are recommended in most cases. </p> + <p> - Check the last two 64K regions in your ROM file (libreboot.rom in this example):<br/> - <b>$ dd if=libreboot.rom of=top64k.bin bs=1 skip=$[$(stat -c %s libreboot.rom) - 0x10000] count=64k</b><br/> - <b>$ dd if=libreboot.rom of=lower64k.bin bs=1 skip=$[$(stat -c %s libreboot.rom) - 0x20000] count=64k</b><br/> - <b>$ sha512sum lower64k.bin top64k.bin</b><br/> - Make *sure* that they match before you continue. The ROMs included pre-compiled in libreboot should already match. - If they don't match, then do this (based on those instructions from <a href="http://www.coreboot.org/Board:lenovo/x60/Installation">coreboot wiki</a>):<br/> - <b>$ dd if=top64k.bin of=libreboot.rom bs=1 seek=$[$(stat -c %s libreboot.rom) - 0x20000] count=64k conv=notrunc</b><br/> - After this, the ROM will be safe to flash. Explanation is provided in <a href="../git/index.html#build_bucts">../git/index.html#build_bucts</a>. + This will give you your native keyboard layout inside GRUB. The preferences in your OS are not affected, it just makes using + the GRUB command line easier (if you ever need to do that). + <a href="../grub/index.html#grub_keyboard">../grub/index.html#grub_keyboard</a> shows you how this was done. If your native keyboard layout + differs, you can adapt those notes and hack the 'build' script for your needs. </p> - </div> - - <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> + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> + + <div class="section"> + + <h1 id="flashrom_lenovobios">X60/X60S/X60T/T60: How to flash the ROMs onto your machine (if running Lenovo BIOS firmware).</h1> + + <div class="important"> + + <p> + Hover over the next paragraph to make it black. + </p> + <p class="lenovobios"> + Following this guide means simply flashing a libreboot ROM. This guide will not (directly) teach you how to make a backup (dump) of the original Lenovo BIOS + because to do so would be to explicitly endorse proprietary software. However, for the purposes of reverse engineering it can be useful + to have a backup. Each copy of the original Lenovo BIOS is tied to the specific machine that it came from; it will not run + on any other machine, even if it's the same type of machine as yours. What this means is that, effectively, you can back it up now (so that you can + re-flash it later if you want to run the original Lenovo BIOS again) or lose it forever. The X60/T60 installation + guide on the coreboot wiki will show you how to do this: + <a href="http://www.coreboot.org/Board:lenovo/x60/Installation">http://www.coreboot.org/Board:lenovo/x60/Installation</a>.<br/> + Do not make this decision lightly! This is your last and only chance. + </p> + + <p> + The following is for the libreboot image and *not* the factory bios dump: + </p> + <p> + Check the last two 64K regions in your ROM file (libreboot.rom in this example):<br/> + <b>$ dd if=libreboot.rom of=top64k.bin bs=1 skip=$[$(stat -c %s libreboot.rom) - 0x10000] count=64k</b><br/> + <b>$ dd if=libreboot.rom of=lower64k.bin bs=1 skip=$[$(stat -c %s libreboot.rom) - 0x20000] count=64k</b><br/> + <b>$ sha512sum lower64k.bin top64k.bin</b><br/> + Make *sure* that they match before you continue. The ROMs included pre-compiled in libreboot should already match. + If they don't match, then do this (based on those instructions from <a href="http://www.coreboot.org/Board:lenovo/x60/Installation">coreboot wiki</a>):<br/> + <b>$ dd if=top64k.bin of=libreboot.rom bs=1 seek=$[$(stat -c %s libreboot.rom) - 0x20000] count=64k conv=notrunc</b><br/> + After this, the ROM will be safe to flash. Explanation is provided in <a href="../git/index.html#build_bucts">../git/index.html#build_bucts</a>. + </p> + + </div> + + <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>"YOURBOARD/YOURROM" should be replaced with what is correct as per <a href="#rom">#rom</a>. Alternatively + you may be using your own custom ROM. Adapt.</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> + Run the script:<br/> + <b>$ sudo ./lenovobios_firstflash bin/<a href="#rom">YOURBOARD/YOURROM</a>.</b> </p> - </div> - <p>"YOURBOARD/YOURROM" should be replaced with what is correct as per <a href="#rom">#rom</a>. Alternatively - you may be using your own custom ROM. Adapt.</p> + <div class="important"> - <p> - Run the script:<br/> - <b>$ sudo ./lenovobios_firstflash bin/<a href="#rom">YOURBOARD/YOURROM</a>.</b> - </p> + <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> - <div class="important"> + <p> + You should also see within the output the following:<br/> + <b>"Flash chip is in an unknown state"</b>, <b>"FAILED"</b> and <b>"DO NOT SHUTDOWN OR REBOOT"</b><br/> + Seeing this means that the operation was a <b>resounding</b> success! <b>DON'T PANIC</b>. + </p> - <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> + 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> - You should also see within the output the following:<br/> - <b>"Flash chip is in an unknown state"</b>, <b>"FAILED"</b> and <b>"DO NOT SHUTDOWN OR REBOOT"</b><br/> - Seeing this means that the operation was a <b>resounding</b> success! <b>DON'T PANIC</b>. - </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> <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>. + <b> + If you boot and you see nothing, try turning up the backlight (Fn+Home). + </b> </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). + When you have booted up again:<br/> + <b>$ sudo ./lenovobios_secondflash bin/<a href="#rom">YOURBOARD/YOURROM</a></b> </p> - </div> + <div class="important"> - <p> - <b> - If you boot and you see nothing, try turning up the backlight (Fn+Home). - </b> - </p> + <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> - When you have booted up again:<br/> - <b>$ sudo ./lenovobios_secondflash bin/<a href="#rom">YOURBOARD/YOURROM</a></b> - </p> + <p> + You should also see within the output the following:<br/> + <b>"Verifying flash... VERIFIED."</b> + </p> - <div class="important"> + <p>Shut down again, wait a few seconds, and then boot.</p> - <p> - You should see within the output the following:<br/> - <b>"Updated BUC.TS=0 - 128kb address range 0xFFFE0000-0xFFFFFFFF is untranslated"</b> - </p> + </div> <p> - You should also see within the output the following:<br/> - <b>"Verifying flash... VERIFIED."</b> + Some thinkpads come with WWAN cards installed, along with sim cards. These use non-free firmware and should be removed. + You might also want to remove bluetooth. See <a href="../security/x60_security.html">../security/x60_security.html</a> and + <a href="../security/t60_security.html">../security/t60_security.html</a>. </p> - <p>Shut down again, wait a few seconds, and then boot.</p> + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> - </div> + <div class="section"> - <p> - Some thinkpads come with WWAN cards installed, along with sim cards. These use non-free firmware and should be removed. - You might also want to remove bluetooth. See <a href="../security/x60_security.html">../security/x60_security.html</a> and - <a href="../security/t60_security.html">../security/t60_security.html</a>. - </p> + <h1 id="flashrom_macbook21">macbook21: How to flash your ROM (if running Apple EFI firmware)</h1> - <p><a href="#pagetop">Back to top of page.</a></p> + <div class="important"> -<hr/> + <p> + Hover over the next paragraph to make it black. + </p> + <p class="lenovobios"> + Following this guide means simply flashing a libreboot ROM. This guide will not (directly) teach you how to make a backup (dump) of the original Apple EFI firmware + because to do so would be to explicitly endorse proprietary software. However, for the purposes of reverse engineering it can be useful + to have a backup. Each copy of the original Apple EFI is (believed, but unproven to be) tied to the specific machine that it came from; it will not (as is believed) run + on any other machine, even if it's the same type of machine as yours. What this means is that, effectively, you can back it up now (so that you can + re-flash it later if you want to run the original Apple EFI firmware again) or lose it forever. The macbook21 installation + guide on the coreboot wiki will show you how to do this: + <a href="http://www.coreboot.org/Board:apple/macbook21">http://www.coreboot.org/Board:apple/macbook21</a>.<br/> + Do not make this decision lightly! This is (very likely) your last and only chance. + </p> - <h1 id="flashrom_macbook21">macbook21: How to flash your ROM (if running Apple EFI firmware)</h1> + <p> + (this theory is untested at the time of writing) + </p> - <div class="important"> + <p> + Note: <b>If you have a MacBook1,1 then these instructions will not work. See <a href="../hcl/index.html#macbook11">../hcl/index.html#macbook11</a> for MacBook1,1 flashing instructions.</b> + </p> + + </div> <p> - Hover over the next paragraph to make it black. + <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 class="lenovobios"> - Following this guide means simply flashing a libreboot ROM. This guide will not (directly) teach you how to make a backup (dump) of the original Apple EFI firmware - because to do so would be to explicitly endorse proprietary software. However, for the purposes of reverse engineering it can be useful - to have a backup. Each copy of the original Apple EFI is (believed, but unproven to be) tied to the specific machine that it came from; it will not (as is believed) run - on any other machine, even if it's the same type of machine as yours. What this means is that, effectively, you can back it up now (so that you can - re-flash it later if you want to run the original Apple EFI firmware again) or lose it forever. The macbook21 installation - guide on the coreboot wiki will show you how to do this: - <a href="http://www.coreboot.org/Board:apple/macbook21">http://www.coreboot.org/Board:apple/macbook21</a>.<br/> - Do not make this decision lightly! This is (very likely) your last and only chance. + + <p> + Be sure to read the information in <a href="../hcl/index.html#macbook21">../hcl/index.html#macbook21</a>. </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> - (this theory is untested at the time of writing) + Look at <a href="#rom">#rom</a> to see which ROM is suitable for your machine. Alternatively you may be using your own + custom ROM. Adapt. </p> <p> - Note: <b>If you have a MacBook1,1 then these instructions will not work. See <a href="../hcl/index.html#macbook11">../hcl/index.html#macbook11</a> for MacBook1,1 flashing instructions.</b> + Flashing is actually easy (compared to X60/T60).<br/> + <b>$ sudo flashrom -p internal:laptop=force_I_want_a_brick -w bin/<a href="#rom">YOURBOARD/YOURROM</a></b> </p> - </div> + <p> + Alternatively, a script is provided which does the same thing:<br/> + <b>$ sudo ./macbook21_firstflash bin/<a href="#rom">YOURBOARD/YOURROM</a></b> + </p> - <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> + <div class="important"> - <p> - Be sure to read the information in <a href="../hcl/index.html#macbook21">../hcl/index.html#macbook21</a>. - </p> + <p> + You should also see within the output the following:<br/> + <b>"Verifying flash... VERIFIED."</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> + If you see that, great! Shut down now (power off). Wait a few seconds and then boot! + </p> - <p> - Look at <a href="#rom">#rom</a> to see which ROM is suitable for your machine. Alternatively you may be using your own - custom ROM. Adapt. - </p> + <p> + <b> + If you boot and you see nothing, try turning up the backlight (F2 for macbook21). + </b> + </p> - <p> - Flashing is actually easy (compared to X60/T60).<br/> - <b>$ sudo flashrom -p internal:laptop=force_I_want_a_brick -w bin/<a href="#rom">YOURBOARD/YOURROM</a></b> - </p> - <p> - Alternatively, a script is provided which does the same thing:<br/> - <b>$ sudo ./macbook21_firstflash bin/<a href="#rom">YOURBOARD/YOURROM</a></b> - </p> + </div> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> - <div class="important"> + <div class="section"> + + <h1 id="flashrom">X60/X60S/X60T/T60/X200/macbook21: How to flash the ROMs onto your machine (if running libreboot or coreboot already)</h1> <p> - You should also see within the output the following:<br/> - <b>"Verifying flash... VERIFIED."</b> + <b> + These instructions work for the Lenovo ThinkPad X60/X60S/X60T/T60 and Apple MacBook2,1. + </b> </p> - <p> - If you see that, great! Shut down now (power off). Wait a few seconds and then boot! + <b> + This assumes that you already have coreboot or libreboot running. + </b> </p> - <p> <b> - If you boot and you see nothing, try turning up the backlight (F2 for macbook21). + If you have Lenovo BIOS running (X60/X60S/X60T/T60), go to <a href="#flashrom_lenovobios">#flashrom_lenovobios</a> instead. </b> </p> - - - </div> - - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> - - <h1 id="flashrom">X60/X60S/X60T/T60/X200/macbook21: How to flash the ROMs onto your machine (if running libreboot or coreboot already)</h1> - - <p> - <b> - These instructions work for the Lenovo ThinkPad X60/X60S/X60T/T60 and Apple MacBook2,1. - </b> - </p> - <p> - <b> - This assumes that you already have coreboot or libreboot running. - </b> - </p> - <p> - <b> - If you have Lenovo BIOS running (X60/X60S/X60T/T60), go to <a href="#flashrom_lenovobios">#flashrom_lenovobios</a> instead. - </b> - </p> - <p> - <b> - If you have Lenovo BIOS running (X200), go to <a href="x200_external.html">x200_external.html</a> instead. - </b> - </p> - <p> - <b> - If you have Apple EFI firmware running (macbook21), go to <a href="#flashrom_macbook21">#flashrom_macbook21</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> - <p> - <b> - If you have an X200 with libreboot or coreboot already running, note that - the Gbe in the boot flash contains your MAC address. You will need to change the default - MAC address inside the ROM images before flashing a new libreboot image. See - <a href="../hcl/x200_remove_me.html#ich9gen">ich9gen</a> for details. - - Another important note about the X200: even if you do already have libreboot or coreboot, - it is possible for the user to write-protect regions in the flash chip, by modifying - the flash descriptor. If you have locked regions, you will need an external flasher - (see <a href="x200_external.html">x200_external.html</a>) to re-flash those regions. By default, - the X200 ROM images in libreboot contain a descriptor+gbe with all regions unlocked. - </b> - </p> - <p> - <b> - If you are flashing an Apple MacBook2,1, be sure to read the information in <a href="../hcl/index.html#macbook21">../hcl/index.html#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> + <b> + If you have Lenovo BIOS running (X200), go to <a href="x200_external.html">x200_external.html</a> instead. + </b> </p> - </div> - <p> - Look at <a href="#rom">#rom</a> to see which ROM is suitable for your machine. Alternative you may be using your own - custom ROM. Adapt. - </p> - <p> - Flash the ROM:<br/> - <b>$ sudo ./flash bin/<a href="#rom">YOURBOARD/YOURROM</a></b> - </p> - <p> - If you are flashing a ThinkPad X60 that is currently running libreboot 5th release or lower - (anything on or before June 22nd 2014), then use this to upgrade:<br/> - <b>$ sudo ./x60flashfrom5 bin/<a href="#rom">YOURBOARD/YOURROM</a></b> - </p> - - <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. + <b> + If you have Apple EFI firmware running (macbook21), go to <a href="#flashrom_macbook21">#flashrom_macbook21</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> + <p> + <b> + If you have an X200 with libreboot or coreboot already running, note that + the Gbe in the boot flash contains your MAC address. You will need to change the default + MAC address inside the ROM images before flashing a new libreboot image. See + <a href="../hcl/x200_remove_me.html#ich9gen">ich9gen</a> for details. + + Another important note about the X200: even if you do already have libreboot or coreboot, + it is possible for the user to write-protect regions in the flash chip, by modifying + the flash descriptor. If you have locked regions, you will need an external flasher + (see <a href="x200_external.html">x200_external.html</a>) to re-flash those regions. By default, + the X200 ROM images in libreboot contain a descriptor+gbe with all regions unlocked. + </b> </p> - <p> <b> - If you boot and you see nothing, try turning up the backlight (Fn+Home for X60/X60S/X60T/T60/X200, F2 for macbook21). + If you are flashing an Apple MacBook2,1, be sure to read the information in <a href="../hcl/index.html#macbook21">../hcl/index.html#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 <a href="#rom">#rom</a> to see which ROM is suitable for your machine. Alternative you may be using your own + custom ROM. Adapt. + </p> + <p> + Flash the ROM:<br/> + <b>$ sudo ./flash bin/<a href="#rom">YOURBOARD/YOURROM</a></b> + </p> + <p> + If you are flashing a ThinkPad X60 that is currently running libreboot 5th release or lower + (anything on or before June 22nd 2014), then use this to upgrade:<br/> + <b>$ sudo ./x60flashfrom5 bin/<a href="#rom">YOURBOARD/YOURROM</a></b> + </p> - </div> + <div class="important"> - <p> - Some thinkpads come with WWAN cards installed, along with sim cards. These use non-free firmware and should be removed. - You might also want to remove bluetooth. See <a href="../security/x60_security.html">../security/x60_security.html</a> and - <a href="../security/t60_security.html">../security/t60_security.html</a>. - </p> + <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> - <p><a href="#pagetop">Back to top of page</a></p> + <p> + <b> + If you boot and you see nothing, try turning up the backlight (Fn+Home for X60/X60S/X60T/T60/X200, F2 for macbook21). + </b> + </p> -<hr/> + </div> - <p> - Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> + <p> + Some thinkpads come with WWAN cards installed, along with sim cards. These use non-free firmware and should be removed. + You might also want to remove bluetooth. See <a href="../security/x60_security.html">../security/x60_security.html</a> and + <a href="../security/t60_security.html">../security/t60_security.html</a>. + </p> + + <p><a href="#pagetop">Back to top of page</a></p> + + </div> - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + <div class="section"> + + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. + </p> + + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. + </p> + + </div> </body> </html> diff --git a/docs/install/t60_unbrick.html b/docs/install/t60_unbrick.html index ba010d3e..a36f961e 100644 --- a/docs/install/t60_unbrick.html +++ b/docs/install/t60_unbrick.html @@ -13,161 +13,166 @@ <body> - <header> + <div class="section"> <h1>Unbricking the ThinkPad T60</h1> - <aside>This guide will show you how to recover from a bad flash that prevents your ThinkPad T60 from booting.</aside> - </header> - - <p>Or go <a href="index.html">back to main index</a></p> - - <h2>Table of Contents</h2> - <ul> - <li> - Types of brick: - <ul> - <li><a href="#bucts_brick">Brick type 1: bucts not reset</a></li> - <li><a href="#recovery">Brick type 2: bad rom (or user error), machine won't boot</a></li> - </ul> - </li> - </ul> - - <h1 id="bucts_brick">Brick type 1: bucts not reset.</h1> - <p> - You still have Lenovo BIOS, or you had libreboot running and you flashed another ROM; and you had bucts 1 set and - the ROM wasn't dd'd.* or if Lenovo BIOS was present and libreboot wasn't flashed.<br/><br/> - - In this case, unbricking is easy: reset BUC.TS to 0 by removing that yellow cmos coin (it's a battery) and putting it back after a minute or two:<br/> - <img src="../images/t60_dev/0006.JPG" alt="" /><br/><br/> - - *Those dd commands should be applied to all newly compiled T60 ROM images (the ROM images in libreboot binary archives already have this applied!):<br/> - dd if=coreboot.rom of=top64k.bin bs=1 skip=$[$(stat -c %s coreboot.rom) - 0x10000] count=64k<br/> - dd if=coreboot.rom bs=1 skip=$[$(stat -c %s coreboot.rom) - 0x20000] count=64k | hexdump<br/> - dd if=top64k.bin of=coreboot.rom bs=1 seek=$[$(stat -c %s coreboot.rom) - 0x20000] count=64k conv=notrunc<br/> - (doing this makes the ROM suitable for use when flashing a machine that still has Lenovo BIOS running, - using those instructions: <a href="http://www.coreboot.org/Board:lenovo/x60/Installation">http://www.coreboot.org/Board:lenovo/x60/Installation</a>. - (it says x60, but instructions for t60 are identical) - </p> - - <h1 id="recovery">bad rom (or user error), machine won't boot</h1> - - <p> - In this scenario, you compiled a ROM that had an incorrect configuration, or there is an actual bug preventing your machine from - booting. Or, maybe, you set BUC.TS to 0 and shut down after first flash while Lenovo BIOS was running. In any case, your machine is bricked and will not boot at all. - </p> - <p> - "Unbricking" means flashing a known-good (working) ROM. The problem: you can't boot the machine, making this difficult. In this situation, external hardware (see hardware requirements above) is needed which can flash the SPI chip (where libreboot resides). - </p> - - <p> - Remove those screws and remove the HDD:<br/> - <img src="../images/t60_dev/0001.JPG" alt="" /> <img src="../images/t60_dev/0002.JPG" alt="" /> - </p> - - <p> - Lift off the palm rest:<br/> - <img src="../images/t60_dev/0003.JPG" alt="" /> - </p> - - <p> - Lift up the keyboard, pull it back a bit, flip it over like that and then disconnect it from the board:<br/> - <img src="../images/t60_dev/0004.JPG" alt="" /> <img src="../images/t60_dev/0005.JPG" alt="" /> <img src="../images/t60_dev/0006.JPG" alt="" /> - </p> - - <p> - Gently wedge both sides loose:<br/> - <img src="../images/t60_dev/0007.JPG" alt="" /> <img src="../images/t60_dev/0008.JPG" alt="" /> - </p> - - <p> - Remove that cable from the position:<br/> - <img src="../images/t60_dev/0009.JPG" alt="" /> <img src="../images/t60_dev/0010.JPG" alt="" /> - </p> - - <p> - Now remove that bezel. Remove wifi, nvram battery and speaker connector (also remove 56k modem, on the left of wifi):<br/> - <img src="../images/t60_dev/0011.JPG" alt="" /> - </p> - - <p> - Remove those screws:<br/> - <img src="../images/t60_dev/0012.JPG" alt="" /> - </p> - - <p> - Disconnect the power jack:<br/> - <img src="../images/t60_dev/0013.JPG" alt="" /> - </p> - - <p> - Remove nvram battery:<br/> - <img src="../images/t60_dev/0014.JPG" alt="" /> - </p> - - <p> - Disconnect cable (for 56k modem) and disconnect the other cable:<br/> - <img src="../images/t60_dev/0015.JPG" alt="" /> <img src="../images/t60_dev/0016.JPG" alt="" /> - </p> - - <p> - Disconnect speaker cable:<br/> - <img src="../images/t60_dev/0017.JPG" alt="" /> - </p> - - <p> - Disconnect the other end of the 56k modem cable:<br/> - <img src="../images/t60_dev/0018.JPG" alt="" /> - </p> - - <p> - Make sure you removed it:<br/> - <img src="../images/t60_dev/0019.JPG" alt="" /> - </p> - - <p> - Unscrew those:<br/> - <img src="../images/t60_dev/0020.JPG" alt="" /> - </p> - - <p> - Make sure you removed those:<br/> - <img src="../images/t60_dev/0021.JPG" alt="" /> - </p> - - <p> - Disconnect LCD cable from board:<br/> - <img src="../images/t60_dev/0022.JPG" alt="" /> - </p> - - <p> - Remove those screws then remove the LCD assembly:<br/> - <img src="../images/t60_dev/0023.JPG" alt="" /> <img src="../images/t60_dev/0024.JPG" alt="" /> <img src="../images/t60_dev/0025.JPG" alt="" /> - </p> - - <p> - Once again, make sure you removed those:<br/> - <img src="../images/t60_dev/0026.JPG" alt="" /> - </p> - - <p> - Remove the shielding containing the motherboard, then flip it over. Remove these screws, placing them on a steady - surface in the same layout as they were in before you removed them. Also, you should mark each screw hole after removing the - screw (a permanent marker pen will do), this is so that you have a point of reference when re-assembling the machine:<br/> - <img src="../images/t60_dev/0027.JPG" alt="" /> <img src="../images/t60_dev/0028.JPG" alt="" /> <img src="../images/t60_dev/0029.JPG" alt="" /> - <img src="../images/t60_dev/0031.JPG" alt="" /> <img src="../images/t60_dev/0032.JPG" alt="" /> <img src="../images/t60_dev/0033.JPG" alt="" /> - </p> - - <p> - Now wire up the BBB and the Pomona with your PSU.<br/> - Refer to <a href="bbb_setup.html">bbb_setup.html</a> for how to setup - the BBB for flashing.<br/> - <b>Note, the guide mentions a 3.3v DC PSU but you don't need this on the T60: - if you don't have or don't want to use an external PSU, then make - sure not to connect the red/black 3.3v leads mentioned in the guide; - instead, connect the AC adapter (the one that normally charges your - battery) so that the board has power (but don't boot it up)</b><br/> - <img src="../images/t60_dev/0030.JPG" alt="" /><br/> - Correlate the following with the BBB guide linked above: - </p> + <p>This guide will show you how to recover from a bad flash that prevents your ThinkPad T60 from booting.</p> + <p><a href="index.html">Back to previous index</a></p> + </div> + + <div class="section"> + <h2>Table of Contents</h2> + <ul> + <li> + Types of brick: + <ul> + <li><a href="#bucts_brick">Brick type 1: bucts not reset</a></li> + <li><a href="#recovery">Brick type 2: bad rom (or user error), machine won't boot</a></li> + </ul> + </li> + </ul> + </div> + + <div class="section"> + <h1 id="bucts_brick">Brick type 1: bucts not reset.</h1> + <p> + You still have Lenovo BIOS, or you had libreboot running and you flashed another ROM; and you had bucts 1 set and + the ROM wasn't dd'd.* or if Lenovo BIOS was present and libreboot wasn't flashed.<br/><br/> + + In this case, unbricking is easy: reset BUC.TS to 0 by removing that yellow cmos coin (it's a battery) and putting it back after a minute or two:<br/> + <img src="../images/t60_dev/0006.JPG" alt="" /><br/><br/> + + *Those dd commands should be applied to all newly compiled T60 ROM images (the ROM images in libreboot binary archives already have this applied!):<br/> + dd if=coreboot.rom of=top64k.bin bs=1 skip=$[$(stat -c %s coreboot.rom) - 0x10000] count=64k<br/> + dd if=coreboot.rom bs=1 skip=$[$(stat -c %s coreboot.rom) - 0x20000] count=64k | hexdump<br/> + dd if=top64k.bin of=coreboot.rom bs=1 seek=$[$(stat -c %s coreboot.rom) - 0x20000] count=64k conv=notrunc<br/> + (doing this makes the ROM suitable for use when flashing a machine that still has Lenovo BIOS running, + using those instructions: <a href="http://www.coreboot.org/Board:lenovo/x60/Installation">http://www.coreboot.org/Board:lenovo/x60/Installation</a>. + (it says x60, but instructions for t60 are identical) + </p> + </div> + + <div class="section"> + + <h1 id="recovery">bad rom (or user error), machine won't boot</h1> + + <p> + In this scenario, you compiled a ROM that had an incorrect configuration, or there is an actual bug preventing your machine from + booting. Or, maybe, you set BUC.TS to 0 and shut down after first flash while Lenovo BIOS was running. In any case, your machine is bricked and will not boot at all. + </p> + <p> + "Unbricking" means flashing a known-good (working) ROM. The problem: you can't boot the machine, making this difficult. In this situation, external hardware (see hardware requirements above) is needed which can flash the SPI chip (where libreboot resides). + </p> + + <p> + Remove those screws and remove the HDD:<br/> + <img src="../images/t60_dev/0001.JPG" alt="" /> <img src="../images/t60_dev/0002.JPG" alt="" /> + </p> + + <p> + Lift off the palm rest:<br/> + <img src="../images/t60_dev/0003.JPG" alt="" /> + </p> + + <p> + Lift up the keyboard, pull it back a bit, flip it over like that and then disconnect it from the board:<br/> + <img src="../images/t60_dev/0004.JPG" alt="" /> <img src="../images/t60_dev/0005.JPG" alt="" /> <img src="../images/t60_dev/0006.JPG" alt="" /> + </p> + + <p> + Gently wedge both sides loose:<br/> + <img src="../images/t60_dev/0007.JPG" alt="" /> <img src="../images/t60_dev/0008.JPG" alt="" /> + </p> + + <p> + Remove that cable from the position:<br/> + <img src="../images/t60_dev/0009.JPG" alt="" /> <img src="../images/t60_dev/0010.JPG" alt="" /> + </p> + + <p> + Now remove that bezel. Remove wifi, nvram battery and speaker connector (also remove 56k modem, on the left of wifi):<br/> + <img src="../images/t60_dev/0011.JPG" alt="" /> + </p> + + <p> + Remove those screws:<br/> + <img src="../images/t60_dev/0012.JPG" alt="" /> + </p> + + <p> + Disconnect the power jack:<br/> + <img src="../images/t60_dev/0013.JPG" alt="" /> + </p> + + <p> + Remove nvram battery:<br/> + <img src="../images/t60_dev/0014.JPG" alt="" /> + </p> + + <p> + Disconnect cable (for 56k modem) and disconnect the other cable:<br/> + <img src="../images/t60_dev/0015.JPG" alt="" /> <img src="../images/t60_dev/0016.JPG" alt="" /> + </p> + + <p> + Disconnect speaker cable:<br/> + <img src="../images/t60_dev/0017.JPG" alt="" /> + </p> + + <p> + Disconnect the other end of the 56k modem cable:<br/> + <img src="../images/t60_dev/0018.JPG" alt="" /> + </p> + + <p> + Make sure you removed it:<br/> + <img src="../images/t60_dev/0019.JPG" alt="" /> + </p> + + <p> + Unscrew those:<br/> + <img src="../images/t60_dev/0020.JPG" alt="" /> + </p> + + <p> + Make sure you removed those:<br/> + <img src="../images/t60_dev/0021.JPG" alt="" /> + </p> + + <p> + Disconnect LCD cable from board:<br/> + <img src="../images/t60_dev/0022.JPG" alt="" /> + </p> + + <p> + Remove those screws then remove the LCD assembly:<br/> + <img src="../images/t60_dev/0023.JPG" alt="" /> <img src="../images/t60_dev/0024.JPG" alt="" /> <img src="../images/t60_dev/0025.JPG" alt="" /> + </p> + + <p> + Once again, make sure you removed those:<br/> + <img src="../images/t60_dev/0026.JPG" alt="" /> + </p> + + <p> + Remove the shielding containing the motherboard, then flip it over. Remove these screws, placing them on a steady + surface in the same layout as they were in before you removed them. Also, you should mark each screw hole after removing the + screw (a permanent marker pen will do), this is so that you have a point of reference when re-assembling the machine:<br/> + <img src="../images/t60_dev/0027.JPG" alt="" /> <img src="../images/t60_dev/0028.JPG" alt="" /> <img src="../images/t60_dev/0029.JPG" alt="" /> + <img src="../images/t60_dev/0031.JPG" alt="" /> <img src="../images/t60_dev/0032.JPG" alt="" /> <img src="../images/t60_dev/0033.JPG" alt="" /> + </p> + + <p> + Now wire up the BBB and the Pomona with your PSU.<br/> + Refer to <a href="bbb_setup.html">bbb_setup.html</a> for how to setup + the BBB for flashing.<br/> + <b>Note, the guide mentions a 3.3v DC PSU but you don't need this on the T60: + if you don't have or don't want to use an external PSU, then make + sure not to connect the red/black 3.3v leads mentioned in the guide; + instead, connect the AC adapter (the one that normally charges your + battery) so that the board has power (but don't boot it up)</b><br/> + <img src="../images/t60_dev/0030.JPG" alt="" /><br/> + Correlate the following with the BBB guide linked above: + </p> <pre> POMONA 5250: === DVD drive ==== @@ -179,98 +184,102 @@ POMONA 5250: <i>This is how you will connect. Numbers refer to pin numbers on the BBB, on the plugs near the DC jack.</i> </pre> - <p> - Connect the pomona from the BBB to the flash chip. No pics unfortunately. (use the text diagram above). - </p> - - <p> - SSH'd into the BBB:<br/> - # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -w yourrom.rom</b> - </p> - <p> - It should be <b>Verifying flash... VERIFIED</b> at the end. If flashrom complains about multiple flash chip - definitions detected, then choose one of them following the instructions in the output. - </p> - - <p> - Put those screws back:<br/> - <img src="../images/t60_dev/0047.JPG" alt="" /> - </p> - - <p> - Put it back into lower chassis:<br/> - <img src="../images/t60_dev/0048.JPG" alt="" /> - </p> - - <p> - Attach LCD and insert screws (also, attach the lcd cable to the board):<br/> - <img src="../images/t60_dev/0049.JPG" alt="" /> - </p> - - <p> - Insert those screws:<br/> - <img src="../images/t60_dev/0050.JPG" alt="" /> - </p> - - <p> - On the CPU (and there is another chip south-east to it, sorry forgot to take pic) - clean off the old thermal paste (with the alcohol) and apply new (Artic Silver 5 is good, others are good too) - you should also clean the heatsink the same way<br/> - <img src="../images/t60_dev/0051.JPG" alt="" /> - </p> - - <p> - Attach the heatsink and install the screws (also, make sure to install the AC jack as highlighted):<br/> - <img src="../images/t60_dev/0052.JPG" alt="" /> + <p> + Connect the pomona from the BBB to the flash chip. No pics unfortunately. (use the text diagram above). + </p> + + <p> + SSH'd into the BBB:<br/> + # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -w yourrom.rom</b> + </p> + <p> + It should be <b>Verifying flash... VERIFIED</b> at the end. If flashrom complains about multiple flash chip + definitions detected, then choose one of them following the instructions in the output. + </p> + + <p> + Put those screws back:<br/> + <img src="../images/t60_dev/0047.JPG" alt="" /> + </p> + + <p> + Put it back into lower chassis:<br/> + <img src="../images/t60_dev/0048.JPG" alt="" /> + </p> + + <p> + Attach LCD and insert screws (also, attach the lcd cable to the board):<br/> + <img src="../images/t60_dev/0049.JPG" alt="" /> + </p> + + <p> + Insert those screws:<br/> + <img src="../images/t60_dev/0050.JPG" alt="" /> + </p> + + <p> + On the CPU (and there is another chip south-east to it, sorry forgot to take pic) + clean off the old thermal paste (with the alcohol) and apply new (Artic Silver 5 is good, others are good too) + you should also clean the heatsink the same way<br/> + <img src="../images/t60_dev/0051.JPG" alt="" /> + </p> + + <p> + Attach the heatsink and install the screws (also, make sure to install the AC jack as highlighted):<br/> + <img src="../images/t60_dev/0052.JPG" alt="" /> + </p> + + <p> + Reinstall that upper bezel:<br/> + <img src="../images/t60_dev/0053.JPG" alt="" /> + </p> + + <p> + Do that:<br/> + <img src="../images/t60_dev/0054.JPG" alt="" /> <img src="../images/t60_dev/0055.JPG" alt="" /> + </p> + + <p> + Re-attach modem, wifi, (wwan?), and all necessary cables. Sorry, forgot to take pics. Look at previous removal steps to see where they go back to. + </p> + + <p> + Attach keyboard and install nvram battery:<br/> + <img src="../images/t60_dev/0056.JPG" alt="" /> <img src="../images/t60_dev/0057.JPG" alt="" /> + </p> + + <p> + Place keyboard and (sorry, forgot to take pics) reinstall the palmrest and insert screws on the underside:<br/> + <img src="../images/t60_dev/0058.JPG" alt="" /> + </p> + + <p> + It lives!<br/> + <img src="../images/t60_dev/0071.JPG" alt="" /> <img src="../images/t60_dev/0072.JPG" alt="" /> <img src="../images/t60_dev/0073.JPG" alt="" /> + </p> + + <p> + Always stress test ('stress -c 2' and xsensors. below 90C is ok) when replacing cpu paste/heatsink:<br/> + <img src="../images/t60_dev/0074.JPG" alt="" /> + </p> + + </div> + + <div class="section"> + + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. + </p> + + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. </p> - - <p> - Reinstall that upper bezel:<br/> - <img src="../images/t60_dev/0053.JPG" alt="" /> - </p> - - <p> - Do that:<br/> - <img src="../images/t60_dev/0054.JPG" alt="" /> <img src="../images/t60_dev/0055.JPG" alt="" /> - </p> - - <p> - Re-attach modem, wifi, (wwan?), and all necessary cables. Sorry, forgot to take pics. Look at previous removal steps to see where they go back to. - </p> - - <p> - Attach keyboard and install nvram battery:<br/> - <img src="../images/t60_dev/0056.JPG" alt="" /> <img src="../images/t60_dev/0057.JPG" alt="" /> - </p> - - <p> - Place keyboard and (sorry, forgot to take pics) reinstall the palmrest and insert screws on the underside:<br/> - <img src="../images/t60_dev/0058.JPG" alt="" /> - </p> - - <p> - It lives!<br/> - <img src="../images/t60_dev/0071.JPG" alt="" /> <img src="../images/t60_dev/0072.JPG" alt="" /> <img src="../images/t60_dev/0073.JPG" alt="" /> - </p> - - <p> - Always stress test ('stress -c 2' and xsensors. below 90C is ok) when replacing cpu paste/heatsink:<br/> - <img src="../images/t60_dev/0074.JPG" alt="" /> - </p> - -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + + </div> </body> </html> diff --git a/docs/install/x200_external.html b/docs/install/x200_external.html index 84bf2edc..66f938f2 100644 --- a/docs/install/x200_external.html +++ b/docs/install/x200_external.html @@ -13,62 +13,61 @@ <body> - <header> + <div class="section"> <h1 id="pagetop">Flashing the X200 with a BeagleBone Black</h1> - <aside>Initial flashing instructions for X200.</aside> - </header> - - <p> - This guide is for those who want libreboot on their ThinkPad X200 - while they still have the original Lenovo BIOS present. This guide - can also be followed (adapted) if you brick your X200, to know how - to recover. - </p> - - <p> - The X200S is also briefly covered (image showing soldering joints, wired up - to a BBB). Note, not all X200S or X200 Tablet configurations are supported yet - (see <a href="../hcl/x200.html#x200s">../hcl/x200.html#x200s</a></b> - </p> - - <p> - Before following this section, please make sure to setup your libreboot ROM properly first. - Although ROM images are provided pre-built in libreboot, there are some modifications that - you need to make to the one you chose before flashing. (instructions referenced later in - this guide) - </p> + <p>Initial flashing instructions for X200.</p> + <p> + This guide is for those who want libreboot on their ThinkPad X200 + while they still have the original Lenovo BIOS present. This guide + can also be followed (adapted) if you brick your X200, to know how + to recover. + </p> + <p> + The X200S is also briefly covered (image showing soldering joints, wired up + to a BBB). Note, not all X200S or X200 Tablet configurations are supported yet + (see <a href="../hcl/x200.html#x200s">../hcl/x200.html#x200s</a></b> + </p> + <p> + Before following this section, please make sure to setup your libreboot ROM properly first. + Although ROM images are provided pre-built in libreboot, there are some modifications that + you need to make to the one you chose before flashing. (instructions referenced later in + this guide) + </p> - <p>Or go <a href="index.html">back to main index</a></p> + <p><a href="index.html">Back to main index</a></p> + </div> -<hr/> + <div class="section"> - <h1 id="flashchips">Flash chips</h1> - - <p> - There are two possible flash chip sizes for the X200: 4MiB - (32Mbit) or 8MiB (64Mbit). This can be identified by the type - of flash chip below the palmrest: 4MiB is SOIC-8 (8 pins), 8MiB - is SOIC-16 (16 pins). The X200S uses a WSON package and has the same - pinout as SOIC-8 (covered briefly later on in this guide) but - the chip is on the underside of the board (disassembly required). - </p> - - <p> - <a href="#pagetop">Back to top of page.</a> - </p> + <h1 id="flashchips">Flash chips</h1> + + <p> + There are two possible flash chip sizes for the X200: 4MiB + (32Mbit) or 8MiB (64Mbit). This can be identified by the type + of flash chip below the palmrest: 4MiB is SOIC-8 (8 pins), 8MiB + is SOIC-16 (16 pins). The X200S uses a WSON package and has the same + pinout as SOIC-8 (covered briefly later on in this guide) but + the chip is on the underside of the board (disassembly required). + </p> -<hr/> + <p> + <a href="#pagetop">Back to top of page.</a> + </p> + + </div> + + <div class="section"> - <h1>Initial BBB setup</h1> - - <p> - Refer to <a href="bbb_setup.html">bbb_setup.html</a> for how to - setup the BBB for flashing. - </p> + <h1>Initial BBB setup</h1> + + <p> + Refer to <a href="bbb_setup.html">bbb_setup.html</a> for how to + setup the BBB for flashing. + </p> - <p> - The following shows how to connect clip to the BBB (on the P9 header), for SOIC-16 (clip: Pomona 5252): - </p> + <p> + The following shows how to connect clip to the BBB (on the P9 header), for SOIC-16 (clip: Pomona 5252): + </p> <pre> POMONA 5252 (correlate with the BBB guide) === front (display) on your X200 ==== @@ -83,9 +82,9 @@ POMONA 5252 (correlate with the BBB guide) === back (palmrest) on your X200 === <i>This is how you will connect. Numbers refer to pin numbers on the BBB, on the plugs near the DC jack.</i> </pre> - <p> - The following shows how to connect clip to the BBB (on the P9 header), for SOIC-8 (clip: Pomona 5250): - </p> + <p> + The following shows how to connect clip to the BBB (on the P9 header), for SOIC-8 (clip: Pomona 5250): + </p> <pre> POMONA 5250 (correlate with the BBB guide) === front (display) on your X200 ==== @@ -96,34 +95,34 @@ POMONA 5250 (correlate with the BBB guide) === back (palmrest) on your X200 === <i>This is how you will connect. Numbers refer to pin numbers on the BBB, on the plugs near the DC jack.</i> </pre> - <p> - <b>On the X200S the flash chip is underneath the board, in a WSON package. - The pinout is very much the same as a SOIC-8, except you need to solder (there are no clips available). - <a href="images/x200/wson_soldered.jpg">images/x200/wson_soldered.jpg</a> (image copyright (C) 2014 <a href="mailto:sgsit@libreboot.org">Steve Shenton</a> under CC-BY-SA 4.0 - or higher, same license that this document uses) shows it wired (soldered) and - connected to a BBB.</b> - </p> - - <h2> - Connect Pomona 5252/5250 to the X200 flash chip, and dump/flash - </h2> - <p> - <a href="images/x200/x200_pomona.jpg">images/x200/x200_pomona.jpg</a> - shows everything connected. In this picture, the X200 is being flashed - with the BBB. - </p> <p> - Remove the battery from your X200, then remove all the screws on - the bottom (underside) of the machine. Then remove the keyboard and palmrest. - The flash chip is below the palm rest. Lift back the tape that goes over it, - and then connect your 5252/5250 (make sure to get it the right way round). - Then connect the 3.3v PSU wire (red one) and make sure that everything else is connected. - </p> - <p> - I did (SSH'd into the BBB):<br/> - # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512</b><br/> - In my case, the output was: + <b>On the X200S the flash chip is underneath the board, in a WSON package. + The pinout is very much the same as a SOIC-8, except you need to solder (there are no clips available). + <a href="images/x200/wson_soldered.jpg">images/x200/wson_soldered.jpg</a> (image copyright (C) 2014 <a href="mailto:sgsit@libreboot.org">Steve Shenton</a> under CC-BY-SA 4.0 + or higher, same license that this document uses) shows it wired (soldered) and + connected to a BBB.</b> </p> + + <h2> + Connect Pomona 5252/5250 to the X200 flash chip, and dump/flash + </h2> + <p> + <a href="images/x200/x200_pomona.jpg">images/x200/x200_pomona.jpg</a> + shows everything connected. In this picture, the X200 is being flashed + with the BBB. + </p> + <p> + Remove the battery from your X200, then remove all the screws on + the bottom (underside) of the machine. Then remove the keyboard and palmrest. + The flash chip is below the palm rest. Lift back the tape that goes over it, + and then connect your 5252/5250 (make sure to get it the right way round). + Then connect the 3.3v PSU wire (red one) and make sure that everything else is connected. + </p> + <p> + I did (SSH'd into the BBB):<br/> + # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512</b><br/> + In my case, the output was: + </p> <pre> flashrom v0.9.7-r1854 on Linux 3.8.13-bone47 (armv7l) flashrom is free software, get the source code at http://www.flashrom.org @@ -134,48 +133,48 @@ Found Macronix flash chip "MX25L6445E/MX25L6473E" (8192 kB, SPI) on li Multiple flash chip definitions match the detected chip(s): "MX25L6405(D)", "MX25L6406E/MX25L6436E", "MX25L6445E/MX25L6473E" Please specify which chip definition to use with the -c <chipname> option. </pre> - <p> - This is just to test that it's working. In my case, I had to define which chip to use, like so (in your case - it may be different, depending on what flash chip you have):<br/> - # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -c "MX25L6405(D)"</b> - </p> - <p> - At this point, you need to create a copy of the original lenovo firmware that is currently flashed. - This is so that you can extract the gbe (gigabit ethernet) and flash descriptor regions for use in libreboot. <b>These - are not blobs, they only contain non-functional data (configuration details, fully readable) which is fully documented in public datasheets.</b> - The descriptor will need to be modified - to disable the ME (also disable AMT) so that you can flash a ROM that excludes it. - </p> - <p> - How to backup factory.rom (change the -c option as neeed, for your flash chip):<br/> - # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -c "MX25L6405(D)" -r factory.rom</b><br/> - # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -c "MX25L6405(D)" -r factory1.rom</b><br/> - # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -c "MX25L6405(D)" -r factory2.rom</b><br/> - Now compare the 3 images:<br/> - # <b>sha512sum factory*.rom</b><br/> - If the hashes match, then just copy one of them (the factory.rom) to a safe place (on a drive connected to another machine, not - the BBB). You will need it later for part of the deblobbing. - </p> - <p> - Information about the descriptor, gbe regions and how the ME was removed can be found in the notes linked at - <a href="../hcl/x200_remove_me.html">../hcl/x200_remove_me.html</a>. Libreboot ROM images now include - the 12KiB descriptor+gbe by default, generated using ich9gen; - <b>however, do note that the MAC address in the Gbe region is generic. Follow the instructions at - <a href="../hcl/x200_remove_me.html#ich9gen">../hcl/x200_remove_me.html#ich9gen</a> and do what it says to change the MAC address - inside your X200 ROM image, before flashing it.</b> - </p> - <p> - Assuming that your libreboot ROM image is properly setup (modified descriptor plus gbe region included in the ROM), - then you can flash (assuming that the filename is <b>libreboot.rom</b>) for example I had to do:<br/> - # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -c "MX25L6405(D)" -w libreboot.rom</b> - </p> - <p> - You might see errors, but if it says <b>Verifying flash... VERIFIED</b> at the end, then it's flashed and should boot. - Test it! (boot your X200) - </p> - <p> - My output when running the command above: - </p> + <p> + This is just to test that it's working. In my case, I had to define which chip to use, like so (in your case + it may be different, depending on what flash chip you have):<br/> + # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -c "MX25L6405(D)"</b> + </p> + <p> + At this point, you need to create a copy of the original lenovo firmware that is currently flashed. + This is so that you can extract the gbe (gigabit ethernet) and flash descriptor regions for use in libreboot. <b>These + are not blobs, they only contain non-functional data (configuration details, fully readable) which is fully documented in public datasheets.</b> + The descriptor will need to be modified + to disable the ME (also disable AMT) so that you can flash a ROM that excludes it. + </p> + <p> + How to backup factory.rom (change the -c option as neeed, for your flash chip):<br/> + # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -c "MX25L6405(D)" -r factory.rom</b><br/> + # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -c "MX25L6405(D)" -r factory1.rom</b><br/> + # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -c "MX25L6405(D)" -r factory2.rom</b><br/> + Now compare the 3 images:<br/> + # <b>sha512sum factory*.rom</b><br/> + If the hashes match, then just copy one of them (the factory.rom) to a safe place (on a drive connected to another machine, not + the BBB). You will need it later for part of the deblobbing. + </p> + <p> + Information about the descriptor, gbe regions and how the ME was removed can be found in the notes linked at + <a href="../hcl/x200_remove_me.html">../hcl/x200_remove_me.html</a>. Libreboot ROM images now include + the 12KiB descriptor+gbe by default, generated using ich9gen; + <b>however, do note that the MAC address in the Gbe region is generic. Follow the instructions at + <a href="../hcl/x200_remove_me.html#ich9gen">../hcl/x200_remove_me.html#ich9gen</a> and do what it says to change the MAC address + inside your X200 ROM image, before flashing it.</b> + </p> + <p> + Assuming that your libreboot ROM image is properly setup (modified descriptor plus gbe region included in the ROM), + then you can flash (assuming that the filename is <b>libreboot.rom</b>) for example I had to do:<br/> + # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -c "MX25L6405(D)" -w libreboot.rom</b> + </p> + <p> + You might see errors, but if it says <b>Verifying flash... VERIFIED</b> at the end, then it's flashed and should boot. + Test it! (boot your X200) + </p> + <p> + My output when running the command above: + </p> <pre> flashrom v0.9.7-r1854 on Linux 3.8.13-bone47 (armv7l) flashrom is free software, get the source code at http://www.flashrom.org @@ -188,24 +187,28 @@ Reading current flash chip contents... done. Looking for another erase function. Erase/write done. Verifying flash... VERIFIED. </pre> + + <p> + <a href="#pagetop">Back to top of page.</a> + </p> - <p> - <a href="#pagetop">Back to top of page.</a> - </p> + </div> -<hr/> + <div class="section"> - <p> - Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. + </p> - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. + </p> + + </div> </body> </html> diff --git a/docs/install/x60_unbrick.html b/docs/install/x60_unbrick.html index 89edfb4d..1b5056d1 100644 --- a/docs/install/x60_unbrick.html +++ b/docs/install/x60_unbrick.html @@ -13,123 +13,128 @@ <body> - <header> + <div class="section"> <h1>Unbricking the ThinkPad X60</h1> - <aside>This guide will show you how to recover from a bad flash that prevents your ThinkPad X60 from booting.</aside> - </header> + <p>This guide will show you how to recover from a bad flash that prevents your ThinkPad X60 from booting.</p> + <p><a href="index.html">Back to previous index</a></p> + </div> - <p>Or go <a href="index.html">back to main index</a></p> + <div class="section"> + <h1>Table of Contents</h1> + <ul> + <li> + Types of brick: + <ul> + <li><a href="#bucts_brick">Brick type 1: bucts not reset</a></li> + <li><a href="#recovery">Brick type 2: bad rom (or user error), machine won't boot</a></li> + </ul> + </li> + </ul> + </div> - <h2>Table of Contents</h2> - <ul> - <li> - Types of brick: - <ul> - <li><a href="#bucts_brick">Brick type 1: bucts not reset</a></li> - <li><a href="#recovery">Brick type 2: bad rom (or user error), machine won't boot</a></li> - </ul> - </li> - </ul> + <div class="section"> + <h1 id="bucts_brick">Brick type 1: bucts not reset.</h1> + <p> + You still have Lenovo BIOS, or you had libreboot running and you flashed another ROM; and you had bucts 1 set and + the ROM wasn't dd'd.* or if Lenovo BIOS was present and libreboot wasn't flashed.<br/><br/> - <h1 id="bucts_brick">Brick type 1: bucts not reset.</h1> - <p> - You still have Lenovo BIOS, or you had libreboot running and you flashed another ROM; and you had bucts 1 set and - the ROM wasn't dd'd.* or if Lenovo BIOS was present and libreboot wasn't flashed.<br/><br/> - - In this case, unbricking is easy: reset BUC.TS to 0 by removing that yellow cmos coin (it's a battery) and putting it back after a minute or two:<br/> - <img src="../images/x60_unbrick/0004.jpg" alt="" /><br/><br/> + In this case, unbricking is easy: reset BUC.TS to 0 by removing that yellow cmos coin (it's a battery) and putting it back after a minute or two:<br/> + <img src="../images/x60_unbrick/0004.jpg" alt="" /><br/><br/> - *Those dd commands should be applied to all newly compiled X60 ROM images (the ROM images in libreboot binary archives already have this applied!):<br/> - dd if=coreboot.rom of=top64k.bin bs=1 skip=$[$(stat -c %s coreboot.rom) - 0x10000] count=64k<br/> - dd if=coreboot.rom bs=1 skip=$[$(stat -c %s coreboot.rom) - 0x20000] count=64k | hexdump<br/> - dd if=top64k.bin of=coreboot.rom bs=1 seek=$[$(stat -c %s coreboot.rom) - 0x20000] count=64k conv=notrunc<br/> - (doing this makes the ROM suitable for use when flashing a machine that still has Lenovo BIOS running, - using those instructions: <a href="http://www.coreboot.org/Board:lenovo/x60/Installation">http://www.coreboot.org/Board:lenovo/x60/Installation</a>. - </p> + *Those dd commands should be applied to all newly compiled X60 ROM images (the ROM images in libreboot binary archives already have this applied!):<br/> + dd if=coreboot.rom of=top64k.bin bs=1 skip=$[$(stat -c %s coreboot.rom) - 0x10000] count=64k<br/> + dd if=coreboot.rom bs=1 skip=$[$(stat -c %s coreboot.rom) - 0x20000] count=64k | hexdump<br/> + dd if=top64k.bin of=coreboot.rom bs=1 seek=$[$(stat -c %s coreboot.rom) - 0x20000] count=64k conv=notrunc<br/> + (doing this makes the ROM suitable for use when flashing a machine that still has Lenovo BIOS running, + using those instructions: <a href="http://www.coreboot.org/Board:lenovo/x60/Installation">http://www.coreboot.org/Board:lenovo/x60/Installation</a>. + </p> + </div> + + <div class="section"> - <h1 id="recovery">bad rom (or user error), machine won't boot</h1> - <p> - In this scenario, you compiled a ROM that had an incorrect configuration, or there is an actual bug preventing your machine from - booting. Or, maybe, you set BUC.TS to 0 and shut down after first flash while Lenovo BIOS was running. In any case, your machine is bricked and will not boot at all. - </p> - <p> - "Unbricking" means flashing a known-good (working) ROM. The problem: you can't boot the machine, making this difficult. In this situation, external hardware (see hardware requirements above) is needed which can flash the SPI chip (where libreboot resides). - </p> - <p> - Remove those screws:<br/> - <img src="../images/x60_unbrick/0000.jpg" alt="" /> - </p> - <p> - Push the keyboard forward (carefully):<br/> - <img src="../images/x60_unbrick/0001.jpg" alt="" /> - </p> - <p> - Lift the keyboard up and disconnect it from the board:<br/> - <img src="../images/x60_unbrick/0002.jpg" alt="" /> - </p> - <p> - Grab the right-hand side of the chassis and force it off (gently) and pry up the rest of the chassis:<br/> - <img src="../images/x60_unbrick/0003.jpg" alt="" /> - </p> - <p> - You should now have this:<br/> - <img src="../images/x60_unbrick/0004.jpg" alt="" /> - </p> - <p> - Disconnect the wifi antenna cables, the modem cable and the speaker:<br/> - <img src="../images/x60_unbrick/0005.jpg" alt="" /> - </p> - <p> - Unroute the cables along their path, carefully lifting the tape that holds them in place. Then, disconnect the modem - cable (other end) and power connection and unroute all the cables so that they dangle by the monitor hinge on the right-hand - side:<br/> - <img src="../images/x60_unbrick/0006.jpg" alt="" /> - </p> - <p> - Disconnect the monitor from the motherboard, and unroute the grey antenna cable, carefully lifting the tape - that holds it into place:<br/> - <img src="../images/x60_unbrick/0008.jpg" alt="" /> - </p> - <p> - Carefully lift the remaining tape and unroute the left antenna cable so that it is loose:<br/> - <img src="../images/x60_unbrick/0009.jpg" alt="" /> - </p> - <p> - Remove the screw that is highlighted (do NOT remove the other one; it holds part of the heatsink (other side) into place):<br/> - <img src="../images/x60_unbrick/0011.jpg" alt="" /> - </p> - <p> - Remove those screws:<br/> - <img src="../images/x60_unbrick/0012.jpg" alt="" /> - </p> - <p> - Carefully remove the plate, like so:<br/> - <img src="../images/x60_unbrick/0013.jpg" alt="" /> - </p> - <p> - Remove the SATA connector:<br/> - <img src="../images/x60_unbrick/0014.jpg" alt="" /> - </p> - <p> - Now remove the motherboard (gently) and cast the lcd/chassis aside:<br/> - <img src="../images/x60_unbrick/0015.jpg" alt="" /> - </p> - <p> - Lift back that tape and hold it with something. Highlighted is the SPI flash chip:<br/> - <img src="../images/x60_unbrick/0016.jpg" alt="" /> - </p> - <p> - Now wire up the BBB and the Pomona with your PSU.<br/> - Refer to <a href="bbb_setup.html">bbb_setup.html</a> for how to setup - the BBB for flashing.<br/> - <b>Note, the guide mentions a 3.3v DC PSU but you don't need this on the X60: - if you don't have or don't want to use an external PSU, then make - sure not to connect the red/black 3.3v leads mentioned in the guide; - instead, connect the AC adapter (the one that normally charges your - battery) so that the board has power (but don't boot it up)</b> - <img src="../images/x60_unbrick/0017.jpg" alt="" /><br/> - Correlate the following with the BBB guide linked above: - </p> + <h1 id="recovery">bad rom (or user error), machine won't boot</h1> + <p> + In this scenario, you compiled a ROM that had an incorrect configuration, or there is an actual bug preventing your machine from + booting. Or, maybe, you set BUC.TS to 0 and shut down after first flash while Lenovo BIOS was running. In any case, your machine is bricked and will not boot at all. + </p> + <p> + "Unbricking" means flashing a known-good (working) ROM. The problem: you can't boot the machine, making this difficult. In this situation, external hardware (see hardware requirements above) is needed which can flash the SPI chip (where libreboot resides). + </p> + <p> + Remove those screws:<br/> + <img src="../images/x60_unbrick/0000.jpg" alt="" /> + </p> + <p> + Push the keyboard forward (carefully):<br/> + <img src="../images/x60_unbrick/0001.jpg" alt="" /> + </p> + <p> + Lift the keyboard up and disconnect it from the board:<br/> + <img src="../images/x60_unbrick/0002.jpg" alt="" /> + </p> + <p> + Grab the right-hand side of the chassis and force it off (gently) and pry up the rest of the chassis:<br/> + <img src="../images/x60_unbrick/0003.jpg" alt="" /> + </p> + <p> + You should now have this:<br/> + <img src="../images/x60_unbrick/0004.jpg" alt="" /> + </p> + <p> + Disconnect the wifi antenna cables, the modem cable and the speaker:<br/> + <img src="../images/x60_unbrick/0005.jpg" alt="" /> + </p> + <p> + Unroute the cables along their path, carefully lifting the tape that holds them in place. Then, disconnect the modem + cable (other end) and power connection and unroute all the cables so that they dangle by the monitor hinge on the right-hand + side:<br/> + <img src="../images/x60_unbrick/0006.jpg" alt="" /> + </p> + <p> + Disconnect the monitor from the motherboard, and unroute the grey antenna cable, carefully lifting the tape + that holds it into place:<br/> + <img src="../images/x60_unbrick/0008.jpg" alt="" /> + </p> + <p> + Carefully lift the remaining tape and unroute the left antenna cable so that it is loose:<br/> + <img src="../images/x60_unbrick/0009.jpg" alt="" /> + </p> + <p> + Remove the screw that is highlighted (do NOT remove the other one; it holds part of the heatsink (other side) into place):<br/> + <img src="../images/x60_unbrick/0011.jpg" alt="" /> + </p> + <p> + Remove those screws:<br/> + <img src="../images/x60_unbrick/0012.jpg" alt="" /> + </p> + <p> + Carefully remove the plate, like so:<br/> + <img src="../images/x60_unbrick/0013.jpg" alt="" /> + </p> + <p> + Remove the SATA connector:<br/> + <img src="../images/x60_unbrick/0014.jpg" alt="" /> + </p> + <p> + Now remove the motherboard (gently) and cast the lcd/chassis aside:<br/> + <img src="../images/x60_unbrick/0015.jpg" alt="" /> + </p> + <p> + Lift back that tape and hold it with something. Highlighted is the SPI flash chip:<br/> + <img src="../images/x60_unbrick/0016.jpg" alt="" /> + </p> + <p> + Now wire up the BBB and the Pomona with your PSU.<br/> + Refer to <a href="bbb_setup.html">bbb_setup.html</a> for how to setup + the BBB for flashing.<br/> + <b>Note, the guide mentions a 3.3v DC PSU but you don't need this on the X60: + if you don't have or don't want to use an external PSU, then make + sure not to connect the red/black 3.3v leads mentioned in the guide; + instead, connect the AC adapter (the one that normally charges your + battery) so that the board has power (but don't boot it up)</b> + <img src="../images/x60_unbrick/0017.jpg" alt="" /><br/> + Correlate the following with the BBB guide linked above: + </p> <pre> POMONA 5250: === golden finger and wifi switch ==== @@ -141,132 +146,136 @@ POMONA 5250: <i>This is how you will connect. Numbers refer to pin numbers on the BBB, on the plugs near the DC jack.</i> </pre> - <p> - Connecting the BBB and pomona (in this image, an external 3.3v DC PSU was used):<br/> - <img src="images/x60/th_bbb_flashing.jpg" alt="" /> - </p> + <p> + Connecting the BBB and pomona (in this image, an external 3.3v DC PSU was used):<br/> + <img src="images/x60/th_bbb_flashing.jpg" alt="" /> + </p> - <p> - SSH'd into the BBB:<br/> - # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -w yourrom.rom</b> - </p> - <p> - It should be <b>Verifying flash... VERIFIED</b> at the end. If flashrom complains about multiple flash chip - definitions detected, then choose one of them following the instructions in the output. - </p> + <p> + SSH'd into the BBB:<br/> + # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -w yourrom.rom</b> + </p> + <p> + It should be <b>Verifying flash... VERIFIED</b> at the end. If flashrom complains about multiple flash chip + definitions detected, then choose one of them following the instructions in the output. + </p> + + <p> + Remove the programmer and put it away somewhere. Put back the tape and press firmly over it:<br/> + <img src="../images/x60_unbrick/0026.jpg" alt="" /> + </p> + <p> + Your empty chassis:<br/> + <img src="../images/x60_unbrick/0027.jpg" alt="" /> + </p> + <p> + Put the motherboard back in:<br/> + <img src="../images/x60_unbrick/0028.jpg" alt="" /> + </p> + <p> + Reconnect SATA:<br/> + <img src="../images/x60_unbrick/0029.jpg" alt="" /> + </p> + <p> + Put the plate back and re-insert those screws:<br/> + <img src="../images/x60_unbrick/0030.jpg" alt="" /> + </p> + <p> + Re-route that antenna cable around the fan and apply the tape:<br/> + <img src="../images/x60_unbrick/0031.jpg" alt="" /> + </p> + <p> + Route the cable here and then (not shown, due to error on my part) reconnect the monitor cable to the motherboard + and re-insert the screws:<br/> + <img src="../images/x60_unbrick/0032.jpg" alt="" /> + </p> + <p> + Re-insert that screw:<br/> + <img src="../images/x60_unbrick/0033.jpg" alt="" /> + </p> + <p> + Route the black antenna cable like so:<br/> + <img src="../images/x60_unbrick/0034.jpg" alt="" /> + </p> + <p> + Tuck it in neatly like so:<br/> + <img src="../images/x60_unbrick/0035.jpg" alt="" /> + </p> + <p> + Route the modem cable like so:<br/> + <img src="../images/x60_unbrick/0036.jpg" alt="" /> + </p> + <p> + Connect modem cable to board and tuck it in neatly like so:<br/> + <img src="../images/x60_unbrick/0037.jpg" alt="" /> + </p> + <p> + Route the power connection and connect it to the board like so:<br/> + <img src="../images/x60_unbrick/0038.jpg" alt="" /> + </p> + <p> + Route the antenna and modem cables neatly like so:<br/> + <img src="../images/x60_unbrick/0039.jpg" alt="" /> + </p> + <p> + Connect the wifi antenna cables. At the start of the tutorial, this machine had an Intel wifi chip. Here you see I've replaced it with an + Atheros AR5B95 (supports 802.11n and can be used without blobs):<br/> + <img src="../images/x60_unbrick/0040.jpg" alt="" /> + </p> + <p> + Connect the modem cable:<br/> + <img src="../images/x60_unbrick/0041.jpg" alt="" /> + </p> + <p> + Connect the speaker:<br/> + <img src="../images/x60_unbrick/0042.jpg" alt="" /> + </p> + <p> + You should now have this:<br/> + <img src="../images/x60_unbrick/0043.jpg" alt="" /> + </p> + <p> + Re-connect the upper chassis:<br/> + <img src="../images/x60_unbrick/0044.jpg" alt="" /> + </p> + <p> + Re-connect the keyboard:<br/> + <img src="../images/x60_unbrick/0045.jpg" alt="" /> + </p> + <p> + Re-insert the screws that you removed earlier:<br/> + <img src="../images/x60_unbrick/0046.jpg" alt="" /> + </p> + <p> + Power on!<br/> + <img src="../images/x60_unbrick/0047.jpg" alt="" /> + </p> + <p> + Trisquel live USB menu (using the GRUB ISOLINUX parser):<br/> + <img src="../images/x60_unbrick/0048.jpg" alt="" /> + </p> + <p> + Trisquel live desktop:<br/> + <img src="../images/x60_unbrick/0049.jpg" alt="" /> + </p> + + </div> + + <div class="section"> <p> - Remove the programmer and put it away somewhere. Put back the tape and press firmly over it:<br/> - <img src="../images/x60_unbrick/0026.jpg" alt="" /> - </p> - <p> - Your empty chassis:<br/> - <img src="../images/x60_unbrick/0027.jpg" alt="" /> - </p> - <p> - Put the motherboard back in:<br/> - <img src="../images/x60_unbrick/0028.jpg" alt="" /> - </p> - <p> - Reconnect SATA:<br/> - <img src="../images/x60_unbrick/0029.jpg" alt="" /> - </p> - <p> - Put the plate back and re-insert those screws:<br/> - <img src="../images/x60_unbrick/0030.jpg" alt="" /> - </p> - <p> - Re-route that antenna cable around the fan and apply the tape:<br/> - <img src="../images/x60_unbrick/0031.jpg" alt="" /> - </p> - <p> - Route the cable here and then (not shown, due to error on my part) reconnect the monitor cable to the motherboard - and re-insert the screws:<br/> - <img src="../images/x60_unbrick/0032.jpg" alt="" /> - </p> - <p> - Re-insert that screw:<br/> - <img src="../images/x60_unbrick/0033.jpg" alt="" /> - </p> - <p> - Route the black antenna cable like so:<br/> - <img src="../images/x60_unbrick/0034.jpg" alt="" /> - </p> - <p> - Tuck it in neatly like so:<br/> - <img src="../images/x60_unbrick/0035.jpg" alt="" /> - </p> - <p> - Route the modem cable like so:<br/> - <img src="../images/x60_unbrick/0036.jpg" alt="" /> - </p> - <p> - Connect modem cable to board and tuck it in neatly like so:<br/> - <img src="../images/x60_unbrick/0037.jpg" alt="" /> - </p> - <p> - Route the power connection and connect it to the board like so:<br/> - <img src="../images/x60_unbrick/0038.jpg" alt="" /> - </p> - <p> - Route the antenna and modem cables neatly like so:<br/> - <img src="../images/x60_unbrick/0039.jpg" alt="" /> - </p> - <p> - Connect the wifi antenna cables. At the start of the tutorial, this machine had an Intel wifi chip. Here you see I've replaced it with an - Atheros AR5B95 (supports 802.11n and can be used without blobs):<br/> - <img src="../images/x60_unbrick/0040.jpg" alt="" /> - </p> - <p> - Connect the modem cable:<br/> - <img src="../images/x60_unbrick/0041.jpg" alt="" /> - </p> - <p> - Connect the speaker:<br/> - <img src="../images/x60_unbrick/0042.jpg" alt="" /> - </p> - <p> - You should now have this:<br/> - <img src="../images/x60_unbrick/0043.jpg" alt="" /> - </p> - <p> - Re-connect the upper chassis:<br/> - <img src="../images/x60_unbrick/0044.jpg" alt="" /> - </p> - <p> - Re-connect the keyboard:<br/> - <img src="../images/x60_unbrick/0045.jpg" alt="" /> - </p> - <p> - Re-insert the screws that you removed earlier:<br/> - <img src="../images/x60_unbrick/0046.jpg" alt="" /> - </p> - <p> - Power on!<br/> - <img src="../images/x60_unbrick/0047.jpg" alt="" /> - </p> - <p> - Trisquel live USB menu (using the GRUB ISOLINUX parser):<br/> - <img src="../images/x60_unbrick/0048.jpg" alt="" /> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. </p> + <p> - Trisquel live desktop:<br/> - <img src="../images/x60_unbrick/0049.jpg" alt="" /> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. </p> - -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + + </div> </body> </html> diff --git a/docs/install/x60tablet_unbrick.html b/docs/install/x60tablet_unbrick.html index 05108672..3623482d 100644 --- a/docs/install/x60tablet_unbrick.html +++ b/docs/install/x60tablet_unbrick.html @@ -8,120 +8,125 @@ @import url('../css/main.css'); </style> - <title>Libreboot documentation: Unbricking the ThinkPad X60 Tablet</title> + <title>Unbricking the ThinkPad X60 Tablet</title> </head> <body> - <header> - <h1>Unbricking the ThinkPad X60</h1> - <aside>This guide will show you how to recover from a bad flash that prevents your ThinkPad X60 Tablet from booting.</aside> - </header> - - <p>Or go <a href="index.html">back to main index</a></p> - - <h2>Table of Contents</h2> - <ul> - <li> - Types of brick: - <ul> - <li><a href="#bucts_brick">Brick type 1: bucts not reset</a></li> - <li><a href="#recovery">Brick type 2: bad rom (or user error), machine won't boot</a></li> - </ul> - </li> - </ul> - - <h1 id="bucts_brick">Brick type 1: bucts not reset.</h1> - <p> - You still have Lenovo BIOS, or you had libreboot running and you flashed another ROM; and you had bucts 1 set and - the ROM wasn't dd'd.* or if Lenovo BIOS was present and libreboot wasn't flashed.<br/><br/> - - In this case, unbricking is easy: reset BUC.TS to 0 by removing that yellow cmos coin (it's a battery) and putting it back after a minute or two:<br/> - <img src="../images/x60t_unbrick/0008.JPG" alt="" /><br/><br/> - - *Those dd commands should be applied to all newly compiled X60 ROM images (the ROM images in libreboot binary archives already have this applied!):<br/> - dd if=coreboot.rom of=top64k.bin bs=1 skip=$[$(stat -c %s coreboot.rom) - 0x10000] count=64k<br/> - dd if=coreboot.rom bs=1 skip=$[$(stat -c %s coreboot.rom) - 0x20000] count=64k | hexdump<br/> - dd if=top64k.bin of=coreboot.rom bs=1 seek=$[$(stat -c %s coreboot.rom) - 0x20000] count=64k conv=notrunc<br/> - (doing this makes the ROM suitable for use when flashing a machine that still has Lenovo BIOS running, - using those instructions: <a href="http://www.coreboot.org/Board:lenovo/x60/Installation">http://www.coreboot.org/Board:lenovo/x60/Installation</a>. - </p> - - <h1 id="recovery">bad rom (or user error), machine won't boot</h1> - <p> - In this scenario, you compiled a ROM that had an incorrect configuration, or there is an actual bug preventing your machine from - booting. Or, maybe, you set BUC.TS to 0 and shut down after first flash while Lenovo BIOS was running. In any case, your machine is bricked and will not boot at all. - </p> - <p> - "Unbricking" means flashing a known-good (working) ROM. The problem: you can't boot the machine, making this difficult. In this situation, external hardware (see hardware requirements above) is needed which can flash the SPI chip (where libreboot resides). - </p> - - <p> - <img src="../images/x60t_unbrick/0000.JPG" alt="" /> - </p> - - <p> - Remove those screws:<br/> - <img src="../images/x60t_unbrick/0001.JPG" alt="" /> - </p> - - <p> - Remove the HDD:<br/> - <img src="../images/x60t_unbrick/0002.JPG" alt="" /> - </p> - - <p> - Push keyboard forward to loosen it:<br/> - <img src="../images/x60t_unbrick/0003.JPG" alt="" /> - </p> - - <p> - Lift:<br/> - <img src="../images/x60t_unbrick/0004.JPG" alt="" /> - </p> - - <p> - Remove those:<br/> - <img src="../images/x60t_unbrick/0005.JPG" alt="" /> - </p> - - <p> + <div class="section"> + <h1>Unbricking the ThinkPad X60 Tablet</h1> + <p>This guide will show you how to recover from a bad flash that prevents your ThinkPad X60 Tablet from booting.</p> + <p><a href="index.html">Back to previous index</a></p> + </div> + + <div class="section"> + <h2>Table of Contents</h2> + <ul> + <li> + Types of brick: + <ul> + <li><a href="#bucts_brick">Brick type 1: bucts not reset</a></li> + <li><a href="#recovery">Brick type 2: bad rom (or user error), machine won't boot</a></li> + </ul> + </li> + </ul> + </div> + + <div class="section"> + <h1 id="bucts_brick">Brick type 1: bucts not reset.</h1> + <p> + You still have Lenovo BIOS, or you had libreboot running and you flashed another ROM; and you had bucts 1 set and + the ROM wasn't dd'd.* or if Lenovo BIOS was present and libreboot wasn't flashed.<br/><br/> + + In this case, unbricking is easy: reset BUC.TS to 0 by removing that yellow cmos coin (it's a battery) and putting it back after a minute or two:<br/> + <img src="../images/x60t_unbrick/0008.JPG" alt="" /><br/><br/> + + *Those dd commands should be applied to all newly compiled X60 ROM images (the ROM images in libreboot binary archives already have this applied!):<br/> + dd if=coreboot.rom of=top64k.bin bs=1 skip=$[$(stat -c %s coreboot.rom) - 0x10000] count=64k<br/> + dd if=coreboot.rom bs=1 skip=$[$(stat -c %s coreboot.rom) - 0x20000] count=64k | hexdump<br/> + dd if=top64k.bin of=coreboot.rom bs=1 seek=$[$(stat -c %s coreboot.rom) - 0x20000] count=64k conv=notrunc<br/> + (doing this makes the ROM suitable for use when flashing a machine that still has Lenovo BIOS running, + using those instructions: <a href="http://www.coreboot.org/Board:lenovo/x60/Installation">http://www.coreboot.org/Board:lenovo/x60/Installation</a>. + </p> + </div> + + <div class="section"> + + <h1 id="recovery">bad rom (or user error), machine won't boot</h1> + <p> + In this scenario, you compiled a ROM that had an incorrect configuration, or there is an actual bug preventing your machine from + booting. Or, maybe, you set BUC.TS to 0 and shut down after first flash while Lenovo BIOS was running. In any case, your machine is bricked and will not boot at all. + </p> + <p> + "Unbricking" means flashing a known-good (working) ROM. The problem: you can't boot the machine, making this difficult. In this situation, external hardware (see hardware requirements above) is needed which can flash the SPI chip (where libreboot resides). + </p> + + <p> + <img src="../images/x60t_unbrick/0000.JPG" alt="" /> + </p> + + <p> + Remove those screws:<br/> + <img src="../images/x60t_unbrick/0001.JPG" alt="" /> + </p> + + <p> + Remove the HDD:<br/> + <img src="../images/x60t_unbrick/0002.JPG" alt="" /> + </p> + + <p> + Push keyboard forward to loosen it:<br/> + <img src="../images/x60t_unbrick/0003.JPG" alt="" /> + </p> + + <p> + Lift:<br/> + <img src="../images/x60t_unbrick/0004.JPG" alt="" /> + </p> + + <p> + Remove those:<br/> + <img src="../images/x60t_unbrick/0005.JPG" alt="" /> + </p> + + <p> + + <img src="../images/x60t_unbrick/0006.JPG" alt="" /> + </p> + + <p> + Also remove that (marked) and unroute the antenna cables:<br/> + <img src="../images/x60t_unbrick/0007.JPG" alt="" /> + </p> + + <p> + For some X60T laptops, you have to unroute those too:<br/> + <img src="../images/x60t_unbrick/0010.JPG" alt="" /> + </p> + + <p> + Remove the LCD extend board screws. Also remove those screws (see blue marks) and remove/unroute the cables and remove the metal plate:<br/> + <img src="../images/x60t_unbrick/0008.JPG" alt="" /> + </p> + + <p> + Remove that screw and then remove the board:<br/> + <img src="../images/x60t_unbrick/0009.JPG" alt="" /> + </p> - <img src="../images/x60t_unbrick/0006.JPG" alt="" /> - </p> - - <p> - Also remove that (marked) and unroute the antenna cables:<br/> - <img src="../images/x60t_unbrick/0007.JPG" alt="" /> - </p> - - <p> - For some X60T laptops, you have to unroute those too:<br/> - <img src="../images/x60t_unbrick/0010.JPG" alt="" /> - </p> - - <p> - Remove the LCD extend board screws. Also remove those screws (see blue marks) and remove/unroute the cables and remove the metal plate:<br/> - <img src="../images/x60t_unbrick/0008.JPG" alt="" /> - </p> - - <p> - Remove that screw and then remove the board:<br/> - <img src="../images/x60t_unbrick/0009.JPG" alt="" /> - </p> - - <p> - Now wire up the BBB and the Pomona with your PSU.<br/> - Refer to <a href="bbb_setup.html">bbb_setup.html</a> for how to setup - the BBB for flashing.<br/> - <b>Note, the guide mentions a 3.3v DC PSU but you don't need this on the X60 Tablet: - if you don't have or don't want to use an external PSU, then make - sure not to connect the red/black 3.3v leads mentioned in the guide; - instead, connect the AC adapter (the one that normally charges your - battery) so that the board has power (but don't boot it up)</b> - <img src="../images/x60t_unbrick/0011.JPG" alt="" /><br/> - Correlate the following with the BBB guide linked above: - </p> + <p> + Now wire up the BBB and the Pomona with your PSU.<br/> + Refer to <a href="bbb_setup.html">bbb_setup.html</a> for how to setup + the BBB for flashing.<br/> + <b>Note, the guide mentions a 3.3v DC PSU but you don't need this on the X60 Tablet: + if you don't have or don't want to use an external PSU, then make + sure not to connect the red/black 3.3v leads mentioned in the guide; + instead, connect the AC adapter (the one that normally charges your + battery) so that the board has power (but don't boot it up)</b> + <img src="../images/x60t_unbrick/0011.JPG" alt="" /><br/> + Correlate the following with the BBB guide linked above: + </p> <pre> POMONA 5250: === golden finger and wifi switch ==== @@ -133,37 +138,41 @@ POMONA 5250: <i>This is how you will connect. Numbers refer to pin numbers on the BBB, on the plugs near the DC jack.</i> </pre> - <p> - Connecting the BBB and pomona (in this image, an external 3.3v DC PSU was used):<br/> - <img src="images/x60/th_bbb_flashing.jpg" alt="" /> - </p> + <p> + Connecting the BBB and pomona (in this image, an external 3.3v DC PSU was used):<br/> + <img src="images/x60/th_bbb_flashing.jpg" alt="" /> + </p> + + <p> + SSH'd into the BBB:<br/> + # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -w yourrom.rom</b> + </p> + <p> + It should be <b>Verifying flash... VERIFIED</b> at the end. If flashrom complains about multiple flash chip + definitions detected, then choose one of them following the instructions in the output. + </p> + + <p> + Reverse the steps to re-assemble your machine. + </p> + + </div> + + <div class="section"> <p> - SSH'd into the BBB:<br/> - # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -w yourrom.rom</b> - </p> - <p> - It should be <b>Verifying flash... VERIFIED</b> at the end. If flashrom complains about multiple flash chip - definitions detected, then choose one of them following the instructions in the output. + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. </p> <p> - Reverse the steps to re-assemble your machine. + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. </p> - -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + + </div> </body> </html> diff --git a/docs/misc/index.html b/docs/misc/index.html index f4e78360..a4e0abab 100644 --- a/docs/misc/index.html +++ b/docs/misc/index.html @@ -13,74 +13,82 @@ <body> - <h1 id="pagetop">Miscellaneous</h1> - <p> - Or <a href="../index.html">Back to main index</a>. - </p> - <ul> - <li><a href="#high_pitch_trisquel">High Pitched Whining Noise on Idle (how to remove in Trisquel)</a> - <ul> - <li><a href="#howtouse_powertop">Powertop - how to use</a></li> - <li><a href="#powertop_autostart">Powertop - Start automatically at boot time</a></li> - </ul> - </li> - <li><a href="#high_pitch_parabola">High Pitched Whining Noise on Idle (how to remove in Parabola)</a></li> - <li><a href="#serial">X60/T60: Serial port - how to use (for dock owners)</a></li> - <li><a href="patch.html">Using diff and patch</a></li> - <li><a href="#get_edid_panelname">Get EDID: Find out the name (model) of your LCD panel</a></li> - </ul> - -<hr/> - - <h1 id="high_pitch_trisquel">High Pitched Whining Noise on Idle (how to remove in Trisquel)</h1> + <div class="section"> + <h1 id="pagetop">Miscellaneous</h1> + <p> + Or <a href="../index.html">Back to main index</a>. + </p> + <ul> + <li><a href="#high_pitch_trisquel">High Pitched Whining Noise on Idle (how to remove in Trisquel)</a> + <ul> + <li><a href="#howtouse_powertop">Powertop - how to use</a></li> + <li><a href="#powertop_autostart">Powertop - Start automatically at boot time</a></li> + </ul> + </li> + <li><a href="#high_pitch_parabola">High Pitched Whining Noise on Idle (how to remove in Parabola)</a></li> + <li><a href="#serial">X60/T60: Serial port - how to use (for dock owners)</a></li> + <li><a href="patch.html">Using diff and patch</a></li> + <li><a href="#get_edid_panelname">Get EDID: Find out the name (model) of your LCD panel</a></li> + </ul> + </div> - <p> - Tested in Trisquel 6 and 7. - </p> + <div class="section"> - <h2 id="howtouse_powertop">Powertop - how to use</h2> + <h1 id="high_pitch_trisquel">High Pitched Whining Noise on Idle (how to remove in Trisquel)</h1> - <p>Now you can use this command to kill that noise:<br/> - <b>$ sudo powertop --auto-tune</b></p> + <p> + Tested in Trisquel 6 and 7. + </p> - <p>You can also run it without parameters and then go into 'Tunables' and set everything to 'Good'</p> + <div class="subsection"> + <h2 id="howtouse_powertop">Powertop - how to use</h2> - <p>Note: On Trisquel 6, you will need to use a later powertop version from git. The one in the repositories is too old. See below:</p> + <p>Now you can use this command to kill that noise:<br/> + <b>$ sudo powertop --auto-tune</b></p> - <h2 id="powertop_autostart">Powertop - Start automatically at boot time (Trisquel 6)</h2> + <p>You can also run it without parameters and then go into 'Tunables' and set everything to 'Good'</p> - <p>Included with libreboot is a script called 'powertop.trisquel6'. Run this and it will setup powertop to run with --auto-tune - at boot time. Load the file in your text editor to see how it does that.</p> + <p>Note: On Trisquel 6, you will need to use a later powertop version from git. The one in the repositories is too old. See below:</p> + </div> - <p><b>$ ./powertop.trisquel6</b></p> + <div class="subsection"> + <h2 id="powertop_autostart">Powertop - Start automatically at boot time (Trisquel 6)</h2> - <p>For Trisquel 7 users:</p> - <p><b>$ ./powertop.trisquel7</b></p> + <p>Included with libreboot is a script called 'powertop.trisquel6'. Run this and it will setup powertop to run with --auto-tune + at boot time. Load the file in your text editor to see how it does that.</p> - <p><a href="#pagetop">Back to top of page</a></p> + <p><b>$ ./powertop.trisquel6</b></p> -<hr/> + <p>For Trisquel 7 users:</p> + <p><b>$ ./powertop.trisquel7</b></p> + </div> - <h1 id="high_pitch_parabola">High Pitched Whining Noise on Idle (how to remove in Parabola)</h1> + <p><a href="#pagetop">Back to top of page</a></p> + + </div> - <p>The following removes most of the noise. It reduces what is a high frequency whine - (that not everyone can hear) to a slight buzz (which most people can't hear or doesn't bother most people).</p> + <div class="section"> - <p>This is not perfect! The full solution is still not discovered but this is a step towards that. - Also, in some instances you will need to run 'sudo powertop --auto-tune' again. - This needs to be implemented properly in coreboot itself!</p> + <h1 id="high_pitch_parabola">High Pitched Whining Noise on Idle (how to remove in Parabola)</h1> - <p>On the X60 with coreboot or libreboot, there is a high pitched sound when idle. - So far we have use processor.max_cstate=2 or idle=halt in GRUB. - These consume power. Stop using them! </p> + <p>The following removes most of the noise. It reduces what is a high frequency whine + (that not everyone can hear) to a slight buzz (which most people can't hear or doesn't bother most people).</p> - <p>Be root<br/> - <b>$ su -</b></p> + <p>This is not perfect! The full solution is still not discovered but this is a step towards that. + Also, in some instances you will need to run 'sudo powertop --auto-tune' again. + This needs to be implemented properly in coreboot itself!</p> - <p>Installed powertop:<br/> - <b># pacman -S powertop</b></p> + <p>On the X60 with coreboot or libreboot, there is a high pitched sound when idle. + So far we have use processor.max_cstate=2 or idle=halt in GRUB. + These consume power. Stop using them! </p> - <p>and added the following to /etc/systemd/system/powertop.service :</p> + <p>Be root<br/> + <b>$ su -</b></p> + + <p>Installed powertop:<br/> + <b># pacman -S powertop</b></p> + + <p>and added the following to /etc/systemd/system/powertop.service :</p> <pre><i> [Unit] @@ -98,85 +106,93 @@ WantedBy=multi-user.target </i></pre> - <p>Finally, as root do that:<br/> - <b># systemctl enable powertop</b><br/> - <b># systemctl start powertop</b></p> - - <p>The next time you boot the machine, the buzz will be gone.</p> - - <p><a href="#pagetop">Back to top of page</a></p> + <p>Finally, as root do that:<br/> + <b># systemctl enable powertop</b><br/> + <b># systemctl start powertop</b></p> + + <p>The next time you boot the machine, the buzz will be gone.</p> + + <p><a href="#pagetop">Back to top of page</a></p> + + </div> + + <div class="section"> + + <h1 id="serial">X60/T60: Serial port - how to use (for dock owners)</h1> + <p> + For the Thinkpad X60 you can use the <b>"UltraBase X6"</b> dock (for the X60 Tablet it is called + X6 Tablet UltraBase). For the ThinkPad T60, + you can use the <b>"Advanced Mini Dock"</b>. + </p> + <p> + If you are using one of the ROM images with 'serial' in the name, then you have serial port enabled in libreboot + and you have memtest86+ included inside the ROM. Connect your null modem cable to the serial port on the dock + and connect the other end to a 2nd machine using your USB Serial adapter. + </p> + <p> + On the 2nd machine, you can try this (using GNU Screen):<br/> + <b>$ sudo screen /dev/ttyUSB0 115200</b> + </p> + <p> + How to quit GNU Screen: Ctrl+A then release and press K, and then press Y. + </p> + <p>There are also others like Minicom but I like GNU Screen</p> + <p> + By doing this before booting the X60/T60, you will see console output from libreboot. You will also see + GRUB displaying on the serial output, and you will be able to see MemTest86+ on the serial output aswell. + You can also configure your distro so that a terminal (TTY) is accessible from the serial console. + </p> + <p> + The following guide is for Ubuntu, and can be followed for Trisquel 6.0 which is based on Ubuntu 12.04 + (should also work in Trisquel 7, based on Ubuntu 14.04) to enable a serial console using GeTTY:<br/> + <a href="https://help.ubuntu.com/community/SerialConsoleHowto">https://help.ubuntu.com/community/SerialConsoleHowto</a> + </p> + <p> + Note: part of the tutorial above requires changing your grub.cfg. Just change the <b>linux</b> line to add instructions for enabling getty. + See <a href="../gnulinux/grub_cbfs.html">../gnulinux/grub_cbfs.html</a>. + </p> + <p><a href="#pagetop">Back to top of page</a> + + </div> + + <div class="section"> + + <h1 id="get_edid_panelname">Get EDID: Find out the name (model) of your LCD panel</h1> + <p> + Get the panel name with <b>sudo get-edid | strings</b><br/> + Or look in <b>/sys/class/drm/card0-LVDS-1/edid</b> + </p> + <p> + Alternatively you can use i2cdump. In Trisquel, this is in the package i2c-tools.<br/> + $ <b>sudo modprobe i2c-dev</b><br/> + $ <b>sudo i2cdump -y 5 0x50</b><br/> + $ <b>sudo rmmod i2c-dev</b><br/> + You'll see the panel name in the output (from the EDID dump). + </p> + <p> + If neither of these options work (or they are unavailable), physically removing the LCD panel is an option. + Usually, there will be information printed on the back. + </p> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> + + <div class="section"> -<hr/> - - <h1 id="serial">X60/T60: Serial port - how to use (for dock owners)</h1> - <p> - For the Thinkpad X60 you can use the <b>"UltraBase X6"</b> dock (for the X60 Tablet it is called - X6 Tablet UltraBase). For the ThinkPad T60, - you can use the <b>"Advanced Mini Dock"</b>. - </p> - <p> - If you are using one of the ROM images with 'serial' in the name, then you have serial port enabled in libreboot - and you have memtest86+ included inside the ROM. Connect your null modem cable to the serial port on the dock - and connect the other end to a 2nd machine using your USB Serial adapter. - </p> - <p> - On the 2nd machine, you can try this (using GNU Screen):<br/> - <b>$ sudo screen /dev/ttyUSB0 115200</b> - </p> <p> - How to quit GNU Screen: Ctrl+A then release and press K, and then press Y. + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. </p> - <p>There are also others like Minicom but I like GNU Screen</p> - <p> - By doing this before booting the X60/T60, you will see console output from libreboot. You will also see - GRUB displaying on the serial output, and you will be able to see MemTest86+ on the serial output aswell. - You can also configure your distro so that a terminal (TTY) is accessible from the serial console. - </p> - <p> - The following guide is for Ubuntu, and can be followed for Trisquel 6.0 which is based on Ubuntu 12.04 - (should also work in Trisquel 7, based on Ubuntu 14.04) to enable a serial console using GeTTY:<br/> - <a href="https://help.ubuntu.com/community/SerialConsoleHowto">https://help.ubuntu.com/community/SerialConsoleHowto</a> - </p> - <p> - Note: part of the tutorial above requires changing your grub.cfg. Just change the <b>linux</b> line to add instructions for enabling getty. - See <a href="../gnulinux/grub_cbfs.html">../gnulinux/grub_cbfs.html</a>. - </p> - <p><a href="#pagetop">Back to top of page</a> -<hr/> - - <h1 id="get_edid_panelname">Get EDID: Find out the name (model) of your LCD panel</h1> <p> - Get the panel name with <b>sudo get-edid | strings</b><br/> - Or look in <b>/sys/class/drm/card0-LVDS-1/edid</b> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. </p> - <p> - Alternatively you can use i2cdump. In Trisquel, this is in the package i2c-tools.<br/> - $ <b>sudo modprobe i2c-dev</b><br/> - $ <b>sudo i2cdump -y 5 0x50</b><br/> - $ <b>sudo rmmod i2c-dev</b><br/> - You'll see the panel name in the output (from the EDID dump). - </p> - <p> - If neither of these options work (or they are unavailable), physically removing the LCD panel is an option. - Usually, there will be information printed on the back. - </p> - - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + + </div> </body> </html> diff --git a/docs/misc/patch.html b/docs/misc/patch.html index 3d926ac3..681fdfb0 100644 --- a/docs/misc/patch.html +++ b/docs/misc/patch.html @@ -6,7 +6,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1"> <style type="text/css"> - @import url('css/main.css'); + @import url('../css/main.css'); </style> <title> @@ -17,147 +17,170 @@ <body> - <header> + <div class="section"> <h1 id="pagetop">Diff and patch</h1> - <aside>This is just a quick guide for reference, use 'man' to know more.</aside> - </header> - - <p> - <a href="index.html">back to index</a> - </p> - -<hr/> - - <h1> - Apply a patch - </h1> - - <p class="important"> - To apply a patch to a single file, do that in it's directory:<br/> - <b>$ patch < foo.patch</b> - </p> - - <p> - Assuming that the patch is distributed in unified format identifying - the file the patch should be applied to, the above will work. Otherwise:<br/> - <b>$ patch foo.txt < bar.patch</b> - </p> - - <p> - You can apply a patch to an entire directory, but note the "p level". - What this means is that inside patch files will be the files that you - intend to patch, identified by path names that might be different - when the files ane located on your own computer instead of on the computer - where the patch was created. 'p' level instructs the 'patch' utility to - ignore parts of the path name to identify the files correctly. Usually a - p level of 1 will work, so you would use:<br/> - <b>$ patch -p1 < baz.patch</b> - </p> - - <p> - Change to the top level directory before running this. If a patch level - of 1 cannot identify the files to patch, then inspect the patch file for file names. - For example:<br/> - <b>/home/user/do/not/panic/yet.c</b> - </p> - - <p> - and you are working in a directory that contains panic/yet.c, use:<br/> - <b>$ patch -p5 < baz.patch</b> - </p> - - <p> - You usually count one up for each path separator (forward slash) - removed from the beginning of the path, until you are left with a path - that exists in the current working directory. The count is the p level. - </p> - - <p> - Removing a patch using the -R flag<br/> - <b>$ patch -p5 -R < baz.patch</b> - </p> - - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> - - <h1> - Create a patch with diff - </h1> - - <p> - Diff can create a patch for a single file:<br/> - <b>$ diff -u original.c new.c > original.patch</b> - </p> - - <p> - For diff'ing a source tree:<br/> - <b>$ cp -R original new</b> - </p> - - <p> - Do whatever you want in new/ and then diff it:<br/> - <b>$ diff -rupN original/ new/ > original.patch</b> - </p> - - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> - - <h1> - git diff - </h1> - - <p> - git is something special. - </p> - - <p> - Just make whatever changes you want to a git clone and then:<br/> - <b>$ git diff > patch.git</b> - </p> - - <p> - Note the git revision that you did this with:<br/> - <b>$ git log</b> - </p> - - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> - - <h1> - git apply - </h1> - - <p>it really is.</p> - - <p> - Now to apply that patch in the future, just git clone it again and do - with the git revision you found from above:<br/> - <b>$ git reset --hard REVISIONNUMBER</b> - </p> - - <p> - Now put patch.git in the git clone directory and do:<br/> - <b>$ git apply patch.git</b> - </p> - - <p><a href="#pagetop">Back to top of page.</a></p> - -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + <p>This is just a quick guide for reference, use 'man' to know more.</p> + <p> + <a href="index.html">Back to index</a> + </p> + </div> + + <div class="section"> + + <h1> + Apply a patch + </h1> + + <p class="important"> + To apply a patch to a single file, do that in it's directory:<br/> + <b>$ patch < foo.patch</b> + </p> + + <p> + Assuming that the patch is distributed in unified format identifying + the file the patch should be applied to, the above will work. Otherwise:<br/> + <b>$ patch foo.txt < bar.patch</b> + </p> + + <p> + You can apply a patch to an entire directory, but note the "p level". + What this means is that inside patch files will be the files that you + intend to patch, identified by path names that might be different + when the files ane located on your own computer instead of on the computer + where the patch was created. 'p' level instructs the 'patch' utility to + ignore parts of the path name to identify the files correctly. Usually a + p level of 1 will work, so you would use:<br/> + <b>$ patch -p1 < baz.patch</b> + </p> + + <p> + Change to the top level directory before running this. If a patch level + of 1 cannot identify the files to patch, then inspect the patch file for file names. + For example:<br/> + <b>/home/user/do/not/panic/yet.c</b> + </p> + + <p> + and you are working in a directory that contains panic/yet.c, use:<br/> + <b>$ patch -p5 < baz.patch</b> + </p> + + <p> + You usually count one up for each path separator (forward slash) + removed from the beginning of the path, until you are left with a path + that exists in the current working directory. The count is the p level. + </p> + + <p> + Removing a patch using the -R flag<br/> + <b>$ patch -p5 -R < baz.patch</b> + </p> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> + + <div class="section"> + + <h1> + Create a patch with diff + </h1> + + <p> + Diff can create a patch for a single file:<br/> + <b>$ diff -u original.c new.c > original.patch</b> + </p> + + <p> + For diff'ing a source tree:<br/> + <b>$ cp -R original new</b> + </p> + + <p> + Do whatever you want in new/ and then diff it:<br/> + <b>$ diff -rupN original/ new/ > original.patch</b> + </p> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> + + <div class="section"> + + <h1> + git diff + </h1> + + <p> + git is something special. + </p> + <p> + Note: this won't show new files created. + </p> + + <p> + Just make whatever changes you want to a git clone and then:<br/> + <b>$ git diff > patch.git</b> + </p> + + <p> + Note the git revision that you did this with:<br/> + <b>$ git log</b> + </p> + + <p> + Alternatively (better yet), commit your changes and then use:<br/> + $ <b>git format-patch -N</b><br/> + Replace N with the number of commits that you want to show. + </p> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> + + <div class="section"> + + <h1> + git apply + </h1> + + <p>it really is.</p> + + <p> + Now to apply that patch in the future, just git clone it again and do + with the git revision you found from above:<br/> + <b>$ git reset --hard REVISIONNUMBER</b> + </p> + + <p> + Now put patch.git in the git clone directory and do:<br/> + <b>$ git apply patch.git</b> + </p> + + <p> + If you use a patch from git format-patch, then use <b>git am patch.git</b> instead of <b>git apply patch.git</b>. git-am + will re-create the commits aswell, instead of just applying the patch. + </p> + + <p><a href="#pagetop">Back to top of page.</a></p> + + </div> + + <div class="section"> + + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. + </p> + + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. + </p> + + </div> </body> </html> diff --git a/docs/release.html b/docs/release.html index 6fce18d6..709895ec 100644 --- a/docs/release.html +++ b/docs/release.html @@ -11,279 +11,293 @@ <title>Libreboot release information</title> </head> <body> - <header> + <div class="section"> <h1 id="pagetop">Libreboot release information</h1> - <aside>Documentation for this release can be found at <a href="index.html">index.html</a>.</aside> - </header> + <p>Documentation for this release can be found at <a href="index.html">index.html</a>.</p> + </div> - <h2 id="rebootkey">GnuPG public key (signing key)</h2> + <div class="section"> - <p> - pub 4096R/656F212E 2014-07-04 Libreboot Releases (signing key) <releases@libreboot.org><br/> - Fingerprint=C923 4BA3 200C F688 9CC0 764D 6E97 D575 656F 212E - </p> - <p> - <b>Download the key</b>: <a href="libreboot.asc">libreboot.asc</a>. - </p> - <p> - Import the key as follows:<br/> - $ <b>gpg --import < libreboot.asc</b> - </p> - <p> - You should also be able to find it on a key server. Note: the above key is not for email. It is only for verifying the release archives. - </p> - <p> - You can verify the downloaded archives as follows:<br/> - $ <b>gpg --verify libreboot_src.tar.xz.sig</b><br/> - $ <b>gpg --verify libreboot_bin.tar.xz.sig</b> - </p> - - <h2>Old Releases</h2> - <p> - Releases are now named from the date of release. - </p> - <p> - See <a href="archive_old.html">archive_old.html</a> for older libreboot releases. - </p> + <h2 id="rebootkey">GnuPG public key (signing key)</h2> - <div class="important"> - <h2> - See <a href="#critical_tasks">critical tasks</a> and <a href="#noncritical_tasks">non-critical tasks</a>. - </h2> - </div> + <p> + pub 4096R/656F212E 2014-07-04 Libreboot Releases (signing key) <releases@libreboot.org><br/> + Fingerprint=C923 4BA3 200C F688 9CC0 764D 6E97 D575 656F 212E + </p> + <p> + <b>Download the key</b>: <a href="libreboot.asc">libreboot.asc</a>. + </p> + <p> + Import the key as follows:<br/> + $ <b>gpg --import < libreboot.asc</b> + </p> + <p> + You should also be able to find it on a key server. Note: the above key is not for email. It is only for verifying the release archives. + </p> + <p> + You can verify the downloaded archives as follows:<br/> + $ <b>gpg --verify libreboot_src.tar.xz.sig</b><br/> + $ <b>gpg --verify libreboot_bin.tar.xz.sig</b> + </p> + + </div> -<hr/> + <div class="section"> + + <h2>Old Releases</h2> + <p> + Releases are now named from the date of release. + </p> + <p> + See <a href="archive_old.html">archive_old.html</a> for older libreboot releases. + </p> - <h1 id="release20150126">Release 20150126</h1> - - <p> - Release date: January 26th, 2015. - </p> + <div class="important"> + <h2> + See <a href="#critical_tasks">critical tasks</a> and <a href="#noncritical_tasks">non-critical tasks</a>. + </h2> + </div> + + </div> - <h2>Binaries (right-click save as, or use wget)</h2> - <ul> - <li><a href="http://libreboot.org/release/20150126/libreboot_bin.tar.xz">http://libreboot.org/release/20150126/libreboot_bin.tar.xz</a></li> - <li><a href="http://libreboot.org/release/20150126/libreboot_bin.tar.xz.sig">http://libreboot.org/release/20150126/libreboot_bin.tar.xz.sig</a></li> - </ul> - <h2>Source code (right-click save as, or use wget)</h2> - <ul> - <li><a href="http://libreboot.org/release/20150126/libreboot_src.tar.xz">http://libreboot.org/release/20150126/libreboot_src.tar.xz</a></li> - <li><a href="http://libreboot.org/release/20150126/libreboot_src.tar.xz.sig">http://libreboot.org/release/20150126/libreboot_src.tar.xz.sig</a></li> - </ul> + <div class="section"> + <h1 id="release20150126">Release 20150126</h1> + <p> - Installation instructions can be found at <a href="install/index.html#flashrom">install/index.html#flashrom</a>. - Building instructions (for source code) can be found at <a href="git/index.html#build">git/index.html#build</a>. + Release date: January 26th, 2015. </p> - <h2>Machines supported in this release:</h2> - <ul> - <li> - <b>Lenovo ThinkPad X60/X60s</b> - <ul> - <li> - You can also remove the motherboard from an X61/X61s and replace it with an X60/X60s motherboard. - An X60 Tablet motherboard will also fit inside an X60/X60s. - </li> - </ul> - </li> - <li> - <b>Lenovo ThinkPad X60 Tablet</b> (1024x768 and 1400x1050) with digitizer support - <ul> - <li>See <a href="hcl/index.html#supported_x60t_list">hcl/index.html#supported_x60t_list</a> for list of supported LCD panels</li> - <li>It is unknown whether an X61 Tablet can have it's mainboard replaced with an X60 Tablet motherboard.</li> - </ul> - </li> - <li> - <b>Lenovo ThinkPad T60</b> (Intel GPU) (there are issuesinstall/x200_external.html; see below): - <ul> - <li>See notes below for exceptions, and <a href="hcl/index.html#supported_t60_list">hcl/index.html#supported_t60_list</a> for known working LCD panels.</li> - <li>It is unknown whether a T61 can have it's mainboard replaced with a T60 motherboard.</li> - <li>See <a href="future/index.html#t60_cpu_microcode">future/index.html#t60_cpu_microcode</a>.</li> - <li>T60P (and T60 laptops with ATI GPU) will likely never be supported: <a href="hcl/index.html#t60_ati_intel">hcl/index.html#t60_ati_intel</a></li> - </ul> - </li> - <li> - <b>Lenovo ThinkPad X200</b> - <ul> - <li>X200S and X200 Tablet are also supported, conditionally; see <a href="hcl/x200.html">hcl/x200.html#x200s</a></li> - <li><b>ME/AMT</b>: libreboot removes this, permanently. <a href="hcl/x200_remove_me.html">hcl/x200_remove_me.html</a></li> - </ul> - </li> - <li> - <b>Apple MacBook1,1</b> (MA255LL/A, MA254LL/A, MA472LL/A) - <ul> - <li>See <a href="hcl/index.html#macbook11">hcl/index.html#macbook11</a>.</li> - </ul> - </li> - <li> - <b>Apple MacBook2,1</b> (MA699LL/A, MA701LL/A, MB061LL/A, MA700LL/A, MB063LL/A, MB062LL/A) - <ul> - <li>See <a href="hcl/index.html#macbook21">hcl/index.html#macbook21</a>.</li> - </ul> - </li> - </ul> + <h2>Binaries (right-click save as, or use wget)</h2> + <ul> + <li><a href="http://libreboot.org/release/20150126/libreboot_bin.tar.xz">http://libreboot.org/release/20150126/libreboot_bin.tar.xz</a></li> + <li><a href="http://libreboot.org/release/20150126/libreboot_bin.tar.xz.sig">http://libreboot.org/release/20150126/libreboot_bin.tar.xz.sig</a></li> + </ul> + <h2>Source code (right-click save as, or use wget)</h2> + <ul> + <li><a href="http://libreboot.org/release/20150126/libreboot_src.tar.xz">http://libreboot.org/release/20150126/libreboot_src.tar.xz</a></li> + <li><a href="http://libreboot.org/release/20150126/libreboot_src.tar.xz.sig">http://libreboot.org/release/20150126/libreboot_src.tar.xz.sig</a></li> + </ul> - <h2> - Updates (relative to r20150124) - </h2> - <p> - This is a bug fix release based on r20150124 from two days ago. It contains a few small changes: - </p> - <ul> - <li>grub.cfg: hardcode the list of partitions to search (speeds up booting considerably. GRUB regexp isn't very well optimized)</li> - <li>Docs (x200.html hcl): Remove incorrect information</li> - <li>Documentation (bbb_setup.html): Fix typos</li> - <li> - build-release: delete ich9fdgbe_{4m,8m}.bin files from ich9gen - <ul> - <li> - These were accidentically included in the r20150124 release. They - are generated from ich9gen so it's ok, but they don't need to be - in the archive. - </li> - </ul> - </li> - <li>Documentation (grub_cbfs.html): Looping in libreboot_grub.cfg (Add notes about it if the user copied from grub.cfg in CBFS.)</li> - <li>Documentation: refer to Guix as GNU Guix System Distribution or GNU GSD per advice from the Guix project.</li> - </ul> - <h2> - Changes for this release (latest changes first, earliest changes last) - </h2> - <ul> - <li>Documentation: added information about how to boot Guix GNU/Linux.</li> - <li>grub.cfg: Added (usb0) and (usb0,*) to the list of devices in the <i>Search for GRUB</i> menuentry (this is needed for Guix GNU/Linux)</li> - <li>grub.cfg: Added (ahci1) to list of devices for ISOLINUX parser (CD/DVD) (this is needed for the X200 docking station).</li> - <li>grub.cfg: ISOLINUX parsing is now done on all USB partitions.</li> - <li>grub.cfg: Automatically switched to /boot/grub/libreboot_grub.cfg on a partition, if it exists.</li> - <li>libreboot_bin: added static ARM binaries for flashrom, cbfstool, ich9gen and - ich9deblob (tested on beaglebone black).</li> - <li>Flashrom: removed redundant Macronix flashchip definitions (for X200 owners).</li> - <li>Flashrom: added whitelist for ThinkPad X200.</li> - <li>X200: fixed uneven backlight (at low levels)</li> - <li>ich9macchange (new script, uses ich9gen): for changing the default MAC address on X200 ROM images.</li> - <li>ich9gen: added capability to change the default MAC address (and update the checksum)</li> - <li>ich9deblob: added new utility ich9gen: this can generate a descriptor+gbe image without a factory.rom dump present.</li> - <li>Modified ich9deblob to use a struct for Gbe, documenting everything.</li> - <li>Massively updated the ich9deblob utility: re-factored everything completely.</li> - <li>Enabled cstates 1 and 2 on macbook21. This reduces idle heat / power consumption.</li> - <li>buildrom-withgrub: disabled creation of *txtmode*.rom for X200 (only framebuffer graphics work)</li> - <li>Updated SeaBIOS (again)</li> - <li>docs/install/index.html#flashrom_x200: improve instructions</li> - <li>Updated flashrom (again) - patches updated</li> - <li>Updated GRUB (again)</li> - <li>Updated coreboot (again)</li> - <li>build-release: not all files were copied to libreboot_src. fix that.</li> - <li>build-release: include cbmem (statically compiled) in libreboot_bin</li> - <li>Documentation (X200): added software-based flashing instructions</li> - <li>Documentation: remove all references to the bus pirate (replaced with BBB flashing tutorials)</li> - <li><b>New board:</b> ThinkPad X200S and X200 Tablet support added to libreboot</li> - <li>build: automatically find board names (configs) to build for</li> - <li><b>New board:</b> ThinkPad X200 support added to libreboot</li> - <li>coreboot-libre config (all boards): enable USB dongle log output (for BeagleBone Black)</li> - <li>cleandeps: actually clean grubinvaders</li> - <li>.gitignore: add powertop directory</li> - <li>cleandeps: clean i945-pwm utility</li> - <li>scripts (all): fix typos</li> - <li>Documentation: general cleanup.</li> - <li>builddeps-flashrom: reduce build commands to a single for loop</li> - <li>scripts (all): replace unnecessary rm -rf with rm -f</li> - <li>powertop.trisquel7: remove sudo (script already checks if the user is root)</li> - <li>docs/release.html: add lenovo g505s to the list of candidates</li> - <li>.gitignore: add libreboot_bin.tar.xz and libreboot_src.tar.xz</li> - <li> - libreboot_bin.tar.xz: Include utils as statically linked binaries - <ul> - <li>This means that the user does not have to install build dependency - or build from source anymore.</li> - </ul> - </li> - <li>deps-trisquel: Add binutils-source</li> - <li>powertop.trisquel7 (new): Setup powertop on trisquel 7</li> - <li>deps-trisquel,flash,lenovobios_firstflash,lenovobios_secondflash,macbook21_firstflash - x60flashfrom5,powertop.trisquel6: check if user is root</li> - <li>deps-trisquel: Make GRUB build on in Trisquel 7 x86_64. (cross compile dependencies. fixes build error in GRUB)</li> - <li>deps-parabola (removed) Remove Parabola dependencies script. Will re-add later (properly tested)</li> - <li>grub.cfg: Add more path checks to isolinux parser (more ISOs should work now)</li> - <li>Update SeaBIOS</li> - <li>x60flashfrom5 (new), for X60 users upgrading from 5th/early release</li> - <li>Update flashrom</li> - <li>Update GRUB</li> - <li> - Updated coreboot-libre - <ul> - <li>i945: permanently set tft_brightness to 0xff (fixes bug on X60 where - turning up brightness at max would make it loop back to low brightness)</li> - </ul> - </li> - <li> - getcb: Revert X60/T60 to legacy backlight controls - <ul> - <li>The ACPI brightness patches were abandoned and obsolete.</li> - </ul> - </li> - <li>grub.cfg: Only load initrd.img if it exists. Add rw to linux line (for ProteanOS)</li> - <li>build: Only generate the GRUB configurations once (re-use on all images)</li> - <li>Only build 2 GRUB payload executables, re-use on all boards.</li> - <li> - resources/utilities/grub-assemble/gen.txtmode.sh: Use GNU BASH<br/> - resources/utilities/grub-assemble/gen.vesafb.sh: Use GNU BASH - </li> - <li>scripts (error handling): Replace exit with exit 1 (make debugging easier)</li> - <li> - Move most files in CBFS to GRUB memdisk, except grub.cfg and grubtest.cfg - <ul> - This reduces the space used in CBFS because coreboot compresses - its payloads with LZMA by default. grub.cfg is all that most users - will want to modify, which remains in CBFS. - </ul> - </li> - <li>docs/release.html Add DMP vortex86ex to list of candidates.</li> - <li>docs/release.html Add ThinkPad X201 to list of candidates.</li> - <li>New links added to docs/security/x60_security and docs/security/t60_security</li> - <li>lenovobios_secondflash: Warn if BUCTS is not present. (not a dealbreaker. Can just pull out nvram battery/coin).</li> - <li>lenovobios_firstflash: Fail if BUCTS fails. (anti-bricking precaution)</li> - <li>Removed obnoxious warnings from flashing scripts, improved documentation instead.</li> - <li>scripts (all): add proper error checking (fail fast, fail early. Do not continue if there are errors)</li> - <li>buildrom-withgrub: rename image to boardname_layout_romtype.rom</li> - <li>buildrom-withgrub: don't move cbfstool, execute directly</li> - <li>resources/utilities/grub-assemble: add French Dvorak (BEPO) keyboard layout.</li> - <li>Documentation: add docs/hardware/x60_keyboard.html (show how to replace keyboard on X60/X60T)</li> - <li>Documentation: major cleanup (better structure, easier to find things)</li> - <li> - docs/release.html: Remove Acer CB5 from list of future candidates. - <ul> - <li> - Too many issues. Chromebooks are crippled (soldered RAM/storage/wifi) - and have too many usability issues for the libreboot project. - </li> - </ul> - </li> - <li>docs/gnulinux/grub_cbfs.html Major cleanup. Usability improvements.</li> - <li>hocs/gnulinux/encrypted_trisquel.html: Fixed mistakes/typos. General improvements</li> - <li> - flash (flashrom script): remove boardmismatch=force - <ul> - <li> - This was put there before for users upgrading from libreboot r5 - to r6, but also allows the user to flash the wrong image. For - example, the user could flash a T60 image on an X60, thus - bricking the machine. It's almost certain that most people - have upgraded by now, so remove this potentially dangerous - option. - </li> - </ul> - </li> - <li>Documentation: update compatibility list for X60T LCD panels.</li> - <li>docs/release.html: add note about X60 Tablet board in X60/X60s</li> - <li>docs/howtos/grub_boot_installer.html: small corrections</li> - <li>docs/howtos/grub_boot_installer.html: improved readability, fixed html errors</li> - <li>Documentation (macbook21 related): clean up</li> - </ul> + <p> + Installation instructions can be found at <a href="install/index.html#flashrom">install/index.html#flashrom</a>. + Building instructions (for source code) can be found at <a href="git/index.html#build">git/index.html#build</a>. + </p> -<hr/> + <h2>Machines supported in this release:</h2> + <ul> + <li> + <b>Lenovo ThinkPad X60/X60s</b> + <ul> + <li> + You can also remove the motherboard from an X61/X61s and replace it with an X60/X60s motherboard. + An X60 Tablet motherboard will also fit inside an X60/X60s. + </li> + </ul> + </li> + <li> + <b>Lenovo ThinkPad X60 Tablet</b> (1024x768 and 1400x1050) with digitizer support + <ul> + <li>See <a href="hcl/index.html#supported_x60t_list">hcl/index.html#supported_x60t_list</a> for list of supported LCD panels</li> + <li>It is unknown whether an X61 Tablet can have it's mainboard replaced with an X60 Tablet motherboard.</li> + </ul> + </li> + <li> + <b>Lenovo ThinkPad T60</b> (Intel GPU) (there are issuesinstall/x200_external.html; see below): + <ul> + <li>See notes below for exceptions, and <a href="hcl/index.html#supported_t60_list">hcl/index.html#supported_t60_list</a> for known working LCD panels.</li> + <li>It is unknown whether a T61 can have it's mainboard replaced with a T60 motherboard.</li> + <li>See <a href="future/index.html#t60_cpu_microcode">future/index.html#t60_cpu_microcode</a>.</li> + <li>T60P (and T60 laptops with ATI GPU) will likely never be supported: <a href="hcl/index.html#t60_ati_intel">hcl/index.html#t60_ati_intel</a></li> + </ul> + </li> + <li> + <b>Lenovo ThinkPad X200</b> + <ul> + <li>X200S and X200 Tablet are also supported, conditionally; see <a href="hcl/x200.html">hcl/x200.html#x200s</a></li> + <li><b>ME/AMT</b>: libreboot removes this, permanently. <a href="hcl/x200_remove_me.html">hcl/x200_remove_me.html</a></li> + </ul> + </li> + <li> + <b>Apple MacBook1,1</b> (MA255LL/A, MA254LL/A, MA472LL/A) + <ul> + <li>See <a href="hcl/index.html#macbook11">hcl/index.html#macbook11</a>.</li> + </ul> + </li> + <li> + <b>Apple MacBook2,1</b> (MA699LL/A, MA701LL/A, MB061LL/A, MA700LL/A, MB063LL/A, MB062LL/A) + <ul> + <li>See <a href="hcl/index.html#macbook21">hcl/index.html#macbook21</a>.</li> + </ul> + </li> + </ul> + + </div> + + <div class="section"> - <div class="important"> + <h2> + Updates (relative to r20150124) + </h2> + <p> + This is a bug fix release based on r20150124 from two days ago. It contains a few small changes: + </p> + <ul> + <li>grub.cfg: hardcode the list of partitions to search (speeds up booting considerably. GRUB regexp isn't very well optimized)</li> + <li>Docs (x200.html hcl): Remove incorrect information</li> + <li>Documentation (bbb_setup.html): Fix typos</li> + <li> + build-release: delete ich9fdgbe_{4m,8m}.bin files from ich9gen + <ul> + <li> + These were accidentically included in the r20150124 release. They + are generated from ich9gen so it's ok, but they don't need to be + in the archive. + </li> + </ul> + </li> + <li>Documentation (grub_cbfs.html): Looping in libreboot_grub.cfg (Add notes about it if the user copied from grub.cfg in CBFS.)</li> + <li>Documentation: refer to Guix as GNU Guix System Distribution or GNU GSD per advice from the Guix project.</li> + </ul> + <h2> + Changes for this release (latest changes first, earliest changes last) + </h2> + <ul> + <li>Documentation: added information about how to boot Guix GNU/Linux.</li> + <li>grub.cfg: Added (usb0) and (usb0,*) to the list of devices in the <i>Search for GRUB</i> menuentry (this is needed for Guix GNU/Linux)</li> + <li>grub.cfg: Added (ahci1) to list of devices for ISOLINUX parser (CD/DVD) (this is needed for the X200 docking station).</li> + <li>grub.cfg: ISOLINUX parsing is now done on all USB partitions.</li> + <li>grub.cfg: Automatically switched to /boot/grub/libreboot_grub.cfg on a partition, if it exists.</li> + <li>libreboot_bin: added static ARM binaries for flashrom, cbfstool, ich9gen and + ich9deblob (tested on beaglebone black).</li> + <li>Flashrom: removed redundant Macronix flashchip definitions (for X200 owners).</li> + <li>Flashrom: added whitelist for ThinkPad X200.</li> + <li>X200: fixed uneven backlight (at low levels)</li> + <li>ich9macchange (new script, uses ich9gen): for changing the default MAC address on X200 ROM images.</li> + <li>ich9gen: added capability to change the default MAC address (and update the checksum)</li> + <li>ich9deblob: added new utility ich9gen: this can generate a descriptor+gbe image without a factory.rom dump present.</li> + <li>Modified ich9deblob to use a struct for Gbe, documenting everything.</li> + <li>Massively updated the ich9deblob utility: re-factored everything completely.</li> + <li>Enabled cstates 1 and 2 on macbook21. This reduces idle heat / power consumption.</li> + <li>buildrom-withgrub: disabled creation of *txtmode*.rom for X200 (only framebuffer graphics work)</li> + <li>Updated SeaBIOS (again)</li> + <li>docs/install/index.html#flashrom_x200: improve instructions</li> + <li>Updated flashrom (again) - patches updated</li> + <li>Updated GRUB (again)</li> + <li>Updated coreboot (again)</li> + <li>build-release: not all files were copied to libreboot_src. fix that.</li> + <li>build-release: include cbmem (statically compiled) in libreboot_bin</li> + <li>Documentation (X200): added software-based flashing instructions</li> + <li>Documentation: remove all references to the bus pirate (replaced with BBB flashing tutorials)</li> + <li><b>New board:</b> ThinkPad X200S and X200 Tablet support added to libreboot</li> + <li>build: automatically find board names (configs) to build for</li> + <li><b>New board:</b> ThinkPad X200 support added to libreboot</li> + <li>coreboot-libre config (all boards): enable USB dongle log output (for BeagleBone Black)</li> + <li>cleandeps: actually clean grubinvaders</li> + <li>.gitignore: add powertop directory</li> + <li>cleandeps: clean i945-pwm utility</li> + <li>scripts (all): fix typos</li> + <li>Documentation: general cleanup.</li> + <li>builddeps-flashrom: reduce build commands to a single for loop</li> + <li>scripts (all): replace unnecessary rm -rf with rm -f</li> + <li>powertop.trisquel7: remove sudo (script already checks if the user is root)</li> + <li>docs/release.html: add lenovo g505s to the list of candidates</li> + <li>.gitignore: add libreboot_bin.tar.xz and libreboot_src.tar.xz</li> + <li> + libreboot_bin.tar.xz: Include utils as statically linked binaries + <ul> + <li>This means that the user does not have to install build dependency + or build from source anymore.</li> + </ul> + </li> + <li>deps-trisquel: Add binutils-source</li> + <li>powertop.trisquel7 (new): Setup powertop on trisquel 7</li> + <li>deps-trisquel,flash,lenovobios_firstflash,lenovobios_secondflash,macbook21_firstflash + x60flashfrom5,powertop.trisquel6: check if user is root</li> + <li>deps-trisquel: Make GRUB build on in Trisquel 7 x86_64. (cross compile dependencies. fixes build error in GRUB)</li> + <li>deps-parabola (removed) Remove Parabola dependencies script. Will re-add later (properly tested)</li> + <li>grub.cfg: Add more path checks to isolinux parser (more ISOs should work now)</li> + <li>Update SeaBIOS</li> + <li>x60flashfrom5 (new), for X60 users upgrading from 5th/early release</li> + <li>Update flashrom</li> + <li>Update GRUB</li> + <li> + Updated coreboot-libre + <ul> + <li>i945: permanently set tft_brightness to 0xff (fixes bug on X60 where + turning up brightness at max would make it loop back to low brightness)</li> + </ul> + </li> + <li> + getcb: Revert X60/T60 to legacy backlight controls + <ul> + <li>The ACPI brightness patches were abandoned and obsolete.</li> + </ul> + </li> + <li>grub.cfg: Only load initrd.img if it exists. Add rw to linux line (for ProteanOS)</li> + <li>build: Only generate the GRUB configurations once (re-use on all images)</li> + <li>Only build 2 GRUB payload executables, re-use on all boards.</li> + <li> + resources/utilities/grub-assemble/gen.txtmode.sh: Use GNU BASH<br/> + resources/utilities/grub-assemble/gen.vesafb.sh: Use GNU BASH + </li> + <li>scripts (error handling): Replace exit with exit 1 (make debugging easier)</li> + <li> + Move most files in CBFS to GRUB memdisk, except grub.cfg and grubtest.cfg + <ul> + This reduces the space used in CBFS because coreboot compresses + its payloads with LZMA by default. grub.cfg is all that most users + will want to modify, which remains in CBFS. + </ul> + </li> + <li>docs/release.html Add DMP vortex86ex to list of candidates.</li> + <li>docs/release.html Add ThinkPad X201 to list of candidates.</li> + <li>New links added to docs/security/x60_security and docs/security/t60_security</li> + <li>lenovobios_secondflash: Warn if BUCTS is not present. (not a dealbreaker. Can just pull out nvram battery/coin).</li> + <li>lenovobios_firstflash: Fail if BUCTS fails. (anti-bricking precaution)</li> + <li>Removed obnoxious warnings from flashing scripts, improved documentation instead.</li> + <li>scripts (all): add proper error checking (fail fast, fail early. Do not continue if there are errors)</li> + <li>buildrom-withgrub: rename image to boardname_layout_romtype.rom</li> + <li>buildrom-withgrub: don't move cbfstool, execute directly</li> + <li>resources/utilities/grub-assemble: add French Dvorak (BEPO) keyboard layout.</li> + <li>Documentation: add docs/hardware/x60_keyboard.html (show how to replace keyboard on X60/X60T)</li> + <li>Documentation: major cleanup (better structure, easier to find things)</li> + <li> + docs/release.html: Remove Acer CB5 from list of future candidates. + <ul> + <li> + Too many issues. Chromebooks are crippled (soldered RAM/storage/wifi) + and have too many usability issues for the libreboot project. + </li> + </ul> + </li> + <li>docs/gnulinux/grub_cbfs.html Major cleanup. Usability improvements.</li> + <li>hocs/gnulinux/encrypted_trisquel.html: Fixed mistakes/typos. General improvements</li> + <li> + flash (flashrom script): remove boardmismatch=force + <ul> + <li> + This was put there before for users upgrading from libreboot r5 + to r6, but also allows the user to flash the wrong image. For + example, the user could flash a T60 image on an X60, thus + bricking the machine. It's almost certain that most people + have upgraded by now, so remove this potentially dangerous + option. + </li> + </ul> + </li> + <li>Documentation: update compatibility list for X60T LCD panels.</li> + <li>docs/release.html: add note about X60 Tablet board in X60/X60s</li> + <li>docs/howtos/grub_boot_installer.html: small corrections</li> + <li>docs/howtos/grub_boot_installer.html: improved readability, fixed html errors</li> + <li>Documentation (macbook21 related): clean up</li> + </ul> + + </div> + + <div class="section"> + + <div class="subsection"> <h2 id="critical_tasks"> Critical tasks for future release @@ -333,7 +347,7 @@ </div> - <div class="important"> + <div class="subsection"> <h2 id="noncritical_tasks"> Other tasks (non-critical, but still important) </h2> @@ -350,20 +364,24 @@ </div> <p><a href="#pagetop">Back to top of page.</a></p> + + </div> -<hr/> + <div class="section"> - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="license.txt">license.txt</a>. - </p> + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="license.txt">license.txt</a>. + </p> - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="license.txt">license.txt</a> for more information. - </p> + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="license.txt">license.txt</a> for more information. + </p> + + </div> </body> </html> diff --git a/docs/security/dock.html b/docs/security/dock.html index 30f23d5a..b2fdc7ec 100644 --- a/docs/security/dock.html +++ b/docs/security/dock.html @@ -5,17 +5,18 @@ <meta name="viewport" content="width=device-width, initial-scale=1"> <style type="text/css"> - @import url('css/main.css'); + @import url('../css/main.css'); </style> <title>Notes about DMA and the docking station (X60/T60)</title> </head> <body> - <header> + <div class="section"> <h1>Notes about DMA and the docking station (X60/T60)</h1> - </header> + </div> + <div class="section"> <pre> Use case: @@ -135,20 +136,23 @@ added too? > trough nvram. </pre> - -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + </div> + + <div class="section"> + + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. + </p> + + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. + </p> + + </div> </body> </html> diff --git a/docs/security/index.html b/docs/security/index.html index 64008b8c..73ced45c 100644 --- a/docs/security/index.html +++ b/docs/security/index.html @@ -13,28 +13,32 @@ <body> - <h1 id="pagetop">Security topics</h1> + <div class="section"> + <h1 id="pagetop">Security topics</h1> + <p> + Or <a href="../index.html">Back to main index</a>. + </p> + <ul> + <li><a href="x60_security.html">ThinkPad X60/X60S: hardware security</a></li> + <li><a href="t60_security.html">ThinkPad T60: hardware security</a></li> + </ul> + </div> + + <div class="section"> + + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. + </p> + <p> - Or <a href="../index.html">Back to main index</a>. + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. </p> - <ul> - <li><a href="x60_security.html">ThinkPad X60/X60S: hardware security</a></li> - <li><a href="t60_security.html">ThinkPad T60: hardware security</a></li> - </ul> - -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + + </div> </body> </html> diff --git a/docs/security/t60_security.html b/docs/security/t60_security.html index 279d3018..ad078784 100644 --- a/docs/security/t60_security.html +++ b/docs/security/t60_security.html @@ -13,283 +13,288 @@ <body> - <header> + <div class="section"> <h1>Security on the ThinkPad T60</h1> - <aside>Hardware modifications to enhance security on the ThinkPad T60. This tutorial is <b>incomplete</b> at the time of writing.</aside> - </header> - - <p>Or go <a href="index.html">back to main index</a></p> - - <h2>Table of Contents</h2> - <ul> - <li><a href="#hardware_requirements">Hardware Requirements</a></li> - <li><a href="#software_requirements">Software Requirements</a></li> - <li><a href="#procedure">The procedure</a></li> - </ul> - - <h1 id="hardware_requirements">Hardware requirements</h1> - <ul> - <li>A T60</li> - <li>screwdriver</li> - <li>Rubbing or isopropyl alcohol, and thermal compound.</li> - <li>(in a later version of this tutorial: soldering iron and scalpel)</li> - </ul> - - <h1 id="software_requirements">Software requirements</h1> - <ul> - <li>none (at least in the scope of the article as-is)</li> - <li>You probably want to encrypt your GNU/Linux install using LUKS</li> - </ul> - - <h1> - Rationale - </h1> - <p> - Most people think of security on the software side: the hardware is important aswell. - work. - </p> - <p> - This tutorial deals with reducing the number of devices that have direct memory access that - could communicate with inputs/outputs that could be used to remotely - command the machine (or leak data). All of this is purely theoretical for the time being. - </p> + <p>Hardware modifications to enhance security on the ThinkPad T60. This tutorial is <b>incomplete</b> at the time of writing.</p> + <p><a href="index.html">Back to previous index</a></p> + </div> - <h1 id="procedure">Disassembly</h1> + <div class="section"> + <h1>Table of Contents</h1> + <ul> + <li><a href="#hardware_requirements">Hardware Requirements</a></li> + <li><a href="#software_requirements">Software Requirements</a></li> + <li><a href="#procedure">The procedure</a></li> + </ul> + <h1 id="hardware_requirements">Hardware requirements</h1> + <ul> + <li>A T60</li> + <li>screwdriver</li> + <li>Rubbing or isopropyl alcohol, and thermal compound.</li> + <li>(in a later version of this tutorial: soldering iron and scalpel)</li> + </ul> + <h1 id="software_requirements">Software requirements</h1> + <ul> + <li>none (at least in the scope of the article as-is)</li> + <li>You probably want to encrypt your GNU/Linux install using LUKS</li> + </ul> + </div> - <p> - Remove those screws and remove the HDD:<br/> - <img src="../images/t60_dev/0001.JPG" alt="" /> <img src="../images/t60_dev/0002.JPG" alt="" /> - </p> + <div class="section"> + <h1> + Rationale + </h1> + <p> + Most people think of security on the software side: the hardware is important aswell. + </p> + <p> + This tutorial deals with reducing the number of devices that have direct memory access that + could communicate with inputs/outputs that could be used to remotely + command the machine (or leak data). All of this is purely theoretical for the time being. + </p> + </div> - <p> - Lift off the palm rest:<br/> - <img src="../images/t60_dev/0003.JPG" alt="" /> - </p> + <div class="section"> - <p> - Lift up the keyboard, pull it back a bit, flip it over like that and then disconnect it from the board:<br/> - <img src="../images/t60_dev/0004.JPG" alt="" /> <img src="../images/t60_dev/0005.JPG" alt="" /> <img src="../images/t60_dev/0006.JPG" alt="" /> - </p> + <h1 id="procedure">Disassembly</h1> - <p> - Gently wedge both sides loose:<br/> - <img src="../images/t60_dev/0007.JPG" alt="" /> <img src="../images/t60_dev/0008.JPG" alt="" /> - </p> + <p> + Remove those screws and remove the HDD:<br/> + <img src="../images/t60_dev/0001.JPG" alt="" /> <img src="../images/t60_dev/0002.JPG" alt="" /> + </p> - <p> - Remove that cable from the position:<br/> - <img src="../images/t60_dev/0009.JPG" alt="" /> <img src="../images/t60_dev/0010.JPG" alt="" /> - </p> + <p> + Lift off the palm rest:<br/> + <img src="../images/t60_dev/0003.JPG" alt="" /> + </p> - <p> - Now remove that bezel. Remove wifi, nvram battery and speaker connector (also remove 56k modem, on the left of wifi):<br/> - <img src="../images/t60_dev/0011.JPG" alt="" /><br/> - Reason: has direct (and very fast) memory access, and could (theoretically) leak data over a side-channel.<br/> - <b>Wifi:</b> The ath5k/ath9k cards might not have firmware at all. They might safe but could have - access to the computer's RAM trough DMA. If people have an intel - card(most T60 laptops come with Intel wifi by default, until you change it),then that card runs - a non-free firwamre and has access to the computer's RAM trough DMA! So - the risk-level is very high. - </p> + <p> + Lift up the keyboard, pull it back a bit, flip it over like that and then disconnect it from the board:<br/> + <img src="../images/t60_dev/0004.JPG" alt="" /> <img src="../images/t60_dev/0005.JPG" alt="" /> <img src="../images/t60_dev/0006.JPG" alt="" /> + </p> - <p> - Remove those screws:<br/> - <img src="../images/t60_dev/0012.JPG" alt="" /> - </p> + <p> + Gently wedge both sides loose:<br/> + <img src="../images/t60_dev/0007.JPG" alt="" /> <img src="../images/t60_dev/0008.JPG" alt="" /> + </p> - <p> - Disconnect the power jack:<br/> - <img src="../images/t60_dev/0013.JPG" alt="" /> - </p> + <p> + Remove that cable from the position:<br/> + <img src="../images/t60_dev/0009.JPG" alt="" /> <img src="../images/t60_dev/0010.JPG" alt="" /> + </p> - <p> - Remove nvram battery (we will put it back later):<br/> - <img src="../images/t60_dev/0014.JPG" alt="" /> - </p> + <p> + Now remove that bezel. Remove wifi, nvram battery and speaker connector (also remove 56k modem, on the left of wifi):<br/> + <img src="../images/t60_dev/0011.JPG" alt="" /><br/> + Reason: has direct (and very fast) memory access, and could (theoretically) leak data over a side-channel.<br/> + <b>Wifi:</b> The ath5k/ath9k cards might not have firmware at all. They might safe but could have + access to the computer's RAM trough DMA. If people have an intel + card(most T60 laptops come with Intel wifi by default, until you change it),then that card runs + a non-free firwamre and has access to the computer's RAM trough DMA! So + the risk-level is very high. + </p> - <p> - Disconnect cable (for 56k modem) and disconnect the other cable:<br/> - <img src="../images/t60_dev/0015.JPG" alt="" /> <img src="../images/t60_dev/0016.JPG" alt="" /> - </p> + <p> + Remove those screws:<br/> + <img src="../images/t60_dev/0012.JPG" alt="" /> + </p> - <p> - Disconnect speaker cable:<br/> - <img src="../images/t60_dev/0017.JPG" alt="" /> - </p> + <p> + Disconnect the power jack:<br/> + <img src="../images/t60_dev/0013.JPG" alt="" /> + </p> - <p> - Disconnect the other end of the 56k modem cable:<br/> - <img src="../images/t60_dev/0018.JPG" alt="" /> - </p> + <p> + Remove nvram battery (we will put it back later):<br/> + <img src="../images/t60_dev/0014.JPG" alt="" /> + </p> - <p> - Make sure you removed it:<br/> - <img src="../images/t60_dev/0019.JPG" alt="" /> - </p> + <p> + Disconnect cable (for 56k modem) and disconnect the other cable:<br/> + <img src="../images/t60_dev/0015.JPG" alt="" /> <img src="../images/t60_dev/0016.JPG" alt="" /> + </p> - <p> - Unscrew those:<br/> - <img src="../images/t60_dev/0020.JPG" alt="" /> - </p> + <p> + Disconnect speaker cable:<br/> + <img src="../images/t60_dev/0017.JPG" alt="" /> + </p> - <p> - Make sure you removed those:<br/> - <img src="../images/t60_dev/0021.JPG" alt="" /> - </p> + <p> + Disconnect the other end of the 56k modem cable:<br/> + <img src="../images/t60_dev/0018.JPG" alt="" /> + </p> - <p> - Disconnect LCD cable from board:<br/> - <img src="../images/t60_dev/0022.JPG" alt="" /> - </p> + <p> + Make sure you removed it:<br/> + <img src="../images/t60_dev/0019.JPG" alt="" /> + </p> - <p> - Remove those screws then remove the LCD assembly:<br/> - <img src="../images/t60_dev/0023.JPG" alt="" /> <img src="../images/t60_dev/0024.JPG" alt="" /> <img src="../images/t60_dev/0025.JPG" alt="" /> - </p> + <p> + Unscrew those:<br/> + <img src="../images/t60_dev/0020.JPG" alt="" /> + </p> - <p> - Once again, make sure you removed those:<br/> - <img src="../images/t60_dev/0026.JPG" alt="" /> - </p> + <p> + Make sure you removed those:<br/> + <img src="../images/t60_dev/0021.JPG" alt="" /> + </p> - <p> - Remove the shielding containing the motherboard, then flip it over. Remove these screws, placing them on a steady - surface in the same layout as they were in before you removed them. Also, you should mark each screw hole after removing the - screw (a permanent marker pen will do), this is so that you have a point of reference when re-assembling the machine:<br/> - <img src="../images/t60_dev/0027.JPG" alt="" /> <img src="../images/t60_dev/0028.JPG" alt="" /> <img src="../images/t60_dev/0029.JPG" alt="" /> - <img src="../images/t60_dev/0031.JPG" alt="" /> <img src="../images/t60_dev/0032.JPG" alt="" /> <img src="../images/t60_dev/0033.JPG" alt="" /> - </p> + <p> + Disconnect LCD cable from board:<br/> + <img src="../images/t60_dev/0022.JPG" alt="" /> + </p> - <p> - Remove microphone (soldering iron not needed. Just wedge it out gently):<br/> - <img src="../images/t60_dev/0039.JPG" alt="" /><br/> - <b>Rationale:</b><br/> - Another reason to remove the microphone: If your computer gets<a href="#ref1">[1]</a> compromised, it can - record what you say, and use it to receive data from nearby devices if - they're compromised too. Also, we do not know what the built-in microcode (in the CPU) is doing; it could theoretically - be programmed to accept remote commands from some speaker somewhere (remote security hole). <b>In other words, - the machine could already be compromised from the factory.</b> - </p> + <p> + Remove those screws then remove the LCD assembly:<br/> + <img src="../images/t60_dev/0023.JPG" alt="" /> <img src="../images/t60_dev/0024.JPG" alt="" /> <img src="../images/t60_dev/0025.JPG" alt="" /> + </p> - <p> - Remove infrared:<br/> - <img src="../images/t60_dev/0040.JPG" alt="" /> <img src="../images/t60_dev/0042.JPG" alt="" /> - </p> + <p> + Once again, make sure you removed those:<br/> + <img src="../images/t60_dev/0026.JPG" alt="" /> + </p> - <p> - Remove cardbus (it's in a socket, no need to disable. Just remove the port itself):<br/> - <img src="../images/t60_dev/0041.JPG" alt="" /><br/> - <b>Rationale:</b><br/> - It has direct memory access and can be used to extract sensitive details (such as LUKS keys). See - 'GoodBIOS' video linked at the end (speaker is Peter Stuge, a coreboot hacker). The video covers X60 - but the same topics apply to T60. - </p> + <p> + Remove the shielding containing the motherboard, then flip it over. Remove these screws, placing them on a steady + surface in the same layout as they were in before you removed them. Also, you should mark each screw hole after removing the + screw (a permanent marker pen will do), this is so that you have a point of reference when re-assembling the machine:<br/> + <img src="../images/t60_dev/0027.JPG" alt="" /> <img src="../images/t60_dev/0028.JPG" alt="" /> <img src="../images/t60_dev/0029.JPG" alt="" /> + <img src="../images/t60_dev/0031.JPG" alt="" /> <img src="../images/t60_dev/0032.JPG" alt="" /> <img src="../images/t60_dev/0033.JPG" alt="" /> + </p> - <p> - Before re-installing the upper chassis, remove the speaker:<br/> - <img src="../images/t60_dev/0043.JPG" alt="" /> <img src="../images/t60_dev/0044.JPG" alt="" /><br/> - Reason: combined with the microphone issue, this could be used to leak data.<br/> - If your computer gets<a href="#ref1">[1]</a> compromised, it can be used to - transmit data to nearby compromised devices. It's unknown if it can be - turned into a microphone<a href="#ref2">[2]</a>.<br/> - Replacement: headphones/speakers (line-out) or external DAC (USB). - </p> + <p> + Remove microphone (soldering iron not needed. Just wedge it out gently):<br/> + <img src="../images/t60_dev/0039.JPG" alt="" /><br/> + <b>Rationale:</b><br/> + Another reason to remove the microphone: If your computer gets<a href="#ref1">[1]</a> compromised, it can + record what you say, and use it to receive data from nearby devices if + they're compromised too. Also, we do not know what the built-in microcode (in the CPU) is doing; it could theoretically + be programmed to accept remote commands from some speaker somewhere (remote security hole). <b>In other words, + the machine could already be compromised from the factory.</b> + </p> - <p> - Remove the wwan:<br/> - <img src="../images/t60_dev/0045.JPG" alt="" /><br/> - <b>Wwan (3d modem):</b> They run proprietary software and have access to the - computer's RAM! So it's like AMT but over the GSM network which is - probably even worse.<br/> - Replacement: external USB wifi dongle. (or USB wwan/3g dongle; note, this has all the same privacy issues as mobile phones. wwan not recommended). - </p> + <p> + Remove infrared:<br/> + <img src="../images/t60_dev/0040.JPG" alt="" /> <img src="../images/t60_dev/0042.JPG" alt="" /> + </p> - <p> - This is where the simcard connector is soldered. See notes above about wwan. Remove simcard by removing battery - and then it's accessible (so, remember to do this when you re-assemble. or you could do it now?)<br/> - <img src="../images/t60_dev/0046.JPG" alt="" /> - </p> + <p> + Remove cardbus (it's in a socket, no need to disable. Just remove the port itself):<br/> + <img src="../images/t60_dev/0041.JPG" alt="" /><br/> + <b>Rationale:</b><br/> + It has direct memory access and can be used to extract sensitive details (such as LUKS keys). See + 'GoodBIOS' video linked at the end (speaker is Peter Stuge, a coreboot hacker). The video covers X60 + but the same topics apply to T60. + </p> - <p> - Put those screws back:<br/> - <img src="../images/t60_dev/0047.JPG" alt="" /> - </p> + <p> + Before re-installing the upper chassis, remove the speaker:<br/> + <img src="../images/t60_dev/0043.JPG" alt="" /> <img src="../images/t60_dev/0044.JPG" alt="" /><br/> + Reason: combined with the microphone issue, this could be used to leak data.<br/> + If your computer gets<a href="#ref1">[1]</a> compromised, it can be used to + transmit data to nearby compromised devices. It's unknown if it can be + turned into a microphone<a href="#ref2">[2]</a>.<br/> + Replacement: headphones/speakers (line-out) or external DAC (USB). + </p> - <p> - Put it back into lower chassis:<br/> - <img src="../images/t60_dev/0048.JPG" alt="" /> - </p> + <p> + Remove the wwan:<br/> + <img src="../images/t60_dev/0045.JPG" alt="" /><br/> + <b>Wwan (3d modem):</b> They run proprietary software and have access to the + computer's RAM! So it's like AMT but over the GSM network which is + probably even worse.<br/> + Replacement: external USB wifi dongle. (or USB wwan/3g dongle; note, this has all the same privacy issues as mobile phones. wwan not recommended). + </p> - <p> - Attach LCD and insert screws (also, attach the lcd cable to the board):<br/> - <img src="../images/t60_dev/0049.JPG" alt="" /> - </p> + <p> + This is where the simcard connector is soldered. See notes above about wwan. Remove simcard by removing battery + and then it's accessible (so, remember to do this when you re-assemble. or you could do it now?)<br/> + <img src="../images/t60_dev/0046.JPG" alt="" /> + </p> - <p> - Insert those screws:<br/> - <img src="../images/t60_dev/0050.JPG" alt="" /> - </p> + <p> + Put those screws back:<br/> + <img src="../images/t60_dev/0047.JPG" alt="" /> + </p> - <p> - On the CPU (and there is another chip south-east to it, sorry forgot to take pic) - clean off the old thermal paste (with the alcohol) and apply new (Artic Silver 5 is good, others are good too) - you should also clean the heatsink the same way<br/> - <img src="../images/t60_dev/0051.JPG" alt="" /> - </p> + <p> + Put it back into lower chassis:<br/> + <img src="../images/t60_dev/0048.JPG" alt="" /> + </p> - <p> - Attach the heatsink and install the screws (also, make sure to install the AC jack as highlighted):<br/> - <img src="../images/t60_dev/0052.JPG" alt="" /> - </p> + <p> + Attach LCD and insert screws (also, attach the lcd cable to the board):<br/> + <img src="../images/t60_dev/0049.JPG" alt="" /> + </p> - <p> - Reinstall that upper bezel:<br/> - <img src="../images/t60_dev/0053.JPG" alt="" /> - </p> + <p> + Insert those screws:<br/> + <img src="../images/t60_dev/0050.JPG" alt="" /> + </p> - <p> - Do that:<br/> - <img src="../images/t60_dev/0054.JPG" alt="" /> <img src="../images/t60_dev/0055.JPG" alt="" /> - </p> + <p> + On the CPU (and there is another chip south-east to it, sorry forgot to take pic) + clean off the old thermal paste (with the alcohol) and apply new (Artic Silver 5 is good, others are good too) + you should also clean the heatsink the same way<br/> + <img src="../images/t60_dev/0051.JPG" alt="" /> + </p> - <p> - Attach keyboard and install nvram battery:<br/> - <img src="../images/t60_dev/0056.JPG" alt="" /> <img src="../images/t60_dev/0057.JPG" alt="" /> - </p> + <p> + Attach the heatsink and install the screws (also, make sure to install the AC jack as highlighted):<br/> + <img src="../images/t60_dev/0052.JPG" alt="" /> + </p> - <p> - Place keyboard and (sorry, forgot to take pics) reinstall the palmrest and insert screws on the underside:<br/> - <img src="../images/t60_dev/0058.JPG" alt="" /> - </p> + <p> + Reinstall that upper bezel:<br/> + <img src="../images/t60_dev/0053.JPG" alt="" /> + </p> - <p> - Remove those covers and unscrew:<br/> - <img src="../images/t60_dev/0059.JPG" alt="" /> <img src="../images/t60_dev/0060.JPG" alt="" /> <img src="../images/t60_dev/0061.JPG" alt="" /> - </p> + <p> + Do that:<br/> + <img src="../images/t60_dev/0054.JPG" alt="" /> <img src="../images/t60_dev/0055.JPG" alt="" /> + </p> - <p> - Gently pry off the front bezel (sorry, forgot to take pics). - </p> + <p> + Attach keyboard and install nvram battery:<br/> + <img src="../images/t60_dev/0056.JPG" alt="" /> <img src="../images/t60_dev/0057.JPG" alt="" /> + </p> - <p> - Remove bluetooth module:<br/> - <img src="../images/t60_dev/0062.JPG" alt="" /> <img src="../images/t60_dev/0063.JPG" alt="" /> - </p> + <p> + Place keyboard and (sorry, forgot to take pics) reinstall the palmrest and insert screws on the underside:<br/> + <img src="../images/t60_dev/0058.JPG" alt="" /> + </p> - <p> - Re-attach the front bezel and re-insert the screws (sorry, forgot to take pics). - </p> + <p> + Remove those covers and unscrew:<br/> + <img src="../images/t60_dev/0059.JPG" alt="" /> <img src="../images/t60_dev/0060.JPG" alt="" /> <img src="../images/t60_dev/0061.JPG" alt="" /> + </p> - <p> - It lives!<br/> - <img src="../images/t60_dev/0071.JPG" alt="" /> <img src="../images/t60_dev/0072.JPG" alt="" /> <img src="../images/t60_dev/0073.JPG" alt="" /> - </p> + <p> + Gently pry off the front bezel (sorry, forgot to take pics). + </p> - <p> - Always stress test ('stress -c 2' and xsensors. below 90C is ok) when replacing cpu paste/heatsink:<br/> - <img src="../images/t60_dev/0074.JPG" alt="" /> - </p> + <p> + Remove bluetooth module:<br/> + <img src="../images/t60_dev/0062.JPG" alt="" /> <img src="../images/t60_dev/0063.JPG" alt="" /> + </p> + + <p> + Re-attach the front bezel and re-insert the screws (sorry, forgot to take pics). + </p> + + <p> + It lives!<br/> + <img src="../images/t60_dev/0071.JPG" alt="" /> <img src="../images/t60_dev/0072.JPG" alt="" /> <img src="../images/t60_dev/0073.JPG" alt="" /> + </p> + + <p> + Always stress test ('stress -c 2' and xsensors. below 90C is ok) when replacing cpu paste/heatsink:<br/> + <img src="../images/t60_dev/0074.JPG" alt="" /> + </p> + + </div> + <div class="section"> <h2> Not covered yet: </h2> @@ -306,7 +311,9 @@ <p> A lot of this tutorial is based on that video. Look towards the second half of the video to see how to do the above. </p> + </div> + <div class="section"> <h2> Also not covered yet: </h2> @@ -339,91 +346,108 @@ https://gitorious.org/gnutoo-for-coreboot/grub-assemble/source/a61f636797777a742f65f4c9c58032aa6a9b23c3: </li> </ul> + </div> - <h1> - Extra notes - </h1> - <p> - EC: Cannot be removed but can be mitigated: it contains non-free - non-loadable code, but it has no access to the computer's RAM. - It has access to the on-switch of the wifi, bluetooth, modem and some - other power management features. The issue is that it has access to the - keyboard, however if the software security howto <b>(not yet written)</b> is followed correctly, - it won't be able to leak data to a local attacker. It has no network - access but it may still be able to leak data remotely, but that - requires someone to be nearby to recover the data with the help of an - SDR and some directional antennas<a href="#ref3">[3]</a>. - </p> - <p> - <a href="http://www.coreboot.org/Intel_82573_Ethernet_controller">Intel 82573 Ethernet controller</a> - on the X60 seems safe, according to Denis. - </p> + <div class="section"> + <h1> + Extra notes + </h1> + <p> + EC: Cannot be removed but can be mitigated: it contains non-free + non-loadable code, but it has no access to the computer's RAM. + It has access to the on-switch of the wifi, bluetooth, modem and some + other power management features. The issue is that it has access to the + keyboard, however if the software security howto <b>(not yet written)</b> is followed correctly, + it won't be able to leak data to a local attacker. It has no network + access but it may still be able to leak data remotely, but that + requires someone to be nearby to recover the data with the help of an + SDR and some directional antennas<a href="#ref3">[3]</a>. + </p> + <p> + <a href="http://www.coreboot.org/Intel_82573_Ethernet_controller">Intel 82573 Ethernet controller</a> + on the X60 seems safe, according to Denis. + </p> - <h2> - Risk level - </h2> + <div class="subsection"> + <h2> + Risk level + </h2> + <ul> + <li>Modem (3g/wwan): highest</li> + <li>Intel wifi: Near highest</li> + <li>Atheros PCI wifi: unknown, but lower than intel wifi.</li> + <li>Microphone: only problematic if the computer gets compromised.</li> + <li>Speakers: only problematic if the computer gets compromised.</li> + <li>EC: can be mitigated if following the guide on software security.</li> + </ul> + </div> + </div> + + <div class="section"> + <h1> + Further reading material (software security) + </h1> <ul> - <li>Modem (3g/wwan): highest</li> - <li>Intel wifi: Near highest</li> - <li>Atheros PCI wifi: unknown, but lower than intel wifi.</li> - <li>Microphone: only problematic if the computer gets compromised.</li> - <li>Speakers: only problematic if the computer gets compromised.</li> - <li>EC: can be mitigated if following the guide on software security.</li> + <li><a href="../gnulinux/encrypted_trisquel.html">Installing Trisquel GNU/Linux with full disk encryption (including /boot)</a></li> + <li><a href="../gnulinux/encrypted_parabola.html">Installing Parabola GNU/Linux with full disk encryption (including /boot)</a></li> + <li><a href="dock.html">Notes about DMA access and the docking station</a></li> </ul> - - <h1> - Further reading material (software security) - </h1> - <ul> - <li><a href="../gnulinux/encrypted_trisquel.html">Installing Trisquel GNU/Linux with full disk encryption (including /boot)</a></li> - <li><a href="../gnulinux/encrypted_parabola.html">Installing Parabola GNU/Linux with full disk encryption (including /boot)</a></li> - <li><a href="dock.html">Notes about DMA access and the docking station</a></li> - </ul> - - <h1> - References - </h1> - <h2 id="ref1">[1] physical access</h2> - <p> - Explain that black hats, TAO, and so on might use a 0day to get in, - and explain that in this case it mitigates what the attacker can do. - Also the TAO do some evaluation before launching an attack: they take - the probability of beeing caught into account, along with the kind of - target. A 0day costs a lot of money, I heard that it was from 100000$ - to 400000$, some other websites had prices 10 times lower but that - but it was probably a typo. So if people increase their security it - makes it more risky and more costly to attack people. - </p> - <h2 id="ref2">[2] microphone</h2> - <p> - It's possible to turn headphones into a microphone, you could try - yourself, however they don't record loud at all. Also intel cards have - the capability to change a connector's function, for instance the - microphone jack can now become a headphone plug, that's called - retasking. There is some support for it in GNU/Linux but it's not very - well known. - </p> - <h2 id="ref3">[3] Video (CCC)</h2> - <p> - 30c3-5356-en-Firmware_Fat_Camp_webm.webm from the 30th CCC. While - their demo is experimental(their hardware also got damaged during the - transport), the spies probably already have that since a long time. - <a href="http://berlin.ftp.media.ccc.de/congress/2013/webm/30c3-5356-en-Firmware_Fat_Camp_webm.webm">http://berlin.ftp.media.ccc.de/congress/2013/webm/30c3-5356-en-Firmware_Fat_Camp_webm.webm</a> - </p> - -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> - - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + </div> + + <div class="section"> + <h1> + References + </h1> + <div class="subsection"> + <h2 id="ref1">[1] physical access</h2> + <p> + Explain that black hats, TAO, and so on might use a 0day to get in, + and explain that in this case it mitigates what the attacker can do. + Also the TAO do some evaluation before launching an attack: they take + the probability of beeing caught into account, along with the kind of + target. A 0day costs a lot of money, I heard that it was from 100000$ + to 400000$, some other websites had prices 10 times lower but that + but it was probably a typo. So if people increase their security it + makes it more risky and more costly to attack people. + </p> + </div> + <div class="subsection"> + <h2 id="ref2">[2] microphone</h2> + <p> + It's possible to turn headphones into a microphone, you could try + yourself, however they don't record loud at all. Also intel cards have + the capability to change a connector's function, for instance the + microphone jack can now become a headphone plug, that's called + retasking. There is some support for it in GNU/Linux but it's not very + well known. + </p> + </div> + <div class="subsection"> + <h2 id="ref3">[3] Video (CCC)</h2> + <p> + 30c3-5356-en-Firmware_Fat_Camp_webm.webm from the 30th CCC. While + their demo is experimental(their hardware also got damaged during the + transport), the spies probably already have that since a long time. + <a href="http://berlin.ftp.media.ccc.de/congress/2013/webm/30c3-5356-en-Firmware_Fat_Camp_webm.webm">http://berlin.ftp.media.ccc.de/congress/2013/webm/30c3-5356-en-Firmware_Fat_Camp_webm.webm</a> + </p> + </div> + </div> + + <div class="section"> + + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. + </p> + + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. + </p> + + </div> </body> </html> diff --git a/docs/security/x60_security.html b/docs/security/x60_security.html index c87c581e..7b524c76 100644 --- a/docs/security/x60_security.html +++ b/docs/security/x60_security.html @@ -13,277 +13,301 @@ <body> - <header> + <div class="section"> <h1>Security on the ThinkPad X60</h1> - <aside>Hardware modifications to enhance security on the ThinkPad X60. This tutorial is <b>incomplete</b> at the time of writing.</aside> - </header> + <p>Hardware modifications to enhance security on the ThinkPad X60. This tutorial is <b>incomplete</b> at the time of writing.</p> + <p><a href="index.html">Back to previous index</a></p> + </div> - <p>Or go <a href="index.html">back to main index</a></p> + <div class="section"> + <h1>Table of Contents</h1> + <ul> + <li><a href="#hardware_requirements">Hardware Requirements</a></li> + <li><a href="#software_requirements">Software Requirements</a></li> + <li><a href="#procedure">The procedure</a></li> + </ul> + </div> - <h2>Table of Contents</h2> - <ul> - <li><a href="#hardware_requirements">Hardware Requirements</a></li> - <li><a href="#software_requirements">Software Requirements</a></li> - <li><a href="#procedure">The procedure</a></li> - </ul> + <div class="section"> + + <h1 id="hardware_requirements">Hardware requirements</h1> + <ul> + <li>An X60</li> + <li>screwdriver</li> + <li>(in a later version of this tutorial: soldering iron and scalpel)</li> + </ul> - <h1 id="hardware_requirements">Hardware requirements</h1> - <ul> - <li>An X60</li> - <li>screwdriver</li> - <li>(in a later version of this tutorial: soldering iron and scalpel)</li> - </ul> + <h1 id="software_requirements">Software requirements</h1> + <ul> + <li>none (at least in the scope of the article as-is)</li> + <li>You probably want to encrypt your GNU/Linux install using LUKS</li> + </ul> + + </div> - <h1 id="software_requirements">Software requirements</h1> - <ul> - <li>none (at least in the scope of the article as-is)</li> - <li>You probably want to encrypt your GNU/Linux install using LUKS</li> - </ul> + <div class="section"> - <h1> - Rationale - </h1> - <p> - Most people think of security on the software side: the hardware is important aswell. - work. - </p> - <p> - This tutorial deals with reducing the number of devices that have direct memory access that - could communicate with inputs/outputs that could be used to remotely - command the machine (or leak data). All of this is purely theoretical for the time being. - </p> + <h1> + Rationale + </h1> + <p> + Most people think of security on the software side: the hardware is important aswell. + </p> + <p> + This tutorial deals with reducing the number of devices that have direct memory access that + could communicate with inputs/outputs that could be used to remotely + command the machine (or leak data). All of this is purely theoretical for the time being. + </p> - <h1 id="procedure">Disassembly</h1> + <h1 id="procedure">Disassembly</h1> - <p> - Firstly remove the bluetooth (if your X60 has this):<br/> - The marked screws are underneath those stickers (marked in those 3 locations at the bottom of the LCD assembly):<br/> - <img src="../images/x60_security/0000_bluetooth0.jpg" alt="" /><br/> - Now gently pry off the bottom part of the front bezel, and the bluetooth module is on the left (easily removable):<br/> - <img src="../images/x60_security/0000_bluetooth.jpg" alt="" /><br/> - </p> + <p> + Firstly remove the bluetooth (if your X60 has this):<br/> + The marked screws are underneath those stickers (marked in those 3 locations at the bottom of the LCD assembly):<br/> + <img src="../images/x60_security/0000_bluetooth0.jpg" alt="" /><br/> + Now gently pry off the bottom part of the front bezel, and the bluetooth module is on the left (easily removable):<br/> + <img src="../images/x60_security/0000_bluetooth.jpg" alt="" /><br/> + </p> - <p> - If your model was WWAN, remove the simcard (check anyway):<br/> - Uncover those 2 screws at the bottom:<br/> - <img src="../images/x60_security/0000_simcard0.jpg" alt="" /><br/> - SIM card (not present in the picture) is in the marked location:<br/> - <img src="../images/x60_security/0000_simcard1.jpg" alt="" /><br/> - Replacement: USB dongle. - </p> + <p> + If your model was WWAN, remove the simcard (check anyway):<br/> + Uncover those 2 screws at the bottom:<br/> + <img src="../images/x60_security/0000_simcard0.jpg" alt="" /><br/> + SIM card (not present in the picture) is in the marked location:<br/> + <img src="../images/x60_security/0000_simcard1.jpg" alt="" /><br/> + Replacement: USB dongle. + </p> - <p> - Now get into the motherboard. - </p> + <p> + Now get into the motherboard. + </p> - <p> - Remove those screws:<br/> - <img src="../images/x60_security/0000.jpg" alt="" /> - </p> - <p> - Push the keyboard forward (carefully):<br/> - <img src="../images/x60_security/0001.jpg" alt="" /> - </p> - <p> - Lift the keyboard up and disconnect it from the board:<br/> - <img src="../images/x60_security/0002.jpg" alt="" /> - </p> - <p> - Grab the right-hand side of the chassis and force it off (gently) and pry up the rest of the chassis:<br/> - <img src="../images/x60_security/0003.jpg" alt="" /> - </p> - <p> - You should now have this:<br/> - <img src="../images/x60_security/0004.jpg" alt="" /> - </p> + <p> + Remove those screws:<br/> + <img src="../images/x60_security/0000.jpg" alt="" /> + </p> + <p> + Push the keyboard forward (carefully):<br/> + <img src="../images/x60_security/0001.jpg" alt="" /> + </p> + <p> + Lift the keyboard up and disconnect it from the board:<br/> + <img src="../images/x60_security/0002.jpg" alt="" /> + </p> + <p> + Grab the right-hand side of the chassis and force it off (gently) and pry up the rest of the chassis:<br/> + <img src="../images/x60_security/0003.jpg" alt="" /> + </p> + <p> + You should now have this:<br/> + <img src="../images/x60_security/0004.jpg" alt="" /> + </p> - <p> - The following is a summary of what you will remove (already done to this machine):<br/> - <img src="../images/x60_security/0001_overview.jpg" alt="" /><br/> - Note: the blue lines represent antenna cables and modem cables. You don't need to remove these, but you can if you want - (to make it tidier after removing other parts). I removed the antenna wires, the modem jack, the modem cable and - also (on another model) a device inside the part where the wwan antenna goes (wasn't sure what it was, but I knew it wasn't needed). <b>This is optional</b> - </p> + <p> + The following is a summary of what you will remove (already done to this machine):<br/> + <img src="../images/x60_security/0001_overview.jpg" alt="" /><br/> + Note: the blue lines represent antenna cables and modem cables. You don't need to remove these, but you can if you want + (to make it tidier after removing other parts). I removed the antenna wires, the modem jack, the modem cable and + also (on another model) a device inside the part where the wwan antenna goes (wasn't sure what it was, but I knew it wasn't needed). <b>This is optional</b> + </p> - <p> - Remove the microphone (can desolder it, but you can also easily pull it off with you hands). Already removed here:<br/> - <img src="../images/x60_security/0001_microphone.jpg" alt="" /><br/> - <b>Rationale:</b><br/> - Another reason to remove the microphone: If your computer gets<a href="#ref1">[1]</a> compromised, it can - record what you say, and use it to receive data from nearby devices if - they're compromised too. Also, we do not know what the built-in microcode (in the CPU) is doing; it could theoretically - be programmed to accept remote commands from some speaker somewhere (remote security hole). <b>In other words, - the machine could already be compromised from the factory.</b> - </p> + <p> + Remove the microphone (can desolder it, but you can also easily pull it off with you hands). Already removed here:<br/> + <img src="../images/x60_security/0001_microphone.jpg" alt="" /><br/> + <b>Rationale:</b><br/> + Another reason to remove the microphone: If your computer gets<a href="#ref1">[1]</a> compromised, it can + record what you say, and use it to receive data from nearby devices if + they're compromised too. Also, we do not know what the built-in microcode (in the CPU) is doing; it could theoretically + be programmed to accept remote commands from some speaker somewhere (remote security hole). <b>In other words, + the machine could already be compromised from the factory.</b> + </p> - <p> - Remove the modem:<br/> - <img src="../images/x60_security/0001_modem.jpg" alt="" /><br/> - (useless, obsolete device) - </p> + <p> + Remove the modem:<br/> + <img src="../images/x60_security/0001_modem.jpg" alt="" /><br/> + (useless, obsolete device) + </p> - <p> - Remove the speaker:<br/> - <img src="../images/x60_security/0001_speaker.jpg" alt="" /><br/> - Reason: combined with the microphone issue, this could be used to leak data.<br/> - If your computer gets<a href="#ref1">[1]</a> compromised, it can be used to - transmit data to nearby compromised devices. It's unknown if it can be - turned into a microphone<a href="#ref2">[2]</a>.<br/> - Replacement: headphones/speakers (line-out) or external DAC (USB). - </p> + <p> + Remove the speaker:<br/> + <img src="../images/x60_security/0001_speaker.jpg" alt="" /><br/> + Reason: combined with the microphone issue, this could be used to leak data.<br/> + If your computer gets<a href="#ref1">[1]</a> compromised, it can be used to + transmit data to nearby compromised devices. It's unknown if it can be + turned into a microphone<a href="#ref2">[2]</a>.<br/> + Replacement: headphones/speakers (line-out) or external DAC (USB). + </p> - <p> - Remove the wlan (also remove wwan if you have it):<br/> - <img src="../images/x60_security/0001_wlan_wwan.jpg" alt="" /><br/> - Reason: has direct (and very fast) memory access, and could (theoretically) leak data over a side-channel.<br/> - <b>Wifi:</b> The ath5k/ath9k cards might not have firmware at all. They might safe but could have - access to the computer's RAM trough DMA. If people have an intel - card(most X60s come with Intel wifi by default, until you change it),then that card runs - a non-free firwamre and has access to the computer's RAM trough DMA! So - the risk-level is very high.<br/> - <b>Wwan (3d modem):</b> They run proprietary software and have access to the - computer's RAM! So it's like AMT but over the GSM network which is - probably even worse.<br/> - Replacement: external USB wifi dongle. (or USB wwan/3g dongle; note, this has all the same privacy issues as mobile phones. wwan not recommended). - </p> + <p> + Remove the wlan (also remove wwan if you have it):<br/> + <img src="../images/x60_security/0001_wlan_wwan.jpg" alt="" /><br/> + Reason: has direct (and very fast) memory access, and could (theoretically) leak data over a side-channel.<br/> + <b>Wifi:</b> The ath5k/ath9k cards might not have firmware at all. They might safe but could have + access to the computer's RAM trough DMA. If people have an intel + card(most X60s come with Intel wifi by default, until you change it),then that card runs + a non-free firwamre and has access to the computer's RAM trough DMA! So + the risk-level is very high.<br/> + <b>Wwan (3d modem):</b> They run proprietary software and have access to the + computer's RAM! So it's like AMT but over the GSM network which is + probably even worse.<br/> + Replacement: external USB wifi dongle. (or USB wwan/3g dongle; note, this has all the same privacy issues as mobile phones. wwan not recommended). + </p> - <h2> - Not covered yet: - </h2> - <ul> - <li>Disable cardbus (has fast/direct memory access)</li> - <li>Disable firewire (has fast/direct memory access)</li> - <li>Disable flashing the ethernet firmware</li> - <li>Disable SPI flash writes (can be re-enabled by unsoldering two parts)</li> - <li>Disable use of xrandr/edid on external monitor (cut 2 pins on VGA)</li> - <li>Disable docking station (might be possible to do it in software, in coreboot upstream as a Kconfig option)</li> - </ul> + <h2> + Not covered yet: + </h2> + <ul> + <li>Disable cardbus (has fast/direct memory access)</li> + <li>Disable firewire (has fast/direct memory access)</li> + <li>Disable flashing the ethernet firmware</li> + <li>Disable SPI flash writes (can be re-enabled by unsoldering two parts)</li> + <li>Disable use of xrandr/edid on external monitor (cut 2 pins on VGA)</li> + <li>Disable docking station (might be possible to do it in software, in coreboot upstream as a Kconfig option)</li> + </ul> + <p> + Go to <a href="http://media.ccc.de/browse/congress/2013/30C3_-_5529_-_en_-_saal_2_-_201312271830_-_hardening_hardware_and_choosing_a_goodbios_-_peter_stuge.html">http://media.ccc.de/browse/congress/2013/30C3_-_5529_-_en_-_saal_2_-_201312271830_-_hardening_hardware_and_choosing_a_goodbios_-_peter_stuge.html</a> + or directly to the video: <a href="http://mirror.netcologne.de/CCC/congress/2013/webm/30c3-5529-en-Hardening_hardware_and_choosing_a_goodBIOS_webm.webm">http://mirror.netcologne.de/CCC/congress/2013/webm/30c3-5529-en-Hardening_hardware_and_choosing_a_goodBIOS_webm.webm</a>. + </p> + <p> + A lot of this tutorial is based on that video. Look towards the second half of the video to see how to do the above. + </p> + + <h2> + Also not covered yet: + </h2> + <ul> + <li> + Intrusion detection: randomized seal on screws<br/> + Just put nail polish with lot of glider on the important screws, take + some good pictures. Keep the pictueres and make sure of their integrity. + Compare the nail polish with the pictures before powering on the laptop. + </li> + <li> + Tips about preventing/mitigating risk of cold boot attack. + <ul> + <li>soldered RAM?</li> + <li>seal RAM door shut (possibly modified lower chassis) so that system has to be disassembled (which has to go through the nail polish)</li> + <li>wipe all RAM at boot/power-off/power-on? (patch in coreboot upstream?)</li> + <li>ask gnutoo about fallback patches (counts number of boots)</li> + </ul> + </li> + <li> + General tips/advice and web links showing how to detect physical intrusions. + </li> + <li> + For example: <a href="http://cs.tau.ac.il/~tromer/acoustic/">http://cs.tau.ac.il/~tromer/acoustic/</a> + or <a href="http://cyber.bgu.ac.il/content/how-leak-sensitive-data-isolated-computer-air-gap-near-mobile-phone-airhopper">http://cyber.bgu.ac.il/content/how-leak-sensitive-data-isolated-computer-air-gap-near-mobile-phone-airhopper</a>. + </li> + <li> + <a href="https://en.wikipedia.org/wiki/Tempest_%28codename%29">https://en.wikipedia.org/wiki/Tempest_%28codename%29</a> + </li> + <li> + https://gitorious.org/gnutoo-for-coreboot/grub-assemble/source/a61f636797777a742f65f4c9c58032aa6a9b23c3: + </li> + </ul> + + </div> + + <div class="section"> + <h1> + Extra notes + </h1> <p> - Go to <a href="http://media.ccc.de/browse/congress/2013/30C3_-_5529_-_en_-_saal_2_-_201312271830_-_hardening_hardware_and_choosing_a_goodbios_-_peter_stuge.html">http://media.ccc.de/browse/congress/2013/30C3_-_5529_-_en_-_saal_2_-_201312271830_-_hardening_hardware_and_choosing_a_goodbios_-_peter_stuge.html</a> - or directly to the video: <a href="http://mirror.netcologne.de/CCC/congress/2013/webm/30c3-5529-en-Hardening_hardware_and_choosing_a_goodBIOS_webm.webm">http://mirror.netcologne.de/CCC/congress/2013/webm/30c3-5529-en-Hardening_hardware_and_choosing_a_goodBIOS_webm.webm</a>. + EC: Cannot be removed but can be mitigated: it contains non-free + non-loadable code, but it has no access to the computer's RAM. + It has access to the on-switch of the wifi, bluetooth, modem and some + other power management features. The issue is that it has access to the + keyboard, however if the software security howto <b>(not yet written)</b> is followed correctly, + it won't be able to leak data to a local attacker. It has no network + access but it may still be able to leak data remotely, but that + requires someone to be nearby to recover the data with the help of an + SDR and some directional antennas<a href="#ref3">[3]</a>. </p> <p> - A lot of this tutorial is based on that video. Look towards the second half of the video to see how to do the above. + <a href="http://www.coreboot.org/Intel_82573_Ethernet_controller">Intel 82573 Ethernet controller</a> + on the X60 seems safe, according to Denis. </p> - <h2> - Also not covered yet: - </h2> - <ul> - <li> - Intrusion detection: randomized seal on screws<br/> - Just put nail polish with lot of glider on the important screws, take - some good pictures. Keep the pictueres and make sure of their integrity. - Compare the nail polish with the pictures before powering on the laptop. - </li> - <li> - Tips about preventing/mitigating risk of cold boot attack. + <div class="subsection"> + <h2> + Risk level + </h2> <ul> - <li>soldered RAM?</li> - <li>seal RAM door shut (possibly modified lower chassis) so that system has to be disassembled (which has to go through the nail polish)</li> - <li>wipe all RAM at boot/power-off/power-on? (patch in coreboot upstream?)</li> - <li>ask gnutoo about fallback patches (counts number of boots)</li> + <li>Modem (3g/wwan): highest</li> + <li>Intel wifi: Near highest</li> + <li>Atheros PCI wifi: unknown, but lower than intel wifi.</li> + <li>Microphone: only problematic if the computer gets compromised.</li> + <li>Speakers: only problematic if the computer gets compromised.</li> + <li>EC: can be mitigated if following the guide on software security.</li> </ul> - </li> - <li> - General tips/advice and web links showing how to detect physical intrusions. - </li> - <li> - For example: <a href="http://cs.tau.ac.il/~tromer/acoustic/">http://cs.tau.ac.il/~tromer/acoustic/</a> - or <a href="http://cyber.bgu.ac.il/content/how-leak-sensitive-data-isolated-computer-air-gap-near-mobile-phone-airhopper">http://cyber.bgu.ac.il/content/how-leak-sensitive-data-isolated-computer-air-gap-near-mobile-phone-airhopper</a>. - </li> - <li> - <a href="https://en.wikipedia.org/wiki/Tempest_%28codename%29">https://en.wikipedia.org/wiki/Tempest_%28codename%29</a> - </li> - <li> - https://gitorious.org/gnutoo-for-coreboot/grub-assemble/source/a61f636797777a742f65f4c9c58032aa6a9b23c3: - </li> - </ul> + </div> + </div> - <h1> - Extra notes - </h1> - <p> - EC: Cannot be removed but can be mitigated: it contains non-free - non-loadable code, but it has no access to the computer's RAM. - It has access to the on-switch of the wifi, bluetooth, modem and some - other power management features. The issue is that it has access to the - keyboard, however if the software security howto <b>(not yet written)</b> is followed correctly, - it won't be able to leak data to a local attacker. It has no network - access but it may still be able to leak data remotely, but that - requires someone to be nearby to recover the data with the help of an - SDR and some directional antennas<a href="#ref3">[3]</a>. - </p> - <p> - <a href="http://www.coreboot.org/Intel_82573_Ethernet_controller">Intel 82573 Ethernet controller</a> - on the X60 seems safe, according to Denis. - </p> - - <h2> - Risk level - </h2> + <div class="section"> + <h1> + Further reading material (software security) + </h1> <ul> - <li>Modem (3g/wwan): highest</li> - <li>Intel wifi: Near highest</li> - <li>Atheros PCI wifi: unknown, but lower than intel wifi.</li> - <li>Microphone: only problematic if the computer gets compromised.</li> - <li>Speakers: only problematic if the computer gets compromised.</li> - <li>EC: can be mitigated if following the guide on software security.</li> + <li><a href="../gnulinux/encrypted_trisquel.html">Installing Trisquel GNU/Linux with full disk encryption (including /boot)</a></li> + <li><a href="../gnulinux/encrypted_parabola.html">Installing Parabola GNU/Linux with full disk encryption (including /boot)</a></li> + <li><a href="dock.html">Notes about DMA access and the docking station</a></li> </ul> + </div> - <h1> - Further reading material (software security) - </h1> - <ul> - <li><a href="../gnulinux/encrypted_trisquel.html">Installing Trisquel GNU/Linux with full disk encryption (including /boot)</a></li> - <li><a href="../gnulinux/encrypted_parabola.html">Installing Parabola GNU/Linux with full disk encryption (including /boot)</a></li> - <li><a href="dock.html">Notes about DMA access and the docking station</a></li> - </ul> + <div class="section"> + <h1> + References + </h1> + <div class="subsection"> + <h2 id="ref1">[1] physical access</h2> + <p> + Explain that black hats, TAO, and so on might use a 0day to get in, + and explain that in this case it mitigates what the attacker can do. + Also the TAO do some evaluation before launching an attack: they take + the probability of beeing caught into account, along with the kind of + target. A 0day costs a lot of money, I heard that it was from 100000$ + to 400000$, some other websites had prices 10 times lower but that + but it was probably a typo. So if people increase their security it + makes it more risky and more costly to attack people. + </p> + </div> + <div class="subsection"> + <h2 id="ref2">[2] microphone</h2> + <p> + It's possible to turn headphones into a microphone, you could try + yourself, however they don't record loud at all. Also intel cards have + the capability to change a connector's function, for instance the + microphone jack can now become a headphone plug, that's called + retasking. There is some support for it in GNU/Linux but it's not very + well known. + </p> + </div> + <div class="subsection"> + <h2 id="ref3">[3] Video (CCC)</h2> + <p> + 30c3-5356-en-Firmware_Fat_Camp_webm.webm from the 30th CCC. While + their demo is experimental(their hardware also got damaged during the + transport), the spies probably already have that since a long time. + <a href="http://berlin.ftp.media.ccc.de/congress/2013/webm/30c3-5356-en-Firmware_Fat_Camp_webm.webm">http://berlin.ftp.media.ccc.de/congress/2013/webm/30c3-5356-en-Firmware_Fat_Camp_webm.webm</a> + </p> + </div> + </div> - <h1> - References - </h1> - <h2 id="ref1">[1] physical access</h2> - <p> - Explain that black hats, TAO, and so on might use a 0day to get in, - and explain that in this case it mitigates what the attacker can do. - Also the TAO do some evaluation before launching an attack: they take - the probability of beeing caught into account, along with the kind of - target. A 0day costs a lot of money, I heard that it was from 100000$ - to 400000$, some other websites had prices 10 times lower but that - but it was probably a typo. So if people increase their security it - makes it more risky and more costly to attack people. - </p> - <h2 id="ref2">[2] microphone</h2> - <p> - It's possible to turn headphones into a microphone, you could try - yourself, however they don't record loud at all. Also intel cards have - the capability to change a connector's function, for instance the - microphone jack can now become a headphone plug, that's called - retasking. There is some support for it in GNU/Linux but it's not very - well known. - </p> - <h2 id="ref3">[3] Video (CCC)</h2> - <p> - 30c3-5356-en-Firmware_Fat_Camp_webm.webm from the 30th CCC. While - their demo is experimental(their hardware also got damaged during the - transport), the spies probably already have that since a long time. - <a href="http://berlin.ftp.media.ccc.de/congress/2013/webm/30c3-5356-en-Firmware_Fat_Camp_webm.webm">http://berlin.ftp.media.ccc.de/congress/2013/webm/30c3-5356-en-Firmware_Fat_Camp_webm.webm</a> - </p> + <div class="section"> -<hr/> - - <p> - Copyright © 2014 Francis Rowe <info@gluglug.org.uk><br/> - This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. - A copy of the license can be found at <a href="../license.txt">../license.txt</a>. - </p> + <p> + Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/> + This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions. + A copy of the license can be found at <a href="../license.txt">../license.txt</a>. + </p> - <p> - This document is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. - </p> + <p> + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information. + </p> + + </div> </body> </html> |