Compare commits

...

62 Commits

Author SHA1 Message Date
c0dev0id
85cdfc8a50 Update 2025-07-23 10:26:24 2025-07-23 10:26:27 +02:00
c0dev0id
624014e561 Update 2025-07-21 15:12:30 2025-07-21 15:12:32 +02:00
c0dev0id
7b437c2d5e Update 2025-07-21 15:11:29 2025-07-21 15:11:36 +02:00
c0dev0id
0829e1e3f4 Update 2025-07-21 11:56:38 2025-07-21 11:56:40 +02:00
c0dev0id
ab17e26575 Update 2025-07-17 20:53:41 2025-07-17 20:53:43 +02:00
c0dev0id
1fddb706a1 Update 2025-07-17 20:45:09 2025-07-17 20:45:10 +02:00
c0dev0id
77f89e4534 Update 2025-07-16 13:41:05 2025-07-16 13:41:07 +02:00
c0dev0id
af2115dfb6 Update 2023-12-13 11:33:27 2023-12-13 11:33:28 +01:00
c0dev0id
1809e5d543 Update 2023-11-14 11:53:10 2023-11-14 11:53:11 +01:00
c0dev0id
c4d456d350 Update 2023-11-14 11:51:36 2023-11-14 11:51:38 +01:00
c0dev0id
e3459d2400 Update 2023-11-14 11:50:02 2023-11-14 11:50:04 +01:00
c0dev0id
c2e501ced0 Update 2023-11-14 11:49:11 2023-11-14 11:49:13 +01:00
c0dev0id
f660f3dd57 Update 2023-11-14 11:47:52 2023-11-14 11:47:53 +01:00
c0dev0id
53da307cc5 Update 2023-11-14 11:46:23 2023-11-14 11:46:25 +01:00
c0dev0id
6c9a2ff39c Update 2023-11-10 15:00:55 2023-11-10 15:00:57 +01:00
c0dev0id
4d9e70bdb4 Update 2023-11-10 14:58:16 2023-11-10 14:58:19 +01:00
c0dev0id
7adf17597f Update 2023-11-08 15:36:17 2023-11-08 15:36:19 +01:00
c0dev0id
7c10f7082b Update 2023-11-08 15:18:46 2023-11-08 15:18:48 +01:00
c0dev0id
921cff6ff3 Update 2023-11-08 15:17:55 2023-11-08 15:17:56 +01:00
c0dev0id
0c50697d29 Update 2023-11-08 15:16:11 2023-11-08 15:16:12 +01:00
c0dev0id
7e6aa558b2 Update 2023-11-08 15:15:43 2023-11-08 15:15:44 +01:00
c0dev0id
2034ddb2f6 Update 2023-11-08 15:15:02 2023-11-08 15:15:04 +01:00
c0dev0id
7b81e5c55e Update 2023-11-08 15:14:04 2023-11-08 15:14:05 +01:00
c0dev0id
92fdc0cda8 Update 2023-11-08 15:13:03 2023-11-08 15:13:05 +01:00
c0dev0id
e5ade45754 Update 2023-11-08 14:01:49 2023-11-08 14:01:50 +01:00
c0dev0id
14f7ca83ca Update 2023-11-08 12:54:03 2023-11-08 12:54:05 +01:00
c0dev0id
1a7c62c200 Update 2023-11-08 12:53:04 2023-11-08 12:53:06 +01:00
c0dev0id
15059fc197 Update 2023-11-08 12:52:41 2023-11-08 12:52:43 +01:00
c0dev0id
72de5ef596 Update 2023-11-08 11:27:16 2023-11-08 11:27:18 +01:00
c0dev0id
870492e4cb Update 2023-11-08 11:26:05 2023-11-08 11:26:07 +01:00
c0dev0id
4f49dd97cd Update 2023-11-08 11:19:30 2023-11-08 11:19:32 +01:00
c0dev0id
9088a1e1b9 Update 2023-11-08 11:19:02 2023-11-08 11:19:04 +01:00
c0dev0id
d1b93b0080 Update 2023-11-08 11:16:01 2023-11-08 11:16:03 +01:00
c0dev0id
fd88ea58f3 Update 2023-11-08 11:15:19 2023-11-08 11:15:21 +01:00
c0dev0id
181be357d1 Update 2023-11-08 11:13:39 2023-11-08 11:13:41 +01:00
c0dev0id
ab9f7452d6 Update 2023-11-08 11:13:12 2023-11-08 11:13:13 +01:00
c0dev0id
c63d161545 Update 2023-11-08 11:11:00 2023-11-08 11:11:02 +01:00
c0dev0id
b34e6012b3 Update 2023-11-08 11:09:45 2023-11-08 11:09:46 +01:00
c0dev0id
0e3f5a3490 Update 2023-11-08 11:09:11 2023-11-08 11:09:13 +01:00
c0dev0id
008fd84a8e Update 2023-11-08 11:06:38 2023-11-08 11:06:40 +01:00
c0dev0id
e2c984d2df Update 2023-11-06 13:21:38 2023-11-06 13:21:39 +01:00
c0dev0id
90ac97ef6b Update 2023-11-06 13:21:19 2023-11-06 13:21:20 +01:00
c0dev0id
ff6e92e279 Update 2023-11-06 11:38:11 2023-11-06 11:38:13 +01:00
c0dev0id
a8c4d51ffd Update 2023-11-06 11:26:38 2023-11-06 11:26:40 +01:00
c0dev0id
8ae56116a0 Update 2023-11-06 11:25:00 2023-11-06 11:25:02 +01:00
c0dev0id
d1776c487e Update 2023-11-06 11:24:10 2023-11-06 11:24:12 +01:00
c0dev0id
7b5408c8c9 Update 2023-11-06 11:20:36 2023-11-06 11:20:38 +01:00
c0dev0id
18139f2922 Update 2023-11-06 08:21:13 2023-11-06 08:21:15 +01:00
c0dev0id
b495fe4ace Update 2023-11-06 08:19:53 2023-11-06 08:19:55 +01:00
c0dev0id
a2b90202fc Update 2023-11-06 08:09:00 2023-11-06 08:09:02 +01:00
c0dev0id
a24b8a51b3 Update 2023-11-06 08:08:29 2023-11-06 08:08:30 +01:00
c0dev0id
c42d6ec7c7 Update 2023-11-06 08:04:38 2023-11-06 08:04:39 +01:00
c0dev0id
98271cdd41 Update 2023-11-03 13:49:16 2023-11-03 13:49:18 +01:00
c0dev0id
cf4a147140 Update 2023-11-03 13:48:17 2023-11-03 13:48:18 +01:00
c0dev0id
6603818525 Update 2023-11-03 13:39:21 2023-11-03 13:39:22 +01:00
c0dev0id
b7f5b681bb Update 2023-11-03 13:39:04 2023-11-03 13:39:05 +01:00
c0dev0id
30bb90a217 Update 2023-11-03 13:38:47 2023-11-03 13:38:48 +01:00
c0dev0id
4fd7e9aef0 Update 2023-11-03 13:37:55 2023-11-03 13:37:57 +01:00
c0dev0id
c69da79a65 Update 2023-11-03 13:37:28 2023-11-03 13:37:30 +01:00
c0dev0id
5bf28b4968 Update 2023-11-03 13:36:37 2023-11-03 13:36:38 +01:00
c0dev0id
50811355de Update 2023-11-02 21:48:11 2023-11-02 21:48:13 +01:00
c0dev0id
393873c30d Update 2023-11-02 21:47:40 2023-11-02 21:47:41 +01:00
23 changed files with 778 additions and 164 deletions

View File

@@ -1,5 +1,7 @@
src/assets
src/distfiles
src/static*
src/dl
src/favicon.*
src/gpg.txt
src/images

3
.gitignore vendored
View File

@@ -1,6 +1,9 @@
src/smokeping
src/paste
src/static
src/dl
src/distfiles
.control/*
.asciidoctor
www/
storage/

View File

@@ -78,7 +78,7 @@ prepare:
git-commit:
git pull --autostash
git add src Makefile
git commit -m "$(COMMIT_MSG)"
git commit -m "$(COMMIT_MSG)" && git push || exit 0
copy-static-files: prepare
rsync -a --partial --delete --no-p --no-o --no-g --out-format="Copy: %f => www/" $(STATIC_FILES) www/

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -26,6 +26,15 @@ code, pre {
font-family: fira mono regular;
}
pre {
overflow-x: auto;
}
tr td:first-child {
white-space:nowrap;
vertical-align: top;
}
a {
text-decoration: none;
}

45
src/drafts.ps Normal file
View 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

View File

@@ -1,5 +1,5 @@
</article>
<div>-- <br>hacked together with <a href="https://www.vim.org">vim</a> and <a href="https://man.openbsd.org/make">make</a></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>
</html>

View File

@@ -11,112 +11,126 @@ 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
=ZR0P
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
zCmgKolO
=AIp+
-----END PGP PUBLIC KEY BLOCK-----

View File

@@ -14,7 +14,7 @@
<div class="header-row">
<a class="header-item" href="/distfiles">Distfiles</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 class="header-line"></div>
<article>

View File

@@ -8,33 +8,42 @@ cat <<'EOF'
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.
Welcome to my little place on the web.
</p>
<h2>
Posts
</h2>
<ul>
<table>
EOF
# print list
ls -r1 *.ps *.pm *.ph *.pa *.pt 2>/dev/null | while read line
ls -r1 *.ps *.pm *.ph *.pa *.pt 2>/dev/null | fgrep -v '.draft.' | while read line
do
TITLE="$(echo "${line%%.*}" | tr '_' ' ')"
URI="posts/${line%%.*}.html"
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 '_' ' ')"
fi
URI="posts/${line%.*}.html"
cat <<EOF
<li>
<td>
$DATE
</td>
<td>
<a href="$URI">
$TITLE
$TITLE
</a>
</li>
</td>
EOF
echo "</tr>"
done
cat <<EOF
</ul>
</table>
EOF

View File

@@ -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
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).
* 2023-11-06:

View File

@@ -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.

View 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.

View 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.

View 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
```

View 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
```

View 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`.

View File

@@ -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
```

View File

@@ -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>