|
|
<!doctype html>
|
|
<html lang="en" class="no-js">
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
<meta name="description" content="Accessible & Free Documentation for Libre Products">
|
|
|
|
|
|
|
|
<meta name="author" content="Abhas Abhinav">
|
|
|
|
|
|
<link rel="shortcut icon" href="../../images/lts-icon.png">
|
|
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.2.4">
|
|
|
|
|
|
|
|
<title>(LC230) User Guide - LibreTechShop - Documentation</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../../assets/stylesheets/main.15aa0b43.min.css">
|
|
|
|
|
|
<link rel="stylesheet" href="../../assets/stylesheets/palette.75751829.min.css">
|
|
|
|
|
|
|
|
<meta name="theme-color" content="#ffffff">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../../css/extra.css">
|
|
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="white" data-md-color-accent="pink">
|
|
|
|
|
|
|
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
<label class="md-overlay" for="__drawer"></label>
|
|
<div data-md-component="skip">
|
|
|
|
|
|
<a href="#lc230-user-guide" class="md-skip">
|
|
Skip to content
|
|
</a>
|
|
|
|
</div>
|
|
<div data-md-component="announce">
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<header class="md-header" data-md-component="header">
|
|
<nav class="md-header-nav md-grid" aria-label="Header">
|
|
<a href="../.." title="LibreTechShop - Documentation" class="md-header-nav__button md-logo" aria-label="LibreTechShop - Documentation">
|
|
|
|
<img src="../../images/lts-icon.png" alt="logo">
|
|
|
|
</a>
|
|
<label class="md-header-nav__button md-icon" for="__drawer">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
|
|
</label>
|
|
<div class="md-header-nav__title" data-md-component="header-title">
|
|
<div class="md-header-nav__ellipsis">
|
|
<div class="md-header-nav__topic">
|
|
<span class="md-ellipsis">
|
|
LibreTechShop - Documentation
|
|
</span>
|
|
</div>
|
|
<div class="md-header-nav__topic">
|
|
<span class="md-ellipsis">
|
|
|
|
(LC230) User Guide
|
|
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<label class="md-header-nav__button md-icon" for="__search">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
|
|
</label>
|
|
|
|
<div class="md-search" data-md-component="search" role="dialog">
|
|
<label class="md-search__overlay" for="__search"></label>
|
|
<div class="md-search__inner" role="search">
|
|
<form class="md-search__form" name="search">
|
|
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required>
|
|
<label class="md-search__icon md-icon" for="__search">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
|
|
</label>
|
|
<button type="reset" class="md-search__icon md-icon" aria-label="Clear" data-md-component="search-reset" tabindex="-1">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
|
|
</button>
|
|
</form>
|
|
<div class="md-search__output">
|
|
<div class="md-search__scrollwrap" data-md-scrollfix>
|
|
<div class="md-search-result" data-md-component="search-result">
|
|
<div class="md-search-result__meta">
|
|
Initializing search
|
|
</div>
|
|
<ol class="md-search-result__list"></ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</nav>
|
|
</header>
|
|
|
|
<div class="md-container" data-md-component="container">
|
|
|
|
|
|
|
|
|
|
<main class="md-main" data-md-component="main">
|
|
<div class="md-main__inner md-grid">
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
|
<label class="md-nav__title" for="__drawer">
|
|
<a href="../.." title="LibreTechShop - Documentation" class="md-nav__button md-logo" aria-label="LibreTechShop - Documentation">
|
|
|
|
<img src="../../images/lts-icon.png" alt="logo">
|
|
|
|
</a>
|
|
LibreTechShop - Documentation
|
|
</label>
|
|
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../.." class="md-nav__link">
|
|
Home
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-2" type="checkbox" id="nav-2" checked>
|
|
|
|
<label class="md-nav__link" for="nav-2">
|
|
LC230
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav class="md-nav" aria-label="LC230" data-md-level="1">
|
|
<label class="md-nav__title" for="nav-2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
LC230
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../" class="md-nav__link">
|
|
(LC230) Overview
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active">
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
(LC230) User Guide
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<a href="./" class="md-nav__link md-nav__link--active">
|
|
(LC230) User Guide
|
|
</a>
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#the-coreboot-boot-process" class="md-nav__link">
|
|
The Coreboot Boot Process
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#installing-an-os" class="md-nav__link">
|
|
Installing an OS
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Installing an OS">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#build-usb-installer" class="md-nav__link">
|
|
Build USB Installer
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#plug-in-usb-disk" class="md-nav__link">
|
|
Plug-in USB Disk
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#choose-the-boot-device" class="md-nav__link">
|
|
Choose the boot device
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#install-the-os" class="md-nav__link">
|
|
Install the OS
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#coreboot-internal-flashing" class="md-nav__link">
|
|
Coreboot Internal Flashing
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Coreboot Internal Flashing">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#configure-the-kernel" class="md-nav__link">
|
|
Configure the kernel
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#query-coreboot-details" class="md-nav__link">
|
|
Query Coreboot details
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#install-flashrom" class="md-nav__link">
|
|
Install: flashrom
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#read-bios-image" class="md-nav__link">
|
|
Read BIOS Image
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#write-bios-image" class="md-nav__link">
|
|
Write BIOS Image
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#flash-skulls" class="md-nav__link">
|
|
Flash: Skulls
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#flash-heads" class="md-nav__link">
|
|
Flash: Heads
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#configuring-coreboot" class="md-nav__link">
|
|
Configuring Coreboot
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Configuring Coreboot">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#swapping-fn-and-ctrl" class="md-nav__link">
|
|
Swapping Fn and Ctrl
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#increasing-graphics-memory" class="md-nav__link">
|
|
Increasing Graphics Memory
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#other-settings" class="md-nav__link">
|
|
Other settings
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../troubleshooting/" class="md-nav__link">
|
|
(LC230) Troubleshooting
|
|
</a>
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../le01/" class="md-nav__link">
|
|
LE01
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../ledc/" class="md-nav__link">
|
|
LEDC
|
|
</a>
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#the-coreboot-boot-process" class="md-nav__link">
|
|
The Coreboot Boot Process
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#installing-an-os" class="md-nav__link">
|
|
Installing an OS
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Installing an OS">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#build-usb-installer" class="md-nav__link">
|
|
Build USB Installer
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#plug-in-usb-disk" class="md-nav__link">
|
|
Plug-in USB Disk
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#choose-the-boot-device" class="md-nav__link">
|
|
Choose the boot device
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#install-the-os" class="md-nav__link">
|
|
Install the OS
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#coreboot-internal-flashing" class="md-nav__link">
|
|
Coreboot Internal Flashing
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Coreboot Internal Flashing">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#configure-the-kernel" class="md-nav__link">
|
|
Configure the kernel
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#query-coreboot-details" class="md-nav__link">
|
|
Query Coreboot details
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#install-flashrom" class="md-nav__link">
|
|
Install: flashrom
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#read-bios-image" class="md-nav__link">
|
|
Read BIOS Image
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#write-bios-image" class="md-nav__link">
|
|
Write BIOS Image
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#flash-skulls" class="md-nav__link">
|
|
Flash: Skulls
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#flash-heads" class="md-nav__link">
|
|
Flash: Heads
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#configuring-coreboot" class="md-nav__link">
|
|
Configuring Coreboot
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Configuring Coreboot">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#swapping-fn-and-ctrl" class="md-nav__link">
|
|
Swapping Fn and Ctrl
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#increasing-graphics-memory" class="md-nav__link">
|
|
Increasing Graphics Memory
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#other-settings" class="md-nav__link">
|
|
Other settings
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="md-content">
|
|
<article class="md-content__inner md-typeset">
|
|
|
|
|
|
|
|
<h1 id="lc230-user-guide">(LC230) User Guide<a class="headerlink" href="#lc230-user-guide" title="Permanent link">¶</a></h1>
|
|
<h2 id="the-coreboot-boot-process">The Coreboot Boot Process<a class="headerlink" href="#the-coreboot-boot-process" title="Permanent link">¶</a></h2>
|
|
<p>Here is what the boot process looks like with Coreboot installed:</p>
|
|
<figure>
|
|
<img src="/images/coreboot-diagram.png" width="420" />
|
|
<figcaption>Coreboot Sequence Diagram</figcaption>
|
|
</figure>
|
|
|
|
<p>The first part of the boot process (labelled as "Coreboot Internal" in the diagram above) is
|
|
largely hidden from the user. The boot process is illustrated below:</p>
|
|
<figure>
|
|
<img src="/images/lc230-boot.gif" width="420" />
|
|
<figcaption>LC230 Boot Process</figcaption>
|
|
</figure>
|
|
|
|
<h2 id="installing-an-os">Installing an OS<a class="headerlink" href="#installing-an-os" title="Permanent link">¶</a></h2>
|
|
<p>To install any GNU/Linux OS, here is a sequence of steps:</p>
|
|
<h3 id="build-usb-installer">Build USB Installer<a class="headerlink" href="#build-usb-installer" title="Permanent link">¶</a></h3>
|
|
<p>Any GNU/Linux OS would work very well on your LC230 laptop. (Some owners have
|
|
also installed and used FreeBSD on it.)</p>
|
|
<p>LC230 is configured to run without any proprietary firmware and hence, any of
|
|
the following operating systems would work well by default:</p>
|
|
<ul>
|
|
<li><a href="https://debian.org">Debian GNU/Linux (main)</a></li>
|
|
<li><a href="https://pureos.net/">PureOS</a></li>
|
|
<li><a href="https://trisquel.info/">Triquel</a></li>
|
|
</ul>
|
|
<div class="admonition tip">
|
|
<p class="admonition-title">Tip</p>
|
|
<p>The <a href="https://www.raspberrypi.org/software/">Rasperrby Pi Imager</a> is a good
|
|
tool to use to write an OS image to a USB disk. <a href="https://www.balena.io/etcher/">Balena Etcher</a> is another
|
|
one.</p>
|
|
</div>
|
|
<h3 id="plug-in-usb-disk">Plug-in USB Disk<a class="headerlink" href="#plug-in-usb-disk" title="Permanent link">¶</a></h3>
|
|
<p>The USB needs to be plugged in before you reboot the laptop - or else SeaBIOS
|
|
will not detect it and show it as a boot option.</p>
|
|
<div class="admonition info">
|
|
<p class="admonition-title">Info</p>
|
|
<p>The blue USB ports on the left side of the laptop are USB3 ports. If you
|
|
have a USB disk that works with USB3, then using these ports will give you
|
|
much better USB disk performance.</p>
|
|
<p>The USB port on the right side (yellow in colour) is a USB2 port.</p>
|
|
</div>
|
|
<h3 id="choose-the-boot-device">Choose the boot device<a class="headerlink" href="#choose-the-boot-device" title="Permanent link">¶</a></h3>
|
|
<p>Press <span class="keys"><kbd class="key-escape">Esc</kbd></span> on boot and choose the USB disk as the boot device</p>
|
|
<figure>
|
|
<img src="/images/lc230-boot-logo.jpg" width="400" />
|
|
<figcaption>LC230 Boot Image</figcaption>
|
|
</figure>
|
|
|
|
<p>By default, the first boot option is chosen to boot off. This is usually the
|
|
2.5" SATA disk if it is plugged in to the laptop. To choose another boot
|
|
device, you need to press <span class="keys"><kbd class="key-escape">Esc</kbd></span> and then choose the desired boot device
|
|
from the SeaBIOS menu.</p>
|
|
<p>If you have a 2.5" SATA disk, then a USB disk would be the second boot device.
|
|
If you have a 2.5" SATA disk <strong>and</strong> a mSATA disk, then the USB disk would be
|
|
the third boot device.</p>
|
|
<figure>
|
|
<img src="/images/lc230-usb3.jpg"/>
|
|
<figcaption>LC230 USB3 Ports</figcaption>
|
|
</figure>
|
|
|
|
<h3 id="install-the-os">Install the OS<a class="headerlink" href="#install-the-os" title="Permanent link">¶</a></h3>
|
|
<p>You can now proceed with the OS installation as normal.</p>
|
|
<p>The LC230 does not provide a UEFI BIOS (like the default Lenovo BIOS firmware).
|
|
SeaBIOS is a pc-bios payload and most GNU/Linux OS installers will detect that
|
|
and install the correct bootloader. This would be <code>grub-pc</code> if you choose to
|
|
use Grub and Debian.</p>
|
|
<h2 id="coreboot-internal-flashing">Coreboot Internal Flashing<a class="headerlink" href="#coreboot-internal-flashing" title="Permanent link">¶</a></h2>
|
|
<p>To flash Coreboot to the x230 motherboard, the first step is to flash the BIOS
|
|
externally - ie. using a SIOC-8 flashing clip connecting to the BIOS chips:</p>
|
|
<figure>
|
|
<img src="/images/x230-flashing.png"/>
|
|
<figcaption>Liberating the LC230 via External Flashing</figcaption>
|
|
</figure>
|
|
|
|
<p>However, as a part of the external flashing process, the BIOS is unlocked. This
|
|
means that you can update / modify the BIOS on the SPI Flash internally - from
|
|
within the operating system. Here are some reasons to do that and the steps
|
|
involved.</p>
|
|
<h3 id="configure-the-kernel">Configure the kernel<a class="headerlink" href="#configure-the-kernel" title="Permanent link">¶</a></h3>
|
|
<p>The first things to do before you can flash Coreboot internally, is to boot the
|
|
kernel with an additional option:</p>
|
|
<div class="codehilite"><pre><span></span><code>iomem=relaxed
|
|
</code></pre></div>
|
|
|
|
<p>On Debian (and derived operating systems such as Ubuntu), you can make this a
|
|
permanent setting:</p>
|
|
<ol>
|
|
<li>Edit the file: <code>/etc/default/grub</code></li>
|
|
<li>
|
|
<p>Update the line <code>GRUB_CMDLINE_LINUX</code> to read:</p>
|
|
<p><code>GRUB_CMDLINE_LINUX="iomem=relaxed"</code></p>
|
|
</li>
|
|
<li>
|
|
<p>Run: <code>update-grub</code> to update the Grub configuration.</p>
|
|
</li>
|
|
</ol>
|
|
<h3 id="query-coreboot-details">Query Coreboot details<a class="headerlink" href="#query-coreboot-details" title="Permanent link">¶</a></h3>
|
|
<p>You can verify the coreboot version (as well as the fact that you're running
|
|
coreboot) by using the <code>dmidecode</code> utility as follows:</p>
|
|
<h4>BIOS version</h4>
|
|
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo dmidecode -t bios
|
|
<span class="gp"># </span>dmidecode <span class="m">3</span>.3
|
|
<span class="go">Getting SMBIOS data from sysfs.</span>
|
|
<span class="go">SMBIOS 2.8 present.</span>
|
|
|
|
<span class="go">Handle 0x0000, DMI type 0, 26 bytes</span>
|
|
<span class="go">BIOS Information</span>
|
|
<span class="go"> Vendor: coreboot</span>
|
|
<span class="go"> Version: CBET4000 4.10-1082-g4357a82076-dirty</span>
|
|
<span class="go"> Release Date: 10/20/2019</span>
|
|
<span class="go"> ROM Size: 12 MB</span>
|
|
<span class="go"> Characteristics:</span>
|
|
<span class="go"> PCI is supported</span>
|
|
<span class="go"> PC Card (PCMCIA) is supported</span>
|
|
<span class="go"> BIOS is upgradeable</span>
|
|
<span class="go"> Selectable boot is supported</span>
|
|
<span class="go"> ACPI is supported</span>
|
|
<span class="go"> Targeted content distribution is supported</span>
|
|
<span class="go"> BIOS Revision: 4.10</span>
|
|
<span class="go"> Firmware Revision: 0.0</span>
|
|
</code></pre></div>
|
|
<h4>System type & name</h4>
|
|
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo dmidecode -t system
|
|
<span class="gp"># </span>dmidecode <span class="m">3</span>.3
|
|
<span class="go">Getting SMBIOS data from sysfs.</span>
|
|
<span class="go">SMBIOS 2.8 present.</span>
|
|
|
|
<span class="go">Handle 0x0001, DMI type 1, 27 bytes</span>
|
|
<span class="go">System Information</span>
|
|
<span class="go"> Manufacturer: LENOVO</span>
|
|
<span class="go"> Product Name: 2325BU3</span>
|
|
<span class="go"> Version: ThinkPad X230</span>
|
|
<span class="go"> Serial Number: PK1HM8E</span>
|
|
<span class="go"> UUID: ce136601-xxxx-xxxx-xxxx-xxxxxxxxxxxx</span>
|
|
<span class="go"> Wake-up Type: Reserved</span>
|
|
<span class="go"> SKU Number: Not Specified</span>
|
|
<span class="go"> Family: ThinkPad X230</span>
|
|
|
|
<span class="go">Handle 0x000B, DMI type 32, 11 bytes</span>
|
|
<span class="go">System Boot Information</span>
|
|
<span class="go"> Status: No errors detected</span>
|
|
</code></pre></div>
|
|
<h3 id="install-flashrom">Install: <code>flashrom</code><a class="headerlink" href="#install-flashrom" title="Permanent link">¶</a></h3>
|
|
<p>The primary tool for operating on your BIOS is called <code>flashrom</code>. The Debian
|
|
package is also called by the same name and can be installed as:</p>
|
|
<div class="codehilite"><pre><span></span><code>apt-get install flashrom
|
|
</code></pre></div>
|
|
|
|
<p>If the kernel is booted correctly with <code>iomem=relaxed</code>, you can run <code>flashrom</code>:</p>
|
|
<div class="codehilite"><pre><span></span><code>flashrom -pinternal
|
|
</code></pre></div>
|
|
|
|
<p>Ouput:</p>
|
|
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo flashrom -pinternal
|
|
<span class="go">flashrom v1.2 on Linux 5.10.9-gnu (x86_64)</span>
|
|
<span class="go">flashrom is free software, get the source code at https://flashrom.org</span>
|
|
|
|
<span class="go">Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).</span>
|
|
<span class="go">coreboot table found at 0xbff51000.</span>
|
|
<span class="go">Found chipset "Intel QM77".</span>
|
|
<span class="go">Enabling flash write... SPI Configuration is locked down.</span>
|
|
<span class="go">Enabling hardware sequencing due to multiple flash chips detected.</span>
|
|
<span class="go">OK.</span>
|
|
<span class="go">Found Programmer flash chip "Opaque flash chip" (12288 kB, Programmer-specific) mapped at physical address 0x0000000000000000.</span>
|
|
<span class="go">No operations were specified.</span>
|
|
</code></pre></div>
|
|
<div class="admonition tip">
|
|
<p class="admonition-title">Tip</p>
|
|
<p>Sometimes <code>flashrom</code> will not detect the internal flash chip, though it
|
|
might very well be able to confirm the BIOS type and machine name. In such
|
|
cases, you can try to run <code>flashrom</code> as: <code>flashrom
|
|
-pinternal:laptop=force_I_want_a_brick</code>. This is not completely safe</p>
|
|
</div>
|
|
<h3 id="read-bios-image">Read BIOS Image<a class="headerlink" href="#read-bios-image" title="Permanent link">¶</a></h3>
|
|
<p>You can dump the BIOS to a file:</p>
|
|
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>flashrom -pinternal -r lc230-coreboot.rom
|
|
</code></pre></div>
|
|
<p>This will read the BIOS to a file: <code>lc230-coreboot.rom</code>. This file will be 12 MB in size.</p>
|
|
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo flashrom -pinternal -r lc230.rom
|
|
<span class="go">flashrom v1.2 on Linux 5.10.9-gnu (x86_64)</span>
|
|
<span class="go">flashrom is free software, get the source code at https://flashrom.org</span>
|
|
|
|
<span class="go">Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).</span>
|
|
<span class="go">coreboot table found at 0xbff51000.</span>
|
|
<span class="go">Found chipset "Intel QM77".</span>
|
|
<span class="go">Enabling flash write... SPI Configuration is locked down.</span>
|
|
<span class="go">Enabling hardware sequencing due to multiple flash chips detected.</span>
|
|
<span class="go">OK.</span>
|
|
<span class="go">Found Programmer flash chip "Opaque flash chip" (12288 kB, Programmer-specific) mapped at physical address 0x0000000000000000.</span>
|
|
<span class="go">Reading flash... done.</span>
|
|
<span class="gp">$ </span>ls -lh lc230-coreboot.rom
|
|
<span class="go">-rw-r--r-- 1 root root 12M Feb 8 04:46 lc230-coreboot.rom</span>
|
|
</code></pre></div>
|
|
<h3 id="write-bios-image">Write BIOS Image<a class="headerlink" href="#write-bios-image" title="Permanent link">¶</a></h3>
|
|
<p>You can now write back to the BIOS chips as follows:</p>
|
|
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo flashrom -pinternal -w lc230-coreboot.rom
|
|
<span class="go">flashrom v1.2 on Linux 5.10.9-gnu (x86_64)</span>
|
|
<span class="go">flashrom is free software, get the source code at https://flashrom.org</span>
|
|
|
|
<span class="go">Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).</span>
|
|
<span class="go">coreboot table found at 0xbff51000.</span>
|
|
<span class="go">Found chipset "Intel QM77".</span>
|
|
<span class="go">Enabling flash write... SPI Configuration is locked down.</span>
|
|
<span class="go">Enabling hardware sequencing due to multiple flash chips detected.</span>
|
|
<span class="go">OK.</span>
|
|
<span class="go">Found Programmer flash chip "Opaque flash chip" (12288 kB, Programmer-specific) mapped at physical address 0x0000000000000000.</span>
|
|
<span class="go">Reading old flash chip contents... done.</span>
|
|
<span class="go">Erasing and writing flash chip... </span>
|
|
<span class="go">Warning: Chip content is identical to the requested image.</span>
|
|
<span class="go">Erase/write done</span>
|
|
</code></pre></div>
|
|
<h3 id="flash-skulls">Flash: Skulls<a class="headerlink" href="#flash-skulls" title="Permanent link">¶</a></h3>
|
|
<p>The Skulls Coreboot distribution provides built in scripts to upgrade the BIOS.
|
|
The update procedure is <a href="https://github.com/merge/skulls/blob/master/x230/README.md#updating">detailed
|
|
here</a>.
|
|
Your LC230 ships with the latest release of Skull available at the time of
|
|
shipping the laptop to you. You can upgrade skulls using the instructions above. </p>
|
|
<h3 id="flash-heads">Flash: Heads<a class="headerlink" href="#flash-heads" title="Permanent link">¶</a></h3>
|
|
<p>If you want to experiment with the <a href="https://osresearch.net/">Heads firmware</a>,
|
|
instructions are available on the <a href="https://osresearch.net/">Heads website</a> as
|
|
well as in the <a href="https://github.com/merge/skulls/blob/master/x230/README.md#moving-to-heads">Skulls documentation</a>.</p>
|
|
<h2 id="configuring-coreboot">Configuring Coreboot<a class="headerlink" href="#configuring-coreboot" title="Permanent link">¶</a></h2>
|
|
<p>Your LC230 ships with a SeaBIOS payload called <code>nvramcui</code> that allows you to
|
|
configure coreboot behaviour and save the settings to nvram.</p>
|
|
<div style="text-align: center">
|
|
<figure style="display: inline-block" >
|
|
<img src="/images/nvramcui-1.jpg" width="250" />
|
|
<figcaption> nvramcui options (1) </figcaption>
|
|
</figure>
|
|
|
|
<figure style="display: inline-block" >
|
|
<img src="/images/nvramcui-2.jpg" width="235" />
|
|
<figcaption> nvramcui options (2) </figcaption>
|
|
</figure>
|
|
|
|
<figure style="display: inline-block" >
|
|
<img src="/images/nvramcui-3.jpg" width="235" />
|
|
<figcaption> nvramcui options (3) </figcaption>
|
|
</figure>
|
|
</div>
|
|
|
|
<h3 id="swapping-fn-and-ctrl">Swapping <span class="keys"><kbd class="key-function">Fn</kbd></span> and <span class="keys"><kbd class="key-control">Ctrl</kbd></span><a class="headerlink" href="#swapping-fn-and-ctrl" title="Permanent link">¶</a></h3>
|
|
<p>The <code>fn_ctrl_swap</code> on the 2<sup>nd</sup> page of the <code>nvramcui</code> settings page enables you
|
|
to toggle the <span class="keys"><kbd class="key-function">Fn</kbd></span> and <span class="keys"><kbd class="key-control">Ctrl</kbd></span> swap. If you like to have the control key
|
|
on the bottom left corner of the keyboard, then you can set this option to <code>Enable</code>.</p>
|
|
<h3 id="increasing-graphics-memory">Increasing Graphics Memory<a class="headerlink" href="#increasing-graphics-memory" title="Permanent link">¶</a></h3>
|
|
<p>The x230 GPU does not have dedication RAM. Instead it shares its memory with
|
|
the main system memory. You can configure how much RAM is dedicated to the GPU
|
|
via the <code>gfx_uma_size</code> option on the 3<sup>rd</sup> page of the <code>nvramcui</code> settings.</p>
|
|
<p>Pressing the <span class="keys"><kbd class="key-arrow-left">Left</kbd></span> and <span class="keys"><kbd class="key-arrow-right">Right</kbd></span> arrow keys you can iterate over all the
|
|
available settings for this option.</p>
|
|
<h3 id="other-settings">Other settings<a class="headerlink" href="#other-settings" title="Permanent link">¶</a></h3>
|
|
<p>You can also configure the following behaviour via nvramcui:</p>
|
|
<ul>
|
|
<li>
|
|
<p><strong>Always On USB</strong>: By enabling this option, you can configure the USB ports
|
|
to be <em>always on</em> - even when the laptop is suspended.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>Enable/Disable Trackpoing, Touchpad</strong>: You can toggle the <code>touchpad</code> and
|
|
<code>trackpoint</code> options to enable or disable the the touchpad and trackpoint
|
|
respectively.</p>
|
|
</li>
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</article>
|
|
</div>
|
|
</div>
|
|
</main>
|
|
|
|
|
|
<footer class="md-footer">
|
|
|
|
<div class="md-footer-nav">
|
|
<nav class="md-footer-nav__inner md-grid" aria-label="Footer">
|
|
|
|
<a href="../" class="md-footer-nav__link md-footer-nav__link--prev" rel="prev">
|
|
<div class="md-footer-nav__button md-icon">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
|
|
</div>
|
|
<div class="md-footer-nav__title">
|
|
<div class="md-ellipsis">
|
|
<span class="md-footer-nav__direction">
|
|
Previous
|
|
</span>
|
|
(LC230) Overview
|
|
</div>
|
|
</div>
|
|
</a>
|
|
|
|
|
|
<a href="../troubleshooting/" class="md-footer-nav__link md-footer-nav__link--next" rel="next">
|
|
<div class="md-footer-nav__title">
|
|
<div class="md-ellipsis">
|
|
<span class="md-footer-nav__direction">
|
|
Next
|
|
</span>
|
|
(LC230) Troubleshooting
|
|
</div>
|
|
</div>
|
|
<div class="md-footer-nav__button md-icon">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
|
|
</div>
|
|
</a>
|
|
|
|
</nav>
|
|
</div>
|
|
|
|
<div class="md-footer-meta md-typeset">
|
|
<div class="md-footer-meta__inner md-grid">
|
|
<div class="md-footer-copyright">
|
|
|
|
<div class="md-footer-copyright__highlight">
|
|
Copyright © Mostly Harmless
|
|
</div>
|
|
|
|
Made with
|
|
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
|
Material for MkDocs
|
|
</a>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
|
|
<script src="../../assets/javascripts/vendor.93c04032.min.js"></script>
|
|
<script src="../../assets/javascripts/bundle.83e5331e.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
|
|
|
|
<script>
|
|
app = initialize({
|
|
base: "../..",
|
|
features: [],
|
|
search: Object.assign({
|
|
worker: "../../assets/javascripts/worker/search.8c7e0a7e.min.js"
|
|
}, typeof search !== "undefined" && search)
|
|
})
|
|
</script>
|
|
|
|
|
|
</body>
|
|
</html>
|