summaryrefslogtreecommitdiff
path: root/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html
blob: 04f3e32c154500e33cc5e7c1f9671970c85a72a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Run Debian on your phone with Debroid</title>
<link rel="shortcut icon" type="image/gif" href="/favicon.ico" />
<link rel="stylesheet" href="../style.css" />
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
<div class="rfx-overlay-grid"></div>
<div class="rfx-overlay-scanlines"></div>
<div id="rfx-stars"></div>
<div class="rfx-vignette"></div>
<p class="header">
<a href="https://foo.zone">Home</a> | <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.gmi">Gemini</a>
</p>
<h1 style='display: inline' id='run-debian-on-your-phone-with-debroid'>Run Debian on your phone with Debroid</h1><br />
<br />
<span class='quote'>Published at 2015-12-05T16:12:57+00:00; Updated at 2021-05-16</span><br />
<br />
<span>You can use the following tutorial to install a full-blown Debian GNU/Linux Chroot on an LG G3 D855 CyanogenMod 13 (Android 6). First of all, you need to have root permissions on your phone, and you also need to have the developer mode activated. The following steps have been tested on Linux (Fedora 23).</span><br />
<br />
<a href='./run-debian-on-your-phone-with-debroid/Deboroid.png'><img src='./run-debian-on-your-phone-with-debroid/Deboroid.png' /></a><br />
<br />
<span>A couple of years have passed since I last worked on Debroid. Currently, I am using the Termux app on Android, which is less sophisticated than a fully blown Debian installation but sufficient for my current requirements. The content of this site may be still relevant, and it would also work with more recent versions of Debian and Android. I would expect that some minor modifications need to be made, though. </span><br />
<br />
<pre>
 ____       _               _     _ 
|  _ \  ___| |__  _ __ ___ (_) __| |
| | | |/ _ \ &#39;_ \| &#39;__/ _ \| |/ _` |
| |_| |  __/ |_) | | | (_) | | (_| |
|____/ \___|_.__/|_|  \___/|_|\__,_|
                                    
</pre>
<br />
<h2 style='display: inline' id='table-of-contents'>Table of Contents</h2><br />
<br />
<ul>
<li><a href='#run-debian-on-your-phone-with-debroid'>Run Debian on your phone with Debroid</a></li>
<li>⇢ <a href='#step-by-step-guide'>Step by step guide</a></li>
<li>⇢ ⇢ <a href='#first-debootstrap-stage'>First debootstrap stage</a></li>
<li>⇢ ⇢ <a href='#copy-debian-image-to-the-phone'>Copy Debian image to the phone</a></li>
<li>⇢ ⇢ <a href='#second-debootstrap-stage'>Second debootstrap stage</a></li>
<li>⇢ ⇢ <a href='#setup-of-various-scripts'>Setup of various scripts</a></li>
<li>⇢ ⇢ <a href='#entering-debroid-and-enable-a-service'>Entering Debroid and enable a service</a></li>
<li>⇢ ⇢ <a href='#include-to-android-startup'>Include to Android startup:</a></li>
</ul><br />
<h2 style='display: inline' id='step-by-step-guide'>Step by step guide</h2><br />
<br />
<span>All scripts mentioned here can be found on GitHub at:</span><br />
<br />
<a class='textlink' href='https://codeberg.org/snonux/debroid'>https://codeberg.org/snonux/debroid</a><br />
<br />
<h3 style='display: inline' id='first-debootstrap-stage'>First debootstrap stage</h3><br />
<br />
<span>This is to be performed on a Fedora Linux machine (could work on a Debian too, but Fedora is just what I use on my Laptop). The following steps prepare an initial Debian base image, which can then be transferred to the phone.</span><br />
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><font color="#ff0000">sudo dnf install debootstrap</font>
<i><font color="#ababab"># 5g</font></i>
<font color="#ff0000">dd </font><b><font color="#ffffff">if</font></b><font color="#F3E651">=</font><font color="#ff0000">/dev/zero </font><font color="#ff0000">of</font><font color="#F3E651">=</font><font color="#ff0000">jessie</font><font color="#F3E651">.</font><font color="#ff0000">img </font><font color="#ff0000">bs</font><font color="#F3E651">=</font><font color="#ff0000">$[</font><font color="#ff0000"> </font><font color="#bb00ff">1024</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#bb00ff">1024</font><font color="#ff0000"> </font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
<font color="#ff0000">  </font><font color="#ff0000">count</font><font color="#F3E651">=</font><font color="#ff0000">$[</font><font color="#ff0000"> </font><font color="#bb00ff">1024</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#ff0000"> </font><font color="#F3E651">]</font>

<i><font color="#ababab"># Show used loop devices</font></i>
<font color="#ff0000">sudo losetup -f</font>
<i><font color="#ababab"># Store the next free one to $loop</font></i>
<font color="#ff0000">loop</font><font color="#F3E651">=</font><font color="#ff0000">loopN</font>
<font color="#ff0000">sudo losetup /dev</font><font color="#F3E651">/</font><font color="#ff0000">$loop</font><font color="#ff0000"> jessie</font><font color="#F3E651">.</font><font color="#ff0000">img</font>

<font color="#ff0000">mkdir jessie</font>
<font color="#ff0000">sudo mkfs</font><font color="#F3E651">.</font><font color="#ff0000">ext4 /dev</font><font color="#F3E651">/</font><font color="#ff0000">$loop</font>
<font color="#ff0000">sudo mount /dev</font><font color="#F3E651">/</font><font color="#ff0000">$loop</font><font color="#ff0000"> jessie</font>
<font color="#ff0000">sudo debootstrap --foreign --variant</font><font color="#F3E651">=</font><font color="#ff0000">minbase </font><font color="#F3E651">\</font>
<font color="#ff0000">  --arch armel jessie jessie</font><font color="#F3E651">/</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
<font color="#ff0000">  http</font><font color="#F3E651">:</font><font color="#ff0000">//http</font><font color="#F3E651">.</font><font color="#ff0000">debian</font><font color="#F3E651">.</font><font color="#ff0000">net/debian</font>
<font color="#ff0000">sudo umount jessie</font>
</pre>
<br />
<h3 style='display: inline' id='copy-debian-image-to-the-phone'>Copy Debian image to the phone</h3><br />
<br />
<span>Now setup the Debian image on an external SD card on the Phone via Android Debugger as follows:</span><br />
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><font color="#ff0000">adb root </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> adb wait-for-device </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> adb shell</font>
<font color="#ff0000">mkdir -p /storage/sdcard</font><font color="#bb00ff">1</font><font color="#ff0000">/Linux/jessie</font>
<b><font color="#ffffff">exit</font></b>

<i><font color="#ababab"># Sparse image problem, may be too big for copying otherwise</font></i>
<font color="#ff0000">gzip jessie</font><font color="#F3E651">.</font><font color="#ff0000">img</font>
<i><font color="#ababab"># Copy over</font></i>
<font color="#ff0000">adb push jessie</font><font color="#F3E651">.</font><font color="#ff0000">img</font><font color="#F3E651">.</font><font color="#ff0000">gz /storage/sdcard</font><font color="#bb00ff">1</font><font color="#ff0000">/Linux/jessie</font><font color="#F3E651">.</font><font color="#ff0000">img</font><font color="#F3E651">.</font><font color="#ff0000">gz</font>
<font color="#ff0000">adb shell</font>
<font color="#ff0000">cd /storage/sdcard</font><font color="#bb00ff">1</font><font color="#ff0000">/Linux</font>
<font color="#ff0000">gunzip jessie</font><font color="#F3E651">.</font><font color="#ff0000">img</font><font color="#F3E651">.</font><font color="#ff0000">gz</font>

<i><font color="#ababab"># Show used loop devices</font></i>
<font color="#ff0000">losetup -f</font>
<i><font color="#ababab"># Store the next free one to $loop</font></i>
<font color="#ff0000">loop</font><font color="#F3E651">=</font><font color="#ff0000">loopN</font>

<i><font color="#ababab"># Use the next free one (replace the loop number)</font></i>
<font color="#ff0000">losetup /dev/block</font><font color="#F3E651">/</font><font color="#ff0000">$loop</font><font color="#ff0000"> </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie</font><font color="#F3E651">.</font><font color="#ff0000">img</font>
<font color="#ff0000">mount -t ext4 /dev/block</font><font color="#F3E651">/</font><font color="#ff0000">$loop</font><font color="#ff0000"> </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie</font>

<i><font color="#ababab"># Bind-Mound proc, dev, sys`</font></i>
<font color="#ff0000">busybox mount --bind /proc </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie/proc</font>
<font color="#ff0000">busybox mount --bind /dev </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie/dev</font>
<font color="#ff0000">busybox mount --bind /dev/pts </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie/dev/pts</font>
<font color="#ff0000">busybox mount --bind /sys </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie/sys</font>

<i><font color="#ababab"># Bind-Mound the rest of Android</font></i>
<font color="#ff0000">mkdir -p </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie/storage/sdcard{</font><font color="#bb00ff">0</font><font color="#F3E651">,</font><font color="#bb00ff">1</font><font color="#ff0000">}</font>
<font color="#ff0000">busybox mount --bind /storage/emulated </font><font color="#F3E651">\</font>
<font color="#ff0000">  </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie/storage/sdcard</font><font color="#bb00ff">0</font>
<font color="#ff0000">busybox mount --bind /storage/sdcard</font><font color="#bb00ff">1</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
<font color="#ff0000">  </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie/storage/sdcard</font><font color="#bb00ff">1</font>

<i><font color="#ababab"># Check mounts</font></i>
<font color="#ff0000">mount </font><font color="#F3E651">|</font><font color="#ff0000"> grep jessie</font>
</pre>
<br />
<h3 style='display: inline' id='second-debootstrap-stage'>Second debootstrap stage</h3><br />
<br />
<span>This is to be performed on the Android phone itself (inside a Debian chroot):</span><br />
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><font color="#ff0000">chroot </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie /bin/bash -l</font>
<b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">PATH</font><font color="#F3E651">=</font><font color="#ff0000">/bin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/bin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/local/bin</font><font color="#F3E651">:</font><font color="#ff0000">/sbin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/sbin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/local/sbin</font>
<font color="#ff0000">/debootstrap/debootstrap --second-stage</font>
<b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><i><font color="#ababab"># Leave chroot</font></i>
<b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><i><font color="#ababab"># Leave adb shell</font></i>
</pre>
<br />
<h3 style='display: inline' id='setup-of-various-scripts'>Setup of various scripts</h3><br />
<br />
<span>jessie.sh deals with all the loopback mount magic and so on. It will be run later every time you start Debroid on your phone.</span><br />
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><i><font color="#ababab"># Install script jessie.sh</font></i>
<font color="#ff0000">adb push storage/sdcard</font><font color="#bb00ff">1</font><font color="#ff0000">/Linux/jessie</font><font color="#F3E651">.</font><font color="#ff0000">sh /storage/sdcard/Linux/jessie</font><font color="#F3E651">.</font><font color="#ff0000">sh</font>
<font color="#ff0000">adb shell</font>
<font color="#ff0000">cd /storage/sdcard</font><font color="#bb00ff">1</font><font color="#ff0000">/Linux</font>
<font color="#ff0000">sh jessie</font><font color="#F3E651">.</font><font color="#ff0000">sh enter</font>

<i><font color="#ababab"># Bashrc</font></i>
<font color="#ff0000">cat </font><font color="#F3E651">&lt;&lt;</font><font color="#ff0000">END </font><font color="#F3E651">&gt;~/.</font><font color="#ff0000">bashrc</font>
<b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">PATH</font><font color="#F3E651">=</font><font color="#ff0000">/usr/local/sbin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/local/bin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/sbin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/bin</font><font color="#F3E651">:</font><font color="#ff0000">/sbin</font><font color="#F3E651">:</font><font color="#ff0000">/bin</font><font color="#F3E651">:</font><font color="#ff0000">$PATH</font>
<b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">EDITOR</font><font color="#F3E651">=</font><font color="#ff0000">vim</font>
<font color="#ff0000">hostname </font><font color="#ff0000">$(</font><font color="#ff0000">cat /etc/hostname</font><font color="#F3E651">)</font>
<font color="#ff0000">END</font>

<i><font color="#ababab"># Fixing an error message while loading the profile</font></i>
<font color="#ff0000">sed -i s</font><i><font color="#ababab">#id#/usr/bin/id# /etc/profile</font></i>

<i><font color="#ababab"># Setting the hostname</font></i>
<font color="#ff0000">echo phobos </font><font color="#F3E651">&gt;</font><font color="#ff0000"> /etc/hostname</font>
<font color="#ff0000">echo </font><font color="#bb00ff">127.0</font><font color="#F3E651">.</font><font color="#bb00ff">0.1</font><font color="#ff0000"> phobos </font><font color="#F3E651">&gt;</font><font color="#ff0000"> /etc/hosts</font>
<font color="#ff0000">hostname phobos</font>

<i><font color="#ababab"># Apt-sources</font></i>
<font color="#ff0000">cat </font><font color="#F3E651">&lt;&lt;</font><font color="#ff0000">END </font><font color="#F3E651">&gt;</font><font color="#ff0000"> sources</font><font color="#F3E651">.</font><font color="#ff0000">list</font>
<font color="#ff0000">deb http</font><font color="#F3E651">:</font><font color="#ff0000">//ftp</font><font color="#F3E651">.</font><font color="#ff0000">uk</font><font color="#F3E651">.</font><font color="#ff0000">debian</font><font color="#F3E651">.</font><font color="#ff0000">org/debian</font><font color="#F3E651">/</font><font color="#ff0000"> jessie main contrib non-free</font>
<font color="#ff0000">deb-src http</font><font color="#F3E651">:</font><font color="#ff0000">//ftp</font><font color="#F3E651">.</font><font color="#ff0000">uk</font><font color="#F3E651">.</font><font color="#ff0000">debian</font><font color="#F3E651">.</font><font color="#ff0000">org/debian</font><font color="#F3E651">/</font><font color="#ff0000"> jessie main contrib non-free</font>
<font color="#ff0000">END</font>
<font color="#ff0000">apt-get update</font>
<font color="#ff0000">apt-get upgrade</font>
<font color="#ff0000">apt-get dist-upgrade</font>
<b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><i><font color="#ababab"># Exit chroot</font></i>
</pre>
<br />
<h3 style='display: inline' id='entering-debroid-and-enable-a-service'>Entering Debroid and enable a service</h3><br />
<br />
<span>This enters Debroid on your phone and starts the example service uptimed:</span><br />
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><font color="#ff0000">sh jessie</font><font color="#F3E651">.</font><font color="#ff0000">sh enter</font>

<i><font color="#ababab"># Setup example serice uptimed</font></i>
<font color="#ff0000">apt-get install uptimed</font>
<font color="#ff0000">cat </font><font color="#F3E651">&lt;&lt;</font><font color="#ff0000">END </font><font color="#F3E651">&gt;</font><font color="#ff0000"> /etc/rc</font><font color="#F3E651">.</font><font color="#ff0000">debroid</font>
<b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">PATH</font><font color="#F3E651">=</font><font color="#ff0000">/usr/local/sbin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/local/bin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/sbin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/bin</font><font color="#F3E651">:</font><font color="#ff0000">/sbin</font><font color="#F3E651">:</font><font color="#ff0000">/bin</font><font color="#F3E651">:</font><font color="#ff0000">$PATH</font>
<font color="#ff0000">service uptimed status </font><font color="#F3E651">&amp;&gt;</font><font color="#ff0000">/dev/null </font><font color="#F3E651">||</font><font color="#ff0000"> service uptimed start</font>
<b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><font color="#bb00ff">0</font>
<font color="#ff0000">END</font>

<font color="#ff0000">chmod </font><font color="#bb00ff">0755</font><font color="#ff0000"> /etc/rc</font><font color="#F3E651">.</font><font color="#ff0000">debroid</font>
<b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><i><font color="#ababab"># Exit chroot</font></i>
<b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><i><font color="#ababab"># Exit adb shell</font></i>
</pre>
<br />
<h3 style='display: inline' id='include-to-android-startup'>Include to Android startup:</h3><br />
<br />
<span>If you want to start Debroid automatically whenever your phone starts, then do the following:</span><br />
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><font color="#ff0000">adb push data/local/userinit</font><font color="#F3E651">.</font><font color="#ff0000">sh /data/local/userinit</font><font color="#F3E651">.</font><font color="#ff0000">sh</font>
<font color="#ff0000">adb shell</font>
<font color="#ff0000">chmod </font><font color="#F3E651">+</font><font color="#ff0000">x /data/local/userinit</font><font color="#F3E651">.</font><font color="#ff0000">sh</font>
<b><font color="#ffffff">exit</font></b>
</pre>
<br />
<span>Reboot &amp; test! Enjoy!</span><br />
<br />
<span>E-Mail your comments to <span class='inlinecode'>paul@nospam.buetow.org</span> :-)</span><br />
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
    Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
    served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
    <a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
    <br />
    Webring: <a href="https://shring.sh/foo.zone/previous">previous</a> | <a href="https://shring.sh">shring</a> | <a href="https://shring.sh/foo.zone/next">next</a>
</p>
</body>
</html>