88                             88
88                             88
88                             88
88,dPPYba,  ,adPPYba,  ,adPPYb,88
88P'    "8a I8[    "" a8"    `Y88
88       d8  `"Y8ba,  8b       88
88b,   ,a8" aa    ]8I "8a,   ,d88
8Y"Ybbd8"'  `"YbbdP"'  `"8bbdP"Y8

Dziennik OpenBSD

Dzień 1 - Instalacja, fluxbox, dwa monitory, dźwięk, youtube-dl i usmb - 2021-04-08

Do wykorzystania z OpenBSD wybrałem maszynę na której zainstalowełem oraz uruchomiłem system bez zarzutu. Czytając ostatni akapit materiału o instalacji OpenBSD można dojść do wniosku, iż nie zawsze jest to takie banalne jakby się mogło wydawać. Ta maszyna to składak z płytą ITX Sapphire PURE White IPC-E350M1W z procesorem AMD E-350, zintegrowaną grafiką Radeon HD 6310 i małym dyskiem SSD Intela jeszcze na SATA II, Do PC-eta podłączyłem dwa monitory, tak jakoś mi się wygodniej pracuje na dwóch. Po uruchomieniu systemu (podczas instalacji pozostawiłem włączone xenodm, więc system od razu uruchomił środowisko graficzne) byłem przekonany, że obraz będzie na obu i to w rozszerzeniu. Już kiedyś uruchamiałem OpenBSD na laptopie z podłączonym dodatkowym monitorem, co ciekawe serwer x.org skonfigurował ten monitor jako podstawowy. Nie zwracając uwagi na domyślne ustawienia skonfigurowałem polecenie doas, które jest odpowiednikiem linuxowego polecenia sudo. Poźniej zainstalowałem Firefox-a, następnie wrzuciłem w wyszukiwarkę "How to install fluxbox on OpenBSD" przeszedłem na główną stronę projektu, oczywiście już nauczony wcześniejszymi instalacjami OpenBSD na laptopach, że fluxbox jest dostępny w repozytorium, nie pamiętałem jednak co należy zrobić aby fluxbox uruchamiał się po zalogowaniu, wykonałem więc czynności opisane na strone projektu (jaki błąd!). Po zrestartowaniu nie zadziałało po zalogowaniu uruchomił się FWVM, fluxbox uruchomiał się tylko na wyłączonym xenodm i uruchomianiu X z ręki przy użyciu polecnia startx. Wróciłem do przeglądarki. Na stronie wyników wyszukiwania znalazłem podobnie brzmiący problem do mojego... Na StackOverflow, radzili użyć pliku ~/.xsession a nie ~/.xinitrc, tak też zrobiłem i zadziałało. Następną rzeczą jak postanowiłem zrobić to zająć się ekranami, aby były identycznie ustawione jak monitory na biurku, wykorzystałem do tego te dwa poniższe polecenia, które są wykonywane przed uruchomieniem fluxboxa w pliku .xsession.

xrandr --output DVI-0 --primary
xrandr --output HDMI-0 --right-of DVI-0

Polecenie xrandr służy właśnie do sterowania ekranami środowiskach graficznych opartych o X. Ustawienie monitora podłączonego przez DVI jako podstawowy (stoi po mojej lewej) jest zrozumiałe, ale do czego służy drugie polecenie? Kiedy przestawiłem monitor, okazało się (już wcześniej kiedy instalowałem fluxbox), że jeśli chcemy przenieść kursor na drugi monitor musimy zrobić to przez jego lewą krawedź co jest nienaturalne, bo monitor stoi po prawej stronie ekranu podstawowego. Polecenie przestawia ekran HDMI-0 na prawo od ekranu DVI-0 Kiedy monitory ogarnięte, to pora na doinstalowanie dodatkowego oprogramownia. Ja głównie wykorzystuje terminal (xterm jako emulator), z pomocą tmux dziele go na trzy części jedna podstawowa z vim oraz dwie mniejsze z odtwarzaczem moc oraz z wierszem polecenia, za pomocą którego np. obsługuje repozytorium git. Jako managera plików wykorzystuje mc, może czasami być potrzeba aby otworzyć jakiś plik wideo, więc vlc, generalnie chyba nie ma lepszego odtwarzacza od VLC ostatnim programem jest chyba gkrellm uruchamiany w dolnym prawym rogu dodatkowego ekranu.

$ doas pkg_add -iv mc vim moc vlc gkrellm

Kolejnym ciekawym epizodem, było sprawdzenie dźwięku (spoiler! Działa out-of-box, wystarczy zrobić głośniej). Żeby zrobić to w miarę szybko stwierdziłem że wejdę na YT, i oh, boy! Ten komputer raczej do YT się nie nadaje, jako alternatywę wymyśliłem że mogę użyć smtube i okazało się że w repozytorium jest zarówno smtube jak i youtube-dl. Smtube oczywiście nie działa, ale ja mam dla niego inne zastosowanie, skoro jest w stanie wyszukiwać rzeczy to można użyć go jako wyszukiwarki bez używania firefox-a, potem możemy sobie to ściągnąć przy użyciu youtube-dl. Oczywiście nie namawiam do piractwa.

$ doas pkg_add -iv smtube youtube-dl

Podgłaszanie z poziomu terminala (1 = 100%)

$ sndioctl output.level=1

Przypomniałem sobie że mam dużo muzyki (aż 19 dni) na moim lokalnym NAS-ie. Z NAS-em możemy połączyć się zapomocą SMB, tylko jako to zrealizować w OpenBSD, na GNU/Linux wystarczy jedno polecenie, tutaj sprawa się komplikuje ponieważ nie ma oficjalnego wsparcia dla CIFS/SMB, możemy zrobić dwa sposoby taki że wylewu można dostać hakerski lub wygodny. Ja użyłem, wiadomo tego pierwszego i w pewnym momencie myślałem że zjem klawiaturę. Hakerski sposób wymaga pakietu usmb, oraz utworzenia specjalnej konfiguracji w pliku ~/.usmb.conf:

<?xml version="1.0" encoding="ISO-8859-1"?>
<usmbconfig>

	<credentials id="nas">
		<domain>WORKGROUP</domain>
		<username>admin</username>
		<password>P4ssW0rD</password>
	</credentials>

	<mount id="nas" credentials="nas">
		<server>nas.morketsmerke.net</server>
		<share>nas</share>
		<mountpoint>/home/xf0r3m/NAS</mountpoint>
		<options>allow_other,uid=1000,gid=1000</options>
	</mount>

</usmbconfig>

Po zapisniu konfiguracji w pliku musimy nadać mu odpowiednie uprawnienia, bo inaczej skrypt się spruje że, zwróci uwagę nie są poprawne uprawnienia dla pliku konfiguracyjnego i zakończy działanie. Z racji tego że musimy uruchomić usmb jako root, to prawa własności musimy ustawić na poniższe:

$ doas chown root:wheel ~/.usmb.conf

To nie wszystko jeśli uprawnienia są za wysokie to skrypt znów się spruje nam zwróci uwagę na to że uprawnienia są za wysokie i odmówi wykonania zadania. Prawidłowe uprawnienia ustawimy za pomocą poniższego polecenia:

$ doas chmod 600 ~/.usmb.conf

Kiedy już się uporamy z plikiem konfiguracyjnym, możemy wydać poniższe polecenie aby w końcu zamontować nasz udział w systemie:

$ doas usmb -c ~/.usmb.conf nas

Powiem tak... Montowanie udziału spełnia swoje podstawowe założenia pozwala na główne operacje na plikach. Jednak jak chcielibyśmy odtworzyć muzykę w moc bezpośrednio z serwera to się nie da, ponieważ wczytywanie plików odbywa się bardzo wolno, na debug logu widać jak program się zapętla. Spróbuje jeszcze na innych odtwarzaczach, może to winna moc, ale póki co to duży minus.

 

Dzień 2 - Obsługa dysków, "Wykorzystanie systemu OpenBSD do codziennej pracy". - 2021-04-09

Generalnie to chciałem zrobić dzisiaj porządek na dysku, podłączę sobie dysk i zagram wszystko co potrzebne na NAS-a. Potem go przeformatuje. Jednak nie mogę ponieważ OpenBSD nie obsługuje systemu EXT4, generalnie kolejny minus. Jak się ich zbierze dużo to można grać nimi w bierki. Dysk musiałem podłączyć do GNU/Linuxa. Jak wygląda montowanie partycji w systemie OpenBSD. Za pomocą polecenia dmesg musimy namierzyć nasz dysk.

sd1 at scsibus4 targ 1 lun 0: <SSDPR-CL, 100-240-G2, 0> serial.174c1153201701000004
sd1: 228936MB, 512 bytes/sector, 468862128 sectors

Jeden z moich dysków wygląda tak. Jak znalazłem dysk to jeszcze muszę wskazać partycję do montowania. Do listowania tablicy partycji (i nie tylko) służy polecenie disklabel

# /dev/rsd1c:
type: SCSI
disk: SCSI disk
label: 100-240-G2      
duid: 04289ed5badd948f
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 29185
total sectors: 468862128
boundstart: 0
boundend: 468862128
drivedata: 0 

16 partitions:
#                size           offset  fstype [fsize bsize   cpg]
  c:        468862128                0  unused                    
  i:        466860032             2048  ext2fs                    
  j:          1996800        466864128 unknown                    

Kiedy chcę podmontować tą partycję to za pomocą poniższego polecenia otrzymuje tylko komunikat:

$ doas mount -t ext2fs /dev/sd1i /mnt
mount_ext2fs: /dev/sd1i on /mnt: specified device does not match mounted device

Rozwinięcie tego komunikatu znajduje się w komunikatach systemowych dostępnych za pomocą polecenia dmesg.

ext2fs: unsupported incompat features: 64bit

Niestety nie podmontuje tego dysku. Lista kompatybilnych systemów plików z OpenBSD znajduje się poniżej:

Czyli najlepszym systemem plików do przenoszenia danych między systemami zostanie FAT32. Na Reddicie poświęconym powyższemu problemowi z obsługą systemów plików, jeden z użytkowników napisał, że on to korzysta głównie z FAT32 do przenoszenia danych między OpenBSD a GNU/Linuxem, ale jest jeden haczyk system plików należy utworzyć pod OpenBSD a nie GNU/Linux-em, w przeciwnym razie partycja utworznona na GNU/Linux nie będzie chciała się montować w OpenBSD.

Po przygodach z dyskiem wpadłem na pomysł, aby spisywać dzień po dniu, to co robie w systemie, o ilę będę robić coś wartego opisania, nie wiem jak to nazwać poki co robocza wersja "Wykorzystanie systemu OpenBSD do codziennej pracy", plik się nazywa dziennik_OpenBSD.html, nazwę się jeszcze dopracuje. Pisanie zajmuje znacznie więcej czasu niż wykonywanie rzeczy, więc mogę się nie wyrobić na "daily" upload. Pierwsze wersje zawsze piszę na brudno, potem trzeba to jeszcze redagować, ale spróbuje. Ponieważ już jest dzień 3, a ja cały czas pisze dzień drugi wczoraj nie dałem rady fizycznie, nie zawsze też będzie o czym pisać, więc mogą być przeskoki w dniach. Dziś jeszcze muszę przygotować materiał a mam godzinę czasu, jutro ewentualnie dokończe dzień 3, przeredaguje te 3 dni i zrobię upload. Mam całą listę rzeczy do zrobienia, a ja sobie robie "daily" z obsługi OpenBSD. Dobra, koniec dnia 2-go.

 

Dzień 3 - dysk do wymiany danych pomiędzy Linux-em a OpenBSD, ustawienie tapety na fluxbox - 2021-04-10

Po skończeniu redagowania dnia 2, i ekscesach z niekompatybilnością systemów plików przyszedł czas na kompromis w sprawie. Stworzę partycję FAT32 na całej długości dysku pod OpenBSD (idąc za wskazówką z Reddita). Tworzenie partycji zaczynam od ustawienia odpowiedniej partycji za pomocą polecenia disklabel z przełącznikiem -E aby uruchomić polecenie w trybie interaktywnym poniżej podałem wybierane polecenia.

$ doas disklabel -E sd1
sd1> z
sd1*> a a
offset: [0]
size: [468862128]
FS type: [4.2BSD] msdos
sd1*> q

Po utworzeniu partycji, przychodzi czas na jej sformatowanie. Partycje w OpenBSD przygotowujemy za pomocą róznych wersji polecenia newfs wybrany system plików określamy poprzez przyrostek np. _msdos - newfs_msdos, polecenia newfs do określenia partycji używają surowych urządzeń (raw devices) - /dev/rsd1a. Formatowanie może nie co potrwać, w zależności od wiekości dysku.

$ doas newfs_msdos /dev/rsd1a

Po sformatowaniu partycji, warto sprawdzić jeszcze raz jej tablice partycji. Ja miałem tak, że tworzyłem partycje o literze a, kiedy już została sformatowana chciałem ją zamontować klasycznie:

$ doas mount -t msdos /dev/sd1a /mnt

Dostałem komunikat o tym, że urządznie jest nie skonfigurowane.

mount_msdos: /dev/sd1a on /mnt: Device not configured

Coś poszło nie tak podczas formatowania? Pierwsze co zrobiłem to zajrzałem do tablicy partycji i okazało się, że po formatowaniu zmieniła się litera dysku.

# /dev/rsd1c:
type: SCSI
disk: SCSI disk
label: 100-240-G2      
duid: 0000000000000000
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 29185
total sectors: 468862128
boundstart: 0
boundend: 468862128
drivedata: 0 

16 partitions:
#                size           offset  fstype [fsize bsize   cpg]
  c:        468862128                0  unused                    
  i:        468862128                0   MSDOS                    

Więc kiedy poprawiłem literę w poleceniu, dysk został zamontowany.

$ doas mount -t msdos /dev/sd1i /mnt/disk

Przed zamontowaniem dysku utworzyłem podkatalog, ponieważ w OpenBSD nie można zmienić właściciela podkatalogów katalogu głównego, np. takiego jak /mnt, a bez zmiany praw własności zwykły użytkownik nie będzie w stanie nic na dysku zapisać.

Kolejną rzeczą jaką zrobiłem to zmiana tapety, nie jest ona jakoś wybitnie skomplikowana. Po pierwsze trzeba zainstalować pakiet feh, który jest bardzo lekką przeglądarką plików graficznych.

$ doas pkg_add -iv feh

Polecenie fbsetbg jest już wbudowane. Problem w tym, że raczej ono nie zadziała, ponieważ nie ma w systemie zainstalowanych pewnych pakietów. Nie trzeba ich instalować. Wystarczy że odnajdziemy ww. polecenie:

$ which fbsetbg
/usr/local/bin/fbsetbg

Rzeczony program do ustawiania tapety na fluxbox jest skryptem powłoki, więc aby program zaczął działać bez instalacji dodatkowych rzeczy zmieńmy w nim linię:

[ -n "$1" ] && hash $1 2> /dev/null

na:

which $1 2>&1 > /dev/null

Po zapisaniu pliku możemy zmienić nareszcie tapetę.

$ fbsetbg -f ~/Obrazy/1920x1080_32bit.png

 

Dzień 5 - Laptop z OpenBSD - 2021-04-12

Wieczorem dnia 4-tego stwierdziłem że zostawię laptop z GNU/Linux-em w domu a do pracy wezmę mojego rzęcha, którego kupłem za pierwsze zarobione pieniądze. Już kiedyś był zainstalowany na nim OpenBSD więc wiem że to działa. Ten laptop to Acer AspireOne D260, lekko go zmodyfikowałem stary dysk HDD, wymieniłem na 240GB SSD GoodRam-a, zamiast 1GB RAM dałem 2GB i chyba najważniejsza zmiana to karta sieci bezprzewodowej Broadcom-a, z którym na Debianie miałem problem ze sterownikiem zmieniłem na kartę Atheros, która działa bez zarzutu z OpenBSD. Tak poza tym to klasyczna instalacja, póki co jestem w pracy i łącze się po kablu, ale może jutro pojawi się wpis z podłączaniem się do sieci bezprzewodowej.

Odnośnie dźwieku na tym laptopie, to domyślne wyjście jest ustawione na gniazdo słuchawkowe. To nawet lepiej, bo ja zazwyczaj podłączam słuchawy albo Hi-Fi do laptopa.

 

Dzień 6 - Get Wi-Fi connection and get back to work - 2021-04-13

Instalując na laptopie OpenBSD musiałem wziąć pod uwagę to, że bedę musiał kiedyś skorzystać z sieci bezprzewodowej i warto było by się dowiedzieć jak to zrobić. Dużo wiedzy na temat samej obsługi OpenBSD znajduje się na stronie FAQ projektu openbsd.org, tam też znalazłem tą na temat połączenia z siecią bezprzewodową. Oczywiście za pomocą terminala. Pierwsze co należy zrobić to włączyć samą kartę.

$ doas ifconfig athn0 up

Po włączeniu karty musze znaleźć SSID mojej sieć, przeskanuje otoczenie.

athn0: flags=808843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF4> mtu 1500
	lladdr 74:f0:6d:39:2d:6a
	index 2 priority 4 llprio 3
	groups: wlan egress
	media: IEEE802.11 autoselect (HT-MCS3 mode 11n)
	status: active
	ieee80211: nwid EnGenius578D00_1-2.4GHz chan 13 bssid 88:dc:96:57:8d:00 -50dBm wpakey wpaprotos wpa2 wpaakms psk wpaciphers ccmp wpagroupcipher ccmp
		nwid EnGenius578D00_1-2.4GHz chan 13 bssid 88:dc:96:57:8d:00 -50dBm HT-MCS15 privacy,short_slottime,wpa2 
		nwid 0x00000000 chan 2 bssid 14:dd:a9:73:15:a4 -86dBm HT-MCS15 privacy,short_slottime,wpa2 
		nwid COMTREND-VI-3223u-5A8C chan 11 bssid d8:b6:b7:8e:5a:8d -87dBm HT-MCS15 privacy,short_slottime,wpa1 !wpaproto
		nwid "DIRECT-95-HP M227f LaserJet" chan 6 bssid da:0f:99:3b:83:95 -93dBm HT-MCS15 privacy,spectrum_mgmt,short_slottime,wpa2 
	inet 192.168.2.125 netmask 0xffffff00 broadcast 192.168.2.255

Po namierzeniu sieci mogę się już nią parować. Moja sieć jest zabezpieczona za pomocą WPA2, więc musze podać hasło po SSID-zie. Do sieci podłączam się za pomocą poniższego polecenia.

$ doas ifconfig athn0 nwid "EnGenius578D00_1-2.4GHz" wpakey 0xDEADBEEFx0

Po sparowaniu pobieram adres IP:

$ doas dhclient

Kiedy polecenie zwróci mi prompt sprawdzam za pomocą polecenia ping czy połączenie się powiodło.

$ ping wp.pl

Jeśli chciałbym zapisać sieć, po to aby system łączył się z nią automatycznie podczas ustawiania interfejsów sieciowych, to muszę stworzyć plik /etc/hostname.athn0 (athn0 - nazwa interfejsu). W zależności od tego czy będzie to tylko jedna sieć:

nwid "SSID" wpakey WPA-PSK
dhcp

lub wiele:

join morketsmerke.net wpakey 1234Test1234
join EnGenius578D00_1-2.4GHz wpakey 0xDEADBEEFx0
dhcp

Po podłączeniu się do sieci można wrócić do pracy. Moja praca polega w jakieś częsci na tworzeniu materiałów na tą stronę. Muszę od czasu do czasu obejrzeć wyniki klepanego HTML-a w przeglądarce, jednak pod OpenBSD Firefox, jest strasznie ogranicznony, bez pozwolenia wydanego w pliku konfiguracyjnym nie mogę sobie od tak przejść w dowolne miejsce w systemie plików nawet na swoim katalogu domowy, gdzie zapisane są moje materiały. Muszę najpierw w plikach /etc/firefox/unveil.main, /etc/firefox/unveil.content wpisać ścieżkę do konkretnego katalogu, następnie przypisać dla niego odpowiednie uprawnienia.

~/Cloud r

W obydwu plikach wpisałem identyczne ścieżki oraz uprawnienia. Po ponownym uruchomieniu Firefox-a, mam dostęp do plików poprzez wpisanie adresu file:///home/xf0r3m/Cloud, ale kiedy spróbuje przejść powyżej tego katalogu dostaje błąd File not found. Dla przeciętnego użytkownika jest to spore utrudnienie, ponieważ bez utworzenia katalogu ~/Downloads nic nie można ścignąć a dla wrzucenia plików trzeba również określić jakiś katalog gdzie będą pliki przeznaczone do uploadu, a operowanie na wybiórczych katalogach nie jest wcale takie łatwe. Za pomocą magicznego znaku tyldy możemy w oknie dialogowym Firefox-a uruchomonić pasek adresu. Jednak patrząc na to jak wielkie są przeglądarki w obecnych czasach - stają się subsystemami - myślę że lepsze to niż nic.

 

Dzień 7 - Spotify na openbsd. - 2021-04-14

Zainstalowanie Spotify na OpenBSD jest łatwiejsze niż na różnych GNU/Linux-ach konfigurowanych od zera. Realizowane jest to za pomocą pakietu ncspot z drzewa portów. Porty lub drzewo portów jest czymś w rodzaju repozytorium community, tylko zamiast pre-kompilowanych binariów jak to jest w przypadku paczek z oficjalnego repo mamy kod źródłowy, przygotowany (na tyle ile się dało [aby dalej pozostawał kodem]) do kompilacji pod OpenBSD.

Cały proces kompilacji programu ncspot z portów jest opisany tutaj: https://ogrul.org/articles/spotify-on-openbsd.html. Opisuje go tu tylko w celach kopii zapasowej, gdyby źródło stało się niedostępne.

Kompilację rozpocznę od pobrania paczki z portami z oficjalnego źródła, najlepiej do /tmp plik zniknie po restarcie nie pozostawiając po sobie bałaganu, a i tak będę musiał go rozpakować do /usr.

$ cd /tmp
$ ftp https://cdn.openbsd.org/pub/OpenBSD/$(uname -r)/{ports.tar.gz,SHA256.sig}

Sprawdzam czy plik nie został podmieniony (jakimś cudem [jeśli ktoś podszył się pod źródło, z którego pobrałem porty]) na podstawie ściągniętej wraz z paczką sygnatury.

$ signify -Cp /etc/signify/openbsd-$(uanem -r | cut -c 1,3)-base.pub -x SHA256.sig ports.tar,gz

W odpowiedzi dostałem coś takiego:

Signature Verified
ports.tar.gz: OK

Po sprawdzeniu pliku, rozpakowuje paczkę z portami bezpośrednio w katalogu /usr.

$ cd /usr
$ doas tar -xzvf /tmp/ports.tar.gz

Następnie w pliku /etc/mk.conf wskazuje katalogi robocze używane podczas kompilacji.

WRKOBJDIR=/usr/obj/ports
DISTDIR=/usr/distfiles
PACKAGE_REPOSITORY=/usr/packages

Przechodzę z powrotem do katalogu gdzie wypakowałem porty i wydaje polecenie:

$ doas make search key=ncspot

Polecenie za pierwszym razem zwróci błąd. Zawsze zwraca, do działania potrzebuje pakietu portslist.

$ doas pkg_add -iv portslist

Po zainstalowaniu pakietu ponownie wydaje polecenie $ doas make search key=ncspot, wynik polecenia powinien być następujący:

Port:	ncspot-0.2.2p0
Path:	audio/ncspot
Info:	ncurses Spotify client
Maint:	Henrik Friedrichsen <henrik@diff.cc>
Index:	audio lang/rust
L-deps:	audio/portaudio-svn x11/dbus,-main
B-deps:	STEM->=1.30:lang/rust devel/cargo-generate-vendor lang/rust
R-deps:	
Archs:	any

Żeby w ogóle rozpocząć proces kompilacji muszę zainstalować wszystko co znajduje się w polu B-deps: - zależności kompilacji. W tym konkretnym przypadku akurat mam szczęście, że te programy znajdują się w repo i nie trzeba ich kompilować. Instalacja oprogramowania przez kompilację kodu to trochę błędne koło, ponieważ musisz spełnić zależności kompilowanego programu, kiedy chcesz to zrobić i znów musisz kompilować wtedy wracamy do punktu wyjścia bo musimy znów spełnić zależności, zależności kompilacji programu macierzystego i być może znów będziemy musieli je kompilować. Kompilacja daje możliwość dostosowania oprogramowania do własnych potrzeb.

$ doas pkg_add -iv rust cargo-generate-vendor

Po zainstalowaniu zależności uruchamiam kompilacje. Ścieżka do kodu aplikacji jest wskazana przez pole Path: informacji zwracanych przez polecenie make search.

$ cd audio/ncspot
$ doas make install

Po zbudowaniu projektu, co trochę trwa w zależności od mocy przerobowej komputera, mogę wreszcie uruchomić ncspot:

$ ncspot

zalogować się i korzystać z usługi. Oczywiście jak wszystkie te aplikacje wykorzystujące API, potrzebne jest konto premium. Nie tyle o same Spotify chodziło, co o możliwie najprostrze przedstawienie systemu portów.

 

Dzień 9 - Płyty pod OpenBSD - 2021-04-17

8-go dnia stwierdziłem że muszę zrobić porządek z płytami, na których miałem pozgrywaną muzykę żeby ją odtwarzać na wieży. Z racji tego że wieża wspierała zarówno format Audio CD jak zwykłe płyty nagrane jako "płyta z danymi" z plikami MP3, posiadałem płyty nagrane w różnych formatach. Podłączyłem napęd do komputera, włożyłem płytę i zacząłem szukać w necie jak to zrobić. Pierwszą rzeczą jakiej się dowiedziałem (nie z Internetu, a z autopsji) było rozpoznawanie płyt, które są nagrane w formacie Audio CD, a które z plikami MP3.

$ doas disklabel cd0

Jeśli jest to płyta z danymi to w tabeli partycji, pojawią się dwie partycje: a oraz c. Jeśli zaś jest to i Audio CD to tabela będzie pusta.

MP3:

# /dev/rcd0c:
type: ATAPI
disk: 110124_1858     
label:                 
duid: 0000000000000000
flags:
bytes/sector: 2048
sectors/track: 100
tracks/cylinder: 1
sectors/cylinder: 100
cylinders: 3390
total sectors: 338911
boundstart: 0
boundend: 338911
drivedata: 0 

16 partitions:
#                size           offset  fstype [fsize bsize   cpg]
  a:           338911                0 ISO9660                    
  c:           338911                0 ISO9660                   

Audio CD:

# /dev/rcd0c:
type: ATAPI
disk: ATAPI CD-ROM
label: fictitious
duid: 0000000000000000
flags:
bytes/sector: 2048
sectors/track: 100
tracks/cylinder: 1
sectors/cylinder: 100
cylinders: 1738
total sectors: 173758
boundstart: 0
boundend: 0
drivedata: 0 

0 partitions:
#                size           offset  fstype [fsize bsize   cpg]

Na podstawie tego, płytę z danymi montuje najzwyczajniej w świecie jak zwykły dysk. Trzeba jeszcze spojrzeć na system plików użyty na płycie. OpenBSD natywnie wspiera ISO9660 oraz UDF. Na moich płytach z MP3 używałem formatu ISO9660.

$ doas mount_iso9660 /dev/cd0a /mnt

Po skopiowaniu danych odmontowuje ją (doas umount /mnt).

W przypadku formatu Audio CD trzeba użyć innego narzędzia. Do obsługi tego typu płyt wykorzystuje się program cdio. Za pomocą tego programu można taką płytę odtworzyć lub zripować. Ten program potrafi np. połączyć się z bazą GNU i ściągnąć tagi dla ścieżek zapisanych na płycie. Poniżej znajdują się polecenia odtwarzania i ripowania.

Odtworzenie Audio CD:

$ doas cdio -f /dev/cd0c cdplay

Ripowanie Audio CD:

$ doas cdio -f /dev/cd0c cdrip

Warto dodać żeby uniknąć bałaganu, uruchamiałem polecenie do ripowania w przeznaczonym dla tej płyty katalogu. Jako bonus polecenie do sprawdzenia płyty w gnudb.org

$ doas cdio -f /dev/cd0c cddbinfo

Wynik polecenia może być różny w zależności od tego co uda mu się znaleźć na płycie.

 

Dzień 11 - Raspberry Pi Zero podłączone przez USB do laptopa z OpenBSD i torrenty z terminala - 2021.04.19

Potrzebowałem serwera www najlepiej z Git-em, do pisania pewnych aplikacji. Mój Acer Aspire One, strasznie by się spocił przy hostowaniu maszyn wirtualnych, ale nie należało go skreślać bo kiedyś korzystałem z terminala HP z podobnym procesorem, który hostował dwie maszyny wirtualne. Zużycie procesora 100% bez przerwy za nim coś zrobiłem to trochę minęło, ale jakoś jakoś dawał radę. Miałbym go do dzisiaj gdyby nie zalało pomieszczenia, którym się znajdował, a że leżał na podłodze, woda go uszkodziła i niestety trafił na złom. Wracając do głównego tematu. Pomyślałem, a co gdyby użyć RPI, trzeba by podłączać to do sieci, nosić zasilacz lub używac powerbank-a. No dobra, a Raspberry Pi Zero? Podłączone do Acera... Tak tylko że na tym laptopie jest przecież zainstalowane OpenBSD. No to mam problem.

Nie taki diabeł straszny jak go malują. Po zainstalowaniu obrazu na karcie przy użyciu tego laptopa, musiałem niestety użyć zewnętrznego czytnika kart, bo ten wbudowany nie miał generalnie wsparcia na systemach *BSD. Kolejny przeszkodą mogła być konfiguracji RNDIS, bo trzeba to ustawić na karcie na partycji Boot, jednak RasPiOS wykorzystuje partycję Boot sformatowaną na MSDOS (FAT32). Na chwilę przeskoczę do tego jak w ogóle zdobyłem obraz.

Obraz zdobyłem za pomocą sieci BitTorrent, nie miałem jednak wiedzy nt. klientów BT na OpenBSD. Sprawdziłem z ciekawości program, który ożywam od lat Transmission. Ten program jest stworzony w architekturze klient-serwer i można go używać na wiele róznych sposobów za pomocą przeglądarki, klasycznego okna czy to na czym mi zależało z poziomu terminala. Więc wchodzę na stronę projektu Transmission, a tam pod OpenBSD widnieje napis "Official packages". I teraz wiem że jestem w domu. Sciągam paczkę z Transmission.

$ doas pkg_add -iv transmission

Informacje o tym jak używać Transmission znalazłem za pomoc DuckDuckGo na tej stronie: https://cli-ck.io/transmission-cli-user-guide Po zainstalowaniu się pakietu, wskazuję daemonowi Transmission katalog dla pobranych.

$ transmissions-daemon --download-dir ~/Downloads

Daemona uruchamiamy tym samym poleceniem tylko bez żadnych przełączników czy opcji.

$ transmissions-daemon

Pliki torrent czy magnet linki, dodajemy za pomocą poniższego polecnia z wraz z opcją -a.

$ transmission-remote -a <plik_torrent/magnet_link>

Do monitorowania daemona (sprawdzenia postępów ściągania) służy polecenie:

$ transmissions-remote -l

Po pobraniu, nagraniu obrazu na kartę oraz skonfigurowaniu systemu, przyszedł czas na podłączenie RPI do laptopa. Po podłączeniu w systemie pojawił się nowy interfejs sieciowy urndis0 i nic poza tym. Każdy interfejs żeby mógł się komunikować z kimkolwiek musi mieć jakiś adres. Stworzyłem więc plik /etc/hostname.urndis0 o takiej zawartości:

inet 192.168.56.1 255.255.255.0

Zrestartowałem sieć.

$ doas sh /etc/netstart

No tak, ja mam adres a Raspberry? Nope. Jak można nadać adres hostowi bez możliwości jakiej kolwiek konfiguracji? Za pomocą DHCP. Utworzyłem konfigurację w /etc/dhcpd.conf z bardzo małym zakresem:

subnet 192.168.56.0 netmask 255.255.255.0 {

	range 192.168.56.5 192.168.56.10;
	option routers 192.168.56.1;
	option domain-name "local";
	option domain-name-servers 192.168.56.1;
}

Uruchomiłem z reki daemona DHCP.

$ doas dhcpd urndis0

I czekałem na przydzielenie adresu sprawdzając co jakiś czas plik /var/db/dhcpd.leases, aż moim oczom ukazał się taki o to wpis:

lease 192.168.56.7 {
	starts 1 2021/04/19 07:32:45 UTC;
	ends 1 2021/04/19 19:32:45 UTC;
	hardware ethernet aa:9a:fc:ef:b5:83;
	uid 01:aa:9a:fc:ef:b5:83;
	client-hostname "raspberrypi";
}

Teraz mogłem się połączyć z Raspberry. Żeby nie musieć za każdym razem uruchamiać DHCP, ustawiłem na nim statyczny adres i tak byłby wymagany do Gogs-a. Oczywiście żeby zainstalować tym sprzęcie cokolwiek potrzebne jest połączenie z Internetem. Musiałem przerobić tego laptopa na bramkę na żądanie, doinstalować dnsmasq (nie potrzeba go konfigurować), na podstawie obecnego pliku PF, utworzyłem plik z regułą NAT-u oraz włączyć przekazywanie pakietów.

$ doas pkg_add -iv dnsmasq

pass out on alc0 from urndis0:network to any nat-to (alc0)

sysctl net.inet.ip.forwarding=1

Alc0 to interfejs przez, który mój laptop łączy się z siecią lokalną w budynku. Całość skonfigurowałem wraz z instalacją Gogs-a i mimo LAMP Stacka to Raspberry Pi Zero radzi sobie nadzwyczaj dobrze.

~xf0r3m