<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linux Phones on Ivon's Blog</title><link>https://ivonblog.com/en-us/categories/linux-phones/</link><description>Recent content in Linux Phones on Ivon's Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</managingEditor><webMaster>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</webMaster><copyright>You are welcome to share articles of Ivon's Blog (ivonblog.com). Please include the original URL when citing articles, and abide by CC BY-NC-ND 4.0 license. For commercial use, please write an e-mail to me.</copyright><lastBuildDate>Thu, 15 Aug 2024 16:00:00 +0800</lastBuildDate><atom:link href="https://ivonblog.com/en-us/categories/linux-phones/index.xml" rel="self" type="application/rss+xml"/><item><title>My setups of PineTab 2, an open-source Linux tablet and 2 in 1 laptop</title><link>https://ivonblog.com/en-us/posts/my-pinetab-2-setup/</link><pubDate>Thu, 15 Aug 2024 16:00:00 +0800</pubDate><author>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</author><guid>https://ivonblog.com/en-us/posts/my-pinetab-2-setup/</guid><description>&lt;p&gt;&lt;a href="https://ivonblog.com/posts/my-gnu-linux-tablet-setup" &gt;閱讀中文版&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The PineTab 2, released by Pine64 in April 2023, is an open-source Linux device that combines features of both a laptop and a tablet. It has the ability to run Linux and Android containers concurrently.&lt;/p&gt;
&lt;p&gt;Here are my setups and tweaks for Pine64 Pinetab 2 (ARM variant, 8GB/128GB). I hope these experiences can be used as a reference for users who want to use Linux tablet as a daily driver.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OS: Arch Linux ARM by danctnix&lt;/li&gt;
&lt;li&gt;Desktop Envrionment: GNOME (Wayland) and Phosh (Wayland)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Why do I write this ? I had written two reviews of Pinetab 2, including &lt;a href="https://ivonblog.com/en-us/posts/pine64-pinetab2-review" &gt;unboxing&lt;/a&gt; and &lt;a href="https://ivonblog.com/en-us/posts/after-3-months-of-daily-driving-pinetab-2" &gt;my thoughts&lt;/a&gt; of daily driving Pinetab for 3 months. However, the system of this tablet will be constantly updated, and I have to keep track of the latest development progress (even if the system software is difficult to be finished in a short period of time). Next, although the performance of RK3566 is terrible, I still daily drive this tablet in school. Therefore, I create this posts to keep track the development status of this tablet, and list all my setups here.
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://ivonblog.com/en-us/posts/my-pinetab-2-setup/featured.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/cannotloadimage.avif'"
 width="512"
 height="320"&gt;&lt;/figure&gt;&lt;/p&gt;

&lt;h2 class="relative group"&gt;The Operating System
 &lt;div id="the-operating-system" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-operating-system" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;I use Arch Linux ARM. I had reinstalled the system to get rid of bloated KDE and installed GNOME desktop.&lt;/p&gt;
&lt;p&gt;I reinstalled Arch Linux using the barebone image on &lt;a href="https://github.com/dreemurrs-embedded/Pine64-Arch/releases" target="_blank" rel="noreferrer"&gt;Github&lt;/a&gt;. Firstly I flashed the OS image to sdcard (Mobian or postmarketOS, either will be OK), and booted the OS from sdcard. Then I downloaded the ISO in and &lt;code&gt;dd&lt;/code&gt; the Arch Linux image to the internal eMMC of Pinetab 2.&lt;/p&gt;
&lt;p&gt;I like Arch because of the unlimited resources of AUR, also I could receive the updates quicker. If you want stable release distros, you could try Mobian, postmarketOS or Ubuntu touch. Before erasing the internal emmc, you could boot new OS from SD card in the first place.&lt;/p&gt;

&lt;h2 class="relative group"&gt;The Desktop Environment
 &lt;div id="the-desktop-environment" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-desktop-environment" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;In my opinon, there is no single desktop enviornment which could handle desktop mode and tablet mode (touch-only) well in the mean time. So, I installed two desktop environments: GNOME and Phosh.&lt;/p&gt;
&lt;p&gt;Install GNOME and Phosh from the official repository of Arch Linux ARM.&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S gnome phosh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Use GDM as display manager so you can swtich DE easily&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; gdm&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;For me, GNOME is used for &amp;ldquo;desktop mode&amp;rdquo;, for example, browsing the webs, remote developing and writing notes. The on-screen keyboard can be activated in GNOME settings.&lt;/p&gt;
&lt;p&gt;Also, I install &lt;a href="https://extensions.gnome.org/extension/5949/gjs-osk/" target="_blank" rel="noreferrer"&gt;GJS ＯSK&lt;/a&gt; to get a floating keyboard. It is better than the built-in GNOME keyboard. Now I can type Chinese using this keyboard. Thanks to Github@proton-penguin &amp;rsquo;s recommendation.
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://ivonblog.com/en-us/posts/my-pinetab-2-setup/images/2024-03-0818-58-44.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/cannotloadimage.avif'"
 width="1280"
 height="800"&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;On the other hand, Phosh is used for &amp;ldquo;tablet mode&amp;rdquo;. When treating Pinetab 2 as a tablet, I will disconnect the keyboard case and held it on my hands to read academic papers or e-books. Phosh is more touch-friendly than GNOME.&lt;/p&gt;
&lt;p&gt;Tip: After Phosh v0.35.0, you have to long-click the bar at the bottom to activate the squeekboard.
&lt;img src="images/20240308_19h41m28s_grim.webp" width=300&gt;&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ivonblog.com/en-us/posts/my-pinetab-2-setup/featured.webp"/></item><item><title>After 3 months of daily-driving tPineTab 2, ARM Linux tablet, I love but also hate it</title><link>https://ivonblog.com/en-us/posts/after-3-months-of-daily-driving-pinetab-2/</link><pubDate>Wed, 04 Oct 2023 00:00:00 +0800</pubDate><author>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</author><guid>https://ivonblog.com/en-us/posts/after-3-months-of-daily-driving-pinetab-2/</guid><description>&lt;p&gt;&lt;a href="https://ivonblog.com/en-us/posts/after-3-months-of-daily-driving-pinetab-2/" &gt;中文版&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WARNING: This article is full of rants, from a normal user perspective.&lt;/strong&gt; In the end I will try to list some advantages of PineTab 2.&lt;/p&gt;
&lt;p&gt;I tried to daily-drive PineTab 2 for 3 months. I love but also hate it.&lt;/p&gt;
&lt;p&gt;Despite of unfinished software, I still try to use it to get things done in the TESOL graduate school. In the past, I usually brought my Linux MSI Modern 15 laptop (x86 of course) to graduate school, then I replaced my laptop with PineTab 2.
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://ivonblog.com/en-us/posts/after-3-months-of-daily-driving-pinetab-2/images/AGC_20230930_114004748.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/cannotloadimage.avif'"
 &gt;&lt;figcaption&gt;← My laptop. PineTab 2 →&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://ivonblog.com/en-us/posts/after-3-months-of-daily-driving-pinetab-2/images/AGC_20230930_114230480.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/cannotloadimage.avif'"
 &gt;&lt;figcaption&gt;MSI Modern 15&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://ivonblog.com/en-us/posts/after-3-months-of-daily-driving-pinetab-2/images/AGC_20230930_114317480.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/cannotloadimage.avif'"
 &gt;&lt;figcaption&gt;PineTab 2&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;Note I only use PineTab2 when I go to graduate school, not in my house, where I use my desktop PC mainly for computing.&lt;/p&gt;
&lt;p&gt;If you had read my &lt;a href="https://ivonblog.com/en-us/posts/pine64-pinetab2-review/" target="_blank" rel="noreferrer"&gt;initial review&lt;/a&gt; of PineTab 2, many of you may have known that PineTab 2 is not really a Netflix-consuming machine due to weak hardware and horrible speakers. Plus, it is not a tablet for taking handwritten notes.&lt;/p&gt;

&lt;h2 class="relative group"&gt;1. Environment &amp;amp; My own tweaks
 &lt;div id="1-environment--my-own-tweaks" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-environment--my-own-tweaks" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;＊ You may check my latest configs of PineTab 2 &lt;a href="https://ivonblog.com/en-us/posts/my-pinetab-2-setup/" target="_blank" rel="noreferrer"&gt;in this article&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pine64 PineTab 2. 8GB/128GB. ARM based.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OS: Arch Linux ARM (factory image)&lt;/li&gt;
&lt;li&gt;DE: GNOME 44 (Wayland)&lt;/li&gt;
&lt;li&gt;Waydroid (LineageOS 18) installed for running Android apps&lt;/li&gt;
&lt;li&gt;Use Mediatek MT7601 Wifi adapter because the built-in Wifi driver is not stable&lt;/li&gt;
&lt;li&gt;Camera and bluetooth are still not working&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://ivonblog.com/en-us/posts/after-3-months-of-daily-driving-pinetab-2/images/2023-10-0411-19-30.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/cannotloadimage.avif'"
 &gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;First of all, to get auto screen rotation working, do:&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S iio-sensor-proxy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; --now iio-sensor-proxy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This would also make the power button functional. When you press the power button, it will turn off the PineTab screen, Wifi would be disconnected; it is similar to suspended mode. And you could wake up PineTab 2 by pressing the power button or opening the keyboard case.&lt;/p&gt;
&lt;p&gt;From my observation, while using GNOME, the screen will rotate automatically when the keyboard is detached. And it will keep its orientation when the keyboard is connected.&lt;/p&gt;
&lt;p&gt;Also, install &lt;a href="https://extensions.gnome.org/extension/277/impatience/" target="_blank" rel="noreferrer"&gt;Impatience&lt;/a&gt; to make GNOME animations faster. &lt;a href="https://extensions.gnome.org/extension/4012/gnome-bedtime/" target="_blank" rel="noreferrer"&gt;Bedtime mode&lt;/a&gt; could converts GNOME to grayscale mode for reading.&lt;/p&gt;
&lt;p&gt;Install &lt;a href="https://extensions.gnome.org/extension/1319/gsconnect/" target="_blank" rel="noreferrer"&gt;GSconnect&lt;/a&gt; (KDE Connect) for transfering files between my phones and PineTab 2.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I have a script for transferring files between Waydroid and Linux.&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mount --bind ~/Waydroid ~/.local/share/waydroid/data/media/0/shared_folder&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;Having dual speakers, the speakers of PineTab 2 are bad; therefore I installed &lt;a href="https://github.com/wwmm/easyeffects" target="_blank" rel="noreferrer"&gt;EasyEffects&lt;/a&gt; with &lt;a href="https://github.com/JackHack96/EasyEffects-Presets" target="_blank" rel="noreferrer"&gt;Auto Gains presets&lt;/a&gt; to make it louder.
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://ivonblog.com/en-us/posts/after-3-months-of-daily-driving-pinetab-2/images/AGC_20231004_152702435.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/cannotloadimage.avif'"
 &gt;&lt;/figure&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;For browsers, I choose &lt;a href="https://aur.archlinux.org/packages/brave-bin" target="_blank" rel="noreferrer"&gt;Brave browser&lt;/a&gt; because it has native ARM64 builds and it is a cross-platform browser. (Thanks to Mauro Gaspari) Chromium browsers perform better than Firefox on PineTab 2.&lt;/p&gt;

&lt;h2 class="relative group"&gt;2. You cannot use this tablet without a keyboard
 &lt;div id="2-you-cannot-use-this-tablet-without-a-keyboard" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2-you-cannot-use-this-tablet-without-a-keyboard" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;You cannot use PineTab without a keyboard. The experience of Linux touching UI is not mature, there is no good Chinese input method. Unless you use Waydroid only, which is mobile-friendly by default and has mobile-friendly Chinese input methods.&lt;/p&gt;
&lt;p&gt;Here comes a big issue: auto-rotation. If I turn the screen vertical, the Waydroid window will be cut-off. It seems that Waydroid cannot fit into the screen size when rotated.
&lt;img src="https://ivonblog.com/en-us/posts/after-3-months-of-daily-driving-pinetab-2/images/AGC_20231004_144024540.webp" width=300 alt="" loading="lazy"&gt;&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ivonblog.com/en-us/posts/after-3-months-of-daily-driving-pinetab-2/featured.webp"/></item><item><title>Pine64 PineTab 2 unboxing and review by Ivon Huang</title><link>https://ivonblog.com/en-us/posts/pine64-pinetab2-review/</link><pubDate>Tue, 06 Jun 2023 00:00:00 +0800</pubDate><author>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</author><guid>https://ivonblog.com/en-us/posts/pine64-pinetab2-review/</guid><description>&lt;p&gt;&lt;a href="https://ivonblog.com/posts/pine64-pinetab2-review/" target="_blank" rel="noreferrer"&gt;中文版&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My personal review of Pine64&amp;rsquo;s PineTab 2, ARM variant.&lt;/p&gt;
&lt;p&gt;TD;DR. What&amp;rsquo;s a good e-book reader&amp;hellip;.
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://ivonblog.com/en-us/posts/pine64-pinetab2-review/images/2rNvlPM.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/cannotloadimage.avif'"
 &gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;In recent years, I always want to buy a Linx tablet to play with, also read e-books and academic papers. There was a &amp;ldquo;Juno Tablet&amp;rdquo; with a Intel processor, which was released in 2022. The software of Juno Tablet was good, but I wanted an ARM tablet for longer battery life. Then, after hearing the news of PineTab 2, and the performance of PineTab 2 was reported twice as powerful as its predecessor. After that, knowing the software is in alpha stage, I still placed the order as soon as PineTab 2 was released.&lt;/p&gt;
&lt;p&gt;I do have some experiences with Linux. Last year, I bought PinePhone and tinkered with it for many months, so this kind of Linux mobile device should not be difficult for me to tinker with&amp;hellip;but, the network of PineTab 2 is such a big problem, I will talk about this issue later.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: Since I speak Chinese, and PineTab 2 supports Tradional Chinese, some screenshots in this article would be shot on GNOME in Chinese, sorry for inconvenience.&lt;/em&gt;&lt;/p&gt;

&lt;h2 class="relative group"&gt;1. Unboxing PineTab 2
 &lt;div id="1-unboxing-pinetab-2" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-unboxing-pinetab-2" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;PineTab 2 costs me US$$266, custom tax included. Shipped from Hong Kong to Taiwan.&lt;/p&gt;
&lt;p&gt;You could buy PineTab 2 on official &lt;a href="https://pine64.com/product/pinetab2-10-1-8gb-128gb-linux-tablet-with-detached-backlit-keyboard/" target="_blank" rel="noreferrer"&gt;Pine64 Store&lt;/a&gt;. The specifications of PineTab 2 are as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Operating system: Arch Linux ARM by DanctNIX&lt;/li&gt;
&lt;li&gt;Screen: 10.1&amp;quot; IPS LCD 1280x800 pixels&lt;/li&gt;
&lt;li&gt;Weight: 242x161x9mm. 520g without keyboard, 990g with keyboard&lt;/li&gt;
&lt;li&gt;SoC: Rockchip RK3566, CPU 4 core Cortex-A55, GPU Mali-G52 MP2&lt;/li&gt;
&lt;li&gt;RAM: 8GB LPDDR4&lt;/li&gt;
&lt;li&gt;ROM: 128GB eMMC&lt;/li&gt;
&lt;li&gt;Battery capacity: 6000 mAh&lt;/li&gt;
&lt;li&gt;Camera: 2Mpx, Galaxycore GC02M2 (front). 5Mpx, Omnivision OV5648 (rear)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The PineTab 2 is somewhat like a Quartz64 board with touch screen.&lt;/p&gt;
&lt;p&gt;The box comes with a tablet, charging cable, and the manual.&lt;/p&gt;
&lt;p&gt;The stereo speakers are located in the upper part of the tablet. For I/O ports, it has a Type C 3.0 port, Type C 2.0 port,
MicroHDMI port, an SD card slot, 3.5mm headphone jack, and a 5-pin pogo for connecting to a keyboard. Unlike the Pinebook Pro, the PineTab 2 does not have a slot for NVME. And, according to Pine64, the screen does not support a stylus because the price would be too high.&lt;/p&gt;
&lt;p&gt;You can boot the system from a SD card. But at the time of writing, only Arch Linux ARM is available.
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://ivonblog.com/en-us/posts/pine64-pinetab2-review/images/3vTdkzb.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/cannotloadimage.avif'"
 &gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t know if it&amp;rsquo;s an illusion&amp;hellip; The color of the screen and the location of the ports&amp;hellip; Why does Pinetbab 2 looks so similar to &amp;ldquo;PlayTV portable monitor&amp;rdquo; I bought last year?
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://ivonblog.com/en-us/posts/pine64-pinetab2-review/images/68747470733a2f2f692e696d6775722e636f6d2f55326a475371702e6a7067.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/cannotloadimage.avif'"
 &gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;PineTab 2 comes with a leather case. It has keyboard and touchpad which could turn PineTab 2 into a Pinebook (?). The leather case would make Pineab 2 become thick and heavy.
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://ivonblog.com/en-us/posts/pine64-pinetab2-review/images/3gIoACc.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/cannotloadimage.avif'"
 &gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;There is a Pine64 logo on the back of the case. Pay attention to that camera! Thanks for your attention, currently it does not function.
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://ivonblog.com/en-us/posts/pine64-pinetab2-review/images/jopxbWq.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/cannotloadimage.avif'"
 &gt;&lt;/figure&gt;&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ivonblog.com/en-us/posts/pine64-pinetab2-review/featured.webp"/></item><item><title>Install multiple desktop environments on postmarketOS</title><link>https://ivonblog.com/en-us/posts/postmarketos-multiple-des/</link><pubDate>Mon, 03 Apr 2023 19:30:00 +0800</pubDate><author>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</author><guid>https://ivonblog.com/en-us/posts/postmarketos-multiple-des/</guid><description>&lt;p&gt;&lt;a href="https://ivonblog.com/posts/postmarketos-multiple-des/" target="_blank" rel="noreferrer"&gt;🇹🇼 中文版&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Say you already installed Phosh on your postmarketOS, now you wanna try Plasma Mobile or the real GNOME. Well, there is no need to reflash the OS. It is possible to install multiple desktop environments on postmarketOS.&lt;/p&gt;
&lt;p&gt;WARNING: It would be needed to check if your deivce supports GPU acceleration before launching a Wayland session. Devices such as Pinephone, OnePlus 6T, Xiaomi Poco F1 have better supports for Wayland. If not please choose X11 DEs instead.&lt;/p&gt;

&lt;h2 class="relative group"&gt;1. Setup Display Manager
 &lt;div id="1-setup-display-manager" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-setup-display-manager" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;The default display manager for Phos, which is the login screen you see upon boot, should be handled by a Display Manager. PostmarketOS uses &lt;code&gt;tinydm&lt;/code&gt;, while other distributions use a Systemd service called &lt;code&gt;phosh&lt;/code&gt;. You can use the command &lt;code&gt;tinydm-set-session -f -s /usr/share/wayland-sessions/desktop-session.desktop&lt;/code&gt; to modify the desktop session to be started with TinyDM, but it cannot be selected using the graphical interface.&lt;/p&gt;
&lt;p&gt;Here we will install the display managers such as LightDM or GDM which allows you to choose which DE you want to login at login menu.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;First, install GDM:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apk add gdm
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#Or lightdm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apk add lightdm lightdm-gtk-greeter&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Remove Phosh and tinydm from auto-start services&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rc-update del phosh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rc-update del tinydm&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Enable GDM at boot&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rc-update add gdm&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;After reboot you shall see GDM at lock screen. While you are typing the password, you would see a gear at bottom right for choosing the DE sessions.
&lt;img src="https://ivonblog.com/en-us/posts/postmarketos-multiple-des/images/Pp0CSav.webp" width=300 alt="" loading="lazy"&gt;&lt;/p&gt;

&lt;h2 class="relative group"&gt;2. Install and switch desktop environments
 &lt;div id="2-install-and-switch-desktop-environments" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2-install-and-switch-desktop-environments" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Apart from Phosh, there are many desktop environments packages available in postmarketOS and Alpine Linux&amp;rsquo;s repos. Here I choose some common DEs.&lt;/p&gt;
&lt;p&gt;There are also some packages whose names start with &lt;code&gt;postmarketos-ui-*&lt;/code&gt;. They are special configurations for each desktop environments.&lt;/p&gt;

&lt;h3 class="relative group"&gt;2.1. GNOME (X11, Wayland)
 &lt;div id="21-gnome-x11-wayland" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#21-gnome-x11-wayland" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;The mobile version of gnome-shell is under heavly developing. It would auto change layout accroding to the screen size. And the design is become more and more freindly for mobile devices.&lt;/p&gt;
&lt;p&gt;Install GNOME on postmarketOS. And choose GNOME session from login menu.&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apk add gnome-desktop
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# For those who want to install Phosh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apk add phosh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 class="relative group"&gt;2.2. GNOME Shell Mobile (Wayland)
 &lt;div id="22-gnome-shell-mobile-wayland" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#22-gnome-shell-mobile-wayland" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;The real mobile GNOME DE.&lt;/p&gt;
&lt;p&gt;This package is only available on edge branch. See &lt;a href="https://wiki.postmarketos.org/wiki/GNOME" target="_blank" rel="noreferrer"&gt;postmarketOS wiki&lt;/a&gt;.&lt;/p&gt;

&lt;h3 class="relative group"&gt;2.3. KDE Plasma Mobile (X11, Wayland)
 &lt;div id="23-kde-plasma-mobile-x11-wayland" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#23-kde-plasma-mobile-x11-wayland" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Plasma Mobile is almost the same as Plasma Desktop. However the UI is optimized for mobile devices. On the other hand, Plasma Desktop has some gestures supports however the button is too small and the layout is not suitable for mobile phone.&lt;/p&gt;
&lt;p&gt;Install Plasma Mobile on postmarketOS. And choose it from login menu.&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apk add plasma-mobile&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 class="relative group"&gt;2.4. KDE Plasma (X11, Wayland)
 &lt;div id="24-kde-plasma--x11-wayland" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#24-kde-plasma--x11-wayland" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;The KDE Plasma desktop for devices with large screen.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ivonblog.com/en-us/posts/postmarketos-multiple-des/featured.webp"/></item><item><title>Dual booting Mobian Linux and Android on Xiaomi Poco F1</title><link>https://ivonblog.com/en-us/posts/dual-booting-linux-mobile-and-android/</link><pubDate>Mon, 10 Oct 2022 00:02:46 +0800</pubDate><author>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</author><guid>https://ivonblog.com/en-us/posts/dual-booting-linux-mobile-and-android/</guid><description>&lt;p&gt;&lt;a href="https://ivonblog.com/posts/dual-booting-linux-mobile-and-android" target="_blank" rel="noreferrer"&gt;🇹🇼 中文版&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Linux mobile distro, such as postmarketOS, has more devices supported and more freedom. Instead of dual booting Windows and Android, why not dual boot Linux mobile distros and Android? This could be done on more Android devices.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://ivonblog.com/posts/dual-booting-linux-mobile-and-android/images/2JIVP09.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/cannotloadimage.avif'"
 &gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;There are many ways for dual booting Linux mobile distros and Android. For Xiaomi Pocohpne F1 here we have a stupid method: partition the internal storage and install Android and Mobain (Linux mobile distro) on it. Every time we want to boot to another OS, we just flash boot.img via TWRP.&lt;/p&gt;
&lt;p&gt;This idea comes from &amp;ldquo;dual booting Windows 11 ARM and Android&amp;rdquo;. &lt;a href="https://renegade-project.org/#/" target="_blank" rel="noreferrer"&gt;Renegade Project&lt;/a&gt; makes booting Windows 11 ARM possible on Snapdragon 845 phones. And we must partition the internal storage in order to boot Windows.&lt;/p&gt;
&lt;p&gt;Now we could use the tools provided by Renegade Project to dual boot Mobian and Android. Or even more? Multi-booting Ubuntu touch + postmarketOS + Mobian + Arch Linux ARM + Windows + Andorid ! Just make sure you have eonugh spaces left on device.&lt;/p&gt;

&lt;h2 class="relative group"&gt;1. Install TWRP
 &lt;div id="1-install-twrp" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-install-twrp" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install &lt;a href="https://developer.android.com/studio/releases/platform-tools" target="_blank" rel="noreferrer"&gt;Fastboot tool&lt;/a&gt; on your PC.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Boot into fastboot mode. Connect the phone to your PC. Download &lt;a href="https://dl.twrp.me/beryllium/" target="_blank" rel="noreferrer"&gt;TWRP for beryllium&lt;/a&gt; and flash it:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fastboot flash recovery twrp-3.6.2_9-0-beryllium.img&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 class="relative group"&gt;2. Partitioning the internal storage
 &lt;div id="2-partitioning-the-internal-storage" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2-partitioning-the-internal-storage" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install &lt;a href="https://developer.android.com/studio/releases/platform-tools" target="_blank" rel="noreferrer"&gt;ADB tools&lt;/a&gt; on your PC.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Download &lt;a href="https://forum.renegade-project.org/t/linux-android-aarch64-parted3-5-statically-linked-parted/2937" target="_blank" rel="noreferrer"&gt;GNU parted&lt;/a&gt; from Renegade Project.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Connect the phone to your pc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Boot into TWRP. Send parted to the phone and correct permissions:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb push parted /sdcard
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp /sdcard/parted /sbin/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod &lt;span class="m"&gt;755&lt;/span&gt; /sbin/parted&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Start partitioning the internal storage:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;umount /data
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;umount /sdcard
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;parted /dev/block/sda
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Print partition layout&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;print
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Resize userdata (where Android is installed) to 64GB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;resizepart &lt;span class="m"&gt;21&lt;/span&gt; 64GB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Create a parition for Mobian&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkpart mobian ext4 64GB 123GB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;quit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exit&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="6"&gt;
&lt;li&gt;Reboot to TWRP again. Create file systems for Android and Mobian:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mke2fs -t ext4 /dev/block/by-name/userdata
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkfs.ext4 /dev/block/by-name/mobian
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exit&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Now we could start installing Android and Mobian.&lt;/p&gt;

&lt;h2 class="relative group"&gt;3. Install OS to the phone
 &lt;div id="3-install-os-to-the-phone" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#3-install-os-to-the-phone" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Download LineageOS builds from &lt;a href="https://download.lineageos.org/beryllium" target="_blank" rel="noreferrer"&gt;the official website&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;code&gt;Advanced&lt;/code&gt; → &lt;code&gt;ADB Sideload&lt;/code&gt; in TWRP. Flash Android ROM. Dont&amp;rsquo;t forget to preserve &lt;code&gt;boot.img&lt;/code&gt; from Lineage OS ROM archive.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb sideload lineageos.zip&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;
&lt;p&gt;Download &lt;a href="https://images.mobian-project.org/pocof1/weekly/" target="_blank" rel="noreferrer"&gt;Mobian weekly builds&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Boot into fastboot mode. Flash the boot.img:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fastboot -S 100M flash boot mobian-boot.img&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Flash the rootfs to &lt;code&gt;mobian&lt;/code&gt; partition. Also remember to preserve boot.img from Mobian archive.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fastboot -S 100M flash mobian mobian-rootfs.img
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fastboot erase dtbo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 class="relative group"&gt;4. Steps for dual-booting
 &lt;div id="4-steps-for-dual-booting" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#4-steps-for-dual-booting" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Boot into TWRP. Save &lt;code&gt;boot.img of Mobian&lt;/code&gt; and &lt;code&gt;boot.img of Android&lt;/code&gt; to Android&amp;rsquo;s internal storage (/sdcard1) because TWRP could only mount Android partitions.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note there are some decryption issues on Android 12+ TWRP, so you could also save boot.img to external sdcard, or flash it via fastboot.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;When we want to boot into Android, click &lt;code&gt;Install&lt;/code&gt; in TWRP and click &lt;code&gt;Install images&lt;/code&gt;, flash Android&amp;rsquo;s boot.img to boot partition in TWRP and reboot. The steps are the same for Mobian.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ivonblog.com/en-us/posts/dual-booting-linux-mobile-and-android/featured.webp"/></item><item><title>Remote Desktop for Linux phones running postmarketOS using Wayland Protocol</title><link>https://ivonblog.com/en-us/posts/postmarketos-wayvnc/</link><pubDate>Sun, 02 Oct 2022 18:00:00 +0800</pubDate><author>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</author><guid>https://ivonblog.com/en-us/posts/postmarketos-wayvnc/</guid><description>&lt;p&gt;&lt;a href="https://ivonblog.com/en-us/posts/postmarketos-wayvnc/" &gt;中文版&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When we want to use desktop mode, we would need to setup a remote desktop. Because usb ports will not working on Android phones running postmarketOS.
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://ivonblog.com/posts/postmarketos-wayvnc/images/6BJGW6P.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/cannotloadimage.avif'"
 &gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;The VNC server would be an easy solution, however what if the Linux mobile distro uses Wayland protocol instead of X11? It will be hard for remote accessing. Fortunately there are still some workarounds.&lt;/p&gt;

&lt;h2 class="relative group"&gt;GNOME Shell
 &lt;div id="gnome-shell" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#gnome-shell" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;For GNOME desktop, there is a feature named &amp;ldquo;Desktop sharing&amp;rdquo;. Turn it on in System settings → Sharing → Desktop sharing. After that, open &lt;a href="https://remmina.org/" target="_blank" rel="noreferrer"&gt;Remmina client&lt;/a&gt; or RealVNC Viewer on your desktop, input IP of the phone and connect to it.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Phosh, Plasma Mobile, Sway
 &lt;div id="phosh-plasma-mobile-sway" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#phosh-plasma-mobile-sway" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;There &amp;ldquo;WayVNC&amp;rdquo; is the Wayland implementation of vnc server. The biggest disadvantage of WayVNC is that it will make the phone huge lag and there is no way to adjust resolutions.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install wayvnc:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apk add wayvnc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Enable these options at `/etc/ssh/sshd_config':&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AllowTcpForwarding yes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;X11Forwarding yes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Restart sshd services:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rc-service sshd restart&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Start WayVNC. Press Ctrl + C to stop.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wayvnc localhost &lt;span class="m"&gt;5901&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="5"&gt;
&lt;li&gt;On your desktop, start a SSH connection to the phone:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -L 5901:localhost:5901 user@192.168.0.243&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="6"&gt;
&lt;li&gt;Open &lt;a href="https://remmina.org/" target="_blank" rel="noreferrer"&gt;Remmina client&lt;/a&gt;, connect to the VNC server:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;localhost:5901&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ivonblog.com/en-us/posts/postmarketos-wayvnc/featured.webp"/></item><item><title>Playing x86 Steam games on ARM Linux devices using Box86 + chroot</title><link>https://ivonblog.com/en-us/posts/linux-phone-box86-steam/</link><pubDate>Sun, 18 Sep 2022 09:35:00 +0800</pubDate><author>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</author><guid>https://ivonblog.com/en-us/posts/linux-phone-box86-steam/</guid><description>&lt;p&gt;&lt;a href="https://ivonblog.com/posts/linux-phone-box86-steam/" target="_blank" rel="noreferrer"&gt;🇹🇼 中文版&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Recently, I read Raezroth&amp;rsquo;s &lt;a href="https://github.com/Raezroth/Linux-ARM-Gaming-Chroot" target="_blank" rel="noreferrer"&gt;Linux-ARM-Gaming-Chroot&lt;/a&gt; guide on Github. He discussed about how to install Box86 and Steam on PinePhone/Pinephone Pro, the real Linux phone.&lt;/p&gt;
&lt;p&gt;I do own a Pinephone. However, I choose Xiaomi Poco F1 for testing. It outperforms my PinePhone and also supports running &lt;a href="https://wiki.mobian-project.org/doku.php?id=install" target="_blank" rel="noreferrer"&gt;Mobian&lt;/a&gt; perfectly.
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://ivonblog.com/posts/linux-phone-box86-steam/images/tHuW0Dw.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/cannotloadimage.avif'"
 &gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I had tested this on postmarketOS, it did not work. Steam wouldn&amp;rsquo;t start in chroot on postmarketOS.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Here is my video demonstration.




&lt;div style="position: relative; padding-bottom: 56.25%; overflow: hidden;"&gt;
 &lt;iframe style="position: absolute; width: 100%; height: 100%;"
 src="http://www.youtube.com/embed/JFUp6Bq2fjg" allowfullscreen frameborder="0" loading="lazy"&gt;
 &lt;/iframe&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;h2 class="relative group"&gt;1. Set up chroot environment
 &lt;div id="1-set-up-chroot-environment" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-set-up-chroot-environment" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;My desktop environent is GNOME Wayland.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install following packages&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install debootstrap debian-archive-keyring x11-xserver-utils dbus-x11&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Create &lt;code&gt;gaming&lt;/code&gt; directory&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir gaming
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chown root:root gaming&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Install an armhf chroot Debian environment&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo debootstrap --arch armhf --components&lt;span class="o"&gt;=&lt;/span&gt;main,universe sid gaming http://ftp.tw.debian.org/debian/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Create a script &lt;code&gt;startg.sh&lt;/code&gt; for starting chroot environment&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; gaming
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mount -t proc /proc proc/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mount -t sysfs /sys sys/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mount --bind /dev dev/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mount --bind /dev/pts/ dev/pts/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mount --bind /run run/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mount --bind /run/user/1000 run/user/1000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mount -t tmpfs tmpfs tmp/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chroot . /bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Auto umount everything after exiting&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo umount proc/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo umount sys/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo umount dev/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo umount dev/pts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo umount run/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo umount run/user/1000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo umount tmp/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Chroot into Debian&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod + startg.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./startg.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="6"&gt;
&lt;li&gt;Install VIM&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt install vim&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="7"&gt;
&lt;li&gt;Edit &lt;code&gt;/root/.bashrc&lt;/code&gt;. Add these environment variables:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;LC_ALL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;C&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;LANGUAGE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;C&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;:/bin:/sbin:/usr/bin:/usr/sbin:/usr/games:/usr/local/bin:/usr/local/sbin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;STEAMOS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;STEAM_RUNTIME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod &lt;span class="m"&gt;1777&lt;/span&gt; /dev/shm&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="8"&gt;
&lt;li&gt;Install packages for compling Box86&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; /root/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dpkg --add-architecture arm64
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt install sudo vim make cmake git wget gnupg libx11-dev libgl-dev libvulkan-dev libtcmalloc-minimal4 libnm0 zenity chromium alsamixergui libsdl2-dev unzip libgles-dev firefox-esr:arm64 libx11-dev:arm64 libvulkan-dev:arm64 libsdl2-dev:arm64 libgl-dev:arm64 libc6-dev:arm64 libgles-dev:arm64 libsdl2-dev zstd xz-utils&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="9"&gt;
&lt;li&gt;Create a new user&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adduser --home /home/user user
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;usermod -g users user
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;passwd user
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;passwd root&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="10"&gt;
&lt;li&gt;Run &lt;code&gt;visudo&lt;/code&gt;. Add the normal to sudoers&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;root &lt;span class="nv"&gt;ALL&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;ALL:ALL&lt;span class="o"&gt;)&lt;/span&gt; ALL
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;user &lt;span class="nv"&gt;ALL&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;ALL:ALL&lt;span class="o"&gt;)&lt;/span&gt; ALL&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="11"&gt;
&lt;li&gt;Switch to normal user&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;su user
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cd&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="12"&gt;
&lt;li&gt;Edit &lt;code&gt;.profile&lt;/code&gt; and add these:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;SDL_VIDEODRIVER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;wayland
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;WAYLAND_DISPLAY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;wayland-1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;GDK_BACKEND&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;wayland
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;XDG_SESSION_TYPE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;wayland
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;XDG_RUNTIME_DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/run/user/1000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;DISPLAY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;:1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;XSOCKET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/.X11-unix/X1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;_JAVA_AWT_WM_NONREPARENTING&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 class="relative group"&gt;2. Install Box86 and Box64
 &lt;div id="2-install-box86-and-box64" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2-install-box86-and-box64" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Install Box86 from &lt;a href="https://github.com//weekly-box86-debs" target="_blank" rel="noreferrer"&gt;Itai Nelken&amp;rsquo;s repository&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo wget https://itai-nelken.github.io/weekly-box86-debs/debian/box86.list -O /etc/apt/sources.list.d/box86.list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget -qO- https://itai-nelken.github.io/weekly-box86-debs/debian/KEY.gpg &lt;span class="p"&gt;|&lt;/span&gt; sudo apt-key add -
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install box86 -y&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Install Box64 from &lt;a href="https://github.com/ryanfortner/box64-debs" target="_blank" rel="noreferrer"&gt;Ryan Fortner&amp;rsquo;s repository&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo wget https://ryanfortner.github.io/box64-debs/box64.list -O /etc/apt/sources.list.d/box64.list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget -O- https://ryanfortner.github.io/box64-debs/KEY.gpg &lt;span class="p"&gt;|&lt;/span&gt; gpg --dearmor &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /usr/share/keyrings/box64-debs-archive-keyring.gpg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install box64 -y&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Open another terminal in Mobian host. Copy &lt;code&gt;infmt.d&lt;/code&gt; of chroot to host.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo cp -r ~/gaming/etc/binfmt.d/box* /etc/binfmt.d/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Restart binfmt services. Go back to chroot.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl restart systemd-binfmt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 class="relative group"&gt;3. Install Steam and Steam Proton
 &lt;div id="3-install-steam-and-steam-proton" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#3-install-steam-and-steam-proton" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Install dependencies of Steam&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;xdg-user-dirs-update --force
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/Downloads
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget http://ftp.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-4_armhf.deb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget http://ftp.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-7_armhf.deb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install ./lib*&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Install Steam from official website&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://repo.steampowered.com/steam/archive/stable/steam_latest.deb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install ./steam_latest.deb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cd&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Run Steam. This should open the game list.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;steam +open steam://open/minigameslist&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="4"&gt;
&lt;li&gt;
&lt;p&gt;Log into your Steam account. Then enable Steam Play in Settings so it will automatically install Proton after downloading Windows games.
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://ivonblog.com/posts/linux-phone-box86-steam/images/Bs1D52f.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/cannotloadimage.avif'"
 &gt;&lt;/figure&gt;&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ivonblog.com/en-us/posts/linux-phone-box86-steam/featured.webp"/></item><item><title>Netboot: Booting postmarketOS from the Internet</title><link>https://ivonblog.com/en-us/posts/postmarketos-netboot/</link><pubDate>Fri, 16 Sep 2022 02:21:00 +0800</pubDate><author>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</author><guid>https://ivonblog.com/en-us/posts/postmarketos-netboot/</guid><description>&lt;p&gt;&lt;a href="https://ivonblog.com/en-us/posts/postmarketos-netboot/" &gt;中文版&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Booting postmarketOS from Internet.
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://ivonblog.com/posts/postmarketos-netboot/images/56OWSpD.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/cannotloadimage.avif'"
 &gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;Netboot works like &amp;ldquo;Live-USB&amp;rdquo; that users could try postmarketOS without flashing the OS. Of course, the bootloader must be unlcoked in the first place.&lt;/p&gt;




&lt;div style="position: relative; padding-bottom: 56.25%; overflow: hidden;"&gt;
 &lt;iframe style="position: absolute; width: 100%; height: 100%;"
 src="http://www.youtube.com/embed/U_BVX9eL5c0" allowfullscreen frameborder="0" loading="lazy"&gt;
 &lt;/iframe&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Device: Xiaomi Redmi 5 Pro (whyred)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Run &lt;code&gt;pmbootstrap&lt;/code&gt; and choose &lt;code&gt;xiaomi/whyred&lt;/code&gt;. Then we have to modify kernel configs.&lt;/p&gt;

&lt;h2 class="relative group"&gt;1. Check netboot compatbility of Linux kernel
 &lt;div id="1-check-netboot-compatbility-of-linux-kernel" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-check-netboot-compatbility-of-linux-kernel" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Check if the kernel supports Netboot&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap kconfig check --netboot linux-xiaomi-whyred&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;If the kernel does not support Netboot, this message should pop up:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WARNING: linux-xiaomi-whyred/config-xiaomi-whyred.aarch64: CONFIG_BLK_DEV_NBD should be set.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ERROR: kconfig check failed!&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Edit kernel configs&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap kconfig edit&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Enable &lt;code&gt;CONFIG_BLK_DEV_NBD&lt;/code&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Symbol: BLK_DEV_NBD &lt;span class="o"&gt;[=&lt;/span&gt;n&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Type : tristate
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Prompt: Network block device support
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Location:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -&amp;gt; Device Drivers
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -&amp;gt; Block devices &lt;span class="o"&gt;(&lt;/span&gt;BLK_DEV &lt;span class="o"&gt;[=&lt;/span&gt;y&lt;span class="o"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -&amp;gt; Network block device support&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Compile Linux kernel&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap build linux-xiaomi-whyred&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 class="relative group"&gt;2. Netbooting
 &lt;div id="2-netbooting" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2-netbooting" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Create rootfs&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap --extra-space &lt;span class="m"&gt;3000&lt;/span&gt; install --no-sparse&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Reboot the phone into fastboot mode. Connect it to PC. Then postmarketOS logo will show up and wait for rootfs&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap initfs hook_add netboot
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap flasher boot&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Open 9999 port of firewall on the PC. Then start Netboot server:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap netboot serve&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Now the phone should boot. We could ssh into it:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh user@172.16.42.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Now we can try out postmarketOS on the phone. Everthything works like real installation. And postmarketOS will stop working if the phone is unplugged from PC.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The data of Netboot postmarketOS is located at &lt;code&gt;~/.local/var/pmbootstrap/images_netboot/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;References&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wiki.postmarketos.org/wiki/Netboot" target="_blank" rel="noreferrer"&gt;Netboot - PostmarketOS wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tuxphones.com/postmarketos-linux-live-usb-fastboot-network-boot/" target="_blank" rel="noreferrer"&gt;You can now live-boot postmarketOS on Android phones - Tux Phones&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ivonblog.com/en-us/posts/postmarketos-netboot/featured.webp"/></item></channel></rss>