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:
- cd9600
- ext2fs (ext2)
- msdos (FAT-y)
- nfs
- ntfs
- tmpfs
- udf
- vnd
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