Compare commits
65 Commits
92c1acbc81
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
85cdfc8a50 | ||
|
|
624014e561 | ||
|
|
7b437c2d5e | ||
|
|
0829e1e3f4 | ||
|
|
ab17e26575 | ||
|
|
1fddb706a1 | ||
|
|
77f89e4534 | ||
|
|
af2115dfb6 | ||
|
|
1809e5d543 | ||
|
|
c4d456d350 | ||
|
|
e3459d2400 | ||
|
|
c2e501ced0 | ||
|
|
f660f3dd57 | ||
|
|
53da307cc5 | ||
|
|
6c9a2ff39c | ||
|
|
4d9e70bdb4 | ||
|
|
7adf17597f | ||
|
|
7c10f7082b | ||
|
|
921cff6ff3 | ||
|
|
0c50697d29 | ||
|
|
7e6aa558b2 | ||
|
|
2034ddb2f6 | ||
|
|
7b81e5c55e | ||
|
|
92fdc0cda8 | ||
|
|
e5ade45754 | ||
|
|
14f7ca83ca | ||
|
|
1a7c62c200 | ||
|
|
15059fc197 | ||
|
|
72de5ef596 | ||
|
|
870492e4cb | ||
|
|
4f49dd97cd | ||
|
|
9088a1e1b9 | ||
|
|
d1b93b0080 | ||
|
|
fd88ea58f3 | ||
|
|
181be357d1 | ||
|
|
ab9f7452d6 | ||
|
|
c63d161545 | ||
|
|
b34e6012b3 | ||
|
|
0e3f5a3490 | ||
|
|
008fd84a8e | ||
|
|
e2c984d2df | ||
|
|
90ac97ef6b | ||
|
|
ff6e92e279 | ||
|
|
a8c4d51ffd | ||
|
|
8ae56116a0 | ||
|
|
d1776c487e | ||
|
|
7b5408c8c9 | ||
|
|
18139f2922 | ||
|
|
b495fe4ace | ||
|
|
a2b90202fc | ||
|
|
a24b8a51b3 | ||
|
|
c42d6ec7c7 | ||
|
|
98271cdd41 | ||
|
|
cf4a147140 | ||
|
|
6603818525 | ||
|
|
b7f5b681bb | ||
|
|
30bb90a217 | ||
|
|
4fd7e9aef0 | ||
|
|
c69da79a65 | ||
|
|
5bf28b4968 | ||
|
|
50811355de | ||
|
|
393873c30d | ||
|
|
bf6dc8658f | ||
|
|
8cfb259062 | ||
|
|
084a65ca3a |
@@ -1,5 +1,7 @@
|
|||||||
src/assets
|
src/assets
|
||||||
src/distfiles
|
src/distfiles
|
||||||
|
src/static*
|
||||||
|
src/dl
|
||||||
src/favicon.*
|
src/favicon.*
|
||||||
src/gpg.txt
|
src/gpg.txt
|
||||||
src/images
|
src/images
|
||||||
|
|||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,6 +1,9 @@
|
|||||||
src/smokeping
|
src/smokeping
|
||||||
src/paste
|
src/paste
|
||||||
|
src/static
|
||||||
|
src/dl
|
||||||
src/distfiles
|
src/distfiles
|
||||||
.control/*
|
.control/*
|
||||||
.asciidoctor
|
.asciidoctor
|
||||||
www/
|
www/
|
||||||
|
storage/
|
||||||
|
|||||||
10
Makefile
10
Makefile
@@ -19,6 +19,8 @@ PS_FILES != find src -type f -name "*.ps" | sed 's|src/||g'
|
|||||||
PA_FILES != find src -type f -name "*.pa" | sed 's|src/||g'
|
PA_FILES != find src -type f -name "*.pa" | sed 's|src/||g'
|
||||||
PT_FILES != find src -type f -name "*.pt" | sed 's|src/||g'
|
PT_FILES != find src -type f -name "*.pt" | sed 's|src/||g'
|
||||||
|
|
||||||
|
COMMIT_MSG != echo "Update $$(date +"%Y-%m-%d %H:%M:%S")"
|
||||||
|
|
||||||
# put static files and dirs into .control/static-files. Globbing is supported.
|
# put static files and dirs into .control/static-files. Globbing is supported.
|
||||||
STATIC_FILES != cat .control/static-files
|
STATIC_FILES != cat .control/static-files
|
||||||
|
|
||||||
@@ -73,6 +75,11 @@ prepare:
|
|||||||
echo "Mkdir: www"
|
echo "Mkdir: www"
|
||||||
mkdir -p www
|
mkdir -p www
|
||||||
|
|
||||||
|
git-commit:
|
||||||
|
git pull --autostash
|
||||||
|
git add src Makefile
|
||||||
|
git commit -m "$(COMMIT_MSG)" && git push || exit 0
|
||||||
|
|
||||||
copy-static-files: prepare
|
copy-static-files: prepare
|
||||||
rsync -a --partial --delete --no-p --no-o --no-g --out-format="Copy: %f => www/" $(STATIC_FILES) www/
|
rsync -a --partial --delete --no-p --no-o --no-g --out-format="Copy: %f => www/" $(STATIC_FILES) www/
|
||||||
|
|
||||||
@@ -84,12 +91,13 @@ _clean:
|
|||||||
|
|
||||||
install:
|
install:
|
||||||
make -s _install
|
make -s _install
|
||||||
|
make -s git-commit
|
||||||
_install: website
|
_install: website
|
||||||
echo "Fixing Permissions in www/"
|
echo "Fixing Permissions in www/"
|
||||||
doas chown -R sdk:www www
|
doas chown -R sdk:www www
|
||||||
doas chmod -R ugo+Xrw www
|
doas chmod -R ugo+Xrw www
|
||||||
echo "Deploy: www/ => /var/www/htdocs/"
|
echo "Deploy: www/ => /var/www/htdocs/"
|
||||||
cd www && doas rsync -a --partial --delete --exclude "*/cache/*" --out-format="Deploy: %f => /var/www/htdocs/%f" * $(REMOTE)
|
cd www && doas rsync -a -o -g -p --inplace --partial --delete --exclude "*/cache/*" --out-format="Deploy: %f => /var/www/htdocs/%f" * $(REMOTE)
|
||||||
|
|
||||||
|
|
||||||
#### HELPER TARGETS ####
|
#### HELPER TARGETS ####
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -26,6 +26,15 @@ code, pre {
|
|||||||
font-family: fira mono regular;
|
font-family: fira mono regular;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr td:first-child {
|
||||||
|
white-space:nowrap;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
@@ -59,3 +68,7 @@ a {
|
|||||||
border-color: black;
|
border-color: black;
|
||||||
border-style: solid none none none;
|
border-style: solid none none none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.monospace {
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
|||||||
45
src/drafts.ps
Normal file
45
src/drafts.ps
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/ksh
|
||||||
|
|
||||||
|
# chdir to working directory
|
||||||
|
cd src/posts
|
||||||
|
|
||||||
|
cat <<'EOF'
|
||||||
|
<h1>
|
||||||
|
Welcome!
|
||||||
|
</h1>
|
||||||
|
<p>
|
||||||
|
Welcome to my little place on the web. It may not been the pretties
|
||||||
|
you've seen today, but it's all self made.
|
||||||
|
</p>
|
||||||
|
<h2>
|
||||||
|
Posts
|
||||||
|
</h2>
|
||||||
|
<ul>
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# print list
|
||||||
|
ls -r1 *.ps *.pm *.ph *.pa *.pt 2>/dev/null | fgrep '.draft.' | while read line
|
||||||
|
do
|
||||||
|
if [ $(echo "${line##*.}") == "pm" ]
|
||||||
|
then
|
||||||
|
TITLE="$(head -1 "$line" | sed 's/^# //g')"
|
||||||
|
else
|
||||||
|
TITLE="$(echo "${line%%.*}" | tr '_' ' ')"
|
||||||
|
fi
|
||||||
|
URI="posts/${line%.*}.html"
|
||||||
|
|
||||||
|
cat <<EOF
|
||||||
|
<li>
|
||||||
|
<a href="$URI">
|
||||||
|
$TITLE
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
EOF
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
cat <<EOF
|
||||||
|
</ul>
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
BIN
src/favicon.ico
BIN
src/favicon.ico
Binary file not shown.
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 15 KiB |
BIN
src/favicon.png
BIN
src/favicon.png
Binary file not shown.
|
Before Width: | Height: | Size: 350 B After Width: | Height: | Size: 932 B |
@@ -1,5 +1,5 @@
|
|||||||
</article>
|
</article>
|
||||||
<div>-- <br>Proudly made with vim and bsd make.</div>
|
<div><br>-- <br>hacked together with <a href="https://www.vim.org">vim</a> and <a href="https://man.openbsd.org/make">make</a></div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
230
src/gpg.txt
230
src/gpg.txt
@@ -11,112 +11,126 @@ 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
|
||||||
=ZR0P
|
ku30I//7XObUHuq/mprNO2O7OaLCPrXirRbqbXJtdmBl13CkqPYaDwTnmg0G+4sH
|
||||||
|
3ukAEQEAAYkCPAQYAQoAJhYhBMvTxGhktGUX6Pu5D7a8LsVSvkO6BQJfGxZUAhsg
|
||||||
|
BQkGfSIAAAoJELa8LsVSvkO6ap8P+wUmTfv3yUr7Khz4zmuJptPuVKIPrJUkux2R
|
||||||
|
cl+okt3DMxjzcmMBoXmehtXQxFXEyZDTwoFvvNV6nqgrV1zLS3eo8sjECzqJmNcE
|
||||||
|
7lnhk6bgxrDIKBeQKIS915Hm3kOhBlkbj/VTnG12P4Jj5tuRLR7KSaupTBGO2CSY
|
||||||
|
XIwf7/PGzHB5azKno0uLculkTCkpzmcOXRCpP5JGk7YQAmgDgv+3CVciysJxV5Wh
|
||||||
|
tFqNsGkPOyI9M/pYATzTurAHvIvjiiK6JJj+2JyAFLQXwNKTGU6mbYUxCCRaR33C
|
||||||
|
RmOzmgjNJK9U/7NdC6a4+taMneMx93GtS48IYHLqPj+KA+vpqbRFj4aLrr3mYB/+
|
||||||
|
EbM+T9TBc88EiM0JKqwisNb5nINLaFnv7+VHQpXO2hrdHysFsh3PO2bFdo1/FK2x
|
||||||
|
ABJT9JKmHIPq7KTUgPsu0y+eGDeSyB+UC33vM6F8UT2vdYUOTz9F9e4X5dWcFw2a
|
||||||
|
nz0r9dkI9Fvbb3glQNEgaEmXaeheyDdTcBxFD5npbHrvNvrEqKIjSDsDWUiXRsK1
|
||||||
|
pwgbZliUvHYxbxcCTWS5h3LcL8QcGLfWkyJUFPAM2Dq2nMY3ayf1lAQ/OExISgKt
|
||||||
|
n/77zM6XpcV6NGInnI8O//lP4febHZ/17x9Z+E/M1BPrswLuEZK++0R7gTmj7vaV
|
||||||
|
zCmgKolO
|
||||||
|
=AIp+
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
|||||||
@@ -8,13 +8,13 @@
|
|||||||
<body>
|
<body>
|
||||||
<header>
|
<header>
|
||||||
<div class="header-title">
|
<div class="header-title">
|
||||||
<a href="/">codevoid</a>
|
<a href="/">CODEVOID</a>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<div class="header-row">
|
<div class="header-row">
|
||||||
<a class="header-item" href="/distfiles">Distfiles</a>
|
<a class="header-item" href="/distfiles">Distfiles</a>
|
||||||
<a class="header-item" href="/paste">Pastebin</a>
|
<a class="header-item" href="/paste">Pastebin</a>
|
||||||
<a class="header-item" href="/smoke">Smokeping</a>
|
<a class="header-item" target="_new" href="/smokeping">Smokeping</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="header-line"></div>
|
<div class="header-line"></div>
|
||||||
<article>
|
<article>
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M19 18l2 1V3c0-1.1-.9-2-2-2H8.99C7.89 1 7 1.9 7 3h10c1.1 0 2 .9 2 2v13zM15 5H5c-1.1 0-2 .9-2 2v16l7-3 7 3V7c0-1.1-.9-2-2-2z"/></svg>
|
|
||||||
|
Before Width: | Height: | Size: 263 B |
27
src/index.ps
27
src/index.ps
@@ -8,33 +8,42 @@ cat <<'EOF'
|
|||||||
Welcome!
|
Welcome!
|
||||||
</h1>
|
</h1>
|
||||||
<p>
|
<p>
|
||||||
Welcome to my little place on the web. It may not been the pretties
|
Welcome to my little place on the web.
|
||||||
you've seen today, but it's all self made.
|
|
||||||
</p>
|
</p>
|
||||||
<h2>
|
<h2>
|
||||||
Posts
|
Posts
|
||||||
</h2>
|
</h2>
|
||||||
<ul>
|
<table>
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# print list
|
# print list
|
||||||
ls -r1 | while read line
|
ls -r1 *.ps *.pm *.ph *.pa *.pt 2>/dev/null | fgrep -v '.draft.' | while read line
|
||||||
do
|
do
|
||||||
|
echo "<tr>"
|
||||||
|
DATE="$(echo "$line" | cut -d"_" -f1 )"
|
||||||
|
if [ $(echo "${line##*.}") == "pm" ]
|
||||||
|
then
|
||||||
|
TITLE="$(head -1 "$line" | sed 's/^# //g')"
|
||||||
|
else
|
||||||
TITLE="$(echo "${line%%.*}" | tr '_' ' ')"
|
TITLE="$(echo "${line%%.*}" | tr '_' ' ')"
|
||||||
URI="posts/${line%%.*}.html"
|
fi
|
||||||
|
URI="posts/${line%.*}.html"
|
||||||
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
<li>
|
<td>
|
||||||
|
$DATE
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
<a href="$URI">
|
<a href="$URI">
|
||||||
$TITLE
|
$TITLE
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</td>
|
||||||
EOF
|
EOF
|
||||||
|
echo "</tr>"
|
||||||
done
|
done
|
||||||
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
</ul>
|
</table>
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Manage Dotfiles With Git
|
# Manage Dotfiles with Git
|
||||||
|
|
||||||
I'm managing my dotfiles with git. My method serves me well for a few
|
I'm managing my dotfiles with git. My method serves me well for a few
|
||||||
years already and so I think it's time to write it down.
|
years already and so I think it's time to write it down.
|
||||||
@@ -90,3 +90,4 @@ I'm maintaining a "work branch" on top of my "main" (private) branch.
|
|||||||
This work branch even has a different upstream (corporate git repository
|
This work branch even has a different upstream (corporate git repository
|
||||||
at work). But I'm still able to access changes I made to my private git
|
at work). But I'm still able to access changes I made to my private git
|
||||||
repository and merge them as I like (or vise versa).
|
repository and merge them as I like (or vise versa).
|
||||||
|
* 2023-11-06:
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
# LineageOS on Motorola Z2 Force
|
|
||||||
|
|
||||||
Whenever there is a major LineageOS Update, chances are that I forgot
|
|
||||||
the flashing process. So here are the notes.
|
|
||||||
|
|
||||||
Disclaimer: Due to the missing tools to flash from OpenBSD, I use my
|
|
||||||
work computer, which runs windows.
|
|
||||||
|
|
||||||
Required Downloads:
|
|
||||||
* [Android Platform Tools](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) (contains adb and fastboot)
|
|
||||||
* [Motorola Smart Assistant](https://support.lenovo.com/us/en/downloads/ds101291) (contains USB drivers for fastboot)
|
|
||||||
|
|
||||||
Prepare:
|
|
||||||
- Install motorola smart assistant
|
|
||||||
- Extract platform-tools make sure you're in the platform tools
|
|
||||||
directory or that they are in your $PATH.
|
|
||||||
|
|
||||||
Update steps:
|
|
||||||
- p[hone]: Boot into bootloader (power+down)
|
|
||||||
- c[omputer]: fastboot flash boot_a \<lineageos_recovery\>.img
|
|
||||||
- c: fastboot flash boot_b \<lineageos_recovery\>.img
|
|
||||||
- p: Boot into bootloader (power+down) -\> Boot Recovery
|
|
||||||
- p: Factory Reset -\> Wipe data / factory reset + Wipe System
|
|
||||||
- p: Apply update -\> adb sideload
|
|
||||||
- c: adb sideload \<lineageos\>.zip
|
|
||||||
- c: adb sideload \<addons\>.zip
|
|
||||||
- p: Reboot
|
|
||||||
|
|
||||||
Notes:
|
|
||||||
* "adb devices" works without USB drivers
|
|
||||||
* "fastboot devices" shows nothing if USB drivers are not installed
|
|
||||||
* This phone has two boot areas and therefore "fastboot flash boot" will
|
|
||||||
fail. The areas "boot_a" and "boot_b" must be used instead. If "boot_a"
|
|
||||||
and "boot_b" are flashed differently, booting will fail.
|
|
||||||
33
src/posts/2019-10-17_LineageOS-on-Motorola-Z2-Force.pm
Normal file
33
src/posts/2019-10-17_LineageOS-on-Motorola-Z2-Force.pm
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# LineageOS on Motorola Z2 Force
|
||||||
|
|
||||||
|
Whenever there is a major LineageOS Update, chances are that I forgot the flashing process. So here are the notes.
|
||||||
|
|
||||||
|
Disclaimer: Due to the missing tools to flash from OpenBSD, I use my work computer, which runs windows.
|
||||||
|
|
||||||
|
## Required Downloads:
|
||||||
|
|
||||||
|
- [Android Platform Tools](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) (contains adb and fastboot)
|
||||||
|
- [Motorola Smart Assistant](https://support.lenovo.com/us/en/downloads/ds101291) (contains USB drivers for fastboot)
|
||||||
|
|
||||||
|
## Prepare:
|
||||||
|
|
||||||
|
- Install motorola smart assistant
|
||||||
|
- Extract platform-tools make sure you're in the platform tools directory or that they are in your `$PATH`.
|
||||||
|
|
||||||
|
## Update steps:
|
||||||
|
|
||||||
|
- p[hone]: Boot into bootloader (power+down)
|
||||||
|
- c[omputer]: fastboot flash boot_a <lineageos_recovery>.img
|
||||||
|
- c: fastboot flash boot_b <lineageos_recovery>.img
|
||||||
|
- p: Boot into bootloader (power+down) -> Boot Recovery
|
||||||
|
- p: Factory Reset -> Wipe data / factory reset + Wipe System
|
||||||
|
- p: Apply update -> adb sideload
|
||||||
|
- c: adb sideload <lineageos>.zip
|
||||||
|
- c: adb sideload <addons>.zip
|
||||||
|
- p: Reboot
|
||||||
|
|
||||||
|
## Notes:
|
||||||
|
|
||||||
|
- "adb devices" works without USB drivers
|
||||||
|
- "fastboot devices" shows nothing if USB drivers are not installed
|
||||||
|
- This phone has two boot areas and therefore "fastboot flash boot" will fail. The areas "boot_a" and "boot_b" must be used instead. If "boot_a" and "boot_b" are flashed differently, booting will fail.
|
||||||
@@ -8,7 +8,7 @@ However, in other operating systems, there is a global toggle for dark
|
|||||||
mode, which also switches the browser into it. This is not the case on
|
mode, which also switches the browser into it. This is not the case on
|
||||||
linux and unix systems.
|
linux and unix systems.
|
||||||
|
|
||||||
# Chrome / Chromium / Iridium
|
# Chromium based browsers
|
||||||
|
|
||||||
Chrome and Chromium starting with version 73 can be tought to start in
|
Chrome and Chromium starting with version 73 can be tought to start in
|
||||||
dark mode:
|
dark mode:
|
||||||
14
src/posts/2023-10-03_Why_OpenBSD.draft.pm
Normal file
14
src/posts/2023-10-03_Why_OpenBSD.draft.pm
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Why OpenBSD?
|
||||||
|
|
||||||
|
## Where I'm coming from
|
||||||
|
|
||||||
|
I'm basically left the Windows Ecosystem after Windows 95 and moved to Debian Linux 3.0.
|
||||||
|
I left Debian Linux, when they switched to systemd, but this was just the final straw to a system that gets more and more bloated. I then moved to FreeBSD.
|
||||||
|
I felt at home at FreeBSD for a while until I realized how broken many concepts are and that it's bascially impossible to contribute via their bug tracker.
|
||||||
|
Then, after some ranting about FreeBSD on Github, an OpenBSD developer asked me to check out OpenBSD and how they do things.
|
||||||
|
|
||||||
|
One day, I did. And never looked back.
|
||||||
|
|
||||||
|
## Why is OpenBSD right for me
|
||||||
|
|
||||||
|
OpenBSD is an opinionated system. Some things work a certain way and they are not supposed to be changed.
|
||||||
241
src/posts/2023-11-06_OpenBSD_Install_Guide.draft.pm
Normal file
241
src/posts/2023-11-06_OpenBSD_Install_Guide.draft.pm
Normal file
@@ -0,0 +1,241 @@
|
|||||||
|
# OpenBSD Install Guide
|
||||||
|
|
||||||
|
Let's walk through an OpenBSD Installation, shall we?
|
||||||
|
|
||||||
|
## Download
|
||||||
|
|
||||||
|
Let's quikly hop over to https://www.openbsd.org/faq/faq4.html#Download (or openbsd.org -> Download) and grab the miniroot74.img. Then `dd` it to an USB stick.
|
||||||
|
|
||||||
|
It's also assumed that you have network access, using an ethernet cable.
|
||||||
|
|
||||||
|
After starting from the USB stick, you're greeted with the installer prompt.
|
||||||
|
|
||||||
|
```
|
||||||
|
Welcome to the OpenBSD/amd64 7.4 installation program.
|
||||||
|
(I)nstall, (U)pgrade, (A)utoinstall or (S)hell? I
|
||||||
|
```
|
||||||
|
|
||||||
|
The right answer her is "I"
|
||||||
|
|
||||||
|
Next, you will see this little text:
|
||||||
|
|
||||||
|
```
|
||||||
|
At any prompt except password prompts you can escape to a shell by
|
||||||
|
typing '!'. Default answers are shown in []'s and are selected by
|
||||||
|
pressing RETURN. You can exit this program at any time by pressing
|
||||||
|
Control-C, but this can leave your system in an inconsistent state.
|
||||||
|
```
|
||||||
|
|
||||||
|
People tend to not read it. So let me spell it out again: On most questions in the installer, you can enter "!" to get to a shell. When you quit the shell, the installer continues.
|
||||||
|
|
||||||
|
```
|
||||||
|
Choose your keyboard layout ('?' or 'L' for list) [default] de
|
||||||
|
```
|
||||||
|
|
||||||
|
The default is US querty on the amd64 platform. So default doesn't mean autodetect. You can display the list of available layouts with L or ?. I have a german keyboard, so I enter "de" here.
|
||||||
|
|
||||||
|
```
|
||||||
|
System hostname? (short form, e.g. 'foo') puffy
|
||||||
|
```
|
||||||
|
|
||||||
|
Well, my computer shall be called by the name "puffy". So I enter that.
|
||||||
|
|
||||||
|
```
|
||||||
|
Available network interfaces are: re0 iwx0 vlan0.
|
||||||
|
Network interface to configure? (name, lladdr, '?', or 'done') [re0]
|
||||||
|
```
|
||||||
|
|
||||||
|
This can be a tricky one for first timers. Ideally you can research the device names on another device. They have manpages (without the number) so figure out on https://man.openbsd.org/re.4 what kind of device what it is.
|
||||||
|
|
||||||
|
If you don't have that option, you can make use of the "!" feature to look at the boot message again and see if the devices come with a meaningful description.
|
||||||
|
|
||||||
|
```
|
||||||
|
Network interface to configure? (name, lladdr, '?', or 'done') [re0] !
|
||||||
|
Type 'exit' to return to install.
|
||||||
|
puffy #
|
||||||
|
puffy# dmesg | grep ^iwx0
|
||||||
|
iwx0 at pci3 dev 0 function 0 "Intel Wi-Fi 6 AX200" rev 0x1a, msix
|
||||||
|
puffy# dmesg | grep ^re0
|
||||||
|
re0 at pci2 dev 0 function 0 "Realtek 8168" rev 0x0e: RTL8168EP/8111EP (0x5000), msi, address 8c:8c:aa:d7:23:f1
|
||||||
|
puffy# exit
|
||||||
|
Network interface to configure? (name, lladdr, '?', or 'done') [re0]
|
||||||
|
```
|
||||||
|
|
||||||
|
Now I have an idea what these devices are. Iwx0 is my wireless device. However, I can't use it yet, because it needs a firmware which is not available at install time. You can use wifi to set up OpenBSD, but you need a wifi adapter that works without firmware. I know that [run(4)](https://man.openbsd.org/run.4) and [urtwn(4)](https://man.openbsd.org/urtwn.4) work. The installer will list them accordingly as run0 and urtwn0.
|
||||||
|
|
||||||
|
Therefore we go with the ethernet device, which is re0 in this case. The suggestion in square brackets is what I use, so I don't need to enter it again. Just slapping enter here.
|
||||||
|
|
||||||
|
```
|
||||||
|
IPv4 address for re0? (or 'autoconf' or 'none') [autoconf]
|
||||||
|
Using DNS nameservers at 192.168.1.1
|
||||||
|
Using DNS domainname home.codevoid.de
|
||||||
|
```
|
||||||
|
|
||||||
|
My home network runs with DHCP, so IPs are handed out by my router. That's another slap on enter.
|
||||||
|
If your dhcp server does not hand out a domain name, you will get asked for it. If you don't know it, just go with the default. You can always change it later.
|
||||||
|
|
||||||
|
```
|
||||||
|
IPv6 address for re0? (or 'autoconf' or 'none') [none]
|
||||||
|
```
|
||||||
|
|
||||||
|
The next question is regarding IPv6... and we don't need that for the installation right now. If you need it, enter "autoconf". For me, ist's yet another slap on enter.
|
||||||
|
|
||||||
|
```
|
||||||
|
Network interface to configure? (name, lladdr, '?', or 'done') [done]
|
||||||
|
```
|
||||||
|
|
||||||
|
We know this question already. It's repeated in case we want to configure another device. The default has switched to "done", which means we're done configuring devices. Slap. On. Enter.
|
||||||
|
|
||||||
|
```
|
||||||
|
Password for root account? (will not echo)
|
||||||
|
Password for root account? (again)
|
||||||
|
```
|
||||||
|
|
||||||
|
Enter your root password twice + enter.
|
||||||
|
|
||||||
|
```
|
||||||
|
Start sshd(8) by default? [yes]
|
||||||
|
```
|
||||||
|
|
||||||
|
Aaand yes. Enter.
|
||||||
|
|
||||||
|
```
|
||||||
|
Setup a user? (enter a lower-case loginname, or 'no') [no]
|
||||||
|
```
|
||||||
|
|
||||||
|
I setup my system user here. Please note that this is not a yes/no question. It's a no/username question.
|
||||||
|
|
||||||
|
```
|
||||||
|
Setup a user? (enter a lower-case loginname, or 'no') [no] sdk
|
||||||
|
Full name for user sdk? [sdk] Stefan
|
||||||
|
Password for user sdk? (will not echo)
|
||||||
|
Password for user sdk? (again)
|
||||||
|
```
|
||||||
|
|
||||||
|
Enter all the things...
|
||||||
|
|
||||||
|
```
|
||||||
|
WARNING: root is targeted by password guessing attacks, pubkeys are safer.
|
||||||
|
Allow root ssh login? (yes, no, prohibit-password) [no]
|
||||||
|
```
|
||||||
|
|
||||||
|
Remote ssh logons root are _never_ a good idea. So the only sane answers here are "no" and "prohibit-password". I'm going with the default here. Slap.
|
||||||
|
|
||||||
|
```
|
||||||
|
Available disks are: sd0 sd1.
|
||||||
|
Which disk is the root disk? ('?' for details) [sd0]
|
||||||
|
```
|
||||||
|
|
||||||
|
On which disk do we want to install OpenBSD? The default here is just the first available disk and this might be wrong. Fortunately, we don't need to do the "!"-shell dance on this question. A simple "?" shows a list of installed disks with description.
|
||||||
|
|
||||||
|
```
|
||||||
|
Which disk is the root disk? ('?' for details) [sd0] ?
|
||||||
|
sd0: NVMe, Samsung SSD 980, 3B2Q (1863.0G)
|
||||||
|
sd1: Lexar, USB Flash Drive, 1100 (16.0G)
|
||||||
|
Available disks are: sd0 sd1.
|
||||||
|
Which disk is the root disk? ('?' for details) [sd0]
|
||||||
|
```
|
||||||
|
|
||||||
|
So, yeah, sd0 looks right. And ... enter, slap.
|
||||||
|
|
||||||
|
```
|
||||||
|
Encrypt the root disk with a (p)assphrase or (k)eydisk? [no] p
|
||||||
|
```
|
||||||
|
|
||||||
|
Here we can go with no encryption "no". Or we can answer "k" if we have a keydisk prepared. The installer doesn't help with that (yet?). So I'm going with a traditional password here. "p", slap.
|
||||||
|
|
||||||
|
```
|
||||||
|
Configuring the crypto chunk sd0...
|
||||||
|
|
||||||
|
Disk: sd0 geometry: 522/255/63 [8388608 Sectors]
|
||||||
|
Offset: 0 Signature: 0xAA55
|
||||||
|
Starting Ending LBA Info:
|
||||||
|
#: id C H S - C H S [ start: size ]
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
0: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused
|
||||||
|
1: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused
|
||||||
|
2: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused
|
||||||
|
*3: A6 0 1 2 - 522 42 32 [ 64: 8388544 ] OpenBSD
|
||||||
|
Use (W)hole disk MBR, whole disk (G)PT, (O)penBSD area or (E)dit? [OpenBSD] W
|
||||||
|
```
|
||||||
|
|
||||||
|
This screen will look differnt for you the partition layout on the disk "right now".
|
||||||
|
|
||||||
|
The installer looks for an "OpenBSD" typed partition. If you have one already, it suggests to use it.
|
||||||
|
|
||||||
|
You can also choose "E", which is start [fdisk(1)](https://man.openbsd.org/fdisk.1) and let's you configure the partitions and create an OpenBSD partition somewhere, so the installer can continue.
|
||||||
|
|
||||||
|
Most people would tell the installer to use the whole disk. The two options "W" and "G" are using the whole disk. Choose "W" for BIOS based systems and "G" for UEFI based system.
|
||||||
|
|
||||||
|
I'm using an older computer, so my choice is "W".
|
||||||
|
|
||||||
|
```
|
||||||
|
Setting OpenBSD MBR partition to whole sd0...done.
|
||||||
|
New passphrase:
|
||||||
|
Re-type passphrase:
|
||||||
|
sd2 at scsibus2 targ 1 lun 0: <OPENBSD, SR CRYPTO, 006>
|
||||||
|
sd2: 4095MB, 512 bytes/sector, 8388016 sectors
|
||||||
|
|
||||||
|
Configuring the root disk sd2...
|
||||||
|
|
||||||
|
No valid MBR or GPT.
|
||||||
|
Use (W)hole disk MBR, whole disk (G)PT or (E)dit? [whole]
|
||||||
|
```
|
||||||
|
|
||||||
|
I said I wanted the disk encrypted, so now is the time to enter the password twice and watch the system configuring the encrypted loop device.
|
||||||
|
|
||||||
|
But... now it asks the same question again - why?
|
||||||
|
|
||||||
|
Encryption on OpenBSD works using crypto device. This means /dev/sd0 is now encrypted and the data on this device makes no sense. But there is a driver in place, that can read this mess and decrypt it. This driver provides a new device (sd2 in this case), which is used from the system from now on.
|
||||||
|
|
||||||
|
So we have the choice again for the encrypted volume. How do we want to partition it?
|
||||||
|
|
||||||
|
To my knowledge the only answer here can be "whole". If anyone knows a usecase for the other options - please tell me.
|
||||||
|
|
||||||
|
```
|
||||||
|
Setting OpenBSD MBR partition to whole sd2...done.
|
||||||
|
The auto-allocated layout for sd2 is:
|
||||||
|
# size offset fstype [fsize bsize cpg]
|
||||||
|
a: 883.0M 64 4.2BSD 2048 16384 1 # /
|
||||||
|
b: 246.0M 1808384 swap
|
||||||
|
c: 4095.7M 0 unused
|
||||||
|
d: 2594.5M 2312128 4.2BSD 2048 16384 1 # /usr
|
||||||
|
e: 372.2M 7625728 4.2BSD 2048 16384 1 # /home
|
||||||
|
Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a]
|
||||||
|
```
|
||||||
|
|
||||||
|
TODO: slices.
|
||||||
|
|
||||||
|
```
|
||||||
|
/dev/rsd2a: 883.0MB in 1808320 sectors of 512 bytes
|
||||||
|
5 cylinder groups of 202.50MB, 12960 blocks, 25920 inodes each
|
||||||
|
newfs: reduced number of fragments per cylinder group from 47640 to 47256 to enlarge last cylinder group
|
||||||
|
/dev/rsd2e: 372.2MB in 762272 sectors of 512 bytes
|
||||||
|
5 cylinder groups of 92.30MB, 5907 blocks, 11840 inodes each
|
||||||
|
/dev/rsd2d: 2594.5MB in 5313600 sectors of 512 bytes
|
||||||
|
13 cylinder groups of 202.50MB, 12960 blocks, 25920 inodes each
|
||||||
|
Available disks are: sd1.
|
||||||
|
Which disk do you wish to initialize? (or 'done') [done]
|
||||||
|
```
|
||||||
|
|
||||||
|
TODO: slap
|
||||||
|
|
||||||
|
```
|
||||||
|
/dev/sd2a (9c585400ea3f9907.a) on /mnt type ffs (rw, asynchronous, local)
|
||||||
|
/dev/sd2e (9c585400ea3f9907.e) on /mnt/home type ffs (rw, asynchronous, local, nodev, nosuid)
|
||||||
|
/dev/sd2d (9c585400ea3f9907.d) on /mnt/usr type ffs (rw, asynchronous, local, nodev)
|
||||||
|
|
||||||
|
Let's install the sets!
|
||||||
|
Location of sets? (disk http nfs or 'done') [http]
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
HTTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none]
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
HTTP Server? (hostname or 'done') ftp.hostserver.de
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
78
src/posts/2023-11-06_OpenBSD_base_and_package_management.pm
Normal file
78
src/posts/2023-11-06_OpenBSD_base_and_package_management.pm
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
# OpenBSD: base and package management
|
||||||
|
|
||||||
|
Note, each of the commands comes with a man page, which I encourage you to read. This post is merely to get you started. Also note, that there is [afterboot(8)](https://man.openbsd.org/afterboot).
|
||||||
|
|
||||||
|
## Base System
|
||||||
|
|
||||||
|
### Upgrade OpenBSD to the next version (will reboot)
|
||||||
|
|
||||||
|
```
|
||||||
|
# sysupgrade
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update base system configuration files after an OpenBSD upgrade
|
||||||
|
|
||||||
|
```
|
||||||
|
# sysmerge
|
||||||
|
```
|
||||||
|
|
||||||
|
### Install security updates for the base system
|
||||||
|
|
||||||
|
```
|
||||||
|
# syspatch
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update firmware
|
||||||
|
|
||||||
|
This does not need to be run manually. It's only relevant when you install hardware which needs a firmware and which was not present during the installation or the last upgrade.
|
||||||
|
|
||||||
|
```
|
||||||
|
# fw_update
|
||||||
|
```
|
||||||
|
|
||||||
|
## Add On Package System
|
||||||
|
|
||||||
|
### Search for a package
|
||||||
|
|
||||||
|
```
|
||||||
|
# pkg_info -Q xfce
|
||||||
|
```
|
||||||
|
|
||||||
|
### Install a package
|
||||||
|
|
||||||
|
```
|
||||||
|
# pkg_add xfce
|
||||||
|
```
|
||||||
|
|
||||||
|
### Uninstall a package
|
||||||
|
|
||||||
|
```
|
||||||
|
# pkg_delete xfce
|
||||||
|
# pkg_delete -c xfce # also remove configuration
|
||||||
|
```
|
||||||
|
|
||||||
|
### Deinstall leftover dependencies
|
||||||
|
|
||||||
|
```
|
||||||
|
# pkg_delete -a
|
||||||
|
# pkg_delete -ac # also remove configuration
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update packages
|
||||||
|
|
||||||
|
```
|
||||||
|
# pkg_add -u
|
||||||
|
```
|
||||||
|
|
||||||
|
### Check/repair package database
|
||||||
|
|
||||||
|
This command is only relevant if you see errors during `pkg_add`. This can happen if your system crashes while updating, which may get the package database into a weird state. If you don't know the answers to pkg_checks questions, deinstalling and reinstalling the package in question usually solves the problem.
|
||||||
|
|
||||||
|
```
|
||||||
|
# pkg_check
|
||||||
|
```
|
||||||
|
|
||||||
|
### Deinstall all packages on the system
|
||||||
|
```
|
||||||
|
# pkg_delete -X
|
||||||
|
```
|
||||||
146
src/posts/2023-11-06_OpenBSD_simple_laptop_network_setup.pm
Normal file
146
src/posts/2023-11-06_OpenBSD_simple_laptop_network_setup.pm
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
# OpenBSD: a simple laptop network setup (with dhcp)
|
||||||
|
|
||||||
|
Note, each of the commands comes with a man page, which I encourage you to read. This post is merely to get you started.
|
||||||
|
|
||||||
|
## Manuel Ethernet Device Setup
|
||||||
|
|
||||||
|
List available network devices and configuration
|
||||||
|
|
||||||
|
```
|
||||||
|
# ifconfig
|
||||||
|
```
|
||||||
|
|
||||||
|
Typical ethernet devices are `em0`, `bge0`, `re0`. Look at the manpage of [em(4)](https://man.openbsd.org/em.4), [bge(4)](https://man.openbsd.org/bge.4) or any other device you might find to learn about what it is.
|
||||||
|
|
||||||
|
You can configure these devices with
|
||||||
|
|
||||||
|
```
|
||||||
|
# ifconfig <device> <option>
|
||||||
|
```
|
||||||
|
|
||||||
|
Read [ifconfig(8)](https://man.openbsd.org/ifconfig.8) to learn about available options.
|
||||||
|
|
||||||
|
In a typical home network with dhcp, you would type something like this
|
||||||
|
|
||||||
|
```
|
||||||
|
# ifconfig em0 inet autoconf
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to add IPv6 connectivity do the same with "inet6"
|
||||||
|
|
||||||
|
```
|
||||||
|
# ifconfig em0 inet6 autoconf
|
||||||
|
```
|
||||||
|
|
||||||
|
As a last step, you need to activate the device
|
||||||
|
|
||||||
|
```
|
||||||
|
# ifconfig em0 up
|
||||||
|
```
|
||||||
|
|
||||||
|
## Manuel Wireless Device Setup
|
||||||
|
|
||||||
|
Typical wireless devices are `run0`, `iwx0`, `iwn0`, `iwm0`. They have manpages as well look up the device name without number.
|
||||||
|
|
||||||
|
You connect a wireless device to your network without
|
||||||
|
|
||||||
|
```
|
||||||
|
# ifconfig iwx0 nwid MyNetworkSSID wpakey MyWifiPassword
|
||||||
|
```
|
||||||
|
|
||||||
|
Once this is done, the configuration can continue like with an ethernet device
|
||||||
|
|
||||||
|
```
|
||||||
|
# ifconfig iwx0 inet autoconf
|
||||||
|
# ifconfig iwx0 inet6 autoconf # for IPv6
|
||||||
|
# ifconfig iwx0 up
|
||||||
|
```
|
||||||
|
|
||||||
|
To remove the IPv6 configuration from an interface, you can do
|
||||||
|
|
||||||
|
```
|
||||||
|
# ifconfig iwx0 -inet6
|
||||||
|
```
|
||||||
|
|
||||||
|
Most confgurations can be removed this way.
|
||||||
|
|
||||||
|
|
||||||
|
## Setting the configuration active without restarting
|
||||||
|
|
||||||
|
If you changed the `/etc/hostname.*` files, you can reconfigure the network with the netstart shell script
|
||||||
|
|
||||||
|
```
|
||||||
|
# sh /etc/netstart
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that this script adds the confguration to devices as specified. If you remove a `/etc/hostname.*` file, netstart will not know about this device and ignore it.
|
||||||
|
|
||||||
|
|
||||||
|
## Making the configuration permanent
|
||||||
|
|
||||||
|
The concept of storing the network device setup is decribed in the manpage [hostname.if(5)](https://man.openbsd.org/hostname.if.5).
|
||||||
|
|
||||||
|
A typical configuration for a wireless device would look like this
|
||||||
|
|
||||||
|
```
|
||||||
|
# cat /etc/hostname.iwx0
|
||||||
|
join MyHomeNetworkSSID wpakey MyHomeWifiPassword
|
||||||
|
join MyWorkNetworkSSID wpakey MyWorkWifiPassword
|
||||||
|
inet autoconf
|
||||||
|
inet6 autoconf
|
||||||
|
up
|
||||||
|
```
|
||||||
|
|
||||||
|
You may recognise these commands from the manual configuration. The file is named `hostname.<device>` and it basically contains the ifconfig commands that you can also add after `ifconfig <device>`.
|
||||||
|
|
||||||
|
Note that I added two `join` commands here instead of `nwid`. The difference is, that `nwid` connects to exactly one wifi network, while `join` builds up a list of multiple networks that are tried in order. If you only have one network to connect to, it makes no difference if you use "nwid" or "join".
|
||||||
|
|
||||||
|
You can clear the join list just like you can remove any other configuration from a device.
|
||||||
|
|
||||||
|
```
|
||||||
|
# ifconfig iwx0 -join
|
||||||
|
```
|
||||||
|
|
||||||
|
This `/etc/hostname.<device>` based configuration makes it easy to copy configuration to another device
|
||||||
|
|
||||||
|
```
|
||||||
|
# cp /etc/hostname.iwx0 /etc/hostname.run0
|
||||||
|
```
|
||||||
|
|
||||||
|
## Switching between Wifi and Ethernet without interrupting the connection
|
||||||
|
|
||||||
|
You can create a [trunk(4)](https://man.openbsd.org/trunk.4) device, which internally switches between your ethernet and your wireless device.
|
||||||
|
|
||||||
|
For this to work, we need three configurations and you should be able to understand most of it by now.
|
||||||
|
|
||||||
|
```
|
||||||
|
# cat /etc/hostname.em0
|
||||||
|
up
|
||||||
|
|
||||||
|
cat /etc/hostname.iwx0
|
||||||
|
join MyHomeNetworkSSID wpakey MyHomeWifiPassword
|
||||||
|
join MyWorkNetworkSSID wpakey MyWorkWifiPassword
|
||||||
|
up
|
||||||
|
|
||||||
|
# cat /etc/hostname.trunk0
|
||||||
|
trunkproto failover
|
||||||
|
trunkport em0
|
||||||
|
trunkport iwx0
|
||||||
|
inet autoconf
|
||||||
|
inet6 autoconf
|
||||||
|
up
|
||||||
|
```
|
||||||
|
|
||||||
|
In this setup, we add the configuration necessary for the device to become operational to the device configuration. All the network configuration moves to the new device trunk0, which we have created.
|
||||||
|
|
||||||
|
About the special tunk configurations
|
||||||
|
|
||||||
|
```
|
||||||
|
trunkproto failover
|
||||||
|
trunkport em0
|
||||||
|
trunkport iwx0
|
||||||
|
```
|
||||||
|
|
||||||
|
The fist line means that we do a failover. This means we use the fist device if we can. If the first device (master device) is down, then we use the second one.
|
||||||
|
|
||||||
|
In this concrete example it means, if a network cable is plugged in to `em0`, we use this device. If the network cable is pulled, we simply continue with the wireless device `iwx0`.
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
# OpenBSD sndio and mutiple devices
|
||||||
|
|
||||||
|
## Automatic audio device switch
|
||||||
|
|
||||||
|
OpenBSD automatically detects the system audio device. But often this is not enough. I want to plug in a USB headset and audio should automatically switch to it.
|
||||||
|
|
||||||
|
You can start sndiod with additional `-F` flags to define additional devices, which are switched to when they appear.
|
||||||
|
|
||||||
|
```
|
||||||
|
# sndiod -f rsnd/0 -F rsnd/1 -F rsnd/2 -F rsnd/3
|
||||||
|
```
|
||||||
|
|
||||||
|
You can set these flags permanently with:
|
||||||
|
|
||||||
|
```
|
||||||
|
# rcctl set sndiod flags -f rsnd/0 -F rsnd/1 -F rsnd/2 -F rsnd/3
|
||||||
|
```
|
||||||
|
|
||||||
|
This configuration allows up to 3 additional USB devices to be connected and sndiod will switch to the last one connected.
|
||||||
|
|
||||||
|
If you have multiple devices connected and want to switch to a specific one, you can do so with:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ sndioctl server.device=0
|
||||||
|
$ sndioctl server.device=1
|
||||||
|
$ sndioctl server.device=2
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
## Record from one device, but play back on another...
|
||||||
|
|
||||||
|
Let's say I want to connect USB microphone, but I want to to play back sound on another device.
|
||||||
|
|
||||||
|
This works by setting the environment variables `AUDIORECDEVICE` and `AUDIOPLAYDEVICE` accordingly.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```
|
||||||
|
export AUDIOPLAYDEVICE=snd/0
|
||||||
|
export AUDIORECDEVICE=snd/1
|
||||||
|
```
|
||||||
|
|
||||||
|
However, sndiod expects every device to play and record. So the above example would work to play on the system, but record on a headset.
|
||||||
|
|
||||||
|
If the devices are more limited, the sndio flags need to be more specific, like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
# rcctl set sndiod flags -f rsnd/0 -m play -s play -f rsnd/1 -m rec -s rec
|
||||||
|
# rcctl restart sndiod
|
||||||
|
$ export AUDIOPLAYDEVICE=snd/0.play
|
||||||
|
$ export AUDIORECDEVICE=snd/1.rec
|
||||||
|
```
|
||||||
|
|
||||||
|
This creates a "play" sub device on the first audio device (system audio). And a sub device "rec" on the first USB device. The default is "play,rec", which would not work on my USB microphone. The -m switch describes what the device can do. The -s switch defines the sub device name.
|
||||||
|
|
||||||
|
And now... everything works as expected.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ aucat -o test.wav # record from microphone
|
||||||
|
$ aucat -i test.wav # play on system speaker
|
||||||
|
```
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<h1>Smoke Ping</h1>
|
|
||||||
<ul>
|
|
||||||
<li>The shadow lines (up and down) are showing the spectrum of the response times (latency).</li>
|
|
||||||
<li>The dot position shows the average response time.</li>
|
|
||||||
<li>The color of the dot shows the package loss (how many of the 20 requests got lost).</li>
|
|
||||||
</ul>
|
|
||||||
<iframe width="100%" height="200%" frameborder=0 src="/smokeping/?target=Network"></iframe>
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user