postmaster root
webmaster root
# Person who should get root's mail
root myname
info@hottunalabs.net myname
myname@mydns.org myname\@hottunalabs.net
myname@hottunalabs.net myname\@hottunalabs.net
#!/sbin/openrc-run
description="WireGuard Quick"
# Change 'wg0' to the name of your configuration file if different
name="wg0"
depend() {
need localmount
need net
# Might also need an explicit dependency on the physical interface if complex networking
}
start() {
ebegin "Starting WireGuard interface ${name}"
wg-quick up ${name}
eend $?
}
stop() {
ebegin "Stopping WireGuard interface ${name}"
wg-quick down ${name}
eend $?
}
#!/sbin/openrc-run
description="WireGuard Quick"
# Change 'wg0' to the name of your configuration file if different
name="wg0"
depend() {
#need localmount
#need net
need dbus
# Might also need an explicit dependency on the physical interface if complex networking
}
start() {
ebegin "Starting WireGuard interface ${name}"
wg-quick up ${name}
eend $?
}
stop() {
ebegin "Stopping WireGuard interface ${name}"
wg-quick down ${name}
eend $?
}
cd /etc/init.d
ln -s wg-quick wg-quick@wg0
rc-update add wg-quick@wg0 default
shorewallもこの方法で起動した方が良いでしょう。
#!/sbin/openrc-run
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-firewall/shorewall/files/shorewall.initd,v 1.4 2013/07/13 14:09:09 constanze Exp $
command=/usr/sbin/shorewall
extra_commands="check clear"
extra_started_commands="refresh reset safe_restart"
depend() {
# need net
provide firewall
after rsyslog
}
start() {
checkpath -d -m 755 /var/lock/subsys
ebegin "Starting shorewall"
$command -f start 1>/dev/null
eend $?
}
stop() {
ebegin "Stopping shorewall"
$command stop 1>/dev/null
eend $?
}
safe_restart() {
ebegin "Safely restarting shorewall"
$command safe-restart 1>/dev/null
eend $?
}
clear() {
# clear will remove all the rules and bring the system to an unfirewalled
# state. (21 Nov 2004 eldad)
ebegin "Clearing all shorewall rules and setting policy to ACCEPT"
$command clear
eend $?
}
reset() {
# reset the packet and byte counters in the firewall
ebegin "Resetting the packet and byte counters in the shorewall"
$command reset
eend $?
}
refresh() {
# refresh the rules involving the broadcast addresses of firewall
# interfaces, the black list, traffic control rules and
# ECN control rules
ebegin "Refreshing shorewall rules"
$command refresh
eend $?
}
check() {
# perform cursory validation of the zones, interfaces, hosts, rules
# and policy files. CAUTION: does not parse and validate the generated
# iptables commands.
ebegin "Checking configuration files"
$command check
eend $?
}
ting system message bus: dbusdbus-daemon[1455]: Failed to start message bus: Could not get UID and GID for username "messagebus"
# groupadd -g 991 messagebus
# useradd -c 'System Message Bus' -u 991 -g messagebus -d '/nonexistent' -s /usr/sbin/nologin messagebus
useradd warning: dbus's uid 991 outside of the UID_MIN 1000 and UID_MAX 60000 range.
#!/sbin/openrc-run
description="Starts the rsyslogd enhanced system logging daemon"
command="/usr/sbin/rsyslogd"
command_args="-n"
supervisor=supervise-daemon
depend() {
provide logger
after bootmisc
}
mkdir /mnt
mount /dev/mapper/root_fs /mnt
mount -o bind /dev /mnt/dev
mount -o bind /sys /mnt/sys
mount -o bind /proc /mnt/proc
chroot /mnt
mount /dev/sda[bootディレクイトリ] /boot
mount /dev/sda1 /boot/efi
このサイトからいくつかディストリビューションの候補があり好きなものをダウンロードできます。muslバージョンのVoid-linuxが魅力的だったのですが、使ってみるとバージョンアップしたFirefoxがセグメントフォールトで使えないということが判明したので候補から除きました。最終的にDevuan with xfce4 DEに決めました。debianじゃないけど使い方がdebianと同じ。違いはsystemdを使っていないこと。自分としてはどちらでも良く安定してパッケージ管理が行き届いていれば良かったので試してみます。
グラフィクスアクセラレーションの鍵となるのはMesaライブラリを動かすPanfrostというドライバーの開発で最下位バージョンのMidgardアーキテクチャー後回しということでいつまで経っても出てこずすっかり忘れていた時、今回の発見でいつの間にか完成していたことに気づきました。以前はOrangePiでPanfrostを弄っていたいた経験があるので、ビルドは難しい範疇になります。それでサイトからダウンロードしたイメージをブートして使えれば、そのまま使ってしまおうということで、今回はDevuan with xfce4 DEを本体にインストールしました。
gunzip xe303c12_dev4_xfce_6.12.20_1882m_btrfs.img.gz
snow# fdisk -l xe303c12_dev4_xfce_6.12.20_1882m_btrfs.img
Disk xe303c12_dev4_xfce_6.12.20_1882m_btrfs.img: 1.84 GiB, 1973420032 bytes, 3854336 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Device Start End Sectors Size Type
xe303c12_dev4_xfce_6.12.20_1882m_btrfs.img1 8192 40959 32768 16M ChromeOS
xe303c12_dev4_xfce_6.12.20_1882m_btrfs.img2 40960 3854302 3813343 1.8G Linux fi
snow# dd if=xe303c12_dev4_xfce_6.12.20_1882m_btrfs.img of=kernel.img bs=512 skip=8192 count=32768
32768+0 records in
32768+0 records out
16777216 bytes (17 MB, 16 MiB) copied, 1.02353 s, 16.4 MB/s
rootパーティションをbtrfsでフォーマットします。この時、UUIDをメモしておきます。
fdisk -l /dev/mmcblk0
mkfs.btrfs /dev/mmcblk0p2
cd /tmp
mkdir root
mount /dev/mmcblk0p2 root
Devuan with xfce4 DEのイメージマウントしてファイルをコピーしします。cpコマンドでファイルの属性を正確にコピーできるか不安ですが、良い方法があれば、たとえばcpioなど使った方が良いでしょう。
snow# mkdir /tmp/img
snow# mount -o loop,offset=$(( 40960 * 512 )) /home/user/Downloads/xe303c12_dev4_xfce_6.12.20_1882m_btrfs.img /mnt/img
snow# cd /tmp/img
snow# ls
bin chrooty etc lib mnt proc run srv tmp var
boot dev home media opt root sbin sys usr
snow# cp -a * ../root
コピーしたrootの/etc/fstabを編集してメモしたUUIDにします。
カーネルを書き込みます。
dd if=kernel.img of=/dev/mmcblk0p1 bs=512
32768+0 records in
32768+0 records out
16777216 bytes (17 MB, 16 MiB) copied, 3.42462 s, 4.9 MB/s
sudo -s
cat pkg_list.txt | while read l; do apt-mark hold $l; echo $l; done
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
Max core profile version: 0.0
Max compat profile version: 2.1
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.0
OpenGL version string: 2.1 Mesa 20.3.5
OpenGL shading language version string: 1.20
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 20.3.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
// Source - https://stackoverflow.com/a
// Posted by edi
// Retrieved 2025-12-10, License - CC BY-SA 3.0
// Declaration of private API
void IOBluetoothPreferenceSetDiscoverableState(int discoverable);
int IOBluetoothPreferenceGetDiscoverableState();
// Usage
// Turn on Discoverability
IOBluetoothPreferenceSetDiscoverableState(1);
// Get current discoverable state
IOBluetoothPreferenceGetDiscoverableState()