-
Notifications
You must be signed in to change notification settings - Fork 2
/
README.html
398 lines (398 loc) · 22.3 KB
/
README.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
<h1>MuntsOS Embedded Linux</h1>
<p>This framework supports Linux on several single board microcomputers. The
goal of the MuntsOS project is to deliver a turnkey, RAM resident Linux
operating system for very low cost single board microcomputers. With MuntsOS
installed, such microcomputers can treated as components, as <i>Linux
microcontrollers</i>, and integrated into other projects just like traditional
single chip microcontrollers.</p>
<h2>News</h2>
<ul>
<li>1 January 2024 -- I have decided to suspend active development for 32-bit
platforms. The 32-bit BeagleBone kernel is frozen at 5.4.106. The 32-bit
Raspberry Pi 1 and 2 kernels are frozen at 5.15.92. The 32-bit extensions,
kernels and thin servers will still be rebuilt from time to time to incorporate
userland improvements. The <b><tt>muntsos-dev</tt></b> package has been updated
to only pull in 64-bit AArch toolchains.</li>
<br>
<li>1 January 2024 -- The 64-bit Raspberry Pi 3 and 4 kernels have been
upgraded to 6.1.69 and will track <a href=
"https://github.com/raspberrypi/linux">https://github.com/raspberrypi/linux</a>
again.</li>
<br>
<li>6 January 2024 -- Added a libusb extension package. It just installs
<b><tt>/usr/local/lib/libusb-1.0.so.0</tt></b>, which is no longer included in
the kernel RAM file system.</li>
<br>
<li>6 January 2024 -- In the course of porting MuntsOS to the 64-bit <a href=
"https://www.raspberrypi.com/products/raspberry-pi-5">Raspberry Pi 5</a> and
the <a href=
"http://www.orangepi.org/orangepiwiki/index.php/Orange_Pi_Zero_2W">Orange Pi
Zero 2 W</a>, the previous naming convention for MuntsOS AArch64 (arm64)
extension packages with "RaspberryPi3" has proven shortsighted. Therefore the
extension package naming scheme has updated to be more meaningful for all
platforms:
<p><b><tt>dma-muntsos-BeagleBone.deb</tt></b> becomes
<b><tt>dma-muntsos-armhf-beaglebone.deb</tt></b><br>
<b><tt>dma-muntsos-RaspberryPi1.deb</tt></b> becomes
<b><tt>dma-muntsos-armhf-raspberrypi1.deb</tt></b><br>
<b><tt>dma-muntsos-RaspberryPi2.deb</tt></b> becomes
<b><tt>dma-muntsos-armhf-raspberrypi2.deb</tt></b><br>
<b><tt>dma-muntsos-RaspberryPi3.deb</tt></b> becomes
<b><tt>dma-muntsos-aarch64.deb</tt></b></p>
</li>
<li>7 January 2024 -- Except for porting MuntsOS to the Raspberry Pi 5, which
is ongoing, I have caught up with my backlog of improvements and fixes. Among
other things, the MuntsOS startup scripts (<b><tt>/etc/rc</tt></b>) and friends
have been extensively reworked to prevent race conditions. These changes also
improve the system boot time. Support for the Raspberry 5 and the Orange Pi
Zero 2 W is under development.</li>
<br>
<li>13 January 2024 -- You can now write programs for MuntsOS in Modula-2, for
which support was merged into GCC 13. During the late 1980's and early 1990's,
there was a lot of interest in Modula-2 as a system programming language, a
more robust alternative to C. As a student and beginning software engineer, I
spent real money on at least three different Modula-2 compilers for MS-DOS.
Some platform modules and test programs have been moved from <b><a href=
"https://github.com/pmunts/libsimpleio">libsimpleio</a></b> to
<b><tt>muntsos/examples/modula2/</tt>.</b></li>
<br>
<li>13 January 2024 -- Upgraded libcurl to 8.5.0. Upgraded libnl to 3.9.0. Took
advantage of the opportunity to fix the cross-tool package dependency chains.
Now if you remove the gcc package, all the corresponding free pascal compiler
and library packages will be removed as well.</li>
<br>
<li>20 January 2024 -- Added two new device tree overlays:
<b><tt>disable-ethernet-pi4</tt></b> and <b><tt>disable-ethernet-pi5</tt></b>.
These disable the on-board Ethernet interface, exactly like
<b><tt>disable-wifi</tt></b> disables the on-board WiFi interface. These are
useful for boards like the <a href=
"https://www.waveshare.com/wiki/CM4-Duino">CM4-Duino</a>, which doesn't have an
Ethernet connector.</li>
<br>
<li>22 January 2024 -- First cut at the Raspberry Pi 5 kernel is done. Much
testing and verification needs to be performed.</li>
<br>
<li>24 January 2024 -- Reworked the RPM setup scripts <a href=
"http://git.munts.com/muntsos/scripts/setup-fedora">setup-fedora</a> and
<a href="http://git.munts.com/muntsos/scripts/setup-rhel">setup-rhel</a> to
improve the user experience and to interoperate with <a href=
"https://alire.ada.dev">Alire</a> better. Verified on Fedora 39 and RHEL
lookalikes.</li>
<br>
<li>25 January 2024 -- Validation of the Raspberry Pi 5 port continues, with
few issues found. I did have to implement a fix for a breaking GPIO API change,
though, described in <a href=
"http://git.munts.com/muntsos/doc/AppNote11-link-gpiochip.pdf">Application Note
#11</a>.</li>
<br>
<li>26 January 2024 -- I have now implemented <i>BeagleBone Style</i> GPIO pin
configuration managment for 64-bit Raspberry Pi boards, using the
<b><tt>pinctrl</tt></b> command imported from Raspberry Pi OS. See <a href=
"http://git.munts.com/muntsos/doc/AppNote12-pinctrl.pdf">Application Note
#12</a> for more information.</li>
<br>
<li>30 January 2024 -- Added a <a href="https://www.python.org">Python3</a>
runtime extension package. Python is not my favorite programming language, but
it can be useful, and other people seem to like it. The <b><tt>python3</tt></b>
program source has been patched to disable byte code caching. Byte code caching
doesn't make much sense in an embedded system and it increases the storage
footprint significantly. The Python3 extension includes
<b><tt>libffi.so</tt></b> and Linux Simple I/O Library bindings for
Python3.</li>
<br>
<li>3 February 2024 -- Upgraded ethtool to 6.7. Fixed an annoying backspace
problem by adding <b><tt>crterase</tt></b> to the <b><tt>stty</tt></b> command
in <b><tt>/etc/profile</tt></b>.</li>
<br>
<li>10 February 2024 -- Upgraded the Linux kernel to 6.1.77. The <b><a href=
"https://github.com/pmunts/libsimpleio">libsimpleio</a></b> bindings for GNU
Modula-2 are now complete. Added <a href=
"http://git.munts.com/muntsos/doc/AppNote14-Flash-LED-Modula2.pdf">Application
Note #14</a>, <i>Modula-2 LED Flash Example</i>.</li>
<br>
<li>28 February 2024 -- Enabled CPU frequency scaling on 64-bit Raspberry Pi
boards. The default CPU frequency policy is <b><tt>performance</tt></b> for
Raspberry Pi 3 and 4 and <b><tt>conservative</tt></b> for Raspberry Pi 5. The
policy can be changed at boot time by writing the desired policy name to
<b><tt>/etc/scaling_governor</tt></b> and running <b><tt>sysconfig
--save</tt></b>. Note that the Raspberry Pi 3 and 4 I<sup>2</sup>C and SPI
clock frequencies scale with the CPU frequency, and will only be correct at the
maximum CPU frequency, which can be guaranteed by the
<b><tt>performance</tt></b> policy. The Raspberry Pi 5 I<sup>2</sup>C and SPI
clock frequencies are independent of the CPU frequency.</li>
<br>
<li>28 March 2024 -- Reworked Raspberry Pi LED configuration. LEDs are now
configured in <b><tt>config.txt</tt></b> instead of in
<b><tt>/etc/rc</tt></b>.</li>
<br>
<li>5 April 2024 -- Upgraded 64-bit Raspberry Pi kernels to 6.6.23, the latest
longterm Linux kernel.</li>
<br>
<li>6 April 2024 -- Upgraded 64-bit Raspberry Pi kernels to 6.6.25. Upgraded
OpenSSH to 9.7p1. Stopped using prebuilt OpenSSH server keys. Generate only
4096 bit RSA OpenSSH server keys in <b><tt>/etc/rc</tt></b> (if necessary) and
<b><tt>sysconfig</tt></b>.</li>
<br>
<li>11 April 2024 -- Upgraded some library components: libusb to 1.0.27,
openssl to 3.3.0, curl to 8.7.1, rabbitmq-c to 0.14.0, libffi to 3.4.6, and
util-linux to 2.40. Added some new library components: libicu and
libcap-ng.</li>
<br>
<li>12 April 2024 -- Upgraded some extension package components: emailrelay to
2.5.2, openvpn to 2.6.10, .Net Runtime to 8.0.4, python3 to 3.12.3, rsync to
3.3.0, net-snmp to 5.9.4, and tcpdump to 4.99.4</li>
<br>
<li>7 May 2024 -- Upgraded 64-bit Raspberry Pi kernels to 6.6.30. Added
<b><tt>enscript</tt></b> extension package. Added <a href=
"http://git.munts.com/muntsos/doc/AppNote17-Printing.pdf">Application Note
#17</a> about printing from MuntsOS.</li>
<br>
<li>8 May 2024 -- Added <b><tt>gnuplot</tt></b> extension package. Only a few
output formats (parameters to the <b><tt>set terminal</tt></b> plot command)
are enabled, and even fewer are useful. In particular:
<p><b><tt>set terminal postscript color</tt></b> is useful for printing, using
a shell command like:</p>
<p><b><tt>gnuplot test.plt | lpr</tt></b></p>
<p><b><tt>set terminal svg</tt></b> is useful for creating an image file
suitable for post processing, using a shell command like:</p>
<p><b><tt>gnuplot test.plt > test.svg</tt></b></p>
</li>
<br>
<li>23 May 2024 -- More component upgrades: ncurses to 6.5, curl to 8.8.0, icu
to 75.1, nano to 8.0, Raspberry Pi 64-bit kernels to 6.6.31.</li>
<br>
<li>15 June 2024 -- Upgraded Raspberry Pi 64-bit kernels to 6.6.33. Upgraded
ethtool to 6.9. Added <b><tt>detach</tt></b>, a utility program that runs a
program in the background.</li>
<br>
<li>30 July 2024 -- Upgraded OpenSSL to 3.3.1, curl to 8.9.0, libtirpc to
1.3.5, libnl to 3.10.0, libsodium to 1.0.20, gdbm to 1.24, and xz to 5.6.2.
Upgraded .Net Runtime to 8.0.7, OpenSSH to 9.8p1, rpcbind to 1.2.7, and nano to
8.1. Upgraded the 64-bit Raspberry Pi kernel to 6.6.42</li>
</ul>
<h2>Quick Setup Instructions for the Impatient</h2>
<p>Instructions for installing the MuntsOS cross-toolchain development
environment onto a <b>host computer</b> are found in <a href=
"http://git.munts.com/muntsos/doc/AppNote1-Setup-Debian.pdf">Application Note
#1</a> and <a href=
"http://git.munts.com/muntsos/doc/AppNote2-Setup-RPM.pdf">Application Note
#2</a>. Or just download and run one of the following quick setup scripts:</p>
<a href=
"http://git.munts.com/muntsos/scripts/setup-debian">setup-debian</a><br>
<a href=
"http://git.munts.com/muntsos/scripts/setup-fedora">setup-fedora</a><br>
<a href="http://git.munts.com/muntsos/scripts/setup-rhel">setup-rhel</a>
<p>Instructions for installing MuntsOS to a <b>target computer</b> are found in
<a href=
"http://git.munts.com/muntsos/doc/AppNote3-Installation-from-Linux.pdf">Application
Note #3</a> and <a href=
"http://git.munts.com/muntsos/doc/AppNote15-Installation-from-Windows.pdf">Application
Note #15</a>.</p>
<h2>Documentation</h2>
<p>The documentation for MuntsOS (mostly application notes) is available online
at:</p>
<p><a href=
"http://git.munts.com/muntsos/doc">http://git.munts.com/muntsos/doc</a></p>
<h2>Embedded Linux Distribution in a Kernel</h2>
<p>MuntsOS is a stripped down Linux distribution that includes a small
compressed root file system within the kernel image binary itself. At boot time
the root file system is unpacked into RAM and thereafter the system runs
entirely in RAM.</p>
<p>Each kernel release tarball contains a kernel image file
(<b><tt>.img</tt></b>), which may be common to several different microcomputer
boards, and one or more <a href=
"http://elinux.org/Device_Tree_Reference">device tree</a> files
(<b><tt>.dtb</tt></b>) that are specific to particular microcomputer boards.
Some kernel release tarballs also contain one or more device tree overlay files
(<b><tt>.dtbo</tt></b>) that can make small changes to the device tree at boot
time.</p>
<p>Prebuilt MuntsOS kernel release tarballs are available at:</p>
<p><a href=
"http://repo.munts.com/muntsos/kernels">http://repo.munts.com/muntsos/kernels</a></p>
<h2>Extensions</h2>
<p>The MuntsOS root file system can be <i>extended</i> at boot time using any
of three mechanisms:</p>
<p>First, if <b><tt>/boot/tarballs</tt></b> exists, any <b><tt>gzip</tt></b>'ed
tarball files (<b><tt>.tgz</tt></b>) in it will be extracted on top of the root
file system. Typically you would use this mechanism for customized
<b><tt>/etc/passwd</tt></b>, <b><tt>.ssh/authorized_keys</tt></b>, and similiar
system configuration files.</p>
<p>Secondly, if <b><tt>/boot/packages</tt></b> exists, any Debian package files
(<b><tt>.deb</tt></b>) in it will be installed into the root file system. Note
that packages from the <a href="http://www.debian.org">Debian</a> project will
probably not work; they must be built specifically for MuntsOS. The startup
script that installs <b><tt>.deb</tt></b> packages also installs
<b><tt>.rpm</tt></b> and <b><tt>.nupkg</tt></b> packages.</p>
<p>The <a href="http://git.munts.com/muntsos/extensions/gpio-server">GPIO
Server</a> extension package demonstrates how to build a Debian package that
adds application specific software to MuntsOS.</p>
<p>Thirdly, the system startup script <b><tt>/etc/rc</tt></b> can be configured
via a kernel command line option to search for a subdirectory called
<b><tt>autoexec.d</tt></b> in various places, such as SD card, USB flash drive,
USB CD-ROM or NFS mount. If an <b><tt>autoexec.d</tt></b> subdirectory is
found, each executable program or script in it will be executed when the system
boots.</p>
<p>The idea is to build a MuntsOS kernel (which takes a long time) once and
install it to the target platform. Then application specific software can be
built after the fact and installed as tarball files in
<b><tt>/boot/tarballs</tt></b>; Debian, RPM, and NuGet package files in
<b><tt>/boot/packages</tt></b>; or executable programs and scripts in
<b><tt>/boot/autoexec.d</tt></b>.</p>
<p>Prebuilt MuntsOS extension packages are available at:</p>
<p><a href=
"http://repo.munts.com/muntsos/extensions">http://repo.munts.com/muntsos/extensions</a></p>
<h2>Thin Servers</h2>
<h3>Boot Files + Kernel Files + Extensions = Thin Server</h3>
<p>The <i>Thin Server</i> is a system design pattern that is little more than a
network interface for a single I/O device. Ideally, a Thin Server will be built
from a cheap and ubiquitous network microcomputer like the Raspberry Pi. The
software must be easy to install from a user's PC or Mac without requiring any
special programming tools. It must be able to run headless, administered via
the network. It must be able to survive without orderly shutdowns, and must not
write much to flash media. It must provide a network based API (Application
Programming Interface) using HTTP as a lowest common denominator.</p>
<p>MuntsOS, with its operating system running entirely from RAM, serves well
for the Thin Server, and the two concepts have evolved together over the past
few years. The simplest way to use MuntsOS is to download one of the prebuilt
Thin Server <b><tt>.zip</tt></b> files and extract it to a freshly formatted
FAT32 SD card. You can then modify <b><tt>autoexec.d/00-wlan-init</tt></b> on
the SD card to pre-configure it for your wireless network environment, if
desired, before inserting it in the target board. After booting MuntsOS, log in
from the console or via SSH (user "<b><tt>root</tt></b>", password
"<b><tt>default</tt></b>") and run <b><tt>sysconfig</tt></b> to perform more
system configuration.</p>
<p><i>Note: Some platforms require the <a href=
"https://en.wikipedia.org/wiki/Boot_flag">boot flag</a> to be set on the FAT32
boot partition on the SD card or on-board eMMC. The ROM boot loader in the CPU
will ignore any partitions that are not marked as bootable.</i></p>
MuntsOS Application Notes <a href=
"http://git.munts.com/muntsos/doc/AppNote3-Installation-from-Linux.pdf">3</a>
and <a href=
"http://git.munts.com/muntsos/doc/AppNote15-Installation-from-Windows.pdf">15</a>
contain more detailed instructions about how to install a MuntsOS Thin Server.
<p>Prebuilt MuntsOS Thin Servers are at available at:</p>
<p><a href=
"http://repo.munts.com/muntsos/thinservers">http://repo.munts.com/muntsos/thinservers</a></p>
<h2>Boards</h2>
<h3>Raspberry Pi</h3>
<p>The <a href="http://www.raspberrypi.com">Raspberry Pi</a> is a family of low
cost Linux microcomputers selling for USD $15 to $80, depending on model. There
have been five generations of Raspberry Pi microcomputers, each using a
successively more sophisticated Broadcom ARM core CPU. The first two
generations (32-bit ARMv6 Raspberry Pi 1 and 32-bit ARMv7 Raspberry Pi 2) are
now obsolete.</p>
<p>Some Raspberry Pi models have an on-board Bluetooth radio that uses the
serial port signals that are brought out to the expansion header. By default,
MuntsOS port disables the on-board Bluetooth radio, in favor of the serial port
on the expansion header.</p>
<h4>Raspberry Pi 3</h4>
<p>The 64-bit <a href=
"https://www.raspberrypi.com/products/raspberry-pi-2-model-b">Raspberry Pi 2
Model B</a> Revision 1.2 with the 900 MHz BCM2710 ARMv8 Cortex-A53 quad-core
CPU can be treated as a power conserving Raspberry Pi 3 Model B− and is useful
for industrial applications where wired Ethernet is preferred.</p>
<p>The <a href=
"https://www.raspberrypi.com/products/raspberry-pi-3-model-b">Rasbperry Pi 3
Model B</a> has a 1200 MHz BCM2710 ARMv8 Cortex-A53 quad-core CPU and has 1 GB
of RAM along with on-board Bluetooth and WiFi radios.</p>
<p>The <a href=
"https://www.raspberrypi.com/products/raspberry-pi-3-model-a-plus">Raspberry Pi
3 Model A+</a> has the same form factor as the Raspberry Pi 1 Model A+, with
only one USB host port and no wired Ethernet. It has a 1400 MHz BCM2710 ARMv8
Cortex-A53 quad-core CPU and has 512 MB of RAM along with on-board Bluetooth
and WiFi radios.</p>
<p>The <a href=
"https://www.raspberrypi.com/products/raspberry-pi-3-model-b-plus">Raspberry Pi
3 Model B+</a> has a 1400 MHz BCM2710 ARMv8 Cortex-A53 quad-core CPU and has
improved power management and networking components.</p>
<p>The <a href=
"https://www.raspberrypi.com/products/raspberry-pi-zero-2-w">Raspberry Pi Zero
2 W</a> has the same form factor as the Raspberry Pi Zero W, with a 1000 MHz
BCM2710 ARMv8 Cortex-A53 quad core CPU and 512 MB of RAM along with on-board
Bluetooth and WiFi radios.</p>
<p>All Raspberry Pi 3 models use the same AArch64 toolchain and ARMv8 kernels,
but different device trees.</p>
<h4>Raspberry Pi 4</h4>
<p>The <a href=
"https://www.raspberrypi.com/products/raspberry-pi-4-model-b">Raspberry Pi 4
Model B</a> has a 1500 MHz BCM2711 ARMv8 Cortex-A72 quad-core CPU and is
available with 1 to 8 GB of RAM. It diverged significantly from the Raspberry
Pi 1 B+ form factor, with the USB and Ethernet ports reversed, two micro-HDMI
connectors instead of a single full size HDMI connector, and a USB-C power
connector instead of micro-USB. Two of the USB ports are 3.0 and two are 2.0. A
major improvement is a Gigabit Ethernet controller connected via PCI Express
instead of the USB connected Ethernet used for all earlier models. The
Raspberry Pi 4 Model B uses the same wireless chip set as the 3+.</p>
<p>There are also a myriad of <a href=
"https://www.raspberrypi.com/products/compute-module-4">Raspberry Pi 4 Compute
Modules</a>, with varying combinations of wireless Ethernet, RAM and eMMC.</p>
<p>All Raspberry Pi 4 models use the same AArch64 toolchain and ARMv8 kernels,
but different device trees.</p>
<h4>Raspberry Pi 5</h4>
<p>The <a href="https://www.raspberrypi.com/products/raspberry-pi-5">Raspberry
Pi 5</a> yields another 2-3x increase in performance over the Raspberry Pi 4,
at the expense of greater power consumption. It has a 2400 MHz BCM2712 ARMv8
Cortex-A76 quad-core CPU and is available with 4 or 8 GB of RAM. The Ethernet
socket and USB ports have swapped sides, so it has a form factor that is sort
of a cross between the Raspberry Pi 1 B+ (same grouping of Ethernet and USB
ports) and the Raspberry Pi 4 (same dual micro-HDMI sockets and USB-C power
socket). It uses the same AArch64 toolchain as all of the other 64-bit
Raspberry Pi models, but a separate kernel and device tree.</p>
<p>The Raspberry Pi 5 introduced a breaking GPIO API change. See <a href=
"http://git.munts.com/muntsos/doc/AppNote11-link-gpiochip.pdf">Application Note
#11</a> for more information.</p>
<p>The Raspberry Pi 5 also introduced a breaking PWM API change. It has four
hardware PWM outputs, but the pin mapping has changed as well. Notably, channel
2 is mapped to GPIO18 instead of channel 0 on previous Raspberry Pi boards. See
<a href="https://datasheets.raspberrypi.com/rp1/rp1-peripherals.pdf">RP1
Peripherals</a> page 15 for more information.</p>
<h4>Raspberry Pi USB Gadget Kernels</h4>
<p>MuntsOS also provides Raspberry Pi kernels with dedicated <a href=
"http://www.linux-usb.org/gadget">USB Gadget</a> support enabled. These kernels
run on 3 A+, CM3, Zero 2 W, 4 B, and CM4. You can supply power to and
communicate with a compatible Raspberry Pi solely through the USB port. This
kernel supports USB Network, Raw HID, and Serial Port gadgets, selected by bits
in the <b><tt>OPTIONS</tt></b> word passed on the kernel command line. The USB
Gadget Thin Servers have USB Network Gadget selected by default.</p>
<p>The absolute minimum possible usable Raspberry Pi kit consists of a
Raspberry Pi Zero 2 W, a micro-USB cable, and a micro-SD card with one of the
MuntsOS Raspberry Pi 3 USB Gadget Thin Servers installed.</p>
<h2>Cross-Toolchains</h2>
<p>I build a custom Ada/C/C++/Fortran/Go/Modula-2 GCC cross-toolchain for each
MuntsOS platform family. Each GCC cross-toolchain requires a number of
additional software component libraries, which are packaged and distributed
separately but installed into the same directory tree as the parent
cross-toolchain. I also build <a href="https://www.freepascal.org">Free
Pascal</a> cross-compilers. Each of these rely on the libraries contained in
the corresponding GCC cross-toolchain package.</p>
<p>Cross-toolchain packages built for <a href=
"https://www.debian.org">Debian</a> Linux (x86-64 <i>and</i> ARM64) development
host computers are available at either:</p>
<a href="http://repo.munts.com/debian12">http://repo.munts.com/debian12</a>
(Debian package repository) or <a href=
"http://repo.munts.com/muntsos/toolchain-debs">http://repo.munts.com/muntsos/toolchain-debs</a>
(just the package files).
<p>x86-64 RPM packages containing the exact same binaries and known to work on
Fedora 40 and RHEL 9.1 and its derivatives are available at:</p>
<a href=
"http://repo.munts.com/muntsos/toolchain-rpms">http://repo.munts.com/muntsos/toolchain-rpms</a>
<h2>Debian Package Repository</h2>
<p>Prebuilt cross-toolchain packages for <a href=
"http://www.debian.org">Debian</a> Linux are available at:</p>
<p><a href=
"http://repo.munts.com/debian12">http://repo.munts.com/debian12</a></p>
<h2>File Repository</h2>
<p>Prebuilt binaries for MuntsOS are available at:</p>
<p><a href=
"http://repo.munts.com/muntsos">http://repo.munts.com/muntsos</a></p>
<h2>Git Repository</h2>
<p>The source code for MuntsOS is available at:</p>
<p><a href=
"https://github.com/pmunts/muntsos">https://github.com/pmunts/muntsos</a></p>
<p>Use the following command to clone it:</p>
<pre>
git clone https://github.com/pmunts/muntsos.git
</pre>
<hr>
Questions or comments to Philip Munts <a href=
"mailto:[email protected]">[email protected]</a>