User documentation and guides for products sold on the Libre Tech Shop. https://docs.libretech.shop
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1390 lines
41 KiB

  1. <!doctype html>
  2. <html lang="en" class="no-js">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <meta name="description" content="Accessible & Free Documentation for Libre Products">
  7. <meta name="author" content="Abhas Abhinav">
  8. <link rel="icon" href="../../images/als-icon.png">
  9. <meta name="generator" content="mkdocs-1.2.3, mkdocs-material-8.1.7">
  10. <title>(LC230) User Guide - LibreTechShop - Documentation</title>
  11. <link rel="stylesheet" href="../../assets/stylesheets/main.cd566b2a.min.css">
  12. <link rel="stylesheet" href="../../assets/stylesheets/palette.e6a45f82.min.css">
  13. <meta name="theme-color" content="#7e56c2">
  14. <link rel="stylesheet" href="../../css/extra.css">
  15. <script>__md_scope=new URL("../..",location),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
  16. </head>
  17. <body dir="ltr" data-md-color-scheme="light" data-md-color-primary="deep-purple" data-md-color-accent="pink">
  18. <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
  19. <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
  20. <label class="md-overlay" for="__drawer"></label>
  21. <div data-md-component="skip">
  22. <a href="#lc230-user-guide" class="md-skip">
  23. Skip to content
  24. </a>
  25. </div>
  26. <div data-md-component="announce">
  27. </div>
  28. <header class="md-header" data-md-component="header">
  29. <nav class="md-header__inner md-grid" aria-label="Header">
  30. <a href="../.." title="LibreTechShop - Documentation" class="md-header__button md-logo" aria-label="LibreTechShop - Documentation" data-md-component="logo">
  31. <img src="../../images/als-icon.png" alt="logo">
  32. </a>
  33. <label class="md-header__button md-icon" for="__drawer">
  34. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
  35. </label>
  36. <div class="md-header__title" data-md-component="header-title">
  37. <div class="md-header__ellipsis">
  38. <div class="md-header__topic">
  39. <span class="md-ellipsis">
  40. LibreTechShop - Documentation
  41. </span>
  42. </div>
  43. <div class="md-header__topic" data-md-component="header-topic">
  44. <span class="md-ellipsis">
  45. (LC230) User Guide
  46. </span>
  47. </div>
  48. </div>
  49. </div>
  50. <label class="md-header__button md-icon" for="__search">
  51. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 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 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
  52. </label>
  53. <div class="md-search" data-md-component="search" role="dialog">
  54. <label class="md-search__overlay" for="__search"></label>
  55. <div class="md-search__inner" role="search">
  56. <form class="md-search__form" name="search">
  57. <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" required>
  58. <label class="md-search__icon md-icon" for="__search">
  59. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 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 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
  60. <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>
  61. </label>
  62. <nav class="md-search__options" aria-label="Search">
  63. <button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
  64. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.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>
  65. </button>
  66. </nav>
  67. </form>
  68. <div class="md-search__output">
  69. <div class="md-search__scrollwrap" data-md-scrollfix>
  70. <div class="md-search-result" data-md-component="search-result">
  71. <div class="md-search-result__meta">
  72. Initializing search
  73. </div>
  74. <ol class="md-search-result__list"></ol>
  75. </div>
  76. </div>
  77. </div>
  78. </div>
  79. </div>
  80. <div class="md-header__source">
  81. <a href="https://sovran.dev/mh/lts-docs" title="Go to repository" class="md-source" data-md-component="source">
  82. <div class="md-source__icon md-icon">
  83. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
  84. </div>
  85. <div class="md-source__repository">
  86. mh/lts-docs
  87. </div>
  88. </a>
  89. </div>
  90. </nav>
  91. </header>
  92. <div class="md-container" data-md-component="container">
  93. <main class="md-main" data-md-component="main">
  94. <div class="md-main__inner md-grid">
  95. <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
  96. <div class="md-sidebar__scrollwrap">
  97. <div class="md-sidebar__inner">
  98. <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
  99. <label class="md-nav__title" for="__drawer">
  100. <a href="../.." title="LibreTechShop - Documentation" class="md-nav__button md-logo" aria-label="LibreTechShop - Documentation" data-md-component="logo">
  101. <img src="../../images/als-icon.png" alt="logo">
  102. </a>
  103. LibreTechShop - Documentation
  104. </label>
  105. <div class="md-nav__source">
  106. <a href="https://sovran.dev/mh/lts-docs" title="Go to repository" class="md-source" data-md-component="source">
  107. <div class="md-source__icon md-icon">
  108. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
  109. </div>
  110. <div class="md-source__repository">
  111. mh/lts-docs
  112. </div>
  113. </a>
  114. </div>
  115. <ul class="md-nav__list" data-md-scrollfix>
  116. <li class="md-nav__item">
  117. <a href="../.." class="md-nav__link">
  118. Home
  119. </a>
  120. </li>
  121. <li class="md-nav__item md-nav__item--active md-nav__item--nested">
  122. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2" type="checkbox" id="__nav_2" checked>
  123. <label class="md-nav__link" for="__nav_2">
  124. LC230
  125. <span class="md-nav__icon md-icon"></span>
  126. </label>
  127. <nav class="md-nav" aria-label="LC230" data-md-level="1">
  128. <label class="md-nav__title" for="__nav_2">
  129. <span class="md-nav__icon md-icon"></span>
  130. LC230
  131. </label>
  132. <ul class="md-nav__list" data-md-scrollfix>
  133. <li class="md-nav__item">
  134. <a href="../" class="md-nav__link">
  135. (LC230) Overview
  136. </a>
  137. </li>
  138. <li class="md-nav__item md-nav__item--active">
  139. <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
  140. <label class="md-nav__link md-nav__link--active" for="__toc">
  141. (LC230) User Guide
  142. <span class="md-nav__icon md-icon"></span>
  143. </label>
  144. <a href="./" class="md-nav__link md-nav__link--active">
  145. (LC230) User Guide
  146. </a>
  147. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  148. <label class="md-nav__title" for="__toc">
  149. <span class="md-nav__icon md-icon"></span>
  150. Table of contents
  151. </label>
  152. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  153. <li class="md-nav__item">
  154. <a href="#the-coreboot-boot-process" class="md-nav__link">
  155. The Coreboot Boot Process
  156. </a>
  157. </li>
  158. <li class="md-nav__item">
  159. <a href="#installing-an-os" class="md-nav__link">
  160. Installing an OS
  161. </a>
  162. <nav class="md-nav" aria-label="Installing an OS">
  163. <ul class="md-nav__list">
  164. <li class="md-nav__item">
  165. <a href="#build-usb-installer" class="md-nav__link">
  166. Build USB Installer
  167. </a>
  168. </li>
  169. <li class="md-nav__item">
  170. <a href="#plug-in-usb-disk" class="md-nav__link">
  171. Plug-in USB Disk
  172. </a>
  173. </li>
  174. <li class="md-nav__item">
  175. <a href="#choose-the-boot-device" class="md-nav__link">
  176. Choose the boot device
  177. </a>
  178. </li>
  179. <li class="md-nav__item">
  180. <a href="#install-the-os" class="md-nav__link">
  181. Install the OS
  182. </a>
  183. </li>
  184. </ul>
  185. </nav>
  186. </li>
  187. <li class="md-nav__item">
  188. <a href="#coreboot-internal-flashing" class="md-nav__link">
  189. Coreboot Internal Flashing
  190. </a>
  191. <nav class="md-nav" aria-label="Coreboot Internal Flashing">
  192. <ul class="md-nav__list">
  193. <li class="md-nav__item">
  194. <a href="#configure-the-kernel" class="md-nav__link">
  195. Configure the kernel
  196. </a>
  197. </li>
  198. <li class="md-nav__item">
  199. <a href="#query-coreboot-details" class="md-nav__link">
  200. Query Coreboot details
  201. </a>
  202. </li>
  203. <li class="md-nav__item">
  204. <a href="#install-flashrom" class="md-nav__link">
  205. Install: flashrom
  206. </a>
  207. </li>
  208. <li class="md-nav__item">
  209. <a href="#read-bios-image" class="md-nav__link">
  210. Read BIOS Image
  211. </a>
  212. </li>
  213. <li class="md-nav__item">
  214. <a href="#write-bios-image" class="md-nav__link">
  215. Write BIOS Image
  216. </a>
  217. </li>
  218. <li class="md-nav__item">
  219. <a href="#flash-skulls" class="md-nav__link">
  220. Flash: Skulls
  221. </a>
  222. </li>
  223. <li class="md-nav__item">
  224. <a href="#flash-heads" class="md-nav__link">
  225. Flash: Heads
  226. </a>
  227. </li>
  228. </ul>
  229. </nav>
  230. </li>
  231. <li class="md-nav__item">
  232. <a href="#configuring-coreboot" class="md-nav__link">
  233. Configuring Coreboot
  234. </a>
  235. <nav class="md-nav" aria-label="Configuring Coreboot">
  236. <ul class="md-nav__list">
  237. <li class="md-nav__item">
  238. <a href="#swapping-fn-and-ctrl" class="md-nav__link">
  239. Swapping Fn and Ctrl
  240. </a>
  241. </li>
  242. <li class="md-nav__item">
  243. <a href="#increasing-graphics-memory" class="md-nav__link">
  244. Increasing Graphics Memory
  245. </a>
  246. </li>
  247. <li class="md-nav__item">
  248. <a href="#other-settings" class="md-nav__link">
  249. Other settings
  250. </a>
  251. </li>
  252. </ul>
  253. </nav>
  254. </li>
  255. </ul>
  256. </nav>
  257. </li>
  258. <li class="md-nav__item">
  259. <a href="../troubleshooting/" class="md-nav__link">
  260. (LC230) Troubleshooting
  261. </a>
  262. </li>
  263. </ul>
  264. </nav>
  265. </li>
  266. <li class="md-nav__item md-nav__item--nested">
  267. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
  268. <label class="md-nav__link" for="__nav_3">
  269. MH-USB
  270. <span class="md-nav__icon md-icon"></span>
  271. </label>
  272. <nav class="md-nav" aria-label="MH-USB" data-md-level="1">
  273. <label class="md-nav__title" for="__nav_3">
  274. <span class="md-nav__icon md-icon"></span>
  275. MH-USB
  276. </label>
  277. <ul class="md-nav__list" data-md-scrollfix>
  278. <li class="md-nav__item">
  279. <a href="../../usb/" class="md-nav__link">
  280. (MHUSB) About & Contents
  281. </a>
  282. </li>
  283. <li class="md-nav__item">
  284. <a href="../../usb/use/" class="md-nav__link">
  285. (MHUSB) Using the USB disk
  286. </a>
  287. </li>
  288. <li class="md-nav__item">
  289. <a href="../../usb/update/" class="md-nav__link">
  290. (MHUSB) Add / Update images
  291. </a>
  292. </li>
  293. <li class="md-nav__item">
  294. <a href="../../usb/internals/" class="md-nav__link">
  295. (MHUSB) Internals
  296. </a>
  297. </li>
  298. <li class="md-nav__item">
  299. <a href="../../usb/faqs/" class="md-nav__link">
  300. (MHUSB) FAQs
  301. </a>
  302. </li>
  303. </ul>
  304. </nav>
  305. </li>
  306. <li class="md-nav__item md-nav__item--nested">
  307. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
  308. <label class="md-nav__link" for="__nav_4">
  309. Routers
  310. <span class="md-nav__icon md-icon"></span>
  311. </label>
  312. <nav class="md-nav" aria-label="Routers" data-md-level="1">
  313. <label class="md-nav__title" for="__nav_4">
  314. <span class="md-nav__icon md-icon"></span>
  315. Routers
  316. </label>
  317. <ul class="md-nav__list" data-md-scrollfix>
  318. <li class="md-nav__item">
  319. <a href="../../routers/" class="md-nav__link">
  320. Introduction
  321. </a>
  322. </li>
  323. <li class="md-nav__item">
  324. <a href="../../routers/first-use/" class="md-nav__link">
  325. First Use
  326. </a>
  327. </li>
  328. <li class="md-nav__item">
  329. <a href="../../routers/next-steps/" class="md-nav__link">
  330. Next Steps
  331. </a>
  332. </li>
  333. <li class="md-nav__item">
  334. <a href="../../routers/optional-steps/" class="md-nav__link">
  335. Optional Steps
  336. </a>
  337. </li>
  338. <li class="md-nav__item">
  339. <a href="../../routers/cli/" class="md-nav__link">
  340. Command Line Guide
  341. </a>
  342. </li>
  343. <li class="md-nav__item">
  344. <a href="../../routers/upgrade/" class="md-nav__link">
  345. Upgrading OpenWrt
  346. </a>
  347. </li>
  348. </ul>
  349. </nav>
  350. </li>
  351. <li class="md-nav__item md-nav__item--nested">
  352. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
  353. <label class="md-nav__link" for="__nav_5">
  354. Phones
  355. <span class="md-nav__icon md-icon"></span>
  356. </label>
  357. <nav class="md-nav" aria-label="Phones" data-md-level="1">
  358. <label class="md-nav__title" for="__nav_5">
  359. <span class="md-nav__icon md-icon"></span>
  360. Phones
  361. </label>
  362. <ul class="md-nav__list" data-md-scrollfix>
  363. <li class="md-nav__item">
  364. <a href="../../phones/" class="md-nav__link">
  365. Introduction
  366. </a>
  367. </li>
  368. <li class="md-nav__item">
  369. <a href="../../phones/lineageos/" class="md-nav__link">
  370. LineageOS
  371. </a>
  372. </li>
  373. <li class="md-nav__item">
  374. <a href="../../phones/f-droid/" class="md-nav__link">
  375. F-Droid
  376. </a>
  377. </li>
  378. <li class="md-nav__item">
  379. <a href="../../phones/first-use/" class="md-nav__link">
  380. First Use
  381. </a>
  382. </li>
  383. <li class="md-nav__item">
  384. <a href="../../phones/applications/" class="md-nav__link">
  385. Applications
  386. </a>
  387. </li>
  388. <li class="md-nav__item">
  389. <a href="../../phones/services/" class="md-nav__link">
  390. Services
  391. </a>
  392. </li>
  393. <li class="md-nav__item">
  394. <a href="../../phones/backups/" class="md-nav__link">
  395. Taking Backups
  396. </a>
  397. </li>
  398. <li class="md-nav__item">
  399. <a href="../../phones/recovery/" class="md-nav__link">
  400. Using Recovery
  401. </a>
  402. </li>
  403. <li class="md-nav__item">
  404. <a href="../../phones/ubports/" class="md-nav__link">
  405. Installing Ubports
  406. </a>
  407. </li>
  408. <li class="md-nav__item">
  409. <a href="../../phones/calyxos/" class="md-nav__link">
  410. Installing CalyxOS
  411. </a>
  412. </li>
  413. </ul>
  414. </nav>
  415. </li>
  416. </ul>
  417. </nav>
  418. </div>
  419. </div>
  420. </div>
  421. <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
  422. <div class="md-sidebar__scrollwrap">
  423. <div class="md-sidebar__inner">
  424. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  425. <label class="md-nav__title" for="__toc">
  426. <span class="md-nav__icon md-icon"></span>
  427. Table of contents
  428. </label>
  429. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  430. <li class="md-nav__item">
  431. <a href="#the-coreboot-boot-process" class="md-nav__link">
  432. The Coreboot Boot Process
  433. </a>
  434. </li>
  435. <li class="md-nav__item">
  436. <a href="#installing-an-os" class="md-nav__link">
  437. Installing an OS
  438. </a>
  439. <nav class="md-nav" aria-label="Installing an OS">
  440. <ul class="md-nav__list">
  441. <li class="md-nav__item">
  442. <a href="#build-usb-installer" class="md-nav__link">
  443. Build USB Installer
  444. </a>
  445. </li>
  446. <li class="md-nav__item">
  447. <a href="#plug-in-usb-disk" class="md-nav__link">
  448. Plug-in USB Disk
  449. </a>
  450. </li>
  451. <li class="md-nav__item">
  452. <a href="#choose-the-boot-device" class="md-nav__link">
  453. Choose the boot device
  454. </a>
  455. </li>
  456. <li class="md-nav__item">
  457. <a href="#install-the-os" class="md-nav__link">
  458. Install the OS
  459. </a>
  460. </li>
  461. </ul>
  462. </nav>
  463. </li>
  464. <li class="md-nav__item">
  465. <a href="#coreboot-internal-flashing" class="md-nav__link">
  466. Coreboot Internal Flashing
  467. </a>
  468. <nav class="md-nav" aria-label="Coreboot Internal Flashing">
  469. <ul class="md-nav__list">
  470. <li class="md-nav__item">
  471. <a href="#configure-the-kernel" class="md-nav__link">
  472. Configure the kernel
  473. </a>
  474. </li>
  475. <li class="md-nav__item">
  476. <a href="#query-coreboot-details" class="md-nav__link">
  477. Query Coreboot details
  478. </a>
  479. </li>
  480. <li class="md-nav__item">
  481. <a href="#install-flashrom" class="md-nav__link">
  482. Install: flashrom
  483. </a>
  484. </li>
  485. <li class="md-nav__item">
  486. <a href="#read-bios-image" class="md-nav__link">
  487. Read BIOS Image
  488. </a>
  489. </li>
  490. <li class="md-nav__item">
  491. <a href="#write-bios-image" class="md-nav__link">
  492. Write BIOS Image
  493. </a>
  494. </li>
  495. <li class="md-nav__item">
  496. <a href="#flash-skulls" class="md-nav__link">
  497. Flash: Skulls
  498. </a>
  499. </li>
  500. <li class="md-nav__item">
  501. <a href="#flash-heads" class="md-nav__link">
  502. Flash: Heads
  503. </a>
  504. </li>
  505. </ul>
  506. </nav>
  507. </li>
  508. <li class="md-nav__item">
  509. <a href="#configuring-coreboot" class="md-nav__link">
  510. Configuring Coreboot
  511. </a>
  512. <nav class="md-nav" aria-label="Configuring Coreboot">
  513. <ul class="md-nav__list">
  514. <li class="md-nav__item">
  515. <a href="#swapping-fn-and-ctrl" class="md-nav__link">
  516. Swapping Fn and Ctrl
  517. </a>
  518. </li>
  519. <li class="md-nav__item">
  520. <a href="#increasing-graphics-memory" class="md-nav__link">
  521. Increasing Graphics Memory
  522. </a>
  523. </li>
  524. <li class="md-nav__item">
  525. <a href="#other-settings" class="md-nav__link">
  526. Other settings
  527. </a>
  528. </li>
  529. </ul>
  530. </nav>
  531. </li>
  532. </ul>
  533. </nav>
  534. </div>
  535. </div>
  536. </div>
  537. <div class="md-content" data-md-component="content">
  538. <article class="md-content__inner md-typeset">
  539. <h1 id="lc230-user-guide">(LC230) User Guide<a class="headerlink" href="#lc230-user-guide" title="Permanent link">&para;</a></h1>
  540. <h2 id="the-coreboot-boot-process">The Coreboot Boot Process<a class="headerlink" href="#the-coreboot-boot-process" title="Permanent link">&para;</a></h2>
  541. <p>Here is what the boot process looks like with Coreboot installed:</p>
  542. <figure>
  543. <img src="/images/coreboot-diagram.png" width="420" />
  544. <figcaption>Coreboot Sequence Diagram</figcaption>
  545. </figure>
  546. <p>The first part of the boot process (labelled as "Coreboot Internal" in the diagram above) is
  547. largely hidden from the user. The boot process is illustrated below:</p>
  548. <figure>
  549. <img src="/images/lc230-boot.gif" width="420" />
  550. <figcaption>LC230 Boot Process</figcaption>
  551. </figure>
  552. <h2 id="installing-an-os">Installing an OS<a class="headerlink" href="#installing-an-os" title="Permanent link">&para;</a></h2>
  553. <p>To install any GNU/Linux OS, here is a sequence of steps:</p>
  554. <h3 id="build-usb-installer">Build USB Installer<a class="headerlink" href="#build-usb-installer" title="Permanent link">&para;</a></h3>
  555. <p>Any GNU/Linux OS would work very well on your LC230 laptop. (Some owners have
  556. also installed and used FreeBSD on it.)</p>
  557. <p>LC230 is configured to run without any proprietary firmware and hence, any of
  558. the following operating systems would work well by default:</p>
  559. <ul>
  560. <li><a href="https://debian.org">Debian GNU/Linux (main)</a></li>
  561. <li><a href="https://pureos.net/">PureOS</a></li>
  562. <li><a href="https://trisquel.info/">Triquel</a></li>
  563. </ul>
  564. <div class="admonition tip">
  565. <p class="admonition-title">Tip</p>
  566. <p>The <a href="https://www.raspberrypi.org/software/">Rasperrby Pi Imager</a> is a good
  567. tool to use to write an OS image to a USB disk. <a href="https://www.balena.io/etcher/">Balena Etcher</a> is another
  568. one.</p>
  569. </div>
  570. <h3 id="plug-in-usb-disk">Plug-in USB Disk<a class="headerlink" href="#plug-in-usb-disk" title="Permanent link">&para;</a></h3>
  571. <p>The USB needs to be plugged in before you reboot the laptop - or else SeaBIOS
  572. will not detect it and show it as a boot option.</p>
  573. <div class="admonition info">
  574. <p class="admonition-title">Info</p>
  575. <p>The blue USB ports on the left side of the laptop are USB3 ports. If you
  576. have a USB disk that works with USB3, then using these ports will give you
  577. much better USB disk performance.</p>
  578. <p>The USB port on the right side (yellow in colour) is a USB2 port.</p>
  579. </div>
  580. <h3 id="choose-the-boot-device">Choose the boot device<a class="headerlink" href="#choose-the-boot-device" title="Permanent link">&para;</a></h3>
  581. <p>Press <span class="keys"><kbd class="key-escape">Esc</kbd></span> on boot and choose the USB disk as the boot device</p>
  582. <figure>
  583. <img src="/images/lc230-boot-logo.jpg" width="400" />
  584. <figcaption>LC230 Boot Image</figcaption>
  585. </figure>
  586. <p>By default, the first boot option is chosen to boot off. This is usually the
  587. 2.5" SATA disk if it is plugged in to the laptop. To choose another boot
  588. device, you need to press <span class="keys"><kbd class="key-escape">Esc</kbd></span> and then choose the desired boot device
  589. from the SeaBIOS menu.</p>
  590. <p>If you have a 2.5" SATA disk, then a USB disk would be the second boot device.
  591. If you have a 2.5" SATA disk <strong>and</strong> a mSATA disk, then the USB disk would be
  592. the third boot device.</p>
  593. <figure>
  594. <img src="/images/lc230-usb3.jpg"/>
  595. <figcaption>LC230 USB3 Ports</figcaption>
  596. </figure>
  597. <h3 id="install-the-os">Install the OS<a class="headerlink" href="#install-the-os" title="Permanent link">&para;</a></h3>
  598. <p>You can now proceed with the OS installation as normal.</p>
  599. <p>The LC230 does not provide a UEFI BIOS (like the default Lenovo BIOS firmware).
  600. SeaBIOS is a pc-bios payload and most GNU/Linux OS installers will detect that
  601. and install the correct bootloader. This would be <code>grub-pc</code> if you choose to
  602. use Grub and Debian.</p>
  603. <h2 id="coreboot-internal-flashing">Coreboot Internal Flashing<a class="headerlink" href="#coreboot-internal-flashing" title="Permanent link">&para;</a></h2>
  604. <p>To flash Coreboot to the x230 motherboard, the first step is to flash the BIOS
  605. externally - ie. using a SIOC-8 flashing clip connecting to the BIOS chips:</p>
  606. <figure>
  607. <img src="/images/x230-flashing.png"/>
  608. <figcaption>Liberating the LC230 via External Flashing</figcaption>
  609. </figure>
  610. <p>However, as a part of the external flashing process, the BIOS is unlocked. This
  611. means that you can update / modify the BIOS on the SPI Flash internally - from
  612. within the operating system. Here are some reasons to do that and the steps
  613. involved.</p>
  614. <h3 id="configure-the-kernel">Configure the kernel<a class="headerlink" href="#configure-the-kernel" title="Permanent link">&para;</a></h3>
  615. <p>The first things to do before you can flash Coreboot internally, is to boot the
  616. kernel with an additional option:</p>
  617. <div class="codehilite"><pre><span></span><code>iomem=relaxed
  618. </code></pre></div>
  619. <p>On Debian (and derived operating systems such as Ubuntu), you can make this a
  620. permanent setting:</p>
  621. <ol>
  622. <li>Edit the file: <code>/etc/default/grub</code></li>
  623. <li>
  624. <p>Update the line <code>GRUB_CMDLINE_LINUX</code> to read:</p>
  625. <p><code>GRUB_CMDLINE_LINUX="iomem=relaxed"</code></p>
  626. </li>
  627. <li>
  628. <p>Run: <code>update-grub</code> to update the Grub configuration.</p>
  629. </li>
  630. </ol>
  631. <h3 id="query-coreboot-details">Query Coreboot details<a class="headerlink" href="#query-coreboot-details" title="Permanent link">&para;</a></h3>
  632. <p>You can verify the coreboot version (as well as the fact that you're running
  633. coreboot) by using the <code>dmidecode</code> utility as follows:</p>
  634. <h4 id="bios-version">BIOS version<a class="headerlink" href="#bios-version" title="Permanent link">&para;</a></h4>
  635. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo dmidecode -t bios
  636. <span class="gp"># </span>dmidecode <span class="m">3</span>.3
  637. <span class="go">Getting SMBIOS data from sysfs.</span>
  638. <span class="go">SMBIOS 2.8 present.</span>
  639. <span class="go">Handle 0x0000, DMI type 0, 26 bytes</span>
  640. <span class="go">BIOS Information</span>
  641. <span class="go"> Vendor: coreboot</span>
  642. <span class="go"> Version: CBET4000 4.10-1082-g4357a82076-dirty</span>
  643. <span class="go"> Release Date: 10/20/2019</span>
  644. <span class="go"> ROM Size: 12 MB</span>
  645. <span class="go"> Characteristics:</span>
  646. <span class="go"> PCI is supported</span>
  647. <span class="go"> PC Card (PCMCIA) is supported</span>
  648. <span class="go"> BIOS is upgradeable</span>
  649. <span class="go"> Selectable boot is supported</span>
  650. <span class="go"> ACPI is supported</span>
  651. <span class="go"> Targeted content distribution is supported</span>
  652. <span class="go"> BIOS Revision: 4.10</span>
  653. <span class="go"> Firmware Revision: 0.0</span>
  654. </code></pre></div>
  655. <h4 id="system-type-name">System type &amp; name<a class="headerlink" href="#system-type-name" title="Permanent link">&para;</a></h4>
  656. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo dmidecode -t system
  657. <span class="gp"># </span>dmidecode <span class="m">3</span>.3
  658. <span class="go">Getting SMBIOS data from sysfs.</span>
  659. <span class="go">SMBIOS 2.8 present.</span>
  660. <span class="go">Handle 0x0001, DMI type 1, 27 bytes</span>
  661. <span class="go">System Information</span>
  662. <span class="go"> Manufacturer: LENOVO</span>
  663. <span class="go"> Product Name: 2325BU3</span>
  664. <span class="go"> Version: ThinkPad X230</span>
  665. <span class="go"> Serial Number: PK1HM8E</span>
  666. <span class="go"> UUID: ce136601-xxxx-xxxx-xxxx-xxxxxxxxxxxx</span>
  667. <span class="go"> Wake-up Type: Reserved</span>
  668. <span class="go"> SKU Number: Not Specified</span>
  669. <span class="go"> Family: ThinkPad X230</span>
  670. <span class="go">Handle 0x000B, DMI type 32, 11 bytes</span>
  671. <span class="go">System Boot Information</span>
  672. <span class="go"> Status: No errors detected</span>
  673. </code></pre></div>
  674. <h3 id="install-flashrom">Install: <code>flashrom</code><a class="headerlink" href="#install-flashrom" title="Permanent link">&para;</a></h3>
  675. <p>The primary tool for operating on your BIOS is called <code>flashrom</code>. The Debian
  676. package is also called by the same name and can be installed as:</p>
  677. <div class="codehilite"><pre><span></span><code>apt-get install flashrom
  678. </code></pre></div>
  679. <p>If the kernel is booted correctly with <code>iomem=relaxed</code>, you can run <code>flashrom</code>:</p>
  680. <div class="codehilite"><pre><span></span><code>flashrom -pinternal
  681. </code></pre></div>
  682. <p>Ouput:</p>
  683. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo flashrom -pinternal
  684. <span class="go">flashrom v1.2 on Linux 5.10.9-gnu (x86_64)</span>
  685. <span class="go">flashrom is free software, get the source code at https://flashrom.org</span>
  686. <span class="go">Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).</span>
  687. <span class="go">coreboot table found at 0xbff51000.</span>
  688. <span class="go">Found chipset &quot;Intel QM77&quot;.</span>
  689. <span class="go">Enabling flash write... SPI Configuration is locked down.</span>
  690. <span class="go">Enabling hardware sequencing due to multiple flash chips detected.</span>
  691. <span class="go">OK.</span>
  692. <span class="go">Found Programmer flash chip &quot;Opaque flash chip&quot; (12288 kB, Programmer-specific) mapped at physical address 0x0000000000000000.</span>
  693. <span class="go">No operations were specified.</span>
  694. </code></pre></div>
  695. <div class="admonition tip">
  696. <p class="admonition-title">Tip</p>
  697. <p>Sometimes <code>flashrom</code> will not detect the internal flash chip, though it
  698. might very well be able to confirm the BIOS type and machine name. In such
  699. cases, you can try to run <code>flashrom</code> as: <code>flashrom
  700. -pinternal:laptop=force_I_want_a_brick</code>. This is not completely safe</p>
  701. </div>
  702. <h3 id="read-bios-image">Read BIOS Image<a class="headerlink" href="#read-bios-image" title="Permanent link">&para;</a></h3>
  703. <p>You can dump the BIOS to a file:</p>
  704. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>flashrom -pinternal -r lc230-coreboot.rom
  705. </code></pre></div>
  706. <p>This will read the BIOS to a file: <code>lc230-coreboot.rom</code>. This file will be 12 MB in size.</p>
  707. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo flashrom -pinternal -r lc230.rom
  708. <span class="go">flashrom v1.2 on Linux 5.10.9-gnu (x86_64)</span>
  709. <span class="go">flashrom is free software, get the source code at https://flashrom.org</span>
  710. <span class="go">Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).</span>
  711. <span class="go">coreboot table found at 0xbff51000.</span>
  712. <span class="go">Found chipset &quot;Intel QM77&quot;.</span>
  713. <span class="go">Enabling flash write... SPI Configuration is locked down.</span>
  714. <span class="go">Enabling hardware sequencing due to multiple flash chips detected.</span>
  715. <span class="go">OK.</span>
  716. <span class="go">Found Programmer flash chip &quot;Opaque flash chip&quot; (12288 kB, Programmer-specific) mapped at physical address 0x0000000000000000.</span>
  717. <span class="go">Reading flash... done.</span>
  718. <span class="gp">$ </span>ls -lh lc230-coreboot.rom
  719. <span class="go">-rw-r--r-- 1 root root 12M Feb 8 04:46 lc230-coreboot.rom</span>
  720. </code></pre></div>
  721. <h3 id="write-bios-image">Write BIOS Image<a class="headerlink" href="#write-bios-image" title="Permanent link">&para;</a></h3>
  722. <p>You can now write back to the BIOS chips as follows:</p>
  723. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo flashrom -pinternal -w lc230-coreboot.rom
  724. <span class="go">flashrom v1.2 on Linux 5.10.9-gnu (x86_64)</span>
  725. <span class="go">flashrom is free software, get the source code at https://flashrom.org</span>
  726. <span class="go">Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).</span>
  727. <span class="go">coreboot table found at 0xbff51000.</span>
  728. <span class="go">Found chipset &quot;Intel QM77&quot;.</span>
  729. <span class="go">Enabling flash write... SPI Configuration is locked down.</span>
  730. <span class="go">Enabling hardware sequencing due to multiple flash chips detected.</span>
  731. <span class="go">OK.</span>
  732. <span class="go">Found Programmer flash chip &quot;Opaque flash chip&quot; (12288 kB, Programmer-specific) mapped at physical address 0x0000000000000000.</span>
  733. <span class="go">Reading old flash chip contents... done.</span>
  734. <span class="go">Erasing and writing flash chip... </span>
  735. <span class="go">Warning: Chip content is identical to the requested image.</span>
  736. <span class="go">Erase/write done</span>
  737. </code></pre></div>
  738. <h3 id="flash-skulls">Flash: Skulls<a class="headerlink" href="#flash-skulls" title="Permanent link">&para;</a></h3>
  739. <p>The Skulls Coreboot distribution provides built in scripts to upgrade the BIOS.
  740. The update procedure is <a href="https://github.com/merge/skulls/blob/master/x230/README.md#updating">detailed
  741. here</a>.
  742. Your LC230 ships with the latest release of Skull available at the time of
  743. shipping the laptop to you. You can upgrade skulls using the instructions above. </p>
  744. <h3 id="flash-heads">Flash: Heads<a class="headerlink" href="#flash-heads" title="Permanent link">&para;</a></h3>
  745. <p>If you want to experiment with the <a href="https://osresearch.net/">Heads firmware</a>,
  746. instructions are available on the <a href="https://osresearch.net/">Heads website</a> as
  747. well as in the <a href="https://github.com/merge/skulls/blob/master/x230/README.md#moving-to-heads">Skulls documentation</a>.</p>
  748. <h2 id="configuring-coreboot">Configuring Coreboot<a class="headerlink" href="#configuring-coreboot" title="Permanent link">&para;</a></h2>
  749. <p>Your LC230 ships with a SeaBIOS payload called <code>nvramcui</code> that allows you to
  750. configure coreboot behaviour and save the settings to nvram.</p>
  751. <div style="text-align: center">
  752. <figure style="display: inline-block" >
  753. <img src="/images/nvramcui-1.jpg" width="250" />
  754. <figcaption> nvramcui options (1) </figcaption>
  755. </figure>
  756. <figure style="display: inline-block" >
  757. <img src="/images/nvramcui-2.jpg" width="235" />
  758. <figcaption> nvramcui options (2) </figcaption>
  759. </figure>
  760. <figure style="display: inline-block" >
  761. <img src="/images/nvramcui-3.jpg" width="235" />
  762. <figcaption> nvramcui options (3) </figcaption>
  763. </figure>
  764. </div>
  765. <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">&para;</a></h3>
  766. <p>The <code>fn_ctrl_swap</code> on the 2<sup>nd</sup> page of the <code>nvramcui</code> settings page enables you
  767. 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
  768. on the bottom left corner of the keyboard, then you can set this option to <code>Enable</code>.</p>
  769. <h3 id="increasing-graphics-memory">Increasing Graphics Memory<a class="headerlink" href="#increasing-graphics-memory" title="Permanent link">&para;</a></h3>
  770. <p>The x230 GPU does not have dedication RAM. Instead it shares its memory with
  771. the main system memory. You can configure how much RAM is dedicated to the GPU
  772. via the <code>gfx_uma_size</code> option on the 3<sup>rd</sup> page of the <code>nvramcui</code> settings.</p>
  773. <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
  774. available settings for this option.</p>
  775. <h3 id="other-settings">Other settings<a class="headerlink" href="#other-settings" title="Permanent link">&para;</a></h3>
  776. <p>You can also configure the following behaviour via nvramcui:</p>
  777. <ul>
  778. <li>
  779. <p><strong>Always On USB</strong>: By enabling this option, you can configure the USB ports
  780. to be <em>always on</em> - even when the laptop is suspended.</p>
  781. </li>
  782. <li>
  783. <p><strong>Enable/Disable Trackpoing, Touchpad</strong>: You can toggle the <code>touchpad</code> and
  784. <code>trackpoint</code> options to enable or disable the the touchpad and trackpoint
  785. respectively.</p>
  786. </li>
  787. </ul>
  788. </article>
  789. </div>
  790. </div>
  791. </main>
  792. <footer class="md-footer">
  793. <nav class="md-footer__inner md-grid" aria-label="Footer">
  794. <a href="../" class="md-footer__link md-footer__link--prev" aria-label="Previous: (LC230) Overview" rel="prev">
  795. <div class="md-footer__button md-icon">
  796. <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>
  797. </div>
  798. <div class="md-footer__title">
  799. <div class="md-ellipsis">
  800. <span class="md-footer__direction">
  801. Previous
  802. </span>
  803. (LC230) Overview
  804. </div>
  805. </div>
  806. </a>
  807. <a href="../troubleshooting/" class="md-footer__link md-footer__link--next" aria-label="Next: (LC230) Troubleshooting" rel="next">
  808. <div class="md-footer__title">
  809. <div class="md-ellipsis">
  810. <span class="md-footer__direction">
  811. Next
  812. </span>
  813. (LC230) Troubleshooting
  814. </div>
  815. </div>
  816. <div class="md-footer__button md-icon">
  817. <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>
  818. </div>
  819. </a>
  820. </nav>
  821. <div class="md-footer-meta md-typeset">
  822. <div class="md-footer-meta__inner md-grid">
  823. <div class="md-copyright">
  824. <div class="md-copyright__highlight">
  825. Copyright &copy; Mostly Harmless
  826. </div>
  827. Made with
  828. <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
  829. Material for MkDocs
  830. </a>
  831. </div>
  832. </div>
  833. </div>
  834. </footer>
  835. </div>
  836. <div class="md-dialog" data-md-component="dialog">
  837. <div class="md-dialog__inner md-typeset"></div>
  838. </div>
  839. <script id="__config" type="application/json">{"base": "../..", "features": [], "translations": {"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", "select.version.title": "Select version"}, "search": "../../assets/javascripts/workers/search.22074ed6.min.js"}</script>
  840. <script src="../../assets/javascripts/bundle.01de222e.min.js"></script>
  841. </body>
  842. </html>