<?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=Cogitri</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=Cogitri"/>
	<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/wiki/Special:Contributions/Cogitri"/>
	<updated>2026-05-02T16:37:43Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.12.0&amp;diff=17378</id>
		<title>Release Notes for Alpine 3.12.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.12.0&amp;diff=17378"/>
		<updated>2020-05-08T11:57:22Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Mention apk integration in GNOME Software&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== aports ==&lt;br /&gt;
&lt;br /&gt;
===== python2 no longer provides python and python-devel =====&lt;br /&gt;
&lt;br /&gt;
python2 no longer provides python and python-devel, nothing does, it is now required that you explicitly depend on either python2 or python3, any new contributions that depend on python2 will be rejected summarily, and python2 is in the process of being **completely** removed&lt;br /&gt;
&lt;br /&gt;
===== llvm 10.0.0 =====&lt;br /&gt;
&lt;br /&gt;
llvm 10 is now the default in Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.alpinelinux.org/alpine/aports/commit/7a1323c27479fb967749c163f34483bc1196055d commit]&lt;br /&gt;
&lt;br /&gt;
===== Initial support for DLang =====&lt;br /&gt;
&lt;br /&gt;
We&#039;ve added initial support for the D language with this release. We now have GDC, the D compiler frontend using GCC, available on all arches but ppc64le and LDC, a D compiler using the LLVM backend, on x86, x86_64 and aarch64. Most things are built against LDC, since it offers superior optimization and a vastly newer versions of the D runtime and standard library. These contain many important bug fixes (especially on aarch64) and contain features required by many D applications.&lt;br /&gt;
&lt;br /&gt;
===== py3-setuptools now uses system python3 modules instead of vendored dependencies =====&lt;br /&gt;
&lt;br /&gt;
py3-setuptools now installs py3-packaging, py3-parsing, py3-appdirs, py3-six and py3-ordered-set from the system.&lt;br /&gt;
&lt;br /&gt;
The following commits are the ones responsible for this change:&lt;br /&gt;
&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=efca8852f37cb4028f234f92e2d035617f524820 py3-six] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=55e3496387ad3f2df387b2cf6bc84e85ef729833 py3-ordered-set] (new aport)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=cc1636b08fba58b629501d525d658aed4bcbeab2 py3-ordered-set] (move from testing to main)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=da743693eda54b9faf5086746b91506495fc689f py3-appdirs] (move from community to main)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=60efe787954008af546a5bde839db09f11682102 py3-appdirs] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=a50097b40bcf80a9aec201fef73a722206f43a0d py3-packaging] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=52ee5092c510657e9b1e8b4ae0104d405c9eac99 py3-parsing] (install manually)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=33ea734e2d28d88a3d545500c96b4c72b3e78432 py3-setuptools] (use system component)&lt;br /&gt;
&lt;br /&gt;
===== ncurses fixes =====&lt;br /&gt;
&lt;br /&gt;
A few fixes trickled in relating exclusively to Alpine Linux that affect ncurses:&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=762b9fd601983d8a6e6a60692158f3f22b1b60fe commit] the ncurses-lib package no longer depends on the ncurses-terminfo, which was too big at 7.5 MB, instead ncurses-lib now depends solely on the ncurses-terminfo-base package which weights at around 120 kB.&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=56aa7795fecc48561deb095995abd335e16ba515 commit] the ncurses-terminfo-base now includes the most common terminfo databases like tmux, screen, xterm-256color and also databases for packaged terminals like gnome-terminal, vte, konsole, alacritty, kitty, putty. All other terminfo databases are now in ncurses-terminfo.&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=1470a6c8e76491a8d059ebd4b7521c4bf20b837c commit] all terminals that have their terminfo databases provided by the ncurses-terminfo-base now depend on it.&lt;br /&gt;
&lt;br /&gt;
===== python3 no longer provides pip3, use py3-pip from community =====&lt;br /&gt;
&lt;br /&gt;
Python3 is now built with --without-ensurepip which removes pip3 and its libraries from it. Instead use the py3-pip pacakge which uses system components.&lt;br /&gt;
&lt;br /&gt;
===== BPF JIT support =====&lt;br /&gt;
&lt;br /&gt;
&amp;gt; TODO: Small preamble about BPF&lt;br /&gt;
&lt;br /&gt;
So it (BPF JIT) has been enabled by default in [https://git.alpinelinux.org/aports/commit/?id=3bf2313adc57fe6b36bf459ddca6d65a392609db 3bf2313adc57fe6b36bf459ddca6d65a392609db], and unprivileged BPF JIT has been disabled in [https://git.alpinelinux.org/aports/commit/?id=4e286992d5ed751f6ca60eb18d77313bb0868513 4e286992d5ed751f6ca60eb18d77313bb0868513].&lt;br /&gt;
&lt;br /&gt;
===== OpenRC now has a sane ordering of directories when configuring kernel parameters =====&lt;br /&gt;
&lt;br /&gt;
Configuring kernel parameters is done by having configuration files in specific locations like &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; and files ending with &amp;lt;code&amp;gt;.conf&amp;lt;/code&amp;gt; in certain directories like &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt;. Before 3.12.0 the ordering had no logical explanation and&lt;br /&gt;
surprised users that expected a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Starting with 3.12.0 the ordering is as follows:&lt;br /&gt;
&lt;br /&gt;
# /lib/sysctl.d/*.conf&lt;br /&gt;
# /usr/lib/sysctl.d/*.conf&lt;br /&gt;
# /run/sysctl.d/*.conf&lt;br /&gt;
# /etc/sysctl.conf&lt;br /&gt;
# /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/lib/sysctl.d&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/lib/sysctl.d&amp;lt;/code&amp;gt; are to be used by the distribution and packages. Alpine Linux installs its default configuration file in &amp;lt;code&amp;gt;/lib/sysctl.d/00-alpine.conf&amp;lt;/code&amp;gt;. Software installed via our package manager will install to either of those places.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/run/sysctl.d&amp;lt;/code&amp;gt; holds configuration that is created at run-time by daemons/services or at very early-boot. Neither the distribution nor the packaged software will install configuration to it, primarily because /run is in temporary memory. Configuration in this location that matches names the locations used by the distribution and packages will cause the latter not to be read and applied by the &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; holds configuration that is created and maintained by the local administrator, neither Alpine nor its packaged software will touch it, and configuration in that has the same name as in the location reserved for the distribution and packages, or the location for run-time configuration from daemons/services, will cause the latter to not be read and applied by the &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; is a historical location for this kind of configuration and is kept for the same reasons.&lt;br /&gt;
&lt;br /&gt;
===== OpenRC now has a sane ordering of directories when loading kernel modules =====&lt;br /&gt;
&lt;br /&gt;
Loading kernel modules during boot is done with the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; OpenRC service, which reads configuration files in certain locations and loads kernel modules with the modprobe utility from either busybox or util-linux.&lt;br /&gt;
&lt;br /&gt;
Starting with 3.12.0 a more logical ordering is adopted for which configuration files to read and ignore:&lt;br /&gt;
&lt;br /&gt;
# /lib/modules-load.d/*.conf&lt;br /&gt;
# /usr/lib/modules-load.d/*.conf&lt;br /&gt;
# /run/modules-load.d/*.conf&lt;br /&gt;
# /etc/modules&lt;br /&gt;
# /etc/modules-load.d/*.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/lib/modules-load.d&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/lib/modules-load.d&amp;lt;/code&amp;gt; are to be used by the distribution and packages. Software installed via our package manager will install to either of those places.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/run/modules-load.d&amp;lt;/code&amp;gt; holds configuration that is created at run-time by daemons/services or at very early-boot. Neither the distribution nor the packaged software will install configuration to it, primarily because /run is in temporary memory. Configuration in this location that matches names in the locations used by the distribution and packages will cause the latter not to be read and applied by the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/modules-load.d&amp;lt;/code&amp;gt; holds configuration that is created and maintained by the local administrator, neither Alpine nor its packaged software will touch it, and configuration in that has the same name as in the location reserved for the distribution and packages, or locations reserved for the run-time configuration of daemons/services, will cause the latter to not be read and applied by the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/modules&amp;lt;/code&amp;gt; is a historical location for this kind of configuration and is kept for the same reasons.&lt;br /&gt;
&lt;br /&gt;
===== Telegram Desktop is now available in the community repo =====&lt;br /&gt;
&lt;br /&gt;
See [https://git.alpinelinux.org/aports/commit/?id=184355fdc44bc2e12976d65518fe029d8a6e459d commit] that moved the package to the community repo for explanation.&lt;br /&gt;
&lt;br /&gt;
===== efitools and sbsigntool are now in main/ =====&lt;br /&gt;
&lt;br /&gt;
Those packages have lived in testing/ for a long time and have been successfully used by one of our developers to implement secure-boot in his system. They have been moved to main/ and will be available for others.&lt;br /&gt;
&lt;br /&gt;
===== Packages which need libsecret&#039;s DBus API now depend a provider of its API via dbus:org.freedesktop.Secret =====&lt;br /&gt;
&lt;br /&gt;
Previously it was possible to install a program which required the DBus API of libsecret (e.g. Fractal), but not install a secrets provider (e.g. gnome-keyring), so logins wouldn&#039;t be saved. This has been corrected and packages which require this API depend on the provider-package dbus:org.freedesktop:Secret now. It&#039;s provided by gnome-keyring, kwallet and keepassxc (in that order of importance, i.e. if none of these is pulled in gnome-keyring will be chosen by default). Right now we manually declared the provider for dbus:org.freedesktop.Secret, but eventually we should have an automatic detection for the DBus API packages provide to make this easier for other packages.&lt;br /&gt;
&lt;br /&gt;
===== Preferring enchant2 over enchant =====&lt;br /&gt;
&lt;br /&gt;
All packages which support enchant2 have been moved over to it instead of using enchant(1). enchant2 now also supports nuspell, which is a faster drop-in replacement for hunspell, which utilizes hunspell&#039;s dictionaries.&lt;br /&gt;
&lt;br /&gt;
===== Firefox is now in community =====&lt;br /&gt;
&lt;br /&gt;
Firefox finally left testing and will be in community, supported for 6 months.&lt;br /&gt;
&lt;br /&gt;
===== moonjit is now luajit =====&lt;br /&gt;
&lt;br /&gt;
Our luajit package switched to the alive moonjit fork which has, among other things, s390x support and actual development.&lt;br /&gt;
&lt;br /&gt;
This [https://git.alpinelinux.org/aports/commit/?id=af7f776d08cf7c12c3dd62347829fe33e66dceaa commit] switched luajit over to moonjit, the following [https://git.alpinelinux.org/aports/commit/?id=a7d057d98859940cc3347dba011957f99291b1fa commit] removes our **HUGE** 46k s390x support patch which is now handled by upstream.&lt;br /&gt;
&lt;br /&gt;
===== Support for YubiKeys =====&lt;br /&gt;
&lt;br /&gt;
yubikey-manager and yubikey-manager-qt have been added to the community repos for using and managing your yubikeys. Installing yubikey-manager and enabling the pcscd service should make yubikeys functional.&lt;br /&gt;
&lt;br /&gt;
===== Support for apk in GNOME Software =====&lt;br /&gt;
&lt;br /&gt;
GNOME Software now offers integration with apk, the Alpine Package Keeper, so desktop applications can be installed via a GUI.&lt;br /&gt;
&lt;br /&gt;
== abuild ==&lt;br /&gt;
&lt;br /&gt;
===== Add default functions for subpackages that hold Bash, Zsh and Fish completion =====&lt;br /&gt;
&lt;br /&gt;
abuild now provides default functions for $pkgname-bash-completion, $pkgname-zsh-completion and $pkgname-fish-completion subpackages.&lt;br /&gt;
&lt;br /&gt;
Expected location of the completion files per shell:&lt;br /&gt;
&lt;br /&gt;
* Bash -&amp;gt; &amp;lt;code&amp;gt;/usr/share/bash-completion/completions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Zsh -&amp;gt; &amp;lt;code&amp;gt;/usr/share/zsh/site-functions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Fish -&amp;gt; &amp;lt;code&amp;gt;/usr/share/fish/completions&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Files must be installed in the expected location in relation to &#039;&#039;&#039;$pkgdir&#039;&#039;&#039; in &#039;&#039;&#039;pacakge()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/d5826968b713123a4f51d3dec1adb1225d0e194f d5826968b713123a4f51d3dec1adb1225d0e194f].&lt;br /&gt;
&lt;br /&gt;
===== newapkbuild when called with CMake (-C) does out-of-source builds by default =====&lt;br /&gt;
&lt;br /&gt;
When packaging with newapkbuild and using the -C switch to pre-fill the apkbuild with skeleton functions for CMake now:&lt;br /&gt;
&lt;br /&gt;
* Adds &amp;lt;code&amp;gt;-B build&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;cmake&amp;lt;/code&amp;gt; call in &#039;&#039;&#039;build()&#039;&#039;&#039;.&lt;br /&gt;
* Adds &amp;lt;code&amp;gt;-C build&amp;lt;/code&amp;gt; the &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; calls.&lt;br /&gt;
&lt;br /&gt;
Doing out-of-source builds are recommended upstream to the point where warnings are printed when calling CMake on a project.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/e125a764896d884c69cc409e614b65cb336c15e8 e125a764896d884c69cc409e614b65cb336c15e8].&lt;br /&gt;
&lt;br /&gt;
===== set CARGO_HOME to cache dependencies of rust packages =====&lt;br /&gt;
&lt;br /&gt;
CARGO_HOME is now set to &#039;&#039;&#039;$SRCDEST/cargo&#039;&#039;&#039; and will cache all dependencies downloaded.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/af0c88e6abbb1e49224759f5c51b3068e6eab28b af0c88e6abbb1e49224759f5c51b3068e6eab28b].&lt;br /&gt;
&lt;br /&gt;
===== The &amp;quot;plain&amp;quot; buildtype for Meson and &amp;quot;None&amp;quot; buildtype for CMake are used now =====&lt;br /&gt;
&lt;br /&gt;
We previously used the &amp;quot;release&amp;quot; or &amp;quot;debugoptimized&amp;quot; buildmode for Meson or &amp;quot;Release&amp;quot; or &amp;quot;RelWithDebInfo&amp;quot; for CMake. This caused Meson and CMake to ignore parts of our C{,XX}FLAGS, e.g. by setting -O2 or even -O3 instead of our default of -Os. We&#039;ve changed to the &amp;quot;plain&amp;quot; buildtype and the &amp;quot;None&amp;quot; buildtype for CMake. This should result in smaller binaries since -Os is respected now. See [https://lists.alpinelinux.org/~alpine/devel/%3C2896c13070c508a49cbaa72c8fb7f34ea947358b.camel%40cogitri.dev%3E the respective mailing list post]&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.12.0&amp;diff=17377</id>
		<title>Release Notes for Alpine 3.12.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.12.0&amp;diff=17377"/>
		<updated>2020-05-08T11:55:26Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Reword D support notice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== aports ==&lt;br /&gt;
&lt;br /&gt;
===== python2 no longer provides python and python-devel =====&lt;br /&gt;
&lt;br /&gt;
python2 no longer provides python and python-devel, nothing does, it is now required that you explicitly depend on either python2 or python3, any new contributions that depend on python2 will be rejected summarily, and python2 is in the process of being **completely** removed&lt;br /&gt;
&lt;br /&gt;
===== llvm 10.0.0 =====&lt;br /&gt;
&lt;br /&gt;
llvm 10 is now the default in Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.alpinelinux.org/alpine/aports/commit/7a1323c27479fb967749c163f34483bc1196055d commit]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Initial support for DLang =====&lt;br /&gt;
&lt;br /&gt;
We&#039;ve added initial support for the D language with this release. We now have GDC, the D compiler frontend using GCC, available on all arches but ppc64le and LDC, a D compiler using the LLVM backend, on x86, x86_64 and aarch64. Most things are built against LDC, since it offers superior optimization and a vastly newer versions of the D runtime and standard library. These contain many important bug fixes (especially on aarch64) and contain features required by many D applications.&lt;br /&gt;
&lt;br /&gt;
===== py3-setuptools now uses system python3 modules instead of vendored dependencies =====&lt;br /&gt;
&lt;br /&gt;
py3-setuptools now installs py3-packaging, py3-parsing, py3-appdirs, py3-six and py3-ordered-set from the system.&lt;br /&gt;
&lt;br /&gt;
The following commits are the ones responsible for this change:&lt;br /&gt;
&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=efca8852f37cb4028f234f92e2d035617f524820 py3-six] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=55e3496387ad3f2df387b2cf6bc84e85ef729833 py3-ordered-set] (new aport)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=cc1636b08fba58b629501d525d658aed4bcbeab2 py3-ordered-set] (move from testing to main)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=da743693eda54b9faf5086746b91506495fc689f py3-appdirs] (move from community to main)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=60efe787954008af546a5bde839db09f11682102 py3-appdirs] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=a50097b40bcf80a9aec201fef73a722206f43a0d py3-packaging] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=52ee5092c510657e9b1e8b4ae0104d405c9eac99 py3-parsing] (install manually)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=33ea734e2d28d88a3d545500c96b4c72b3e78432 py3-setuptools] (use system component)&lt;br /&gt;
&lt;br /&gt;
===== ncurses fixes =====&lt;br /&gt;
&lt;br /&gt;
A few fixes trickled in relating exclusively to Alpine Linux that affect ncurses:&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=762b9fd601983d8a6e6a60692158f3f22b1b60fe commit] the ncurses-lib package no longer depends on the ncurses-terminfo, which was too big at 7.5 MB, instead ncurses-lib now depends solely on the ncurses-terminfo-base package which weights at around 120 kB.&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=56aa7795fecc48561deb095995abd335e16ba515 commit] the ncurses-terminfo-base now includes the most common terminfo databases like tmux, screen, xterm-256color and also databases for packaged terminals like gnome-terminal, vte, konsole, alacritty, kitty, putty. All other terminfo databases are now in ncurses-terminfo.&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=1470a6c8e76491a8d059ebd4b7521c4bf20b837c commit] all terminals that have their terminfo databases provided by the ncurses-terminfo-base now depend on it.&lt;br /&gt;
&lt;br /&gt;
===== python3 no longer provides pip3, use py3-pip from community =====&lt;br /&gt;
&lt;br /&gt;
Python3 is now built with --without-ensurepip which removes pip3 and its libraries from it. Instead use the py3-pip pacakge which uses system components.&lt;br /&gt;
&lt;br /&gt;
===== BPF JIT support =====&lt;br /&gt;
&lt;br /&gt;
&amp;gt; TODO: Small preamble about BPF&lt;br /&gt;
&lt;br /&gt;
So it (BPF JIT) has been enabled by default in [https://git.alpinelinux.org/aports/commit/?id=3bf2313adc57fe6b36bf459ddca6d65a392609db 3bf2313adc57fe6b36bf459ddca6d65a392609db], and unprivileged BPF JIT has been disabled in [https://git.alpinelinux.org/aports/commit/?id=4e286992d5ed751f6ca60eb18d77313bb0868513 4e286992d5ed751f6ca60eb18d77313bb0868513].&lt;br /&gt;
&lt;br /&gt;
===== OpenRC now has a sane ordering of directories when configuring kernel parameters =====&lt;br /&gt;
&lt;br /&gt;
Configuring kernel parameters is done by having configuration files in specific locations like &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; and files ending with &amp;lt;code&amp;gt;.conf&amp;lt;/code&amp;gt; in certain directories like &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt;. Before 3.12.0 the ordering had no logical explanation and&lt;br /&gt;
surprised users that expected a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Starting with 3.12.0 the ordering is as follows:&lt;br /&gt;
&lt;br /&gt;
# /lib/sysctl.d/*.conf&lt;br /&gt;
# /usr/lib/sysctl.d/*.conf&lt;br /&gt;
# /run/sysctl.d/*.conf&lt;br /&gt;
# /etc/sysctl.conf&lt;br /&gt;
# /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/lib/sysctl.d&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/lib/sysctl.d&amp;lt;/code&amp;gt; are to be used by the distribution and packages. Alpine Linux installs its default configuration file in &amp;lt;code&amp;gt;/lib/sysctl.d/00-alpine.conf&amp;lt;/code&amp;gt;. Software installed via our package manager will install to either of those places.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/run/sysctl.d&amp;lt;/code&amp;gt; holds configuration that is created at run-time by daemons/services or at very early-boot. Neither the distribution nor the packaged software will install configuration to it, primarily because /run is in temporary memory. Configuration in this location that matches names the locations used by the distribution and packages will cause the latter not to be read and applied by the &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; holds configuration that is created and maintained by the local administrator, neither Alpine nor its packaged software will touch it, and configuration in that has the same name as in the location reserved for the distribution and packages, or the location for run-time configuration from daemons/services, will cause the latter to not be read and applied by the &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; is a historical location for this kind of configuration and is kept for the same reasons.&lt;br /&gt;
&lt;br /&gt;
===== OpenRC now has a sane ordering of directories when loading kernel modules =====&lt;br /&gt;
&lt;br /&gt;
Loading kernel modules during boot is done with the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; OpenRC service, which reads configuration files in certain locations and loads kernel modules with the modprobe utility from either busybox or util-linux.&lt;br /&gt;
&lt;br /&gt;
Starting with 3.12.0 a more logical ordering is adopted for which configuration files to read and ignore:&lt;br /&gt;
&lt;br /&gt;
# /lib/modules-load.d/*.conf&lt;br /&gt;
# /usr/lib/modules-load.d/*.conf&lt;br /&gt;
# /run/modules-load.d/*.conf&lt;br /&gt;
# /etc/modules&lt;br /&gt;
# /etc/modules-load.d/*.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/lib/modules-load.d&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/lib/modules-load.d&amp;lt;/code&amp;gt; are to be used by the distribution and packages. Software installed via our package manager will install to either of those places.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/run/modules-load.d&amp;lt;/code&amp;gt; holds configuration that is created at run-time by daemons/services or at very early-boot. Neither the distribution nor the packaged software will install configuration to it, primarily because /run is in temporary memory. Configuration in this location that matches names in the locations used by the distribution and packages will cause the latter not to be read and applied by the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/modules-load.d&amp;lt;/code&amp;gt; holds configuration that is created and maintained by the local administrator, neither Alpine nor its packaged software will touch it, and configuration in that has the same name as in the location reserved for the distribution and packages, or locations reserved for the run-time configuration of daemons/services, will cause the latter to not be read and applied by the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/modules&amp;lt;/code&amp;gt; is a historical location for this kind of configuration and is kept for the same reasons.&lt;br /&gt;
&lt;br /&gt;
===== Telegram Desktop is now available in the community repo =====&lt;br /&gt;
&lt;br /&gt;
See [https://git.alpinelinux.org/aports/commit/?id=184355fdc44bc2e12976d65518fe029d8a6e459d commit] that moved the package to the community repo for explanation.&lt;br /&gt;
&lt;br /&gt;
===== efitools and sbsigntool are now in main/ =====&lt;br /&gt;
&lt;br /&gt;
Those packages have lived in testing/ for a long time and have been successfully used by one of our developers to implement secure-boot in his system. They have been moved to main/ and will be available for others.&lt;br /&gt;
&lt;br /&gt;
===== Packages which need libsecret&#039;s DBus API now depend a provider of its API via dbus:org.freedesktop.Secret =====&lt;br /&gt;
&lt;br /&gt;
Previously it was possible to install a program which required the DBus API of libsecret (e.g. Fractal), but not install a secrets provider (e.g. gnome-keyring), so logins wouldn&#039;t be saved. This has been corrected and packages which require this API depend on the provider-package dbus:org.freedesktop:Secret now. It&#039;s provided by gnome-keyring, kwallet and keepassxc (in that order of importance, i.e. if none of these is pulled in gnome-keyring will be chosen by default). Right now we manually declared the provider for dbus:org.freedesktop.Secret, but eventually we should have an automatic detection for the DBus API packages provide to make this easier for other packages.&lt;br /&gt;
&lt;br /&gt;
===== Preferring enchant2 over enchant =====&lt;br /&gt;
&lt;br /&gt;
All packages which support enchant2 have been moved over to it instead of using enchant(1). enchant2 now also supports nuspell, which is a faster drop-in replacement for hunspell, which utilizes hunspell&#039;s dictionaries.&lt;br /&gt;
&lt;br /&gt;
===== Firefox is now in community =====&lt;br /&gt;
&lt;br /&gt;
Firefox finally left testing and will be in community, supported for 6 months.&lt;br /&gt;
&lt;br /&gt;
===== moonjit is now luajit =====&lt;br /&gt;
&lt;br /&gt;
Our luajit package switched to the alive moonjit fork which has, among other things, s390x support and actual development.&lt;br /&gt;
&lt;br /&gt;
This [https://git.alpinelinux.org/aports/commit/?id=af7f776d08cf7c12c3dd62347829fe33e66dceaa commit] switched luajit over to moonjit, the following [https://git.alpinelinux.org/aports/commit/?id=a7d057d98859940cc3347dba011957f99291b1fa commit] removes our **HUGE** 46k s390x support patch which is now handled by upstream.&lt;br /&gt;
&lt;br /&gt;
===== Support for YubiKeys =====&lt;br /&gt;
&lt;br /&gt;
yubikey-manager and yubikey-manager-qt have been added to the community repos for using and managing your yubikeys. Installing yubikey-manager and enabling the pcscd service should make yubikeys functional.&lt;br /&gt;
&lt;br /&gt;
== abuild ==&lt;br /&gt;
&lt;br /&gt;
===== Add default functions for subpackages that hold Bash, Zsh and Fish completion =====&lt;br /&gt;
&lt;br /&gt;
abuild now provides default functions for $pkgname-bash-completion, $pkgname-zsh-completion and $pkgname-fish-completion subpackages.&lt;br /&gt;
&lt;br /&gt;
Expected location of the completion files per shell:&lt;br /&gt;
&lt;br /&gt;
* Bash -&amp;gt; &amp;lt;code&amp;gt;/usr/share/bash-completion/completions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Zsh -&amp;gt; &amp;lt;code&amp;gt;/usr/share/zsh/site-functions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Fish -&amp;gt; &amp;lt;code&amp;gt;/usr/share/fish/completions&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Files must be installed in the expected location in relation to &#039;&#039;&#039;$pkgdir&#039;&#039;&#039; in &#039;&#039;&#039;pacakge()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/d5826968b713123a4f51d3dec1adb1225d0e194f d5826968b713123a4f51d3dec1adb1225d0e194f].&lt;br /&gt;
&lt;br /&gt;
===== newapkbuild when called with CMake (-C) does out-of-source builds by default =====&lt;br /&gt;
&lt;br /&gt;
When packaging with newapkbuild and using the -C switch to pre-fill the apkbuild with skeleton functions for CMake now:&lt;br /&gt;
&lt;br /&gt;
* Adds &amp;lt;code&amp;gt;-B build&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;cmake&amp;lt;/code&amp;gt; call in &#039;&#039;&#039;build()&#039;&#039;&#039;.&lt;br /&gt;
* Adds &amp;lt;code&amp;gt;-C build&amp;lt;/code&amp;gt; the &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; calls.&lt;br /&gt;
&lt;br /&gt;
Doing out-of-source builds are recommended upstream to the point where warnings are printed when calling CMake on a project.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/e125a764896d884c69cc409e614b65cb336c15e8 e125a764896d884c69cc409e614b65cb336c15e8].&lt;br /&gt;
&lt;br /&gt;
===== set CARGO_HOME to cache dependencies of rust packages =====&lt;br /&gt;
&lt;br /&gt;
CARGO_HOME is now set to &#039;&#039;&#039;$SRCDEST/cargo&#039;&#039;&#039; and will cache all dependencies downloaded.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/af0c88e6abbb1e49224759f5c51b3068e6eab28b af0c88e6abbb1e49224759f5c51b3068e6eab28b].&lt;br /&gt;
&lt;br /&gt;
===== The &amp;quot;plain&amp;quot; buildtype for Meson and &amp;quot;None&amp;quot; buildtype for CMake are used now =====&lt;br /&gt;
&lt;br /&gt;
We previously used the &amp;quot;release&amp;quot; or &amp;quot;debugoptimized&amp;quot; buildmode for Meson or &amp;quot;Release&amp;quot; or &amp;quot;RelWithDebInfo&amp;quot; for CMake. This caused Meson and CMake to ignore parts of our C{,XX}FLAGS, e.g. by setting -O2 or even -O3 instead of our default of -Os. We&#039;ve changed to the &amp;quot;plain&amp;quot; buildtype and the &amp;quot;None&amp;quot; buildtype for CMake. This should result in smaller binaries since -Os is respected now. See [https://lists.alpinelinux.org/~alpine/devel/%3C2896c13070c508a49cbaa72c8fb7f34ea947358b.camel%40cogitri.dev%3E the respective mailing list post]&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=GNOME&amp;diff=17301</id>
		<title>GNOME</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=GNOME&amp;diff=17301"/>
		<updated>2020-04-28T12:03:00Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Mention that gdm needs a user available&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Initial setup =&lt;br /&gt;
Start by booting up Alpine (see [[Installation|these]] instructions on how to do that)&amp;lt;BR&amp;gt;&lt;br /&gt;
When you Alpine is up and running, do the initial setup.&lt;br /&gt;
{{Cmd|# setup-alpine}}&lt;br /&gt;
{{Cmd|# setup-xorg-base}}&lt;br /&gt;
&lt;br /&gt;
= Installing packages =&lt;br /&gt;
Install basic desktop system and gnome packages. As of right now, these are in the testing repo.&amp;lt;BR&amp;gt;&lt;br /&gt;
This might take a few minutes depending on your network speed. &lt;br /&gt;
{{Cmd|# apk add gnome}}&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to you can also install additional GNOME apps for a more complete GNOME experience with:&amp;lt;BR&amp;gt;&lt;br /&gt;
{{Cmd|# apk add gnome-apps}}&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up udev ==&lt;br /&gt;
You&#039;ll have to enable udev in order for GNOME to function properly.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add udev&lt;br /&gt;
# /etc/init.d/udev start &amp;amp;&amp;amp; /etc/init.d/udev-trigger start &amp;amp;&amp;amp; /etc/init.d/udev-settle start&lt;br /&gt;
# rc-update add udev sysinit&lt;br /&gt;
# rc-update add udev-trigger sysinit&lt;br /&gt;
# rc-update add udev-settle sysinit&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Setting up Xorg ==&lt;br /&gt;
Even when using GNOME Wayland you&#039;ll still need a setup Xorg for XWayland.&lt;br /&gt;
&lt;br /&gt;
=== Video packages ===&lt;br /&gt;
&lt;br /&gt;
{{cmd|$ apk search xf86-video}}&lt;br /&gt;
&lt;br /&gt;
Then install the driver matching to your card, e.g. if you have an Intel iGPU:&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add xf86-video-intel}}&lt;br /&gt;
&lt;br /&gt;
=== Input packages ===&lt;br /&gt;
&lt;br /&gt;
Usually libinput is the best choice, as it&#039;s integrated best with GNOME and offers advanced functionality (e.g. palm rejection for touchpads).&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add xf86-input-libinput}}&lt;br /&gt;
&lt;br /&gt;
= Starting your desktop =&lt;br /&gt;
Start GDM and login with your user. You need a user other than root for this to succeed, since GDM will refuse starting if no user accounts (meaning accounts with a UID &amp;gt;= 1000) are available.&lt;br /&gt;
{{Cmd|rc-service gdm start}}&lt;br /&gt;
&lt;br /&gt;
Once you have verified that it actually works you can make gdm start up at boot:&lt;br /&gt;
{{Cmd|rc-update add gdm}}&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
If you are unable to login, check /var/log/gdm/greeter.log, there may be output there from X to indicate failed modules, etc.&lt;br /&gt;
&lt;br /&gt;
If logging in from GDM returns to logging screen, try {{cmd|# apk add bash}} (bug report: #10953 sorry cannot link yet)&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Alpine_Linux:Mailing_lists&amp;diff=17108</id>
		<title>Alpine Linux:Mailing lists</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Alpine_Linux:Mailing_lists&amp;diff=17108"/>
		<updated>2020-03-22T12:04:44Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Remove removed MLs, fix links to existing ones.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[http://lists.alpinelinux.org/ Mailing List Archives]&#039;&#039;&#039; A Web listing of the mailing list archives in a searchable format. Since the mailing list is hosted on Alpine Linux, we are using [http://mlmmj.org/ mlmmj] for the mailing list, [http://www.hypermail-project.org/ hypermail] for translation into html and [http://swish-e.org/ swish-e] for search.&lt;br /&gt;
&lt;br /&gt;
(Please don&#039;t [http://en.wikipedia.org/wiki/Top-posting top-post] to the list as it makes the archives more or less useless.)&lt;br /&gt;
&lt;br /&gt;
See also https://alpinelinux.org/community/.&lt;br /&gt;
&lt;br /&gt;
== Subscribing ==&lt;br /&gt;
Note: &amp;quot;&amp;lt;mailing-list&amp;gt;&amp;quot; can be any of the listed mailing lists below or at [http://lists.alpinelinux.org/ http://lists.alpinelinux.org/]&lt;br /&gt;
# Send an email to &amp;lt;mailing-list&amp;gt;+subscribe@lists.alpinelinux.org&lt;br /&gt;
# Wait for a reply from the &amp;lt;mailing-list&amp;gt;+help@lists.alpinelinux.org asking you to confirm your email address&lt;br /&gt;
# Send a reply to the given &amp;quot;Reply-To&amp;quot; address&lt;br /&gt;
# Receive a subscription confirmation from &amp;lt;mailing-list&amp;gt;+help@lists.alpinelinux.org with the subject line Welcome to &amp;lt;mailing-list&amp;gt;@lists.alpinelinux.org&lt;br /&gt;
&lt;br /&gt;
There&#039;s also a button for subscribing in each mailing list&#039;s web UI, e.g. on [https://lists.alpinelinux.org/~alpine/users ~alpine/users] which will open your mail client for you.&lt;br /&gt;
&lt;br /&gt;
== alpine-announce ==&lt;br /&gt;
Low-volume mailing list for release announcements (new versions of Alpine).&lt;br /&gt;
;Archives&lt;br /&gt;
:https://lists.alpinelinux.org/~alpine/announce&lt;br /&gt;
;Subscribe&lt;br /&gt;
:[mailto:~alpine/announce+subscribe@lists.alpinelinux.org ~alpine/announce+subscribe@lists.alpinelinux.org]&lt;br /&gt;
;Unsubscribe&lt;br /&gt;
:[mailto:~alpine/announce+unsubscribe@lists.alpinelinux.org ~alpine/announce+unsubscribe@lists.alpinelinux.org]&lt;br /&gt;
;Help&lt;br /&gt;
:[mailto:~alpine/announce+help@lists.alpinelinux.org ~alpine/announce+help@lists.alpinelinux.org]&lt;br /&gt;
&lt;br /&gt;
== alpine-users ==&lt;br /&gt;
Mailing list for general user support.&lt;br /&gt;
;Archives&lt;br /&gt;
:http://lists.alpinelinux.org/~alpine/users&lt;br /&gt;
;Subscribe&lt;br /&gt;
:[mailto:~alpine/users+subscribe@lists.alpinelinux.org ~alpine/users+subscribe@lists.alpinelinux.org]&lt;br /&gt;
;Unsubscribe&lt;br /&gt;
:[mailto:~alpine/users+unsubscribe@lists.alpinelinux.org ~alpine/users+unsubscribe@lists.alpinelinux.org]&lt;br /&gt;
;Help&lt;br /&gt;
:[mailto:~alpine/users+help@lists.alpinelinux.org ~alpine/users+help@lists.alpinelinux.org]&lt;br /&gt;
&lt;br /&gt;
== alpine-devel ==&lt;br /&gt;
Mailing list for Alpine Linux development.&lt;br /&gt;
;Archives&lt;br /&gt;
:http://lists.alpinelinux.org/~alpine/devel&lt;br /&gt;
;Subscribe&lt;br /&gt;
:[mailto:~alpine/devel+subscribe@lists.alpinelinux.org ~alpine/devel+subscribe@lists.alpinelinux.org]&lt;br /&gt;
;Unsubscribe&lt;br /&gt;
:[mailto:~alpine/devel+unsubscribe@lists.alpinelinux.org ~alpine/devel+unsubscribe@lists.alpinelinux.org]&lt;br /&gt;
;Help&lt;br /&gt;
:[mailto:~alpine/devel+help@lists.alpinelinux.org ~alpine/devel+help@lists.alpinelinux.org]&lt;br /&gt;
&lt;br /&gt;
== Other mailing lists ==&lt;br /&gt;
&lt;br /&gt;
* [https://lists.alpinelinux.org/~alpine/aports alpine-aports]&lt;br /&gt;
:Active mailing list with patches for packages (proposed for incorporating into aports package pools).&lt;br /&gt;
&lt;br /&gt;
* [https://lists.alpinelinux.org/~alpine/infra alpine-infra]&lt;br /&gt;
:Active mailing list discussing Alpine web infrastructure.&lt;br /&gt;
&lt;br /&gt;
* [https://lists.alpinelinux.org/~alpine/apk-tools apk-tools]&lt;br /&gt;
:Active mailing lis discussing the Alpine Package Keeper (APK)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Alpine_Linux:Mailing_lists&amp;diff=17107</id>
		<title>Alpine Linux:Mailing lists</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Alpine_Linux:Mailing_lists&amp;diff=17107"/>
		<updated>2020-03-22T12:02:53Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Fix links for new ML&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[http://lists.alpinelinux.org/ Mailing List Archives]&#039;&#039;&#039; A Web listing of the mailing list archives in a searchable format. Since the mailing list is hosted on Alpine Linux, we are using [http://mlmmj.org/ mlmmj] for the mailing list, [http://www.hypermail-project.org/ hypermail] for translation into html and [http://swish-e.org/ swish-e] for search.&lt;br /&gt;
&lt;br /&gt;
(Please don&#039;t [http://en.wikipedia.org/wiki/Top-posting top-post] to the list as it makes the archives more or less useless.)&lt;br /&gt;
&lt;br /&gt;
See also https://alpinelinux.org/community/.&lt;br /&gt;
&lt;br /&gt;
== Subscribing ==&lt;br /&gt;
Note: &amp;quot;&amp;lt;mailing-list&amp;gt;&amp;quot; can be any of the listed mailing lists below or at [http://lists.alpinelinux.org/ http://lists.alpinelinux.org/]&lt;br /&gt;
# Send an email to &amp;lt;mailing-list&amp;gt;+subscribe@lists.alpinelinux.org&lt;br /&gt;
# Wait for a reply from the &amp;lt;mailing-list&amp;gt;+help@lists.alpinelinux.org asking you to confirm your email address&lt;br /&gt;
# Send a reply to the given &amp;quot;Reply-To&amp;quot; address&lt;br /&gt;
# Receive a subscription confirmation from &amp;lt;mailing-list&amp;gt;+help@lists.alpinelinux.org with the subject line Welcome to &amp;lt;mailing-list&amp;gt;@lists.alpinelinux.org&lt;br /&gt;
&lt;br /&gt;
There&#039;s also a button for subscribing in each mailing list&#039;s web UI, e.g. on [https://lists.alpinelinux.org/~alpine/users ~alpine/users] which will open your mail client for you.&lt;br /&gt;
&lt;br /&gt;
== alpine-announce ==&lt;br /&gt;
Low-volume mailing list for release announcements (new versions of Alpine).&lt;br /&gt;
;Archives&lt;br /&gt;
:https://lists.alpinelinux.org/~alpine/announce&lt;br /&gt;
;Subscribe&lt;br /&gt;
:[mailto:~alpine/announce+subscribe@lists.alpinelinux.org ~alpine/announce+subscribe@lists.alpinelinux.org]&lt;br /&gt;
;Unsubscribe&lt;br /&gt;
:[mailto:~alpine/announce+unsubscribe@lists.alpinelinux.org ~alpine/announce+unsubscribe@lists.alpinelinux.org]&lt;br /&gt;
;Help&lt;br /&gt;
:[mailto:~alpine/announce+help@lists.alpinelinux.org ~alpine/announce+help@lists.alpinelinux.org]&lt;br /&gt;
&lt;br /&gt;
== alpine-users ==&lt;br /&gt;
Mailing list for general user support.&lt;br /&gt;
;Archives&lt;br /&gt;
:http://lists.alpinelinux.org/~alpine/users&lt;br /&gt;
;Subscribe&lt;br /&gt;
:[mailto:~alpine/users+subscribe@lists.alpinelinux.org ~alpine/users+subscribe@lists.alpinelinux.org]&lt;br /&gt;
;Unsubscribe&lt;br /&gt;
:[mailto:~alpine/users+unsubscribe@lists.alpinelinux.org ~alpine/users+unsubscribe@lists.alpinelinux.org]&lt;br /&gt;
;Help&lt;br /&gt;
:[mailto:~alpine/users+help@lists.alpinelinux.org ~alpine/users+help@lists.alpinelinux.org]&lt;br /&gt;
&lt;br /&gt;
== alpine-devel ==&lt;br /&gt;
Mailing list for Alpine Linux development.&lt;br /&gt;
;Archives&lt;br /&gt;
:http://lists.alpinelinux.org/~alpine/devel&lt;br /&gt;
;Subscribe&lt;br /&gt;
:[mailto:~alpine/devel+subscribe@lists.alpinelinux.org ~alpine/devel+subscribe@lists.alpinelinux.org]&lt;br /&gt;
;Unsubscribe&lt;br /&gt;
:[mailto:~alpine/devel+unsubscribe@lists.alpinelinux.org ~alpine/devel+unsubscribe@lists.alpinelinux.org]&lt;br /&gt;
;Help&lt;br /&gt;
:[mailto:~alpine/devel+help@lists.alpinelinux.org ~alpine/devel+help@lists.alpinelinux.org]&lt;br /&gt;
&lt;br /&gt;
== Other mailing lists ==&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-aports/ alpine-aports]&lt;br /&gt;
:Active mailing list with patches for packages (proposed for incorporating into aports package pools).&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-infra/ alpine-infra]&lt;br /&gt;
:Active mailing list discussing Alpine web infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color:gray&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-security/ alpine-security]&lt;br /&gt;
:Inactive mailing list.&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-acf/ alpine-acf]&lt;br /&gt;
:Inactive mailing list (only 3 messages since April 2013) about Alpine Configuration Framework.&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-build/ alpine-build]&lt;br /&gt;
:Inactive mailing list.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Alpine_Linux:Mailing_lists&amp;diff=17106</id>
		<title>Alpine Linux:Mailing lists</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Alpine_Linux:Mailing_lists&amp;diff=17106"/>
		<updated>2020-03-22T12:02:12Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Fix links for new ML&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[http://lists.alpinelinux.org/ Mailing List Archives]&#039;&#039;&#039; A Web listing of the mailing list archives in a searchable format. Since the mailing list is hosted on Alpine Linux, we are using [http://mlmmj.org/ mlmmj] for the mailing list, [http://www.hypermail-project.org/ hypermail] for translation into html and [http://swish-e.org/ swish-e] for search.&lt;br /&gt;
&lt;br /&gt;
(Please don&#039;t [http://en.wikipedia.org/wiki/Top-posting top-post] to the list as it makes the archives more or less useless.)&lt;br /&gt;
&lt;br /&gt;
See also https://alpinelinux.org/community/.&lt;br /&gt;
&lt;br /&gt;
== Subscribing ==&lt;br /&gt;
Note: &amp;quot;&amp;lt;mailing-list&amp;gt;&amp;quot; can be any of the listed mailing lists below or at [http://lists.alpinelinux.org/ http://lists.alpinelinux.org/]&lt;br /&gt;
# Send an email to &amp;lt;mailing-list&amp;gt;+subscribe@lists.alpinelinux.org&lt;br /&gt;
# Wait for a reply from the &amp;lt;mailing-list&amp;gt;+help@lists.alpinelinux.org asking you to confirm your email address&lt;br /&gt;
# Send a reply to the given &amp;quot;Reply-To&amp;quot; address&lt;br /&gt;
# Receive a subscription confirmation from &amp;lt;mailing-list&amp;gt;+help@lists.alpinelinux.org with the subject line Welcome to &amp;lt;mailing-list&amp;gt;@lists.alpinelinux.org&lt;br /&gt;
&lt;br /&gt;
There&#039;s also a button for subscribing in each mailing list&#039;s web UI, e.g. on [https://lists.alpinelinux.org/~alpine/users ~alpine/users] which will open your mail client for you.&lt;br /&gt;
&lt;br /&gt;
== alpine-announce ==&lt;br /&gt;
Low-volume mailing list for release announcements (new versions of Alpine).&lt;br /&gt;
;Archives&lt;br /&gt;
:https://lists.alpinelinux.org/~alpine/announce&lt;br /&gt;
;Subscribe&lt;br /&gt;
:[mailto:~alpine/announce+subscribe@lists.alpinelinux.org ~alpine/announce+subscribe@lists.alpinelinux.org]&lt;br /&gt;
;Unsubscribe&lt;br /&gt;
:[mailto:~alpine/announce+unsubscribe@lists.alpinelinux.org ~alpine/announce+unsubscribe@lists.alpinelinux.org]&lt;br /&gt;
;Help&lt;br /&gt;
:[mailto:~alpine/announce+help@lists.alpinelinux.org ~alpine/announce+help@lists.alpinelinux.org]&lt;br /&gt;
&lt;br /&gt;
== alpine-users ==&lt;br /&gt;
Mailing list for general user support.&lt;br /&gt;
;Archives&lt;br /&gt;
:http://lists.alpinelinux.org/~alpine/users&lt;br /&gt;
;Subscribe&lt;br /&gt;
:[mailto:~alpine/users+subscribe@lists.alpinelinux.org ~alpine/users+subscribe@lists.alpinelinux.org]&lt;br /&gt;
;Unsubscribe&lt;br /&gt;
:[mailto:~alpine/users+unsubscribe@lists.alpinelinux.org ~alpine/users+unsubscribe@lists.alpinelinux.org]&lt;br /&gt;
;Help&lt;br /&gt;
:[mailto:~alpine/users+help@lists.alpinelinux.org ~alpine/users+help@lists.alpinelinux.org]&lt;br /&gt;
&lt;br /&gt;
== alpine-devel ==&lt;br /&gt;
Mailing list for Alpine Linux development.&lt;br /&gt;
;Archives&lt;br /&gt;
:http://lists.alpinelinux.org/alpine-devel/&lt;br /&gt;
;Subscribe&lt;br /&gt;
:[mailto:alpine-devel+subscribe@lists.alpinelinux.org alpine-devel+subscribe@lists.alpinelinux.org]&lt;br /&gt;
;Unsubscribe&lt;br /&gt;
:[mailto:alpine-devel+unsubscribe@lists.alpinelinux.org alpine-devel+unsubscribe@lists.alpinelinux.org]&lt;br /&gt;
;Help&lt;br /&gt;
:[mailto:alpine-devel+help@lists.alpinelinux.org alpine-devel+help@lists.alpinelinux.org]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other mailing lists ==&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-aports/ alpine-aports]&lt;br /&gt;
:Active mailing list with patches for packages (proposed for incorporating into aports package pools).&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-infra/ alpine-infra]&lt;br /&gt;
:Active mailing list discussing Alpine web infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color:gray&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-security/ alpine-security]&lt;br /&gt;
:Inactive mailing list.&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-acf/ alpine-acf]&lt;br /&gt;
:Inactive mailing list (only 3 messages since April 2013) about Alpine Configuration Framework.&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-build/ alpine-build]&lt;br /&gt;
:Inactive mailing list.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Alpine_Linux:Mailing_lists&amp;diff=17105</id>
		<title>Alpine Linux:Mailing lists</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Alpine_Linux:Mailing_lists&amp;diff=17105"/>
		<updated>2020-03-22T12:01:17Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Fix links for new ML&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[http://lists.alpinelinux.org/ Mailing List Archives]&#039;&#039;&#039; A Web listing of the mailing list archives in a searchable format. Since the mailing list is hosted on Alpine Linux, we are using [http://mlmmj.org/ mlmmj] for the mailing list, [http://www.hypermail-project.org/ hypermail] for translation into html and [http://swish-e.org/ swish-e] for search.&lt;br /&gt;
&lt;br /&gt;
(Please don&#039;t [http://en.wikipedia.org/wiki/Top-posting top-post] to the list as it makes the archives more or less useless.)&lt;br /&gt;
&lt;br /&gt;
See also https://alpinelinux.org/community/.&lt;br /&gt;
&lt;br /&gt;
== Subscribing ==&lt;br /&gt;
Note: &amp;quot;&amp;lt;mailing-list&amp;gt;&amp;quot; can be any of the listed mailing lists below or at [http://lists.alpinelinux.org/ http://lists.alpinelinux.org/]&lt;br /&gt;
# Send an email to &amp;lt;mailing-list&amp;gt;+subscribe@lists.alpinelinux.org&lt;br /&gt;
# Wait for a reply from the &amp;lt;mailing-list&amp;gt;+help@lists.alpinelinux.org asking you to confirm your email address&lt;br /&gt;
# Send a reply to the given &amp;quot;Reply-To&amp;quot; address&lt;br /&gt;
# Receive a subscription confirmation from &amp;lt;mailing-list&amp;gt;+help@lists.alpinelinux.org with the subject line Welcome to &amp;lt;mailing-list&amp;gt;@lists.alpinelinux.org&lt;br /&gt;
&lt;br /&gt;
There&#039;s also a button for subscribing in each mailing list&#039;s web UI, e.g. on [https://lists.alpinelinux.org/~alpine/users ~alpine/users] which will open your mail client for you.&lt;br /&gt;
&lt;br /&gt;
== alpine-announce ==&lt;br /&gt;
Low-volume mailing list for release announcements (new versions of Alpine).&lt;br /&gt;
;Archives&lt;br /&gt;
:https://lists.alpinelinux.org/~alpine/announce&lt;br /&gt;
;Subscribe&lt;br /&gt;
:[mailto:~alpine/announce+subscribe@lists.alpinelinux.org ~alpine/announce+subscribe@lists.alpinelinux.org]&lt;br /&gt;
;Unsubscribe&lt;br /&gt;
:[mailto:~alpine/announce+unsubscribe@lists.alpinelinux.org ~alpine/announce+unsubscribe@lists.alpinelinux.org]&lt;br /&gt;
;Help&lt;br /&gt;
:[mailto:~alpine/announce+help@lists.alpinelinux.org ~alpine/announce+help@lists.alpinelinux.org]&lt;br /&gt;
&lt;br /&gt;
== alpine-user ==&lt;br /&gt;
Mailing list for general user support.&lt;br /&gt;
;Archives&lt;br /&gt;
:http://lists.alpinelinux.org/alpine-user/&lt;br /&gt;
;Subscribe&lt;br /&gt;
:[mailto:alpine-user+subscribe@lists.alpinelinux.org alpine-user+subscribe@lists.alpinelinux.org]&lt;br /&gt;
;Unsubscribe&lt;br /&gt;
:[mailto:alpine-user+unsubscribe@lists.alpinelinux.org alpine-user+unsubscribe@lists.alpinelinux.org]&lt;br /&gt;
;Help&lt;br /&gt;
:[mailto:alpine-user+help@lists.alpinelinux.org alpine-user+help@lists.alpinelinux.org]&lt;br /&gt;
&lt;br /&gt;
== alpine-devel ==&lt;br /&gt;
Mailing list for Alpine Linux development.&lt;br /&gt;
;Archives&lt;br /&gt;
:http://lists.alpinelinux.org/alpine-devel/&lt;br /&gt;
;Subscribe&lt;br /&gt;
:[mailto:alpine-devel+subscribe@lists.alpinelinux.org alpine-devel+subscribe@lists.alpinelinux.org]&lt;br /&gt;
;Unsubscribe&lt;br /&gt;
:[mailto:alpine-devel+unsubscribe@lists.alpinelinux.org alpine-devel+unsubscribe@lists.alpinelinux.org]&lt;br /&gt;
;Help&lt;br /&gt;
:[mailto:alpine-devel+help@lists.alpinelinux.org alpine-devel+help@lists.alpinelinux.org]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other mailing lists ==&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-aports/ alpine-aports]&lt;br /&gt;
:Active mailing list with patches for packages (proposed for incorporating into aports package pools).&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-infra/ alpine-infra]&lt;br /&gt;
:Active mailing list discussing Alpine web infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color:gray&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-security/ alpine-security]&lt;br /&gt;
:Inactive mailing list.&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-acf/ alpine-acf]&lt;br /&gt;
:Inactive mailing list (only 3 messages since April 2013) about Alpine Configuration Framework.&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-build/ alpine-build]&lt;br /&gt;
:Inactive mailing list.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Alpine_Linux:Mailing_lists&amp;diff=17104</id>
		<title>Alpine Linux:Mailing lists</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Alpine_Linux:Mailing_lists&amp;diff=17104"/>
		<updated>2020-03-22T11:57:26Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: /* Subscribing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[http://lists.alpinelinux.org/ Mailing List Archives]&#039;&#039;&#039; A Web listing of the mailing list archives in a searchable format. Since the mailing list is hosted on Alpine Linux, we are using [http://mlmmj.org/ mlmmj] for the mailing list, [http://www.hypermail-project.org/ hypermail] for translation into html and [http://swish-e.org/ swish-e] for search.&lt;br /&gt;
&lt;br /&gt;
(Please don&#039;t [http://en.wikipedia.org/wiki/Top-posting top-post] to the list as it makes the archives more or less useless.)&lt;br /&gt;
&lt;br /&gt;
See also https://alpinelinux.org/community/.&lt;br /&gt;
&lt;br /&gt;
== Subscribing ==&lt;br /&gt;
Note: &amp;quot;&amp;lt;mailing-list&amp;gt;&amp;quot; can be any of the listed mailing lists below or at [http://lists.alpinelinux.org/ http://lists.alpinelinux.org/]&lt;br /&gt;
# Send an email to &amp;lt;mailing-list&amp;gt;+subscribe@lists.alpinelinux.org&lt;br /&gt;
# Wait for a reply from the &amp;lt;mailing-list&amp;gt;+help@lists.alpinelinux.org asking you to confirm your email address&lt;br /&gt;
# Send a reply to the given &amp;quot;Reply-To&amp;quot; address&lt;br /&gt;
# Receive a subscription confirmation from &amp;lt;mailing-list&amp;gt;+help@lists.alpinelinux.org with the subject line Welcome to &amp;lt;mailing-list&amp;gt;@lists.alpinelinux.org&lt;br /&gt;
&lt;br /&gt;
There&#039;s also a button for subscribing in each mailing list&#039;s web UI, e.g. on [https://lists.alpinelinux.org/~alpine/users ~alpine/users] which will open your mail client for you.&lt;br /&gt;
&lt;br /&gt;
== alpine-announce ==&lt;br /&gt;
Low-volume mailing list for release announcements (new versions of Alpine).&lt;br /&gt;
;Archives&lt;br /&gt;
:http://lists.alpinelinux.org/alpine-announce/&lt;br /&gt;
;Subscribe&lt;br /&gt;
:[mailto:alpine-announce+subscribe@lists.alpinelinux.org alpine-announce+subscribe@lists.alpinelinux.org]&lt;br /&gt;
;Unsubscribe&lt;br /&gt;
:[mailto:alpine-announce+unsubscribe@lists.alpinelinux.org alpine-announce+unsubscribe@lists.alpinelinux.org]&lt;br /&gt;
;Help&lt;br /&gt;
:[mailto:alpine-announce+help@lists.alpinelinux.org alpine-announce+help@lists.alpinelinux.org]&lt;br /&gt;
&lt;br /&gt;
== alpine-user ==&lt;br /&gt;
Mailing list for general user support.&lt;br /&gt;
;Archives&lt;br /&gt;
:http://lists.alpinelinux.org/alpine-user/&lt;br /&gt;
;Subscribe&lt;br /&gt;
:[mailto:alpine-user+subscribe@lists.alpinelinux.org alpine-user+subscribe@lists.alpinelinux.org]&lt;br /&gt;
;Unsubscribe&lt;br /&gt;
:[mailto:alpine-user+unsubscribe@lists.alpinelinux.org alpine-user+unsubscribe@lists.alpinelinux.org]&lt;br /&gt;
;Help&lt;br /&gt;
:[mailto:alpine-user+help@lists.alpinelinux.org alpine-user+help@lists.alpinelinux.org]&lt;br /&gt;
&lt;br /&gt;
== alpine-devel ==&lt;br /&gt;
Mailing list for Alpine Linux development.&lt;br /&gt;
;Archives&lt;br /&gt;
:http://lists.alpinelinux.org/alpine-devel/&lt;br /&gt;
;Subscribe&lt;br /&gt;
:[mailto:alpine-devel+subscribe@lists.alpinelinux.org alpine-devel+subscribe@lists.alpinelinux.org]&lt;br /&gt;
;Unsubscribe&lt;br /&gt;
:[mailto:alpine-devel+unsubscribe@lists.alpinelinux.org alpine-devel+unsubscribe@lists.alpinelinux.org]&lt;br /&gt;
;Help&lt;br /&gt;
:[mailto:alpine-devel+help@lists.alpinelinux.org alpine-devel+help@lists.alpinelinux.org]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other mailing lists ==&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-aports/ alpine-aports]&lt;br /&gt;
:Active mailing list with patches for packages (proposed for incorporating into aports package pools).&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-infra/ alpine-infra]&lt;br /&gt;
:Active mailing list discussing Alpine web infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color:gray&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-security/ alpine-security]&lt;br /&gt;
:Inactive mailing list.&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-acf/ alpine-acf]&lt;br /&gt;
:Inactive mailing list (only 3 messages since April 2013) about Alpine Configuration Framework.&lt;br /&gt;
&lt;br /&gt;
* [http://lists.alpinelinux.org/alpine-build/ alpine-build]&lt;br /&gt;
:Inactive mailing list.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Creating_patches&amp;diff=17002</id>
		<title>Creating patches</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Creating_patches&amp;diff=17002"/>
		<updated>2020-03-07T11:51:46Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Mention amending changes on Gitlab and rebasing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;New aports should normally go into testing repository. After a reasonable testing period if the package is complete (e.g. it has an init script, it has a working and sane default configuration, etc.) and it has a maintainer it can be moved into community repository. Main repository is for packages that are either core of the linux system or are dependencies of other core packages. A package in main cannot have a dependency in community or testing and a package in community cannot have a dependency on packages in testing.&lt;br /&gt;
&lt;br /&gt;
There are currently two ways to contribute to propose changes, via Gitlab and via the mailing list.&lt;br /&gt;
&lt;br /&gt;
== Submitting patches via Gitlab ==&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
To submit patches on [https://gitlab.alpinelinux.org Alpine Linux&#039; Gitlab instance] you first have to create an account for it [https://gitlab.alpinelinux.org/users/sign_in here]. It&#039;s recommended to set a SSH key now, refer to the [https://docs.gitlab.com/ee/ssh/ Gitlab docs] for how to do that. &lt;br /&gt;
&lt;br /&gt;
=== Creating a merge request ===&lt;br /&gt;
&lt;br /&gt;
Now that you&#039;re all setup you have to fork the repository you want to contribute to, for example if you want to open a merge request for aports you would have to fork [https://gitlab.alpinelinux.org/alpine/aports alpine/aports], see the [https://docs.gitlab.com/ee/user/project/repository/forking_workflow.html#creating-a-fork Gitlab docs] if you&#039;re having problems with that. Other repositories belonging to Alpine Linux live in the [https://gitlab.alpinelinux.org/alpine Alpine organisation].&lt;br /&gt;
After forking you can clone the repository like so:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|git clone git@gitlab.alpinelinux.org:$USER/$REPO.git}}&lt;br /&gt;
&lt;br /&gt;
Replace $USER with the nickname of your Gitlab account and $REPO with the repository you want to work on. Now you can change to another branch (e.g. the name of the package you want to edit) with:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|git checkout -b pkgname}}&lt;br /&gt;
&lt;br /&gt;
Do your changes now and then push with:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|git push -u origin $branchname }}&lt;br /&gt;
&lt;br /&gt;
Gitlab will print an URL to create a merge request in your terminal.&lt;br /&gt;
&lt;br /&gt;
=== Amending changes to a merge request ===&lt;br /&gt;
&lt;br /&gt;
If reviewers requested changes or if you noticed that something should be changed about your merge request&#039;s change you can simply amend your changes to the right commit and force push. So if you want to change the commit at the tip of your branch you can simply do:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|git commit --amend}}&lt;br /&gt;
&lt;br /&gt;
If you want to change a commit that&#039;s not at the tip of your branch you can do:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|git commit --fixup $SHA1_OF_COMMIT_YOU_WANT_TO_FIX}}&lt;br /&gt;
&lt;br /&gt;
Afterwards you have to force-push in order to update your merge request:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|git push -f origin}}&lt;br /&gt;
&lt;br /&gt;
=== Rebasing against Alpine Linux&#039;s master ===&lt;br /&gt;
&lt;br /&gt;
It&#039;s best to always stay up-to-date with the state of the upstream Alpine Linux repository to ensure that no merge conflicts happen later on. To do that you first have to add a new git remote which points to the upstream repository (instead of your fork):&lt;br /&gt;
&lt;br /&gt;
{{Cmd|git remote add upstream https://gitlab.alpinelinux.org/alpine/$REPO}}&lt;br /&gt;
&lt;br /&gt;
Now you can fetch all changes with:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|git fetch --all}}&lt;br /&gt;
&lt;br /&gt;
And then you can rebase with:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|git rebase}}&lt;br /&gt;
&lt;br /&gt;
== Submitting patches via the mailing list ==&lt;br /&gt;
&lt;br /&gt;
Patches should be created with git and submitted to [mailto:alpine-aports@lists.alpinelinux.org alpine-aports] mailing list with &#039;&#039;git send-email&#039;&#039; (which needs the &#039;&#039;git-email&#039;&#039; Alpine package).&lt;br /&gt;
&lt;br /&gt;
=== Only the last commit with &#039;git send-email&#039; ===&lt;br /&gt;
&lt;br /&gt;
To submit the last commit as a patch to [mailto:alpine-aports@lists.alpinelinux.org alpine-aports] mailing list:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|git send-email --to alpine-aports@lists.alpinelinux.org -1}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|You save the To-address (does not require &#039;--to alpine-aports@lists.alpinelinux.org&#039;) in the git config with: {{Cmd|git config sendemail.to alpine-aports@lists.alpinelinux.org}}}}&lt;br /&gt;
&lt;br /&gt;
The first line in commit message will be &#039;&#039;subject&#039;&#039; and the long description (separated with empty line) will be the body in the email. The example below shows &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
testing/packagename: new aport &amp;lt;- header&lt;br /&gt;
&lt;br /&gt;
https://example.com/packagename &amp;lt;- body&lt;br /&gt;
wonderful package&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|The git send-email command is provided by the &#039;&#039;&#039;git-email&#039;&#039;&#039; package (&#039;&#039;&#039;git-perl&#039;&#039;&#039; in v2.7 and older). }}&lt;br /&gt;
&lt;br /&gt;
See [[Development using git#Email_configuration]] on how configure SMTP Auth.&lt;br /&gt;
&lt;br /&gt;
=== Multiple commits with &#039;git send-email&#039; ===&lt;br /&gt;
&lt;br /&gt;
If you have many commits you can create a directory with patches and send them with &amp;lt;tt&amp;gt;git send-email&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;rm -Rf patches&lt;br /&gt;
mkdir patches&lt;br /&gt;
git format-patch -o patches origin&lt;br /&gt;
git send-email patches --compose --no-chain-reply-to --to alpine-aports@lists.alpinelinux.org&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You can also format patches for the last x number of commits with:&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;git format-patch -x -o patches&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This will produce the patches for each local commit in the directory &amp;quot;patches&amp;quot; and send them.&lt;br /&gt;
Use &#039;&#039;&#039;--no-chain-reply-to&#039;&#039;&#039; to avoid that each patch is sent as a &#039;&#039;reply&#039;&#039; to the previous patch.&lt;br /&gt;
&lt;br /&gt;
Eg.&lt;br /&gt;
* [PATCH 0/m]&lt;br /&gt;
** [PATCH 1/m]&lt;br /&gt;
*** [PATCH 2/m]&lt;br /&gt;
**** ...&lt;br /&gt;
&lt;br /&gt;
With the option &#039;&#039;&#039;--no-chain-reply-to&#039;&#039;&#039; the patches will be sent as a reply to the first email, the &#039;&#039;cover letter&#039;&#039; (the [PATCH 0/m]) and will make the email thread nicer.&lt;br /&gt;
Like this:&lt;br /&gt;
* [PATCH 0/m]&lt;br /&gt;
** [PATCH 1/m]&lt;br /&gt;
** [PATCH 2/m]&lt;br /&gt;
** ..&lt;br /&gt;
&lt;br /&gt;
=== Resend an updated patch ===&lt;br /&gt;
Sometimes patches are rejected due to minor issues in the patch. Do not send an incremental patch on top of your initial, bad, patch. Instead, recreate the patch and send a new, fixed version of your patch. (use &#039;&#039;git commit --amend&#039;&#039; to edit a local commit).&lt;br /&gt;
&lt;br /&gt;
When you sending a second version of the patch use &#039;&#039;&#039;--subject-prefix &amp;quot;PATCH v2&amp;quot;&#039;&#039;&#039; to indicate that this is a new version of a previously sent patch. You may also use &#039;&#039;&#039;--in-reply-to &amp;lt;message-id&amp;gt;&#039;&#039;&#039; where &amp;lt;message-id&amp;gt; the the id of email requesting the resend.&lt;br /&gt;
&lt;br /&gt;
You should also write a note on the what was changed. Use &#039;&#039;&#039;--annotate&#039;&#039;&#039; for this and write the comment under the three dashes &amp;quot;---&amp;quot; so the note is not included in the commit message. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
Subject: [PATCH v2] testing/mypackage: new aport&lt;br /&gt;
&lt;br /&gt;
https://example.com&lt;br /&gt;
Example package&lt;br /&gt;
---&lt;br /&gt;
Changes v1 -&amp;gt; v2:&lt;br /&gt;
 - removed depends&lt;br /&gt;
 - added zlib-dev to makedepends&lt;br /&gt;
&lt;br /&gt;
 testing/mypackage/APKBUILD | 41 +++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
 1 file changed, 41 insertions(+)&lt;br /&gt;
 create mode 100644 testing/mypackage/APKBUILD&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the notes that are below the &amp;quot;---&amp;quot; will not be included in the commit message.&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
&lt;br /&gt;
=== See also ===&lt;br /&gt;
* [[Patch Workflow]]&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Creating_patches&amp;diff=17001</id>
		<title>Creating patches</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Creating_patches&amp;diff=17001"/>
		<updated>2020-03-07T11:21:40Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Mention Gitlab&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;New aports should normally go into testing repository. After a reasonable testing period if the package is complete (e.g. it has an init script, it has a working and sane default configuration, etc.) and it has a maintainer it can be moved into community repository. Main repository is for packages that are either core of the linux system or are dependencies of other core packages. A package in main cannot have a dependency in community or testing and a package in community cannot have a dependency on packages in testing.&lt;br /&gt;
&lt;br /&gt;
There are currently two ways to contribute to propose changes, via Gitlab and via the mailing list.&lt;br /&gt;
&lt;br /&gt;
== Submitting patches via Gitlab ==&lt;br /&gt;
&lt;br /&gt;
To submit patches on [https://gitlab.alpinelinux.org Alpine Linux&#039; Gitlab instance] you first have to create an account for it [https://gitlab.alpinelinux.org/users/sign_in here]. It&#039;s recommended to set a SSH now, refer to the [https://docs.gitlab.com/ee/ssh/ Gitlab docs] for how to do that. Afterwards, you have to fork the repository you want to contribute to, for example if you want to open a merge request for aports you would have to fork [https://gitlab.alpinelinux.org/alpine/aports alpine/aports], see the [https://docs.gitlab.com/ee/user/project/repository/forking_workflow.html#creating-a-fork Gitlab docs] if you&#039;re having problems with that. Other repositories belonging to Alpine Linux live in the [https://gitlab.alpinelinux.org/alpine Alpine organisation].&lt;br /&gt;
After forking you can clone the repository like so:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|git clone git@gitlab.alpinelinux.org:$USER/$REPO.git}}&lt;br /&gt;
&lt;br /&gt;
Replace $USER with the nickname of your Gitlab account and $REPO with the repository you want to work on. Now you can change to another branch (e.g. the name of the package you want to edit) with:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|git checkout -b pkgname}}&lt;br /&gt;
&lt;br /&gt;
Do your changes now and then push with:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|git push -u origin $branchname }}&lt;br /&gt;
&lt;br /&gt;
Gitlab will print an URL to create a merge request in your terminal.&lt;br /&gt;
&lt;br /&gt;
== Submitting patches via the mailing list ==&lt;br /&gt;
&lt;br /&gt;
Patches should be created with git and submitted to [mailto:alpine-aports@lists.alpinelinux.org alpine-aports] mailing list with &#039;&#039;git send-email&#039;&#039; (which needs the &#039;&#039;git-email&#039;&#039; Alpine package).&lt;br /&gt;
&lt;br /&gt;
=== Only the last commit with &#039;git send-email&#039; ===&lt;br /&gt;
&lt;br /&gt;
To submit the last commit as a patch to [mailto:alpine-aports@lists.alpinelinux.org alpine-aports] mailing list:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|git send-email --to alpine-aports@lists.alpinelinux.org -1}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|You save the To-address (does not require &#039;--to alpine-aports@lists.alpinelinux.org&#039;) in the git config with: {{Cmd|git config sendemail.to alpine-aports@lists.alpinelinux.org}}}}&lt;br /&gt;
&lt;br /&gt;
The first line in commit message will be &#039;&#039;subject&#039;&#039; and the long description (separated with empty line) will be the body in the email. The example below shows &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
testing/packagename: new aport &amp;lt;- header&lt;br /&gt;
&lt;br /&gt;
https://example.com/packagename &amp;lt;- body&lt;br /&gt;
wonderful package&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|The git send-email command is provided by the &#039;&#039;&#039;git-email&#039;&#039;&#039; package (&#039;&#039;&#039;git-perl&#039;&#039;&#039; in v2.7 and older). }}&lt;br /&gt;
&lt;br /&gt;
See [[Development using git#Email_configuration]] on how configure SMTP Auth.&lt;br /&gt;
&lt;br /&gt;
=== Multiple commits with &#039;git send-email&#039; ===&lt;br /&gt;
&lt;br /&gt;
If you have many commits you can create a directory with patches and send them with &amp;lt;tt&amp;gt;git send-email&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;rm -Rf patches&lt;br /&gt;
mkdir patches&lt;br /&gt;
git format-patch -o patches origin&lt;br /&gt;
git send-email patches --compose --no-chain-reply-to --to alpine-aports@lists.alpinelinux.org&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You can also format patches for the last x number of commits with:&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;git format-patch -x -o patches&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This will produce the patches for each local commit in the directory &amp;quot;patches&amp;quot; and send them.&lt;br /&gt;
Use &#039;&#039;&#039;--no-chain-reply-to&#039;&#039;&#039; to avoid that each patch is sent as a &#039;&#039;reply&#039;&#039; to the previous patch.&lt;br /&gt;
&lt;br /&gt;
Eg.&lt;br /&gt;
* [PATCH 0/m]&lt;br /&gt;
** [PATCH 1/m]&lt;br /&gt;
*** [PATCH 2/m]&lt;br /&gt;
**** ...&lt;br /&gt;
&lt;br /&gt;
With the option &#039;&#039;&#039;--no-chain-reply-to&#039;&#039;&#039; the patches will be sent as a reply to the first email, the &#039;&#039;cover letter&#039;&#039; (the [PATCH 0/m]) and will make the email thread nicer.&lt;br /&gt;
Like this:&lt;br /&gt;
* [PATCH 0/m]&lt;br /&gt;
** [PATCH 1/m]&lt;br /&gt;
** [PATCH 2/m]&lt;br /&gt;
** ..&lt;br /&gt;
&lt;br /&gt;
=== Resend an updated patch ===&lt;br /&gt;
Sometimes patches are rejected due to minor issues in the patch. Do not send an incremental patch on top of your initial, bad, patch. Instead, recreate the patch and send a new, fixed version of your patch. (use &#039;&#039;git commit --amend&#039;&#039; to edit a local commit).&lt;br /&gt;
&lt;br /&gt;
When you sending a second version of the patch use &#039;&#039;&#039;--subject-prefix &amp;quot;PATCH v2&amp;quot;&#039;&#039;&#039; to indicate that this is a new version of a previously sent patch. You may also use &#039;&#039;&#039;--in-reply-to &amp;lt;message-id&amp;gt;&#039;&#039;&#039; where &amp;lt;message-id&amp;gt; the the id of email requesting the resend.&lt;br /&gt;
&lt;br /&gt;
You should also write a note on the what was changed. Use &#039;&#039;&#039;--annotate&#039;&#039;&#039; for this and write the comment under the three dashes &amp;quot;---&amp;quot; so the note is not included in the commit message. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
Subject: [PATCH v2] testing/mypackage: new aport&lt;br /&gt;
&lt;br /&gt;
https://example.com&lt;br /&gt;
Example package&lt;br /&gt;
---&lt;br /&gt;
Changes v1 -&amp;gt; v2:&lt;br /&gt;
 - removed depends&lt;br /&gt;
 - added zlib-dev to makedepends&lt;br /&gt;
&lt;br /&gt;
 testing/mypackage/APKBUILD | 41 +++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
 1 file changed, 41 insertions(+)&lt;br /&gt;
 create mode 100644 testing/mypackage/APKBUILD&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the notes that are below the &amp;quot;---&amp;quot; will not be included in the commit message.&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
&lt;br /&gt;
=== See also ===&lt;br /&gt;
* [[Patch Workflow]]&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.12.0&amp;diff=16977</id>
		<title>Release Notes for Alpine 3.12.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.12.0&amp;diff=16977"/>
		<updated>2020-03-02T09:53:06Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Set a name for the ML link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== aports ==&lt;br /&gt;
&lt;br /&gt;
===== Initial support for DLang =====&lt;br /&gt;
&lt;br /&gt;
We&#039;ve added initial support for the D language with this release. We now have GDC, the D compiler frontend using GCC, available on all arches but ppc64le and LDC, a D compiler using the LLVM backend, on x86_64. Most things are built against ldc and as such only available on x86_64 right now due to GDC shipping a rather outdated version of the Phobos, the D standard library.&lt;br /&gt;
&lt;br /&gt;
===== py3-setuptools now uses system python3 modules instead of vendored dependencies =====&lt;br /&gt;
&lt;br /&gt;
py3-setuptools now installs py3-packaging, py3-parsing, py3-appdirs, py3-six and py3-ordered-set from the system.&lt;br /&gt;
&lt;br /&gt;
The following commits are the ones responsible for this change:&lt;br /&gt;
&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=efca8852f37cb4028f234f92e2d035617f524820 py3-six] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=55e3496387ad3f2df387b2cf6bc84e85ef729833 py3-ordered-set] (new aport)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=cc1636b08fba58b629501d525d658aed4bcbeab2 py3-ordered-set] (move from testing to main)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=da743693eda54b9faf5086746b91506495fc689f py3-appdirs] (move from community to main)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=60efe787954008af546a5bde839db09f11682102 py3-appdirs] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=a50097b40bcf80a9aec201fef73a722206f43a0d py3-packaging] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=52ee5092c510657e9b1e8b4ae0104d405c9eac99 py3-parsing] (install manually)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=33ea734e2d28d88a3d545500c96b4c72b3e78432 py3-setuptools] (use system component)&lt;br /&gt;
&lt;br /&gt;
===== ncurses fixes =====&lt;br /&gt;
&lt;br /&gt;
A few fixes trickled in relating exclusively to Alpine Linux that affect ncurses:&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=762b9fd601983d8a6e6a60692158f3f22b1b60fe commit] the ncurses-lib package no longer depends on the ncurses-terminfo, which was too big at 7.5 MB, instead ncurses-lib now depends solely on the ncurses-terminfo-base package which weights at around 120 kB.&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=56aa7795fecc48561deb095995abd335e16ba515 commit] the ncurses-terminfo-base now includes the most common terminfo databases like tmux, screen, xterm-256color and also databases for packaged terminals like gnome-terminal, vte, konsole, alacritty, kitty, putty. All other terminfo databases are now in ncurses-terminfo.&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=1470a6c8e76491a8d059ebd4b7521c4bf20b837c commit] all terminals that have their terminfo databases provided by the ncurses-terminfo-base now depend on it.&lt;br /&gt;
&lt;br /&gt;
===== python3 no longer provides pip3, use py3-pip from community =====&lt;br /&gt;
&lt;br /&gt;
Python3 is now built with --without-ensurepip which removes pip3 and its libraries from it. Instead use the py3-pip pacakge which uses system components.&lt;br /&gt;
&lt;br /&gt;
===== BPF JIT support =====&lt;br /&gt;
&lt;br /&gt;
&amp;gt; TODO: Small preamble about BPF&lt;br /&gt;
&lt;br /&gt;
So it (BPF JIT) has been enabled by default in [https://git.alpinelinux.org/aports/commit/?id=3bf2313adc57fe6b36bf459ddca6d65a392609db 3bf2313adc57fe6b36bf459ddca6d65a392609db], and unprivileged BPF JIT has been disabled in [https://git.alpinelinux.org/aports/commit/?id=4e286992d5ed751f6ca60eb18d77313bb0868513 4e286992d5ed751f6ca60eb18d77313bb0868513].&lt;br /&gt;
&lt;br /&gt;
===== OpenRC now has a sane ordering of directories when configuring kernel parameters =====&lt;br /&gt;
&lt;br /&gt;
Configuring kernel parameters is done by having configuration files in specific locations like &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; and files ending with &amp;lt;code&amp;gt;.conf&amp;lt;/code&amp;gt; in certain directories like &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt;. Before 3.12.0 the ordering had no logical explanation and&lt;br /&gt;
surprised users that expected a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Starting with 3.12.0 the ordering is as follows:&lt;br /&gt;
&lt;br /&gt;
# /lib/sysctl.d/*.conf&lt;br /&gt;
# /usr/lib/sysctl.d/*.conf&lt;br /&gt;
# /run/sysctl.d/*.conf&lt;br /&gt;
# /etc/sysctl.conf&lt;br /&gt;
# /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/lib/sysctl.d&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/lib/sysctl.d&amp;lt;/code&amp;gt; are to be used by the distribution and packages. Alpine Linux installs its default configuration file in &amp;lt;code&amp;gt;/lib/sysctl.d/00-alpine.conf&amp;lt;/code&amp;gt;. Software installed via our package manager will install to either of those places.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/run/sysctl.d&amp;lt;/code&amp;gt; holds configuration that is created at run-time by daemons/services or at very early-boot. Neither the distribution nor the packaged software will install configuration to it, primarily because /run is in temporary memory. Configuration in this location that matches names the locations used by the distribution and packages will cause the latter not to be read and applied by the &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; holds configuration that is created and maintained by the local administrator, neither Alpine nor its packaged software will touch it, and configuration in that has the same name as in the location reserved for the distribution and packages, or the location for run-time configuration from daemons/services, will cause the latter to not be read and applied by the &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; is a historical location for this kind of configuration and is kept for the same reasons.&lt;br /&gt;
&lt;br /&gt;
===== OpenRC now has a sane ordering of directories when loading kernel modules =====&lt;br /&gt;
&lt;br /&gt;
Loading kernel modules during boot is done with the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; OpenRC service, which reads configuration files in certain locations and loads kernel modules with the modprobe utility from either busybox or util-linux.&lt;br /&gt;
&lt;br /&gt;
Starting with 3.12.0 a more logical ordering is adopted for which configuration files to read and ignore:&lt;br /&gt;
&lt;br /&gt;
# /lib/modules-load.d/*.conf&lt;br /&gt;
# /usr/lib/modules-load.d/*.conf&lt;br /&gt;
# /run/modules-load.d/*.conf&lt;br /&gt;
# /etc/modules&lt;br /&gt;
# /etc/modules-load.d/*.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/lib/modules-load.d&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/lib/modules-load.d&amp;lt;/code&amp;gt; are to be used by the distribution and packages. Software installed via our package manager will install to either of those places.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/run/modules-load.d&amp;lt;/code&amp;gt; holds configuration that is created at run-time by daemons/services or at very early-boot. Neither the distribution nor the packaged software will install configuration to it, primarily because /run is in temporary memory. Configuration in this location that matches names in the locations used by the distribution and packages will cause the latter not to be read and applied by the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/modules-load.d&amp;lt;/code&amp;gt; holds configuration that is created and maintained by the local administrator, neither Alpine nor its packaged software will touch it, and configuration in that has the same name as in the location reserved for the distribution and packages, or locations reserved for the run-time configuration of daemons/services, will cause the latter to not be read and applied by the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/modules&amp;lt;/code&amp;gt; is a historical location for this kind of configuration and is kept for the same reasons.&lt;br /&gt;
&lt;br /&gt;
===== Telegram Desktop is now available in the community repo =====&lt;br /&gt;
&lt;br /&gt;
See [https://git.alpinelinux.org/aports/commit/?id=184355fdc44bc2e12976d65518fe029d8a6e459d commit] that moved the package to the community repo for explanation.&lt;br /&gt;
&lt;br /&gt;
===== efitools and sbsigntool are now in main/ =====&lt;br /&gt;
&lt;br /&gt;
Those packages have lived in testing/ for a long time and have been successfully used by one of our developers to implement secure-boot in his system. They have been moved to main/ and will be available for others.&lt;br /&gt;
&lt;br /&gt;
===== Packages which need libsecret&#039;s DBus API now depend a provider of its API via dbus:org.freedesktop.Secret =====&lt;br /&gt;
&lt;br /&gt;
Previously it was possible to install a program which required the DBus API of libsecret (e.g. Fractal), but not install a secrets provider (e.g. gnome-keyring), so logins wouldn&#039;t be saved. This has been corrected and packages which require this API depend on the provider-package dbus:org.freedesktop:Secret now. It&#039;s provided by gnome-keyring, kwallet and keepassxc (in that order of importance, i.e. if none of these is pulled in gnome-keyring will be chosen by default). Right now we manually declared the provider for dbus:org.freedesktop.Secret, but eventually we should have an automatic detection for the DBus API packages provide to make this easier for other packages.&lt;br /&gt;
&lt;br /&gt;
===== Preferring enchant2 over enchant =====&lt;br /&gt;
&lt;br /&gt;
All packages which support enchant2 have been moved over to it instead of using enchant(1). enchant2 now also supports nuspell, which is a faster drop-in replacement for hunspell, which utilizes hunspell&#039;s dictionaries.&lt;br /&gt;
&lt;br /&gt;
===== Firefox is now in community =====&lt;br /&gt;
&lt;br /&gt;
Firefox finally left testing and will be in community, supported for 6 months.&lt;br /&gt;
&lt;br /&gt;
===== moonjit is now luajit =====&lt;br /&gt;
&lt;br /&gt;
Our luajit package switched to the alive moonjit fork which has, among other things, s390x support and actual development.&lt;br /&gt;
&lt;br /&gt;
This [https://git.alpinelinux.org/aports/commit/?id=af7f776d08cf7c12c3dd62347829fe33e66dceaa commit] switched luajit over to moonjit, the following [https://git.alpinelinux.org/aports/commit/?id=a7d057d98859940cc3347dba011957f99291b1fa commit] removes our **HUGE** 46k s390x support patch which is now handled by upstream.&lt;br /&gt;
&lt;br /&gt;
===== Support for YubiKeys =====&lt;br /&gt;
&lt;br /&gt;
yubikey-manager and yubikey-manager-qt have been added to the community repos for using and managing your yubikeys. Installing yubikey-manager and enabling the pcscd service should make yubikeys functional.&lt;br /&gt;
&lt;br /&gt;
== abuild ==&lt;br /&gt;
&lt;br /&gt;
===== Add default functions for subpackages that hold Bash, Zsh and Fish completion =====&lt;br /&gt;
&lt;br /&gt;
abuild now provides default functions for $pkgname-bash-completion, $pkgname-zsh-completion and $pkgname-fish-completion subpackages.&lt;br /&gt;
&lt;br /&gt;
Expected location of the completion files per shell:&lt;br /&gt;
&lt;br /&gt;
* Bash -&amp;gt; &amp;lt;code&amp;gt;/usr/share/bash-completion/completions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Zsh -&amp;gt; &amp;lt;code&amp;gt;/usr/share/zsh/site-functions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Fish -&amp;gt; &amp;lt;code&amp;gt;/usr/share/fish/completions&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Files must be installed in the expected location in relation to &#039;&#039;&#039;$pkgdir&#039;&#039;&#039; in &#039;&#039;&#039;pacakge()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/d5826968b713123a4f51d3dec1adb1225d0e194f d5826968b713123a4f51d3dec1adb1225d0e194f].&lt;br /&gt;
&lt;br /&gt;
===== newapkbuild when called with CMake (-C) does out-of-source builds by default =====&lt;br /&gt;
&lt;br /&gt;
When packaging with newapkbuild and using the -C switch to pre-fill the apkbuild with skeleton functions for CMake now:&lt;br /&gt;
&lt;br /&gt;
* Adds &amp;lt;code&amp;gt;-B build&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;cmake&amp;lt;/code&amp;gt; call in &#039;&#039;&#039;build()&#039;&#039;&#039;.&lt;br /&gt;
* Adds &amp;lt;code&amp;gt;-C build&amp;lt;/code&amp;gt; the &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; calls.&lt;br /&gt;
&lt;br /&gt;
Doing out-of-source builds are recommended upstream to the point where warnings are printed when calling CMake on a project.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/e125a764896d884c69cc409e614b65cb336c15e8 e125a764896d884c69cc409e614b65cb336c15e8].&lt;br /&gt;
&lt;br /&gt;
===== set CARGO_HOME to cache dependencies of rust packages =====&lt;br /&gt;
&lt;br /&gt;
CARGO_HOME is now set to &#039;&#039;&#039;$SRCDEST/cargo&#039;&#039;&#039; and will cache all dependencies downloaded.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/af0c88e6abbb1e49224759f5c51b3068e6eab28b af0c88e6abbb1e49224759f5c51b3068e6eab28b].&lt;br /&gt;
&lt;br /&gt;
===== The &amp;quot;plain&amp;quot; buildtype for Meson and &amp;quot;None&amp;quot; buildtype for CMake are used now =====&lt;br /&gt;
&lt;br /&gt;
We previously used the &amp;quot;release&amp;quot; or &amp;quot;debugoptimized&amp;quot; buildmode for Meson or &amp;quot;Release&amp;quot; or &amp;quot;RelWithDebInfo&amp;quot; for CMake. This caused Meson and CMake to ignore parts of our C{,XX}FLAGS, e.g. by setting -O2 or even -O3 instead of our default of -Os. We&#039;ve changed to the &amp;quot;plain&amp;quot; buildtype and the &amp;quot;None&amp;quot; buildtype for CMake. This should result in smaller binaries since -Os is respected now. See [https://lists.alpinelinux.org/~alpine/devel/%3C2896c13070c508a49cbaa72c8fb7f34ea947358b.camel%40cogitri.dev%3E the respective mailing list post]&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.12.0&amp;diff=16976</id>
		<title>Release Notes for Alpine 3.12.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.12.0&amp;diff=16976"/>
		<updated>2020-03-02T09:51:54Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Mention the &amp;quot;plain&amp;quot;/&amp;quot;None&amp;quot; buildtype change.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== aports ==&lt;br /&gt;
&lt;br /&gt;
===== Initial support for DLang =====&lt;br /&gt;
&lt;br /&gt;
We&#039;ve added initial support for the D language with this release. We now have GDC, the D compiler frontend using GCC, available on all arches but ppc64le and LDC, a D compiler using the LLVM backend, on x86_64. Most things are built against ldc and as such only available on x86_64 right now due to GDC shipping a rather outdated version of the Phobos, the D standard library.&lt;br /&gt;
&lt;br /&gt;
===== py3-setuptools now uses system python3 modules instead of vendored dependencies =====&lt;br /&gt;
&lt;br /&gt;
py3-setuptools now installs py3-packaging, py3-parsing, py3-appdirs, py3-six and py3-ordered-set from the system.&lt;br /&gt;
&lt;br /&gt;
The following commits are the ones responsible for this change:&lt;br /&gt;
&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=efca8852f37cb4028f234f92e2d035617f524820 py3-six] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=55e3496387ad3f2df387b2cf6bc84e85ef729833 py3-ordered-set] (new aport)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=cc1636b08fba58b629501d525d658aed4bcbeab2 py3-ordered-set] (move from testing to main)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=da743693eda54b9faf5086746b91506495fc689f py3-appdirs] (move from community to main)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=60efe787954008af546a5bde839db09f11682102 py3-appdirs] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=a50097b40bcf80a9aec201fef73a722206f43a0d py3-packaging] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=52ee5092c510657e9b1e8b4ae0104d405c9eac99 py3-parsing] (install manually)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=33ea734e2d28d88a3d545500c96b4c72b3e78432 py3-setuptools] (use system component)&lt;br /&gt;
&lt;br /&gt;
===== ncurses fixes =====&lt;br /&gt;
&lt;br /&gt;
A few fixes trickled in relating exclusively to Alpine Linux that affect ncurses:&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=762b9fd601983d8a6e6a60692158f3f22b1b60fe commit] the ncurses-lib package no longer depends on the ncurses-terminfo, which was too big at 7.5 MB, instead ncurses-lib now depends solely on the ncurses-terminfo-base package which weights at around 120 kB.&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=56aa7795fecc48561deb095995abd335e16ba515 commit] the ncurses-terminfo-base now includes the most common terminfo databases like tmux, screen, xterm-256color and also databases for packaged terminals like gnome-terminal, vte, konsole, alacritty, kitty, putty. All other terminfo databases are now in ncurses-terminfo.&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=1470a6c8e76491a8d059ebd4b7521c4bf20b837c commit] all terminals that have their terminfo databases provided by the ncurses-terminfo-base now depend on it.&lt;br /&gt;
&lt;br /&gt;
===== python3 no longer provides pip3, use py3-pip from community =====&lt;br /&gt;
&lt;br /&gt;
Python3 is now built with --without-ensurepip which removes pip3 and its libraries from it. Instead use the py3-pip pacakge which uses system components.&lt;br /&gt;
&lt;br /&gt;
===== BPF JIT support =====&lt;br /&gt;
&lt;br /&gt;
&amp;gt; TODO: Small preamble about BPF&lt;br /&gt;
&lt;br /&gt;
So it (BPF JIT) has been enabled by default in [https://git.alpinelinux.org/aports/commit/?id=3bf2313adc57fe6b36bf459ddca6d65a392609db 3bf2313adc57fe6b36bf459ddca6d65a392609db], and unprivileged BPF JIT has been disabled in [https://git.alpinelinux.org/aports/commit/?id=4e286992d5ed751f6ca60eb18d77313bb0868513 4e286992d5ed751f6ca60eb18d77313bb0868513].&lt;br /&gt;
&lt;br /&gt;
===== OpenRC now has a sane ordering of directories when configuring kernel parameters =====&lt;br /&gt;
&lt;br /&gt;
Configuring kernel parameters is done by having configuration files in specific locations like &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; and files ending with &amp;lt;code&amp;gt;.conf&amp;lt;/code&amp;gt; in certain directories like &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt;. Before 3.12.0 the ordering had no logical explanation and&lt;br /&gt;
surprised users that expected a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Starting with 3.12.0 the ordering is as follows:&lt;br /&gt;
&lt;br /&gt;
# /lib/sysctl.d/*.conf&lt;br /&gt;
# /usr/lib/sysctl.d/*.conf&lt;br /&gt;
# /run/sysctl.d/*.conf&lt;br /&gt;
# /etc/sysctl.conf&lt;br /&gt;
# /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/lib/sysctl.d&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/lib/sysctl.d&amp;lt;/code&amp;gt; are to be used by the distribution and packages. Alpine Linux installs its default configuration file in &amp;lt;code&amp;gt;/lib/sysctl.d/00-alpine.conf&amp;lt;/code&amp;gt;. Software installed via our package manager will install to either of those places.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/run/sysctl.d&amp;lt;/code&amp;gt; holds configuration that is created at run-time by daemons/services or at very early-boot. Neither the distribution nor the packaged software will install configuration to it, primarily because /run is in temporary memory. Configuration in this location that matches names the locations used by the distribution and packages will cause the latter not to be read and applied by the &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; holds configuration that is created and maintained by the local administrator, neither Alpine nor its packaged software will touch it, and configuration in that has the same name as in the location reserved for the distribution and packages, or the location for run-time configuration from daemons/services, will cause the latter to not be read and applied by the &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; is a historical location for this kind of configuration and is kept for the same reasons.&lt;br /&gt;
&lt;br /&gt;
===== OpenRC now has a sane ordering of directories when loading kernel modules =====&lt;br /&gt;
&lt;br /&gt;
Loading kernel modules during boot is done with the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; OpenRC service, which reads configuration files in certain locations and loads kernel modules with the modprobe utility from either busybox or util-linux.&lt;br /&gt;
&lt;br /&gt;
Starting with 3.12.0 a more logical ordering is adopted for which configuration files to read and ignore:&lt;br /&gt;
&lt;br /&gt;
# /lib/modules-load.d/*.conf&lt;br /&gt;
# /usr/lib/modules-load.d/*.conf&lt;br /&gt;
# /run/modules-load.d/*.conf&lt;br /&gt;
# /etc/modules&lt;br /&gt;
# /etc/modules-load.d/*.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/lib/modules-load.d&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/lib/modules-load.d&amp;lt;/code&amp;gt; are to be used by the distribution and packages. Software installed via our package manager will install to either of those places.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/run/modules-load.d&amp;lt;/code&amp;gt; holds configuration that is created at run-time by daemons/services or at very early-boot. Neither the distribution nor the packaged software will install configuration to it, primarily because /run is in temporary memory. Configuration in this location that matches names in the locations used by the distribution and packages will cause the latter not to be read and applied by the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/modules-load.d&amp;lt;/code&amp;gt; holds configuration that is created and maintained by the local administrator, neither Alpine nor its packaged software will touch it, and configuration in that has the same name as in the location reserved for the distribution and packages, or locations reserved for the run-time configuration of daemons/services, will cause the latter to not be read and applied by the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/modules&amp;lt;/code&amp;gt; is a historical location for this kind of configuration and is kept for the same reasons.&lt;br /&gt;
&lt;br /&gt;
===== Telegram Desktop is now available in the community repo =====&lt;br /&gt;
&lt;br /&gt;
See [https://git.alpinelinux.org/aports/commit/?id=184355fdc44bc2e12976d65518fe029d8a6e459d commit] that moved the package to the community repo for explanation.&lt;br /&gt;
&lt;br /&gt;
===== efitools and sbsigntool are now in main/ =====&lt;br /&gt;
&lt;br /&gt;
Those packages have lived in testing/ for a long time and have been successfully used by one of our developers to implement secure-boot in his system. They have been moved to main/ and will be available for others.&lt;br /&gt;
&lt;br /&gt;
===== Packages which need libsecret&#039;s DBus API now depend a provider of its API via dbus:org.freedesktop.Secret =====&lt;br /&gt;
&lt;br /&gt;
Previously it was possible to install a program which required the DBus API of libsecret (e.g. Fractal), but not install a secrets provider (e.g. gnome-keyring), so logins wouldn&#039;t be saved. This has been corrected and packages which require this API depend on the provider-package dbus:org.freedesktop:Secret now. It&#039;s provided by gnome-keyring, kwallet and keepassxc (in that order of importance, i.e. if none of these is pulled in gnome-keyring will be chosen by default). Right now we manually declared the provider for dbus:org.freedesktop.Secret, but eventually we should have an automatic detection for the DBus API packages provide to make this easier for other packages.&lt;br /&gt;
&lt;br /&gt;
===== Preferring enchant2 over enchant =====&lt;br /&gt;
&lt;br /&gt;
All packages which support enchant2 have been moved over to it instead of using enchant(1). enchant2 now also supports nuspell, which is a faster drop-in replacement for hunspell, which utilizes hunspell&#039;s dictionaries.&lt;br /&gt;
&lt;br /&gt;
===== Firefox is now in community =====&lt;br /&gt;
&lt;br /&gt;
Firefox finally left testing and will be in community, supported for 6 months.&lt;br /&gt;
&lt;br /&gt;
===== moonjit is now luajit =====&lt;br /&gt;
&lt;br /&gt;
Our luajit package switched to the alive moonjit fork which has, among other things, s390x support and actual development.&lt;br /&gt;
&lt;br /&gt;
This [https://git.alpinelinux.org/aports/commit/?id=af7f776d08cf7c12c3dd62347829fe33e66dceaa commit] switched luajit over to moonjit, the following [https://git.alpinelinux.org/aports/commit/?id=a7d057d98859940cc3347dba011957f99291b1fa commit] removes our **HUGE** 46k s390x support patch which is now handled by upstream.&lt;br /&gt;
&lt;br /&gt;
===== Support for YubiKeys =====&lt;br /&gt;
&lt;br /&gt;
yubikey-manager and yubikey-manager-qt have been added to the community repos for using and managing your yubikeys. Installing yubikey-manager and enabling the pcscd service should make yubikeys functional.&lt;br /&gt;
&lt;br /&gt;
== abuild ==&lt;br /&gt;
&lt;br /&gt;
===== Add default functions for subpackages that hold Bash, Zsh and Fish completion =====&lt;br /&gt;
&lt;br /&gt;
abuild now provides default functions for $pkgname-bash-completion, $pkgname-zsh-completion and $pkgname-fish-completion subpackages.&lt;br /&gt;
&lt;br /&gt;
Expected location of the completion files per shell:&lt;br /&gt;
&lt;br /&gt;
* Bash -&amp;gt; &amp;lt;code&amp;gt;/usr/share/bash-completion/completions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Zsh -&amp;gt; &amp;lt;code&amp;gt;/usr/share/zsh/site-functions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Fish -&amp;gt; &amp;lt;code&amp;gt;/usr/share/fish/completions&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Files must be installed in the expected location in relation to &#039;&#039;&#039;$pkgdir&#039;&#039;&#039; in &#039;&#039;&#039;pacakge()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/d5826968b713123a4f51d3dec1adb1225d0e194f d5826968b713123a4f51d3dec1adb1225d0e194f].&lt;br /&gt;
&lt;br /&gt;
===== newapkbuild when called with CMake (-C) does out-of-source builds by default =====&lt;br /&gt;
&lt;br /&gt;
When packaging with newapkbuild and using the -C switch to pre-fill the apkbuild with skeleton functions for CMake now:&lt;br /&gt;
&lt;br /&gt;
* Adds &amp;lt;code&amp;gt;-B build&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;cmake&amp;lt;/code&amp;gt; call in &#039;&#039;&#039;build()&#039;&#039;&#039;.&lt;br /&gt;
* Adds &amp;lt;code&amp;gt;-C build&amp;lt;/code&amp;gt; the &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; calls.&lt;br /&gt;
&lt;br /&gt;
Doing out-of-source builds are recommended upstream to the point where warnings are printed when calling CMake on a project.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/e125a764896d884c69cc409e614b65cb336c15e8 e125a764896d884c69cc409e614b65cb336c15e8].&lt;br /&gt;
&lt;br /&gt;
===== set CARGO_HOME to cache dependencies of rust packages =====&lt;br /&gt;
&lt;br /&gt;
CARGO_HOME is now set to &#039;&#039;&#039;$SRCDEST/cargo&#039;&#039;&#039; and will cache all dependencies downloaded.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/af0c88e6abbb1e49224759f5c51b3068e6eab28b af0c88e6abbb1e49224759f5c51b3068e6eab28b].&lt;br /&gt;
&lt;br /&gt;
===== The &amp;quot;plain&amp;quot; buildtype for Meson and &amp;quot;None&amp;quot; buildtype for CMake are used now =====&lt;br /&gt;
&lt;br /&gt;
We previously used the &amp;quot;release&amp;quot; or &amp;quot;debugoptimized&amp;quot; buildmode for Meson or &amp;quot;Release&amp;quot; or &amp;quot;RelWithDebInfo&amp;quot; for CMake. This caused Meson and CMake to ignore parts of our C{,XX}FLAGS, e.g. by setting -O2 or even -O3 instead of our default of -Os. We&#039;ve changed to the &amp;quot;plain&amp;quot; buildtype and the &amp;quot;None&amp;quot; buildtype for CMake. This should result in smaller binaries since -Os is respected now. See https://lists.alpinelinux.org/~alpine/devel/%3C2896c13070c508a49cbaa72c8fb7f34ea947358b.camel%40cogitri.dev%3E for more information.&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.12.0&amp;diff=16975</id>
		<title>Release Notes for Alpine 3.12.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.12.0&amp;diff=16975"/>
		<updated>2020-03-02T09:48:44Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Mention yubikey support&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== aports ==&lt;br /&gt;
&lt;br /&gt;
===== Initial support for DLang =====&lt;br /&gt;
&lt;br /&gt;
We&#039;ve added initial support for the D language with this release. We now have GDC, the D compiler frontend using GCC, available on all arches but ppc64le and LDC, a D compiler using the LLVM backend, on x86_64. Most things are built against ldc and as such only available on x86_64 right now due to GDC shipping a rather outdated version of the Phobos, the D standard library.&lt;br /&gt;
&lt;br /&gt;
===== py3-setuptools now uses system python3 modules instead of vendored dependencies =====&lt;br /&gt;
&lt;br /&gt;
py3-setuptools now installs py3-packaging, py3-parsing, py3-appdirs, py3-six and py3-ordered-set from the system.&lt;br /&gt;
&lt;br /&gt;
The following commits are the ones responsible for this change:&lt;br /&gt;
&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=efca8852f37cb4028f234f92e2d035617f524820 py3-six] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=55e3496387ad3f2df387b2cf6bc84e85ef729833 py3-ordered-set] (new aport)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=cc1636b08fba58b629501d525d658aed4bcbeab2 py3-ordered-set] (move from testing to main)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=da743693eda54b9faf5086746b91506495fc689f py3-appdirs] (move from community to main)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=60efe787954008af546a5bde839db09f11682102 py3-appdirs] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=a50097b40bcf80a9aec201fef73a722206f43a0d py3-packaging] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=52ee5092c510657e9b1e8b4ae0104d405c9eac99 py3-parsing] (install manually)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=33ea734e2d28d88a3d545500c96b4c72b3e78432 py3-setuptools] (use system component)&lt;br /&gt;
&lt;br /&gt;
===== ncurses fixes =====&lt;br /&gt;
&lt;br /&gt;
A few fixes trickled in relating exclusively to Alpine Linux that affect ncurses:&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=762b9fd601983d8a6e6a60692158f3f22b1b60fe commit] the ncurses-lib package no longer depends on the ncurses-terminfo, which was too big at 7.5 MB, instead ncurses-lib now depends solely on the ncurses-terminfo-base package which weights at around 120 kB.&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=56aa7795fecc48561deb095995abd335e16ba515 commit] the ncurses-terminfo-base now includes the most common terminfo databases like tmux, screen, xterm-256color and also databases for packaged terminals like gnome-terminal, vte, konsole, alacritty, kitty, putty. All other terminfo databases are now in ncurses-terminfo.&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=1470a6c8e76491a8d059ebd4b7521c4bf20b837c commit] all terminals that have their terminfo databases provided by the ncurses-terminfo-base now depend on it.&lt;br /&gt;
&lt;br /&gt;
===== python3 no longer provides pip3, use py3-pip from community =====&lt;br /&gt;
&lt;br /&gt;
Python3 is now built with --without-ensurepip which removes pip3 and its libraries from it. Instead use the py3-pip pacakge which uses system components.&lt;br /&gt;
&lt;br /&gt;
===== BPF JIT support =====&lt;br /&gt;
&lt;br /&gt;
&amp;gt; TODO: Small preamble about BPF&lt;br /&gt;
&lt;br /&gt;
So it (BPF JIT) has been enabled by default in [https://git.alpinelinux.org/aports/commit/?id=3bf2313adc57fe6b36bf459ddca6d65a392609db 3bf2313adc57fe6b36bf459ddca6d65a392609db], and unprivileged BPF JIT has been disabled in [https://git.alpinelinux.org/aports/commit/?id=4e286992d5ed751f6ca60eb18d77313bb0868513 4e286992d5ed751f6ca60eb18d77313bb0868513].&lt;br /&gt;
&lt;br /&gt;
===== OpenRC now has a sane ordering of directories when configuring kernel parameters =====&lt;br /&gt;
&lt;br /&gt;
Configuring kernel parameters is done by having configuration files in specific locations like &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; and files ending with &amp;lt;code&amp;gt;.conf&amp;lt;/code&amp;gt; in certain directories like &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt;. Before 3.12.0 the ordering had no logical explanation and&lt;br /&gt;
surprised users that expected a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Starting with 3.12.0 the ordering is as follows:&lt;br /&gt;
&lt;br /&gt;
# /lib/sysctl.d/*.conf&lt;br /&gt;
# /usr/lib/sysctl.d/*.conf&lt;br /&gt;
# /run/sysctl.d/*.conf&lt;br /&gt;
# /etc/sysctl.conf&lt;br /&gt;
# /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/lib/sysctl.d&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/lib/sysctl.d&amp;lt;/code&amp;gt; are to be used by the distribution and packages. Alpine Linux installs its default configuration file in &amp;lt;code&amp;gt;/lib/sysctl.d/00-alpine.conf&amp;lt;/code&amp;gt;. Software installed via our package manager will install to either of those places.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/run/sysctl.d&amp;lt;/code&amp;gt; holds configuration that is created at run-time by daemons/services or at very early-boot. Neither the distribution nor the packaged software will install configuration to it, primarily because /run is in temporary memory. Configuration in this location that matches names the locations used by the distribution and packages will cause the latter not to be read and applied by the &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; holds configuration that is created and maintained by the local administrator, neither Alpine nor its packaged software will touch it, and configuration in that has the same name as in the location reserved for the distribution and packages, or the location for run-time configuration from daemons/services, will cause the latter to not be read and applied by the &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; is a historical location for this kind of configuration and is kept for the same reasons.&lt;br /&gt;
&lt;br /&gt;
===== OpenRC now has a sane ordering of directories when loading kernel modules =====&lt;br /&gt;
&lt;br /&gt;
Loading kernel modules during boot is done with the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; OpenRC service, which reads configuration files in certain locations and loads kernel modules with the modprobe utility from either busybox or util-linux.&lt;br /&gt;
&lt;br /&gt;
Starting with 3.12.0 a more logical ordering is adopted for which configuration files to read and ignore:&lt;br /&gt;
&lt;br /&gt;
# /lib/modules-load.d/*.conf&lt;br /&gt;
# /usr/lib/modules-load.d/*.conf&lt;br /&gt;
# /run/modules-load.d/*.conf&lt;br /&gt;
# /etc/modules&lt;br /&gt;
# /etc/modules-load.d/*.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/lib/modules-load.d&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/lib/modules-load.d&amp;lt;/code&amp;gt; are to be used by the distribution and packages. Software installed via our package manager will install to either of those places.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/run/modules-load.d&amp;lt;/code&amp;gt; holds configuration that is created at run-time by daemons/services or at very early-boot. Neither the distribution nor the packaged software will install configuration to it, primarily because /run is in temporary memory. Configuration in this location that matches names in the locations used by the distribution and packages will cause the latter not to be read and applied by the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/modules-load.d&amp;lt;/code&amp;gt; holds configuration that is created and maintained by the local administrator, neither Alpine nor its packaged software will touch it, and configuration in that has the same name as in the location reserved for the distribution and packages, or locations reserved for the run-time configuration of daemons/services, will cause the latter to not be read and applied by the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/modules&amp;lt;/code&amp;gt; is a historical location for this kind of configuration and is kept for the same reasons.&lt;br /&gt;
&lt;br /&gt;
===== Telegram Desktop is now available in the community repo =====&lt;br /&gt;
&lt;br /&gt;
See [https://git.alpinelinux.org/aports/commit/?id=184355fdc44bc2e12976d65518fe029d8a6e459d commit] that moved the package to the community repo for explanation.&lt;br /&gt;
&lt;br /&gt;
===== efitools and sbsigntool are now in main/ =====&lt;br /&gt;
&lt;br /&gt;
Those packages have lived in testing/ for a long time and have been successfully used by one of our developers to implement secure-boot in his system. They have been moved to main/ and will be available for others.&lt;br /&gt;
&lt;br /&gt;
===== Packages which need libsecret&#039;s DBus API now depend a provider of its API via dbus:org.freedesktop.Secret =====&lt;br /&gt;
&lt;br /&gt;
Previously it was possible to install a program which required the DBus API of libsecret (e.g. Fractal), but not install a secrets provider (e.g. gnome-keyring), so logins wouldn&#039;t be saved. This has been corrected and packages which require this API depend on the provider-package dbus:org.freedesktop:Secret now. It&#039;s provided by gnome-keyring, kwallet and keepassxc (in that order of importance, i.e. if none of these is pulled in gnome-keyring will be chosen by default). Right now we manually declared the provider for dbus:org.freedesktop.Secret, but eventually we should have an automatic detection for the DBus API packages provide to make this easier for other packages.&lt;br /&gt;
&lt;br /&gt;
===== Preferring enchant2 over enchant =====&lt;br /&gt;
&lt;br /&gt;
All packages which support enchant2 have been moved over to it instead of using enchant(1). enchant2 now also supports nuspell, which is a faster drop-in replacement for hunspell, which utilizes hunspell&#039;s dictionaries.&lt;br /&gt;
&lt;br /&gt;
===== Firefox is now in community =====&lt;br /&gt;
&lt;br /&gt;
Firefox finally left testing and will be in community, supported for 6 months.&lt;br /&gt;
&lt;br /&gt;
===== moonjit is now luajit =====&lt;br /&gt;
&lt;br /&gt;
Our luajit package switched to the alive moonjit fork which has, among other things, s390x support and actual development.&lt;br /&gt;
&lt;br /&gt;
This [https://git.alpinelinux.org/aports/commit/?id=af7f776d08cf7c12c3dd62347829fe33e66dceaa commit] switched luajit over to moonjit, the following [https://git.alpinelinux.org/aports/commit/?id=a7d057d98859940cc3347dba011957f99291b1fa commit] removes our **HUGE** 46k s390x support patch which is now handled by upstream.&lt;br /&gt;
&lt;br /&gt;
===== Support for YubiKeys =====&lt;br /&gt;
&lt;br /&gt;
yubikey-manager and yubikey-manager-qt have been added to the community repos for using and managing your yubikeys. Installing yubikey-manager and enabling the pcscd service should make yubikeys functional.&lt;br /&gt;
&lt;br /&gt;
== abuild ==&lt;br /&gt;
&lt;br /&gt;
===== Add default functions for subpackages that hold Bash, Zsh and Fish completion =====&lt;br /&gt;
&lt;br /&gt;
abuild now provides default functions for $pkgname-bash-completion, $pkgname-zsh-completion and $pkgname-fish-completion subpackages.&lt;br /&gt;
&lt;br /&gt;
Expected location of the completion files per shell:&lt;br /&gt;
&lt;br /&gt;
* Bash -&amp;gt; &amp;lt;code&amp;gt;/usr/share/bash-completion/completions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Zsh -&amp;gt; &amp;lt;code&amp;gt;/usr/share/zsh/site-functions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Fish -&amp;gt; &amp;lt;code&amp;gt;/usr/share/fish/completions&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Files must be installed in the expected location in relation to &#039;&#039;&#039;$pkgdir&#039;&#039;&#039; in &#039;&#039;&#039;pacakge()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/d5826968b713123a4f51d3dec1adb1225d0e194f d5826968b713123a4f51d3dec1adb1225d0e194f].&lt;br /&gt;
&lt;br /&gt;
===== newapkbuild when called with CMake (-C) does out-of-source builds by default =====&lt;br /&gt;
&lt;br /&gt;
When packaging with newapkbuild and using the -C switch to pre-fill the apkbuild with skeleton functions for CMake now:&lt;br /&gt;
&lt;br /&gt;
* Adds &amp;lt;code&amp;gt;-B build&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;cmake&amp;lt;/code&amp;gt; call in &#039;&#039;&#039;build()&#039;&#039;&#039;.&lt;br /&gt;
* Adds &amp;lt;code&amp;gt;-C build&amp;lt;/code&amp;gt; the &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; calls.&lt;br /&gt;
&lt;br /&gt;
Doing out-of-source builds are recommended upstream to the point where warnings are printed when calling CMake on a project.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/e125a764896d884c69cc409e614b65cb336c15e8 e125a764896d884c69cc409e614b65cb336c15e8].&lt;br /&gt;
&lt;br /&gt;
===== set CARGO_HOME to cache dependencies of rust packages =====&lt;br /&gt;
&lt;br /&gt;
CARGO_HOME is now set to &#039;&#039;&#039;$SRCDEST/cargo&#039;&#039;&#039; and will cache all dependencies downloaded.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/af0c88e6abbb1e49224759f5c51b3068e6eab28b af0c88e6abbb1e49224759f5c51b3068e6eab28b].&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.12.0&amp;diff=16969</id>
		<title>Release Notes for Alpine 3.12.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.12.0&amp;diff=16969"/>
		<updated>2020-03-01T22:18:34Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Mention initial support for the D language.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== aports ==&lt;br /&gt;
&lt;br /&gt;
==== Initial support for DLang ====&lt;br /&gt;
&lt;br /&gt;
We&#039;ve added initial support for the D language with this release. We now have GDC, the D compiler frontend using GCC, available on all arches but ppc64le and LDC, a D compiler using the LLVM backend, on x86_64. Most things are built against ldc and as such only available on x86_64 right now due to GDC shipping a rather outdated version of the Phobos, the D standard library.&lt;br /&gt;
&lt;br /&gt;
===== py3-setuptools now uses system python3 modules instead of vendored dependencies =====&lt;br /&gt;
&lt;br /&gt;
py3-setuptools now installs py3-packaging, py3-parsing, py3-appdirs, py3-six and py3-ordered-set from the system.&lt;br /&gt;
&lt;br /&gt;
The following commits are the ones responsible for this change:&lt;br /&gt;
&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=efca8852f37cb4028f234f92e2d035617f524820 py3-six] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=55e3496387ad3f2df387b2cf6bc84e85ef729833 py3-ordered-set] (new aport)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=cc1636b08fba58b629501d525d658aed4bcbeab2 py3-ordered-set] (move from testing to main)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=da743693eda54b9faf5086746b91506495fc689f py3-appdirs] (move from community to main)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=60efe787954008af546a5bde839db09f11682102 py3-appdirs] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=a50097b40bcf80a9aec201fef73a722206f43a0d py3-packaging] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=52ee5092c510657e9b1e8b4ae0104d405c9eac99 py3-parsing] (install manually)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=33ea734e2d28d88a3d545500c96b4c72b3e78432 py3-setuptools] (use system component)&lt;br /&gt;
&lt;br /&gt;
===== ncurses fixes =====&lt;br /&gt;
&lt;br /&gt;
A few fixes trickled in relating exclusively to Alpine Linux that affect ncurses:&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=762b9fd601983d8a6e6a60692158f3f22b1b60fe commit] the ncurses-lib package no longer depends on the ncurses-terminfo, which was too big at 7.5 MB, instead ncurses-lib now depends solely on the ncurses-terminfo-base package which weights at around 120 kB.&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=56aa7795fecc48561deb095995abd335e16ba515 commit] the ncurses-terminfo-base now includes the most common terminfo databases like tmux, screen, xterm-256color and also databases for packaged terminals like gnome-terminal, vte, konsole, alacritty, kitty, putty. All other terminfo databases are now in ncurses-terminfo.&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=1470a6c8e76491a8d059ebd4b7521c4bf20b837c commit] all terminals that have their terminfo databases provided by the ncurses-terminfo-base now depend on it.&lt;br /&gt;
&lt;br /&gt;
===== python3 no longer provides pip3, use py3-pip from community =====&lt;br /&gt;
&lt;br /&gt;
Python3 is now built with --without-ensurepip which removes pip3 and its libraries from it. Instead use the py3-pip pacakge which uses system components.&lt;br /&gt;
&lt;br /&gt;
===== BPF JIT support =====&lt;br /&gt;
&lt;br /&gt;
&amp;gt; TODO: Small preamble about BPF&lt;br /&gt;
&lt;br /&gt;
So it (BPF JIT) has been enabled by default in [https://git.alpinelinux.org/aports/commit/?id=3bf2313adc57fe6b36bf459ddca6d65a392609db 3bf2313adc57fe6b36bf459ddca6d65a392609db], and unprivileged BPF JIT has been disabled in [https://git.alpinelinux.org/aports/commit/?id=4e286992d5ed751f6ca60eb18d77313bb0868513 4e286992d5ed751f6ca60eb18d77313bb0868513].&lt;br /&gt;
&lt;br /&gt;
===== OpenRC now has a sane ordering of directories when configuring kernel parameters =====&lt;br /&gt;
&lt;br /&gt;
Configuring kernel parameters is done by having configuration files in specific locations like &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; and files ending with &amp;lt;code&amp;gt;.conf&amp;lt;/code&amp;gt; in certain directories like &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt;. Before 3.12.0 the ordering had no logical explanation and&lt;br /&gt;
surprised users that expected a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Starting with 3.12.0 the ordering is as follows:&lt;br /&gt;
&lt;br /&gt;
# /lib/sysctl.d/*.conf&lt;br /&gt;
# /usr/lib/sysctl.d/*.conf&lt;br /&gt;
# /run/sysctl.d/*.conf&lt;br /&gt;
# /etc/sysctl.conf&lt;br /&gt;
# /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/lib/sysctl.d&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/lib/sysctl.d&amp;lt;/code&amp;gt; are to be used by the distribution and packages. Alpine Linux installs its default configuration file in &amp;lt;code&amp;gt;/lib/sysctl.d/00-alpine.conf&amp;lt;/code&amp;gt;. Software installed via our package manager will install to either of those places.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/run/sysctl.d&amp;lt;/code&amp;gt; holds configuration that is created at run-time by daemons/services or at very early-boot. Neither the distribution nor the packaged software will install configuration to it, primarily because /run is in temporary memory. Configuration in this location that matches names the locations used by the distribution and packages will cause the latter not to be read and applied by the &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; holds configuration that is created and maintained by the local administrator, neither Alpine nor its packaged software will touch it, and configuration in that has the same name as in the location reserved for the distribution and packages, or the location for run-time configuration from daemons/services, will cause the latter to not be read and applied by the &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; is a historical location for this kind of configuration and is kept for the same reasons.&lt;br /&gt;
&lt;br /&gt;
===== OpenRC now has a sane ordering of directories when loading kernel modules =====&lt;br /&gt;
&lt;br /&gt;
Loading kernel modules during boot is done with the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; OpenRC service, which reads configuration files in certain locations and loads kernel modules with the modprobe utility from either busybox or util-linux.&lt;br /&gt;
&lt;br /&gt;
Starting with 3.12.0 a more logical ordering is adopted for which configuration files to read and ignore:&lt;br /&gt;
&lt;br /&gt;
# /lib/modules-load.d/*.conf&lt;br /&gt;
# /usr/lib/modules-load.d/*.conf&lt;br /&gt;
# /run/modules-load.d/*.conf&lt;br /&gt;
# /etc/modules&lt;br /&gt;
# /etc/modules-load.d/*.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/lib/modules-load.d&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/lib/modules-load.d&amp;lt;/code&amp;gt; are to be used by the distribution and packages. Software installed via our package manager will install to either of those places.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/run/modules-load.d&amp;lt;/code&amp;gt; holds configuration that is created at run-time by daemons/services or at very early-boot. Neither the distribution nor the packaged software will install configuration to it, primarily because /run is in temporary memory. Configuration in this location that matches names in the locations used by the distribution and packages will cause the latter not to be read and applied by the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/modules-load.d&amp;lt;/code&amp;gt; holds configuration that is created and maintained by the local administrator, neither Alpine nor its packaged software will touch it, and configuration in that has the same name as in the location reserved for the distribution and packages, or locations reserved for the run-time configuration of daemons/services, will cause the latter to not be read and applied by the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/modules&amp;lt;/code&amp;gt; is a historical location for this kind of configuration and is kept for the same reasons.&lt;br /&gt;
&lt;br /&gt;
===== Telegram Desktop is now available in the community repo =====&lt;br /&gt;
&lt;br /&gt;
See [https://git.alpinelinux.org/aports/commit/?id=184355fdc44bc2e12976d65518fe029d8a6e459d commit] that moved the package to the community repo for explanation.&lt;br /&gt;
&lt;br /&gt;
===== efitools and sbsigntool are now in main/ =====&lt;br /&gt;
&lt;br /&gt;
Those packages have lived in testing/ for a long time and have been successfully used by one of our developers to implement secure-boot in his system. They have been moved to main/ and will be available for others.&lt;br /&gt;
&lt;br /&gt;
==== Packages which need libsecret&#039;s DBus API now depend a provider of its API via dbus:org.freedesktop.Secret ====&lt;br /&gt;
&lt;br /&gt;
Previously it was possible to install a program which required the DBus API of libsecret (e.g. Fractal), but not install a secrets provider (e.g. gnome-keyring), so logins wouldn&#039;t be saved. This has been corrected and packages which require this API depend on the provider-package dbus:org.freedesktop:Secret now. It&#039;s provided by gnome-keyring, kwallet and keepassxc (in that order of importance, i.e. if none of these is pulled in gnome-keyring will be chosen by default). Right now we manually declared the provider for dbus:org.freedesktop.Secret, but eventually we should have an automatic detection for the DBus API packages provide to make this easier for other packages.&lt;br /&gt;
&lt;br /&gt;
==== Preferring enchant2 over enchant ====&lt;br /&gt;
&lt;br /&gt;
All packages which support enchant2 have been moved over to it instead of using enchant(1). enchant2 now also supports nuspell, which is a faster drop-in replacement for hunspell, which utilizes hunspell&#039;s dictionaries.&lt;br /&gt;
&lt;br /&gt;
== abuild ==&lt;br /&gt;
&lt;br /&gt;
===== Add default functions for subpackages that hold Bash, Zsh and Fish completion =====&lt;br /&gt;
&lt;br /&gt;
abuild now provides default functions for $pkgname-bash-completion, $pkgname-zsh-completion and $pkgname-fish-completion subpackages.&lt;br /&gt;
&lt;br /&gt;
Expected location of the completion files per shell:&lt;br /&gt;
&lt;br /&gt;
* Bash -&amp;gt; &amp;lt;code&amp;gt;/usr/share/bash-completion/completions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Zsh -&amp;gt; &amp;lt;code&amp;gt;/usr/share/zsh/site-functions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Fish -&amp;gt; &amp;lt;code&amp;gt;/usr/share/fish/completions&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Files must be installed in the expected location in relation to &#039;&#039;&#039;$pkgdir&#039;&#039;&#039; in &#039;&#039;&#039;pacakge()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/d5826968b713123a4f51d3dec1adb1225d0e194f d5826968b713123a4f51d3dec1adb1225d0e194f].&lt;br /&gt;
&lt;br /&gt;
===== newapkbuild when called with CMake (-C) does out-of-source builds by default =====&lt;br /&gt;
&lt;br /&gt;
When packaging with newapkbuild and using the -C switch to pre-fill the apkbuild with skeleton functions for CMake now:&lt;br /&gt;
&lt;br /&gt;
* Adds &amp;lt;code&amp;gt;-B build&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;cmake&amp;lt;/code&amp;gt; call in &#039;&#039;&#039;build()&#039;&#039;&#039;.&lt;br /&gt;
* Adds &amp;lt;code&amp;gt;-C build&amp;lt;/code&amp;gt; the &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; calls.&lt;br /&gt;
&lt;br /&gt;
Doing out-of-source builds are recommended upstream to the point where warnings are printed when calling CMake on a project.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/e125a764896d884c69cc409e614b65cb336c15e8 e125a764896d884c69cc409e614b65cb336c15e8].&lt;br /&gt;
&lt;br /&gt;
===== set CARGO_HOME to cache dependencies of rust packages =====&lt;br /&gt;
&lt;br /&gt;
CARGO_HOME is now set to &#039;&#039;&#039;$SRCDEST/cargo&#039;&#039;&#039; and will cache all dependencies downloaded.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/af0c88e6abbb1e49224759f5c51b3068e6eab28b af0c88e6abbb1e49224759f5c51b3068e6eab28b].&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.12.0&amp;diff=16968</id>
		<title>Release Notes for Alpine 3.12.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.12.0&amp;diff=16968"/>
		<updated>2020-03-01T22:13:16Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Add note about enchant2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== aports ==&lt;br /&gt;
&lt;br /&gt;
===== py3-setuptools now uses system python3 modules instead of vendored dependencies =====&lt;br /&gt;
&lt;br /&gt;
py3-setuptools now installs py3-packaging, py3-parsing, py3-appdirs, py3-six and py3-ordered-set from the system.&lt;br /&gt;
&lt;br /&gt;
The following commits are the ones responsible for this change:&lt;br /&gt;
&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=efca8852f37cb4028f234f92e2d035617f524820 py3-six] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=55e3496387ad3f2df387b2cf6bc84e85ef729833 py3-ordered-set] (new aport)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=cc1636b08fba58b629501d525d658aed4bcbeab2 py3-ordered-set] (move from testing to main)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=da743693eda54b9faf5086746b91506495fc689f py3-appdirs] (move from community to main)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=60efe787954008af546a5bde839db09f11682102 py3-appdirs] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=a50097b40bcf80a9aec201fef73a722206f43a0d py3-packaging] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=52ee5092c510657e9b1e8b4ae0104d405c9eac99 py3-parsing] (install manually)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=33ea734e2d28d88a3d545500c96b4c72b3e78432 py3-setuptools] (use system component)&lt;br /&gt;
&lt;br /&gt;
===== ncurses fixes =====&lt;br /&gt;
&lt;br /&gt;
A few fixes trickled in relating exclusively to Alpine Linux that affect ncurses:&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=762b9fd601983d8a6e6a60692158f3f22b1b60fe commit] the ncurses-lib package no longer depends on the ncurses-terminfo, which was too big at 7.5 MB, instead ncurses-lib now depends solely on the ncurses-terminfo-base package which weights at around 120 kB.&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=56aa7795fecc48561deb095995abd335e16ba515 commit] the ncurses-terminfo-base now includes the most common terminfo databases like tmux, screen, xterm-256color and also databases for packaged terminals like gnome-terminal, vte, konsole, alacritty, kitty, putty. All other terminfo databases are now in ncurses-terminfo.&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=1470a6c8e76491a8d059ebd4b7521c4bf20b837c commit] all terminals that have their terminfo databases provided by the ncurses-terminfo-base now depend on it.&lt;br /&gt;
&lt;br /&gt;
===== python3 no longer provides pip3, use py3-pip from community =====&lt;br /&gt;
&lt;br /&gt;
Python3 is now built with --without-ensurepip which removes pip3 and its libraries from it. Instead use the py3-pip pacakge which uses system components.&lt;br /&gt;
&lt;br /&gt;
===== BPF JIT support =====&lt;br /&gt;
&lt;br /&gt;
&amp;gt; TODO: Small preamble about BPF&lt;br /&gt;
&lt;br /&gt;
So it (BPF JIT) has been enabled by default in [https://git.alpinelinux.org/aports/commit/?id=3bf2313adc57fe6b36bf459ddca6d65a392609db 3bf2313adc57fe6b36bf459ddca6d65a392609db], and unprivileged BPF JIT has been disabled in [https://git.alpinelinux.org/aports/commit/?id=4e286992d5ed751f6ca60eb18d77313bb0868513 4e286992d5ed751f6ca60eb18d77313bb0868513].&lt;br /&gt;
&lt;br /&gt;
===== OpenRC now has a sane ordering of directories when configuring kernel parameters =====&lt;br /&gt;
&lt;br /&gt;
Configuring kernel parameters is done by having configuration files in specific locations like &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; and files ending with &amp;lt;code&amp;gt;.conf&amp;lt;/code&amp;gt; in certain directories like &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt;. Before 3.12.0 the ordering had no logical explanation and&lt;br /&gt;
surprised users that expected a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Starting with 3.12.0 the ordering is as follows:&lt;br /&gt;
&lt;br /&gt;
# /lib/sysctl.d/*.conf&lt;br /&gt;
# /usr/lib/sysctl.d/*.conf&lt;br /&gt;
# /run/sysctl.d/*.conf&lt;br /&gt;
# /etc/sysctl.conf&lt;br /&gt;
# /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/lib/sysctl.d&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/lib/sysctl.d&amp;lt;/code&amp;gt; are to be used by the distribution and packages. Alpine Linux installs its default configuration file in &amp;lt;code&amp;gt;/lib/sysctl.d/00-alpine.conf&amp;lt;/code&amp;gt;. Software installed via our package manager will install to either of those places.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/run/sysctl.d&amp;lt;/code&amp;gt; holds configuration that is created at run-time by daemons/services or at very early-boot. Neither the distribution nor the packaged software will install configuration to it, primarily because /run is in temporary memory. Configuration in this location that matches names the locations used by the distribution and packages will cause the latter not to be read and applied by the &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; holds configuration that is created and maintained by the local administrator, neither Alpine nor its packaged software will touch it, and configuration in that has the same name as in the location reserved for the distribution and packages, or the location for run-time configuration from daemons/services, will cause the latter to not be read and applied by the &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; is a historical location for this kind of configuration and is kept for the same reasons.&lt;br /&gt;
&lt;br /&gt;
===== OpenRC now has a sane ordering of directories when loading kernel modules =====&lt;br /&gt;
&lt;br /&gt;
Loading kernel modules during boot is done with the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; OpenRC service, which reads configuration files in certain locations and loads kernel modules with the modprobe utility from either busybox or util-linux.&lt;br /&gt;
&lt;br /&gt;
Starting with 3.12.0 a more logical ordering is adopted for which configuration files to read and ignore:&lt;br /&gt;
&lt;br /&gt;
# /lib/modules-load.d/*.conf&lt;br /&gt;
# /usr/lib/modules-load.d/*.conf&lt;br /&gt;
# /run/modules-load.d/*.conf&lt;br /&gt;
# /etc/modules&lt;br /&gt;
# /etc/modules-load.d/*.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/lib/modules-load.d&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/lib/modules-load.d&amp;lt;/code&amp;gt; are to be used by the distribution and packages. Software installed via our package manager will install to either of those places.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/run/modules-load.d&amp;lt;/code&amp;gt; holds configuration that is created at run-time by daemons/services or at very early-boot. Neither the distribution nor the packaged software will install configuration to it, primarily because /run is in temporary memory. Configuration in this location that matches names in the locations used by the distribution and packages will cause the latter not to be read and applied by the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/modules-load.d&amp;lt;/code&amp;gt; holds configuration that is created and maintained by the local administrator, neither Alpine nor its packaged software will touch it, and configuration in that has the same name as in the location reserved for the distribution and packages, or locations reserved for the run-time configuration of daemons/services, will cause the latter to not be read and applied by the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/modules&amp;lt;/code&amp;gt; is a historical location for this kind of configuration and is kept for the same reasons.&lt;br /&gt;
&lt;br /&gt;
===== Telegram Desktop is now available in the community repo =====&lt;br /&gt;
&lt;br /&gt;
See [https://git.alpinelinux.org/aports/commit/?id=184355fdc44bc2e12976d65518fe029d8a6e459d commit] that moved the package to the community repo for explanation.&lt;br /&gt;
&lt;br /&gt;
===== efitools and sbsigntool are now in main/ =====&lt;br /&gt;
&lt;br /&gt;
Those packages have lived in testing/ for a long time and have been successfully used by one of our developers to implement secure-boot in his system. They have been moved to main/ and will be available for others.&lt;br /&gt;
&lt;br /&gt;
==== Packages which need libsecret&#039;s DBus API now depend a provider of its API via dbus:org.freedesktop.Secret ====&lt;br /&gt;
&lt;br /&gt;
Previously it was possible to install a program which required the DBus API of libsecret (e.g. Fractal), but not install a secrets provider (e.g. gnome-keyring), so logins wouldn&#039;t be saved. This has been corrected and packages which require this API depend on the provider-package dbus:org.freedesktop:Secret now. It&#039;s provided by gnome-keyring, kwallet and keepassxc (in that order of importance, i.e. if none of these is pulled in gnome-keyring will be chosen by default). Right now we manually declared the provider for dbus:org.freedesktop.Secret, but eventually we should have an automatic detection for the DBus API packages provide to make this easier for other packages.&lt;br /&gt;
&lt;br /&gt;
==== Preferring enchant2 over enchant ====&lt;br /&gt;
&lt;br /&gt;
All packages which support enchant2 have been moved over to it instead of using enchant(1). enchant2 now also supports nuspell, which is a faster drop-in replacement for hunspell, which utilizes hunspell&#039;s dictionaries.&lt;br /&gt;
&lt;br /&gt;
== abuild ==&lt;br /&gt;
&lt;br /&gt;
===== Add default functions for subpackages that hold Bash, Zsh and Fish completion =====&lt;br /&gt;
&lt;br /&gt;
abuild now provides default functions for $pkgname-bash-completion, $pkgname-zsh-completion and $pkgname-fish-completion subpackages.&lt;br /&gt;
&lt;br /&gt;
Expected location of the completion files per shell:&lt;br /&gt;
&lt;br /&gt;
* Bash -&amp;gt; &amp;lt;code&amp;gt;/usr/share/bash-completion/completions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Zsh -&amp;gt; &amp;lt;code&amp;gt;/usr/share/zsh/site-functions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Fish -&amp;gt; &amp;lt;code&amp;gt;/usr/share/fish/completions&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Files must be installed in the expected location in relation to &#039;&#039;&#039;$pkgdir&#039;&#039;&#039; in &#039;&#039;&#039;pacakge()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/d5826968b713123a4f51d3dec1adb1225d0e194f d5826968b713123a4f51d3dec1adb1225d0e194f].&lt;br /&gt;
&lt;br /&gt;
===== newapkbuild when called with CMake (-C) does out-of-source builds by default =====&lt;br /&gt;
&lt;br /&gt;
When packaging with newapkbuild and using the -C switch to pre-fill the apkbuild with skeleton functions for CMake now:&lt;br /&gt;
&lt;br /&gt;
* Adds &amp;lt;code&amp;gt;-B build&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;cmake&amp;lt;/code&amp;gt; call in &#039;&#039;&#039;build()&#039;&#039;&#039;.&lt;br /&gt;
* Adds &amp;lt;code&amp;gt;-C build&amp;lt;/code&amp;gt; the &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; calls.&lt;br /&gt;
&lt;br /&gt;
Doing out-of-source builds are recommended upstream to the point where warnings are printed when calling CMake on a project.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/e125a764896d884c69cc409e614b65cb336c15e8 e125a764896d884c69cc409e614b65cb336c15e8].&lt;br /&gt;
&lt;br /&gt;
===== set CARGO_HOME to cache dependencies of rust packages =====&lt;br /&gt;
&lt;br /&gt;
CARGO_HOME is now set to &#039;&#039;&#039;$SRCDEST/cargo&#039;&#039;&#039; and will cache all dependencies downloaded.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/af0c88e6abbb1e49224759f5c51b3068e6eab28b af0c88e6abbb1e49224759f5c51b3068e6eab28b].&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.12.0&amp;diff=16967</id>
		<title>Release Notes for Alpine 3.12.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.12.0&amp;diff=16967"/>
		<updated>2020-03-01T22:11:55Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Add note about the dbus:org.freedesktop.Secret&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== aports ==&lt;br /&gt;
&lt;br /&gt;
===== py3-setuptools now uses system python3 modules instead of vendored dependencies =====&lt;br /&gt;
&lt;br /&gt;
py3-setuptools now installs py3-packaging, py3-parsing, py3-appdirs, py3-six and py3-ordered-set from the system.&lt;br /&gt;
&lt;br /&gt;
The following commits are the ones responsible for this change:&lt;br /&gt;
&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=efca8852f37cb4028f234f92e2d035617f524820 py3-six] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=55e3496387ad3f2df387b2cf6bc84e85ef729833 py3-ordered-set] (new aport)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=cc1636b08fba58b629501d525d658aed4bcbeab2 py3-ordered-set] (move from testing to main)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=da743693eda54b9faf5086746b91506495fc689f py3-appdirs] (move from community to main)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=60efe787954008af546a5bde839db09f11682102 py3-appdirs] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=a50097b40bcf80a9aec201fef73a722206f43a0d py3-packaging] (use distutils)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=52ee5092c510657e9b1e8b4ae0104d405c9eac99 py3-parsing] (install manually)&lt;br /&gt;
* [https://git.alpinelinux.org/aports/commit/?id=33ea734e2d28d88a3d545500c96b4c72b3e78432 py3-setuptools] (use system component)&lt;br /&gt;
&lt;br /&gt;
===== ncurses fixes =====&lt;br /&gt;
&lt;br /&gt;
A few fixes trickled in relating exclusively to Alpine Linux that affect ncurses:&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=762b9fd601983d8a6e6a60692158f3f22b1b60fe commit] the ncurses-lib package no longer depends on the ncurses-terminfo, which was too big at 7.5 MB, instead ncurses-lib now depends solely on the ncurses-terminfo-base package which weights at around 120 kB.&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=56aa7795fecc48561deb095995abd335e16ba515 commit] the ncurses-terminfo-base now includes the most common terminfo databases like tmux, screen, xterm-256color and also databases for packaged terminals like gnome-terminal, vte, konsole, alacritty, kitty, putty. All other terminfo databases are now in ncurses-terminfo.&lt;br /&gt;
&lt;br /&gt;
With this [https://git.alpinelinux.org/aports/commit/?id=1470a6c8e76491a8d059ebd4b7521c4bf20b837c commit] all terminals that have their terminfo databases provided by the ncurses-terminfo-base now depend on it.&lt;br /&gt;
&lt;br /&gt;
===== python3 no longer provides pip3, use py3-pip from community =====&lt;br /&gt;
&lt;br /&gt;
Python3 is now built with --without-ensurepip which removes pip3 and its libraries from it. Instead use the py3-pip pacakge which uses system components.&lt;br /&gt;
&lt;br /&gt;
===== BPF JIT support =====&lt;br /&gt;
&lt;br /&gt;
&amp;gt; TODO: Small preamble about BPF&lt;br /&gt;
&lt;br /&gt;
So it (BPF JIT) has been enabled by default in [https://git.alpinelinux.org/aports/commit/?id=3bf2313adc57fe6b36bf459ddca6d65a392609db 3bf2313adc57fe6b36bf459ddca6d65a392609db], and unprivileged BPF JIT has been disabled in [https://git.alpinelinux.org/aports/commit/?id=4e286992d5ed751f6ca60eb18d77313bb0868513 4e286992d5ed751f6ca60eb18d77313bb0868513].&lt;br /&gt;
&lt;br /&gt;
===== OpenRC now has a sane ordering of directories when configuring kernel parameters =====&lt;br /&gt;
&lt;br /&gt;
Configuring kernel parameters is done by having configuration files in specific locations like &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; and files ending with &amp;lt;code&amp;gt;.conf&amp;lt;/code&amp;gt; in certain directories like &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt;. Before 3.12.0 the ordering had no logical explanation and&lt;br /&gt;
surprised users that expected a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Starting with 3.12.0 the ordering is as follows:&lt;br /&gt;
&lt;br /&gt;
# /lib/sysctl.d/*.conf&lt;br /&gt;
# /usr/lib/sysctl.d/*.conf&lt;br /&gt;
# /run/sysctl.d/*.conf&lt;br /&gt;
# /etc/sysctl.conf&lt;br /&gt;
# /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/lib/sysctl.d&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/lib/sysctl.d&amp;lt;/code&amp;gt; are to be used by the distribution and packages. Alpine Linux installs its default configuration file in &amp;lt;code&amp;gt;/lib/sysctl.d/00-alpine.conf&amp;lt;/code&amp;gt;. Software installed via our package manager will install to either of those places.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/run/sysctl.d&amp;lt;/code&amp;gt; holds configuration that is created at run-time by daemons/services or at very early-boot. Neither the distribution nor the packaged software will install configuration to it, primarily because /run is in temporary memory. Configuration in this location that matches names the locations used by the distribution and packages will cause the latter not to be read and applied by the &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; holds configuration that is created and maintained by the local administrator, neither Alpine nor its packaged software will touch it, and configuration in that has the same name as in the location reserved for the distribution and packages, or the location for run-time configuration from daemons/services, will cause the latter to not be read and applied by the &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; is a historical location for this kind of configuration and is kept for the same reasons.&lt;br /&gt;
&lt;br /&gt;
===== OpenRC now has a sane ordering of directories when loading kernel modules =====&lt;br /&gt;
&lt;br /&gt;
Loading kernel modules during boot is done with the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; OpenRC service, which reads configuration files in certain locations and loads kernel modules with the modprobe utility from either busybox or util-linux.&lt;br /&gt;
&lt;br /&gt;
Starting with 3.12.0 a more logical ordering is adopted for which configuration files to read and ignore:&lt;br /&gt;
&lt;br /&gt;
# /lib/modules-load.d/*.conf&lt;br /&gt;
# /usr/lib/modules-load.d/*.conf&lt;br /&gt;
# /run/modules-load.d/*.conf&lt;br /&gt;
# /etc/modules&lt;br /&gt;
# /etc/modules-load.d/*.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/lib/modules-load.d&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/lib/modules-load.d&amp;lt;/code&amp;gt; are to be used by the distribution and packages. Software installed via our package manager will install to either of those places.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/run/modules-load.d&amp;lt;/code&amp;gt; holds configuration that is created at run-time by daemons/services or at very early-boot. Neither the distribution nor the packaged software will install configuration to it, primarily because /run is in temporary memory. Configuration in this location that matches names in the locations used by the distribution and packages will cause the latter not to be read and applied by the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/modules-load.d&amp;lt;/code&amp;gt; holds configuration that is created and maintained by the local administrator, neither Alpine nor its packaged software will touch it, and configuration in that has the same name as in the location reserved for the distribution and packages, or locations reserved for the run-time configuration of daemons/services, will cause the latter to not be read and applied by the &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/modules&amp;lt;/code&amp;gt; is a historical location for this kind of configuration and is kept for the same reasons.&lt;br /&gt;
&lt;br /&gt;
===== Telegram Desktop is now available in the community repo =====&lt;br /&gt;
&lt;br /&gt;
See [https://git.alpinelinux.org/aports/commit/?id=184355fdc44bc2e12976d65518fe029d8a6e459d commit] that moved the package to the community repo for explanation.&lt;br /&gt;
&lt;br /&gt;
===== efitools and sbsigntool are now in main/ =====&lt;br /&gt;
&lt;br /&gt;
Those packages have lived in testing/ for a long time and have been successfully used by one of our developers to implement secure-boot in his system. They have been moved to main/ and will be available for others.&lt;br /&gt;
&lt;br /&gt;
==== Packages which need libsecret&#039;s DBus API now depend a provider of its API via dbus:org.freedesktop.Secret ====&lt;br /&gt;
&lt;br /&gt;
Previously it was possible to install a program which required the DBus API of libsecret (e.g. Fractal), but not install a secrets provider (e.g. gnome-keyring), so logins wouldn&#039;t be saved. This has been corrected and packages which require this API depend on the provider-package dbus:org.freedesktop:Secret now. It&#039;s provided by gnome-keyring, kwallet and keepassxc (in that order of importance, i.e. if none of these is pulled in gnome-keyring will be chosen by default). Right now we manually declared the provider for dbus:org.freedesktop.Secret, but eventually we should have an automatic detection for the DBus API packages provide to make this easier for other packages.&lt;br /&gt;
&lt;br /&gt;
== abuild ==&lt;br /&gt;
&lt;br /&gt;
===== Add default functions for subpackages that hold Bash, Zsh and Fish completion =====&lt;br /&gt;
&lt;br /&gt;
abuild now provides default functions for $pkgname-bash-completion, $pkgname-zsh-completion and $pkgname-fish-completion subpackages.&lt;br /&gt;
&lt;br /&gt;
Expected location of the completion files per shell:&lt;br /&gt;
&lt;br /&gt;
* Bash -&amp;gt; &amp;lt;code&amp;gt;/usr/share/bash-completion/completions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Zsh -&amp;gt; &amp;lt;code&amp;gt;/usr/share/zsh/site-functions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Fish -&amp;gt; &amp;lt;code&amp;gt;/usr/share/fish/completions&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Files must be installed in the expected location in relation to &#039;&#039;&#039;$pkgdir&#039;&#039;&#039; in &#039;&#039;&#039;pacakge()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/d5826968b713123a4f51d3dec1adb1225d0e194f d5826968b713123a4f51d3dec1adb1225d0e194f].&lt;br /&gt;
&lt;br /&gt;
===== newapkbuild when called with CMake (-C) does out-of-source builds by default =====&lt;br /&gt;
&lt;br /&gt;
When packaging with newapkbuild and using the -C switch to pre-fill the apkbuild with skeleton functions for CMake now:&lt;br /&gt;
&lt;br /&gt;
* Adds &amp;lt;code&amp;gt;-B build&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;cmake&amp;lt;/code&amp;gt; call in &#039;&#039;&#039;build()&#039;&#039;&#039;.&lt;br /&gt;
* Adds &amp;lt;code&amp;gt;-C build&amp;lt;/code&amp;gt; the &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; calls.&lt;br /&gt;
&lt;br /&gt;
Doing out-of-source builds are recommended upstream to the point where warnings are printed when calling CMake on a project.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/e125a764896d884c69cc409e614b65cb336c15e8 e125a764896d884c69cc409e614b65cb336c15e8].&lt;br /&gt;
&lt;br /&gt;
===== set CARGO_HOME to cache dependencies of rust packages =====&lt;br /&gt;
&lt;br /&gt;
CARGO_HOME is now set to &#039;&#039;&#039;$SRCDEST/cargo&#039;&#039;&#039; and will cache all dependencies downloaded.&lt;br /&gt;
&lt;br /&gt;
Introduced in [https://gitlab.alpinelinux.org/alpine/abuild/commit/af0c88e6abbb1e49224759f5c51b3068e6eab28b af0c88e6abbb1e49224759f5c51b3068e6eab28b].&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Root_on_ZFS_with_native_encryption&amp;diff=16772</id>
		<title>Root on ZFS with native encryption</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Root_on_ZFS_with_native_encryption&amp;diff=16772"/>
		<updated>2020-01-10T16:10:33Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Delete Debian installation medium specific setup now that we recommend Ubuntu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
This documentation describes how to set up Alpine Linux using ZFS with a pool that uses ZFS&#039; native encryption capabilities, which have been recently introduced in ZFS on Linux (ZoL) 0.8.0.&lt;br /&gt;
&lt;br /&gt;
Note that you must install the &amp;lt;code&amp;gt;/boot/&amp;lt;/code&amp;gt; directory on an unencrypted partition (either an unencrypted ZFS pool or any other FS of your choosing, if it&#039;s compatible with your bootloader) to boot correctly.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need a medium to put a live image on. You can use any live medium that supports ZoL &amp;gt;=0.8.x, but as of writing this it&#039;s easiest to use [https://ubuntu.com/download/desktop Ubuntu 19.10], which comes with ZFS pre-installed.&lt;br /&gt;
&lt;br /&gt;
== Hard Disk Device Name ==&lt;br /&gt;
&lt;br /&gt;
The following documentation uses the &amp;lt;code&amp;gt;/dev/sda&amp;lt;/code&amp;gt; device as installation destination. If your environment uses a different device name for your hard disk, use the corresponding device names in the examples. It also uses &amp;lt;code&amp;gt;rpool&amp;lt;/code&amp;gt; as name of the root pool, you can change this at will, but be sure to change it everywhere it&#039;s mentioned.&lt;br /&gt;
&lt;br /&gt;
= Setting up Alpine Linux Using ZFS with native encryption =&lt;br /&gt;
&lt;br /&gt;
To install Alpine Linux in a ZFS pool with encryption enable, you cannot use the [[Installation|official installation]] procedure, so follow along this guide.&lt;br /&gt;
&lt;br /&gt;
== Creating the Partition Layout ==&lt;br /&gt;
&lt;br /&gt;
Linux requires an unencrypted &amp;lt;code&amp;gt;/boot/&amp;lt;/code&amp;gt; partition to boot. You can assign the remaining space for the encrypted ZFS pool.&lt;br /&gt;
&lt;br /&gt;
* Start the &amp;lt;code&amp;gt;fdisk&amp;lt;/code&amp;gt; utility to set up partitions:&lt;br /&gt;
&lt;br /&gt;
 # fdisk /dev/sda&lt;br /&gt;
&lt;br /&gt;
:* Create the &amp;lt;code&amp;gt;/boot/&amp;lt;/code&amp;gt; partition:&lt;br /&gt;
::* Enter &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;100m&amp;lt;/code&amp;gt; to create a new 100 MB primary partition.&lt;br /&gt;
&lt;br /&gt;
:* Set the &amp;lt;code&amp;gt;/boot/&amp;lt;/code&amp;gt; partition active:&lt;br /&gt;
::* Enter &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:* Create the ZFS partition:&lt;br /&gt;
::* Enter &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; to start creating the next partition. Press &amp;lt;code&amp;gt;Enter&amp;lt;/code&amp;gt; to select the default start cylinder. Enter the size of partition. For example, &amp;lt;code&amp;gt;512m&amp;lt;/code&amp;gt; for 512 MB or &amp;lt;code&amp;gt;5g&amp;lt;/code&amp;gt; for 5 GB. Alternatively press &amp;lt;code&amp;gt;Enter&amp;lt;/code&amp;gt; to set the maximum available size.&lt;br /&gt;
&lt;br /&gt;
:* To verify the settings, press &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;. The output shows, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device     Boot  Start      End  Sectors  Size Id Type&lt;br /&gt;
/dev/sda1  *      2048   206847   204800  100M 83 Linux&lt;br /&gt;
/dev/sda2       206848 41943039 41736192 19.9G 83 Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Press &amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt; to save the changes.&lt;br /&gt;
&lt;br /&gt;
== Setting up the root pool ==&lt;br /&gt;
&lt;br /&gt;
You can create your rootpool with the following command:&lt;br /&gt;
&lt;br /&gt;
 # zpool create -o ashift=12 \&lt;br /&gt;
      -O acltype=posixacl -O canmount=off -O compression=lz4 \&lt;br /&gt;
      -O dnodesize=auto -O normalization=formD -O relatime=on -O xattr=sa \&lt;br /&gt;
      -O encryption=aes-256-gcm -O keylocation=prompt -O keyformat=passphrase \&lt;br /&gt;
      -O mountpoint=/ -R /mnt \&lt;br /&gt;
      rpool /dev/sda2&lt;br /&gt;
&lt;br /&gt;
You will have to enter your passphrase at this point. Choose wisely, as your passphrase is most likely [https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions#5-security-aspects the weakest link in this setup].&lt;br /&gt;
&lt;br /&gt;
A few notes on the options supplied to zpool:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ashift=12&amp;lt;/code&amp;gt; is recommended here because many drives today have 4KiB (or larger) physical sectors, even though they present 512B logical sectors&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;acltype=posixacl&amp;lt;/code&amp;gt; enables POSIX ACLs globally&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;normalization=formD&amp;lt;/code&amp;gt; eliminates some corner cases relating to UTF-8 filename normalization. It also enables &amp;lt;code&amp;gt;utf8only=on&amp;lt;/code&amp;gt;, meaning that only files with valid UTF-8 filenames will be accepted.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;xattr=sa&amp;lt;/code&amp;gt; vastly improves the performance of extended attributes, but is Linux-only. If you care about using this pool on other OpenZFS implementation don&#039;t specify this option.&lt;br /&gt;
&lt;br /&gt;
After completing this, confirm that the pool has been created:&lt;br /&gt;
&lt;br /&gt;
 # zpool status&lt;br /&gt;
&lt;br /&gt;
Should return something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: none requested&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME         STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool       ONLINE       0     0     0&lt;br /&gt;
	  sda2  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating the required datasets ===&lt;br /&gt;
&lt;br /&gt;
 # zfs create -o mountpoint=none -o canmount=off rpool/ROOT&lt;br /&gt;
 # zfs create -o mountpoint=legacy rpool/ROOT/alpine&lt;br /&gt;
 # mount -t zfs rpool/ROOT/alpine /mnt/&lt;br /&gt;
&lt;br /&gt;
=== Creating optional datasets (feel free to add your own) ===&lt;br /&gt;
&lt;br /&gt;
 # zfs create -o mountpoint=/home rpool/HOME&lt;br /&gt;
 # zfs create -o mountpoint=/var/log rpool/LOG&lt;br /&gt;
&lt;br /&gt;
== Creating the &amp;lt;code&amp;gt;/boot&amp;lt;/code&amp;gt; filesystem ==&lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 /dev/sda1&lt;br /&gt;
&lt;br /&gt;
== Mounting the &amp;lt;code&amp;gt;/boot&amp;lt;/code&amp;gt; filesystem ==&lt;br /&gt;
&lt;br /&gt;
* Create the &amp;lt;code&amp;gt;/mnt/boot/&amp;lt;/code&amp;gt; directory and mount the &amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt; partition in this directory:&lt;br /&gt;
&lt;br /&gt;
 # mkdir /mnt/boot/&lt;br /&gt;
 # mount -t ext4 /dev/sda1 /mnt/boot/&lt;br /&gt;
&lt;br /&gt;
== Installing Alpine Linux ==&lt;br /&gt;
&lt;br /&gt;
Please follow [[Installing_Alpine_Linux_in_a_chroot|Installing Alpine Linux in a chroot]] to setup a base install of Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
After you&#039;ve followed that guide, you still have to do some additional setup for ZFS:&lt;br /&gt;
&lt;br /&gt;
* As of the time of writing this ZFS 0.8.x is only available in [[Edge]], so you&#039;ll have to enable it in &amp;lt;code&amp;gt;/etc/apk/repositories&amp;lt;/code&amp;gt;. Check [https://pkgs.alpinelinux.org/packages?name=zfs pkgs.alpinelinux.org] to see the status of this.&lt;br /&gt;
&lt;br /&gt;
* Install the ZoL and linux-vanilla package: &amp;lt;code&amp;gt;apk add linux-vanilla zfs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Enable ZFS&#039; services:&lt;br /&gt;
&lt;br /&gt;
 # rc-update add zfs-import sysinit&lt;br /&gt;
 # rc-update add zfs-mount sysinit&lt;br /&gt;
&lt;br /&gt;
* Edit the &amp;lt;code&amp;gt;/etc/mkinitfs/mkinitfs.conf&amp;lt;/code&amp;gt; file and append &amp;lt;code&amp;gt;zfs&amp;lt;/code&amp;gt; module to the &amp;lt;code&amp;gt;features&amp;lt;/code&amp;gt; parameter:&lt;br /&gt;
&lt;br /&gt;
 features=&amp;quot;ata base ide scsi usb virtio ext4 lvm &amp;lt;u&amp;gt;zfs&amp;lt;/u&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Be mindful to also include other modules which may be required for your setup, such as the &amp;lt;code&amp;gt;nvme&amp;lt;/code&amp;gt; module.&lt;br /&gt;
&lt;br /&gt;
* Rebuild the initial RAM disk:&lt;br /&gt;
&lt;br /&gt;
 # mkinitfs $(ls /lib/modules/)&lt;br /&gt;
&lt;br /&gt;
* Edit the &amp;lt;code&amp;gt;/etc/update-extlinux.conf&amp;lt;/code&amp;gt; file, set the root ZFS dataset and append the following kernel options to the &amp;lt;code&amp;gt;default_kernel_opts&amp;lt;/code&amp;gt; parameter:&lt;br /&gt;
&lt;br /&gt;
 root=rpool/ROOT/alpine&lt;br /&gt;
 default_kernel_opts=&amp;quot;... &amp;lt;u&amp;gt;rootfstype=zfs&amp;lt;/u&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Update extlinux&#039;s config (if you&#039;re not using a different bootloader)&lt;br /&gt;
&lt;br /&gt;
 # update-extlinux&lt;br /&gt;
 # exit&lt;br /&gt;
&lt;br /&gt;
: Ignore the errors the &amp;lt;code&amp;gt;update-extlinux&amp;lt;/code&amp;gt; utility displays.&lt;br /&gt;
&lt;br /&gt;
* Write the MBR to the &amp;lt;code&amp;gt;/dev/sda&amp;lt;/code&amp;gt; device:&lt;br /&gt;
&lt;br /&gt;
 # dd bs=440 count=1 conv=notrunc if=/mnt/usr/share/syslinux/mbr.bin of=/dev/sda&lt;br /&gt;
&lt;br /&gt;
== Unmounting the filesystems ==&lt;br /&gt;
&lt;br /&gt;
* Unmount &amp;lt;code&amp;gt;/mnt/boot/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 # umount /mnt/boot/&lt;br /&gt;
&lt;br /&gt;
* Unmount all zfs filesystems:&lt;br /&gt;
&lt;br /&gt;
 # zfs unmount -a&lt;br /&gt;
&lt;br /&gt;
* Reboot the system:&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;br /&gt;
&lt;br /&gt;
== Booting the system ==&lt;br /&gt;
&lt;br /&gt;
Right now mkinitfs doesn&#039;t support ZFS asking for passwords during boot, so it&#039;ll throw you into a rescue shell for you to enter the password during boot. You have to do the following things after pressing enter:&lt;br /&gt;
&lt;br /&gt;
 # zfs load-key -a&lt;br /&gt;
 # mount -t zfs rpool/ROOT/alpine /sysroot&lt;br /&gt;
 # exit&lt;br /&gt;
&lt;br /&gt;
And your system should continue booting! :)&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
== General Procedure ==&lt;br /&gt;
&lt;br /&gt;
In case your system fails to boot, you can verify the settings and fix incorrect configurations:&lt;br /&gt;
&lt;br /&gt;
* [[#Preparing_the_Installation_Environment|Preparing the Installation Environment]]&lt;br /&gt;
&lt;br /&gt;
* Load the ZFS kernel module:&lt;br /&gt;
&lt;br /&gt;
 # modprobe zfs&lt;br /&gt;
&lt;br /&gt;
* [[#Mounting_the_File_Systems|Mount the file systems]]&lt;br /&gt;
&lt;br /&gt;
 # zpool import -R /mnt rpool&lt;br /&gt;
 # mount -t ext4 /dev/sda1 /mnt/boot&lt;br /&gt;
&lt;br /&gt;
* Verify that you run the steps described in the [[#Installing_Alpine_Linux|Installing Alpine Linux]] section correctly. Update the configuration if necessary.&lt;br /&gt;
&lt;br /&gt;
[[Category:Storage]]&lt;br /&gt;
[[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Root_on_ZFS_with_native_encryption&amp;diff=16771</id>
		<title>Root on ZFS with native encryption</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Root_on_ZFS_with_native_encryption&amp;diff=16771"/>
		<updated>2020-01-10T16:09:02Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Recommend Ubuntu instead of Debian&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
This documentation describes how to set up Alpine Linux using ZFS with a pool that uses ZFS&#039; native encryption capabilities, which have been recently introduced in ZFS on Linux (ZoL) 0.8.0.&lt;br /&gt;
&lt;br /&gt;
Note that you must install the &amp;lt;code&amp;gt;/boot/&amp;lt;/code&amp;gt; directory on an unencrypted partition (either an unencrypted ZFS pool or any other FS of your choosing, if it&#039;s compatible with your bootloader) to boot correctly.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need a medium to put a live image on. You can use any live medium that supports ZoL &amp;gt;=0.8.x, but as of writing this it&#039;s easiest to use [https://ubuntu.com/download/desktop Ubuntu 19.10], which comes with ZFS pre-installed.&lt;br /&gt;
&lt;br /&gt;
== Hard Disk Device Name ==&lt;br /&gt;
&lt;br /&gt;
The following documentation uses the &amp;lt;code&amp;gt;/dev/sda&amp;lt;/code&amp;gt; device as installation destination. If your environment uses a different device name for your hard disk, use the corresponding device names in the examples. It also uses &amp;lt;code&amp;gt;rpool&amp;lt;/code&amp;gt; as name of the root pool, you can change this at will, but be sure to change it everywhere it&#039;s mentioned.&lt;br /&gt;
&lt;br /&gt;
= Setting up Alpine Linux Using ZFS with native encryption =&lt;br /&gt;
&lt;br /&gt;
To install Alpine Linux in a ZFS pool with encryption enable, you cannot use the [[Installation|official installation]] procedure, so follow along this guide.&lt;br /&gt;
&lt;br /&gt;
== Preparing the Installation Environment ==&lt;br /&gt;
&lt;br /&gt;
This section assumes that you&#039;re using the previously mentioned Debian installation medium. If you&#039;re using a different medium feel free to skip this section.&lt;br /&gt;
&lt;br /&gt;
After booting the Debian image you&#039;ll have to enable the &amp;lt;code&amp;gt;experimental&amp;lt;/code&amp;gt; repos for the time being to be able to access ZFS 0.8. For this you&#039;ll have to edit &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 # sed &#039;s/buster/experimental/&#039; -i /etc/apt/sources.list&lt;br /&gt;
 # echo &#039;deb http://deb.debian.org/debian experimental contrib&#039; &amp;gt;&amp;gt; /etc/apk/repositories&lt;br /&gt;
&lt;br /&gt;
Now install ZFS 0.8:&lt;br /&gt;
&lt;br /&gt;
 # apt update&lt;br /&gt;
 # apt install libnvpair1linux libuutil1linux libzfs2linux libzpool2linux zfs-dkms zfsutils-linux zfs-zed&lt;br /&gt;
&lt;br /&gt;
And load the ZFS module:&lt;br /&gt;
&lt;br /&gt;
 # modprobe zfs&lt;br /&gt;
&lt;br /&gt;
== Creating the Partition Layout ==&lt;br /&gt;
&lt;br /&gt;
Linux requires an unencrypted &amp;lt;code&amp;gt;/boot/&amp;lt;/code&amp;gt; partition to boot. You can assign the remaining space for the encrypted ZFS pool.&lt;br /&gt;
&lt;br /&gt;
* Start the &amp;lt;code&amp;gt;fdisk&amp;lt;/code&amp;gt; utility to set up partitions:&lt;br /&gt;
&lt;br /&gt;
 # fdisk /dev/sda&lt;br /&gt;
&lt;br /&gt;
:* Create the &amp;lt;code&amp;gt;/boot/&amp;lt;/code&amp;gt; partition:&lt;br /&gt;
::* Enter &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;100m&amp;lt;/code&amp;gt; to create a new 100 MB primary partition.&lt;br /&gt;
&lt;br /&gt;
:* Set the &amp;lt;code&amp;gt;/boot/&amp;lt;/code&amp;gt; partition active:&lt;br /&gt;
::* Enter &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:* Create the ZFS partition:&lt;br /&gt;
::* Enter &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; to start creating the next partition. Press &amp;lt;code&amp;gt;Enter&amp;lt;/code&amp;gt; to select the default start cylinder. Enter the size of partition. For example, &amp;lt;code&amp;gt;512m&amp;lt;/code&amp;gt; for 512 MB or &amp;lt;code&amp;gt;5g&amp;lt;/code&amp;gt; for 5 GB. Alternatively press &amp;lt;code&amp;gt;Enter&amp;lt;/code&amp;gt; to set the maximum available size.&lt;br /&gt;
&lt;br /&gt;
:* To verify the settings, press &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;. The output shows, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device     Boot  Start      End  Sectors  Size Id Type&lt;br /&gt;
/dev/sda1  *      2048   206847   204800  100M 83 Linux&lt;br /&gt;
/dev/sda2       206848 41943039 41736192 19.9G 83 Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Press &amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt; to save the changes.&lt;br /&gt;
&lt;br /&gt;
== Setting up the root pool ==&lt;br /&gt;
&lt;br /&gt;
You can create your rootpool with the following command:&lt;br /&gt;
&lt;br /&gt;
 # zpool create -o ashift=12 \&lt;br /&gt;
      -O acltype=posixacl -O canmount=off -O compression=lz4 \&lt;br /&gt;
      -O dnodesize=auto -O normalization=formD -O relatime=on -O xattr=sa \&lt;br /&gt;
      -O encryption=aes-256-gcm -O keylocation=prompt -O keyformat=passphrase \&lt;br /&gt;
      -O mountpoint=/ -R /mnt \&lt;br /&gt;
      rpool /dev/sda2&lt;br /&gt;
&lt;br /&gt;
You will have to enter your passphrase at this point. Choose wisely, as your passphrase is most likely [https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions#5-security-aspects the weakest link in this setup].&lt;br /&gt;
&lt;br /&gt;
A few notes on the options supplied to zpool:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ashift=12&amp;lt;/code&amp;gt; is recommended here because many drives today have 4KiB (or larger) physical sectors, even though they present 512B logical sectors&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;acltype=posixacl&amp;lt;/code&amp;gt; enables POSIX ACLs globally&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;normalization=formD&amp;lt;/code&amp;gt; eliminates some corner cases relating to UTF-8 filename normalization. It also enables &amp;lt;code&amp;gt;utf8only=on&amp;lt;/code&amp;gt;, meaning that only files with valid UTF-8 filenames will be accepted.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;xattr=sa&amp;lt;/code&amp;gt; vastly improves the performance of extended attributes, but is Linux-only. If you care about using this pool on other OpenZFS implementation don&#039;t specify this option.&lt;br /&gt;
&lt;br /&gt;
After completing this, confirm that the pool has been created:&lt;br /&gt;
&lt;br /&gt;
 # zpool status&lt;br /&gt;
&lt;br /&gt;
Should return something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: none requested&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME         STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool       ONLINE       0     0     0&lt;br /&gt;
	  sda2  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating the required datasets ===&lt;br /&gt;
&lt;br /&gt;
 # zfs create -o mountpoint=none -o canmount=off rpool/ROOT&lt;br /&gt;
 # zfs create -o mountpoint=legacy rpool/ROOT/alpine&lt;br /&gt;
 # mount -t zfs rpool/ROOT/alpine /mnt/&lt;br /&gt;
&lt;br /&gt;
=== Creating optional datasets (feel free to add your own) ===&lt;br /&gt;
&lt;br /&gt;
 # zfs create -o mountpoint=/home rpool/HOME&lt;br /&gt;
 # zfs create -o mountpoint=/var/log rpool/LOG&lt;br /&gt;
&lt;br /&gt;
== Creating the &amp;lt;code&amp;gt;/boot&amp;lt;/code&amp;gt; filesystem ==&lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 /dev/sda1&lt;br /&gt;
&lt;br /&gt;
== Mounting the &amp;lt;code&amp;gt;/boot&amp;lt;/code&amp;gt; filesystem ==&lt;br /&gt;
&lt;br /&gt;
* Create the &amp;lt;code&amp;gt;/mnt/boot/&amp;lt;/code&amp;gt; directory and mount the &amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt; partition in this directory:&lt;br /&gt;
&lt;br /&gt;
 # mkdir /mnt/boot/&lt;br /&gt;
 # mount -t ext4 /dev/sda1 /mnt/boot/&lt;br /&gt;
&lt;br /&gt;
== Installing Alpine Linux ==&lt;br /&gt;
&lt;br /&gt;
Please follow [[Installing_Alpine_Linux_in_a_chroot|Installing Alpine Linux in a chroot]] to setup a base install of Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
After you&#039;ve followed that guide, you still have to do some additional setup for ZFS:&lt;br /&gt;
&lt;br /&gt;
* As of the time of writing this ZFS 0.8.x is only available in [[Edge]], so you&#039;ll have to enable it in &amp;lt;code&amp;gt;/etc/apk/repositories&amp;lt;/code&amp;gt;. Check [https://pkgs.alpinelinux.org/packages?name=zfs pkgs.alpinelinux.org] to see the status of this.&lt;br /&gt;
&lt;br /&gt;
* Install the ZoL and linux-vanilla package: &amp;lt;code&amp;gt;apk add linux-vanilla zfs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Enable ZFS&#039; services:&lt;br /&gt;
&lt;br /&gt;
 # rc-update add zfs-import sysinit&lt;br /&gt;
 # rc-update add zfs-mount sysinit&lt;br /&gt;
&lt;br /&gt;
* Edit the &amp;lt;code&amp;gt;/etc/mkinitfs/mkinitfs.conf&amp;lt;/code&amp;gt; file and append &amp;lt;code&amp;gt;zfs&amp;lt;/code&amp;gt; module to the &amp;lt;code&amp;gt;features&amp;lt;/code&amp;gt; parameter:&lt;br /&gt;
&lt;br /&gt;
 features=&amp;quot;ata base ide scsi usb virtio ext4 lvm &amp;lt;u&amp;gt;zfs&amp;lt;/u&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Be mindful to also include other modules which may be required for your setup, such as the &amp;lt;code&amp;gt;nvme&amp;lt;/code&amp;gt; module.&lt;br /&gt;
&lt;br /&gt;
* Rebuild the initial RAM disk:&lt;br /&gt;
&lt;br /&gt;
 # mkinitfs $(ls /lib/modules/)&lt;br /&gt;
&lt;br /&gt;
* Edit the &amp;lt;code&amp;gt;/etc/update-extlinux.conf&amp;lt;/code&amp;gt; file, set the root ZFS dataset and append the following kernel options to the &amp;lt;code&amp;gt;default_kernel_opts&amp;lt;/code&amp;gt; parameter:&lt;br /&gt;
&lt;br /&gt;
 root=rpool/ROOT/alpine&lt;br /&gt;
 default_kernel_opts=&amp;quot;... &amp;lt;u&amp;gt;rootfstype=zfs&amp;lt;/u&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Update extlinux&#039;s config (if you&#039;re not using a different bootloader)&lt;br /&gt;
&lt;br /&gt;
 # update-extlinux&lt;br /&gt;
 # exit&lt;br /&gt;
&lt;br /&gt;
: Ignore the errors the &amp;lt;code&amp;gt;update-extlinux&amp;lt;/code&amp;gt; utility displays.&lt;br /&gt;
&lt;br /&gt;
* Write the MBR to the &amp;lt;code&amp;gt;/dev/sda&amp;lt;/code&amp;gt; device:&lt;br /&gt;
&lt;br /&gt;
 # dd bs=440 count=1 conv=notrunc if=/mnt/usr/share/syslinux/mbr.bin of=/dev/sda&lt;br /&gt;
&lt;br /&gt;
== Unmounting the filesystems ==&lt;br /&gt;
&lt;br /&gt;
* Unmount &amp;lt;code&amp;gt;/mnt/boot/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 # umount /mnt/boot/&lt;br /&gt;
&lt;br /&gt;
* Unmount all zfs filesystems:&lt;br /&gt;
&lt;br /&gt;
 # zfs unmount -a&lt;br /&gt;
&lt;br /&gt;
* Reboot the system:&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;br /&gt;
&lt;br /&gt;
== Booting the system ==&lt;br /&gt;
&lt;br /&gt;
Right now mkinitfs doesn&#039;t support ZFS asking for passwords during boot, so it&#039;ll throw you into a rescue shell for you to enter the password during boot. You have to do the following things after pressing enter:&lt;br /&gt;
&lt;br /&gt;
 # zfs load-key -a&lt;br /&gt;
 # mount -t zfs rpool/ROOT/alpine /sysroot&lt;br /&gt;
 # exit&lt;br /&gt;
&lt;br /&gt;
And your system should continue booting! :)&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
== General Procedure ==&lt;br /&gt;
&lt;br /&gt;
In case your system fails to boot, you can verify the settings and fix incorrect configurations:&lt;br /&gt;
&lt;br /&gt;
* [[#Preparing_the_Installation_Environment|Preparing the Installation Environment]]&lt;br /&gt;
&lt;br /&gt;
* Load the ZFS kernel module:&lt;br /&gt;
&lt;br /&gt;
 # modprobe zfs&lt;br /&gt;
&lt;br /&gt;
* [[#Mounting_the_File_Systems|Mount the file systems]]&lt;br /&gt;
&lt;br /&gt;
 # zpool import -R /mnt rpool&lt;br /&gt;
 # mount -t ext4 /dev/sda1 /mnt/boot&lt;br /&gt;
&lt;br /&gt;
* Verify that you run the steps described in the [[#Installing_Alpine_Linux|Installing Alpine Linux]] section correctly. Update the configuration if necessary.&lt;br /&gt;
&lt;br /&gt;
[[Category:Storage]]&lt;br /&gt;
[[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=GNOME&amp;diff=16023</id>
		<title>GNOME</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=GNOME&amp;diff=16023"/>
		<updated>2019-06-24T11:02:26Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Update to new GNOME in Alpine v3.11 (edge)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Initial setup =&lt;br /&gt;
Start by booting up Alpine (see [[Installation|these]] instructions on how to do that)&amp;lt;BR&amp;gt;&lt;br /&gt;
When you Alpine is up and running, do the initial setup.&lt;br /&gt;
{{Cmd|# setup-alpine}}&lt;br /&gt;
{{Cmd|# setup-xorg-base}}&lt;br /&gt;
&lt;br /&gt;
= Installing packages =&lt;br /&gt;
Install basic desktop system and gnome packages. As of right now, these are in the testing repo.&amp;lt;BR&amp;gt;&lt;br /&gt;
This might take a few minutes depending on your network speed. &lt;br /&gt;
{{Cmd|# apk add gnome}}&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to you can also install additional GNOME apps for a more complete GNOME experience with:&amp;lt;BR&amp;gt;&lt;br /&gt;
{{Cmd|# apk add gnome-apps}}&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up udev ==&lt;br /&gt;
You&#039;ll have to enable udev in order for GNOME to function properly.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add udev&lt;br /&gt;
# /etc/init.d/udev start &amp;amp;&amp;amp; /etc/init.d/udev-trigger start &amp;amp;&amp;amp; /etc/init.d/udev-settle start&lt;br /&gt;
# rc-update add udev sysinit&lt;br /&gt;
# rc-update add udev-trigger sysinit&lt;br /&gt;
# rc-update add udev-settle sysinit&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Setting up Xorg ==&lt;br /&gt;
Even when using GNOME Wayland you&#039;ll still need a setup Xorg for XWayland.&lt;br /&gt;
&lt;br /&gt;
=== Video packages ===&lt;br /&gt;
&lt;br /&gt;
{{cmd|$ apk search xf86-video}}&lt;br /&gt;
&lt;br /&gt;
Then install the driver matching to your card, e.g. if you have an Intel iGPU:&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add xf86-video-intel}}&lt;br /&gt;
&lt;br /&gt;
=== Input packages ===&lt;br /&gt;
&lt;br /&gt;
Usually libinput is the best choice, as it&#039;s integrated best with GNOME and offers advanced functionality (e.g. palm rejection for touchpads).&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add xf86-input-libinput}}&lt;br /&gt;
&lt;br /&gt;
= Starting your desktop =&lt;br /&gt;
Start GDM and login with your user.&lt;br /&gt;
{{Cmd|rc-service gdm start}}&lt;br /&gt;
&lt;br /&gt;
Once you have verified that it actually works you can make gdm start up at boot:&lt;br /&gt;
{{Cmd|rc-update add gdm}}&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
If you are unable to login, check /var/log/gdm/greeter.log, there may be output there from X to indicate failed modules, etc.&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Tutorials_and_Howtos&amp;diff=15978</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=15978"/>
		<updated>2019-06-01T09:17:36Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Add &amp;quot;Setting up ZFS with native encryption&amp;quot; to list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
The tutorials are hands-on 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;
Howtos are smaller articles explaining how to perform a particular task with Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
We encourage people to send in both complete articles as well as requesting topics to be covered. If you think you have the skills and knowledge to write an Alpine Linux related article please do so on this Wiki. 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;
{{Clear}}&lt;br /&gt;
== Storage ==&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; &amp;lt;!-- Installation and Storage --&amp;gt;&lt;br /&gt;
** [[Back Up a Flash Memory Installation]] &amp;lt;!-- Installation and Storage --&amp;gt;&lt;br /&gt;
** [[Manually editing a existing apkovl]]&lt;br /&gt;
&lt;br /&gt;
* [[Setting up disks manually]] &amp;lt;!-- Installation and Storage --&amp;gt;&lt;br /&gt;
* [[Setting up a software RAID array]]&lt;br /&gt;
&amp;lt;!-- ** [[Setting up a /var partition on software IDE raid1]]  Obsolete, Installation and Storage --&amp;gt; &lt;br /&gt;
* [[Raid Administration]]&lt;br /&gt;
* [[Setting up encrypted volumes with LUKS]]&lt;br /&gt;
* [[Setting up LVM on LUKS]]&lt;br /&gt;
* [[Setting up Logical Volumes with LVM]]&lt;br /&gt;
** [[Setting up LVM on GPT-labeled disks]]&lt;br /&gt;
** [[Installing on GPT LVM]]&lt;br /&gt;
* [[Filesystems|Formatting HD/Floppy/Other]] &amp;lt;!-- just a stub --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Setting up iSCSI]]&lt;br /&gt;
** [[iSCSI Raid and Clustered File Systems]]&lt;br /&gt;
* [[Setting up NBD]]&lt;br /&gt;
* [[Setting up ZFS on LUKS]]&lt;br /&gt;
* [[Setting up ZFS with native encryption]]&lt;br /&gt;
* [[High performance SCST iSCSI Target on Linux software Raid]] &#039;&#039;(deprecated)&#039;&#039; &amp;lt;!-- solution --&amp;gt;&lt;br /&gt;
* [[Linux iSCSI Target (TCM)]]&lt;br /&gt;
* [[Disk Replication with DRBD]] &amp;lt;!-- draft --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Burning ISOs]] &amp;lt;!-- just some links now --&amp;gt;&lt;br /&gt;
* [[Partitioning and Bootmanagers]]&lt;br /&gt;
* [[Migrating data]]&lt;br /&gt;
* [[Create a bootable SDHC from a Mac]]&lt;br /&gt;
* [[Alpine on ARM]]&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
&lt;br /&gt;
* [[Configure Networking]]&lt;br /&gt;
* [[Connecting to a wireless access point]]&lt;br /&gt;
* [[Bonding]]&lt;br /&gt;
* [[Vlan]]&lt;br /&gt;
* [[Bridge]]&lt;br /&gt;
* [[OpenVSwitch]]&lt;br /&gt;
* [[How to configure static routes]]&lt;br /&gt;
* [[Configure a Wireguard interface (wg)]]&lt;br /&gt;
&lt;br /&gt;
* [[Alpine Wall]] - [[How-To Alpine Wall]] - [[Alpine Wall User&#039;s Guide]] &#039;&#039;(a new firewall management framework)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[PXE boot]]&lt;br /&gt;
&lt;br /&gt;
* [[Using serial modem]]&lt;br /&gt;
* [[Using HSDPA modem]]&lt;br /&gt;
* [[Setting up Satellite Internet Connection]]&lt;br /&gt;
* [[Using Alpine on Windows domain with IPSEC isolation]]&lt;br /&gt;
&lt;br /&gt;
* [[Setting up a ssh-server]] &#039;&#039;(Using ssh is a good way to administer your box remotely)&#039;&#039; &amp;lt;!-- Server and Networking --&amp;gt;&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;
* [[Setting up a OpenVPN server with Alpine]] &#039;&#039;(Allowing single users or devices to remotely connect to your network)&#039;&#039;&lt;br /&gt;
&amp;lt;!-- [[Using Racoon for Remote Sites]] is a different VPN tunnelling method, but that article is just a stub --&amp;gt;&lt;br /&gt;
* [[Experiences with OpenVPN-client on ALIX.2D3]]  &amp;lt;!-- solution --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Generating SSL certs with ACF]] &amp;lt;!-- Generating SSL certs with ACF 1.9 --&amp;gt;&lt;br /&gt;
* [[Setting up unbound DNS server]]&lt;br /&gt;
* [[Setting up nsd DNS server]]&lt;br /&gt;
* [[TinyDNS Format]]&lt;br /&gt;
* [[Fault Tolerant Routing with Alpine Linux]] &amp;lt;!-- solution --&amp;gt;&lt;br /&gt;
* [[Freeradius Active Directory Integration]]&lt;br /&gt;
* [[Multi_ISP]] &#039;&#039;(Dual-ISP setup with load-balancing and automatic failover)&#039;&#039;&lt;br /&gt;
* [[OwnCloud]] &#039;&#039;(Installing OwnCloud)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[Seafile: setting up your own private cloud]]&lt;br /&gt;
&lt;br /&gt;
== Post-Install ==&lt;br /&gt;
&amp;lt;!-- If you edit this, please coordinate with Installation#Post-Install and Developer_Documentation#Package_management.  Note that these three sections are not exact duplicates. --&amp;gt;&lt;br /&gt;
&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;
   &amp;lt;!-- [[Alpine Linux package management#Local_Cache|How to enable APK caching]] --&amp;gt;&lt;br /&gt;
** [[Comparison with other distros]]&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]] &amp;lt;!-- new --&amp;gt;&lt;br /&gt;
** [[Manually editing a existing apkovl]]&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]]&lt;br /&gt;
   &amp;lt;!-- [[Writing Init Scripts]] --&amp;gt;&lt;br /&gt;
* [[Alpine setup scripts#setup-xorg-base|Setting up Xorg]]&lt;br /&gt;
* [[Upgrading Alpine]]&lt;br /&gt;
&amp;lt;!-- Obsolete&lt;br /&gt;
 [[Upgrading Alpine - v1.9.x]]&lt;br /&gt;
 [[Upgrading Alpine - CD v1.8.x]]&lt;br /&gt;
 [[Upgrading Alpine - HD v1.8.x]]&lt;br /&gt;
 [[Upgrade to repository main|Upgrading to signed repositories]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&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;
* [[setup-acf]] &#039;&#039;(Configures ACF (webconfiguration) so you can manage your box through https)&#039;&#039;&lt;br /&gt;
* [[Changing passwords for ACF|Changing passwords]]&lt;br /&gt;
* [[Ansible]] &#039;&#039;(Configuration management)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[Enable Serial Console on Boot]]&lt;br /&gt;
&amp;lt;!-- Obsolete?&lt;br /&gt;
* [[Error message on boot: Address space collision: host bridge window conflicts with Adaptor ROM]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* [[How to get regular stuff working]] &#039;&#039;some notes on need-to-know topics&#039;&#039;&lt;br /&gt;
* [[Installing Oracle Java]]&lt;br /&gt;
* [[Rsnapshot|Setting up periodic backups with &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== Virtualization==&lt;br /&gt;
&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]]&lt;br /&gt;
* [[Xen PCI Passthrough]]&lt;br /&gt;
* [[Xen LiveCD]]&lt;br /&gt;
* [[qemu]]&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;
* [[Docker]]&lt;br /&gt;
* [[Install_Alpine_on_VirtualBox]]&lt;br /&gt;
&lt;br /&gt;
== Desktop Environment ==&lt;br /&gt;
&lt;br /&gt;
* [[Awesome(wm) Setup]]&lt;br /&gt;
* [[dwm]] &#039;&#039;(dynamic window manager for X)&#039;&#039;&lt;br /&gt;
* [[EyeOS]] &#039;&#039;(Cloud Computing Desktop)&#039;&#039;&lt;br /&gt;
* [[Gnome Setup]]&lt;br /&gt;
* [[MATE|MATE Setup]]&lt;br /&gt;
* [[Oneye]] &#039;&#039;(Cloud Computing Desktop - Dropbox Alternative)&#039;&#039;&lt;br /&gt;
* [[Owncloud]] &#039;&#039;(Cloud Computing Desktop - Dropbox Alternative)&#039;&#039;&lt;br /&gt;
** (to be merged with [[OwnCloud]] &#039;&#039;(Your personal Cloud for storing and sharing your data on-line)&#039;&#039;)&lt;br /&gt;
* [[Remote Desktop Server]]&lt;br /&gt;
* [[Suspend on LID close]]&lt;br /&gt;
* [[Sway]]&lt;br /&gt;
* [[XFCE Setup]] and [[Xfce Desktop|Desktop Ideas]]&lt;br /&gt;
* [[Installing Adobe flash player for Firefox]]&lt;br /&gt;
* [[Sound Setup]]&lt;br /&gt;
* [[Printer Setup]]&lt;br /&gt;
* [[Default applications]]&lt;br /&gt;
&lt;br /&gt;
== Raspberry Pi ==&lt;br /&gt;
&lt;br /&gt;
* [[Raspberry Pi|Raspberry Pi (Installation)]]&lt;br /&gt;
* [[Classic install or sys mode on Raspberry Pi]]&lt;br /&gt;
* [[RPI Video Receiver]] &#039;&#039;(network video decoder using Rasperry Pi and omxplayer)&#039;&#039;&lt;br /&gt;
* [[Linux Router with VPN on a Raspberry Pi]]&lt;br /&gt;
* [[Linux Router with VPN on a Raspberry Pi (IPv6)]]&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 Zero W - Installation]]&lt;br /&gt;
&lt;br /&gt;
== PowerPC ==&lt;br /&gt;
&lt;br /&gt;
* [[Ppc64le|Powepc64le (Installation)]]&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;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
=== Telephony ===&lt;br /&gt;
* [[Setting up Zaptel/Asterisk on Alpine]]&lt;br /&gt;
** [[Setting up Streaming an Asterisk Channel]]&lt;br /&gt;
* [[Freepbx on Alpine Linux]]&lt;br /&gt;
* [[FreePBX_V3]] &#039;&#039;(FreeSWITCH, Asterisk GUI web acces tool)&#039;&#039;&lt;br /&gt;
* [[2600hz]] &#039;&#039;(FreeSWITCH, Asterisk GUI web access tool)&#039;&#039;&lt;br /&gt;
* [[Kamailio]] &#039;&#039;(SIP Server, formerly OpenSER)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&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;
* [[ISP Mail Server HowTo]] &amp;lt;!-- solution, Mail --&amp;gt;&lt;br /&gt;
** [[ISP Mail Server Upgrade 2.x]]&lt;br /&gt;
** [[ISP Mail Server 2.x HowTo]] &#039;&#039;(Beta, please test)&#039;&#039;&lt;br /&gt;
** [[ISP Mail Server 3.x HowTo]]&lt;br /&gt;
* [[Roundcube]] &#039;&#039;(Webmail system)&#039;&#039;&lt;br /&gt;
* [[Setting up postfix with virtual domains]]&lt;br /&gt;
* [[Protecting your email server with Alpine]]&lt;br /&gt;
* [[Setting up clamsmtp]]&lt;br /&gt;
* [[Setting up dovecot with imap and ssl]]&lt;br /&gt;
* [[relay email to gmail (msmtp, mailx, sendmail]]&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
* [[Lighttpd]]&lt;br /&gt;
** [[Lighttpd Https access]]&lt;br /&gt;
** [[Setting Up Lighttpd with PHP]]&lt;br /&gt;
** [[Setting Up Lighttpd With FastCGI]]&lt;br /&gt;
* [[Cherokee]]&lt;br /&gt;
* [[Nginx]]&lt;br /&gt;
** [[Nginx_with_PHP#Nginx_with_PHP|Nginx with PHP]]&lt;br /&gt;
** [[Nginx as reverse proxy with acme (letsencrypt)]]&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;
&lt;br /&gt;
* [[High Availability High Performance Web Cache]] &#039;&#039;(uCarp + HAProxy for High Availability Services such as Squid web proxy)&#039;&#039; &amp;lt;!-- solution, Server --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Setting up Transparent Squid Proxy]] &amp;lt;!-- draft --&amp;gt;&lt;br /&gt;
** [[SqStat]] &#039;&#039;(Script to look at active squid users connections)&#039;&#039;&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;
&lt;br /&gt;
* [[Drupal]] &#039;&#039;(Content Management System (CMS) written in PHP)&#039;&#039;&lt;br /&gt;
* [[WordPress]] &#039;&#039;(Web software to create website or blog)&#039;&#039;&lt;br /&gt;
* [[MediaWiki]] &#039;&#039;(Free web-based wiki software application)&#039;&#039;&lt;br /&gt;
* [[DokuWiki]]&lt;br /&gt;
* [[Darkhttpd]]&lt;br /&gt;
* [[Tomcat]]&lt;br /&gt;
&lt;br /&gt;
=== Other Servers ===&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;
&lt;br /&gt;
* [[Setting up a nfs-server]]&lt;br /&gt;
* [[Setting up a samba-server]] &#039;&#039;(standard file sharing)&#039;&#039;&lt;br /&gt;
* [[Setting up a samba-ad-dc]] &#039;&#039;(Active Directory compatible domain controller)&#039;&#039;&lt;br /&gt;
* [[Phpizabi]] &#039;&#039;(Social Networking Platform)&#039;&#039;&lt;br /&gt;
* [[Statusnet]] &#039;&#039;(Microblogging Platform)&#039;&#039;&lt;br /&gt;
* [[Pastebin]] &#039;&#039;(Pastebin software application)&#039;&#039;&lt;br /&gt;
* [[Setting up Transmission (bittorrent) with Clutch WebUI]]&lt;br /&gt;
&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;
* [[OsTicket]] &#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;
* [[Cgit]]&lt;br /&gt;
** [[Setting up a git repository server with gitolite and cgit]] &amp;lt;!-- doesn&#039;t exist yet --&amp;gt;&lt;br /&gt;
* [[Roundcube]] &#039;&#039;(Webmail system)&#039;&#039;&lt;br /&gt;
* [[Glpi]] &#039;&#039;(Manage inventory of technical resources)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[How to setup a Alpine Linux mirror]]&lt;br /&gt;
* [[Cups]]&lt;br /&gt;
* [[NgIRCd]] &#039;&#039;(Server for Internet Relay Chat/IRC)&#039;&#039;&lt;br /&gt;
* [[How To Setup Your Own IRC Network]] &#039;&#039;(Using {{Pkg|charybdis}} and {{Pkg|atheme-iris}})&#039;&#039;&lt;br /&gt;
* [[OpenVCP]] &#039;&#039;(VServer Control Panel)&#039;&#039;&lt;br /&gt;
* [[Mahara]] &#039;&#039;(E-portfolio and social networking system)&#039;&#039;&lt;br /&gt;
* [[Chrony and GPSD | Using chrony, gpsd, and a garmin LVC 18 as a Stratum 1 NTP source ]]&lt;br /&gt;
* [[Sending SMS using gnokii]]&lt;br /&gt;
* [[IPTV How To|Internet Protocol television (IPTV)]]&lt;br /&gt;
* [[UniFi_Controller]]&lt;br /&gt;
* [[DNSCrypt-Proxy]] &#039;&#039;Encrypt and authenticate DNS calls from your system&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
* Setting up [[collectd]]&lt;br /&gt;
* [[Traffic monitoring]] &amp;lt;!-- Networking and Monitoring --&amp;gt;&lt;br /&gt;
* [[Setting up traffic monitoring using rrdtool (and snmp)]] &amp;lt;!-- Monitoring --&amp;gt;&lt;br /&gt;
* [[Setting up monitoring using rrdtool (and rrdcollect)]]&lt;br /&gt;
* [[Setting up Cacti|Cacti]] &#039;&#039;(Front-end for rrdtool networking monitor)&#039;&#039;&lt;br /&gt;
* [[LTTng]] &#039;&#039;(Kernel and userspace tracing)&#039;&#039;&lt;br /&gt;
* [[Setting up Zabbix|Zabbix]] &#039;&#039;(Monitor and track the status of network services and hardware)&#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 Smokeping|Smokeping]] &#039;&#039;(Network latency monitoring)&#039;&#039; &amp;lt;!-- Networking and Monitoring --&amp;gt;&lt;br /&gt;
** [[Setting up MRTG and Smokeping to Monitor Bandwidth Usage and Network Latency]]&lt;br /&gt;
* [[Setting Up Fprobe And Ntop|Ntop]] &#039;&#039;(NetFlow collection and analysis using a remote fprobe instance)&#039;&#039; &amp;lt;!-- Networking and Monitoring --&amp;gt;&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;
&lt;br /&gt;
* [[IP Accounting]] &amp;lt;!-- Networking and Monitoring --&amp;gt;&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;
* [[SqStat]] &#039;&#039;(Script to look at active squid users connections)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[Piwik]] &#039;&#039;(A real time web analytics software program)&#039;&#039;&lt;br /&gt;
* [[Awstats]] &#039;&#039;(Free log file analyzer)&#039;&#039;&lt;br /&gt;
* [[Intrusion Detection using Snort]]&lt;br /&gt;
** [[Intrusion Detection using Snort, Sguil, Barnyard and more]]&lt;br /&gt;
* [[Dglog]] &#039;&#039;(Log analyzer for the web content filter DansGuardian)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[Webmin]] &#039;&#039;(A web-based interface for Linux system)&#039;&#039;&lt;br /&gt;
* [[PhpPgAdmin]] &#039;&#039;(Web-based administration tool for PostgreSQL)&#039;&#039;&lt;br /&gt;
* [[PhpMyAdmin]] &#039;&#039;(Web-based administration tool for MYSQL)&#039;&#039;&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;
* [[Linfo]]&lt;br /&gt;
&lt;br /&gt;
* [[Setting up lm_sensors]]&lt;br /&gt;
&lt;br /&gt;
* [[ZoneMinder video camera security and surveillance]]&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Shell]]&lt;br /&gt;
* [[:Category:Programming]]&lt;br /&gt;
* [[Running glibc programs]]&lt;br /&gt;
* [[:Category:Drivers]]&lt;br /&gt;
* [[:Category:Multimedia]]&lt;br /&gt;
* [[Kernel Modesetting]]&lt;br /&gt;
* [[CPU frequency scaling]]&lt;br /&gt;
&lt;br /&gt;
== Complete Solutions ==&lt;br /&gt;
* [[DIY Fully working Alpine Linux for Allwinner and Other ARM SOCs]]&lt;br /&gt;
* [[Replacing non-Alpine Linux with Alpine remotely]]&lt;br /&gt;
* [[High performance SCST iSCSI Target on Linux software Raid]]&lt;br /&gt;
* [[Fault Tolerant Routing with Alpine Linux]]&lt;br /&gt;
* [[Experiences with OpenVPN-client on ALIX.2D3]]&lt;br /&gt;
* [[Building a cloud with Alpine Linux]]&lt;br /&gt;
&lt;br /&gt;
* [[ISP Mail Server HowTo]] &#039;&#039;(Postfix+PostfixAdmin+DoveCot+Roundcube+ClamAV+Spamd - A full-serivce ISP mail server)&#039;&#039;&lt;br /&gt;
** [[ISP Mail Server Upgrade 2.x]]&lt;br /&gt;
** [[ISP Mail Server 2.x HowTo]] &#039;&#039;(Beta, please test)&#039;&#039;&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;
* [[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;
* [[Dynamic Multipoint VPN (DMVPN)]] combined with [[Small_Office_Services]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
This does not attempt to be complete. Is it useful to have these listed here? I find them more accessible if grouped with their topics; also, an up-to-date list of all Draft or Obsolete pages can be found at [[Project:Wiki maintenance]].&lt;br /&gt;
&lt;br /&gt;
== Drafts ==&lt;br /&gt;
Currently unfinished/works-in-progress.&lt;br /&gt;
* [[Using Racoon for Remote Sites]]&lt;br /&gt;
* [[Setting up Transparent Squid Proxy]] &#039;&#039;(Covers Squid proxy and URL Filtering system)&#039;&#039;&lt;br /&gt;
** [[Obtaining user information via SNMP]] &#039;&#039;(Using the Squark Squid authentication helper)&#039;&#039; [!-- no longer a draft --]&lt;br /&gt;
* [[Setting up Streaming an Asterisk Channel]]&lt;br /&gt;
* [[Setting up A Network Monitoring and Inventory System]] &#039;&#039;(Nagios + OpenAudit and related components)&#039;&#039;&lt;br /&gt;
* [[Intrusion Detection using Snort]] &#039;&#039;(Installing and configuring Snort and related applications on Alpine 2.0.x)&#039;&#039;&lt;br /&gt;
* [[IP Accounting]] &#039;&#039;(Installing and configuring pmacct for IP Accounting, Netflow/sFlow collector)&#039;&#039;&lt;br /&gt;
* [[Disk Replication with DRBD]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Root_on_ZFS_with_native_encryption&amp;diff=15977</id>
		<title>Root on ZFS with native encryption</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Root_on_ZFS_with_native_encryption&amp;diff=15977"/>
		<updated>2019-06-01T09:15:57Z</updated>

		<summary type="html">&lt;p&gt;Cogitri: Initial Page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
This documentation describes how to set up Alpine Linux using ZFS with a pool that uses ZFS&#039; native encryption capabilities, which have been recently introduced in ZFS on Linux (ZoL) 0.8.0.&lt;br /&gt;
&lt;br /&gt;
Note that you must install the &amp;lt;code&amp;gt;/boot/&amp;lt;/code&amp;gt; directory on an unencrypted partition (either an unencrypted ZFS pool or any other FS of your choosing, if it&#039;s compatible with your bootloader) to boot correctly.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need a medium to put a live image on. You can use any live medium that supports ZoL &amp;gt;=0.8.x, but as of writing this it&#039;s easiest to use [https://cdimage.debian.org/cdimage/weekly-live-builds/amd64/iso-hybrid/ Debian Buster&#039;s live images] for this.&lt;br /&gt;
&lt;br /&gt;
== Hard Disk Device Name ==&lt;br /&gt;
&lt;br /&gt;
The following documentation uses the &amp;lt;code&amp;gt;/dev/sda&amp;lt;/code&amp;gt; device as installation destination. If your environment uses a different device name for your hard disk, use the corresponding device names in the examples. It also uses &amp;lt;code&amp;gt;rpool&amp;lt;/code&amp;gt; as name of the root pool, you can change this at will, but be sure to change it everywhere it&#039;s mentioned.&lt;br /&gt;
&lt;br /&gt;
= Setting up Alpine Linux Using ZFS with native encryption =&lt;br /&gt;
&lt;br /&gt;
To install Alpine Linux in a ZFS pool with encryption enable, you cannot use the [[Installation|official installation]] procedure, so follow along this guide.&lt;br /&gt;
&lt;br /&gt;
== Preparing the Installation Environment ==&lt;br /&gt;
&lt;br /&gt;
This section assumes that you&#039;re using the previously mentioned Debian installation medium. If you&#039;re using a different medium feel free to skip this section.&lt;br /&gt;
&lt;br /&gt;
After booting the Debian image you&#039;ll have to enable the &amp;lt;code&amp;gt;experimental&amp;lt;/code&amp;gt; repos for the time being to be able to access ZFS 0.8. For this you&#039;ll have to edit &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 # sed &#039;s/buster/experimental/&#039; -i /etc/apt/sources.list&lt;br /&gt;
 # echo &#039;deb http://deb.debian.org/debian experimental contrib&#039;&lt;br /&gt;
&lt;br /&gt;
Now install ZFS 0.8:&lt;br /&gt;
&lt;br /&gt;
 # apt update&lt;br /&gt;
 # apt install libnvpair1linux libuutil1linux libzfs2linux libzpool2linux zfs-dkms zfsutils-linux zfs-zed&lt;br /&gt;
&lt;br /&gt;
And load the ZFS module:&lt;br /&gt;
&lt;br /&gt;
 # modprobe zfs&lt;br /&gt;
&lt;br /&gt;
== Creating the Partition Layout ==&lt;br /&gt;
&lt;br /&gt;
Linux requires an unencrypted &amp;lt;code&amp;gt;/boot/&amp;lt;/code&amp;gt; partition to boot. You can assign the remaining space for the encrypted ZFS pool.&lt;br /&gt;
&lt;br /&gt;
* Start the &amp;lt;code&amp;gt;fdisk&amp;lt;/code&amp;gt; utility to set up partitions:&lt;br /&gt;
&lt;br /&gt;
 # fdisk /dev/sda&lt;br /&gt;
&lt;br /&gt;
:* Create the &amp;lt;code&amp;gt;/boot/&amp;lt;/code&amp;gt; partition:&lt;br /&gt;
::* Enter &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;100m&amp;lt;/code&amp;gt; to create a new 100 MB primary partition.&lt;br /&gt;
&lt;br /&gt;
:* Set the &amp;lt;code&amp;gt;/boot/&amp;lt;/code&amp;gt; partition active:&lt;br /&gt;
::* Enter &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:* Create the ZFS partition:&lt;br /&gt;
::* Enter &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; to start creating the next partition. Press &amp;lt;code&amp;gt;Enter&amp;lt;/code&amp;gt; to select the default start cylinder. Enter the size of partition. For example, &amp;lt;code&amp;gt;512m&amp;lt;/code&amp;gt; for 512 MB or &amp;lt;code&amp;gt;5g&amp;lt;/code&amp;gt; for 5 GB. Alternatively press &amp;lt;code&amp;gt;Enter&amp;lt;/code&amp;gt; to set the maximum available size.&lt;br /&gt;
&lt;br /&gt;
:* To verify the settings, press &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;. The output shows, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device     Boot  Start      End  Sectors  Size Id Type&lt;br /&gt;
/dev/sda1  *      2048   206847   204800  100M 83 Linux&lt;br /&gt;
/dev/sda2       206848 41943039 41736192 19.9G 83 Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Press &amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt; to save the changes.&lt;br /&gt;
&lt;br /&gt;
== Setting up the root pool ==&lt;br /&gt;
&lt;br /&gt;
You can create your rootpool with the following command:&lt;br /&gt;
&lt;br /&gt;
 # zpool create -o ashift=12 \&lt;br /&gt;
      -O acltype=posixacl -O canmount=off -O compression=lz4 \&lt;br /&gt;
      -O dnodesize=auto -O normalization=formD -O relatime=on -O xattr=sa \&lt;br /&gt;
      -O encryption=aes-256-gcm -O keylocation=prompt -O keyformat=passphrase \&lt;br /&gt;
      -O mountpoint=/ -R /mnt \&lt;br /&gt;
      rpool /dev/sda2&lt;br /&gt;
&lt;br /&gt;
You will have to enter your passphrase at this point. Choose wisely, as your passphrase is most likely [https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions#5-security-aspects the weakest link in this setup].&lt;br /&gt;
&lt;br /&gt;
A few notes on the options supplied to zpool:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ashift=12&amp;lt;/code&amp;gt; is recommended here because many drives today have 4KiB (or larger) physical sectors, even though they present 512B logical sectors&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;acltype=posixacl&amp;lt;/code&amp;gt; enables POSIX ACLs globally&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;normalization=formD&amp;lt;/code&amp;gt; eliminates some corner cases relating to UTF-8 filename normalization. It also enables &amp;lt;code&amp;gt;utf8only=on&amp;lt;/code&amp;gt;, meaning that only files with valid UTF-8 filenames will be accepted.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;xattr=sa&amp;lt;/code&amp;gt; vastly improves the performance of extended attributes, but is Linux-only. If you care about using this pool on other OpenZFS implementation don&#039;t specify this option.&lt;br /&gt;
&lt;br /&gt;
After completing this, confirm that the pool has been created:&lt;br /&gt;
&lt;br /&gt;
 # zpool status&lt;br /&gt;
&lt;br /&gt;
Should return something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: none requested&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME         STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool       ONLINE       0     0     0&lt;br /&gt;
	  sda2  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating the required datasets ===&lt;br /&gt;
&lt;br /&gt;
 # zfs create -o mountpoint=none -o canmount=off rpool/ROOT&lt;br /&gt;
 # zfs create -o mountpoint=legacy rpool/ROOT/alpine&lt;br /&gt;
 # mount -t zfs rpool/ROOT/alpine /mnt/&lt;br /&gt;
&lt;br /&gt;
=== Creating optional datasets (feel free to add your own) ===&lt;br /&gt;
&lt;br /&gt;
 # zfs create -o mountpoint=/home rpool/HOME&lt;br /&gt;
 # zfs create -o mountpoint=/var/log rpool/LOG&lt;br /&gt;
&lt;br /&gt;
== Creating the &amp;lt;code&amp;gt;/boot&amp;lt;/code&amp;gt; filesystem ==&lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 /dev/sda1&lt;br /&gt;
&lt;br /&gt;
== Mounting the &amp;lt;code&amp;gt;/boot&amp;lt;/code&amp;gt; filesystem ==&lt;br /&gt;
&lt;br /&gt;
* Create the &amp;lt;code&amp;gt;/mnt/boot/&amp;lt;/code&amp;gt; directory and mount the &amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt; partition in this directory:&lt;br /&gt;
&lt;br /&gt;
 # mkdir /mnt/boot/&lt;br /&gt;
 # mount -t ext4 /dev/sda1 /mnt/boot/&lt;br /&gt;
&lt;br /&gt;
== Installing Alpine Linux ==&lt;br /&gt;
&lt;br /&gt;
Please follow [[Installing_Alpine_Linux_in_a_chroot|Installing Alpine Linux in a chroot]] to setup a base install of Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
After you&#039;ve followed that guide, you still have to do some additional setup for ZFS:&lt;br /&gt;
&lt;br /&gt;
* As of the time of writing this ZFS 0.8.x is only available in [[Edge]], so you&#039;ll have to enable it in &amp;lt;code&amp;gt;/etc/apk/repositories&amp;lt;/code&amp;gt;. Check [https://pkgs.alpinelinux.org/packages?name=zfs pkgs.alpinelinux.org] to see the status of this.&lt;br /&gt;
&lt;br /&gt;
* Install the ZoL and linux-vanilla package: &amp;lt;code&amp;gt;apk install linux-vanialla zfs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Enable ZFS&#039; services:&lt;br /&gt;
&lt;br /&gt;
 # rc-update add zfs-import sysinit&lt;br /&gt;
 # rc-update add zfs-mount sysinit&lt;br /&gt;
&lt;br /&gt;
* Edit the &amp;lt;code&amp;gt;/etc/mkinitfs/mkinitfs.conf&amp;lt;/code&amp;gt; file and append &amp;lt;code&amp;gt;zfs&amp;lt;/code&amp;gt; module to the &amp;lt;code&amp;gt;features&amp;lt;/code&amp;gt; parameter:&lt;br /&gt;
&lt;br /&gt;
 features=&amp;quot;ata base ide scsi usb virtio ext4 lvm &amp;lt;u&amp;gt;zfs&amp;lt;/u&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Be mindful to also include other modules which may be required for your setup, such as the &amp;lt;code&amp;gt;nvme&amp;lt;/code&amp;gt; module.&lt;br /&gt;
&lt;br /&gt;
* Rebuild the initial RAM disk:&lt;br /&gt;
&lt;br /&gt;
 # mkinitfs $(ls /lib/modules/)&lt;br /&gt;
&lt;br /&gt;
* Edit the &amp;lt;code&amp;gt;/etc/update-extlinux.conf&amp;lt;/code&amp;gt; file, set the root ZFS dataset and append the following kernel options to the &amp;lt;code&amp;gt;default_kernel_opts&amp;lt;/code&amp;gt; parameter:&lt;br /&gt;
&lt;br /&gt;
 root=rpool/ROOT/alpine&lt;br /&gt;
 default_kernel_opts=&amp;quot;... &amp;lt;u&amp;gt;rootfstype=zfs&amp;lt;/u&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Update extlinux&#039;s config (if you&#039;re not using a different bootloader)&lt;br /&gt;
&lt;br /&gt;
 # update-extlinux&lt;br /&gt;
 # exit&lt;br /&gt;
&lt;br /&gt;
: Ignore the errors the &amp;lt;code&amp;gt;update-extlinux&amp;lt;/code&amp;gt; utility displays.&lt;br /&gt;
&lt;br /&gt;
* Write the MBR to the &amp;lt;code&amp;gt;/dev/sda&amp;lt;/code&amp;gt; device:&lt;br /&gt;
&lt;br /&gt;
 # dd bs=440 count=1 conv=notrunc if=/mnt/usr/share/syslinux/mbr.bin of=/dev/sda&lt;br /&gt;
&lt;br /&gt;
== Unmounting the filesystems ==&lt;br /&gt;
&lt;br /&gt;
* Unmount &amp;lt;code&amp;gt;/mnt/boot/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 # umount /mnt/boot/&lt;br /&gt;
&lt;br /&gt;
* Unmount all zfs filesystems:&lt;br /&gt;
&lt;br /&gt;
 # zfs unmount -a&lt;br /&gt;
&lt;br /&gt;
* Reboot the system:&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;br /&gt;
&lt;br /&gt;
== Booting the system ==&lt;br /&gt;
&lt;br /&gt;
Right now mkinitfs doesn&#039;t support ZFS asking for passwords during boot, so it&#039;ll throw you into a rescue shell for you to enter the password during boot. You have to do the following things after pressing enter:&lt;br /&gt;
&lt;br /&gt;
 # zfs load-key -a&lt;br /&gt;
 # mount -t zfs rpool/ROOT/alpine /sysroot&lt;br /&gt;
 # exit&lt;br /&gt;
&lt;br /&gt;
And your system should continue booting! :)&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
== General Procedure ==&lt;br /&gt;
&lt;br /&gt;
In case your system fails to boot, you can verify the settings and fix incorrect configurations:&lt;br /&gt;
&lt;br /&gt;
* [[#Preparing_the_Installation_Environment|Preparing the Installation Environment]]&lt;br /&gt;
&lt;br /&gt;
* Load the ZFS kernel module:&lt;br /&gt;
&lt;br /&gt;
 # modprobe zfs&lt;br /&gt;
&lt;br /&gt;
* [[#Mounting_the_File_Systems|Mount the file systems]]&lt;br /&gt;
&lt;br /&gt;
 # zpool import -R /mnt rpool&lt;br /&gt;
 # mount -t ext4 /dev/sda1 /mnt/boot&lt;br /&gt;
&lt;br /&gt;
* Verify that you run the steps described in the [[#Installing_Alpine_Linux|Installing Alpine Linux]] section correctly. Update the configuration if necessary.&lt;br /&gt;
&lt;br /&gt;
[[Category:Storage]]&lt;br /&gt;
[[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Cogitri</name></author>
	</entry>
</feed>