Pagina 1 van 1

De aids die moderne linux heet

Geplaatst: za mar 14, 2020 5:12 pm
door vi coactus
Waarom wordt alles tegenwoordig geovercompliceerd of hoe je dat ook moet schrijven?
Dmesg staat nog wel wat, maar sinds jaren al is, in ieder geval bij debian, de normale tijdsaanduiding weg [353235.734562] , ah ja dat is gisteren om half zes geweest, nu ja, dmesg --time-format kun je nog gebruiken, zal er wel een alias voor maken ofzo.
journalctl, wtf is er mis met /var/log? Die overigens ook nog steeds gebruikt wordt.
Het gaat me jaren duren voordat ik onthoud dat het journalctl heet. En alle argumenten, je kunt een 'since' tijd aangeven, maar je kunt niet zeggen 10m, om vanaf de afgelopen 10 minuten te zien,, -10m :), je kunt uiteraard niet weten wát er allemaal in de logs gaat staan qua tekst nadat die iets uitgevoerd hebt, of gebeurd is.
Journalctl -n 10
yada

yada
lines 1-11/11 (END)
Ehh geef mij mijn $ eens terug, ik wil helemaal niet daarin blijven hangen. Ik doe zelf wel |more, of shift+page up.
Ik zeg niet dat het programma enkel ziekte is, het heeft ook handige dingen, zoals

Code: Selecteer alles

     --system                Show the system journal
     --user                  Show the user journal for the current user
Eenvoudig tussen user en system, of sinds boot nummer zoveel.
sysctrl -h geeft al meteen eigenlijk de grootste aids weer: Hij pakt je je cursor en je in in een zoals ze het noemen 'pager'. En je moet dus --no-pager gebruiken om normale functionaliteit te krijgen. Ik zie het liever andersom, sinds wanneer is het standaard gedrag om gewoon m'n cursor te jatten voor dat soort onzin. Als je cmd_x -n 10 doe wil ik gewoon de laatste/eerste/etc 10 lijnen (om maar voorbeeld te noemen) krijgen, ik zie geen reden voor dat programma om mijn cursor te blijven jatten. Anders doe ik wel een tail -f.

Kom ik op een tweede aids. Apparmor. Welke idioot zulke gare zooi heeft verzonnen. Dat is eigenlijk waaarmee mijn dmesg nu helemaal volstaat. Tuurlijk, van sommige dingen snap ik het wel. Ik zie niet in wat een browser in m'n fstab moet. Maar ik heb gezeik dat m'n akonadiserver niet in de (/var)/run/<uid> een directory kan maken, terwijl dat naar wat ik lees de nieuwe hippe persoonlijke /tmp zou moeten zijn

Code: Selecteer alles

 audit: type=1400 audit(1584196957.095:20627): apparmor="DENIED" operation="mkdir" profile="/usr/bin/akonadiserver" name="/run/user/1026/akonadi/" pid=112798 comm="akonadiserver" requested_mask="c" denied_mask="c" fsuid=1026 ouid=1026
Blijkt een oude bekende fout te zijn bij het maken van een nieuwe user met KDE. Een keer gelukt om te repareren, maar niet meer. En fout zou allang refixed moeten zijn. Ik krijg het niet meer werkend en heb heimwee naar de tijd dat een mailtje gewoon in een bestand stond en de kans dat je ooit alles kwijt zou raken nihil was. (Ik heb al een gecrashte database liggen ergens met jaren aan email).
In de dir /etc/apparmor.d staan bij mij dus 3 bestanden die ermee te maken hebben. usr.bin.akonadiserver, mysqld_akonadi en postgreql_akonadi. In subdir staat meer, maar die zijn leeg. Maar als je ziet wat er instaat...
Misschien hebben meer mensen de nvidia driver:

Code: Selecteer alles

# vim:syntax=apparmor

#include <tunables/global>

profile nvidia_modprobe {
  #include <abstractions/base>

  # Capabilities


  capability chown,
  capability mknod,
  capability setuid,
  capability sys_admin,

  # Main executable

  /usr/bin/nvidia-modprobe mr,

  # Other executables

  /usr/bin/kmod Cx -> kmod,

  # System files

  /dev/nvidia-uvm w,
  /dev/nvidia-uvm-tools w,
  @{sys}/bus/pci/devices/ r,
  @{sys}/devices/pci[0-9]*/**/config r,
  @{PROC}/devices r,
  @{PROC}/modules r,
  @{PROC}/sys/kernel/modprobe r,

  # Child profiles

  profile kmod {

    #include <abstractions/base>

    # Capabilities

    capability sys_module,

    # Main executable

    /usr/bin/kmod mrix,

    # Other executables

    /{,usr/}bin/{,ba,da}sh ix,

    # System files

    /etc/modprobe.d/{,*.conf} r,
    /etc/nvidia/current/*.conf r,
    @{sys}/module/ipmi_devintf/initstate r,
    @{sys}/module/ipmi_msghandler/initstate r,
    @{sys}/module/nvidia/initstate r,
    @{PROC}/cmdline r,
  }

  # Site-specific additions and overrides. See local/README for details.
  #include <local/nvidia_modprobe>
}


Dat is dus alleen al nodig om je nvidia driver te mogen laden.

Wat ik het probleem vind van al dit soort systemen, zeker als je ze allemaal optelt. Het wordt zo ondoorzichtig. Waar je vroeger een fout, kreeg je een duidelijke error en was het in veel gevallen makkelijk te fixen. Nu moet je ineens verstand hebben van al die verschillende mechanismen, ik ben er vast nog tig vergeten. Ja leuk, het internet is gegroeid in al die jaren, maar ook het aantal fouten dat op elkaar lijkt, maar niet dezelfde fix hebben en zo m'n systeem dus al vol halfbakken fixes zit, waardoor je op een gegeven moment maar denkt service apparmor stop && chmod 777 -R /*

Ik wacht op het commentaar van de normaal gesproken goedprater :)

Re: De aids die moderne linux heet

Geplaatst: za mar 14, 2020 5:42 pm
door fietser
Ik snap hier niets van.
Misschien komt het omdat ik slackware gebruik.

Groet.

Re: De aids die moderne linux heet

Geplaatst: za mar 14, 2020 6:40 pm
door vi coactus
fietser schreef: za mar 14, 2020 5:42 pm Ik snap hier niets van.
Misschien komt het omdat ik slackware gebruik.

Groet.
Slackware <3

Re: De aids die moderne linux heet

Geplaatst: za mar 14, 2020 9:01 pm
door fietser
nee hoor, slackware 14.2

Re: De aids die moderne linux heet

Geplaatst: zo mar 15, 2020 12:14 pm
door pascal
fietser is slackware nog steeds gevrijwaard van dat vermalije System-D ?

Re: De aids die moderne linux heet

Geplaatst: zo mar 15, 2020 12:39 pm
door vi coactus
fietser schreef: za mar 14, 2020 9:01 pm nee hoor, slackware 14.2
Not sure if serious.

Re: De aids die moderne linux heet

Geplaatst: zo mar 15, 2020 2:23 pm
door iswrong
robert schreef: za mar 14, 2020 5:12 pm Ehh geef mij mijn $ eens terug, ik wil helemaal niet daarin blijven hangen. Ik doe zelf wel |more, of shift+page up.
Als dat het enige probleem is ;).

Eens dat het een rare default is hoor. Waarschijnlijk de default omdat mensen anders journalctl draaien en er 20MB aan logs naar de terminal gespuugd worden. Overigens kun je dit wel uitzetten door SYSTEMD_PAGER naar een lege string te zetten. Verder wordt de pager natuurlijk niet gebruikt als je journalctl e.d. in een pipeline gebruiken.
Tuurlijk, van sommige dingen snap ik het wel. Ik zie niet in wat een browser in m'n fstab moet.
Yep. Hoewel AppArmor wel een jaren 00 manier is om dit te doen. AppArmor en SELinux werken prima voor servers, je weet vrij goed waar bijv. nginx bij mag komen. Maar voor desktopapplicaties werkt het niet goed, iedereen gebruikt applicaties op een andere manier, paden verschillen te veel tussen distributies, etc. Bovendien kun je niet van een gemiddelde gebruiker verwachten dat ze AppArmor of SELinux policies gaan bijwerken.

Een modernere oplossing is sandboxing als bijv. Flatpak dat doet. In principe mag een applicatie niet buiten z'n zandbak, maar je kunt het wat 'entitlements' geven. Verder gebruikt Flatpak portals, waarmee een applicatie bijv. met goedkeuring van de gebruiker meer mag (webcam gebruiken, bestand openen, etc).
terwijl dat naar wat ik lees de nieuwe hippe persoonlijke /tmp zou moeten zijn
Ja, gelukkig. Gedeelde /tmp was een bizar slecht idee. Te veel applicaties die niet-willekeurige namen voor temporary files gebruiken of veel te royale permissies zetten.
Ik krijg het niet meer werkend.
Dan ben ik blij dat ik een Linux distributie gebruik, waarbij m'n systeem volledig declaratief beschreven is. Ik kan letterlijk in vijf minuten een nieuwe machine opzetten met exact dezelfde configuratie als ik nu heb. Of als ik niet tevreden ben met een verandering, boot ik gewoon in het systeem van voor die verandering en is er alsof er niets gebeurd is.
Wat ik het probleem vind van al dit soort systemen, zeker als je ze allemaal optelt. Het wordt zo ondoorzichtig. Waar je vroeger een fout, kreeg je een duidelijke error en was het in veel gevallen makkelijk te fixen. Nu moet je ineens verstand hebben van al die verschillende mechanismen, ik ben er vast nog tig vergeten.
Eens. Vroegah kon je een systeem vrijwel helemaal begrijpen. Met bijv. OpenBSD is dat nog steeds grotendeels het geval (aannemende dat je je redelijk tot het base system beperkt). Maar de wereld is ook gewoon veel complexer geworden. Applicaties zijn groter en complexer, het internet is veel onveiliger geworden, we vonden het een goed idee om massale hoeveelheden fundamenteel onbetrouwbare code te draaien (aka JavaScript), GPUs zijn niet meer alleen voor het accelereren van 2D primitieven, maar doen video acceleratie, Vulkan, machine learning, etc.

Het helpt ook niet dat Linux als groter ecosysteem niet echt ge-coordineerd is. Dus het is vaak een samenhangsel van verschillende ideeën, die ook nog eens om de haverklap veranderen.

We gaan niet meer terug naar de jaren '90 of vroege jaren '00. De grotere complexiteit in computers blijft, dus het is zaak om goede tools te hebben om de complexiteit te managen. Naar mijn mening is systemd hier vrij goed ingeslaagd. Het werkt beter dan wat er aan voorafging. Het heeft een redelijk consistente interface. Het is makkelijk te configureren. Plus het is allemaal netjes gedocumenteerd in man pages. Veel andere dingen doen m'n hoofd wel duizelen, waaronder: PulseAudio, PolicyKit, NetworkManager, al die dingen die aan D-Bus hangen. Ik heb wel een idee wat ze ongeveer horen te doen, maar als het kapot gaat, geen idee hoe je het zou debuggen.
Ik wacht op het commentaar van de normaal gesproken goedprater :)
Check!

Re: De aids die moderne linux heet

Geplaatst: zo mar 15, 2020 4:06 pm
door vi coactus
iswrong schreef: zo mar 15, 2020 2:23 pm
We gaan niet meer terug naar de jaren '90 of vroege jaren '00. De grotere complexiteit in computers blijft, dus het is zaak om goede tools te hebben om de complexiteit te managen. Naar mijn mening is systemd hier vrij goed ingeslaagd. Het werkt beter dan wat er aan voorafging. Het heeft een redelijk consistente interface. Het is makkelijk te configureren. Plus het is allemaal netjes gedocumenteerd in man pages. Veel andere dingen doen m'n hoofd wel duizelen, waaronder: PulseAudio, PolicyKit, NetworkManager, al die dingen die aan D-Bus hangen. Ik heb wel een idee wat ze ongeveer horen te doen, maar als het kapot gaat, geen idee hoe je het zou debuggen.
Ik wacht op het commentaar van de normaal gesproken goedprater :)
Check!
Blij dat jij het dus aardig eens bent.
PulseAudio is al vrij oud zo ook D-Bus.
Die andere twee dingen geen idee wat het is. Wat ik qua netwerk wel weer apart vind is dat ik twee interfaces heb, de een heet eth0 en de ander eno1. Waarom niet eth1 of eno0?
Maar veel dingen die 'kapot' gaan/niet goed werken zijn lastig te debuggen ja.
Neem 5.1 audio, gebruik ik bv mplayer -channels 6 <een of ander 6 kanaalsbestand>, en in KDE selecteer ik m'n S/PDIF als uitgang voor mplayer, dan werkt het. Maar mijn receiver geeft geen 5.1 mode aan, wat onder windows wel gebeurde. Maar het werkt wel. Bij een testbestand, bij ander dingen is het soms lastiger te controleren omdat niet alles even goed gebruik maakt van de surround kanalen.

Mijn films hebben nog steeds last van tearing, ik heb volgens mij alle 'oplossingen' geprobeerd, maar dat is weer zoiets wat geen error geeft en blijkbaar ook geen eenduidige oplossing heeft die over alle distributies en driverversies werkt.

KDE: Ik ben altijd een fan van kde geweest, maar wat een complex gedrocht het eigenlijk is geworden... Ik snap dat er een fork van kde 3 gemaakt is.

Wat is trouwens robuuster, een mysql/soortgelijk db, een postgresql db of een sqlite db? Robuuster in de zin van er zit een fout in de database en je wilt zoveel mogelijk data terugkrijgen.

(Wat dat betreft zijn zip varianten vreselijk, je mist het einde van het bestand en eigenlijk ben je meteen al je data kwijt).

Re: De aids die moderne linux heet

Geplaatst: zo mar 15, 2020 5:18 pm
door iswrong
robert schreef: zo mar 15, 2020 4:06 pm Wat is trouwens robuuster, een mysql/soortgelijk db, een postgresql db of een sqlite db? Robuuster in de zin van er zit een fout in de database en je wilt zoveel mogelijk data terugkrijgen.
Backups? :roll:

Verder geen idee. Voor zover ik weet gebruiken alle databases een journal/log. Dus onder veel omstandigheden zou een DBMS een database daarmee weer in een consistente staat moeten krijgen. Maar ik denk dat de beste oplossing regelmatige, incrementele backups zijn.

Re: De aids die moderne linux heet

Geplaatst: ma mar 16, 2020 8:13 am
door fietser
Voor pascal,
https://linux.slashdot.org/story/16/07/ ... stemd-free

Voor robert,
Sure not serious.

Groet.

Re: De aids die moderne linux heet

Geplaatst: ma mar 16, 2020 4:58 pm
door vi coactus
iswrong schreef: zo mar 15, 2020 5:18 pm
robert schreef: zo mar 15, 2020 4:06 pm Wat is trouwens robuuster, een mysql/soortgelijk db, een postgresql db of een sqlite db? Robuuster in de zin van er zit een fout in de database en je wilt zoveel mogelijk data terugkrijgen.
Backups? :roll:

Verder geen idee. Voor zover ik weet gebruiken alle databases een journal/log. Dus onder veel omstandigheden zou een DBMS een database daarmee weer in een consistente staat moeten krijgen. Maar ik denk dat de beste oplossing regelmatige, incrementele backups zijn.
Niet zo vloeken.
Ik zou zoiets eens moeten opzetten. Maar ingewikklde dingen met journals/logs geloof ik niet in. Ik denk dat het beste nog is om compressie uit te zetten zodat alles in plain text in de database staat.
Ik heb nog een gecrashte database ergens staan waar je gerust op los mag gaan hoor? :)
fietser schreef: ma mar 16, 2020 8:13 am Voor pascal,
https://linux.slashdot.org/story/16/07/ ... stemd-free

Voor robert,
Sure not serious.

Groet.
♥ Zo kannie ook met, waarschijnlijk unicode? Overigens is mijn eerste versie wel ergens in de 3.x afaik. Heb de dubbel cd-rom nog :)

Re: De aids die moderne linux heet

Geplaatst: di mar 17, 2020 12:00 pm
door keymaker
system-d? de fik erin ermee!! :twisted:
Zelfde geld voor al die nieuwe build system zooi....wat is er mis met configure/make/make install???

Re: De aids die moderne linux heet

Geplaatst: di mar 17, 2020 2:39 pm
door iswrong
keymaker schreef: di mar 17, 2020 12:00 pm Zelfde geld voor al die nieuwe build system zooi....wat is er mis met configure/make/make install???
Alles?

Het configure script van coreutils is ~2MB (!). Ter vergelijking, de source code van coreutils zelf is 3MB. En het bevat dit soort parels:

Code: Selecteer alles

#ifdef HAVE_UTMPX_H
# include <utmpx.h>
#endif
#ifdef HAVE_UTMP_H
# if defined _THREAD_SAFE && defined UTMP_DATA_INIT
   /* When including both utmp.h and utmpx.h on AIX 4.3, with _THREAD_SAFE
      defined, work around the duplicate struct utmp_data declaration.  */
#  define utmp_data gl_aix_4_3_workaround_utmp_data
# endif
# include <utmp.h>
#endif
WTF hebben we checks en work arounds for een proprietary UNIX uit de jaren '90. Laat IBM hun eigen dingen onderhouden. (Al betwijfel ik het dat coreutils nog op AIX 4.3 werkt.)

De BSDs hebben allang begrepen dat autoconf/autotools troep is ;).

Re: De aids die moderne linux heet

Geplaatst: di mar 17, 2020 4:14 pm
door vi coactus
Maar checks en workarounds hebben niet perse wat met compile utils te maken?
Een mooie manier hoe alles nog steeds gewoon mis blijft gaan zijn webbrowsers en -sites.

Code: Selecteer alles

           if (navigator.userAgent.toLowerCase().indexOf('chrome') === -1 &&   // not chrome
                navigator.userAgent.toLowerCase().indexOf('safari') === -1 &&   // not safari
                navigator.userAgent.toLowerCase().indexOf('edge') === -1 &&     // not edge
                !(!(window.ActiveXObject) && "ActiveXObject" in window))        // not ie 11
            {
                var s = document.getElementById('scrollBlocker');
                if (s.addEventListener) // older FF
                    s.addEventListener('DOMMouseScroll', preventDefault, false);
                s.onwheel = preventDefault; // modern standard
                s.onmousewheel = document.onmousewheel = preventDefault; // older browsers, IE
            } else {
                window.setTimeout(fixScrollingForChrome, 100);
            }

            function fixScrollingForChrome() {
                var f = document.getElementsByTagName("EMBED");
                if (f.length) {
                    f[0].style.pointerEvents = 'auto';
                } else {
                    window.setTimeout(fixScrollingForChrome, 100);
                }
            }
En ondanks al die bullshit werkt het alsnog niet op de browser die ík gebruik :') (In dat geval Firefox de niet ESR variant).
KDE zette met KHTML wel een mooi begin bleek uiteindelijk, spijtig alleen dat het balletje nu feitelijk bij 1 partij ligt, een waarbij ik zelf liever niet heb dat het ligt.