8. Juli 2024

Grep - bliv en søgehaj på få minutter

Hvis du lever i et terminalvindue, så er det godt at kende grep-kommandoen. Grep kan søge i filer og indhold, der outputtes på skærmen.

Bruger du grep uden parametre, så sker der intet, for den forventer at modtage input et sted fra. Men grep kan bruges til at søge i filer. Skriver du f.eks

grep "hest" mintekst.txt

så vil den søge i… ja, nemlig mintekst.txt efter ordet hest. Føjer du en ekstra parameter på, f.eks en ny tekstfil, vil den søge i begge angivede filer. Du kan også anvende wildcards såsom *.txt, så vil kommandoen søge i samlige txt-filer i den aktive mappe.

grep "hest" *.txt

grep er imidlertid ikke særlig hjælpsom, hvis du søger i en større tekst, for så meddeler den dig egentlig bare, at teksten findes. Men du kan tilføje en parameter, der hedder -n, så vil grep også outputte linjenummeret som den fundne tekst står på.

grep -n "hest" *.txt

Føjer du -r på, så søger grep igennem alle filer, også rekursivt i undermapper, og så bliver det noget nemmere at lede efter f.eks bestemte linjer kode i store projekter (der findes andre hurtigere værktøjer såsom ripgrep).

grep -rn "hest"

Du kan også få grep til fremhæve bestemte linier fra andre kommandoer, hvis du “sender” indholdet til grep.

ps aux | grep -i "firefox"

vil vise dig om Firefox er en aktiv, kørende process, -i betyder at grep søger gennem alt indhold uanset om der er forskel på store eller små bogstaver.

Mere hjælp

Har du brug for mere hjælp, kan du altid skrive

man grep

i terminalen

DRM på Linux og Android (1. del)

Okay, dette er ikke en “sådan gør du”-tutorial, for DRM er ikke et område, jeg har rodet ret meget ved, og der er ikke noget entydigt svar på, hvordan du får DRM-understøttelse til at virke for netop din type hardware. Så du skal betragte dette opslag som et “nørden udforsker” i bedste Indiana Jones-stil.

Jeg ser film på mit TV, via Googles proprietære Chromecast, så jeg har ikke rigtig bakset med DRM… før nu. Men det slår mig, at mange Linux og Android-distributioner har forskellige tilgange til afvikling af DRM-beskyttet materiale. Nogle har fuldstændig support, andre basal eller slet ingen (og som det skal vise sig, så spiller hardwaren en stor rolle).

Android-kernen er principelt set en heftigt modificeret Linux-kernel - som Google vistnok har lovet at bringe tættere på mainline Linux-kernel’en med tiden. I dette opslags perspektiv giver det dog bedst mening at omtale de to forskelligt, da de har hver deres økosystem.

2025 - the year of the Linux desktop?

I og med, at jeg forventer, at en del mennesker vil afprøve Linux, når Microsoft stopper Windows 10s support i 2025, så må jeg hellere prøve at dykke ned i, hvordan man får DRM-understøttelse til at spille på Linux, Android og andre platforme, så vi måske kan redde folk fra at smide deres gamle fungerende computer på lossepladsen.

Microsoft dikterer naturligvis ikke noget direkte, men når de kunstigt øger hardwarekravene ift. den nyere Windows 11 og med tiden stopper sikkerhedsopdateringerne til Windows 10, så skaber de et kunstigt behov, som tvinger folk til at opgradere. Her er det jo så, jeg vil gentage, at jeg synes folk skal lege med Linux og overveje, om deres behov kan dækkes af dette frie og åbne vidunder.

Det er dog ikke uden forhindringer, og her kommer en af dem:

DRM og streaming

Streamingtjenester såsom Netflix og Amazon Prime bruger Google Widevine DRM til at beskytte sit indhold mod kopiering. Det stiller nogle krav til ens udstyr. Widevine har forskellige lag af beskyttelse. L1, L2 og L3. L1 er den mest restriktive, den der gør, at du kan se FullHD og 4K-indhold, som kræver “TrustZone”-support i processoreren på dit udstyr. Det har det meste moderne hardware, det er på softwaresiden, det halter.

Android Authority skriver:

To meet security Level 1, all content processing, cryptography, and control must be performed within the Trusted Execution Environment (TEE) of the device’s processor. This is to prevent external tampering and copying of the media file. All ARM Cortex-A processors implement TrustZone technology, creating a hardware separation that allows a trusted OS (such as Android) to create a TEE for DRM, and other secure applications.

https://www.androida … ne-explained-821935/

Kan du slet ikke se DRM-beskyttet materiale i HD og UltraHD på din Linux- eller Android-box, så er det fordi din distribution mangler Widevine L1-certificering.

Kan du kun se indhold i SD-kvalitet, så kører din distribution Widevine niveau L3, og du må så se medieindhold, der ligner LEGO-klodsgrafikken fra Minecraft. Det fungerer måske på mobiltelefoner, men er ikke så holdbart til mediestreaming på dit TV.

Hvordan ser det ud på Linux?

Google Chrome, ingen problemer.
Understøttelsen burde være bagt ind i browseren.
Virker det alligevel ikke, så prøv at se om libwidevine mangler.

Folkene bag Brave-browseren anbefaler, man finder Widevine-filerne i en understøttet distro, som f.eks RaspberryPi OS
https://support.brav … RM-protected-content

Ifølge Mozilla, så understøtter Firefox Widevine på 64-bits Linux-udgaver
https://support.mozi … et-indhold-i-firefox,
hvis du har problemer med afspilningen, så se efter om der er sat flueben i “Afspil DRM-beskyttet indhold” inde i indstillingerne. Virker det stadig ikke, kan det ske, at du skal hente “libwidevine” fra din distros pakkerepository. Det kan hedde noget forskelligt, så helgardér ved at søge på “widevine”.

Projektet “Ungoogled Chromium” kaster håndklædet i ringen ift. DRM og anbefaler, at man henter Google Chrome:
https://ungoogled-so … ed-chromium-wiki/faq

Raspberry Pi OS og Chromium ser ud til at være understøttet (tester i 2. del.) - så burde det også virke med Chromium på andre platforme med lidt tweaks af kildekoden. Chromiums kildekode er dog en ordentlig motherf… på adskillige gigabyte, så jeg hopper elegant over den del, selvom det kribler i fingrene for at prøve.
https://forums.raspb … ewtopic.php?t=347736

Det er dog lidt bekymrende at se, at man skal “himstregimse” en fungerende distribution sammen, og jeg tænker at mange ville være irriterede over at skulle igennem disse trin.

Hvad med Android?

På Android er det lidt mere mudret. Googles Android og ARM-processorerne sidder hårdt på markedet for diverse dedikeret streaminghardware, så har din hardware en 64-bit ARM CPU (armv8/aarch64), så er du dækket ind. Alle moderne Qualcomm og MediaTek-CPU’er benytter ARM-kerner, og de burde derfor også virke.

Til syvende og sidst handler det derfor om, hvorvidt Widevine er aktiveret i Android-distributionen, du bruger. Og som om TrustZone-platformen ikke er sofistikeret nok i forvejen, så spiller status på dit udstyrs bootloader også en rolle.

På Reddit ser det ud som om, at Google-certificerede Android-udgaver virker “ud af boksen”, mens der er problemer med forskellige Android-distro forks a’ la LineageOS: Reddit-tråd: Does Netflix HD work in LineageOS. En bruger “driverdis” nævner:

L1 only works on stock roms that went through Google’s Widevine L1 certification process. On some phones (looking at you OnePlus) this drops to L3 when the boot loader is unlocked.

Det ser dermed ud til, at man må “sluge nogle kameler”, når man kører en åben ikke-kommerciel udgave af et operativsystem. Men hvor vidt rækker problemet egentlig? Det vil jeg prøve at kigge lidt på i næste del, for jeg har tilfældigvis en lille Raspberry Pi, der laver ingenting, og jeg ved, at den er et yndet omkostningseffektivt mediecenter for mange.

Jeg graver videre :-)

2. Juli 2024

Destination Linux, RISC-V og Framework

Det er år og dage siden jeg har set “Go’ morgen Danmark” på TV. I stedet ynder jeg at hoppe på Youtube og se f.eks Destination Linux til min morgenkaffe.

Destination Linux
‘ seneste episode berører nogle af de emner, jeg synes er superinteressante ift. “morgendagens” computere. RISC-V processoren og Framework-computeren. Det er to områder, jeg er megabegejstret for, for det er alternativer til den sti, som megakoncernerne har lagt for os. Og nu lader det til, at det hele smelter sammen, for DeepComputing har lavet et mainboard, der passer i den modulært opbyggede laptop fra Framework.

RISC-V

RISC-V-processoren er Open Source, så du kan lave dit eget CPU-design “i morgen”. Den er ligesom ARM-processoren en Reduced Instruction Set Architechture. I sammenligning med CISC-processorer (C for complex) som du kender fra AMD og Intel, kan en RISC-processor ofte - men ikke altid - lave beregninger hurtigere end en CISC-processor. Baggrunden er, at den bruger et mindre antal instruktioner til at udføre en handling, end det er tilfældet for en CISC-processor ved simple operationer.

Men dens virkelige fordel er, at den kan gøre det med meget lavere strømforbrug, hvorfor RISC-processorer fra f.eks ARM og Qualcomm er utroligt populære i f.eks mobiltelefoner. RISC-V-processoren findes endnu ikke i ret mange mainstream-produkter, for den er stadig lidt underpowered og der mangler værktøjer. Men udviklingen sker med kvantespring i øjeblikket, så jeg er slet ikke i tvivl om at det bliver rigtig spændende indenfor et par år.

Link: https://riscv.org/

Framework-laptop’en

Framework-laptop’en er spændende produkt, jeg håber, vi kommer til at høre meget mere om. På overfladen ligner det bare en laptop, men djævlen ligger i detaljen. Det, der er specielt ved Framework-laptop’en, er at du kan udskifte hardwaren i den i moduler - lidt ligesom din selvbyggede desktop-PC. Jeg er ikke ekspert på området, men det virker langt mere bæredygtigt at udskifte komponenter end det Apple, Dell og de andre kan præstere, for de vil gerne have dig til at skifte hele dynen med jævne mellemrum - og gerne så ofte som muligt. De har muligvis trade-in-programmer, men hvad så med alle de PC’ere og Macs, der ikke bliver sendt ind - hvor ender de? Kan man være sikker på, at det ikke ender på lossepladsen? (psst. installér Linux eller en BSD på din gamle hardware)

Anyways, Framework er et friskt pust i en på mange måder fastlåst IT-branche - jeg håber mange flere arver den måde at bygge hardware på, for det kunne være en “gamechanger” ift. en mere bæredygtig fremtid.

Links

https://frame.work/dk/en
Framework RISC-V mainboard

25. Juni 2024

OMAKUB - For the love of Linux

Bag det interessante navn findes et setup, der gør din Ubuntu 24.04 klar til udvikling.

Det er ikke en distribution, men et install-script, der lægger sig oven på Ubuntu 24.04.

Bag setup’et står David Heinemeier-Hanson, grundlæggeren af Ruby On Rails + vild Le Mans-racerkører - og han er skiftet fra Apple til Linux … Og det er skægt, for David og Macs nærmest har hængt sammen som ærtehalm siden han startede udviklingen af Rails og Basecamp sammen med Jason Fried i 37signals.

Jeg er spændt på, om DHH hænger ved, eller om han møder for mange roadblocks ifm. skiftet, så han evt. hopper tilbage til MacOS. Det håber jeg naturligvis ikke, fordi jeg tror og håber, at hans interesse for feltet kan betyde, at flere tjekker Linux ud. Der har vi mennesker jo sommetider en flokmentalitet, der gør, at vi lige indimellem skal bruge nogle andre, til at validere at noget er værd at bruge tid på. Og jeg tror mange Mac-brugere spørger, hvorfor de skal bruge tid på Linux, indtil de så selv mærker de restriktioner, Apple pådutter dem enten direkte eller indirekte.

OMAKUB kan også puttes på en Ubuntu i en virtual maskine, hvis du ikke er helt klar til at skifte.

Installationsmetoden af OMAKUB er interessant og veludført - faktisk så mener jeg, at 90% af de respins af distroer, du finder på DistroWatch, kunne have været distribueret på denne måde istedet for at lave en hel ISO ud af det. Supercool! Jeg tror egentlig lige, jeg forker projektet og laver mine egne tilpasninger. Og OMAKUB-repo’et er sirligt organiseret, så det er ret nemt at følge hvad hver enkelt script gør.

Sidenote: Jeg har kigget på Ruby og Rails ad flere omgange. Det er sjovt, men jeg tænkte dengang, at code scaffolding var det mest bøvlede, jeg nogensinde havde set. “Lad mig da køre mine SQL-scripts i fred”, tænkte jeg - for jeg ville vide, hvad der foregik, og synes at db-migreringsprocessen var spooky. Det viste sig jo så, at være ret overskueligt alligevel - og nu vil jeg helst ikke undgå den slags CLI-tools, fordi det sparer tid og jeg er “tåsset” med, at jeg kan definere database-stuff i kode.

Rails var skyld i, jeg lærte om MVC-designmønstret i sin tid. Og jeg synes stadig den form for kodeseperation er noget af det fineste, der eksisterer, fordi det er så tydeligt, hvad der foregår (hvisker… Separation of Concerns). Skæbnen ville, at der ikke fandtes/findes nogen Ruby-hosts i DK, så jeg nåede aldrig videre. Men når jeg læser Ruby-kode, så kan jeg godt forstå, hvorfor så mange er begejstret for sproget og Rails. Nu - mange år senere - har vi alle mere eller mindre nem adgang til cloud-servere, så måske skal jeg kaste mig over Ruby og Rails igen?

Links

https://github.com/basecamp/omakub
https://rubyonrails.org/
https://ddh.dk/

21. Juni 2024

Zellij + Alacritty = <3

Jeg ved, der er mange, der sværger til tmux, når det gælder en terminal emulator med flerpanel og tab support på Linux/*BSD. Men gør dig selv den tjeneste at prøve Zellij + Alacritty. Sidstnævnte smider noget af arbejdsbyrden over på GPU’en, og hvis du som mig er vant til at bruge GNOME terminal, så vil du mærke en gigantisk forskel - den reagerer hurtigere ved f.eks skærmopdateringer og tastetryk (sidstnævnte kan også være fordi, jeg har justeret responstiden på mit keyboard for nylig…).

Det tager lidt tid at sætte Zellij op, men du kan konfigurere den akkurat, som du ønsker, med foruddefinerede layouts. Layoutet kan aktiveres via en kommandolinieparameter, så du kan have forskellige setups i dine forskellige projekter. Jeg har f.eks bare et shellscript i roden af mine kodeprojekter, der starter Zellij op i en bestemt konfiguration.

Lidt syslerier til weekenden, måske?
God weekend i hvert fald! :)

Links

Zellij
Alacritty