<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MarcoDG</id>
	<title>Alpine Linux - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MarcoDG"/>
	<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/wiki/Special:Contributions/MarcoDG"/>
	<updated>2026-05-01T22:09:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=TTY_Autologin&amp;diff=25114</id>
		<title>TTY Autologin</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=TTY_Autologin&amp;diff=25114"/>
		<updated>2023-09-15T07:30:02Z</updated>

		<summary type="html">&lt;p&gt;MarcoDG: minor edits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=By using agetty=&lt;br /&gt;
&lt;br /&gt;
== How ==&lt;br /&gt;
Install {{pkg|agetty}}: {{cmd|# apk add agetty}}&lt;br /&gt;
Edit {{path|/etc/inittab}} to use agetty&amp;lt;br&amp;gt;&lt;br /&gt;
Example for the virtual terminal tty1:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;tty1::respawn:/sbin/agetty --autologin root tty1 linux&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example inittab entry for a serial terminal on ttys01:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;ttyS0::respawn:/sbin/agetty --autologin root ttyS0 vt100&amp;lt;/code&amp;gt;&lt;br /&gt;
{{tip|You can change the `tty1` or `ttyS0` to a different serial port or virtual terminal as you please. `root` can be changed to a different user as well. Finally the terminal type (`linux` and `vt100` in our examples) can be changed to a wide variety of serial terminals.}}&lt;br /&gt;
&lt;br /&gt;
=By compiling your own autologin wrapper=&lt;br /&gt;
&lt;br /&gt;
== How ==&lt;br /&gt;
# Writing a wrapper, called autologin, around {{path|/bin/login}} and moving it in {{path|/usr/sbin/}}&lt;br /&gt;
# Editing {{path|/etc/inittab}} specifying the use of {{path|/usr/sbin/autologin}} instead of {{path|/bin/login}}&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* A C compiler (e.g. &#039;&#039;&#039;&#039;&#039;{{pkg|gcc}}&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;{{pkg|tcc}}&#039;&#039;&#039;&#039;&#039;)&lt;br /&gt;
* The &#039;&#039;&#039;&#039;&#039;{{pkg|musl-dev}}&#039;&#039;&#039;&#039;&#039; package which contains the C standard library&lt;br /&gt;
&lt;br /&gt;
==== Example on how to assolve the prerequisites: ====&lt;br /&gt;
{{Cmd|&amp;amp;#35; apk add gcc&lt;br /&gt;
&amp;amp;#35; apk add musl-dev}}&lt;br /&gt;
&lt;br /&gt;
== Writing the autologin.c program ==&lt;br /&gt;
&lt;br /&gt;
Create a file in this example called autologin.c&lt;br /&gt;
&lt;br /&gt;
{{cat|autologin.c|&amp;amp;#35;include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() &lt;br /&gt;
{&lt;br /&gt;
    execlp( &amp;quot;login&amp;quot;, &amp;quot;login&amp;quot;, &amp;quot;-f&amp;quot;, &amp;quot;root&amp;quot;, 0);&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The program makes a system call to execute the &#039;&#039;login&#039;&#039; binary (part of busybox) which will be searched in $PATH.&lt;br /&gt;
&lt;br /&gt;
As parameters are passed:&lt;br /&gt;
* &#039;&#039;&#039;-f&#039;&#039;&#039;  flag which stands for &amp;quot;Do not authenticate (user already authenticated)&amp;quot;&lt;br /&gt;
* &#039;&#039;username&#039;&#039; in this example is &#039;&#039;root&#039;&#039; but if you created a new user, its username can be used instead.&lt;br /&gt;
&lt;br /&gt;
== Compiling the autologin.c program ==&lt;br /&gt;
If using gcc:&lt;br /&gt;
{{Cmd|&amp;amp;#35; gcc -o autologin autologin.c }}&lt;br /&gt;
&lt;br /&gt;
Move the binary autologin to {{path|/usr/sbin}}&lt;br /&gt;
{{Cmd|&amp;amp;#35; mv autologin /usr/sbin/}}&lt;br /&gt;
&lt;br /&gt;
== Editing /etc/inittab ==&lt;br /&gt;
&lt;br /&gt;
Open {{path|/etc/inittab}}&lt;br /&gt;
&lt;br /&gt;
replace &amp;quot;&#039;&#039;:respawn:/sbin/getty&#039;&#039;&amp;quot; with &amp;quot;&#039;&#039;:respawn:/sbin/getty -n -l /usr/sbin/autologin&#039;&#039;&amp;quot; for each TTY you want to enable autologin.&lt;br /&gt;
* The getty&#039;s &#039;&#039;&#039;-n&#039;&#039;&#039; flag do not prompt the user for a login name&lt;br /&gt;
* The getty&#039;s &#039;&#039;&#039;-l&#039;&#039;&#039; flag invokes a custom login instead of {{path|/bin/login}}; in our case it is set to invoke {{path|/usr/sbin/autologin}}&lt;br /&gt;
&lt;br /&gt;
==== Note ====&lt;br /&gt;
To perform such a replacement on all TTYs, the following command can be used:&lt;br /&gt;
{{Cmd|&amp;amp;#35; sed -i &#039;s@:respawn:/sbin/getty@:respawn:/sbin/getty -n -l /usr/sbin/autologin@g&#039; /etc/inittab }}&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;@&#039;&#039;&#039;&amp;quot; is used as a delimiter&lt;br /&gt;
* The &#039;&#039;&#039;-i&#039;&#039;&#039; flag edits the file in-place&lt;br /&gt;
&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
It is possible to remove the autologin.c file, the C compiler and the {{pkg|musl-dev}} package&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://git.busybox.net/busybox/tree/init/init.c Busybox init source, substantial comments documenting /etc/inittab are at the bottom]&lt;br /&gt;
* [http://littlesvr.ca/linux-stuff/articles/autologinconsole/autologinconsole.php Linux-Stuff: Log in automatically to a console when Linux boots]&lt;br /&gt;
* [https://wiki.gumstix.com/index.php/AutoLogin AutoLogin - Gumstix User Wiki]&lt;br /&gt;
* [https://busybox.net/downloads/BusyBox.html#getty Busybox getty arguments]&lt;br /&gt;
* [https://github.com/util-linux/util-linux/blob/master/term-utils/agetty.8.adoc agetty(8) Manual Page]&lt;/div&gt;</summary>
		<author><name>MarcoDG</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=TTY_Autologin&amp;diff=25113</id>
		<title>TTY Autologin</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=TTY_Autologin&amp;diff=25113"/>
		<updated>2023-09-15T06:50:24Z</updated>

		<summary type="html">&lt;p&gt;MarcoDG: Changing tcc to gcc cause tcc is on edge while gcc on main&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=By using agetty=&lt;br /&gt;
&lt;br /&gt;
== How ==&lt;br /&gt;
Install {{pkg|agetty}}: {{cmd|# apk add agetty}}&lt;br /&gt;
Edit {{path|/etc/inittab}} to use agetty&amp;lt;br&amp;gt;&lt;br /&gt;
Example for the virtual terminal tty1:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;tty1::respawn:/sbin/agetty --autologin root tty1 linux&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example inittab entry for a serial terminal on ttys01:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;ttyS0::respawn:/sbin/agetty --autologin root ttyS0 vt100&amp;lt;/code&amp;gt;&lt;br /&gt;
{{tip|You can change the `tty1` or `ttyS0` to a different serial port or virtual terminal as you please. `root` can be changed to a different user as well. Finally the terminal type (`linux` and `vt100` in our examples) can be changed to a wide variety of serial terminals.}}&lt;br /&gt;
&lt;br /&gt;
=By compiling your own autologin wrapper=&lt;br /&gt;
&lt;br /&gt;
== How ==&lt;br /&gt;
# Writing a wrapper, called autologin, around {{path|/bin/login}} and moving it in {{path|/usr/sbin/}}&lt;br /&gt;
# Editing {{path|/etc/inittab}} specifying the use of {{path|/usr/sbin/autologin}} instead of {{path|/bin/login}}&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* A C compiler&lt;br /&gt;
* The &#039;&#039;&#039;&#039;&#039;{{pkg|musl-dev}}&#039;&#039;&#039;&#039;&#039; package which contains the C standard library&lt;br /&gt;
&lt;br /&gt;
==== Example on how to assolve the prerequisites: ====&lt;br /&gt;
{{Cmd|&amp;amp;#35; apk add gcc&lt;br /&gt;
&amp;amp;#35; apk add musl-dev}}&lt;br /&gt;
&lt;br /&gt;
== Writing the autologin.c program ==&lt;br /&gt;
&lt;br /&gt;
Create a file; in this example called autologin.c&lt;br /&gt;
{{Cmd|&amp;amp;#35; vi autologin.c }}&lt;br /&gt;
&lt;br /&gt;
Write into it the following C program.&lt;br /&gt;
&lt;br /&gt;
{{cat|autologin.c|&amp;amp;#35;include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() &lt;br /&gt;
{&lt;br /&gt;
    execlp( &amp;quot;login&amp;quot;, &amp;quot;login&amp;quot;, &amp;quot;-f&amp;quot;, &amp;quot;root&amp;quot;, 0);&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The only thing it does is a system call to execute the &#039;&#039;login&#039;&#039; binary (part of busybox) which will be searched in $PATH.&lt;br /&gt;
&lt;br /&gt;
As parameters are passed:&lt;br /&gt;
* &#039;&#039;&#039;-f&#039;&#039;&#039;  flag which stands for &amp;quot;Do not authenticate (user already authenticated)&amp;quot;&lt;br /&gt;
* &#039;&#039;username&#039;&#039; in this example is &#039;&#039;root&#039;&#039; but if you created a new user, its username can be used instead.&lt;br /&gt;
&lt;br /&gt;
== Compiling the autologin.c program ==&lt;br /&gt;
If using gcc:&lt;br /&gt;
{{Cmd|&amp;amp;#35; gcc -o autologin autologin.c }}&lt;br /&gt;
&lt;br /&gt;
Move the binary autologin to {{path|/usr/sbin}}&lt;br /&gt;
{{Cmd|&amp;amp;#35; mv autologin /usr/sbin/}}&lt;br /&gt;
&lt;br /&gt;
== Editing /etc/inittab ==&lt;br /&gt;
&lt;br /&gt;
Open {{path|/etc/inittab}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;amp;#35; vi /etc/inittab }}&lt;br /&gt;
&lt;br /&gt;
replace &amp;quot;&#039;&#039;:respawn:/sbin/getty&#039;&#039;&amp;quot; with &amp;quot;&#039;&#039;:respawn:/sbin/getty -n -l /usr/sbin/autologin&#039;&#039;&amp;quot; for each TTY you want to enable autologin.&lt;br /&gt;
* The getty&#039;s &#039;&#039;&#039;-n&#039;&#039;&#039; flag do not prompt the user for a login name&lt;br /&gt;
* The getty&#039;s &#039;&#039;&#039;-l&#039;&#039;&#039; flag invokes a custom login instead of {{path|/bin/login}}; in our case it is set to invoke {{path|/usr/sbin/autologin}}&lt;br /&gt;
&lt;br /&gt;
==== Note ====&lt;br /&gt;
To perform such a replacement on all TTYs, the following command can be used:&lt;br /&gt;
{{Cmd|&amp;amp;#35; sed -i &#039;s@:respawn:/sbin/getty@:respawn:/sbin/getty -n -l /usr/sbin/autologin@g&#039; /etc/inittab }}&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;@&#039;&#039;&#039;&amp;quot; is used as a delimiter&lt;br /&gt;
* The &#039;&#039;&#039;-i&#039;&#039;&#039; flag edits the file in-place&lt;br /&gt;
&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
It is possible to remove the autologin.c file, the C compiler and the {{pkg|musl-dev}} package&lt;br /&gt;
{{Cmd|&amp;amp;#35; rm autologin.c &lt;br /&gt;
&amp;amp;#35; apk del gcc musl-dev}}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://git.busybox.net/busybox/tree/init/init.c Busybox init source, substantial comments documenting /etc/inittab are at the bottom]&lt;br /&gt;
* [http://littlesvr.ca/linux-stuff/articles/autologinconsole/autologinconsole.php Linux-Stuff: Log in automatically to a console when Linux boots]&lt;br /&gt;
* [https://wiki.gumstix.com/index.php/AutoLogin AutoLogin - Gumstix User Wiki]&lt;br /&gt;
* [https://busybox.net/downloads/BusyBox.html#getty Busybox getty arguments]&lt;br /&gt;
* [https://github.com/util-linux/util-linux/blob/master/term-utils/agetty.8.adoc agetty(8) Manual Page]&lt;/div&gt;</summary>
		<author><name>MarcoDG</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:TTY_Autologin&amp;diff=25112</id>
		<title>Talk:TTY Autologin</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:TTY_Autologin&amp;diff=25112"/>
		<updated>2023-09-15T06:47:14Z</updated>

		<summary type="html">&lt;p&gt;MarcoDG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Isn&#039;t this just reinventing the wheel? ==&lt;br /&gt;
&amp;lt;s&amp;gt;Instead of going through the trouble of compiling something, wouldn&#039;t it be much easier to &amp;lt;code&amp;gt;apk add {{pkg|agetty}}&amp;lt;/code&amp;gt; (from main) and use the {{key|-a}} (&amp;lt;small&amp;gt;{{key|--autologin}}&amp;lt;/small&amp;gt;) option?&amp;lt;/s&amp;gt; &amp;amp;ndash;zcrayfish ([[User talk:zcrayfish|talk]]•[[Special:Contributions/zcrayfish|contribs]]•[[Special:EmailUser/zcrayfish|send email]]) 02:13, 11 September 2023 (UTC)&lt;br /&gt;
:Disregard because I edited the article to have both. (the agetty option was needed for the non-edge users in any case) &amp;amp;ndash;[[User:zcrayfish|zcrayfish]] &amp;lt;small&amp;gt;([[User talk:zcrayfish|talk]]•[[Special:Contributions/zcrayfish|contribs]]•[[Special:EmailUser/zcrayfish|send email]])&amp;lt;/small&amp;gt; 08:32, 12 September 2023 (UTC)&lt;br /&gt;
::tcc is not a mandatory package, it is just a C compiler, I initially choose it because it is small (~1Mb) in contrast to gcc (&amp;gt;100Mb), but if the issue is that it is on edge, then it is enough to use gcc which is in main, simple as that. Also agetty is times larger then a mere system call. &amp;amp;ndash;[[User:MarcoDG |MarcoDG]] 08:39, 15 September 2023 (CET)&lt;/div&gt;</summary>
		<author><name>MarcoDG</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:TTY_Autologin&amp;diff=25111</id>
		<title>Talk:TTY Autologin</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:TTY_Autologin&amp;diff=25111"/>
		<updated>2023-09-15T06:46:27Z</updated>

		<summary type="html">&lt;p&gt;MarcoDG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Isn&#039;t this just reinventing the wheel? ==&lt;br /&gt;
&amp;lt;s&amp;gt;Instead of going through the trouble of compiling something, wouldn&#039;t it be much easier to &amp;lt;code&amp;gt;apk add {{pkg|agetty}}&amp;lt;/code&amp;gt; (from main) and use the {{key|-a}} (&amp;lt;small&amp;gt;{{key|--autologin}}&amp;lt;/small&amp;gt;) option?&amp;lt;/s&amp;gt; &amp;amp;ndash;zcrayfish ([[User talk:zcrayfish|talk]]•[[Special:Contributions/zcrayfish|contribs]]•[[Special:EmailUser/zcrayfish|send email]]) 02:13, 11 September 2023 (UTC)&lt;br /&gt;
:Disregard because I edited the article to have both. (the agetty option was needed for the non-edge users in any case) &amp;amp;ndash;[[User:zcrayfish|zcrayfish]] &amp;lt;small&amp;gt;([[User talk:zcrayfish|talk]]•[[Special:Contributions/zcrayfish|contribs]]•[[Special:EmailUser/zcrayfish|send email]])&amp;lt;/small&amp;gt; 08:32, 12 September 2023 (UTC)&lt;br /&gt;
::tcc is not a mandatory package, it is just a C compiler, I initially choose it because it is small (~1Mb) in contrast to gcc (&amp;gt;100Mb), but if the issue is that it is on edge, then it is enough to use gcc which is in main, simple as that. Also agetty is times larger then a mere system call. &amp;amp;ndash;[[User:MarcoDG |MarcoDG]] 08:39, 15 September 2023 (UTC)&lt;/div&gt;</summary>
		<author><name>MarcoDG</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=TTY_Autologin&amp;diff=25099</id>
		<title>TTY Autologin</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=TTY_Autologin&amp;diff=25099"/>
		<updated>2023-09-11T15:13:21Z</updated>

		<summary type="html">&lt;p&gt;MarcoDG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;What follows is one from many different ways to get autologin.&lt;br /&gt;
&lt;br /&gt;
== How ==&lt;br /&gt;
# Writing a wrapper, called autologin, around /bin/login and moving it in /usr/sbin/&lt;br /&gt;
# Editing /etc/inittab specifying the use of /usr/sbin/autologin instead of /bin/login&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* A C compiler&lt;br /&gt;
* The &#039;&#039;&#039;&#039;&#039;musl-dev&#039;&#039;&#039;&#039;&#039; package which contains the C standard library&lt;br /&gt;
&lt;br /&gt;
==== Example on how to assolve the prerequisites: ====&lt;br /&gt;
{{Cmd|&amp;amp;#35; apk add --repository https://dl-cdn.alpinelinux.org/alpine/edge/testing tcc&lt;br /&gt;
&amp;amp;#35; apk add musl-dev }}&lt;br /&gt;
&lt;br /&gt;
== Writing the autologin.c program ==&lt;br /&gt;
&lt;br /&gt;
Create a file; in this example called autologin.c&lt;br /&gt;
{{Cmd|&amp;amp;#35; vi autologin.c }}&lt;br /&gt;
&lt;br /&gt;
Write into it the following C program.&lt;br /&gt;
&lt;br /&gt;
{{ cmd|&amp;amp;#35;include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() &lt;br /&gt;
{&lt;br /&gt;
    execlp( &amp;quot;login&amp;quot;, &amp;quot;login&amp;quot;, &amp;quot;-f&amp;quot;, &amp;quot;root&amp;quot;, 0);&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The only thing it does is a system call to execute the &#039;&#039;login&#039;&#039; binary (part of busybox) which will be searched in PATH.&lt;br /&gt;
&lt;br /&gt;
As parameters are passed:&lt;br /&gt;
* &#039;&#039;&#039;-f&#039;&#039;&#039;  flag which stands for &amp;quot;Do not authenticate (user already authenticated)&amp;quot;&lt;br /&gt;
* &#039;&#039;username&#039;&#039; in this example is &#039;&#039;root&#039;&#039; but if you created a new user, its username can be used instead.&lt;br /&gt;
&lt;br /&gt;
== Compiling the autologin.c program ==&lt;br /&gt;
If using tcc:&lt;br /&gt;
{{Cmd|&amp;amp;#35; tcc -o autologin autologin.c }}&lt;br /&gt;
&lt;br /&gt;
Move the binary autologin to /usr/sbin&lt;br /&gt;
{{Cmd|&amp;amp;#35; mv autologin /usr/sbin/ }}&lt;br /&gt;
&lt;br /&gt;
== Editing /etc/inittab ==&lt;br /&gt;
&lt;br /&gt;
Open /etc/inittab&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;amp;#35; vi /etc/inittab }}&lt;br /&gt;
&lt;br /&gt;
replace &amp;quot;&#039;&#039;:respawn:/sbin/getty&#039;&#039;&amp;quot; with &amp;quot;&#039;&#039;:respawn:/sbin/getty -n -l /usr/sbin/autologin&#039;&#039;&amp;quot; for each TTY you want to enable autologin.&lt;br /&gt;
* The getty&#039;s &#039;&#039;&#039;-n&#039;&#039;&#039; flag do not prompt the user for a login name&lt;br /&gt;
* The getty&#039;s &#039;&#039;&#039;-l&#039;&#039;&#039; flag invokes a custom login instead of /bin/login; in our case it is set to invoke /usr/sbin/autologin&lt;br /&gt;
&lt;br /&gt;
==== Note ====&lt;br /&gt;
To perform such a replacement on all TTYs, the following command can be used:&lt;br /&gt;
{{Cmd|&amp;amp;#35; sed -i &#039;s@:respawn:/sbin/getty@:respawn:/sbin/getty -n -l /usr/sbin/autologin@g&#039; /etc/inittab }}&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;@&#039;&#039;&#039;&amp;quot; is used as a delimiter&lt;br /&gt;
* The &#039;&#039;&#039;-i&#039;&#039;&#039; flag edits the file in-place&lt;br /&gt;
&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
It is possible to remove the autologin.c file, the C compiler and the &#039;&#039;&#039;musl-dev&#039;&#039;&#039; package&lt;br /&gt;
{{Cmd|&amp;amp;#35; rm autologin.c &lt;br /&gt;
&amp;amp;#35; apk del tcc&lt;br /&gt;
&amp;amp;#35; apk del musl-dev}}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# http://littlesvr.ca/linux-stuff/articles/autologinconsole/autologinconsole.php&lt;br /&gt;
# https://wiki.gumstix.com/index.php/AutoLogin&lt;/div&gt;</summary>
		<author><name>MarcoDG</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=TTY_Autologin&amp;diff=25097</id>
		<title>TTY Autologin</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=TTY_Autologin&amp;diff=25097"/>
		<updated>2023-09-10T20:00:12Z</updated>

		<summary type="html">&lt;p&gt;MarcoDG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;What follows is one from many different ways to get autologin.&lt;br /&gt;
&lt;br /&gt;
== How ==&lt;br /&gt;
# Writing a wrapper, called autologin, around /bin/login and moving it in /usr/sbin/&lt;br /&gt;
# Editing /etc/inittab specifying the use of /usr/sbin/autologin instead of /bin/login&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* A C compiler&lt;br /&gt;
* The &#039;&#039;&#039;&#039;&#039;musl-dev&#039;&#039;&#039;&#039;&#039; package which contains the C standard library&lt;br /&gt;
&lt;br /&gt;
==== Example on how to assolve the prerequisites: ====&lt;br /&gt;
{{Cmd|&amp;amp;#35; apk add --repository https://dl-cdn.alpinelinux.org/alpine/edge/testing tcc&lt;br /&gt;
&amp;amp;#35; apk add musl-dev }}&lt;br /&gt;
&lt;br /&gt;
== Writing the autologin.c program ==&lt;br /&gt;
&lt;br /&gt;
Create a file; in this example called autologin.c&lt;br /&gt;
{{Cmd|&amp;amp;#35; vi autologin.c }}&lt;br /&gt;
&lt;br /&gt;
Write into it the following C program.&lt;br /&gt;
&lt;br /&gt;
{{ cmd|&amp;amp;#35;include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() &lt;br /&gt;
{&lt;br /&gt;
    execlp( &amp;quot;login&amp;quot;, &amp;quot;login&amp;quot;, &amp;quot;-f&amp;quot;, &amp;quot;root&amp;quot;, 0);&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The only thing it does is a system call to execute the &#039;&#039;login&#039;&#039; binary (part of busybox) which will be searched in PATH.&lt;br /&gt;
&lt;br /&gt;
As parameters are passed:&lt;br /&gt;
* &#039;&#039;&#039;-f&#039;&#039;&#039;  flag which stands for &amp;quot;Do not authenticate (user already authenticated)&amp;quot;&lt;br /&gt;
* &#039;&#039;username&#039;&#039; in this example is &#039;&#039;root&#039;&#039; but if you created a new user, the user username can be used instead.&lt;br /&gt;
&lt;br /&gt;
== Compiling the autologin.c program ==&lt;br /&gt;
If using tcc:&lt;br /&gt;
{{Cmd|&amp;amp;#35; tcc -o autologin autologin.c }}&lt;br /&gt;
&lt;br /&gt;
Move the binary autologin to /usr/sbin&lt;br /&gt;
{{Cmd|&amp;amp;#35; mv autologin /usr/sbin/ }}&lt;br /&gt;
&lt;br /&gt;
== Editing /etc/inittab ==&lt;br /&gt;
&lt;br /&gt;
Open /etc/inittab&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;amp;#35; vi /etc/inittab }}&lt;br /&gt;
&lt;br /&gt;
replace each &amp;quot;&#039;&#039;:respawn:/sbin/getty&#039;&#039;&amp;quot; with &amp;quot;&#039;&#039;:respawn:/sbin/getty -n -l /usr/sbin/autologin&#039;&#039;&amp;quot;&lt;br /&gt;
* The getty&#039;s &#039;&#039;&#039;-n&#039;&#039;&#039; flag do not prompt the user for a login name&lt;br /&gt;
* The getty&#039;s &#039;&#039;&#039;-l&#039;&#039;&#039; flag invokes a custom login instead of /bin/login; in our case it is set to invoke /usr/sbin/autologin&lt;br /&gt;
&lt;br /&gt;
==== Note ====&lt;br /&gt;
To perform such replacement the following command can be used:&lt;br /&gt;
{{Cmd|&amp;amp;#35; sed -i &#039;s@:respawn:/sbin/getty@:respawn:/sbin/getty -n -l /usr/sbin/autologin@g&#039; /etc/inittab }}&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;@&#039;&#039;&#039;&amp;quot; is used as a delimiter&lt;br /&gt;
* The &#039;&#039;&#039;-i&#039;&#039;&#039; flag edits the file in-place&lt;br /&gt;
&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
It is possible to remove the autologin.c file, the C compiler and the &#039;&#039;&#039;musl-dev&#039;&#039;&#039; package&lt;br /&gt;
{{Cmd|&amp;amp;#35; rm autologin.c &lt;br /&gt;
&amp;amp;#35; apk del tcc&lt;br /&gt;
&amp;amp;#35; apk del musl-dev}}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# http://littlesvr.ca/linux-stuff/articles/autologinconsole/autologinconsole.php&lt;br /&gt;
# https://wiki.gumstix.com/index.php/AutoLogin&lt;/div&gt;</summary>
		<author><name>MarcoDG</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=TTY_Autologin&amp;diff=25096</id>
		<title>TTY Autologin</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=TTY_Autologin&amp;diff=25096"/>
		<updated>2023-09-10T19:56:35Z</updated>

		<summary type="html">&lt;p&gt;MarcoDG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;What follows is one from many different ways to get autologin.&lt;br /&gt;
&lt;br /&gt;
== How ==&lt;br /&gt;
# Writing a wrapper, called autologin, around /bin/login and moving it in /usr/sbin/&lt;br /&gt;
# Editing /etc/inittab specifying the use of /usr/sbin/autologin instead of /bin/login&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* A C compiler&lt;br /&gt;
* The &#039;&#039;&#039;&#039;&#039;musl-dev&#039;&#039;&#039;&#039;&#039; package which contains the C standard library&lt;br /&gt;
&lt;br /&gt;
==== Example on how to assolve the prerequisites: ====&lt;br /&gt;
{{Cmd|&amp;amp;#35; apk add --repository https://dl-cdn.alpinelinux.org/alpine/edge/testing tcc&lt;br /&gt;
&amp;amp;#35; apk add musl-dev }}&lt;br /&gt;
&lt;br /&gt;
== Writing the autologin.c program ==&lt;br /&gt;
&lt;br /&gt;
Create a file; in this example called autologin.c&lt;br /&gt;
{{Cmd|&amp;amp;#35; vi autologin.c }}&lt;br /&gt;
&lt;br /&gt;
Write into it the following C program.&lt;br /&gt;
&lt;br /&gt;
{{ cmd|&amp;amp;#35;include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() &lt;br /&gt;
{&lt;br /&gt;
    execlp( &amp;quot;login&amp;quot;, &amp;quot;login&amp;quot;, &amp;quot;-f&amp;quot;, &amp;quot;root&amp;quot;, 0);&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The only thing it does is a system call to execute the &#039;&#039;login&#039;&#039; binary (part of busybox) which will be searched in PATH.&lt;br /&gt;
&lt;br /&gt;
As parameters are passed:&lt;br /&gt;
* &#039;&#039;&#039;-f&#039;&#039;&#039;  flag which stands for &amp;quot;Do not authenticate (user already authenticated)&amp;quot;&lt;br /&gt;
* &#039;&#039;username&#039;&#039; in this example is &#039;&#039;root&#039;&#039; but if you created a new user, the user username can be used instead.&lt;br /&gt;
&lt;br /&gt;
== Compiling the autologin.c program ==&lt;br /&gt;
If using tcc:&lt;br /&gt;
{{Cmd|&amp;amp;#35; tcc -o autologin autologin.c }}&lt;br /&gt;
&lt;br /&gt;
Move the binary autologin to /usr/sbin&lt;br /&gt;
{{Cmd|&amp;amp;#35; mv autologin /usr/sbin/ }}&lt;br /&gt;
&lt;br /&gt;
== Editing /etc/inittab ==&lt;br /&gt;
&lt;br /&gt;
Open /etc/inittab&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;amp;#35; vi /etc/inittab }}&lt;br /&gt;
&lt;br /&gt;
replace each &amp;quot;&#039;&#039;:respawn:/sbin/getty&#039;&#039;&amp;quot; with &amp;quot;&#039;&#039;:respawn:/sbin/getty -n -l /usr/sbin/autologin&#039;&#039;&amp;quot;&lt;br /&gt;
* The getty&#039;s &#039;&#039;&#039;-n&#039;&#039;&#039; flag do not prompt the user for a login name&lt;br /&gt;
* The getty&#039;s &#039;&#039;&#039;-l&#039;&#039;&#039; flag invokes a custom login instead of /bin/login; in our case it is set to invoke /usr/sbin/autologin&lt;br /&gt;
&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
It is possible to remove the autologin.c file, the C compiler and the &#039;&#039;&#039;musl-dev&#039;&#039;&#039; package&lt;br /&gt;
{{Cmd|&amp;amp;#35; rm autologin.c &lt;br /&gt;
&amp;amp;#35; apk del tcc&lt;br /&gt;
&amp;amp;#35; apk del musl-dev}}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# http://littlesvr.ca/linux-stuff/articles/autologinconsole/autologinconsole.php&lt;br /&gt;
# https://wiki.gumstix.com/index.php/AutoLogin&lt;/div&gt;</summary>
		<author><name>MarcoDG</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=TTY_Autologin&amp;diff=25095</id>
		<title>TTY Autologin</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=TTY_Autologin&amp;diff=25095"/>
		<updated>2023-09-10T19:43:35Z</updated>

		<summary type="html">&lt;p&gt;MarcoDG: Added references&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;What follows is one from many different ways to get autologin.&lt;br /&gt;
&lt;br /&gt;
== How ==&lt;br /&gt;
# Writing a wrapper, called autologin, around /bin/login and moving it in /usr/sbin/&lt;br /&gt;
# Editing /etc/inittab specifying the use of /usr/sbin/autologin instead of /bin/login&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* A C compiler&lt;br /&gt;
* The &#039;&#039;&#039;&#039;&#039;musl-dev&#039;&#039;&#039;&#039;&#039; package which contains the C standard library&lt;br /&gt;
&lt;br /&gt;
==== Example on how to assolve the prerequisites: ====&lt;br /&gt;
{{Cmd|&amp;amp;#35; apk add --repository https://dl-cdn.alpinelinux.org/alpine/edge/testing tcc&lt;br /&gt;
&amp;amp;#35; apk add musl-dev }}&lt;br /&gt;
&lt;br /&gt;
== Writing the autologin.c program ==&lt;br /&gt;
&lt;br /&gt;
Create a file; in this example called autologin.c&lt;br /&gt;
{{Cmd|&amp;amp;#35; vi autologin.c }}&lt;br /&gt;
&lt;br /&gt;
Write into it the following C program.&lt;br /&gt;
&lt;br /&gt;
{{ cmd|&amp;amp;#35;include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() &lt;br /&gt;
{&lt;br /&gt;
    execlp( &amp;quot;login&amp;quot;, &amp;quot;login&amp;quot;, &amp;quot;-f&amp;quot;, &amp;quot;root&amp;quot;, 0);&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The only thing it does is a system call to execute the &#039;&#039;login&#039;&#039; binary (part of busybox) which will be searched in PATH.&lt;br /&gt;
&lt;br /&gt;
As parameters are passed:&lt;br /&gt;
* &#039;&#039;&#039;-f&#039;&#039;&#039;  flag which stands for &amp;quot;Do not authenticate (user already authenticated)&amp;quot;&lt;br /&gt;
* &#039;&#039;username&#039;&#039; in this example is &#039;&#039;root&#039;&#039; but if you created a new user, the user username can be used instead.&lt;br /&gt;
&lt;br /&gt;
== Compiling the autologin.c program ==&lt;br /&gt;
If using tcc:&lt;br /&gt;
{{Cmd|&amp;amp;#35; tcc -o autologin autologin.c }}&lt;br /&gt;
&lt;br /&gt;
Move the binary autologin to /usr/sbin&lt;br /&gt;
{{Cmd|&amp;amp;#35; mv autologin /usr/sbin/ }}&lt;br /&gt;
&lt;br /&gt;
== Editing /etc/inittab ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;amp;#35; sed -i &#039;s@:respawn:/sbin/getty@:respawn:/sbin/getty -n -l /usr/sbin/autologin@g&#039; /etc/inittab }}&lt;br /&gt;
&lt;br /&gt;
The above command:&lt;br /&gt;
* replaces &amp;quot;&#039;&#039;:respawn:/sbin/getty&#039;&#039;&amp;quot; with &amp;quot;&#039;&#039;:respawn:/sbin/getty -n -l /usr/sbin/autologin&#039;&#039;&amp;quot;&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;@&#039;&#039;&#039;&amp;quot; is used as a delimiter&lt;br /&gt;
* The &#039;&#039;&#039;-i&#039;&#039;&#039; flag edits the file in-place&lt;br /&gt;
* The getty&#039;s &#039;&#039;&#039;-n&#039;&#039;&#039; flag do not prompt the user for a login name&lt;br /&gt;
* The getty&#039;s &#039;&#039;&#039;-l&#039;&#039;&#039; flag invokes a custom login instead of /bin/login; in our case it is set to invoke /usr/sbin/autologin&lt;br /&gt;
&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
It is possible to remove the autologin.c file, the C compiler and the &#039;&#039;&#039;musl-dev&#039;&#039;&#039; package&lt;br /&gt;
{{Cmd|&amp;amp;#35; rm autologin.c &lt;br /&gt;
&amp;amp;#35; apk del tcc&lt;br /&gt;
&amp;amp;#35; apk del musl-dev}}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# http://littlesvr.ca/linux-stuff/articles/autologinconsole/autologinconsole.php&lt;br /&gt;
# https://wiki.gumstix.com/index.php/AutoLogin&lt;/div&gt;</summary>
		<author><name>MarcoDG</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Tutorials_and_Howtos&amp;diff=25094</id>
		<title>Tutorials and Howtos</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Tutorials_and_Howtos&amp;diff=25094"/>
		<updated>2023-09-10T19:32:46Z</updated>

		<summary type="html">&lt;p&gt;MarcoDG: Adding the just created &amp;quot;TTY Autologin&amp;quot; page in &amp;quot;Miscellaneous&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Todo|This material has been re-organized..., but grouping should be checked: &#039;&#039;&#039;Howtos are smaller articles&#039;&#039;&#039; and &#039;&#039;&#039;tutorials are more detailed document&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
[[Image:package_edutainment.svg|right|link=]]&lt;br /&gt;
{{TOC left}}&lt;br /&gt;
&#039;&#039;&#039;Welcome to Tutorials and Howtos, a place of basic and advanced configuration tasks for your Alpine Linux.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The tutorials are hands-on&#039;&#039;&#039; and the reader is expected to try and achieve the goals described in each step, possibly with the help of a good example. The output in one step is the starting point for the following step.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Howtos are smaller articles&#039;&#039;&#039; explaining how to perform a particular task with Alpine Linux, that expects a minimal knowledge from reader to perform actions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039; contributions on those pages must be complete articles as well as requesting topics to be covered, don&#039;t override already made contributions. If you want to request a topic, please add your request in this page&#039;s [[Talk:Tutorials_and_Howtos|Discussion]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
= Howtos =&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
* [[Ansible]] &#039;&#039;(Configuration management)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
* [[Awstats]] &#039;&#039;(Free log file analyzer)&#039;&#039;&lt;br /&gt;
* [[Cacti: traffic analysis and monitoring network]] &#039;&#039;(Front-end for rrdtool networking monitor)&#039;&#039;&lt;br /&gt;
* [[Cvechecker]] &#039;&#039;(Compare installed packages for Common Vulnerabilities Exposure)&#039;&#039; &amp;lt;!-- Monitoring and Security --&amp;gt;&lt;br /&gt;
* [[Linfo]]&lt;br /&gt;
* [[Obtaining user information via SNMP]] &#039;&#039;(Using squark-auth-snmp as a Squid authentication helper)&#039;&#039; &amp;lt;!-- Networking and Server, &amp;lt;== Using squark-auth-snmp --&amp;gt;&lt;br /&gt;
* [[PhpSysInfo]] &#039;&#039;(A simple application that displays information about the host it&#039;s running on)&#039;&#039;&lt;br /&gt;
* [[Matomo]] &#039;&#039;(A real time web analytics software program)&#039;&#039;&lt;br /&gt;
* [[Setting up A Network Monitoring and Inventory System]] &#039;&#039;(Nagios + OpenAudit and related components)&#039;&#039; &amp;lt;!-- draft, solution, Networking and Monitoring and Server --&amp;gt;&lt;br /&gt;
** [[Setting up NRPE daemon]] &#039;&#039;(Performs remote Nagios checks)&#039;&#039; &amp;lt;!-- Networking and Monitoring --&amp;gt;&lt;br /&gt;
* [[Setting Up Fprobe And Ntop|Ntop]] &#039;&#039;(NetFlow collection and analysis using a remote fprobe instance; for alpine 3.10-3.12 only)&#039;&#039; &amp;lt;!-- Networking and Monitoring --&amp;gt;&lt;br /&gt;
* [[Setting up lm_sensors]]&lt;br /&gt;
* [[SqStat]] &#039;&#039;(Script to look at active squid users connections)&#039;&#039;&lt;br /&gt;
* [[Traffic monitoring]] &amp;lt;!-- Networking and Monitoring --&amp;gt;&lt;br /&gt;
** [[Setting up monitoring using rrdtool (and rrdcollect)]]&lt;br /&gt;
** [[Setting up traffic monitoring using rrdtool (and snmp)]] &amp;lt;!-- Monitoring --&amp;gt;&lt;br /&gt;
* [[Zabbix|Zabbix - the professional complete manager]] &#039;&#039;(Monitor and track the status of network services and hardware)&#039;&#039;&lt;br /&gt;
* [[ZoneMinder video camera security and surveillance]]&lt;br /&gt;
&lt;br /&gt;
=== Networking ===&lt;br /&gt;
&lt;br /&gt;
* Alpine Wall &#039;&#039;(a new firewall management framework)&#039;&#039;&lt;br /&gt;
** [[Alpine Wall]]&lt;br /&gt;
** [https://git.alpinelinux.org/awall/about/ Alpine Wall User&#039;s Guide]&lt;br /&gt;
** [[How-To Alpine Wall]]&lt;br /&gt;
* [[Freeradius Active Directory Integration]]&lt;br /&gt;
* [[GNUnet]]&lt;br /&gt;
* [[Setting up a OpenVPN server|OpenVPN server]] &#039;&#039;(Allowing single users or devices to remotely connect to your network)&#039;&#039;&lt;br /&gt;
* [[OpenVSwitch]]&lt;br /&gt;
* [[Using Alpine on Windows domain with IPSEC isolation]]&lt;br /&gt;
* [[Configure a Wireguard interface (wg)|Wireguard]]&lt;br /&gt;
&lt;br /&gt;
=== Telephony ===&lt;br /&gt;
&lt;br /&gt;
* [[FreePBX|FreePBX on Alpine Linux]]&lt;br /&gt;
* [[Setting up Zaptel/Asterisk on Alpine]]&lt;br /&gt;
* [[Kamailio]] &#039;&#039;(SIP Server, formerly OpenSER)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Backup and data migration ==&lt;br /&gt;
&lt;br /&gt;
* [[Alpine local backup|Alpine local backup (lbu)]] &#039;&#039;(Permanently store your modifications in case your box needs reboot)&#039;&#039;&lt;br /&gt;
** [[Back Up a Flash Memory Installation]]&lt;br /&gt;
** [[Manually editing a existing apkovl]]&lt;br /&gt;
* [[Migrating data]]&lt;br /&gt;
* [[Rsnapshot]] - setting up periodic backups&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
* [[Alpine and UEFI]]&lt;br /&gt;
* [[Default applications]]&lt;br /&gt;
* Desktop cloud&lt;br /&gt;
** [[Nextcloud]] &#039;&#039;(Self hostable cloud suite - Dropbox Alternative)&#039;&#039;&lt;br /&gt;
* [[Desktop environments and Window managers]] (overall information only)&lt;br /&gt;
* [[Printer Setup]]&lt;br /&gt;
* [[Remote Desktop Server]]&lt;br /&gt;
* Sound Systems&lt;br /&gt;
** [[ALSA]]&lt;br /&gt;
** [[PipeWire]]&lt;br /&gt;
** [[PulseAudio]]&lt;br /&gt;
* [[Suspend on LID close]]&lt;br /&gt;
* [[Alpine setup scripts#setup-xorg-base|Xorg Setup]]&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
&lt;br /&gt;
* [[Bluetooth]] - Instructions for installing and configuring Bluetooth&lt;br /&gt;
* [[Bonding]] - Bond (or aggregate) multiple ethernet interfaces&lt;br /&gt;
* [[Bridge]] - Configuring a network bridge&lt;br /&gt;
** [[Bridge wlan0 to eth0]]&lt;br /&gt;
* [[Configure Networking]]&lt;br /&gt;
* [[How to configure static routes]]&lt;br /&gt;
* Modem&lt;br /&gt;
** [[Using HSDPA modem]]&lt;br /&gt;
** [[Using serial modem]]&lt;br /&gt;
* [[Multi ISP]] &#039;&#039;(Dual-ISP setup with load-balancing and automatic failover)&#039;&#039;&lt;br /&gt;
* [[PXE boot]]&lt;br /&gt;
* Wi-Fi&lt;br /&gt;
** [[Wi-Fi|Connecting to a wireless access point]]&lt;br /&gt;
** [[How to setup a wireless access point]] &#039;&#039;(Setting up Secure Wireless AP w/ WPA encryption with bridge to wired network)&#039;&#039;&lt;br /&gt;
* [[VLAN]]&lt;br /&gt;
&lt;br /&gt;
== Other Architectures ==&lt;br /&gt;
&lt;br /&gt;
=== ARM ===&lt;br /&gt;
&lt;br /&gt;
* [[Alpine on ARM]]&lt;br /&gt;
&lt;br /&gt;
==== Raspberry Pi ====&lt;br /&gt;
&lt;br /&gt;
* [[Raspberry Pi Bluetooth Speaker|Raspberry Pi - Bluetooth Speaker]]&lt;br /&gt;
* [[Raspberry Pi|Raspberry Pi - Installation]]&lt;br /&gt;
* [[Linux Router with VPN on a Raspberry Pi|Raspberry Pi - Router with VPN]]&lt;br /&gt;
* [[Linux Router with VPN on a Raspberry Pi (IPv6)|Raspberry Pi - Router with VPN (IPv6)]]&lt;br /&gt;
* [[Classic install or sys mode on Raspberry Pi|Raspberry Pi - Sys mode install]]&lt;br /&gt;
* [[RPI Video Receiver|Raspberry Pi - Video Receiver]] &#039;&#039;(network video decoder using Rasperry Pi and omxplayer)&#039;&#039;&lt;br /&gt;
* [[Raspberry Pi 3 - Browser Client]] - kiosk or digital sign&lt;br /&gt;
* [[Raspberry Pi 3 - Configuring it as wireless access point -AP Mode]]&lt;br /&gt;
* [[Raspberry Pi 3 - Setting Up Bluetooth]]&lt;br /&gt;
* [[Raspberry Pi 4 - Persistent system acting as a NAS and Time Machine]]&lt;br /&gt;
* [[How to set up Alpine as a wireless router|Raspberry Pi Zero W - Wireless router]] &#039;&#039;(Setting up a firewalled, Wireless AP with wired network on a Pi Zero W)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== IBM Z (IBM z Systems) ===&lt;br /&gt;
&lt;br /&gt;
* [[s390x|s390x - Installation]]&lt;br /&gt;
&lt;br /&gt;
=== PowerPC ===&lt;br /&gt;
&lt;br /&gt;
* [[Ppc64le|Powerpc64le - Installation]]&lt;br /&gt;
&lt;br /&gt;
== Post-Install ==&lt;br /&gt;
&lt;br /&gt;
* [[CPU frequency scaling]]&lt;br /&gt;
* [[Repositories#Enabling_the_community_repository|Enable Community repository]] &#039;&#039;(Providing additional packages)&#039;&#039;&lt;br /&gt;
* [[Enable Serial Console on Boot]]&lt;br /&gt;
* [[Alpine Linux Init System|Init System (OpenRC)]] &#039;&#039;(Configure a service to automatically boot at next reboot)&#039;&#039;&lt;br /&gt;
** [[Multiple Instances of Services|Init System - Multiple Instances of Services]]&lt;br /&gt;
** [[Writing Init Scripts|Init System - Writing Init Scripts]]&lt;br /&gt;
* [[Installing Oracle Java|Oracle Java (installation)]]&lt;br /&gt;
* [[IGMPproxy]]&lt;br /&gt;
* [[Alpine Linux package management|Package Management (apk)]] &#039;&#039;(How to add/remove packages on your Alpine)&#039;&#039;&lt;br /&gt;
** [[Comparison with other distros|Package Management - Comparison with other distros]]&lt;br /&gt;
* [[Running glibc programs]]&lt;br /&gt;
* [[Setting up a new user]]&lt;br /&gt;
* [[Upgrading Alpine]]&lt;br /&gt;
&lt;br /&gt;
== Remote Administration ==&lt;br /&gt;
&lt;br /&gt;
* ACF&lt;br /&gt;
** [[Changing passwords for ACF|ACF - changing passwords]]&lt;br /&gt;
** [[Generating SSL certs with ACF]] &amp;lt;!-- Generating SSL certs with ACF 1.9 --&amp;gt;&lt;br /&gt;
** [[setup-acf| ACF - setup]] &#039;&#039;(Configures ACF (webconfiguration/webmin) so you can manage your box through https)&#039;&#039;&lt;br /&gt;
* [[Setting up a SSH server]] &#039;&#039;(Using ssh is a good way to administer your box remotely)&#039;&#039;&lt;br /&gt;
** [[HOWTO OpenSSH 2FA with password and Google Authenticator |OpenSSH 2FA]] &#039;&#039;(A simple two factor setup for OpenSSH)&#039;&#039;&lt;br /&gt;
* [[OpenVCP]] &#039;&#039;(VServer Control Panel)&#039;&#039;&lt;br /&gt;
* [[PhpMyAdmin]] &#039;&#039;(Web-based administration tool for MYSQL)&#039;&#039;&lt;br /&gt;
* [[PhpPgAdmin]] &#039;&#039;(Web-based administration tool for PostgreSQL)&#039;&#039;&lt;br /&gt;
* [[Webmin]] &#039;&#039;(A web-based interface for Linux system)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
&lt;br /&gt;
* [[Hosting services on Alpine]] &#039;&#039;(Hosting mail, webservices and other services)&#039;&#039;&lt;br /&gt;
* [[Hosting Web/Email services on Alpine]]&lt;br /&gt;
&lt;br /&gt;
=== DNS ===&lt;br /&gt;
&lt;br /&gt;
* [[DNSCrypt-Proxy]] &#039;&#039;Encrypt and authenticate DNS calls from your system&#039;&#039;&lt;br /&gt;
* [[Setting up nsd DNS server]]&lt;br /&gt;
* [[Setting up unbound DNS server]]&lt;br /&gt;
* [[TinyDNS Format]]&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
* [[Apache]]&lt;br /&gt;
** [[Apache with php-fpm]]&lt;br /&gt;
** [[Setting Up Apache with PHP]]&lt;br /&gt;
** [[Apache authentication: NTLM Single Signon]]&lt;br /&gt;
* [[Darkhttpd]]&lt;br /&gt;
* [[Lighttpd]]&lt;br /&gt;
** [[Lighttpd Advanced security]]&lt;br /&gt;
** [[Setting Up Lighttpd With FastCGI]]&lt;br /&gt;
* [[Nginx]]&lt;br /&gt;
** [[Nginx as reverse proxy with acme (letsencrypt)]]&lt;br /&gt;
** [[Nginx with PHP]]&lt;br /&gt;
* Squid Proxy&lt;br /&gt;
** [[Obtaining user information via SNMP]] &#039;&#039;(Using squark-auth-snmp as a Squid authentication helper)&#039;&#039; &amp;lt;!-- Networking and Server, &amp;lt;== Using squark-auth-snmp --&amp;gt;&lt;br /&gt;
** [[Setting up Explicit Squid Proxy]]&lt;br /&gt;
** [[Setting up Transparent Squid Proxy]] &#039;&#039;(Covers Squid proxy and URL Filtering system)&#039;&#039;&lt;br /&gt;
** [[SqStat]] &#039;&#039;(Script to look at active squid users connections)&#039;&#039;&lt;br /&gt;
* [[Tomcat]]&lt;br /&gt;
&lt;br /&gt;
==== Hostable Content ====&lt;br /&gt;
&lt;br /&gt;
* [[DokuWiki]]&lt;br /&gt;
* [[Drupal]] &#039;&#039;(Content Management System (CMS) written in PHP)&#039;&#039;&lt;br /&gt;
* [[Kopano]] &#039;&#039;(Microsoft Outlook compatible Groupware)&#039;&#039;&lt;br /&gt;
* [[Mahara]] &#039;&#039;(E-portfolio and social networking system)&#039;&#039;&lt;br /&gt;
* [[MediaWiki]] &#039;&#039;(Free web-based wiki software application)&#039;&#039;&lt;br /&gt;
* [[Pastebin]] &#039;&#039;(Pastebin software application)&#039;&#039;&lt;br /&gt;
* [[WordPress]] &#039;&#039;(Web software to create website or blog)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
&lt;br /&gt;
* [[How To Setup Your Own IRC Network]] &#039;&#039;(Using {{Pkg|charybdis}} and {{Pkg|atheme-iris}})&#039;&#039;&lt;br /&gt;
* [[NgIRCd]] &#039;&#039;(Server for Internet Relay Chat/IRC)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
* Exim/Dovecot&lt;br /&gt;
** [[Small-Time Email with Exim and Dovecot]] &#039;&#039;(A simple configuration for your home network.)&lt;br /&gt;
** [[Setting up dovecot with imap and ssl]]&lt;br /&gt;
* [[relay email to gmail (msmtp, mailx, sendmail]]&lt;br /&gt;
* [[Roundcube]] &#039;&#039;(Webmail system)&#039;&#039;&lt;br /&gt;
* [[Setting up postfix with virtual domains]]&lt;br /&gt;
* Server protection&lt;br /&gt;
** [[Protecting your email server with Alpine]]&lt;br /&gt;
** [[Setting up clamsmtp]]&lt;br /&gt;
&lt;br /&gt;
=== Other Servers ===&lt;br /&gt;
&lt;br /&gt;
* [[Chrony and GPSD | Chrony, gpsd, and a garmin LVC 18 as a Stratum 1 NTP source ]]&lt;br /&gt;
* [[Glpi]] &#039;&#039;(Manage inventory of technical resources)&#039;&#039;&lt;br /&gt;
* [[How to setup a Alpine Linux mirror]]&lt;br /&gt;
* [[Setting up an NFS server|nfs-server]]&lt;br /&gt;
* [[Odoo]]&lt;br /&gt;
* [[Configure OpenLDAP | OpenLDAP]] &#039;&#039;(Installing and configuring the Alpine package for OpenLDAP)&#039;&#039;&lt;br /&gt;
* [[Setting up a samba-ad-dc|samba-ad-dc]] &#039;&#039;(Active Directory compatible domain controller)&#039;&#039;&lt;br /&gt;
* [[Setting up a Samba server|samba-server]] &#039;&#039;(standard file sharing)&#039;&#039;&lt;br /&gt;
* [[Setting up Transmission (bittorrent) with Clutch WebUI]]&lt;br /&gt;
* [[UniFi Controller]]&lt;br /&gt;
&lt;br /&gt;
=== Software development ===&lt;br /&gt;
&lt;br /&gt;
* [[Cgit]]&lt;br /&gt;
* [[OsTicket]] &#039;&#039;(Ticket system)&#039;&#039;&lt;br /&gt;
* [[Patchwork]] &#039;&#039;(Patch review management system)&#039;&#039;&lt;br /&gt;
* [[Redmine]] &#039;&#039;(Project management system)&#039;&#039;&lt;br /&gt;
* [[Request Tracker]] &#039;&#039;(Ticket system)&#039;&#039;&lt;br /&gt;
* [[Setting up trac wiki|Trac]] &#039;&#039;(Enhanced wiki and issue tracking system for software development projects)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
&lt;br /&gt;
* [[Setting up disks manually|Disk setup (manual)]]&lt;br /&gt;
* [[Filesystems]]&lt;br /&gt;
** [[Burning ISOs]]&lt;br /&gt;
* [[Setting up iSCSI|iSCSI Setup]]&lt;br /&gt;
** [[iSCSI Raid and Clustered File Systems]]&lt;br /&gt;
** [[Linux iSCSI Target (TCM)|iSCSI Target (TCM)/LinuxIO (LIO)]]&lt;br /&gt;
** [[Linux iSCSI Target (tgt)|User space iSCSI Target (tgt)]]&lt;br /&gt;
* [[Setting up Logical Volumes with LVM|LVM Setup]]&lt;br /&gt;
** [[Setting up LVM on GPT-labeled disks|LVM on GPT-labeled disks]]&lt;br /&gt;
** [[Installing on GPT LVM|LVM on GPT-labeled disks (updated)]]&lt;br /&gt;
** [[LVM on LUKS]]&lt;br /&gt;
* RAID&lt;br /&gt;
** [[Raid Administration]]&lt;br /&gt;
** [[Setting up a software RAID array]]&lt;br /&gt;
* ZFS&lt;br /&gt;
** [[Root on ZFS with native encryption]]&lt;br /&gt;
** [[Setting up ZFS on LUKS]]&lt;br /&gt;
** [[Setting up ZFS with native encryption]]&lt;br /&gt;
** [[ZFS scrub and trim]]&lt;br /&gt;
&lt;br /&gt;
== Virtualization ==&lt;br /&gt;
&lt;br /&gt;
* [[Docker]]&lt;br /&gt;
* [[Installing Alpine in a virtual machine]]&lt;br /&gt;
** [[Install Alpine on VMware ESXi]]&lt;br /&gt;
* [[KVM]] &#039;&#039;(Setting up Alpine as a KVM hypervisor)&#039;&#039;&lt;br /&gt;
* [[LXC]] &#039;&#039;(Setting up a Linux container in Alpine Linux)&#039;&#039;&lt;br /&gt;
* [[QEMU]]&lt;br /&gt;
* Xen&lt;br /&gt;
** [[Xen Dom0]] &#039;&#039;(Setting up Alpine as a dom0 for Xen hypervisor)&#039;&#039;&lt;br /&gt;
** [[Xen Dom0 on USB or SD]]&lt;br /&gt;
** [[Create Alpine Linux PV DomU|Xen DomU (paravirtualized)]]&lt;br /&gt;
** [[Xen LiveCD]]&lt;br /&gt;
** [[Xen PCI Passthrough]]&lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&lt;br /&gt;
* [[TTY_Autologin|TTY Autologin]]&lt;br /&gt;
* [[Kexec|Faster rebooting with kexec]]&lt;br /&gt;
* [[Dynamic Multipoint VPN (DMVPN)]] combined with [[Small Office Services]]&lt;br /&gt;
* [[DIY Fully working Alpine Linux for Allwinner and Other ARM SOCs]]&lt;br /&gt;
* [[Experiences with OpenVPN-client on ALIX.2D3]]&lt;br /&gt;
* [[Fault Tolerant Routing with Alpine Linux]]&lt;br /&gt;
* [[High Availability High Performance Web Cache]] &#039;&#039;(uCarp + HAProxy for High Availability Services such as Squid web proxy)&#039;&#039;&lt;br /&gt;
* [[Linux iSCSI Target (TCM)]]&lt;br /&gt;
* [[ISP Mail Server 3.x HowTo]]] &#039;&#039;(Postfix+PostfixAdmin+DoveCot+Roundcube+ClamAV+Spamd - A full-service ISP mail server)&#039;&#039;&lt;br /&gt;
* [[Replacing non-Alpine Linux with Alpine remotely]]&lt;br /&gt;
* [[Setting up A Network Monitoring and Inventory System]] &#039;&#039;(Nagios + OpenAudit and related components)&#039;&#039; &amp;lt;!-- draft --&amp;gt;&lt;br /&gt;
* [[Streaming Security Camera Video with VLC]]&lt;br /&gt;
&lt;br /&gt;
== Newbie corner ==&lt;br /&gt;
&lt;br /&gt;
* [[How to get regular stuff working]] &#039;&#039;some notes on need-to-know topics&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Servers ==&lt;br /&gt;
&lt;br /&gt;
* [[Alpine production deploy]]&lt;br /&gt;
** [[Production Web server: Lighttpd|Production web server: Lighttpd‎‎]]&lt;br /&gt;
** [[MySQL|Production database: MySQL]]&lt;br /&gt;
** [[Production LAMP system: Lighttpd + PHP + MySQL‎‎]]&lt;br /&gt;
* Alpine production monitoring&lt;br /&gt;
** [[Cacti: traffic analysis and monitoring network]]&lt;br /&gt;
** [[Zabbix|Zabbix - the professional complete manager]]&lt;br /&gt;
* Kubernetes&lt;br /&gt;
** [[K8s]] Building a K8s Cluster on Alpine Linux&lt;/div&gt;</summary>
		<author><name>MarcoDG</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=TTY_Autologin&amp;diff=25093</id>
		<title>TTY Autologin</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=TTY_Autologin&amp;diff=25093"/>
		<updated>2023-09-10T19:30:18Z</updated>

		<summary type="html">&lt;p&gt;MarcoDG: Creating the &amp;quot;TTY autologin&amp;quot; page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;What follows is one from many different ways to get autologin.&lt;br /&gt;
&lt;br /&gt;
== How ==&lt;br /&gt;
# Writing a wrapper, called autologin, around /bin/login and moving it in /usr/sbin/&lt;br /&gt;
# Editing /etc/inittab specifying the use of /usr/sbin/autologin instead of /bin/login&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* A C compiler&lt;br /&gt;
* The &#039;&#039;&#039;&#039;&#039;musl-dev&#039;&#039;&#039;&#039;&#039; package which contains the C standard library&lt;br /&gt;
&lt;br /&gt;
==== Example on how to assolve the prerequisites: ====&lt;br /&gt;
{{Cmd|&amp;amp;#35; apk add --repository https://dl-cdn.alpinelinux.org/alpine/edge/testing tcc&lt;br /&gt;
&amp;amp;#35; apk add musl-dev }}&lt;br /&gt;
&lt;br /&gt;
== Writing the autologin.c program ==&lt;br /&gt;
&lt;br /&gt;
Create a file; in this example called autologin.c&lt;br /&gt;
{{Cmd|&amp;amp;#35; vi autologin.c }}&lt;br /&gt;
&lt;br /&gt;
Write into it the following C program.&lt;br /&gt;
&lt;br /&gt;
{{ cmd|&amp;amp;#35;include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() &lt;br /&gt;
{&lt;br /&gt;
    execlp( &amp;quot;login&amp;quot;, &amp;quot;login&amp;quot;, &amp;quot;-f&amp;quot;, &amp;quot;root&amp;quot;, 0);&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The only thing it does is a system call to execute the &#039;&#039;login&#039;&#039; binary (part of busybox) which will be searched in PATH.&lt;br /&gt;
&lt;br /&gt;
As parameters are passed:&lt;br /&gt;
* &#039;&#039;&#039;-f&#039;&#039;&#039;  flag which stands for &amp;quot;Do not authenticate (user already authenticated)&amp;quot;&lt;br /&gt;
* &#039;&#039;username&#039;&#039; in this example is &#039;&#039;root&#039;&#039; but if you created a new user, the user username can be used instead.&lt;br /&gt;
&lt;br /&gt;
== Compiling the autologin.c program ==&lt;br /&gt;
If using tcc:&lt;br /&gt;
{{Cmd|&amp;amp;#35; tcc -o autologin autologin.c }}&lt;br /&gt;
&lt;br /&gt;
Move the binary autologin to /usr/sbin&lt;br /&gt;
{{Cmd|&amp;amp;#35; mv autologin /usr/sbin/ }}&lt;br /&gt;
&lt;br /&gt;
== Editing /etc/inittab ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;amp;#35; sed -i &#039;s@:respawn:/sbin/getty@:respawn:/sbin/getty -n -l /usr/sbin/autologin@g&#039; /etc/inittab }}&lt;br /&gt;
&lt;br /&gt;
The above command:&lt;br /&gt;
* replaces &amp;quot;&#039;&#039;:respawn:/sbin/getty&#039;&#039;&amp;quot; with &amp;quot;&#039;&#039;:respawn:/sbin/getty -n -l /usr/sbin/autologin&#039;&#039;&amp;quot;&lt;br /&gt;
* &amp;quot;&#039;&#039;&#039;@&#039;&#039;&#039;&amp;quot; is used as a delimiter&lt;br /&gt;
* The &#039;&#039;&#039;-i&#039;&#039;&#039; flag edits the file in-place&lt;br /&gt;
* The getty&#039;s &#039;&#039;&#039;-n&#039;&#039;&#039; flag do not prompt the user for a login name&lt;br /&gt;
* The getty&#039;s &#039;&#039;&#039;-l&#039;&#039;&#039; flag invokes a custom login instead of /bin/login; in our case it is set to invoke /usr/sbin/autologin&lt;br /&gt;
&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
It is possible to remove the autologin.c file, the C compiler and the &#039;&#039;&#039;musl-dev&#039;&#039;&#039; package&lt;br /&gt;
{{Cmd|&amp;amp;#35; rm autologin.c &lt;br /&gt;
&amp;amp;#35; apk del tcc&lt;br /&gt;
&amp;amp;#35; apk del musl-dev}}&lt;/div&gt;</summary>
		<author><name>MarcoDG</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=River&amp;diff=24845</id>
		<title>River</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=River&amp;diff=24845"/>
		<updated>2023-08-30T15:47:44Z</updated>

		<summary type="html">&lt;p&gt;MarcoDG: minor corrections: missing &amp;quot;river-doc&amp;quot; when it says &amp;quot;Install River and the documentation&amp;quot;, without it it is impossible to perform the later &amp;quot;install -Dm0755 /usr/share/doc/river/examples/init -t ~/.config/river&amp;quot; and &amp;quot;adduser $USER input&amp;quot; was repeated twice.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://github.com/riverwm/river River] is a dynamic tiling [[Wayland]] compositor. An introduction to River can be found in [https://isaacfreund.com/blog/river-intro/ this blog post] by the developer for the 0.1.0 release.  &lt;br /&gt;
&lt;br /&gt;
This wiki was written starting from a fresh install using the Alpine 3.14.2 x86_64 extended .iso. The steps begin from the first reboot after running setup-alpine and performing a sys install to disk. &lt;br /&gt;
&lt;br /&gt;
Many steps below were taken from the [[Sway|wiki entry for installing Sway]].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Login as root.&lt;br /&gt;
&lt;br /&gt;
Edit the repositories file and uncomment the community and testing repos. For 3.14.2, we need edge/community to get the correct software versions to support River:&lt;br /&gt;
{{Cat|/etc/apk/repositories|&lt;br /&gt;
#http://dl-cdn.alpinelinux.org/alpine/v3.17/main&lt;br /&gt;
#http://dl-cdn.alpinelinux.org/alpine/v3.17/community&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/edge/main&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/edge/community&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/edge/testing&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Install &amp;amp; configure {{Pkg|eudev}}:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;amp;#35; apk update&lt;br /&gt;
&amp;amp;#35; setup-devd udev}}&lt;br /&gt;
&lt;br /&gt;
Then install the mesa gallium drivers:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|mesa-dri-gallium}}}}&lt;br /&gt;
&lt;br /&gt;
The following links contain guides for setting up the video stack.&lt;br /&gt;
&lt;br /&gt;
* [[Intel Video]]&lt;br /&gt;
* [[Radeon Video]]&lt;br /&gt;
&lt;br /&gt;
Install River and the documentation:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|river}} {{Pkg|river-doc}}}}&lt;br /&gt;
&lt;br /&gt;
Install your choice of additional packages:&lt;br /&gt;
&lt;br /&gt;
This list includes icons, fonts, and a terminal emulator named foot which is the default in River&#039;s sample init file that we will use later.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|adwaita-icon-theme}} {{Pkg|foot}} {{Pkg|ttf-dejavu}}}}&lt;br /&gt;
&lt;br /&gt;
Set seatd to start automatically at next boot and also manually start it for this session:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add {{Pkg|seatd}}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; rc-service {{Pkg|seatd}} start}}&lt;br /&gt;
&lt;br /&gt;
Create a new user and update group membership:&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;# adduser $USER seat&lt;br /&gt;
# adduser $USER input&lt;br /&gt;
# adduser $USER video&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Logout and log back in as the new user.&lt;br /&gt;
&lt;br /&gt;
== Running River ==&lt;br /&gt;
&lt;br /&gt;
Before running River for the first time, copy the sample init file to ~/.config:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|install -Dm0755 /usr/share/doc/river/examples/init -t ~/.config/river}}&lt;br /&gt;
&lt;br /&gt;
Set [[Wayland#XDG_RUNTIME_DIR|XDG_RUNTIME_DIR]] and then start River:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|1=river}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Following are a few notes that are most certainly not related to River whatsoever but rather discovered while running River so I&#039;m tacking them onto the end of this wiki.&lt;br /&gt;
&lt;br /&gt;
Firefox 89.0.1 complains on launch &amp;quot;glxtest: libpci missing&amp;quot;, resolved by:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk add {{Pkg|pciutils-libs}}}}&lt;br /&gt;
&lt;br /&gt;
Firefox 89.0.1 complains continuously &amp;quot;Unable to load hand2 from the cursor theme&amp;quot;, resolved by:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|mkdir -p ~/.icons/default&lt;br /&gt;
ln -s /usr/share/icons/Adwaita/cursors .icons/default/cursors}}&lt;/div&gt;</summary>
		<author><name>MarcoDG</name></author>
	</entry>
</feed>