<?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=Realroot</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=Realroot"/>
	<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/wiki/Special:Contributions/Realroot"/>
	<updated>2026-04-25T18:28:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Initramfs_init&amp;diff=31068</id>
		<title>Initramfs init</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Initramfs_init&amp;diff=31068"/>
		<updated>2025-09-28T07:33:45Z</updated>

		<summary type="html">&lt;p&gt;Realroot: Add command when running outside system&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://gitlab.alpinelinux.org/alpine/mkinitfs &#039;&#039;&#039;mkinitfs&#039;&#039;&#039;] is a tool to create initramfs images. Initramfs images are small images which contain a small filesystem with everything required to boot Alpine. For example, when booting a setup with [[Setting up encrypted volumes with LUKS|full disk encryption]], the initramfs contains the binaries required to prompt for a password and mount the encrypted disk.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Under a running alpine machine, the following command can be used if for some reason the initramfs has not been created properly for a new kernel.&lt;br /&gt;
 {{cmd|# mkinitfs -c /etc/mkinitfs/mkinitfs.conf -b / &amp;lt;kernelvers&amp;gt;}}&lt;br /&gt;
The script is located in {{path|/sbin/}} and is created with ash. It expects {{path|/lib/modules}} to be populated with the &amp;lt;code&amp;gt;&amp;lt;kernelvers&amp;gt;&amp;lt;/code&amp;gt; listed.&amp;lt;br&amp;gt;&lt;br /&gt;
Therefore normally just running &amp;lt;code&amp;gt;mkinitfs&amp;lt;/code&amp;gt; should be enough if you need to rebuild it.&lt;br /&gt;
&lt;br /&gt;
Sometimes, e.g. to fix a non booting installation or when installing, you may have to rebuild the initramfs from another system, you do not need to chroot.&amp;lt;br&amp;gt;&lt;br /&gt;
Mount &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/boot&amp;lt;/code&amp;gt; etc. and then run:&lt;br /&gt;
{{cmd|# mkinitfs -c /mnt/etc/mkinitfs/mkinitfs.conf -b /mnt/ $(ls /mnt/lib/modules/)}}&lt;br /&gt;
&lt;br /&gt;
== Initramfs init cmdline options ==&lt;br /&gt;
&lt;br /&gt;
In addition to the [https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html kernel boot parameters] are a number of parameters that the init script understands. These are documented in the &amp;lt;code&amp;gt;mkinitfs-bootparam(7)&amp;lt;/code&amp;gt; man page.&lt;br /&gt;
&lt;br /&gt;
Depending on your HDD type and filesystem used, the file appears as follows:&lt;br /&gt;
{{cat|/etc/mkinitfs/mkinitfs.conf|features{{=}}&amp;quot;ata base ide scsi usb virtio ext4 nvme&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
Although you may specify your own init script when building an initramfs, these parameters allow for extensive control over the initial startup of an Alpine Linux system.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
To troubleshoot booting issues, when using [[Bootloaders#GRUB|grub]], replace &amp;lt;code&amp;gt;quiet&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;debug_init single&amp;lt;/code&amp;gt; in the boot command line.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [https://wiki.postmarketos.org/wiki/The_initramfs PostmarketOS Wiki]&lt;br /&gt;
* [https://wiki.archlinux.org/title/Arch_boot_process#initramfs ArchWiki boot process]&lt;br /&gt;
 &lt;br /&gt;
[[category:Kernel]]&lt;br /&gt;
[[Category:Booting]]&lt;/div&gt;</summary>
		<author><name>Realroot</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=F2FS&amp;diff=31000</id>
		<title>F2FS</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=F2FS&amp;diff=31000"/>
		<updated>2025-09-24T17:36:58Z</updated>

		<summary type="html">&lt;p&gt;Realroot: Edit f2fs modules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
F2FS (Flash-Friendly File System) is a flash file system initially developed by Samsung Electronics for the Linux kernel.&lt;br /&gt;
&lt;br /&gt;
The motive for F2FS was to build a file system that, from the start, takes into account the characteristics of NAND flash memory-based storage devices (such as solid-state disks, eMMC, and SD cards), which are widely used in computer systems ranging from mobile devices to servers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Warning| Using F2FS for the rootfs will cause fsck service to fail, see https://gitlab.alpinelinux.org/alpine/aports/-/issues/17543}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Out of the box Alpine Linux doesnt support making F2FS partitions, that can be added with:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|f2fs-tools}}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Formatting a partiton using F2FS ==&lt;br /&gt;
&lt;br /&gt;
You can format a partition using F2FS with the following command:&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;&#039;&amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt;&#039;&#039;&#039; is used as a example}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# mkfs.f2fs /dev/sda1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== f2fs module ==&lt;br /&gt;
&amp;lt;code&amp;gt;f2fs&amp;lt;/code&amp;gt; needs to be manually added to &amp;lt;code&amp;gt;/etc/mkinitfs/mkinitfs.conf&amp;lt;/code&amp;gt; if you are using it for rootfs.&lt;br /&gt;
&lt;br /&gt;
Otherwise add it to /etc/modules:&lt;br /&gt;
{{Cmd|echo f2fs &amp;gt;&amp;gt; /etc/modules}}&lt;br /&gt;
You need the module to mount partitions that are not rootfs.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/F2FS Wikipedia Entry on F2FS]&lt;br /&gt;
&lt;br /&gt;
[[Category:Storage]]&lt;br /&gt;
[[Category:Filesystems]]&lt;/div&gt;</summary>
		<author><name>Realroot</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=F2FS&amp;diff=30999</id>
		<title>F2FS</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=F2FS&amp;diff=30999"/>
		<updated>2025-09-24T17:24:53Z</updated>

		<summary type="html">&lt;p&gt;Realroot: Add warning about using it for rootfs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
F2FS (Flash-Friendly File System) is a flash file system initially developed by Samsung Electronics for the Linux kernel.&lt;br /&gt;
&lt;br /&gt;
The motive for F2FS was to build a file system that, from the start, takes into account the characteristics of NAND flash memory-based storage devices (such as solid-state disks, eMMC, and SD cards), which are widely used in computer systems ranging from mobile devices to servers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Warning| Using F2FS for the rootfs will cause fsck service to fail, see https://gitlab.alpinelinux.org/alpine/aports/-/issues/17543}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Out of the box Alpine Linux doesnt support making F2FS partitions, that can be added with:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|f2fs-tools}}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Formatting a partiton using F2FS ==&lt;br /&gt;
&lt;br /&gt;
You can format a partition using F2FS with the following command:&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;&#039;&amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt;&#039;&#039;&#039; is used as a example}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# mkfs.f2fs /dev/sda1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== f2fs module ==&lt;br /&gt;
&lt;br /&gt;
{{Warning|This section isn&#039;t tested (yet): USE AT YOUR OWN RISK}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;f2fs&amp;lt;/code&amp;gt; may need to be manually added to &amp;lt;code&amp;gt;/etc/mkinitfs/mkinitfs.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or?&lt;br /&gt;
&lt;br /&gt;
{{Cmd|echo f2fs &amp;gt;&amp;gt; /etc/modules}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/F2FS Wikipedia Entry on F2FS]&lt;br /&gt;
&lt;br /&gt;
[[Category:Storage]]&lt;br /&gt;
[[Category:Filesystems]]&lt;/div&gt;</summary>
		<author><name>Realroot</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Bluetooth&amp;diff=30294</id>
		<title>Bluetooth</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Bluetooth&amp;diff=30294"/>
		<updated>2025-06-25T14:39:42Z</updated>

		<summary type="html">&lt;p&gt;Realroot: fix name of the package for file transfer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft|work in progress}}&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Bluetooth Bluetooth] is a standard for the short-range wireless interconnection of cellular phones, computers, and other electronic devices. [https://www.bluez.org/ BlueZ] is an implementation of the Bluetooth protocol stack for Linux, and it is provided by the {{Pkg|bluez}} package.&lt;br /&gt;
&lt;br /&gt;
This article describes the basic installation of Bluetooth controllers and devices.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites and Basic Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
{{todo|test bluetooth with [[mdev]]}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|eudev}} should be installed and setup:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# setup-devd udev}}&lt;br /&gt;
&lt;br /&gt;
=== Basic Installation ===&lt;br /&gt;
&lt;br /&gt;
Basic installation is as follows:&lt;br /&gt;
&lt;br /&gt;
# Install {{Pkg|bluez}}&lt;br /&gt;
#* Optionally install {{Pkg|bluez-deprecated}} if you need deprecated tools like &amp;lt;code&amp;gt;hcitool&amp;lt;/code&amp;gt;&lt;br /&gt;
# Load the &amp;lt;code&amp;gt;btusb&amp;lt;/code&amp;gt; kernel module&lt;br /&gt;
# Add user to the &amp;lt;code&amp;gt;lp&amp;lt;/code&amp;gt; group&lt;br /&gt;
# Start and enable the Bluetooth service&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add bluez&lt;br /&gt;
&amp;amp;#35; apk add bluez-deprecated&lt;br /&gt;
&amp;amp;#35; modprobe btusb&lt;br /&gt;
&amp;amp;#35; adduser $USER lp&lt;br /&gt;
&amp;amp;#35; rc-service bluetooth start&lt;br /&gt;
&amp;amp;#35; rc-update add bluetooth default}}&lt;br /&gt;
&lt;br /&gt;
Now, check the state of the Bluetooth radio transmitter using &amp;lt;code&amp;gt;rfkill&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ rfkill list bluetooth}}&lt;br /&gt;
&lt;br /&gt;
It should return something similar to:&lt;br /&gt;
&lt;br /&gt;
 0: hci0: Bluetooth&lt;br /&gt;
         Soft blocked: no&lt;br /&gt;
         Hard blocked: no&lt;br /&gt;
&lt;br /&gt;
If the device is listed as blocked, it can be unblocked using the same tool:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rfkill unblock bluetooth}}&lt;br /&gt;
&lt;br /&gt;
{{Note|It may be necessary to restart the Bluetooth service before continuing.}}&lt;br /&gt;
&lt;br /&gt;
=== File transfer ===&lt;br /&gt;
Install the {{Pkg|openobex}} package.&lt;br /&gt;
&lt;br /&gt;
=== Front-ends ===&lt;br /&gt;
&lt;br /&gt;
There are several front-ends available:&lt;br /&gt;
&lt;br /&gt;
* The {{Pkg|bluez}} comes with the &amp;lt;code&amp;gt;bluetoothctl&amp;lt;/code&amp;gt; front-end&lt;br /&gt;
* {{Pkg|blueman}}: a full-featured Bluetooth manager&lt;br /&gt;
* {{Pkg|bluedevil}}: the [[KDE]] Bluetooth manager&lt;br /&gt;
* {{Pkg|bluetuith}}: simple text-based bluetooth management user interface&lt;br /&gt;
* {{Pkg|gnome-bluetooth}}: the [[GNOME]] Bluetooth manager&lt;br /&gt;
&lt;br /&gt;
== Pairing ==&lt;br /&gt;
&lt;br /&gt;
=== Using &amp;lt;code&amp;gt;bluetoothctl&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Begin by starting &amp;lt;code&amp;gt;bluetoothctl&amp;lt;/code&amp;gt; and follow these basic steps:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ bluetoothctl}}&lt;br /&gt;
&lt;br /&gt;
The prompt should display:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;#&lt;br /&gt;
&lt;br /&gt;
List the available controllers:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# list&lt;br /&gt;
&lt;br /&gt;
Display information about a controller:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# show &#039;&#039;controller_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Set the default controller:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# select &#039;&#039;controller_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Power on the controller:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# power on&lt;br /&gt;
&lt;br /&gt;
Enable the agent and set it as default:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# agent on&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# default-agent&lt;br /&gt;
&lt;br /&gt;
Set the controller as discoverable (temporarily for 3 minutes) and pairable:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# discoverable on&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# pairable on&lt;br /&gt;
&lt;br /&gt;
Scan for devices:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# scan on&lt;br /&gt;
&lt;br /&gt;
Put the device into pairing mode. This generally involves pressing a button or a combinations of buttons, usually for several seconds.&lt;br /&gt;
&lt;br /&gt;
Discover the device MAC address:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# devices&lt;br /&gt;
&lt;br /&gt;
Pair with the device:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# pair &#039;&#039;device_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enter the PIN if prompted:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;[agent]&amp;lt;/span&amp;gt; PIN code: ####&lt;br /&gt;
&lt;br /&gt;
Trust the device:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# #trust &#039;&#039;device_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Connect to the device:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# connect &#039;&#039;device_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Display information about the device:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# info &#039;&#039;device_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The device is now paired:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# quit&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Set adapter power state ===&lt;br /&gt;
&lt;br /&gt;
If you would like the adapter to not be automatically enabled (e.g. on a portable device where you wish to save battery), set &amp;lt;code&amp;gt;AutoEnable=false&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;/etc/bluetooth/main.conf&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;[Policy]&amp;lt;/code&amp;gt; section:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/bluetooth/main.conf|[Policy]&lt;br /&gt;
...&lt;br /&gt;
AutoEnable&amp;amp;#61;false&lt;br /&gt;
...}}&lt;br /&gt;
&lt;br /&gt;
=== Battery Reporting ===&lt;br /&gt;
&lt;br /&gt;
An experimental feature can be enabled in order to report device battery level:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/bluetooth/main.conf|[General]&lt;br /&gt;
...&lt;br /&gt;
Experimental&amp;amp;#61;true&lt;br /&gt;
...}}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Due to the variety of available Bluetooth hardware it is possible that you receive errors while attempting to install, activate, or find your Bluetooth device.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;No default controller available&amp;quot; error ===&lt;br /&gt;
&lt;br /&gt;
After having followed these instructions, or others, you run &amp;lt;code&amp;gt;bluetoothctl&amp;lt;/code&amp;gt; and encounter the following scenario:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# list&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# show&lt;br /&gt;
 No default controller available&lt;br /&gt;
&lt;br /&gt;
One possible solution is that you are missing firmware drivers.&lt;br /&gt;
&lt;br /&gt;
Try running the following command to discover the source of the issue:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# dmesg &amp;amp;#124; grep -i bluetooth &amp;amp;#124; grep -i firmware}}&lt;br /&gt;
&lt;br /&gt;
There are many firmware packages available that could likely solve the this problem (see {{Pkg|linux-firmware-*}}).&lt;br /&gt;
&lt;br /&gt;
Another possible solution is to install {{Pkg|hidapi}} and add load the module:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add hidapi&lt;br /&gt;
&amp;amp;#35; modprobe uhid}}&lt;br /&gt;
&lt;br /&gt;
It may also be necessary to create configuration to load the uhid and btusb kernel modules on boot:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/modules-load.d/uhid.conf&lt;br /&gt;
&amp;amp;#35;Load uhid kernel module:&lt;br /&gt;
uhid&lt;br /&gt;
EOF}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/modules-load.d/btusb.conf&lt;br /&gt;
&amp;amp;#35;Load btusb kernel module:&lt;br /&gt;
btusb&lt;br /&gt;
EOF}}&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;org.bluez.Error.NotAvailable br-connection-profile-unavailable&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
The error &amp;lt;code&amp;gt;br-connection-profile-unavailable&amp;lt;/code&amp;gt; is sometimes produced when trying to connect a Bluetooth HID device but the &amp;lt;code&amp;gt;uhid&amp;lt;/code&amp;gt; kernel module is not loaded. HID devices include keyboards and the volume buttons on headphones (which are sometimes presented to the OS as a keyboard), mice, game controllers, alphanumeric displays, etc.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;uhid&amp;lt;/code&amp;gt; kernel module is required for USB HID devices with drivers that are implemented in userspace, when userspace HID support is enabled.&lt;br /&gt;
&lt;br /&gt;
Loading &amp;lt;code&amp;gt;uhid&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;modprobe&amp;lt;/code&amp;gt; after encountering this error does not always fix the problem.&lt;br /&gt;
&lt;br /&gt;
Try setting up &amp;lt;code&amp;gt;uhid&amp;lt;/code&amp;gt; to load at boot, and then rebooting:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/modules-load.d/uhid.conf&lt;br /&gt;
&amp;amp;#35;Load uhid kernel module:&lt;br /&gt;
uhid&lt;br /&gt;
EOF&lt;br /&gt;
&amp;amp;#35; reboot}}&lt;br /&gt;
&lt;br /&gt;
Alternatively, the userspace HID feature can be disabled entirely in favour of kernel HIDP drivers in &amp;lt;code&amp;gt;/etc/bluetooth/input.conf&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|1=UserspaceHID=false}}&lt;br /&gt;
&lt;br /&gt;
If running pipewire, you may also try installing {{Pkg|pipewire-spa-bluez}} to see if that solves the issue.&lt;br /&gt;
&lt;br /&gt;
=== Unable to control Bluetooth speaker volume / Bluetooth output is muted (Pulseaudio) ===&lt;br /&gt;
&lt;br /&gt;
It is possible to automatically switch audio output and volume control to last connected device.&lt;br /&gt;
&lt;br /&gt;
This can solve the problem of controlling the speaker volume when switching between Bluetooth devices.&lt;br /&gt;
&lt;br /&gt;
Append the following lines at the end of the {{Path|/etc/pulse/default.pa}}:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/pulse/default.pa|...&lt;br /&gt;
&amp;amp;#35;##Automatically switch audio to the most recently connected device (Bluetooth, HDMI, USB)&lt;br /&gt;
load-module module-switch-on-connect}}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[PulseAudio#Bluetooth|PulseAudio with Bluetooth]]&lt;br /&gt;
* [[PipeWire#Bluetooth_audio|PipeWire with Bluetooth]]&lt;br /&gt;
* [https://wiki.postmarketos.org/wiki/Bluetooth Bluetooth entry on PostmarketOS Wiki]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Bluetooth Bluetooth entry on Gentoo Wiki]&lt;br /&gt;
* [https://wiki.archlinux.org/title/Bluetooth Bluetooth entry on ArchWiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Multimedia]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Sound]]&lt;br /&gt;
[[Category:Drivers]]&lt;/div&gt;</summary>
		<author><name>Realroot</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Bluetooth&amp;diff=30293</id>
		<title>Bluetooth</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Bluetooth&amp;diff=30293"/>
		<updated>2025-06-25T14:37:54Z</updated>

		<summary type="html">&lt;p&gt;Realroot: Add openobex for file transfer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft|work in progress}}&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Bluetooth Bluetooth] is a standard for the short-range wireless interconnection of cellular phones, computers, and other electronic devices. [https://www.bluez.org/ BlueZ] is an implementation of the Bluetooth protocol stack for Linux, and it is provided by the {{Pkg|bluez}} package.&lt;br /&gt;
&lt;br /&gt;
This article describes the basic installation of Bluetooth controllers and devices.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites and Basic Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
{{todo|test bluetooth with [[mdev]]}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|eudev}} should be installed and setup:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# setup-devd udev}}&lt;br /&gt;
&lt;br /&gt;
=== Basic Installation ===&lt;br /&gt;
&lt;br /&gt;
Basic installation is as follows:&lt;br /&gt;
&lt;br /&gt;
# Install {{Pkg|bluez}}&lt;br /&gt;
#* Optionally install {{Pkg|bluez-deprecated}} if you need deprecated tools like &amp;lt;code&amp;gt;hcitool&amp;lt;/code&amp;gt;&lt;br /&gt;
# Load the &amp;lt;code&amp;gt;btusb&amp;lt;/code&amp;gt; kernel module&lt;br /&gt;
# Add user to the &amp;lt;code&amp;gt;lp&amp;lt;/code&amp;gt; group&lt;br /&gt;
# Start and enable the Bluetooth service&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add bluez&lt;br /&gt;
&amp;amp;#35; apk add bluez-deprecated&lt;br /&gt;
&amp;amp;#35; modprobe btusb&lt;br /&gt;
&amp;amp;#35; adduser $USER lp&lt;br /&gt;
&amp;amp;#35; rc-service bluetooth start&lt;br /&gt;
&amp;amp;#35; rc-update add bluetooth default}}&lt;br /&gt;
&lt;br /&gt;
Now, check the state of the Bluetooth radio transmitter using &amp;lt;code&amp;gt;rfkill&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ rfkill list bluetooth}}&lt;br /&gt;
&lt;br /&gt;
It should return something similar to:&lt;br /&gt;
&lt;br /&gt;
 0: hci0: Bluetooth&lt;br /&gt;
         Soft blocked: no&lt;br /&gt;
         Hard blocked: no&lt;br /&gt;
&lt;br /&gt;
If the device is listed as blocked, it can be unblocked using the same tool:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rfkill unblock bluetooth}}&lt;br /&gt;
&lt;br /&gt;
{{Note|It may be necessary to restart the Bluetooth service before continuing.}}&lt;br /&gt;
&lt;br /&gt;
=== File transfer ===&lt;br /&gt;
Install the {{Pkg|openbluez}}.&lt;br /&gt;
&lt;br /&gt;
=== Front-ends ===&lt;br /&gt;
&lt;br /&gt;
There are several front-ends available:&lt;br /&gt;
&lt;br /&gt;
* The {{Pkg|bluez}} comes with the &amp;lt;code&amp;gt;bluetoothctl&amp;lt;/code&amp;gt; front-end&lt;br /&gt;
* {{Pkg|blueman}}: a full-featured Bluetooth manager&lt;br /&gt;
* {{Pkg|bluedevil}}: the [[KDE]] Bluetooth manager&lt;br /&gt;
* {{Pkg|bluetuith}}: simple text-based bluetooth management user interface&lt;br /&gt;
* {{Pkg|gnome-bluetooth}}: the [[GNOME]] Bluetooth manager&lt;br /&gt;
&lt;br /&gt;
== Pairing ==&lt;br /&gt;
&lt;br /&gt;
=== Using &amp;lt;code&amp;gt;bluetoothctl&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Begin by starting &amp;lt;code&amp;gt;bluetoothctl&amp;lt;/code&amp;gt; and follow these basic steps:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ bluetoothctl}}&lt;br /&gt;
&lt;br /&gt;
The prompt should display:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;#&lt;br /&gt;
&lt;br /&gt;
List the available controllers:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# list&lt;br /&gt;
&lt;br /&gt;
Display information about a controller:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# show &#039;&#039;controller_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Set the default controller:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# select &#039;&#039;controller_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Power on the controller:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# power on&lt;br /&gt;
&lt;br /&gt;
Enable the agent and set it as default:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# agent on&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# default-agent&lt;br /&gt;
&lt;br /&gt;
Set the controller as discoverable (temporarily for 3 minutes) and pairable:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# discoverable on&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# pairable on&lt;br /&gt;
&lt;br /&gt;
Scan for devices:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# scan on&lt;br /&gt;
&lt;br /&gt;
Put the device into pairing mode. This generally involves pressing a button or a combinations of buttons, usually for several seconds.&lt;br /&gt;
&lt;br /&gt;
Discover the device MAC address:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# devices&lt;br /&gt;
&lt;br /&gt;
Pair with the device:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# pair &#039;&#039;device_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enter the PIN if prompted:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;[agent]&amp;lt;/span&amp;gt; PIN code: ####&lt;br /&gt;
&lt;br /&gt;
Trust the device:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# #trust &#039;&#039;device_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Connect to the device:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# connect &#039;&#039;device_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Display information about the device:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# info &#039;&#039;device_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The device is now paired:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# quit&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Set adapter power state ===&lt;br /&gt;
&lt;br /&gt;
If you would like the adapter to not be automatically enabled (e.g. on a portable device where you wish to save battery), set &amp;lt;code&amp;gt;AutoEnable=false&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;/etc/bluetooth/main.conf&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;[Policy]&amp;lt;/code&amp;gt; section:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/bluetooth/main.conf|[Policy]&lt;br /&gt;
...&lt;br /&gt;
AutoEnable&amp;amp;#61;false&lt;br /&gt;
...}}&lt;br /&gt;
&lt;br /&gt;
=== Battery Reporting ===&lt;br /&gt;
&lt;br /&gt;
An experimental feature can be enabled in order to report device battery level:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/bluetooth/main.conf|[General]&lt;br /&gt;
...&lt;br /&gt;
Experimental&amp;amp;#61;true&lt;br /&gt;
...}}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Due to the variety of available Bluetooth hardware it is possible that you receive errors while attempting to install, activate, or find your Bluetooth device.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;No default controller available&amp;quot; error ===&lt;br /&gt;
&lt;br /&gt;
After having followed these instructions, or others, you run &amp;lt;code&amp;gt;bluetoothctl&amp;lt;/code&amp;gt; and encounter the following scenario:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# list&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# show&lt;br /&gt;
 No default controller available&lt;br /&gt;
&lt;br /&gt;
One possible solution is that you are missing firmware drivers.&lt;br /&gt;
&lt;br /&gt;
Try running the following command to discover the source of the issue:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# dmesg &amp;amp;#124; grep -i bluetooth &amp;amp;#124; grep -i firmware}}&lt;br /&gt;
&lt;br /&gt;
There are many firmware packages available that could likely solve the this problem (see {{Pkg|linux-firmware-*}}).&lt;br /&gt;
&lt;br /&gt;
Another possible solution is to install {{Pkg|hidapi}} and add load the module:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add hidapi&lt;br /&gt;
&amp;amp;#35; modprobe uhid}}&lt;br /&gt;
&lt;br /&gt;
It may also be necessary to create configuration to load the uhid and btusb kernel modules on boot:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/modules-load.d/uhid.conf&lt;br /&gt;
&amp;amp;#35;Load uhid kernel module:&lt;br /&gt;
uhid&lt;br /&gt;
EOF}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/modules-load.d/btusb.conf&lt;br /&gt;
&amp;amp;#35;Load btusb kernel module:&lt;br /&gt;
btusb&lt;br /&gt;
EOF}}&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;org.bluez.Error.NotAvailable br-connection-profile-unavailable&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
The error &amp;lt;code&amp;gt;br-connection-profile-unavailable&amp;lt;/code&amp;gt; is sometimes produced when trying to connect a Bluetooth HID device but the &amp;lt;code&amp;gt;uhid&amp;lt;/code&amp;gt; kernel module is not loaded. HID devices include keyboards and the volume buttons on headphones (which are sometimes presented to the OS as a keyboard), mice, game controllers, alphanumeric displays, etc.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;uhid&amp;lt;/code&amp;gt; kernel module is required for USB HID devices with drivers that are implemented in userspace, when userspace HID support is enabled.&lt;br /&gt;
&lt;br /&gt;
Loading &amp;lt;code&amp;gt;uhid&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;modprobe&amp;lt;/code&amp;gt; after encountering this error does not always fix the problem.&lt;br /&gt;
&lt;br /&gt;
Try setting up &amp;lt;code&amp;gt;uhid&amp;lt;/code&amp;gt; to load at boot, and then rebooting:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/modules-load.d/uhid.conf&lt;br /&gt;
&amp;amp;#35;Load uhid kernel module:&lt;br /&gt;
uhid&lt;br /&gt;
EOF&lt;br /&gt;
&amp;amp;#35; reboot}}&lt;br /&gt;
&lt;br /&gt;
Alternatively, the userspace HID feature can be disabled entirely in favour of kernel HIDP drivers in &amp;lt;code&amp;gt;/etc/bluetooth/input.conf&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|1=UserspaceHID=false}}&lt;br /&gt;
&lt;br /&gt;
If running pipewire, you may also try installing {{Pkg|pipewire-spa-bluez}} to see if that solves the issue.&lt;br /&gt;
&lt;br /&gt;
=== Unable to control Bluetooth speaker volume / Bluetooth output is muted (Pulseaudio) ===&lt;br /&gt;
&lt;br /&gt;
It is possible to automatically switch audio output and volume control to last connected device.&lt;br /&gt;
&lt;br /&gt;
This can solve the problem of controlling the speaker volume when switching between Bluetooth devices.&lt;br /&gt;
&lt;br /&gt;
Append the following lines at the end of the {{Path|/etc/pulse/default.pa}}:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/pulse/default.pa|...&lt;br /&gt;
&amp;amp;#35;##Automatically switch audio to the most recently connected device (Bluetooth, HDMI, USB)&lt;br /&gt;
load-module module-switch-on-connect}}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[PulseAudio#Bluetooth|PulseAudio with Bluetooth]]&lt;br /&gt;
* [[PipeWire#Bluetooth_audio|PipeWire with Bluetooth]]&lt;br /&gt;
* [https://wiki.postmarketos.org/wiki/Bluetooth Bluetooth entry on PostmarketOS Wiki]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Bluetooth Bluetooth entry on Gentoo Wiki]&lt;br /&gt;
* [https://wiki.archlinux.org/title/Bluetooth Bluetooth entry on ArchWiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Multimedia]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Sound]]&lt;br /&gt;
[[Category:Drivers]]&lt;/div&gt;</summary>
		<author><name>Realroot</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Setting_up_encrypted_volumes_with_LUKS&amp;diff=30292</id>
		<title>Setting up encrypted volumes with LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Setting_up_encrypted_volumes_with_LUKS&amp;diff=30292"/>
		<updated>2025-06-25T14:34:39Z</updated>

		<summary type="html">&lt;p&gt;Realroot: Add localmount service note&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://en.wikipedia.org/wiki/Linux%20Unified%20Key%20Setup LUKS] allows encrypting a partition and mapping it as a virtual block device, which can then be used as a normal partition. Guides for other Linux distributions should serve as a general references for installing Alpine onto a LUKS encrypted disk.&lt;br /&gt;
&lt;br /&gt;
The following approaches are known to work:&lt;br /&gt;
&lt;br /&gt;
* Plain LUKS&lt;br /&gt;
* [[LVM on LUKS]]&lt;br /&gt;
&lt;br /&gt;
The installer has built-in support for encryption. The default installer will not encrypt the swap partition and the boot partition. To setup Alpine Linux with an encrypted swap partition, refer to [[LVM on LUKS]]. The [[Bootloaders#GRUB|GRUB]] bootloader supports BIOS and EFI boot with an encrypted boot partition.&lt;br /&gt;
&lt;br /&gt;
== mkinitfs and LUKS ==&lt;br /&gt;
&lt;br /&gt;
For those familiar with setting up FDE on other Linux distributions, this section contains only Alpine-specific knowledge required and understanding [[mkinitfs]].&lt;br /&gt;
&lt;br /&gt;
First of all, the &amp;lt;code&amp;gt;cryptsetup&amp;lt;/code&amp;gt; feature needs to be added to {{path|/etc/mkinitfs/mkinitfs.conf}}. Additionally, the following kernel parameters are required:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cryptroot&amp;lt;/code&amp;gt; kernel parameter should point to the encrypted block device. &lt;br /&gt;
* &amp;lt;code&amp;gt;cryptdm&amp;lt;/code&amp;gt;: the name that will be given to the device.&lt;br /&gt;
* &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; kernel parameter should point to the mapped block device: &amp;lt;code&amp;gt;/dev/mapper/&amp;lt;name used in cryptdm&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;rootfstype&amp;lt;/code&amp;gt;: the filesystem type of the root partition (e.g.: &amp;lt;code&amp;gt;btrfs&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
For example, if you use grub with GPT partition table using ext4 without LVM the {{path|/etc/default/grub}} file will be as follows:{{Cat|/etc/default/grub|&amp;lt;nowiki&amp;gt;GRUB_TIMEOUT=2&lt;br /&gt;
GRUB_DISABLE_SUBMENU=y&lt;br /&gt;
GRUB_DISABLE_RECOVERY=true&lt;br /&gt;
GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;modules=sd-mod,usb-storage,ext4 quiet rootfstype=ext4 cryptroot=UUID=a7dc90c4-6746-417e-b25b-cb8769ee6334 cryptdm=alpine-rootfs  root=/dev/mapper/alpine-rootfs&amp;quot;&lt;br /&gt;
GRUB_PRELOAD_MODULES=&amp;quot;luks cryptodisk part_gpt&amp;quot;&lt;br /&gt;
GRUB_ENABLE_CRYPTODISK=y&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Decrypting non-root volumes during boot ==&lt;br /&gt;
{{Main|LVM on LUKS#Mounting additional encrypted filesystems at boot}}&lt;br /&gt;
To have an encrypted non-root volume be decrypted prior to automatically mounting it somewhere via &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;,  configure &amp;lt;code&amp;gt;dmcrypt&amp;lt;/code&amp;gt; in the {{path|/etc/conf.d/dmcrypt}} file. The comments inside that file should guide you, but as a simple example, here&#039;s what you should include in that file to decrypt and map a partition to some volume named, say, “&amp;lt;code&amp;gt;myvolume&amp;lt;/code&amp;gt;”, given its UUID (here represented using a series of &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;s), using a passphrase {{Cat|/etc/conf.d/dmcrypt|&amp;lt;nowiki&amp;gt;...&lt;br /&gt;
target=myvolume&lt;br /&gt;
source=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX&lt;br /&gt;
key=/etc/keys/myvolume.key  #not needed as passphrase is used in this example&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/fstab}} file, then, you would include the following line as follows:{{Cat|/etc/fstab|&amp;lt;nowiki&amp;gt;...&lt;br /&gt;
/dev/mapper/myvolume	&amp;lt;path&amp;gt;	&amp;lt;fstype&amp;gt;	&amp;lt;options&amp;gt;&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
substituting in the proper parameters.&lt;br /&gt;
&lt;br /&gt;
Do not forget to enable the &amp;lt;code&amp;gt;localmount&amp;lt;/code&amp;gt; service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rc-update add localmount&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otherwise they will not be mounted automatically.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[LVM on LUKS]]&lt;br /&gt;
* [[mkinitfs|Initramfs init]]&lt;br /&gt;
* [[Full disk encryption secure boot]]&lt;br /&gt;
* [[Setting up a laptop|Setting up a secured laptop]]&lt;br /&gt;
* [https://wiki.archlinux.org/index.php/Dm-crypt dm-crypt on ArchWiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Storage]]&lt;br /&gt;
[[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Realroot</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Radeon_Video&amp;diff=30223</id>
		<title>Radeon Video</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Radeon_Video&amp;diff=30223"/>
		<updated>2025-06-12T14:24:53Z</updated>

		<summary type="html">&lt;p&gt;Realroot: Add command to find amdgpu or radeon module&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
The following instructions are for modern AMD GPU chipsets covered by the &amp;lt;code&amp;gt;radeon&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;amdgpu&amp;lt;/code&amp;gt; drivers.&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
For [https://en.wikipedia.org/wiki/List%20of%20AMD%20graphics%20processing%20units Vega and later], the {{Pkg|linux-firmware-amdgpu}} package is required. Otherwise, the {{Pkg|linux-firmware-radeon}} should be used.&lt;br /&gt;
&lt;br /&gt;
See [https://wiki.gentoo.org/wiki/AMDGPU the relevant section on the Gentoo Wiki] for a more granular list of product names and microarchitecture names.&lt;br /&gt;
&lt;br /&gt;
== Kernel Modesetting (KMS) ==&lt;br /&gt;
&lt;br /&gt;
To enable [[KMS]] at boot:&lt;br /&gt;
&lt;br /&gt;
# Run &amp;lt;code&amp;gt;lspci -k | grep amdgpu&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lspci -k | grep radeon&amp;lt;/code&amp;gt; to find your module. For example it will return &amp;lt;code&amp;gt;Kernel driver in use: amdgpu&amp;lt;/code&amp;gt; for the &amp;lt;code&amp;gt;amdgpu&amp;lt;/code&amp;gt; module when running the first command.&lt;br /&gt;
# Add the &amp;lt;code&amp;gt;radeon&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;amdgpu&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;fbcon&amp;lt;/code&amp;gt; modules to {{Path|/etc/modules}}: {{Cmd|$ echo radeon &amp;gt;&amp;gt; /etc/modules&amp;lt;br /&amp;gt;$ echo fbcon &amp;gt;&amp;gt; /etc/modules}} or {{Cmd|$ echo amdgpu &amp;gt;&amp;gt; /etc/modules&amp;lt;br /&amp;gt;$ echo fbcon &amp;gt;&amp;gt; /etc/modules}}&lt;br /&gt;
# Install &amp;lt;code&amp;gt;mkinitfs&amp;lt;/code&amp;gt;: {{Cmd|apk add mkinitfs}}&lt;br /&gt;
# Enable the &amp;lt;code&amp;gt;kms&amp;lt;/code&amp;gt; feature in the &amp;lt;code&amp;gt;mkinitfs&amp;lt;/code&amp;gt; configuration by adding it to the &amp;lt;var&amp;gt;features&amp;lt;/var&amp;gt; variable, e.g., {{cat|/etc/mkinitfs/mkinitfs.conf|features{{=}}&amp;quot;keymap cryptsetup kms ata base ide scsi usb virtio ext4&amp;quot;}}&lt;br /&gt;
# Run &amp;lt;code&amp;gt;mkinitfs&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Reboot to test the configuration.&lt;br /&gt;
&lt;br /&gt;
== Wayland ==&lt;br /&gt;
&lt;br /&gt;
Install the following packages as needed:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|mesa-dri-gallium}}: &#039;&#039;&#039;necessary&#039;&#039;&#039; Mesa drivers.&lt;br /&gt;
* {{Pkg|mesa-va-gallium}}: VA-API drivers, for hardware accelerated video encoding and decoding&lt;br /&gt;
&lt;br /&gt;
If driver auto-selection does not work, e.g. no mouse cursor under Sway, manual driver selection might be needed:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;export MESA_LOADER_DRIVER_OVERRIDE=r300&amp;lt;/code&amp;gt;: for AMD&#039;s Radeon R300, R400, and R500 GPUs.&lt;br /&gt;
* &amp;lt;code&amp;gt;export MESA_LOADER_DRIVER_OVERRIDE=r600&amp;lt;/code&amp;gt;: for AMD&#039;s Radeon R600 GPUs up to Northern Islands. Officially supported by AMD.&lt;br /&gt;
* &amp;lt;code&amp;gt;export MESA_LOADER_DRIVER_OVERRIDE=radeonsi&amp;lt;/code&amp;gt;: for AMD&#039;s Southern Island GPUs and later. Officially supported by AMD.&lt;br /&gt;
&lt;br /&gt;
For VA-API:&lt;br /&gt;
* &amp;lt;code&amp;gt;export LIBVA_DRIVER_NAME=r600&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;export LIBVA_DRIVER_NAME=radeonsi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Xorg ==&lt;br /&gt;
{{Main|Xorg}}&lt;br /&gt;
Install either the Free Software driver {{Pkg|xf86-video-ati}} or the proprietary amdgpu firmware {{Pkg|linux-firmware-amdgpu}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;modprobe fbcon&amp;lt;/code&amp;gt; might be needed to avoid black screen when leaving Xorg.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.archlinux.org/title/AMDGPU AMDGPU - ArchWiki]&lt;br /&gt;
* [https://wiki.archlinux.org/title/ATI ATI - ArchWiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]]&lt;br /&gt;
[[Category:Graphics]]&lt;/div&gt;</summary>
		<author><name>Realroot</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Setting_up_encrypted_volumes_with_LUKS&amp;diff=29208</id>
		<title>Setting up encrypted volumes with LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Setting_up_encrypted_volumes_with_LUKS&amp;diff=29208"/>
		<updated>2025-03-09T15:07:45Z</updated>

		<summary type="html">&lt;p&gt;Realroot: Add grub file example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://en.wikipedia.org/wiki/Linux%20Unified%20Key%20Setup LUKS] allows encrypting a partition and mapping it as a virtual block device, which can then be used as a normal partition. Guides for other Linux distributions should serve as a general references for installing Alpine onto a LUKS encrypted disk.&lt;br /&gt;
&lt;br /&gt;
The installer has built-in support for encryption. The default installer will not encrypt the swap partition and the boot partition. To setup Alpine Linux with an encrypted swap partition, refer to [[LVM on LUKS]]. The GRUB bootloader supports BIOS and EFI boot with an encrypted boot partition.&lt;br /&gt;
&lt;br /&gt;
== mkinitfs and LUKS ==&lt;br /&gt;
&lt;br /&gt;
For those familiar with setting up FDE on other Linux distributions, this section contains only Alpine-specific knowledge required is understanding [[mkinitfs]].&lt;br /&gt;
&lt;br /&gt;
First of all, the &amp;lt;code&amp;gt;cryptsetup&amp;lt;/code&amp;gt; feature needs to be added to &amp;lt;code&amp;gt;/etc/mkinitfs/mkinitfs.conf&amp;lt;/code&amp;gt;. Additionally, the following kernel parameters are required:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cryptroot&amp;lt;/code&amp;gt; kernel parameter should point to the encrypted block device. &lt;br /&gt;
* &amp;lt;code&amp;gt;cryptdm&amp;lt;/code&amp;gt;: the name that will be given to the device.&lt;br /&gt;
* &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; kernel parameter should point to the mapped block device: &amp;lt;code&amp;gt;/dev/mapper/&amp;lt;name used in cryptdm&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;rootfstype&amp;lt;/code&amp;gt;: the filesystem type of the root partition (e.g.: &amp;lt;code&amp;gt;btrfs&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example if you use grub with GPT partition table, no LVM and ext4 you will have in &amp;lt;code&amp;gt;/etc/default/grub&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_TIMEOUT=2&lt;br /&gt;
GRUB_DISABLE_SUBMENU=y&lt;br /&gt;
GRUB_DISABLE_RECOVERY=true&lt;br /&gt;
GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;modules=sd-mod,usb-storage,ext4 quiet rootfstype=ext4 cryptroot=UUID=a7dc90c4-6746-417e-b25b-cb8769ee6334 cryptdm=alpine-rootfs  root=/dev/mapper/alpine-rootfs&amp;quot;&lt;br /&gt;
GRUB_PRELOAD_MODULES=&amp;quot;luks cryptodisk part_gpt&amp;quot;&lt;br /&gt;
GRUB_ENABLE_CRYPTODISK=y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[LVM on LUKS]]&lt;br /&gt;
* [[mkinitfs|Initramfs init]]&lt;br /&gt;
* [[Full disk encryption secure boot]]&lt;br /&gt;
* [https://wiki.archlinux.org/index.php/Dm-crypt dm-crypt on ArchWiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Storage]]&lt;br /&gt;
[[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Realroot</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Setting_up_encrypted_volumes_with_LUKS&amp;diff=29204</id>
		<title>Setting up encrypted volumes with LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Setting_up_encrypted_volumes_with_LUKS&amp;diff=29204"/>
		<updated>2025-03-09T13:08:14Z</updated>

		<summary type="html">&lt;p&gt;Realroot: Add missing parameter and grub instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://en.wikipedia.org/wiki/Linux%20Unified%20Key%20Setup LUKS] allows encrypting a partition and mapping it as a virtual block device, which can then be used as a normal partition. Guides for other Linux distributions should serve as a general references for installing Alpine onto a LUKS encrypted disk.&lt;br /&gt;
&lt;br /&gt;
The installer has built-in support for encryption. The default installer will not encrypt the swap partition and the boot partition. To setup Alpine Linux with an encrypted swap partition, refer to [[LVM on LUKS]]. The GRUB bootloader supports BIOS and EFI boot with an encrypted boot partition.&lt;br /&gt;
&lt;br /&gt;
== mkinitfs and LUKS ==&lt;br /&gt;
&lt;br /&gt;
For those familiar with setting up FDE on other Linux distributions, this section contains only Alpine-specific knowledge required is understanding [[mkinitfs]].&lt;br /&gt;
&lt;br /&gt;
First of all, the &amp;lt;code&amp;gt;cryptsetup&amp;lt;/code&amp;gt; feature needs to be added to &amp;lt;code&amp;gt;/etc/mkinitfs/mkinitfs.conf&amp;lt;/code&amp;gt;. Additionally, the following kernel parameters are required:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cryptroot&amp;lt;/code&amp;gt; kernel parameter should point to the encrypted block device. &lt;br /&gt;
* &amp;lt;code&amp;gt;cryptdm&amp;lt;/code&amp;gt;: the name that will be given to the device.&lt;br /&gt;
* &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; kernel parameter should point to the mapped block device: &amp;lt;code&amp;gt;/dev/mapper/&amp;lt;name used in cryptdm&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;rootfstype&amp;lt;/code&amp;gt;: the filesystem type of the root partition (e.g.: &amp;lt;code&amp;gt;btrfs&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Those parameters go in &amp;lt;code&amp;gt;GRUB_CMDLINE_LINUX_DEFAULT&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;/etc/default/grub&amp;lt;/code&amp;gt; for grub.&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.archlinux.org/index.php/Dm-crypt dm-crypt on ArchWiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Storage]]&lt;br /&gt;
[[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Realroot</name></author>
	</entry>
</feed>