Byla vydána verze 0.2.0 v Rustu napsaného frameworku Pingora pro vytváření rychlých, spolehlivých a programovatelných síťových systémů. Společnost Cloudflare jej letos v únoru uvolnila pod licencí Apache 2.0.
Open source RDP (Remote Desktop Protocol) server xrdp (Wikipedie) byl vydán ve verzi 0.10.0. Z novinek je vypíchnuta podpora GFX (Graphic Pipeline Extension). Nová větev řeší také několik bezpečnostních chyb.
Rocky Linux byl vydán v nové stabilní verzi 9.4. Přehled novinek v poznámkách k vydání.
Dellu byla odcizena databáze zákazníků (jméno, adresa, seznam zakoupených produktů) [Customer Care, Bleeping Computer].
V lednu byl otevřen editor kódů Zed od autorů editoru Atom a Tree-sitter. Tenkrát běžel pouze na macOS. Byl napevno svázán s Metalem. Situace se ale postupně mění. V aktuálním příspěvku Kdy Zed na Linuxu? na blogu Zedu vývojáři popisují aktuální stav. Blíží se alfa verze.
O víkendu 11. a 12. května lze navštívit Maker Faire Prague, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.
Byl vydán Fedora Asahi Remix 40, tj. linuxová distribuce pro Apple Silicon vycházející z Fedora Linuxu 40.
Představena byla služba Raspberry Pi Connect usnadňující vzdálený grafický přístup k vašim Raspberry Pi z webového prohlížeče. Odkudkoli. Zdarma. Zatím v beta verzi. Detaily v dokumentaci.
Byla vydána verze R14.1.2 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.
Dnešním dnem lze již také v Česku nakupovat na Google Store (telefony a sluchátka Google Pixel).
Programming stuff. And stuff.
# Pull base image.
FROM ubuntu
# Setup user with the same UID/GID as on your host system to make X session work over socket
RUN export uid=1000 gid=1000 && \
mkdir -p /home/developer && \
echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd && \
echo "developer:x:${uid}:" >> /etc/group && \
echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer && \
chmod 0440 /etc/sudoers.d/developer && \
chown ${uid}:${gid} -R /home/developer
# Install Chrome
RUN \
apt-get install -y wget && \
wget -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list && \
apt-get update && \
apt-get install -y google-chrome-stable
# Define working directory.
WORKDIR /home/developer
# Define default command.
CMD ["bash"]
Na vytvoření image pustíme: docker build chrome-browser. Až se všechno dotahá a nainstaluje, musíme zjistit, jaký socket používá pulseaudio, asi nejlépe přes lsof -p $(pidof pulseaudio) | grep 'unix.*/native'. Nevím, zda existuje lepší způsob. Výsledek bude vypadat následovně:
% lsof -p $(pidof pulseaudio) | grep /native
pulseaudi 28453 user 9u unix 0xffff8800b3edf740 0t0 716743 /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native
pulseaudi 28453 user 31u unix 0xffff88022fca2740 0t0 717186 /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native
pulseaudi 28453 user 33u unix 0xffff88017181dc00 0t0 716749 /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native
pulseaudi 28453 user 34u unix 0xffff8802335cc840 0t0 797769 /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native
Pojmenujeme si image jako "chrome-browser". Nejprve spustíme výpis kontejnerů přes docker images a tagneme ho jako "chrome-browser".
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
none none 3a7eba31e1d4 3 minutes ago 536.5 MB
# docker tag 3a7eba31e1d4 chrome-browser:latest
Chrome browser uvnitř dockeru spustíme následovním skriptem, který se postará o komunikaci X serveru a pulseaudio přes unix socket:
#!/bin/bash
docker run -ti --rm \
-u developer \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e PULSE_SERVER=unix:/home/developer/pulse \
-v /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native:/home/developer/pulse \
-w /home/developer \
chrome-browser \
google-chrome
Poznámka: pokud změníte systém uvnitř docker image, musíte ho commitnout přes docker commit z host systému. Až bude všechno hotové, můžete si v docker kontejneru odstranit /etc/sudoers.d/developer, který umožňuje uvnitř kontejneru sudo na "lokálního roota" bez hesla.
Funguje celá funkcionalita Chrome browseru, U2F má mouchy - pod rootem funguje bez problémů, pod obyčejným uživatelským účtem má pár omezení. Chtělo to docela dlouhé debugování přes strace a další nástroje, ale funguje. Token musí být vložen do USB před spuštením kontejneru a musíte znát jeho hidraw device, např. /dev/hidraw4 (jinak docker vytvoří na host systému adresář stejného jména). Udev pravidla umí symlinky, ale symlink nestačí, chtělo by to hardlink. Takže skript bude vypadat (pozor na to, že --privileged dává přístup snad ke všem zařízením host systému, jenže bez něj k hidraw nepřistoupíte jako běžný user v dockeru):
#!/bin/bash
docker run -ti --rm \
-u developer \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e PULSE_SERVER=unix:/home/developer/pulse \
-v /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native:/home/developer/pulse \
-w /home/developer \
-v /dev/bus/usb:/dev/bus/usb \
-v /sys/bus/usb/:/sys/bus/usb/ \
-v /sys/devices/:/sys/devices/ \
-v /dev/hidraw4:/dev/hidraw4 \
--privileged \
chrome-browser \
google-chrome
Mimochodem, alsa mi nefungovala křížem přes host/kontejner hranici s libovolnou kombinací device a cgroup flagů, v strace se vždy výsledek otevření zvukové karty byl buď odmítnut přístup (EPERM) nebo dočasně nepřístupné (EAGAIN). Myslím, že je to stejně s tím pulseaudiem lepší.
Tiskni Sdílej:
echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer
-v /dev/bus/usb:/dev/bus/usb \
-v /sys/bus/usb/:/sys/bus/usb/ \
-v /sys/devices:/sys/devices/ \
--privileged \