OpenBSD kasutamine töökohaarvutis

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

TODO

Tööpõhimõte

Väited

  • Kasutusel on OpenBSD v. 6.5 (amd64 platvorm, multiprotsessor cpu toega kernel, xfce4 aknahaldur)
  • Töökohaarvuti on Proxmox v. 5.4 keskkonnas käivitatud virtuaalne UEFI toega arvuti
  • OpenBSD on paigaldamisest alates esitama serial konsoolile väljundit

Riistvara

Selleks, et arvuti oleks hästi kasutatav, tuleb OpenBSD riistavara hoolge valida.

  • Füüsiline amd videokaart sobib pigem vanemat tüüpi, 'man amdgpu' võiks midagi uut toetada, aga nt RX 550 (Polari 12 ei tööta).
  • amdgpu tugi tuleb firmware.openbsd.org pealt nö binary blob kaudu fw_update utiliidiga
  • Uuemad videokaardid töötavad üldiselt efifb režiimis, aga jõudlus on vilets (koormab protsessorit ja pilt on kohmakas, nt akende liigutanine ja suuruse muutmine)
  • tundub, et OpenBSD ei toeta üldse nö loomulikul viisil uuemate nvidia videokaartide kasutamist (ka mitte fw_update abil)

Igal reboodil

  • genereeritakse uus kernel järgmiseks korraks
  • relingitakse libc, ld ja libcrypto teegid selleks korraks

Proxmox virtuaalne arvuti

Proxmox virtuaalse arvuti seadistused

root@pm-moraal-4-v52:~# cat /etc/pve/qemu-server/127.conf 
bios: ovmf
boot: cdn
bootdisk: sata0
cores: 2
efidisk0: sn_zfs_ssd_id:vm-127-disk-0,size=128K
hostpci0: 0a:00,x-vga=on
ide2: local:iso/srcd522.iso,media=cdrom,size=558600K
machine: q35
memory: 8192
name: openbsd-moraal
net0: virtio=22:53:68:AB:1F:31,bridge=vmbr1,firewall=1,tag=110
numa: 0
ostype: l26
sata0: sn_zfs_ssd_id:vm-127-disk-1,size=32G
sata1: sn_zfs_ssd_id:vm-127-disk-2,size=8G
scsihw: virtio-scsi-pci
serial0: socket
smbios1: uuid=6a5a54bb-9b08-40ad-8b64-254d9eafd875
sockets: 4
usb0: host=5-1,usb3=1
usb1: host=5-2,usb3=1
vga: none
vmgenid: c6e904bc-aa60-450e-b3f4-b7bab23c9ed2

kus

  • vga: none - nö tavaline video on välja lülitatud (vastasel korral OpenBSD näitab pilti seal)
  • cores: 2 - OpenBSD puhul on single- ja multicpu tuumad erinevad failid/kataloogid/jne st tõenäoliselt on parem algusest peale hakata kasutama multicpu tuuma (see töötab ka füüsiliselt ühe tuumases arvutis; tundub, et ühe cpu toega tuumalt on tülikas minna üle mitme cpu toega tuumale)
  • virtuaalne arvuti töötab efi režiimis, vastasel korral proxmox poolelt video kaardi passthru ei töötaks; ning openbsd poolelt efifb (wsfb) ei oleks kasutada

Operatsioonisüsteemi paigaldamine

Paigaldamine

  • virtuaalsel arvutil on kaks sata plokkseadet, teisele on kopeeritud dd abil install65.fs (kuna kasutusel on zfs siis ehk on lihtsam kopida bootides arvuti korra nt system rescue cd pealt üles)
imre@imreo-lap:~$ dd if=/var/tmp/install65-20190708.fs bs=1M | ssh root@192.168.210.136 'dd of=/dev/vdb bs=1M'
  • arvuti käivitatakse teiselt seadmelt
  • süsteem paigaldatakse esimesele plokkseadmele (efi, gpt)
  • proxmox hostil pöördutakse openbsd serial konsooli poole
# qm terminal 127

Tarkvara uuendamine

  • süsteemse osa uuendamine
# syspatch

Operatsioonisüsteemi seadistamine

  • paketihaldusest rakenduste paigaldamine
# pkg_add joe
# pkg_add xfce xfce-extras
# pkg_add slim slim-themes
# pkg_add chromium firefox iridium
# pkg_add synergy remmina x2goclient pftop pkglocatedb ssvnc-viewer keepassxc

X.org nvidia quadro M2000 videokaart

Tundub, et OpenBSD ei toeta nö uusi nVidia videokaarte ja üks võimalus neid siiski kasutada on nn efifb režiimis

dmesg

moraal# dmesg | grep efi
efifb0 at mainbus0: 3840x2160, 32bpp
wsdisplay0 at efifb0 mux 1

Seadistusfail

# cat /etc/X11/xorg.conf
Section "Device" 
  Identifier "Device0" 
  Driver "wsfb" 
EndSection

X.org - AMD radeon 550 videokaart

Tundub, et OpenBSD fw_update kaudu toetab AMD uusi videokaarte. Sellist riistvara sisaldava süsteemi puhul paigaldatakse süsteemi käivitamisel automaatselt vajalikud draiverid jms

# dmesg
...
"ATI Polaris 12" rev 0xc7 at pci6 dev 16 function 0 not configured

Jama puhul saab kaardi välja lülitada

boot> boot -c
UKC> disable amdgpu
UKC> boot

X.org - Intel videokaart

Tavaliselt Intel videokaardid on integreeritud protsessoriga (eriti laptop arvutites). Vaikimisi kasutatakse modesetting draiverit, aga on võimalik spetsiifiliselt öelda kasutada intel draiverit, nt

$ cat /usr/X11R6/share/X11/xorg.conf.d/10-intel.conf  
Section "Device"
	Identifier "drm"
	Driver "intel"
EndSection

xfce4

$ cat /home/imre/.xinitrc   
exec startxfce4 --with-ck-launch
# cat /etc/rc.conf.local                                                                                
# xenodm_flags=
dbus_enable
pkg_scripts=dbus_daemon avahi_daemon messagebus slim
# rcctl enable slim

Lokaat

# cat /usr/X11R6/share/X11/xorg.conf.d/60-keyboards.conf                                                                                                         
Section "InputClass"
  Identifier "Multiple keyboard layouts"
  MatchIsKeyboard "on"
  Option "XkbLayout" "ee,us"
  Option "XkbOptions" "grp:alt_shift_toggle"
EndSection

Selleks, et ei saaks nö liiga vara teateid 'TODO' sobib kasutada

# cat /usr/X11R6/share/X11/xorg.conf.d/99-maxclients.conf  
Section "ServerFlags"
  Option "MaxClients" "2048"
EndSection

Parasjagu kasutusel olevate klientide arvu saab küsida

$ xwininfo -root -children | nl

XFCE4 keelevaliku viguri paneelile saamniseks sobib öelda

# pkg_add xfce4-xkb

Barrier

TODO

Synergy

Synergy serveri seadistusfail

minuarm$ cat etc/synergy.conf                                                  
section: screens
  moraal.sise.moraal.ee:
  imreo-lap:
end

section: links
  moraal.sise.moraal.ee:
    right = imreo-lap
  imreo-lap:
    left = moraal.sise.moraal.ee
end

section: options
  switchDelay = 500                     
end

Lokaat

Selleks, et lokaat toimiks sobib öelda

moraal# grep =ee /etc/wsconsctl.conf 
keyboard.encoding=ee		# use different keyboard encoding

ning XFCE Settings -> Keyboard juures näidata ainukese layout valikuna Estonian.

x2go

x2go kliendi suhtlemine nt Ubuntu 18.04 süsteemiga ja Debian v. 9 süsteemidega toimib.

tuum

# shared memory limits (chrome needs a ton)
kern.shminfo.shmall=3145728
kern.shminfo.shmmax=2147483647
kern.shminfo.shmmni=1024

# semaphores
kern.shminfo.shmseg=1024
kern.seminfo.semmns=4096
kern.seminfo.semmni=1024

kern.maxproc=32768
kern.maxfiles=65535
kern.bufcachepercent=90
kern.maxvnodes=262144
kern.somaxconn=2048

OpenBSD 6.5 versiooni puhul toimib nö teatud juhtudel tuuma relinkimine, st tuuma moodustavad elemendid ühendatakse unikaalsel viisil kokku

/usr/share/relink

vnc klient

# pkg_add ssvnc-viewer

Kasutaja settingute kostümiseerimine

$ cat .profile
...
export HISTSIZE=1024
export HISTFILE=~/.ksh_history

Heli

TODO

# sysctl kern.audio.record=1
# mixerctl  record.volume.mute=off

ja kasutades Firefoxi saab mikrofoni kasutada (ja kuuleb ka).

Probleemid

  • füüsilise nvidia videokaardi draiveri puudumine ja efifb kasutamine annab natuke tunda, akende liigutamine ja suuruse muutmine on uimased
  • usb seadmed tulevad ja lähevad
moraal# tail -n 40 /var/log/messages  
Jul  6 23:01:37 moraal /bsd: uhid0 at uhidev1 reportid 144: input=2, output=0, feature=0
Jul  6 23:01:37 moraal /bsd: uhid1 at uhidev1 reportid 154: input=1, output=0, feature=0
Jul  6 23:01:37 moraal /bsd: uhidev2 at uhub2 port 6 configuration 1 interface 1 "Apple Inc. Magic Keyboard with Numeric Keypad" rev 2.00/8.32 addr 2
Jul  6 23:01:37 moraal /bsd: uhidev2: iclass 3/1, 63 report ids
Jul  6 23:01:37 moraal /bsd: ukbd0 at uhidev2 reportid 1: 8 variable keys, 6 key codes, country code 13
Jul  6 23:01:37 moraal /bsd: wskbd1 at ukbd0 mux 1
Jul  6 23:01:37 moraal /bsd: wskbd1: connecting to wsdisplay0
Jul  6 23:01:37 moraal /bsd: uhid2 at uhidev2 reportid 9: input=0, output=0, feature=3
Jul  6 23:01:37 moraal /bsd: uhid3 at uhidev2 reportid 63: input=64, output=0, feature=0
Jul  6 23:02:38 moraal /bsd: wsmouse2 detached
Jul  6 23:02:38 moraal /bsd: ums1 detached
Jul  6 23:02:38 moraal /bsd: uhidev3 detached
Jul  6 23:02:40 moraal /bsd: uhidev3 at uhub2 port 5 configuration 1 interface 0 "Logitech USB Optical Mouse" rev 2.00/72.00 addr 3
Jul  6 23:02:40 moraal /bsd: uhidev3: iclass 3/1
Jul  6 23:02:40 moraal /bsd: ums1 at uhidev3: 3 buttons, Z dir
Jul  6 23:02:40 moraal /bsd: wsmouse2 at ums1 mux 0
Jul  6 23:02:40 moraal /bsd: uhid0 detached
Jul  6 23:02:40 moraal /bsd: uhid1 detached
Jul  6 23:02:40 moraal /bsd: uhidev1 detached
Jul  6 23:02:40 moraal /bsd: wskbd1: disconnecting from wsdisplay0
Jul  6 23:02:40 moraal /bsd: wskbd1 detached
Jul  6 23:02:40 moraal /bsd: ukbd0 detached
Jul  6 23:02:40 moraal /bsd: uhid2 detached
Jul  6 23:02:40 moraal /bsd: uhid3 detached
Jul  6 23:02:40 moraal /bsd: uhidev2 detached
  • ei suuda XFCE paneelile lisada keelevaliku nuppu (tavaliselt see võimelikus tuleb xfce4-goodies paketist Linuxiga, aga paketinimed on pisut erinevad OpenBSD peal)
  • kui süsteem paigaldada single-processor tuumaga, siis multi-processor tuumale üleminek paistab raskendatud, nt relinkig ei tööta
# ftp http://ftp.eenet.ee/pub/OpenBSD/6.5/amd64/bsd.mp
# mv /bsd /bsd-enne
# mv /bsd.booted /bsd.booted-enne
# mv /bsd.mp /bsd

ja rebootimisel öeldakse /usr/share/relink/kernel/GENERIC.MP/relink.log faili igasuguseid vigu

  • browserid annavad dmesg'i kasutamisel vigu, kusjuures chrome ja firefox hanguvad mingil hetkel, tundub, et iridium töötab kõige paremini
chrome[12096]: pledge "", syscall 289
firefox[25583]: pledge "", syscall 289
iridium[29284]: pledge "", syscall 289
iridium[56177]: pledge "", syscall 289
iridium[47378]: pledge "", syscall 289
iridium[68760]: pledge "rpath", syscall 5
iridium[6937]: pledge "rpath", syscall 5

2021 kevade tähelepanekud

OpenBSD v. 6.9 ja Proxmox 6.4 (kernel v. 5.4) puhul amdgpu passthru vähemalt mingil määral töötab, virtuaalne arvuti käivitub

Jun 12 23:10:10 openbsd69-tookoht /bsd: [drm] dce110_link_encoder_construct: Failed to get encoder_cap_info from VBIOS with error code 4!
Jun 12 23:10:10 openbsd69-tookoht /bsd: [drm] dce110_link_encoder_construct: Failed to get encoder_cap_info from VBIOS with error code 4!
Jun 12 23:10:10 openbsd69-tookoht /bsd: amdgpu0: POLARIS12 8 CU rev 0x00
Jun 12 23:10:10 openbsd69-tookoht /bsd: amdgpu0: 3840x2160, 32bpp

kuigi nii 20 min kasutamise järel jääb seisma, OpenBSD logis on sarnased veateated

Jun 12 23:24:25 openbsd69-tookoht /bsd: [drm] *ERROR* Waiting for fences timed out!
Jun 12 23:24:30 openbsd69-tookoht /bsd: [drm] *ERROR* ring sdma0 timeout, signaled seq=10597, emitted seq=10597
Jun 12 23:24:30 openbsd69-tookoht /bsd: [drm] *ERROR* Process information: process  pid 0 thread  pid 0

Proxmox juures kasutatakse selliseid seadistusi

TODO

Iseloomulik on, et üks kord videokaart käivitub korraliumalt, st Proxmox logis on teated

Jun 12 14:54:41 pm60-plms pve-guests[1938]: start VM 108: UPID:pm60-plms:00000792:00001DA3:60C4A081:qmstart:108:root@pam:
..

Jun 12 14:54:42 pm60-plms ovs-vsctl: ovs|00001|vsctl|INFO|Called as /usr/bin/ovs-vsctl -- add-port vmbr1 tap108i0 tag=110
Jun 12 14:54:42 pm60-plms kernel: [   77.758058] vfio-pci 0000:06:00.0: enabling device (0002 -> 0003)
Jun 12 14:54:42 pm60-plms kernel: [   77.758555] vfio-pci 0000:06:00.0: vfio_ecap_init: hiding ecap 0x19@0x270
Jun 12 14:54:42 pm60-plms kernel: [   77.758567] vfio-pci 0000:06:00.0: vfio_ecap_init: hiding ecap 0x1b@0x2d0
Jun 12 14:54:42 pm60-plms kernel: [   77.758576] vfio-pci 0000:06:00.0: vfio_ecap_init: hiding ecap 0x1e@0x370
Jun 12 14:54:42 pm60-plms kernel: [   77.778866] vfio-pci 0000:06:00.1: enabling device (0000 -> 0002)
...

Järgmistel käivitamistel, vahel on kõrvalnähuks kogu füüsilise arvuti krahh

..
Jun 12 12:17:32 pm60-plms pvedaemon[25622]: start VM 108: UPID:pm60-plms:00006416:000E01A0:60C47BAC:qmstart:108:root@pam:
Jun 12 12:17:33 pm60-plms kernel: [ 9179.363456] pcieport 0000:00:1c.4: DPC: containment event, status:0x1f11 source:0x0000
Jun 12 12:17:33 pm60-plms kernel: [ 9179.363460] pcieport 0000:00:1c.4: DPC: unmasked uncorrectable error detected
Jun 12 12:17:33 pm60-plms kernel: [ 9179.363467] pcieport 0000:00:1c.4: AER: PCIe Bus Error: severity=Uncorrected (Non-Fatal), type=Transaction Layer, (Requester ID)
Jun 12 12:17:33 pm60-plms kernel: [ 9179.363469] pcieport 0000:00:1c.4: AER:   device [8086:a33c] error status/mask=00100000/00010000
Jun 12 12:17:33 pm60-plms kernel: [ 9179.363471] pcieport 0000:00:1c.4: AER:    [20] UnsupReq               (First)
Jun 12 12:17:33 pm60-plms kernel: [ 9179.363473] pcieport 0000:00:1c.4: AER:   TLP Header: 34000000 06000010 00000000 80008000
Jun 12 12:17:33 pm60-plms kernel: [ 9179.385371] vfio-pci 0000:06:00.0: Refused to change power state, currently in D3
Jun 12 12:17:33 pm60-plms kernel: [ 9180.137389] vfio-pci 0000:06:00.0: timed out waiting for pending transaction; performing function level reset anyway
Jun 12 12:17:35 pm60-plms kernel: [ 9181.385359] vfio-pci 0000:06:00.0: not ready 1023ms after FLR; waiting
Jun 12 12:17:36 pm60-plms kernel: [ 9182.441408] vfio-pci 0000:06:00.0: not ready 2047ms after FLR; waiting
Jun 12 12:17:38 pm60-plms kernel: [ 9184.745435] vfio-pci 0000:06:00.0: not ready 4095ms after FLR; waiting
Jun 12 12:17:42 pm60-plms kernel: [ 9189.097547] vfio-pci 0000:06:00.0: not ready 8191ms after FLR; waiting
Jun 12 12:17:51 pm60-plms kernel: [ 9197.549561] vfio-pci 0000:06:00.0: not ready 16383ms after FLR; waiting
Jun 12 12:17:51 pm60-plms kernel: [ 9197.549561] vfio-pci 0000:06:00.0: not ready 16383ms after FLR; waiting
Jun 12 12:18:08 pm60-plms kernel: [ 9215.209807] vfio-pci 0000:06:00.0: not ready 32767ms after FLR; waiting
Jun 12 12:18:43 pm60-plms kernel: [ 9250.026207] vfio-pci 0000:06:00.0: not ready 65535ms after FLR; giving up
Jun 12 12:18:43 pm60-plms pvedaemon[1791]: <root@pam> end task UPID:pm60-plms:00006416:000E01A0:60C47BAC:qmstart:108:root@pam: unable to read tail (got 0 bytes)
Jun 12 12:18:43 pm60-plms kernel: [ 9250.182264] pcieport 0000:00:1c.4: AER: Device recovery successful
...

2022 sügise tähelepanekud

Väited

  • OpenBSD peal nö korralikult NVidia videokaarte ei saa kasutada
  • AMD videokaardid töötavad enam-vähem hästi
  • Intel protsessoritesse integreeritud Intel videokaardid laptop arvutitel töötavad väga hästi

Videokaarte saab kasutada erineval viisil

  • videokaardi kasutamise võimalusi määratleb kas arvuti töötab UEFI või BIOS režiimis
  • nö fb (frame buffer) driveritega
  • nö legacy draiveritega
  • nö kernel modesetting draiveritega (eelistatud variant)

OpenBSD v. 7.2 ja Proxmox v. 7.3 (opt-in kernel v. 5.19; qemu 7.1) puhul amdgpu passthru annab sarnaseid teateid, aga praktiliselt paistab töötavat.

Serial konsooli poole pöördumine üle usb dongle

# cu -s 19200 -l cuaU0
openbsd# dmesg
..
[drm] dce110_link_encoder_construct: Failed to get encoder_cap_info from VBIOS with error code 4!
[drm] dce110_link_encoder_construct: Failed to get encoder_cap_info from VBIOS with error code 4!
amdgpu0: POLARIS12 8 CU rev 0x00
amdgpu0: 3840x2160, 32bpp
wsdisplay0 at amdgpu0 mux 1
pckbd_enable: command error
wskbd1: connecting to wsdisplay0
wskbd2: connecting to wsdisplay0
wsdisplay0: screen 0-5 added (std, vt100 emulation)
pckbd_enable: command error
...

Ubuntu 22.04 ja OpenBSD v. 7.2 vahel barrier kasutamiseks sobib kopeerida Ubuntu 20.04 pealt kolm faili ja kasutada sedasi (põhjusel, et Ubuntu 22.04 sisaldab Barrier v. 2.4.0 ja OpenBSD 7.2 Barrier v. 2.3.4; ja need versioonid ei ole omavahel ühilduvad)

imre@moraal:~$ LD_PRELOAD="/home/imre/libssl.so.1.1 /home/imre/libcrypto.so.1.1" ./barriers -f -c synergy.conf-deb11-ja-obsd72

Mõnel korral võib saada sellise teate, nt chrome käivitamisel

openbsd-tk$ chrome 
amdgpu: os_same_file_description couldn't determine if two DRM fds reference the same file description.
If they do, bad things may happen!

OpenBSD snapshot kasutamine töökohaarvuti kasutusjuhul

Olgu lähtepunkt tavaline OpenBSD v. 7.2. Süsteemi teisendamiseks OpenBSD-current peale sobib öelda

# sysupgrade -s

ning seejärel (peale paari rebooti mis toimuvad automaatselt) öelda pakettide uuendamiseks

# pkg_add -Uu

Tulemusena on kasutada OpenBSD-current süsteem

openbsd-tk$ dmesg | grep -- -current
OpenBSD 7.2-current (RAMDISK_CD) #841: Tue Dec 13 13:21:43 MST 2022
OpenBSD 7.2-current (GENERIC.MP) #885: Tue Dec 13 13:16:41 MST 2022
OpenBSD 7.2-current (GENERIC.MP) #885: Tue Dec 13 13:16:41 MST 2022

UTF-8

xenodm ja xfce4 kasutamisel kasutaja .xsession failis kasutada nt

openbsd-tk$ cat .xsession                                                                                            
export LC_CTYPE="en_US.UTF-8"
# echo "olen xsession" >> /tmp/xession.log
exec startxfce4

ning Terminal programmi enda seadistustes kasutada UTF-8

  • Preferences -> Advanced -> Encoding -> Default character encoding - Default (UTF-8)

Tulemusena

  • Terminal programmis avatud promptis saab kasutada õäöü jms tähti
  • Terminal programmis avatud joe editoris saab kasutada õäöü jms tähti
  • failid on utf-8 formaadis (tõsi, OpenBSD file programm ei ütle, et nad on)

Kasulikud lisamaterjalid

Kasulikud lisamaterjalid