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.

1404 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/lts-icon.png">
  9. <meta name="generator" content="mkdocs-1.2.3, mkdocs-material-8.1.6">
  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="#ffffff">
  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="default" data-md-color-primary="white" 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/lts-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/lts-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. Introduction
  281. </a>
  282. </li>
  283. <li class="md-nav__item">
  284. <a href="../../usb/start/" class="md-nav__link">
  285. Getting Started
  286. </a>
  287. </li>
  288. <li class="md-nav__item">
  289. <a href="../../usb/use/" class="md-nav__link">
  290. Using the USB disk
  291. </a>
  292. </li>
  293. <li class="md-nav__item">
  294. <a href="../../usb/update/" class="md-nav__link">
  295. Adding and Updating OS images
  296. </a>
  297. </li>
  298. <li class="md-nav__item">
  299. <a href="../../usb/advanced/" class="md-nav__link">
  300. Advanced Options
  301. </a>
  302. </li>
  303. <li class="md-nav__item">
  304. <a href="../../usb/troubleshooting/" class="md-nav__link">
  305. Troubleshooting
  306. </a>
  307. </li>
  308. </ul>
  309. </nav>
  310. </li>
  311. <li class="md-nav__item md-nav__item--nested">
  312. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
  313. <label class="md-nav__link" for="__nav_4">
  314. Routers
  315. <span class="md-nav__icon md-icon"></span>
  316. </label>
  317. <nav class="md-nav" aria-label="Routers" data-md-level="1">
  318. <label class="md-nav__title" for="__nav_4">
  319. <span class="md-nav__icon md-icon"></span>
  320. Routers
  321. </label>
  322. <ul class="md-nav__list" data-md-scrollfix>
  323. <li class="md-nav__item">
  324. <a href="../../routers/" class="md-nav__link">
  325. Introduction
  326. </a>
  327. </li>
  328. <li class="md-nav__item">
  329. <a href="../../routers/first-use/" class="md-nav__link">
  330. First Use
  331. </a>
  332. </li>
  333. <li class="md-nav__item">
  334. <a href="../../routers/next-steps/" class="md-nav__link">
  335. Next Steps
  336. </a>
  337. </li>
  338. <li class="md-nav__item">
  339. <a href="../../routers/optional-steps/" class="md-nav__link">
  340. Optional Steps
  341. </a>
  342. </li>
  343. <li class="md-nav__item">
  344. <a href="../../routers/cli/" class="md-nav__link">
  345. Command Line Guide
  346. </a>
  347. </li>
  348. <li class="md-nav__item">
  349. <a href="../../routers/upgrade/" class="md-nav__link">
  350. Upgrading OpenWrt
  351. </a>
  352. </li>
  353. </ul>
  354. </nav>
  355. </li>
  356. <li class="md-nav__item md-nav__item--nested">
  357. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
  358. <label class="md-nav__link" for="__nav_5">
  359. Phones
  360. <span class="md-nav__icon md-icon"></span>
  361. </label>
  362. <nav class="md-nav" aria-label="Phones" data-md-level="1">
  363. <label class="md-nav__title" for="__nav_5">
  364. <span class="md-nav__icon md-icon"></span>
  365. Phones
  366. </label>
  367. <ul class="md-nav__list" data-md-scrollfix>
  368. <li class="md-nav__item">
  369. <a href="../../phones/" class="md-nav__link">
  370. Introduction
  371. </a>
  372. </li>
  373. <li class="md-nav__item">
  374. <a href="../../phones/lineageos/" class="md-nav__link">
  375. LineageOS
  376. </a>
  377. </li>
  378. <li class="md-nav__item">
  379. <a href="../../phones/f-droid/" class="md-nav__link">
  380. F-Droid
  381. </a>
  382. </li>
  383. <li class="md-nav__item">
  384. <a href="../../phones/first-use/" class="md-nav__link">
  385. First Use
  386. </a>
  387. </li>
  388. <li class="md-nav__item">
  389. <a href="../../phones/applications/" class="md-nav__link">
  390. Applications
  391. </a>
  392. </li>
  393. <li class="md-nav__item">
  394. <a href="../../phones/services/" class="md-nav__link">
  395. Services
  396. </a>
  397. </li>
  398. <li class="md-nav__item">
  399. <a href="../../phones/backups/" class="md-nav__link">
  400. Taking Backups
  401. </a>
  402. </li>
  403. <li class="md-nav__item">
  404. <a href="../../phones/recovery/" class="md-nav__link">
  405. Using Recovery
  406. </a>
  407. </li>
  408. <li class="md-nav__item">
  409. <a href="../../phones/ubports/" class="md-nav__link">
  410. Installing Ubports
  411. </a>
  412. </li>
  413. <li class="md-nav__item">
  414. <a href="../../phones/calyxos/" class="md-nav__link">
  415. Installing CalyxOS
  416. </a>
  417. </li>
  418. </ul>
  419. </nav>
  420. </li>
  421. </ul>
  422. </nav>
  423. </div>
  424. </div>
  425. </div>
  426. <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
  427. <div class="md-sidebar__scrollwrap">
  428. <div class="md-sidebar__inner">
  429. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  430. <label class="md-nav__title" for="__toc">
  431. <span class="md-nav__icon md-icon"></span>
  432. Table of contents
  433. </label>
  434. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  435. <li class="md-nav__item">
  436. <a href="#the-coreboot-boot-process" class="md-nav__link">
  437. The Coreboot Boot Process
  438. </a>
  439. </li>
  440. <li class="md-nav__item">
  441. <a href="#installing-an-os" class="md-nav__link">
  442. Installing an OS
  443. </a>
  444. <nav class="md-nav" aria-label="Installing an OS">
  445. <ul class="md-nav__list">
  446. <li class="md-nav__item">
  447. <a href="#build-usb-installer" class="md-nav__link">
  448. Build USB Installer
  449. </a>
  450. </li>
  451. <li class="md-nav__item">
  452. <a href="#plug-in-usb-disk" class="md-nav__link">
  453. Plug-in USB Disk
  454. </a>
  455. </li>
  456. <li class="md-nav__item">
  457. <a href="#choose-the-boot-device" class="md-nav__link">
  458. Choose the boot device
  459. </a>
  460. </li>
  461. <li class="md-nav__item">
  462. <a href="#install-the-os" class="md-nav__link">
  463. Install the OS
  464. </a>
  465. </li>
  466. </ul>
  467. </nav>
  468. </li>
  469. <li class="md-nav__item">
  470. <a href="#coreboot-internal-flashing" class="md-nav__link">
  471. Coreboot Internal Flashing
  472. </a>
  473. <nav class="md-nav" aria-label="Coreboot Internal Flashing">
  474. <ul class="md-nav__list">
  475. <li class="md-nav__item">
  476. <a href="#configure-the-kernel" class="md-nav__link">
  477. Configure the kernel
  478. </a>
  479. </li>
  480. <li class="md-nav__item">
  481. <a href="#query-coreboot-details" class="md-nav__link">
  482. Query Coreboot details
  483. </a>
  484. </li>
  485. <li class="md-nav__item">
  486. <a href="#install-flashrom" class="md-nav__link">
  487. Install: flashrom
  488. </a>
  489. </li>
  490. <li class="md-nav__item">
  491. <a href="#read-bios-image" class="md-nav__link">
  492. Read BIOS Image
  493. </a>
  494. </li>
  495. <li class="md-nav__item">
  496. <a href="#write-bios-image" class="md-nav__link">
  497. Write BIOS Image
  498. </a>
  499. </li>
  500. <li class="md-nav__item">
  501. <a href="#flash-skulls" class="md-nav__link">
  502. Flash: Skulls
  503. </a>
  504. </li>
  505. <li class="md-nav__item">
  506. <a href="#flash-heads" class="md-nav__link">
  507. Flash: Heads
  508. </a>
  509. </li>
  510. </ul>
  511. </nav>
  512. </li>
  513. <li class="md-nav__item">
  514. <a href="#configuring-coreboot" class="md-nav__link">
  515. Configuring Coreboot
  516. </a>
  517. <nav class="md-nav" aria-label="Configuring Coreboot">
  518. <ul class="md-nav__list">
  519. <li class="md-nav__item">
  520. <a href="#swapping-fn-and-ctrl" class="md-nav__link">
  521. Swapping Fn and Ctrl
  522. </a>
  523. </li>
  524. <li class="md-nav__item">
  525. <a href="#increasing-graphics-memory" class="md-nav__link">
  526. Increasing Graphics Memory
  527. </a>
  528. </li>
  529. <li class="md-nav__item">
  530. <a href="#other-settings" class="md-nav__link">
  531. Other settings
  532. </a>
  533. </li>
  534. </ul>
  535. </nav>
  536. </li>
  537. </ul>
  538. </nav>
  539. </div>
  540. </div>
  541. </div>
  542. <div class="md-content" data-md-component="content">
  543. <article class="md-content__inner md-typeset">
  544. <h1 id="lc230-user-guide">(LC230) User Guide<a class="headerlink" href="#lc230-user-guide" title="Permanent link">&para;</a></h1>
  545. <h2 id="the-coreboot-boot-process">The Coreboot Boot Process<a class="headerlink" href="#the-coreboot-boot-process" title="Permanent link">&para;</a></h2>
  546. <p>Here is what the boot process looks like with Coreboot installed:</p>
  547. <figure>
  548. <img src="/images/coreboot-diagram.png" width="420" />
  549. <figcaption>Coreboot Sequence Diagram</figcaption>
  550. </figure>
  551. <p>The first part of the boot process (labelled as "Coreboot Internal" in the diagram above) is
  552. largely hidden from the user. The boot process is illustrated below:</p>
  553. <figure>
  554. <img src="/images/lc230-boot.gif" width="420" />
  555. <figcaption>LC230 Boot Process</figcaption>
  556. </figure>
  557. <h2 id="installing-an-os">Installing an OS<a class="headerlink" href="#installing-an-os" title="Permanent link">&para;</a></h2>
  558. <p>To install any GNU/Linux OS, here is a sequence of steps:</p>
  559. <h3 id="build-usb-installer">Build USB Installer<a class="headerlink" href="#build-usb-installer" title="Permanent link">&para;</a></h3>
  560. <p>Any GNU/Linux OS would work very well on your LC230 laptop. (Some owners have
  561. also installed and used FreeBSD on it.)</p>
  562. <p>LC230 is configured to run without any proprietary firmware and hence, any of
  563. the following operating systems would work well by default:</p>
  564. <ul>
  565. <li><a href="https://debian.org">Debian GNU/Linux (main)</a></li>
  566. <li><a href="https://pureos.net/">PureOS</a></li>
  567. <li><a href="https://trisquel.info/">Triquel</a></li>
  568. </ul>
  569. <div class="admonition tip">
  570. <p class="admonition-title">Tip</p>
  571. <p>The <a href="https://www.raspberrypi.org/software/">Rasperrby Pi Imager</a> is a good
  572. tool to use to write an OS image to a USB disk. <a href="https://www.balena.io/etcher/">Balena Etcher</a> is another
  573. one.</p>
  574. </div>
  575. <h3 id="plug-in-usb-disk">Plug-in USB Disk<a class="headerlink" href="#plug-in-usb-disk" title="Permanent link">&para;</a></h3>
  576. <p>The USB needs to be plugged in before you reboot the laptop - or else SeaBIOS
  577. will not detect it and show it as a boot option.</p>
  578. <div class="admonition info">
  579. <p class="admonition-title">Info</p>
  580. <p>The blue USB ports on the left side of the laptop are USB3 ports. If you
  581. have a USB disk that works with USB3, then using these ports will give you
  582. much better USB disk performance.</p>
  583. <p>The USB port on the right side (yellow in colour) is a USB2 port.</p>
  584. </div>
  585. <h3 id="choose-the-boot-device">Choose the boot device<a class="headerlink" href="#choose-the-boot-device" title="Permanent link">&para;</a></h3>
  586. <p>Press <span class="keys"><kbd class="key-escape">Esc</kbd></span> on boot and choose the USB disk as the boot device</p>
  587. <figure>
  588. <img src="/images/lc230-boot-logo.jpg" width="400" />
  589. <figcaption>LC230 Boot Image</figcaption>
  590. </figure>
  591. <p>By default, the first boot option is chosen to boot off. This is usually the
  592. 2.5" SATA disk if it is plugged in to the laptop. To choose another boot
  593. device, you need to press <span class="keys"><kbd class="key-escape">Esc</kbd></span> and then choose the desired boot device
  594. from the SeaBIOS menu.</p>
  595. <p>If you have a 2.5" SATA disk, then a USB disk would be the second boot device.
  596. If you have a 2.5" SATA disk <strong>and</strong> a mSATA disk, then the USB disk would be
  597. the third boot device.</p>
  598. <figure>
  599. <img src="/images/lc230-usb3.jpg"/>
  600. <figcaption>LC230 USB3 Ports</figcaption>
  601. </figure>
  602. <h3 id="install-the-os">Install the OS<a class="headerlink" href="#install-the-os" title="Permanent link">&para;</a></h3>
  603. <p>You can now proceed with the OS installation as normal.</p>
  604. <p>The LC230 does not provide a UEFI BIOS (like the default Lenovo BIOS firmware).
  605. SeaBIOS is a pc-bios payload and most GNU/Linux OS installers will detect that
  606. and install the correct bootloader. This would be <code>grub-pc</code> if you choose to
  607. use Grub and Debian.</p>
  608. <h2 id="coreboot-internal-flashing">Coreboot Internal Flashing<a class="headerlink" href="#coreboot-internal-flashing" title="Permanent link">&para;</a></h2>
  609. <p>To flash Coreboot to the x230 motherboard, the first step is to flash the BIOS
  610. externally - ie. using a SIOC-8 flashing clip connecting to the BIOS chips:</p>
  611. <figure>
  612. <img src="/images/x230-flashing.png"/>
  613. <figcaption>Liberating the LC230 via External Flashing</figcaption>
  614. </figure>
  615. <p>However, as a part of the external flashing process, the BIOS is unlocked. This
  616. means that you can update / modify the BIOS on the SPI Flash internally - from
  617. within the operating system. Here are some reasons to do that and the steps
  618. involved.</p>
  619. <h3 id="configure-the-kernel">Configure the kernel<a class="headerlink" href="#configure-the-kernel" title="Permanent link">&para;</a></h3>
  620. <p>The first things to do before you can flash Coreboot internally, is to boot the
  621. kernel with an additional option:</p>
  622. <div class="codehilite"><pre><span></span><code>iomem=relaxed
  623. </code></pre></div>
  624. <p>On Debian (and derived operating systems such as Ubuntu), you can make this a
  625. permanent setting:</p>
  626. <ol>
  627. <li>Edit the file: <code>/etc/default/grub</code></li>
  628. <li>
  629. <p>Update the line <code>GRUB_CMDLINE_LINUX</code> to read:</p>
  630. <p><code>GRUB_CMDLINE_LINUX="iomem=relaxed"</code></p>
  631. </li>
  632. <li>
  633. <p>Run: <code>update-grub</code> to update the Grub configuration.</p>
  634. </li>
  635. </ol>
  636. <h3 id="query-coreboot-details">Query Coreboot details<a class="headerlink" href="#query-coreboot-details" title="Permanent link">&para;</a></h3>
  637. <p>You can verify the coreboot version (as well as the fact that you're running
  638. coreboot) by using the <code>dmidecode</code> utility as follows:</p>
  639. <h4 id="bios-version">BIOS version<a class="headerlink" href="#bios-version" title="Permanent link">&para;</a></h4>
  640. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo dmidecode -t bios
  641. <span class="gp"># </span>dmidecode <span class="m">3</span>.3
  642. <span class="go">Getting SMBIOS data from sysfs.</span>
  643. <span class="go">SMBIOS 2.8 present.</span>
  644. <span class="go">Handle 0x0000, DMI type 0, 26 bytes</span>
  645. <span class="go">BIOS Information</span>
  646. <span class="go"> Vendor: coreboot</span>
  647. <span class="go"> Version: CBET4000 4.10-1082-g4357a82076-dirty</span>
  648. <span class="go"> Release Date: 10/20/2019</span>
  649. <span class="go"> ROM Size: 12 MB</span>
  650. <span class="go"> Characteristics:</span>
  651. <span class="go"> PCI is supported</span>
  652. <span class="go"> PC Card (PCMCIA) is supported</span>
  653. <span class="go"> BIOS is upgradeable</span>
  654. <span class="go"> Selectable boot is supported</span>
  655. <span class="go"> ACPI is supported</span>
  656. <span class="go"> Targeted content distribution is supported</span>
  657. <span class="go"> BIOS Revision: 4.10</span>
  658. <span class="go"> Firmware Revision: 0.0</span>
  659. </code></pre></div>
  660. <h4 id="system-type-name">System type &amp; name<a class="headerlink" href="#system-type-name" title="Permanent link">&para;</a></h4>
  661. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo dmidecode -t system
  662. <span class="gp"># </span>dmidecode <span class="m">3</span>.3
  663. <span class="go">Getting SMBIOS data from sysfs.</span>
  664. <span class="go">SMBIOS 2.8 present.</span>
  665. <span class="go">Handle 0x0001, DMI type 1, 27 bytes</span>
  666. <span class="go">System Information</span>
  667. <span class="go"> Manufacturer: LENOVO</span>
  668. <span class="go"> Product Name: 2325BU3</span>
  669. <span class="go"> Version: ThinkPad X230</span>
  670. <span class="go"> Serial Number: PK1HM8E</span>
  671. <span class="go"> UUID: ce136601-xxxx-xxxx-xxxx-xxxxxxxxxxxx</span>
  672. <span class="go"> Wake-up Type: Reserved</span>
  673. <span class="go"> SKU Number: Not Specified</span>
  674. <span class="go"> Family: ThinkPad X230</span>
  675. <span class="go">Handle 0x000B, DMI type 32, 11 bytes</span>
  676. <span class="go">System Boot Information</span>
  677. <span class="go"> Status: No errors detected</span>
  678. </code></pre></div>
  679. <h3 id="install-flashrom">Install: <code>flashrom</code><a class="headerlink" href="#install-flashrom" title="Permanent link">&para;</a></h3>
  680. <p>The primary tool for operating on your BIOS is called <code>flashrom</code>. The Debian
  681. package is also called by the same name and can be installed as:</p>
  682. <div class="codehilite"><pre><span></span><code>apt-get install flashrom
  683. </code></pre></div>
  684. <p>If the kernel is booted correctly with <code>iomem=relaxed</code>, you can run <code>flashrom</code>:</p>
  685. <div class="codehilite"><pre><span></span><code>flashrom -pinternal
  686. </code></pre></div>
  687. <p>Ouput:</p>
  688. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo flashrom -pinternal
  689. <span class="go">flashrom v1.2 on Linux 5.10.9-gnu (x86_64)</span>
  690. <span class="go">flashrom is free software, get the source code at https://flashrom.org</span>
  691. <span class="go">Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).</span>
  692. <span class="go">coreboot table found at 0xbff51000.</span>
  693. <span class="go">Found chipset &quot;Intel QM77&quot;.</span>
  694. <span class="go">Enabling flash write... SPI Configuration is locked down.</span>
  695. <span class="go">Enabling hardware sequencing due to multiple flash chips detected.</span>
  696. <span class="go">OK.</span>
  697. <span class="go">Found Programmer flash chip &quot;Opaque flash chip&quot; (12288 kB, Programmer-specific) mapped at physical address 0x0000000000000000.</span>
  698. <span class="go">No operations were specified.</span>
  699. </code></pre></div>
  700. <div class="admonition tip">
  701. <p class="admonition-title">Tip</p>
  702. <p>Sometimes <code>flashrom</code> will not detect the internal flash chip, though it
  703. might very well be able to confirm the BIOS type and machine name. In such
  704. cases, you can try to run <code>flashrom</code> as: <code>flashrom
  705. -pinternal:laptop=force_I_want_a_brick</code>. This is not completely safe</p>
  706. </div>
  707. <h3 id="read-bios-image">Read BIOS Image<a class="headerlink" href="#read-bios-image" title="Permanent link">&para;</a></h3>
  708. <p>You can dump the BIOS to a file:</p>
  709. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>flashrom -pinternal -r lc230-coreboot.rom
  710. </code></pre></div>
  711. <p>This will read the BIOS to a file: <code>lc230-coreboot.rom</code>. This file will be 12 MB in size.</p>
  712. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo flashrom -pinternal -r lc230.rom
  713. <span class="go">flashrom v1.2 on Linux 5.10.9-gnu (x86_64)</span>
  714. <span class="go">flashrom is free software, get the source code at https://flashrom.org</span>
  715. <span class="go">Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).</span>
  716. <span class="go">coreboot table found at 0xbff51000.</span>
  717. <span class="go">Found chipset &quot;Intel QM77&quot;.</span>
  718. <span class="go">Enabling flash write... SPI Configuration is locked down.</span>
  719. <span class="go">Enabling hardware sequencing due to multiple flash chips detected.</span>
  720. <span class="go">OK.</span>
  721. <span class="go">Found Programmer flash chip &quot;Opaque flash chip&quot; (12288 kB, Programmer-specific) mapped at physical address 0x0000000000000000.</span>
  722. <span class="go">Reading flash... done.</span>
  723. <span class="gp">$ </span>ls -lh lc230-coreboot.rom
  724. <span class="go">-rw-r--r-- 1 root root 12M Feb 8 04:46 lc230-coreboot.rom</span>
  725. </code></pre></div>
  726. <h3 id="write-bios-image">Write BIOS Image<a class="headerlink" href="#write-bios-image" title="Permanent link">&para;</a></h3>
  727. <p>You can now write back to the BIOS chips as follows:</p>
  728. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo flashrom -pinternal -w lc230-coreboot.rom
  729. <span class="go">flashrom v1.2 on Linux 5.10.9-gnu (x86_64)</span>
  730. <span class="go">flashrom is free software, get the source code at https://flashrom.org</span>
  731. <span class="go">Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).</span>
  732. <span class="go">coreboot table found at 0xbff51000.</span>
  733. <span class="go">Found chipset &quot;Intel QM77&quot;.</span>
  734. <span class="go">Enabling flash write... SPI Configuration is locked down.</span>
  735. <span class="go">Enabling hardware sequencing due to multiple flash chips detected.</span>
  736. <span class="go">OK.</span>
  737. <span class="go">Found Programmer flash chip &quot;Opaque flash chip&quot; (12288 kB, Programmer-specific) mapped at physical address 0x0000000000000000.</span>
  738. <span class="go">Reading old flash chip contents... done.</span>
  739. <span class="go">Erasing and writing flash chip... </span>
  740. <span class="go">Warning: Chip content is identical to the requested image.</span>
  741. <span class="go">Erase/write done</span>
  742. </code></pre></div>
  743. <h3 id="flash-skulls">Flash: Skulls<a class="headerlink" href="#flash-skulls" title="Permanent link">&para;</a></h3>
  744. <p>The Skulls Coreboot distribution provides built in scripts to upgrade the BIOS.
  745. The update procedure is <a href="https://github.com/merge/skulls/blob/master/x230/README.md#updating">detailed
  746. here</a>.
  747. Your LC230 ships with the latest release of Skull available at the time of
  748. shipping the laptop to you. You can upgrade skulls using the instructions above. </p>
  749. <h3 id="flash-heads">Flash: Heads<a class="headerlink" href="#flash-heads" title="Permanent link">&para;</a></h3>
  750. <p>If you want to experiment with the <a href="https://osresearch.net/">Heads firmware</a>,
  751. instructions are available on the <a href="https://osresearch.net/">Heads website</a> as
  752. well as in the <a href="https://github.com/merge/skulls/blob/master/x230/README.md#moving-to-heads">Skulls documentation</a>.</p>
  753. <h2 id="configuring-coreboot">Configuring Coreboot<a class="headerlink" href="#configuring-coreboot" title="Permanent link">&para;</a></h2>
  754. <p>Your LC230 ships with a SeaBIOS payload called <code>nvramcui</code> that allows you to
  755. configure coreboot behaviour and save the settings to nvram.</p>
  756. <div style="text-align: center">
  757. <figure style="display: inline-block" >
  758. <img src="/images/nvramcui-1.jpg" width="250" />
  759. <figcaption> nvramcui options (1) </figcaption>
  760. </figure>
  761. <figure style="display: inline-block" >
  762. <img src="/images/nvramcui-2.jpg" width="235" />
  763. <figcaption> nvramcui options (2) </figcaption>
  764. </figure>
  765. <figure style="display: inline-block" >
  766. <img src="/images/nvramcui-3.jpg" width="235" />
  767. <figcaption> nvramcui options (3) </figcaption>
  768. </figure>
  769. </div>
  770. <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>
  771. <p>The <code>fn_ctrl_swap</code> on the 2<sup>nd</sup> page of the <code>nvramcui</code> settings page enables you
  772. 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
  773. on the bottom left corner of the keyboard, then you can set this option to <code>Enable</code>.</p>
  774. <h3 id="increasing-graphics-memory">Increasing Graphics Memory<a class="headerlink" href="#increasing-graphics-memory" title="Permanent link">&para;</a></h3>
  775. <p>The x230 GPU does not have dedication RAM. Instead it shares its memory with
  776. the main system memory. You can configure how much RAM is dedicated to the GPU
  777. via the <code>gfx_uma_size</code> option on the 3<sup>rd</sup> page of the <code>nvramcui</code> settings.</p>
  778. <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
  779. available settings for this option.</p>
  780. <h3 id="other-settings">Other settings<a class="headerlink" href="#other-settings" title="Permanent link">&para;</a></h3>
  781. <p>You can also configure the following behaviour via nvramcui:</p>
  782. <ul>
  783. <li>
  784. <p><strong>Always On USB</strong>: By enabling this option, you can configure the USB ports
  785. to be <em>always on</em> - even when the laptop is suspended.</p>
  786. </li>
  787. <li>
  788. <p><strong>Enable/Disable Trackpoing, Touchpad</strong>: You can toggle the <code>touchpad</code> and
  789. <code>trackpoint</code> options to enable or disable the the touchpad and trackpoint
  790. respectively.</p>
  791. </li>
  792. </ul>
  793. </article>
  794. </div>
  795. </div>
  796. </main>
  797. <footer class="md-footer">
  798. <nav class="md-footer__inner md-grid" aria-label="Footer">
  799. <a href="../" class="md-footer__link md-footer__link--prev" aria-label="Previous: (LC230) Overview" rel="prev">
  800. <div class="md-footer__button md-icon">
  801. <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>
  802. </div>
  803. <div class="md-footer__title">
  804. <div class="md-ellipsis">
  805. <span class="md-footer__direction">
  806. Previous
  807. </span>
  808. (LC230) Overview
  809. </div>
  810. </div>
  811. </a>
  812. <a href="../troubleshooting/" class="md-footer__link md-footer__link--next" aria-label="Next: (LC230) Troubleshooting" rel="next">
  813. <div class="md-footer__title">
  814. <div class="md-ellipsis">
  815. <span class="md-footer__direction">
  816. Next
  817. </span>
  818. (LC230) Troubleshooting
  819. </div>
  820. </div>
  821. <div class="md-footer__button md-icon">
  822. <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>
  823. </div>
  824. </a>
  825. </nav>
  826. <div class="md-footer-meta md-typeset">
  827. <div class="md-footer-meta__inner md-grid">
  828. <div class="md-copyright">
  829. <div class="md-copyright__highlight">
  830. Copyright &copy; Mostly Harmless
  831. </div>
  832. Made with
  833. <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
  834. Material for MkDocs
  835. </a>
  836. </div>
  837. </div>
  838. </div>
  839. </footer>
  840. </div>
  841. <div class="md-dialog" data-md-component="dialog">
  842. <div class="md-dialog__inner md-typeset"></div>
  843. </div>
  844. <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>
  845. <script src="../../assets/javascripts/bundle.1514a9a0.min.js"></script>
  846. </body>
  847. </html>