-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
2391 lines (2297 loc) · 161 KB
/
index.html
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
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Android-Non-Root</title>
<link rel="stylesheet" href="styles.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS_HTML"></script>
<script src="script.js" defer></script>
</head>
<body>
<div class="navbar">
<div class="container">
<a href="https://willie169.github.io"><img src="img/Android_Non_Root.png" alt="Android Non Root" style="height: 40px;"></a>
</div>
</div>
<div id="top"></div>
<div class="content">
<h1 id="android-non-root">Android Non Root</h1>
<p>Android Non Root has three versions:</p>
<ul>
<li>The HTML version: <a href="https://willie169.github.io">https://willie169.github.io</a>.</li>
<li>The repository of the HTML version: <a href="https://github.com/Willie169/Willie169.github.io">https://github.com/Willie169/Willie169.github.io</a>.</li>
<li>The Markdown version: <a href="https://github.com/Willie169/Android-Non-Root">https://github.com/Willie169/Android-Non-Root</a>.</li>
<li>The app version: <a href="https://github.com/Willie169/Android-Non-Root-App/releases/download/v1.0/com.willie.androidnonroot_10.apk">https://github.com/Willie169/Android-Non-Root-App/releases/download/v1.0/com.willie.androidnonroot_10.apk</a>.</li>
<li>The repository of the app version: <a href="https://github.com/Willie169/Android-Non-Root-App">https://github.com/Willie169/Android-Non-Root-App</a>.</li>
</ul>
<p>The author of this tutorial is <a href="https://github.com/Willie169">Willie169 (Willie Shen)</a>.</p>
<p>If for whatever reason you want to send me money, here are where you may do so:</p>
<ul>
<li>BTC:
bc1qm7fuvza2tktvjzfmvf37vw6yft5ntd2u5gh9l0</li>
<li>ETH:
0xC5A26bF0F3564a77973a261624231Ac9DE647967</li>
<li>BNB (BNB Smart Chain):
0xC5A26bF0F3564a77973a261624231Ac9DE647967</li>
<li>SOL:
5ytjeNsMqxUqCZGHghGWjZNZHFSebwfAkKXepExmqvTU</li>
<li>DOGE:
DQUWv5vBhCLgoCCyNU2T4fh35ZhGi9cM4T</li>
<li>XMR: 48j6iQDeCSDeH46gw4dPJnMsa6TQzPa6WJaYbBS9JJucKqg9Mkt5EDe9nSkES3b8u7V6XJfL8neAPAtbEpmV2f4XC7bdbkv</li>
</ul>
<p>In this tutorial, we'll explore a range of powerful, open-source tools such as Termux, Shizuku, Tor, TrackerControl, InviZible Pro, QEMU, Andronix, and OpenSSL to enhance your Android device’s functionality, security, privacy, and customization without the need for root access.</p>
<p>Please read the <a href="#global-note">Global Note</a> before you start or you may encounter errors.</p>
<hr />
<div id="table-of-contents">
<h2>Table of Contents</h2>
<ul id="toc-list">
<li class="h2"><a href="#table-of-contents">Table of Contents</a>
<ul>
</ul>
</li>
<li class="h2"><a href="#global-note">Global Note</a>
<ul>
</ul>
</li>
<li class="h2"><a href="#termux-a-powerful-terminal-emulation-with-an-extensive-linux-package-collection">Termux: A Powerful Terminal Emulation with an Extensive Linux Package Collection</a>
<ul>
<li class="h3"><a href="#install-termux">Install Termux</a></li>
<li class="h3"><a href="#introduction-of-termux">Introduction of Termux</a></li>
<li class="h3"><a href="#official-wiki-and-community-of-termux">Official Wiki and Community of Termux</a></li>
<li class="h3"><a href="#termux-app-user-interface">Termux App User Interface</a></li>
<li class="h3"><a href="#shortcuts">Shortcuts</a></li>
<li class="h3"><a href="#grant-termux-storage-permission">Grant Termux Storage Permission</a></li>
<li class="h3"><a href="#termux-properties">Termux-Properties</a></li>
<li class="h3"><a href="#termux-pkg-package-management">Termux pkg Package Management</a></li>
<li class="h3"><a href="#text-editor-nano-and-vim">Text Editor: Nano and Vim</a></li>
<li class="h3"><a href="#package-command-error">Package Command Error</a></li>
<li class="h3"><a href="#process-completed-signal-9---press-enter-error">Process completed (signal 9) - press Enter Error</a></li>
</ul>
</li>
<li class="h2"><a href="#termux-graphical-environment-with-vnc-server-and-fluxbox-or-openbox-windows-manager-or-xfce-lxqt-or-mate-desktop-environment">Termux Graphical Environment with VNC Server, and Fluxbox or Openbox Windows Manager or XFCE, LXQt, or MATE Desktop Environment</a>
<ul>
<li class="h3"><a href="#enable-the-x11-repository-of-termux">Enable the X11 Repository of Termux</a></li>
<li class="h3"><a href="#vnc-server-in-termux">VNC Server in Termux</a></li>
<li class="h3"><a href="#fluxbox-in-termux">Fluxbox in Termux</a></li>
<li class="h3"><a href="#openbox-in-termux">Openbox in Termux</a></li>
<li class="h3"><a href="#xfce-in-termux">XFCE in Termux</a></li>
<li class="h3"><a href="#lxqt-in-termux">LXQt in Termux</a></li>
<li class="h3"><a href="#mate-in-termux">MATE in Termux</a></li>
<li class="h3"><a href="#further-readings-and-references-about-termux-graphical-environment">Further Readings and References about Termux Graphical Environment</a></li>
</ul>
</li>
<li class="h2"><a href="#andronix-with-termux-install-linux-distributions-in-termux-on-non-rooted-android-devices">Andronix with Termux: Install Linux Distributions in Termux on Non-Rooted Android Devices</a>
<ul>
<li class="h3"><a href="#optional-but-recommended-install-andronix-app">Optional but Recommended: Install Andronix App</a></li>
<li class="h3"><a href="#introduction-of-andronix-and-proot">Introduction of Andronix and PRoot</a></li>
<li class="h3"><a href="#install-an-os-with-andronix">Install an OS with Andronix</a></li>
<li class="h3"><a href="#uninstall-an-os-not-modded-with-andronix">Uninstall an OS (Not Modded) with Andronix</a></li>
<li class="h3"><a href="#sound-output-from-proot-os">Sound Output from PRoot OS</a></li>
<li class="h3"><a href="#example-debian-with-xfce-desktop-environment">Example: Debian with XFCE Desktop Environment</a></li>
<li class="h3"><a href="#example-debian-with-cli-only">Example: Debian with CLI Only</a></li>
<li class="h3"><a href="#example-uninstall-debian-os-not-modded">Example: Uninstall Debian OS (Not Modded)</a></li>
</ul>
</li>
<li class="h2"><a href="#qemu-system-emulation-with-termux-full-system-emulation-of-multiple-cpu-architectures-and-operating-systems-with-iso-image-method-or-qcow2-cloud-image">QEMU System Emulation with Termux: Full System Emulation of Multiple CPU Architectures and Operating Systems with ISO Image Method or QCOW2 Cloud Image</a>
<ul>
<li class="h3"><a href="#install-qemu">Install QEMU</a></li>
<li class="h3"><a href="#iso-image-method">ISO Image method</a></li>
<li class="h3"><a href="#qcow2-image-method">QCOW2 Image Method</a></li>
<li class="h3"><a href="#window-managers-or-desktop-environments">Window Managers or Desktop Environments</a></li>
<li class="h3"><a href="#login">Login</a></li>
<li class="h3"><a href="#resize-disk-space">Resize Disk Space</a></li>
<li class="h3"><a href="#check-image-info">Check Image Info</a></li>
<li class="h3"><a href="#check-vm-disk">Check VM Disk</a></li>
<li class="h3"><a href="#openssh">OpenSSH</a></li>
<li class="h3"><a href="#further-readings-and-references-about-qemu">Further Readings and References about QEMU</a></li>
</ul>
</li>
<li class="h2"><a href="#avnc-a-vnc-client-for-android">AVNC: A VNC Client for Android</a>
<ul>
<li class="h3"><a href="#install-avnc">Install AVNC</a></li>
<li class="h3"><a href="#connect-a-vnc-server">Connect a VNC Server</a></li>
<li class="h3"><a href="#features-of-avnc">Features of AVNC</a></li>
</ul>
</li>
<li class="h2"><a href="#shizuku-systemui-tuner-and-ashell-use-local-adb-of-android-device-on-terminals-such-as-termux-without-another-device-with-shizuku-leave-developer-options-off-when-doing-so-with-systemui-tuner-and-use-adb-with-features-like-autocomplete-suggestion-with-ashell">Shizuku, SystemUI Tuner, and aShell: Use Local ADB of Android Device on Terminals Such as Termux without Another Device with Shizuku, Leave Developer Options off When Doing So with SystemUI Tuner, and Use ADB with Features like Autocomplete Suggestion with aShell</a>
<ul>
<li class="h3"><a href="#install-shizuku">Install Shizuku</a></li>
<li class="h3"><a href="#introduction-of-shizuku-and-adb">Introduction of Shizuku and ADB</a></li>
<li class="h3"><a href="#connect-shizuku-to-wireless-adb">Connect Shizuku to Wireless ADB</a></li>
<li class="h3"><a href="#use-shizuku-in-a-terminal-application-for-the-first-time-termux-for-example">Use Shizuku in a Terminal Application for the First Time (Termux for Example)</a></li>
<li class="h3"><a href="#install-systemui-tuner">Install SystemUI Tuner</a></li>
<li class="h3"><a href="#to-leave-developer-options-off-when-using-shizuku-to-connect-to-adb">To Leave Developer Options off When Using Shizuku to Connect to ADB</a></li>
<li class="h3"><a href="#reconnect-shizuku-in-case-it-stops-with-systemui-tuner">Reconnect Shizuku in Case it Stops with SystemUI Tuner</a></li>
<li class="h3"><a href="#other-systemui-tuner-usage">Other SystemUI Tuner Usage</a></li>
<li class="h3"><a href="#using-ashell">Using aShell</a></li>
</ul>
</li>
<li class="h2"><a href="#trackercontrol-and-invizible-pro-route-traffic-through-tor-block-dns-over-udp-set-dns-server-and-block-trackers">TrackerControl and InviZible Pro: Route Traffic through Tor, Block DNS over UDP, Set DNS Server, and Block Trackers</a>
<ul>
<li class="h3"><a href="#install-invizible-pro">Install InviZible Pro</a></li>
<li class="h3"><a href="#install-trackercontrol">Install TrackerControl</a></li>
<li class="h3"><a href="#use-trackercontrol-to-block-trackers">Use TrackerControl to Block Trackers</a></li>
<li class="h3"><a href="#configure-trackercontrol-tc-to-be-used-with-invizible-pro">Configure TrackerControl (TC) to be used with InviZible Pro</a></li>
<li class="h3"><a href="#configure-invizible-pro-to-be-used-with-trackercontrol">Configure InviZible Pro to be used with TrackerControl</a></li>
<li class="h3"><a href="#use-tor-but-not-dnscrypr-of-invizible-pro">Use Tor but not DNSCrypr of InviZible Pro</a></li>
<li class="h3"><a href="#use-dnscrypr-but-not-tor-of-invizible-pro">Use DNSCrypr But not Tor of InviZible Pro</a></li>
<li class="h3"><a href="#check-whether-the-tor-route-setup-is-successful">Check Whether the Tor Route Setup Is Successful</a></li>
<li class="h3"><a href="#use-invizible-pro-without-trackercontrol">Use Invizible Pro without TrackerControl</a></li>
</ul>
</li>
<li class="h2"><a href="#tor-browser">Tor Browser</a>
<ul>
<li class="h3"><a href="#install-tor-browser">Install Tor Browser</a></li>
<li class="h3"><a href="#introduction-of-tor">Introduction of Tor</a></li>
<li class="h3"><a href="#noscript-security-suite">NoScript Security Suite</a></li>
</ul>
</li>
<li class="h2"><a href="#openssl-secure-sockets-layer-ssl-and-transport-layer-security-tls-protocols-and-cryptography-library-implementation">OpenSSL: Secure Sockets Layer (SSL) and Transport Layer Security (TLS) Protocols and Cryptography Library Implementation</a>
<ul>
<li class="h3"><a href="#introduction-of-openssl">Introduction of OpenSSL</a></li>
<li class="h3"><a href="#installation-of-openssl-in-termux">Installation of OpenSSL in Termux</a></li>
<li class="h3"><a href="#installation-of-openssl-in-debian">Installation of OpenSSL in Debian</a></li>
<li class="h3"><a href="#rsa-rivest-shamir-adleman">RSA (Rivest-Shamir-Adleman)</a></li>
<li class="h3"><a href="#symmetric-encryption">Symmetric Encryption</a></li>
</ul>
</li>
<li class="h2"><a href="#file-and-directory-management-of-termux-and-linux">File and Directory Management of Termux and Linux</a>
<ul>
<li class="h3"><a href="#cp-copy-files-and-directories">cp (Copy files and directories)</a></li>
<li class="h3"><a href="#mv-move-or-rename-files-and-directories">mv (Move or rename files and directories)</a></li>
<li class="h3"><a href="#rm-remove-files-or-directories">rm (Remove files or directories)</a></li>
<li class="h3"><a href="#mkdir-create-directories">mkdir (Create directories)</a></li>
<li class="h3"><a href="#ls-list-directory-contents">ls (List directory contents)</a></li>
<li class="h3"><a href="#rmdir-remove-empty-directories">rmdir (Remove empty directories)</a></li>
<li class="h3"><a href="#find-search-for-files-and-directories">find (Search for files and directories)</a></li>
<li class="h3"><a href="#touch-create-or-update-file-timestamps">touch (Create or update file timestamps)</a></li>
<li class="h3"><a href="#chmod-change-file-permissions">chmod (Change File Permissions)</a></li>
<li class="h3"><a href="#chown-change-file-ownership">chown (Change File Ownership)</a></li>
<li class="h3"><a href="#df-disk-space-usage">df (Disk Space Usage)</a></li>
<li class="h3"><a href="#du-disk-usage">du (Disk Usage)</a></li>
<li class="h3"><a href="#pwd-check-current-directory">pwd (Check Current Directory)</a></li>
</ul>
</li>
<li class="h2"><a href="#openssh-with-linux-or-termux-and-sftp-server-mount-on-material-files-secure-remote-access">OpenSSH with Linux or Termux and SFTP Server Mount on Material Files: Secure Remote Access</a>
<ul>
<li class="h3"><a href="#introduction-of-ssh-and-openssh">Introduction of SSH and OpenSSH</a></li>
<li class="h3"><a href="#openssh-server-in-linux">OpenSSH Server in Linux</a></li>
<li class="h3"><a href="#openssh-server-in-termux">OpenSSH Server in Termux</a></li>
<li class="h3"><a href="#openssh-client-in-linux-or-termux">OpenSSH Client in Linux or Termux</a></li>
<li class="h3"><a href="#scp-secure-copy-protocol">SCP (Secure Copy Protocol)</a></li>
<li class="h3"><a href="#sftp-server-mound-on-material-files">SFTP Server Mound on Material Files</a></li>
<li class="h3"><a href="#further-readings-and-references-about-openssh-with-linux-and-termux">Further Readings and References about OpenSSH with Linux and Termux</a></li>
</ul>
</li>
<li class="h2"><a href="#droidvnc-ng-vnc-server-app-for-android-that-does-not-require-root-privileges">droidVNC-NG: VNC server app for Android that does not require root privileges</a>
<ul>
<li class="h3"><a href="#install-droidvnc-ng">Install droidVNC-NG</a></li>
<li class="h3"><a href="#features-of-droidvnc-ng">Features of droidVNC-NG</a></li>
</ul>
</li>
<li class="h2"><a href="#sd-maid-se-a-file-management-tool-and-system-cleaner">SD Maid SE: A File Management Tool and System Cleaner</a>
<ul>
<li class="h3"><a href="#install-sd-maid-se">Install SD Maid SE</a></li>
<li class="h3"><a href="#introduction-of-sd-maid-se">Introduction of SD Maid SE</a></li>
<li class="h3"><a href="#use-sd-maid-se-with-shizuku">Use SD Maid SE with Shizuku</a></li>
</ul>
</li>
<li class="h2"><a href="#linux-command-library">Linux Command Library</a>
<ul>
<li class="h3"><a href="#introduction-of-linux-command-library">Introduction of Linux Command Library</a></li>
<li class="h3"><a href="#install-and-use-linux-command-library">Install and Use Linux Command Library</a></li>
</ul>
</li>
<li class="h2"><a href="#linux-and-termux-odds-and-ends">Linux and Termux Odds and Ends</a>
<ul>
<li class="h3"><a href="#apt-termux-debian-etc">apt (Termux, Debian, etc.)</a></li>
<li class="h3"><a href="#commands-for-copy">Commands for Copy</a></li>
</ul>
</li>
<li class="h2"><a href="#promoted-or-related-works-references-and-bibliography">Promoted or Related Works, References, and Bibliography</a>
<ul>
<li class="h3"><a href="#termux-by-fredrik-fornwall--termux--termux">Termux by Fredrik Fornwall / Termux / termux</a></li>
<li class="h3"><a href="#andronix-by-devriz-technologies-llp--andronix-app-andronixapp">Andronix by Devriz Technologies LLP / Andronix App /AndronixApp</a></li>
<li class="h3"><a href="#shizuku-by-xingchen--rikka--rikkaapps">Shizuku by Xingchen & Rikka / RikkaApps</a></li>
<li class="h3"><a href="#systemui-tuner-by-zachary-wander--zacharee">SystemUI Tuner by Zachary Wander / zacharee</a></li>
<li class="h3"><a href="#invizible-pro-by-garmatin-oleksandr--oleksandr-garmatin--gedsh">Invizible Pro by Garmatin Oleksandr / Oleksandr Garmatin / Gedsh</a></li>
<li class="h3"><a href="#trackercontrol--tc-by-trackercontrol--oxford-hcc">TrackerControl / TC by TrackerControl / Oxford HCC</a></li>
<li class="h3"><a href="#netguard-by-marcel-bokhorst--m66b--marcel-bokhorst-faircode-bv">NetGuard by Marcel Bokhorst / M66B / Marcel Bokhorst, FairCode BV</a></li>
<li class="h3"><a href="#dontkillmyapp--dontkillmyapp-make-apps-work-by-urbandroid-team--urbandroid-team--petr-nálevka-urbandroid">DontKillMyApp / DontKillMyApp: Make apps work by Urbandroid Team / urbandroid-team / Petr Nálevka (Urbandroid)</a></li>
<li class="h3"><a href="#ashell-by-sunil-paul-mathew-m--sunilpaulmathew">aShell by Sunil Paul Mathew M. / sunilpaulmathew</a></li>
<li class="h3"><a href="#qemu-by-qemu-project--qemu">QEMU by Qemu Project / QEMU</a></li>
<li class="h3"><a href="#tor-and-tor-browser-by-the-tor-project">Tor and Tor Browser by The Tor Project</a></li>
<li class="h3"><a href="#myip--ipchecking-by-jason-ng--jason5ng32">MyIP / IPCheck.ing by Jason Ng / jason5ng32</a></li>
<li class="h3"><a href="#debian">Debian</a></li>
<li class="h3"><a href="#linux-command-library-by-simon-schubert--simonschubert">Linux Command Library by Simon Schubert / SimonSchubert</a></li>
<li class="h3"><a href="#openssl-by-openssl--openssl">OpenSSL by OpenSSL / openssl</a></li>
<li class="h3"><a href="#anc-by-gaurav-ujwal--gujjwal00">ANC by Gaurav Ujwal / gujjwal00</a></li>
<li class="h3"><a href="#material-files--materialfiles-by-hai-zhang--zhanghai">Material Files / MaterialFiles by Hai Zhang / zhanghai</a></li>
<li class="h3"><a href="#sd-maid-se--sd-maid-2se---system-cleaner--sdmaid-se-by-d4rken--d4rken-org--darken--darken-development">SD Maid SE / SD Maid 2/SE - System Cleaner / sdmaid-se by d4rken / d4rken-org / darken / darken development</a></li>
<li class="h3"><a href="#droidvnc-ng--droidvnc-ng-vnc-server-by-christian-beier--bk138">droidVNC-NG / droidVNC-NG VNC Server by Christian Beier / bk138</a></li>
<li class="h3"><a href="#others">Others</a></li>
</ul>
</li>
<li class="h2"><a href="#contribution">Contribution</a>
<ul>
</ul>
</li>
<li class="h2"><a href="#license">License</a>
<ul>
<li class="h3"><a href="#gnu-free-documentation-license-version-13-gfdl-13">GNU Free Documentation License, Version 1.3 (GFDL 1.3)</a></li>
<li class="h3"><a href="#creative-commons-attribution-sharealike-40-international-license-cc-by-sa-40">Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA 4.0)</a></li>
</ul>
</li>
</ul>
</div>
<hr />
<h2 id="global-note">Global Note</h2>
<p>Many sections of the tutorial mention <strong>Termux</strong> and Linux. Read the tutorial about them in <a href="#termux-a-powerful-terminal-emulation-with-an-extensive-linux-package-collection">Termux: A Powerful Terminal Emulation with an Extensive Linux Package Collection</a>, <a href="#termux-graphical-environment-with-vnc-server-and-fluxbox-or-openbox-window-manager-or-xfce-lxqt-or-mate-desktop-environment">Termux Graphical Environment with VNC Server, and Fluxbox or Openbox Windows Manager or XFCE, LXQt, or MATE Desktop Environment</a>, <a href="#file-and-directory-management-of-termux-and-linux">File and Directory Management of Termux and Linux</a>, <a href="#openssh-with-linux-or-termux-secure-remote-access">OpenSSH with Linux or Termux: Secure Remote Access</a>, <a href="#linux-command-library">Linux Command Library</a>, and <a href="#linux-and-termux-odds-and-ends">Linux and Termux Odds and Ends</a>.</p>
<ul>
<li>Always run <code>apt update</code> before any <code>apt install</code> command in <strong>Termux</strong> or Linux, including virtual machines and emulations.</li>
<li>Add <code>sudo</code> at the beginning of commands in Linux if needed, and remove <code>sudo</code> from the beginning of commands in <strong>Termux</strong>.</li>
<li>Always run <code>pkg update</code> before any <code>pkg install</code> command in <strong>Termux</strong>.</li>
<li>Always type <code>Y</code>, <code>y</code>, <code>Yes</code>, or <code>yes</code> in response to any prompts that request confirmation during command execution.</li>
<li>Most of the software mentioned in this tutorial is open source unless explicitly stated otherwise. However, it is provided WITHOUT ANY WARRANTY, including but not limited to the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</li>
<li>Some sections about Linux usages are included since we also cover methods to build a Linux VM in Android device.</li>
<li>Change the file names, directories, and paths in the commands in the tutorial to the actual ones of yours.</li>
<li>Many sections of the tutorial mention VNC server. You can connect VNC server with a VNC client on any devices (Linux, Windows, macOS, Android, IOS, etc.). Read the tutorial about <strong>AVNC</strong>, a VNC client for Android, in <a href="#avnc-a-vnc-client-for-android">AVNC: A VNC Client for Android</a>.</li>
<li>You may encounter <code>Process completed (signal 9) press Enter</code> error even if you follow the steps in this tutorial. Read the tutorial about how to fix it in <a href="#process-completed-signal-9-press-enter-error">Process completed (signal 9) press Enter Error</a>.</li>
<li>Many sections of the tutorial mention ADB (Android Debug Bridge). You can connect to an Android device's ADB shell from another device via <strong>Android SDK Platform Tools</strong> or from the same device via <strong>Shizuku</strong>. Read the tutorial about <strong>Shizuku</strong> ADB connection in <a href="#shizuku-systemui-tuner-and-ashell-use-local-adb-of-android-device-on-terminals-such-as-termux-without-another-device-with-shizuku-leave-developer-options-off-when-doing-so-with-systemui-tuner-and-use-adb-with-features-like-autocomplete-suggestion-with-ashell">Shizuku, SystemUI Tuner, and aShell: Use Local ADB of Android Device on Terminals Such as Termux without Another Device with Shizuku, Leave Developer Options off When Doing So with SystemUI Tuner, and Use ADB with Features like Autocomplete Suggestion with aShell</a>.</li>
<li>Many sections of the tutorial mention <strong>Tor</strong>. Read the tutorial about it in <a href="#introduction-of-tor">Introduction of Tor</a>.</li>
<li>Uncommenting a line means to remove the comment signs (<code>#</code> for bash) from the beginning of the line.</li>
<li>When the tutorial uses <code>nano</code>, <code>vim</code>, or <code>vi</code> to edit a file, you can use any text editor you want, such <code>nano</code>, <code>vim</code>, and <code>vi</code>.</li>
</ul>
<hr />
<h2 id="termux-a-powerful-terminal-emulation-with-an-extensive-linux-package-collection">Termux: A Powerful Terminal Emulation with an Extensive Linux Package Collection</h2>
<h3 id="install-termux">Install Termux</h3>
<ul>
<li>Download and Install <strong>Termux</strong> from F-Droid: <a href="https://f-droid.org/packages/com.termux/">https://f-droid.org/packages/com.termux/</a>.</li>
<li><strong>Note</strong>: It is recommended to use <strong>Termux</strong>'s F-Droid version and avoid using Google Play version because the latter is depreciated.</li>
<li>Many of the following guides work on or depend on <strong>Termux</strong>.</li>
<li>If you installed termux from Google Play or a very old version, then you will receive package command errors. Google Play builds are deprecated and no longer supported. It is highly recommended that you update to termux-app v0.118.0 or higher as soon as possible for various bug fixes, including a critical world-readable vulnerability reported at <a href="https://termux.github.io/general/2022/02/15/termux-apps-vulnerability-disclosures.html">https://termux.github.io/general/2022/02/15/termux-apps-vulnerability-disclosures.html</a>. It is recommended that you shift to F-Droid or Github releases.</li>
</ul>
<h3 id="introduction-of-termux">Introduction of Termux</h3>
<ul>
<li>Termux is an Android terminal application and Linux environment. Termux combines powerful terminal emulation with an extensive Linux package collection. Some of the commands available in Linux are available in <strong>Termux</strong> too, such as <code>cp</code>, <code>mv</code>, <code>ls</code>, <code>mkdir</code>, <code>apt</code>, and <code>apt-get</code>.</li>
<li>Features:</li>
<li>Enjoy the bash and zsh shells.</li>
<li>Edit files with nano and vim.</li>
<li>Access servers over ssh.</li>
<li>Compile code with gcc and clang.</li>
<li>Use the python console as a pocket calculator.</li>
<li>Check out projects with git and subversion.</li>
<li>Run text-based games with frotz.</li>
<li>and more</li>
<li>At first startup, a small base system is downloaded. Desired packages can then be installed using the apt package manager, which is known from the Debian and Ubuntu Linux distributions. To learn more, access the built-in help by long-pressing anywhere on the terminal and selecting the Help menu option.</li>
<li><code>$PREFIX</code> and <code>~</code> refer to <code>/data/data/com.termux/files/home</code>.</li>
</ul>
<h3 id="official-wiki-and-community-of-termux">Official Wiki and Community of Termux</h3>
<ul>
<li>Wiki: <a href="https://wiki.termux.com/">https://wiki.termux.com/</a>.</li>
<li>Reddit Community: <a href="https://termux.com/community">https://termux.com/community</a>.</li>
</ul>
<h3 id="termux-app-user-interface">Termux App User Interface</h3>
<ul>
<li>Pinch to zoom in or out.</li>
<li>Swipe right from the left edge of the screen to drag out the navigation bar, where you can open <strong>Termux Settings</strong>, start another <strong>NEW SESSION</strong>, switch to another session, or launch <strong>KEYBOARD</strong>.</li>
<li>Long press on screen to:</li>
<li>COPY: Copy</li>
<li>PASTE: Paste</li>
<li>More: More </li>
<li>Select URL: Select URL </li>
<li>Share transcipt: transfer all output of the current session (via Android api) </li>
<li>Reset: Reset </li>
<li>Kill process: Kill the current terminal session process </li>
<li>Style: Style (requires Termux: Styling plugin) </li>
<li>Keep screen on: </li>
<li>Help: Help documentation (Termux Wiki)</li>
</ul>
<h3 id="shortcuts">Shortcuts</h3>
<p>The following are some of the shortcuts commonly used in the terminal, and they also work in Termux. The volume plus button (abbreviated to Volume below) can be used as a special key to generate a specific input, which can be roughly understood as the Fn key on a laptop.</p>
<ul>
<li>Ctrl + A - Move cursor to the start position</li>
<li>Ctrl + E - Move cursor to the end</li>
<li>Ctrl + K - Cut everything from here to the end</li>
<li>Ctrl + U - Cut everything from here to the beginning</li>
<li>Ctrl + W - Cut everything from here to the left</li>
<li>Ctrl + Y - Paste words cut by Ctrl + U, Ctrl + D, or Ctrl + W</li>
<li>Ctrl + L - Equivalent to clear command or clear screen</li>
<li>Ctrl + C - Send Signal Interrupt (SIGINT), which terminate the process</li>
<li>Ctrl + D - Close the terminal</li>
<li>Ctrl + Z - Send Signal Terminal Stop (SIGTSTP), which suspend the current process</li>
<li>Volume + E - Esc</li>
<li>Volume + T - Tab</li>
<li>Volume + 1 - F1</li>
<li>Volume + 2 - F2</li>
<li>Volume + 3 - F3</li>
<li>Volume + 4 - F4</li>
<li>Volume + 5 - F5</li>
<li>Volume + 6 - F6</li>
<li>Volume + 7 - F7</li>
<li>Volume + 8 - F8</li>
<li>Volume + 9 - F9</li>
<li>Volume + 0 - F10</li>
<li>Volume + B / Alt + B - Return a word when using readline</li>
<li>Volume + F / Alt + F - Forward a word when using readline</li>
<li>Volume + X / Alt + X</li>
<li>Volume + W - Up Arrow</li>
<li>Volume + A - Left Arrow</li>
<li>Volume + S - Down Arrow</li>
<li>Volume + D - Right Arrow</li>
<li>Volume + L - | (pipe character)</li>
<li>Volume + H - ~ (tilde character)</li>
<li>Volume + U - _ (underscore character)</li>
<li>Volume + P - Page Up (previous page)</li>
<li>Volume + N - Page Down (next page)</li>
<li>Volume + . / Ctrl + \ - Signal Quit (SIGQUIT)</li>
<li>Volume + V - Show volume control</li>
<li>Volume + Q / Volume + K - Show extra button view</li>
</ul>
<h3 id="grant-termux-storage-permission">Grant Termux Storage Permission</h3>
<p>Run the following command <strong>Termux</strong>:</p>
<pre><code>termux-setup-storage
</code></pre>
<p>and tap <strong>Allow</strong>.<br />
Many processes mentioned in this tutorial need <strong>Termux</strong> to have this permission.</p>
<h3 id="termux-properties">Termux-Properties</h3>
<p>You can edit properties of <strong>Termux</strong> by:</p>
<pre><code>nano ~/.termux/termux-properties
</code></pre>
<p>Properties can be changed including <code>default-working-directory</code>, <code>allow-external-apps</code>, <code>volume-keys</code>, etc.</p>
<h3 id="termux-pkg-package-management">Termux pkg Package Management</h3>
<p>pkg is a tool for managing apt packages.<br />
Usage: <code>pkg [--check-mirror] command [arguments]</code>.</p>
<ul>
<li><code>--check-mirror</code> - forces a re-check of availability of mirrors</li>
<li>Commands:</li>
<li><code>autoclean</code> - Remove all outdated packages from apt cache.</li>
<li><code>clean</code> - Remove all packages from apt cache.</li>
<li><code>files <packages></code> - Show all files installed by packages.</li>
<li><code>install <packages></code> - Install specified packages.</li>
<li><code>list-all</code> - List all packages available in repositories.</li>
<li><code>list-installed</code> - List installed packages.</li>
<li><code>reinstall <packages></code> - Reinstall specified installed packages at the latest version.</li>
<li><code>search <query></code> - Search package by query, for example by name or description part.</li>
<li><code>show <packages></code> - Show basic metadata, such as dependencies.</li>
<li><code>uninstall <packages></code> - Uninstall specified packages. Configuration files will be left intact.</li>
<li><code>upgrade</code> - Upgrade all installed packages to the latest version.</li>
<li><code>update</code> - Update apt databases from configured repositories.</li>
</ul>
<h3 id="text-editor-nano-and-vim">Text Editor: Nano and Vim</h3>
<p>Nano and Vim are both text editors used in Unix-like operating systems. </p>
<h4 id="nano">Nano</h4>
<p>Install:</p>
<pre><code>apt install nano
</code></pre>
<p>Nano is a simple, user-friendly text editor designed for ease of use.</p>
<ul>
<li>Basic Functions: It supports basic editing features like cut, copy, paste, search, and replace.</li>
<li>Command Shortcuts: Common commands are displayed at the bottom of the screen (e.g., ^X to exit).</li>
<li>Usage: Typically used for quick edits or for users who prefer a no-frills experience. You can open a file by typing <code>nano filename</code>.</li>
</ul>
<h4 id="vim">Vim</h4>
<p>Vim (Vi IMproved) is a highly configurable and powerful text editor, which is an enhanced version of the original Vi editor. It is favored by experienced users and programmers.</p>
<ul>
<li>Modes: Vim operates in different modes (Normal, Insert, Visual, etc.), allowing for more complex editing tasks and commands.</li>
<li>Extensibility: Users can customize Vim extensively through configuration files and plugins.</li>
<li>Powerful Editing Capabilities: It has a steep learning curve but offers efficient ways to manipulate text.</li>
<li>Usage: Often used for programming and extensive text manipulation. You can open a file by typing <code>vim filename</code>.</li>
</ul>
<h3 id="package-command-error">Package Command Error</h3>
<p>Termux had to move the primary Termux package repository hosting from Bintray to Fosshost since Bintray shut down on May 1st, 2021 which created problems for users while running package installation and update commands with pkg or apt and their commands would fail with errors similar to the following:</p>
<pre><code>E: The repository 'https://termux.org/packages stable Release' does no longer have a Release file.
N: Metadata integrity can't be verified, repository is disabled now.
N: Possible cause: repository is under maintenance or down (wrong sources.list URL?).
</code></pre>
<pre><code>E: The repository 'https://dl.bintray.com/grimler/game-packages-24 games Release' does not have a Release file.
N: Metadata integrity can't be verified, repository is disabled now.
N: Possible cause: repository is under maintenance or down (wrong sources.list URL?).
</code></pre>
<pre><code>E: The repository 'https://science.termux-mirror.ml science Release' does not have a Release file.
N: Metadata integrity can't be verified, repository is disabled now.
N: Possible cause: repository is under maintenance or down (wrong sources.list URL?).
</code></pre>
<h4 id="command-solution">Command Solution</h4>
<ul>
<li>Run <code>termux-change-repo</code> command.</li>
<li>Select one or more repositories for which you want to change mirror by tapping "space" and navigating over list by up/down arrow keys. Tap enter to confirm the choice.</li>
<li>Pick a mirror, it is recommended to begin with mirror hosted by Grimler. Same as previously, navigate over list by arrow keys, pick mirror by space key and confirm choice by pressing "enter".</li>
<li>If you have installed other package repositories, like x11 and root, then you must select and change those mirrors as well. You can check your current mirrors by running the <code>termux-info</code> command. Note that the science and game repos have been merged into main repo and should be removed with apt remove science-repo game-repo if you have them installed.</li>
<li>If you receive errors like: </li>
</ul>
<pre><code>E: Repository 'https://grimler.se/termux-root-packages-24 root InRelease' changed its 'Origin' value from 'Bintray' to 'termux-root-packages-24 root'
E: Repository 'https://grimler.se/termux-root-packages-24 root InRelease' changed its 'Label' value from 'Bintray' to 'termux-root-packages-24 root'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
Do you want to accept these changes and continue updating from this repository? [y/N]
</code></pre>
<p><br />
, then accept them by typing <code>y</code>.</p>
<ul>
<li>After changing the mirror, it is highly advisable to run <code>pkg upgrade</code> command to update all packages to the latest available versions, or at least update <code>termux-tools</code> package with <code>pkg install termux-tools</code> command. Also make sure your device has internet connectivity and the repository URLs are accessible in a browser.</li>
</ul>
<h4 id="manual-solution">Manual Solution</h4>
<ul>
<li>If for some reason <code>termux-change-repo</code> is not available, you can manually edit <code>sources.list</code> to replace the main url with a value obtained from <a href="https://github.com/termux/termux-packages/wiki/Mirrors">Termux Mirrors List</a>.</li>
<li>Run <code>nano $PREFIX/etc/apt/sources.list</code> to edit it.</li>
<li>This will not change the urls of other package repositories, to change those run <code>pkg install termux-tools</code> afterwards and use <code>termux-change-repo</code> or manually edit their files under <code>$PREFIX/etc/apt/sources.list.d</code> directory.</li>
<li>Changing the mirror may specially be needed if a user is still using bintray as the mirror or <code>pkg upgrade</code> command hasn't been run in a while to update termux package related scripts.</li>
</ul>
<h4 id="further-readings-and-references-about-package-command-error">Further Readings and References about Package Command Error</h4>
<ul>
<li><a href="https://github.com/termux/termux-packages/wiki/Package-Management">https://github.com/termux/termux-packages/wiki/Package-Management</a>.</li>
<li><a href="https://github.com/termux/termux-packages/issues/6726">https://github.com/termux/termux-packages/issues/6726</a>.</li>
<li><a href="https://github.com/termux/termux-packages/issues/6455">https://github.com/termux/termux-packages/issues/6455</a>.</li>
<li><a href="https://github.com/termux/termux-packages/wiki/Mirrors">https://github.com/termux/termux-packages/wiki/Mirrors</a>.</li>
<li><a href="https://github.com/cyb0rgdoll/freshtermux">https://github.com/cyb0rgdoll/freshtermux</a>.</li>
</ul>
<h3 id="process-completed-signal-9---press-enter-error">Process completed (signal 9) - press Enter Error</h3>
<p>Some Android OS will kill any (phantom) processes greater than 32 (limit is for all apps combined) and also kill any processes using excessive CPU. You may get <code>Process completed (signal 9) - press Enter</code> message in the terminal without actually exiting the shell process yourself. Here is the guide of how to turn it off.</p>
<h4 id="fix-for-stock-android-12l-and-beyond">Fix for Stock Android 12L and beyond</h4>
<ul>
<li>In phone's <strong>Settings</strong> or something similar, go to <strong>About Phone > Software Information</strong> or something similar, and tap the <strong>Version Number</strong> seven times to enable <strong>Developer Options</strong>. Some phones may have different methods to enable <strong>Developer Options</strong>.</li>
<li>Find the section named <strong>Feature Flags</strong>, enter via clicking it.</li>
<li>Find the switch to toggle off <strong>settings<em>enable</em>monitor<em>phantom</em>procs</strong> to disable phantom process killer.</li>
<li>To enable phantom process killer again, just toggle on the switch.</li>
</ul>
<h4 id="fix-for-qems-like-oneui-miui-samsung-etc-and-other-non-stock-android-12l-and-beyond">Fix for QEMs like OneUI, MiUi, Samsung, etc. and other non-stock Android 12L and beyond</h4>
<ul>
<li>Connect to Android Debug Bridge (ADB) of your Android device from Linux, Windows, MacOS, etc. or via <strong>Shizuku</strong>.</li>
<li>Type <code>adb shell</code> to enter <code>adb shell</code>.</li>
<li>Run the following commands inside <code>adb shell</code>: </li>
</ul>
<pre><code>/system/bin/device_config set_sync_disabled_for_tests persistent
/system/bin/device_config put activity_manager max_phantom_processes 2147483647
settings put global settings_enable_monitor_phantom_procs false
</code></pre>
<ul>
<li>To check the status of whether phantom process killer is disabled, run the following commands inside <code>adb shell</code>: </li>
</ul>
<pre><code>/system/bin/dumpsys activity settings | grep max_phantom_processes
/system/bin/device_config get activity_manager max_phantom_processes
</code></pre>
<ul>
<li>To enable phantom process killer again, run the following commands inside <code>adb shell</code>: </li>
</ul>
<pre><code>/system/bin/device_config set_sync_disabled_for_tests none; /system/bin/device_config put activity_manager max_phantom_processes 32
settings put global settings_enable_monitor_phantom_procs true
</code></pre>
<h4 id="further-readings-and-references-about-process-completed-signal-9---press-enter-error">Further Readings and References about Process completed (signal 9) - press Enter error</h4>
<ul>
<li><a href="https://github.com/termux/termux-app/issues/2366#issuecomment-1237468220">https://github.com/termux/termux-app/issues/2366#issuecomment-1237468220</a>.</li>
<li><a href="https://github.com/termux/termux-app/issues/2366">https://github.com/termux/termux-app/issues/2366</a>.</li>
<li><a href="https://docs.andronix.app/android-12/andronix-on-android-12-and-beyond">https://docs.andronix.app/android-12/andronix-on-android-12-and-beyond</a>.</li>
<li><a href="https://www.xda-developers.com/android-13-phantom-process-toggle/">https://www.xda-developers.com/android-13-phantom-process-toggle/</a>.</li>
<li><a href="https://youtu.be/mjXSh3yq-I0">https://youtu.be/mjXSh3yq-I0</a>.</li>
<li><a href="https://ivonblog.com/en-us/posts/fix-termux-signal9-error/">https://ivonblog.com/en-us/posts/fix-termux-signal9-error/</a>.</li>
<li><a href="https://kskroyal.com/disable-phantom-process-killer-in-android-12-13/#google%5Fvignette">https://kskroyal.com/disable-phantom-process-killer-in-android-12-13/#google%5Fvignette</a>.</li>
<li><a href="https://issuetracker.google.com/u/1/issues/205156966">https://issuetracker.google.com/u/1/issues/205156966</a>.</li>
<li><a href="https://github.com/agnostic-apollo/Android-Docs/blob/master/en%2Fdocs%2Fapps%2Fprocesses%2Fphantom-cached-and-empty-processes.md">https://github.com/agnostic-apollo/Android-Docs/blob/master/en%2Fdocs%2Fapps%2Fprocesses%2Fphantom-cached-and-empty-processes.md</a>.</li>
</ul>
<hr />
<h2 id="termux-graphical-environment-with-vnc-server-and-fluxbox-or-openbox-windows-manager-or-xfce-lxqt-or-mate-desktop-environment">Termux Graphical Environment with VNC Server, and Fluxbox or Openbox Windows Manager or XFCE, LXQt, or MATE Desktop Environment</h2>
<h3 id="enable-the-x11-repository-of-termux">Enable the X11 Repository of Termux</h3>
<p>X11 packages are available in a separate APT repository. You can enable it by running the following command:</p>
<pre><code>pkg install x11-repo
</code></pre>
<p>It will automatically add appropriate sources.list file and PGP key.<br />
You can disable this repository by running the following command:</p>
<pre><code>pkg uninstall x11-repo
</code></pre>
<h3 id="vnc-server-in-termux">VNC Server in Termux</h3>
<p>In this section, you will learn how to set up a VNC server in <strong>Termux</strong> for graphical output.</p>
<h4 id="install-tigervnc">Install TigerVNC</h4>
<pre><code>pkg install tigervnc
</code></pre>
<h4 id="start-a-vnc-server">Start a VNC Server</h4>
<p>Not specifying port:</p>
<pre><code>vncserver -localhost
</code></pre>
<p>VNC server will start on unused port with the smallest positive integer number, like <code>localhost:1</code> if port 1 is not used.<br />
Specifying port:</p>
<pre><code>vncserver :1
</code></pre>
<p>VNC server will start on the port you specified.<br />
Specifying resolution:</p>
<pre><code>vncserver :1 -geometry 1920x1080
</code></pre>
<p>You can specify resolution with <code>-geometry</code>.<br />
At first time, you will be prompted for setting up passwords:</p>
<pre><code>You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
</code></pre>
<p>Note that passwords are not visible when you are typing them and maximal password length is 8 characters.<br />
If everything is okay, you will see this message:</p>
<pre><code>New 'localhost:1 ()' desktop is localhost:1
Creating default startup script /data/data/com.termux/files/home/.vnc/xstartup
Creating default config /data/data/com.termux/files/home/.vnc/config
Starting applications specified in /data/data/com.termux/files/home/.vnc/xstartup
Log file is /data/data/com.termux/files/home/.vnc/localhost:1.log
</code></pre>
<p>It means that the server is available on display <code>localhost:1</code>.<br />
To make programs do graphical output to the display <code>localhost:1</code>, set environment variable like shown here (yes, without specifying <code>localhost</code>):</p>
<pre><code>export DISPLAY=":1"
</code></pre>
<p>You may even put this variable to your bashrc or profile so you don't have to always set it manually unless display address will be changed.<br />
Connect to the VNC server from a VNC viewer to view the output, you will not see anything except your mouse pointer if no windows manager or desktop environment is started.</p>
<h4 id="kill-all-vnc-servers">Kill All VNC Servers</h4>
<pre><code>vncserver -kill localhost:1
</code></pre>
<p>Change the port with the actual port your VNC server started on.</p>
<h3 id="fluxbox-in-termux">Fluxbox in Termux</h3>
<h4 id="install-fluxbox">Install Fluxbox</h4>
<pre><code>pkg install fluxbox
</code></pre>
<h4 id="setup">Setup</h4>
<pre><code>nano ~/.vnc/xstartup
</code></pre>
<p>Copy below command and paste to it:</p>
<pre><code>#!/data/data/com.termux/files/usr/bin/sh
## Fluxbox desktop.
# Generate menu.
fluxbox-generate_menu
# Start fluxbox.
fluxbox &
</code></pre>
<p>Fluxbox will start automatically on VNC server startup.</p>
<h3 id="openbox-in-termux">Openbox in Termux</h3>
<h4 id="install-openbox">Install Openbox</h4>
<pre><code>pkg install openbox pypanel xorg-xsetroot
</code></pre>
<h4 id="setup-1">Setup</h4>
<pre><code>nano ~/.vnc/xstartup
</code></pre>
<p>Copy below command and paste to it:</p>
<pre><code>#!/data/data/com.termux/files/usr/bin/sh
# Start Openbox.
openbox-session &
</code></pre>
<p>Don't put any else command to the file <code>~/.vnc/xstartup</code> but only the lines shown above since Openbox has its own autostart script, which is located at <code>${PREFIX}/etc/xdg/openbox/autostart</code>.</p>
<pre><code>nano ~/etc/xdg/openbox/autostart
</code></pre>
<p>Copy below command and paste to it:</p>
<pre><code># Make background gray.
xsetroot -solid gray
# Launch PyPanel.
pypanel &
</code></pre>
<p>Openbox will start automatically on VNC server startup.</p>
<h3 id="xfce-in-termux">XFCE in Termux</h3>
<h4 id="install-xfce">Install XFCE</h4>
<pre><code>pkg install xfce4
</code></pre>
<h4 id="setup-2">Setup</h4>
<pre><code>nano ~/.vnc/xstartup
</code></pre>
<p>Copy below command and paste to it:</p>
<pre><code>#!/data/data/com.termux/files/usr/bin/sh
xfce4-session &
</code></pre>
<p>Don't put any other command to the file <code>~/.vnc/xstartup</code> but only the lines shown above.<br />
XFCE will start automatically on VNC server startup.</p>
<h4 id="additional-recommended-packages-for-installation">Additional Recommended Packages for Installation</h4>
<ul>
<li><code>netsurf</code> - Simple graphical web browser. Javascript is not supported.</li>
<li><code>xfce4-terminal</code> - Terminal emulator for XFCE. It is not included as part of XFCE installation to allow use of <code>aterm</code> or <code>st</code>.</li>
</ul>
<h3 id="lxqt-in-termux">LXQt in Termux</h3>
<h4 id="install-lxqt">Install LXQt</h4>
<pre><code>pkg install lxqt
</code></pre>
<h4 id="setup-3">Setup</h4>
<pre><code>nano ~/.vnc/xstartup
</code></pre>
<p>Copy below command and paste to it:</p>
<pre><code>#!/data/data/com.termux/files/usr/bin/sh
startlxqt &
</code></pre>
<p>Don't put any other command to the file <code>~/.vnc/xstartup</code> but only the lines shown above.<br />
LXQt will start automatically on VNC server startup.</p>
<h4 id="additional-recommended-packages-for-installation-1">Additional Recommended Packages for Installation</h4>
<ul>
<li><code>otter-browser</code> - Free and open source web browser that aims to recreate aspects of Opera 12.x</li>
<li><code>qterminal</code> - Terminal emulator for LXQt. It is not included as part of LXQt installation to allow use of <code>aterm</code> or <code>st</code>.</li>
</ul>
<h3 id="mate-in-termux">MATE in Termux</h3>
<h4 id="install-mate">Install MATE</h4>
<pre><code>pkg install mate-* marco
</code></pre>
<h4 id="setup-4">Setup</h4>
<pre><code>nano ~/.vnc/xstartup
</code></pre>
<p>Copy below command and paste to it:</p>
<pre><code>#!/data/data/com.termux/files/usr/bin/sh
mate-session &
</code></pre>
<p>Don't put any other command to the file <code>~/.vnc/xstartup</code> but only the lines shown above.<br />
MATE will start automatically on VNC server startup.</p>
<h4 id="additional-recommended-packages-for-installation-2">Additional Recommended Packages for Installation</h4>
<ul>
<li><code>netsurf</code> - Simple graphical web browser. Javascript is not supported.</li>
<li><code>mate-terminal</code> - Terminal emulator for MATE. It is not included as part of MATE installation to allow use of <code>aterm</code> or <code>st</code>.</li>
</ul>
<h3 id="further-readings-and-references-about-termux-graphical-environment">Further Readings and References about Termux Graphical Environment</h3>
<ul>
<li><a href="https://wiki.termux.com/wiki/Graphical%5FEnvironment">https://wiki.termux.com/wiki/Graphical%5FEnvironment</a>.</li>
<li><a href="https://github.com/termux/x11-packages">https://github.com/termux/x11-packages</a>.</li>
</ul>
<hr />
<h2 id="andronix-with-termux-install-linux-distributions-in-termux-on-non-rooted-android-devices">Andronix with Termux: Install Linux Distributions in Termux on Non-Rooted Android Devices</h2>
<h3 id="optional-but-recommended-install-andronix-app">Optional but Recommended: Install Andronix App</h3>
<p>Install Andronix from Google Play: <a href="https://play.google.com/store/apps/details?id=studio.com.techriz.andronix">https://play.google.com/store/apps/details?id=studio.com.techriz.andronix</a>.</p>
<h3 id="introduction-of-andronix-and-proot">Introduction of Andronix and PRoot</h3>
<ul>
<li><strong>Andronix</strong> is an app that lets you install Linux distributions like Ubuntu, Debian, Manjaro etc. in <strong>Termux</strong> on non-rooted Android devices with <strong>PRoot</strong>. <strong>Andronix</strong> provide paid, close-source modded OS too, which won't be mentioned in this tutorial.</li>
<li><strong>PRoot</strong> is a user-space implementation of chroot, mount --bind, and binfmt_misc. This means that users don't need any privileges or setup to do things like using an arbitrary directory as the new root file system, making files accessible somewhere else in the file system hierarchy, or executing programs built for another CPU architecture transparently through QEMU user-mode.</li>
<li>chroot is an operation on Unix and Unix-like operating systems that changes the apparent root directory for the current running process and its children. A program that is run in such a modified environment cannot name (and therefore normally cannot access) files outside the designated directory tree.</li>
<li>Further readings and references:</li>
<li><a href="https://en.m.wikipedia.org/wiki/Chroot">https://en.m.wikipedia.org/wiki/Chroot</a>.</li>
<li><a href="https://github.com/AndronixApp/AndronixOrigin">https://github.com/AndronixApp/AndronixOrigin</a>.</li>
</ul>
<h3 id="install-an-os-with-andronix">Install an OS with Andronix</h3>
<ul>
<li>Open <strong>Andronix</strong> app.</li>
<li>Click the <strong>Linux Distribution</strong> card.</li>
<li>Click on the Linux distribution you want to install. It is recommended to get started with Ubuntu or Debian if you are overwhelmed by the options.</li>
<li>Click on the user interface you want. Graphical User Interface or GUI is the visual interface that you interact with to do things in your Linux distribution. Command Line Interface or CLI is the text-based interface that you interact with to execute commands and perform tasks in your Linux distribution.</li>
<li>Desktop Environment: You can choose a Desktop Environment if you would like to use your mouse as well as your keyboard, or you've little or no experience with Linux.</li>
<li>Window Manager: You can choose a Window Manager if you only want to use your keyboard to manage Windows and other OS-level tasks. These are pretty light and fast, but do require some skill before getting productive.</li>
<li>CLI Only: If you don't want a Graphical User-interface, you can go ahead with the Command Line Interface. You'll have a terminal, which is enough if you know what you're doing in your session.</li>
<li><strong>Andronix</strong> will automatically copy the command to your clipboard.</li>
<li>Paste and run in <strong>Termux</strong>.</li>
</ul>
<h3 id="uninstall-an-os-not-modded-with-andronix">Uninstall an OS (Not Modded) with Andronix</h3>
<ul>
<li>Open <strong>Andronix</strong> app.</li>
<li>Click the <strong>Linux Distribution</strong> card.</li>
<li>Long press on the Linux distribution you want to uninstall.</li>
<li>Select<strong>Uninstall</strong>.</li>
<li><strong>Andronix</strong> will automatically copy the command to your clipboard.</li>
<li>Paste and run in <strong>Termux</strong> (Not inside Linux).</li>
</ul>
<h3 id="sound-output-from-proot-os">Sound Output from PRoot OS</h3>
<h4 id="install-and-setup-sound-output-from-proot-os">Install and Setup Sound Output from PRoot OS</h4>
<p>Run the following command in Termux (Not inside Linux):</p>
<pre><code>pkg install wget && wget https://andronixos.sfo2.cdn.digitaloceanspaces.com/OS-Files/setup-audio.sh && chmod +x setup-audio.sh && ./setup-audio.sh
</code></pre>
<h4 id="start-pulseaudio-server">Start PulseAudio Server</h4>
<pre><code>pulseaudio --start
</code></pre>
<h3 id="example-debian-with-xfce-desktop-environment">Example: Debian with XFCE Desktop Environment</h3>
<h4 id="install-debian-with-xfce">Install Debian with XFCE</h4>
<pre><code>pkg update -y && pkg install wget curl proot tar -y && wget https://raw.githubusercontent.com/AndronixApp/AndronixOrigin/master/Installer/Debian/debian-xfce.sh -O debian-xfce.sh && chmod +x debian-xfce.sh && bash debian-xfce.sh
</code></pre>
<p>The file directory of the Debian OS will be <code>debian-fs</code>. You can read, write, and execute files in it both in <strong>Termux</strong> or in the Debian OS.</p>
<h4 id="turn-on-the-os-cli">Turn on the OS (CLI)</h4>
<pre><code>./start-debian.sh
</code></pre>
<h4 id="vnc-server">VNC Server</h4>
<ul>
<li>Run <code>vncserver-start</code> in the OS to start the VNC server (default on port 1).</li>
<li>Get a VNC viewer.</li>
<li>Add a new connection with address <code>localhost:1</code>.</li>
<li>View GUI of the OS from VNC viewer.</li>
<li>Run <code>vncserver-start</code> in the OS to kill all VNC servers.</li>
</ul>
<h3 id="example-debian-with-cli-only">Example: Debian with CLI Only</h3>
<h4 id="install-debian">Install Debian</h4>
<pre><code>pkg update -y && pkg install wget curl proot tar -y && wget https://raw.githubusercontent.com/AndronixApp/AndronixOrigin/master/Installer/Debian/debian.sh -O debian.sh && chmod +x debian.sh && bash debian.sh
</code></pre>
<p>The file directory of the Debian OS will be <code>debian-fs</code>. You can read, write, and execute files in it both in <strong>Termux</strong> or in the Debian OS.</p>
<h4 id="turn-on-the-os-cli-1">Turn on the OS (CLI)</h4>
<pre><code>./start-debian.sh
</code></pre>
<h3 id="example-uninstall-debian-os-not-modded">Example: Uninstall Debian OS (Not Modded)</h3>
<pre><code>wget https://raw.githubusercontent.com/AndronixApp/AndronixOrigin/master/Uninstall/Debian/UNI-debian.sh && chmod +x UNI-debian.sh && bash UNI-debian.sh
</code></pre>
<hr />
<h2 id="qemu-system-emulation-with-termux-full-system-emulation-of-multiple-cpu-architectures-and-operating-systems-with-iso-image-method-or-qcow2-cloud-image">QEMU System Emulation with Termux: Full System Emulation of Multiple CPU Architectures and Operating Systems with ISO Image Method or QCOW2 Cloud Image</h2>
<h3 id="install-qemu">Install QEMU</h3>
<p>Run the following command in <strong>Termux</strong>:</p>
<pre><code>pkg install qemu-system-x86_64 qemu-utils qemu-common openssl
</code></pre>
<h3 id="iso-image-method">ISO Image method</h3>
<p>This method is more customizable but may encounter some issues like GRUB menu not showing on CLI or stuck at 79% or 83% of the installation of the base system. Use qcow2 cloud image method if you don't prepare to solve these problems. This tutorial assumes no such problems are encounter.<br />
It is recommended to get started with Ubuntu or Debian if you are overwhelmed by the options.</p>
<h4 id="prepare-the-iso-image">Prepare the ISO Image</h4>
<p>Prepare the ISO image. Here takes Debian AMD64 for example. Change the URL to the download link of the ISO image you want or <code>cp</code> or <code>mv</code> the ISO image you want to the directory you want.</p>
<pre><code>wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.7.0-amd64-netinst.iso
</code></pre>
<h4 id="create-a-virtual-disk-image-where-the-operating-system-will-be-installed">Create a Virtual Disk Image Where the Operating System Will Be Installed</h4>
<pre><code>qemu-img create -f qcow2 debian_amd64.qcow2 20G
</code></pre>
<p>Change the <code>debian_amd64.qcow2</code> to the file name you want. <code>20G</code> indicates 20GB disk image. You can adjust the size as needed.</p>
<h4 id="install-vm-with-cli">Install VM with CLI</h4>
<pre><code>nano install-qemu.sh
</code></pre>
<p>Copy below command and paste to it:</p>
<pre><code>qemu-system-x86_64 -machine q35
-drive if=pflash,format=raw,read-only=on,file=$PREFIX/share/qemu/edk2-x86_64-code.fd
-m 2G
-accel tcg,thread=multi
-smp sockets=1,cores=4,threads=1
-cpu qemu64
-vga std
-netdev user,id=n1,hostfwd=tcp::2222-:22 -device virtio-net,netdev=n1
-device intel-hda
-device qemu-xhci
-boot d
-boot menu=on
-drive file=debian_amd64.qcow2
-nographic
-serial mon:stdio
-display none
-cdrom ~/debian-12.7.0-amd64-DVD-1.iso
</code></pre>
<p>Adjust <code>hostfwd</code> as needed. In the above command, <code>tcp</code> specifies the TCP protocol for the forwarding rule, <code>::2222</code> indicates that on the host machine, TCP connections to port 2222 will be forwarded, and <code>-:22</code> indicates that these connections will be forwarded to port 22 (the default SSH port) on the guest virtual machine. Change the <code>debian_amd64.qcow2</code> to the real file name. Change the <code>debian-12.7.0-amd64-netinst.iso</code> to the real ISO path. <code>20G</code> indicates 20GB disk image. You can adjust the size as needed.<br />
Make it executable:</p>
<pre><code>chmod +x install-qemu.sh
</code></pre>
<p>Run it:</p>
<pre><code>./install-qemu.sh
</code></pre>
<p>Follow the screen guide to install.</p>
<h4 id="install-vm-with-gui">Install VM with GUI</h4>
<pre><code>nano install-qemu.sh
</code></pre>
<p>Copy below command and paste to it:</p>
<pre><code>qemu-system-x86_64 -machine q35
-drive if=pflash,format=raw,read-only=on,file=$PREFIX/share/qemu/edk2-x86_64-code.fd
-m 2G
-accel tcg,thread=multi
-smp sockets=1,cores=4,threads=1
-cpu qemu64
-vga std
-netdev user,id=n1,hostfwd=tcp::2222-:22 -device virtio-net,netdev=n1
-device intel-hda
-device usb-tablet
-boot menu=on
-drive file=debian_amd64.qcow2
--vnc :0
-cdrom ~/debian-12.7.0-amd64-netinst.iso
</code></pre>
<p>Adjust <code>hostfwd</code> as needed. Change the <code>debian_amd64.qcow2</code> to the real file name. Change the <code>debian-12.7.0-amd64-netinst.iso</code> to the real ISO path. <code>20G</code> indicates 20GB disk image. You can adjust the size as needed. Change the numerical value after <code>--vnc :</code> to the port you want to use.<br />
Make it executable:</p>
<pre><code>chmod +x install-qemu.sh
</code></pre>
<p>Run it:</p>
<pre><code>./install-qemu.sh
</code></pre>
<p>Connect to the VNC server from a VNC viewer and follow the screen guide on the VNC viewer to install.</p>
<h4 id="boot-vm-with-cli">Boot VM with CLI</h4>
<pre><code>nano qemu-cli.sh
</code></pre>
<p>Copy below command and paste to it:</p>
<pre><code>qemu-system-x86_64 -machine q35
-drive if=pflash,format=raw,read-only=on,file=$PREFIX/share/qemu/edk2-x86_64-code.fd
-m 2G
-accel tcg,thread=multi
-smp sockets=1,cores=4,threads=1
-cpu qemu64
-vga std
-netdev user,id=n1,hostfwd=tcp::2222-:22 -device virtio-net,netdev=n1
-device intel-hda
-device usb-tablet
-boot menu=on
-drive file=debian_amd64.qcow2
-serial mon:stdio
-display none
</code></pre>
<p>Adjust <code>hostfwd</code> as needed. Change the <code>debian_amd64.qcow2</code> to the real file name. <code>20G</code> indicates 20GB disk image. You can adjust the size as needed.<br />
Make it executable:</p>
<pre><code>chmod +x qemu-cli.sh
</code></pre>
<p>Run it to boot the VM with CLI:</p>
<pre><code>./qemu-cli.sh
</code></pre>
<h4 id="boot-with-gui">Boot with GUI</h4>
<pre><code>nano qemu-gui.sh
</code></pre>
<p>Copy below command and paste to it:</p>
<pre><code>qemu-system-x86_64 -machine q35
-drive if=pflash,format=raw,read-only=on,file=$PREFIX/share/qemu/edk2-x86_64-code.fd
-m 2G
-accel tcg,thread=multi
-smp sockets=1,cores=4,threads=1
-cpu qemu64
-vga std
-netdev user,id=n1,hostfwd=tcp::2222-:22 -device virtio-net,netdev=n1
-device intel-hda
-device usb-tablet
-boot menu=on
-drive file=debian_amd64.qcow2
--vnc :0
</code></pre>
<p>Adjust <code>hostfwd</code> as needed. Change the <code>debian_amd64.qcow2</code> to the real file name. <code>20G</code> indicates 20GB disk image. You can adjust the size as needed. Change the numerical value after <code>--vnc :</code> to the port you want to use.<br />
Make it executable:</p>
<pre><code>chmod +x qemu-cli.sh
</code></pre>
<p>Run it to boot the VM with GUI:</p>
<pre><code>./qemu-gui.sh
</code></pre>
<p>Connect to the VNC server from a VNC viewer.</p>
<h3 id="qcow2-image-method">QCOW2 Image Method</h3>
<p>This method is more easy but less customizable.<br />
It is recommended to get started with Ubuntu or Debian if you are overwhelmed by the options.</p>
<h4 id="prepare-the-qcow2-image">Prepare the QCOW2 Image</h4>
<p>Prepare the qcow2 image. Here takes Debian AMD64 qcow2 cloud image for example. Change the URL to the download link of the qcow2 image you want or <code>cp</code> or <code>mv</code> the qcow2 image you want to the directory you want.</p>
<pre><code>wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-nocloud-amd64.qcow2
</code></pre>
<h4 id="boot-with-cli">Boot with CLI</h4>
<pre><code>nano qemu-cli.sh
</code></pre>
<p>Copy below command and paste to it:</p>
<pre><code>qemu-system-x86_64 -m 2G
-drive file=debian-12-nocloud-amd64.qcow2,format=qcow2
-nographic
-serial mon:stdio
-display none
-netdev user,id=net0,hostfwd=tcp::2222-:22
-device e1000,netdev=net0
</code></pre>
<p>Change the <code>debian-12-nocloud-amd64.qcow2</code> to the real file name. <code>20G</code> indicates 20GB disk image. You can adjust the size as needed. Adjust <code>hostfwd</code> as needed.<br />
Make it executable:</p>
<pre><code>chmod +x qemu-cli.sh
</code></pre>
<p>Run it to boot the VM with CLI:</p>
<pre><code>./qemu-cli.sh
</code></pre>
<h4 id="boot-with-gui-1">Boot with GUI</h4>
<pre><code>nano qemu-gui.sh
</code></pre>
<p>Copy below command and paste to it:</p>
<pre><code>qemu-system-x86_64 -m 2G
-drive file=debian-12-nocloud-amd64.qcow2,format=qcow2
-vnc :0
-netdev user,id=net0,hostfwd=tcp::2222-:22
-device e1000,netdev=net0
</code></pre>
<p>Change <code>debian-12-nocloud-amd64.qcow2</code> to the real file name. <code>20G</code> indicates 20GB disk image. You can adjust the size as needed. Change the numerical value after <code>--vnc :</code> to the port you want to use. Adjust <code>hostfwd</code> as needed.<br />
Make it executable:</p>
<pre><code>chmod +x qemu-cli.sh
</code></pre>
<p>Run it to boot the VM with GUI:</p>
<pre><code>./qemu-gui.sh
</code></pre>
<p>Connect to the VNC server from a VNC viewer.</p>
<h3 id="window-managers-or-desktop-environments">Window Managers or Desktop Environments</h3>
<p>You can install a window manager such as Fluxbox or Openbox, or desktop environment such as XFCE, LXQt, or MATE for your GUI.</p>
<h3 id="login">Login</h3>
<p>When you see something similar to the below in the VM:</p>
<pre><code>Debian GNU/Linux 12 localhost ttyS0
localhost login:
</code></pre>
<p>In the first time, type <code>root</code> and you will be logged in without a password.<br />
You can set password latter by:</p>
<pre><code>passwd
</code></pre>
<p>The password should be at least 4 letters long.<br />
If you don't want to set a password, just type <code>root</code> and you will be logged in without a password every time.</p>
<h3 id="resize-disk-space">Resize Disk Space</h3>
<p>In <strong>Termux</strong> (outside VM), run:</p>
<pre><code>qemu-img resize debian-12-nocloud-amd64.qcow2 +30G
</code></pre>
<p>Change <code>debian-12-nocloud-amd64.qcow2</code> to the real file name. <code>+30G</code> indicates increasing 30GB disk image. You can adjust the size as needed.<br />
Inside VM, run:</p>
<pre><code>sudo apt update
sudo apt install parted e2fsprogs
sudo parted /dev/sda
print
fix
resizepart 1 100%
quit
sudo resize2fs /dev/sda1
</code></pre>
<h3 id="check-image-info">Check Image Info</h3>
<p>In <strong>Termux</strong> (outside VM), run:</p>
<pre><code>qemu-img info debian-12-nocloud-amd64.qcow2
</code></pre>
<p>Change <code>debian-12-nocloud-amd64.qcow2</code> to the real file name. </p>
<h3 id="check-vm-disk">Check VM Disk</h3>
<p>Inside VM, run:</p>
<pre><code>df -h
</code></pre>
<p>and for partition, run:</p>
<pre><code>lsblk
</code></pre>
<h3 id="openssh">OpenSSH</h3>
<p>You can start a SSH server in QEMU VM and start a client in another <strong>Termux</strong> session with <code>openssh</code>.</p>
<h3 id="further-readings-and-references-about-qemu">Further Readings and References about QEMU</h3>
<ul>
<li><a href="https://ivonblog.com/posts/termux-qemu-system-linux/">https://ivonblog.com/posts/termux-qemu-system-linux/</a></li>
<li><a href="https://www.qemu.org/docs/master/index.html">https://www.qemu.org/docs/master/index.html</a></li>
<li><a href="https://www.debian.org/distrib/index.en.html">https://www.debian.org/distrib/index.en.html</a></li>
<li><a href="https://chatgpt.com/">https://chatgpt.com/</a></li>
<li><a href="https://www.reddit.com/r/debian/s/s871vXlGRI">https://www.reddit.com/r/debian/s/s871vXlGRI</a></li>
</ul>