Uroš Popović popisuje, jak si nastavit Linux na desce jako Raspberry Pi Zero, aby je šlo používat jako USB „flešku“.
Andreas Kling oznámil, že jelikož už se nevěnuje nezávislému operačnímu systému SerenityOS, ale výhradně jeho webovému prohlížeči Ladybird, přičemž vyvíjí primárně na Linuxu, SerenityOS opustí a Ladybird bude nově samostatný projekt (nový web, repozitář na GitHubu).
Po dvou měsících vývoje byla vydána nová verze 0.13.0 programovacího jazyka Zig (GitHub, Wikipedie). Přispělo 73 vývojářů. Přehled novinek v poznámkách k vydání.
Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE.
Před 70 lety, 7. června 1954, ve věku 41 let, zemřel Alan Turing, britský matematik, logik, kryptoanalytik a zakladatel moderní informatiky.
NiceGUI umožňuje používat webový prohlížeč jako frontend pro kód v Pythonu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána ve verzi 2024.6. Z novinek lze vypíchnout lepší integraci LLM (OpenAI, Google AI, Ollama) nebo podporu Matter 1.3.
IKEA ve Spojeném království hledá zaměstnance do své nové pobočky. Do pobočky v počítačové hře Roblox. Nástupní mzda je 13,15 liber na hodinu.
Alyssa Rosenzweig se v příspěvku na svém blogu Vulkan 1.3 na M1 za 1 měsíc rozepsala o novém Vulkan 1.3 ovladači Honeykrisp pro Apple M1 splňujícím specifikaci Khronosu. Vychází z ovladače NVK pro GPU od Nvidie. V plánu je dále rozchodit DXVK a vkd3d-proton a tím pádem Direct3D, aby na Apple M1 s Asahi Linuxem běžely hry pro Microsoft Windows.
Byla vydána (𝕏) květnová aktualizace aneb nová verze 1.90 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.90 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Došlo k tomu, čemu jsem dlouho odolávala: předplatila jsem si Spotify. A vzápětí jsem začala řešit, jak zvuk dostat v rozumné kvalitě do velkých reproduktorů připojených k mé audiověži. Dočasným řešením byla malá bluetooth zvuková kartička, ale jaksi to nebylo ono; i přes kvality kodeku LDAC a přes to, že nejsem netopýr, mi další ztrátové kódování po cestě přijde z principu nadbytečné. Navíc dávám přednost D/A převodníkům integrovaným ve věži.
Až doposud nové nahrávky standardně putovaly do adresáře s hudbou na mém domácím serveru, kde v LXC kontejneru běží MPD. To přehrávané skladby posílá na optický výstup starší levné zvukovky Xonar DSX a z ní už signál bliká optikou do receiveru Onkyo R-1045 na druhé straně pokoje. Celkem přímočaré řešení, které se nechá ovládat z kteréhokoli počítače s MPDčkovým klientem. Jak něco podobného udělat se Spotify?
Chvilku jsem koketovala s UPnP, než jsem zjistila, že mi gentoovské pulseaudio-dlna na mém notebooku proti debianímu minidlna na serveru běží buď celkem stabilně přes výchozí MP3 kodek, ovšem ztrátově s menším bitrate, nebo přes bezeztrátový FLAC s permanentními drop-outy, kterých se mi podařilo zbavit jen brutálním navýšením bufferů. Ani jedna varianta pro mě nebyla zajímavá.
Zkoušela jsem i Kodi; televizí sice nedisponuji, takže většina funkcí je pro mě nadbytečná, ale bylo mi řečeno, že pro něj existuje plugin pro podporu Spotify a jde to ovládat i přes webové rozhraní. Plugin existoval, ale tři roky na něj nikdo nesáhl, standardní cestou už nešel nainstalovat a když už se mi ho podařilo do instalace dotlačit násilím, ovládání bylo značně nepraktické a webové rozhraní se kousalo.
No a nakonec mi došla věc, kterou jsem měla před očima od začátku - pokud mám spuštěno více klientů Spotify nad jedním účtem, vidí na sebe a jdou mezi sebou ovládat, takže si ze svého počítače můžu pustit playlist klidně třeba na mobilu položeném ve vedlejší místnosti. A nebo na headless instalaci v debianovém LXC kontejneru na serveru se zvukovkou.
Cílem tedy je nainstalovat aplikaci Spotify do LXC kontejneru s přístupem ke zvukové kartě a bez přístupu ke grafice, v této aplikaci se trvale přihlásit na účet služby Spotify a zajistit její automatické spouštění po startu kontejneru. Nakonec jsem se dobrala k následujícímu postupu, který by se snad mohl hodit i někomu dalšímu:
V prvním kroku je potřeba zprovoznit LXC kontejner s přístupem na zvukovku. Přípravu LXC kontejneru popisovat nebudu, prostě předpokládám, že máte připravený neprivilegovaný kontejner s Debianem Buster, v mém případě v adresáři /mnt/lxc/spotify-test
. V tomto adresáři si vytvoříme podadresář s názvem snd-100000
, do něj nakopírujeme z hostitelského systému obsah /dev/snd
bez podadresářů a přepíšeme v něm vlastnictví tak, aby uid a gid odpovídaly vlastníkovi root:audio
v kontejneru. Já mám uid/gid v kontejneru posunuté o sto tisíc, gid skupiny audio
v kontejneru je 29
, obsah adresáře tedy následně vypadá takhle:
hostitel ~# ls -lh /mnt/lxc/spotify-test/snd-100000/ celkem 0 crw-rw---- 1 100000 100029 116, 6 30. kvě 10.54 controlC0 crw-rw---- 1 100000 100029 116, 3 30. kvě 10.54 pcmC0D0c crw-rw---- 1 100000 100029 116, 2 30. kvě 10.54 pcmC0D0p crw-rw---- 1 100000 100029 116, 5 30. kvě 10.54 pcmC0D1c crw-rw---- 1 100000 100029 116, 4 30. kvě 10.54 pcmC0D1p crw-rw---- 1 100000 100029 116, 1 30. kvě 10.54 seq crw-rw---- 1 100000 100029 116, 33 30. kvě 10.54 timer
Major device number, jak vidno výše, je 116, do konfiguračního souboru kontejneru tedy přidáme tyto dva řádky:
lxc.mount.entry = /mnt/lxc/spotify-test/snd-100000 dev/snd none bind,optional,create=dir lxc.cgroup.devices.allow = c 116:* rwm
Po spuštění kontejneru bychom měli uvnitř v adresáři /dev/snd
vidět něco takového:
hostitel ~ # lxc-attach -n spotify-test spotify-test ~ # ls -lh /dev/snd/ celkem 0 crw-rw---- 1 root audio 116, 6 kvě 30 16:37 controlC0 crw-rw---- 1 root audio 116, 3 kvě 30 16:37 pcmC0D0c crw-rw---- 1 root audio 116, 2 kvě 30 16:37 pcmC0D0p crw-rw---- 1 root audio 116, 5 kvě 30 16:37 pcmC0D1c crw-rw---- 1 root audio 116, 4 kvě 30 16:37 pcmC0D1p crw-rw---- 1 root audio 116, 1 kvě 30 18:19 seq crw-rw---- 1 root audio 116, 33 kvě 30 18:19 timer
Drobná odbočka: osobně moc nestojím o sklony Debianu instalovat i věci, které nejsou nutné, takže normálně vypínám instalaci doporučovaných a navrhovaných balíčků. Ve své standardní šabloně to mám přednastavené, vy si to kdyžtak nastavte:
cat << EOF > /etc/apt/apt.conf.d/99-suggested-packages APT::Install-Recommends "false"; APT::Install-Suggests "false"; EOF
Zkusíme, jestli z LXCčka skutečně vidíme na zvukovku:
apt install alsa-utils aplay /nejakyzvukovysoubor.wav alsamixer
Doinstalujeme si remote display server xpra a věci potřebné k připojení k němu:
apt install openssh-server xpra python-pil xauth
Podle návodu na stránkách Debianu doinstalujeme Spotify plus komponenty, bez kterých odmítá startovat (včetně mnohými nenáviděného Pulseaudia, protože klient Spotify by sice teoreticky měl běhat i s čistou Alsou, ale v praxi mi pak aktuální verze končila segfaultem; po nainstalování PA sice klient nesegfaultoval i když PA nebylo spuštěné, ale často pro změnu začal po ukončení přehrávání vytěžovat procesor na 100%).
apt install gnupg python-dbus dbus dbus-x11 pulseaudio apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4773BD5E130D1D45 echo deb http://repository.spotify.com stable non-free | tee /etc/apt/sources.list.d/spotify.list apt update apt install spotify-client
Vzhledem k tomu, že počítáme s možností spouštět více instancí aplikace Spotify (případně i MPD), je lepší mít Pulseaudio spuštěné v samostatném procesu pod samostatným účtem.
V /etc/pulse/default.pa
tedy odkomentujeme řádek load-module module-alsa-sink
a společně s řádkem load-module module-native-protocol-unix
je upravíme do následující podoby:
load-module module-alsa-sink device=hw:0,0 load-module module-native-protocol-unix auth-group-enable=true auth-group=pulse-access socket=/tmp/pulse-server
Vytvoříme soubor /etc/pulse/client.conf.d/socket.conf
.
cat << EOF > /etc/pulse/client.conf.d/socket.conf autospawn = no default-server = unix:/tmp/pulse-server EOF
Nastavíme práva uživatele, pod kterým poběží služba Pulseaudia.
gpasswd -a pulse pulse-access gpasswd -a pulse audio
No a nakonec vytvoříme unitu /etc/systemd/system/pulseaudio.service
s tímto obsahem:
[Unit] Description=PulseAudio system server [Service] PermissionsStartOnly=true ExecStartPre=/bin/rm -f /tmp/pulse-server ExecStartPre=/bin/mkdir -p /var/run/pulse/ ExecStartPre=/bin/chown -R pulse /var/run/pulse ExecStart=pulseaudio --disallow-exit=yes User=pulse Group=pulse-access [Install] WantedBy=multi-user.target
Ještě nastavit automatické spouštění a můžeme se vrhnout na samotné Spotify.
systemctl daemon-reload systemctl enable pulseaudio.service reboot
Přidáme uživatele, pod kterým se bude Spotify spouštět:
useradd -m -s /bin/bash spotify gpasswd -a spotify pulse-access
Doplníme svůj klíč pro SSH do konfiguračního souboru uživatele spotify; SSH používáme pro úvodní konfiguraci klienta, v běžném provozu může být shozené:
cd /home/spotify mkdir .ssh touch .ssh/authorized_keys chown -R spotify:spotify .ssh chmod 0500 .ssh chmod 0400 .ssh/authorized_keys echo nejakymujklic >> .ssh/authorized_keys
Je vhodné si připojení přes SSH ze svého počítače na kontejner se Spotify vyzkoušet.
Nyní si vytvoříme soubor /etc/systemd/system/spotify@.service
s následujícím obsahem:
[Unit] Description=Spotify Wants=pulseaudio.service [Service] ExecStartPre=/bin/bash -c "/bin/mkdir -p /run/user/$(/usr/bin/id -u %i)" ExecStartPre=/bin/bash -c "/bin/chown %i /run/user/$(/usr/bin/id -u %i)" ExecStart=/usr/bin/xpra start --start-child=/usr/bin/spotify --daemon=no --systemd-run=no --exit-with-children=yes User=%i Group=%i PermissionsStartOnly=true [Install] WantedBy=multi-user.target
No a teď si to spustíme:
systemctl daemon-reload systemctl start spotify@spotify.service
To spotify
za zavináčem je jméno uživatele, pod kterým klienta Spotify spouštíme. Můžeme klidně spustit víc instancí pod více uživateli, třeba extra pro každého člena rodiny, pokud jsou schopni akceptovat, že přehrávat by měl vždy jen jeden z nich.
Pokud na svém počítači nemáme xpra
, doinstalujeme ho*) a pak se připojíme k aplikaci Spotify ve vzdáleném kontejneru a nastavíme přístupové údaje ke službě Spotify, kvalitu streamu, případně zrušíme normalizaci atd.
mujpocitac ~ # xpra attach ssh://spotify@123.45.6.78/
Pozor, pokud po nastavení klasicky zavřete okno Spotify, aplikace na vzdáleném serveru se ukončí. Místo zavření okna je nutné se jen pomocí ikony v trayi odpojit, jinak budete muset restartovat spotify.service
v LXC kontejneru.
Nyní stačí nastavit automatické spouštění spotify@.service
pro uživatele spotify
při startu kontejneru:
systemctl enable spotify@spotify.service
Případně je možné v konfigurácích upravit kvalitu resamplování pulseaudia nebo výchozí vzorkovací frekvenci. V mém případě to vypadá takto:
spotify-test ~ # egrep -v '^\s*(;|#|$)' /etc/pulse/daemon.conf resample-method = speex-float-10 avoid-resampling = yes enable-remixing = no flat-volumes = no default-sample-format = s32le default-sample-channels = 2 default-channel-map = front-left,front-right
Pro jistotu vyzkoušíme reboot kontejneru, služba Spotify by měla nastartovat.
spotify-test ~ # reboot ... hostitel ~# lxc-attach -n spotify-test spotify-test ~ # pstree systemd─┬─5*[agetty] ├─2*[dbus-daemon] ├─pulseaudio───{pulseaudio} ├─rsyslogd───2*[{rsyslogd}] ├─sshd ├─systemd-journal ├─systemd-logind ├─systemd-udevd └─xpra─┬─Xorg───9*[{Xorg}] └─spotify─┬─spotify───spotify───16*[{spotify}] ├─spotify───13*[{spotify}] └─38*[{spotify}]
Start Xorg může na pomalejších procesorech chvilku trvat, na mém Avotonu C2750 naběhne v řádu sekund.
Nyní bychom u sebe měli vidět LXC kontejner spotify-test
v seznamu zařízení připojených k účtu a můžeme případně přehodit přehrávání na tento vzdálený počítač.
No a to je vše. Hudba hraje a my můžeme zase pro změnu jít dělat něco užitečného...
*) Variantou je připojit se pro nastavení přímo přes SSHčkový X11 forwarding, já mám xpra nainstalovaný, takže se raději připojuji přímo k běžící unitě.
Tiskni Sdílej:
127.0.0.1 adclick.g.doublecklick.net 127.0.0.1 *.doublecklick.net 127.0.0.1 adeventtracker.spotify.com 127.0.0.1 ads-fa.spotify.com 127.0.0.1 analytics.spotify.com 127.0.0.1 audio2.spotify.com 127.0.0.1 b.scorecardresearch.com 127.0.0.1 bounceexchange.com 127.0.0.1 bs.serving-sys.com 127.0.0.1 content.bitsontherun.com 127.0.0.1 core.insightexpressai.com 127.0.0.1 crashdump.spotify.com 127.0.0.1 d2gi7ultltnc2u.cloudfront.net 127.0.0.1 d3rt1990lpmkn.cloudfront.net 127.0.0.1 desktop.spotify.com 127.0.0.1 doubleclick.net 127.0.0.1 ds.serving-sys.com 127.0.0.1 googleadservices.com 127.0.0.1 googleads.g.doubleclick.net 127.0.0.1 gtssl2-ocsp.geotrust.com 127.0.0.1 js.moatads.com 127.0.0.1 log.spotify.com 127.0.0.1 media-match.com 127.0.0.1 omaze.com 127.0.0.1 open.spotify.com 127.0.0.1 pagead46.l.doubleclick.net 127.0.0.1 pagead2.googlesyndication.com 127.0.0.1 partner.googleadservices.com 127.0.0.1 pubads.g.doubleclick.net 127.0.0.1 redirector.gvt1.com 127.0.0.1 s0.2mdn.net 127.0.0.1 securepubads.g.doubleclick.net 127.0.0.1 spclient.wg.spotify.com 127.0.0.1 tpc.googlesyndication.com 127.0.0.1 v.jwpcdn.com 127.0.0.1 video-ad-stats.googlesyndication.com 127.0.0.1 weblb-wg.gslb.spotify.com 127.0.0.1 www.googleadservices.com 127.0.0.1 www.googletagservices.com 127.0.0.1 www.omaze.com--- Dete s tim guuglem dopice!
si ji ripni a jeto jako ;D
V tomto adresáři si vytvoříme podadresář s názvem snd-100000, do něj nakopírujeme z hostitelského systému obsah /dev/snd bez podadresářů a přepíšeme v něm vlastnictví tak, aby uid a gid odpovídaly vlastníkovi root:audio v kontejneruJá udělal bind-mount celého
/dev/snd
(a /dev/dri
), R/W přístup pro uživatele uvnitř LXC stačilo přidat pomocí setfacl
Já udělal bind-mount celého /dev/snd (a /dev/dri), R/W přístup pro uživatele uvnitř LXC stačilo přidat pomocí setfaclPřežije to restart? U mě tenhle adresář, pokud se nepletu, vytváří za běhu udev, ale můžu se mýlit, teď to nemám kde vyzkoušet. Mně to takhle na hulváta nakopírované drží už pár let, takže to používám.
/etc/fstab
.
root:audio
tam měl přístup i uživatel 100000
a skupina 100029
z neprivilegovaného kontejneru.
se tam připiše gid uid a takový tydlety hele třeba jako :O ;D
udělat novou skupinu proně provšecky a pro ti to tam ve fstab nastavit jinak jako nevim :O :O
mount -o bind
do jiného adresáře, ale tam právě parametry uid
a gid
nefungují, mount je sice neodmítne, ale na výsledku se nijak neprojeví.
Každopádně já to nepotřebuju řešit. Moje řešení funguje se statickou kopií, trekkerovo řešení s hookem při spouštění kontejneru funguje, patrně by fungovalo i to uvažované pravidlo do udevu. Jen mi prostě nebylo jasné, jak má fungovat to připojování přes fstab. A není mi to jasné stále.
samozřejmě na hostitelském systému jde vytvořit skupinu s GID 100029, jen to považuji za nežádoucíPro ten Steam je to nutné, protože
xhost
nebere UID. Jestli to vytvoří nějakou skulinu, to nevím, taky mě žádná nenapadla. Ale dávám proprietární aplikaci přístup k /dev/dri
, tudíž mě malinké skulinky vlastně nemusí zajímat
K #35 - podle mě to přes fstab řešit nejde.
noa jozef kufner co stim fstab přišel tady vod tý doby několikrát byl a nic sem nenapsal takže asi taky jako neví :O ;D
toje přeci přemenovaná johanka už si si s ní jako povidal v tom svým blogísku vo muzice :O :D :D ;D
nóóó jestli sem jako famózně poetická nevim ale anička se jako určitě nemenuju :D ;D
amigu znám jenom z emulátoru :O ;D
ale jako nedivila bych se amigoj kdyby tendelten chaos trošičku přiživoval a tys mu to jakoby žral i s navyjákem :O :D ;D ;D
jackd
napojený na ovladač dummy
. Nic to nezpracovávalo, nebylo to napojené na žádný HW, stačilo to jen spustit a okamžitě se mi zvedla spotřeba a začalo to topit.
Jinak stable je momentálně 5.4.38.