Allgemein
Knowledge Base
- Neue Struktur (In Arbeit)
- Computertechnisches
Community
Privat
| ||
Archiv: 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 |
|
Hier findet Mann (Frau vielleicht auch) Information und ggf. Sorgen bzw. | ||
Fragen? Keine! Gut so, weitermachen. |
Oro, mein Riechfläschchen! |
Noch ca. 297 Tage...
von jetzt an gerechnet, dann ist Voyager 1 exakt ein Lichttag von der Erde entfernt.
Zum selber rechnen, hier die Daten.
Das ist dann der 14. Feb 2025.
Mal schnell einen neuen Kernel im Server installieren...
Früher hatte ich an meinem Server noch einen Monitor angeklemmt, damit ich den Output ggf. mal verfolgen konnte. Das geht aktuell nicht, weil ich da keinen Monitor mehr dran habe. Auch ist mein Server kein wirklich "Cloud-fähiger" Rechner sondern einfach nur ein ausrangierter alter kleiner Dell "OptiPlex?" 7050 Micro PC mit 8GB RAM und 128GB SSD.
Ich könnte dem jetzt ein neues Linux verpassen und einfach damit starten. Mut zur Lücke, sollte er nicht hochfahren, kann man immer noch einen Monitor anstöppseln.
Aber ich wollte mal wieder das System extrahieren (per dd)
$ dd if=/dev/sda of=richtig-fettes-image.raw conv=sync,noerror status=progress
Damit erstellen wir von der gesamten Platte, die als /dev/sda vorliegt ein Abbild. Vorsicht, das kann groß werden. Der conv= Parameter sorgt für Überlesen von Fehlern und dafür, dass das Ergebnis Sektor synchron bleibt, also fehlerhafte Sektoren dann leer mit gepflegt werden. Status gibt aus, wie weit der Prozess ist. Moderne SSD hören eher auf Namen wie "nvme0n1" oder ähnlich, das Anhängsel "p1" sagt dann 1. Partition.
Die "richtig-fettes-image.raw" enthält jetzt sämtliche Partitionen und auch den MBR oder GPT Infos. Mittels fdisk können die Metadaten des Images ausgelesen werden.
$ fdisk -l richtig-fettes-image.raw
Festplattenmodell: WDC PC SN730? ...
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: gpt
Festplattenbezeichner: <uuid>
Gerät Anfang Ende Sektoren Größe Typ
/dev/nvme0n1p1 2048 1003519 1001472 489M EFI-System
/dev/nvme0n1p2 1003520 8816639 7813120 3,7G Linux Swap
/dev/nvme0n1p3 8816640 2000407310 1991590671 949,7G Linux-Dateisystem
Das ist wichtig, wollen wir dieses Image oder Teile davon mounten.
Wir wissen jetzt 512 Bytes pro Sektor, die eigentliche für uns interessante Partition (p3) die unser System enthält, beginnt ab Sektor 8816640. Um die 3. Partition jetzt mal eben zu mounten, brauchen wir ein Ziel Verzeichnis (/mnt/loop) den Sektor-Offset aus Anfang und der Sektorgröße.
$ mkdir -p /mnt/loop $ export SEKTOR_OFFSET=$(echo '512 * 8816640' | bc -l) $ mount -o ro,loop,offset=$SEKTOR_OFFSET richtig-fettes-image.raw /mnt/loop
Nicht wundern, wenn das ein paar Sekunden dauert, bei größeren Dateien kann auch Linux nicht zaubern. Wenn es keine Fehler gab, ist jetzt das Image Read-Only in das Verzeichnis /mnt/loop eingebunden.
Wenn wir diese Image aber mal in einer VirtualBox starten wollen, müssten wir das Image richtig-fettes-image.raw erstmal mittels qemu-img konvertieren.
$ qemu-img convert -O vmdk richtig-fettes-image.raw fettes-image.vmdk
Das dauert auch wieder etwas. Weil leere Sektoren überlesen werden, ist das vmdk evtl. eine Nummer kleiner als das Raw Image.
Unser fettes-image.vmdk lässt sich jetzt als neues Image in eine VirtualBox einfügen. Dann einfach einen neuen virtuellen PC erstellen, alles auf Default belassen, das eingefügte Image in diesen PC einbinden und starten. Wenn das System vorher bootete und wir auf unserem Host ähnliche Hardware haben, besteht die große Change, das dieses Image einfach gestartet werden kann. Hat man nur einen Prozessor zugewiesen, besteht die Gefahr das die innere VirtualBox Uhr nicht sauber läuft. Der Kernel-Parameter "tsc=unstable" kann hier helfen.
Ist dieses Image von einer anderen Hardware wie z.B. ARM und der eigene PC ist ein Intel, wird es etwas schwieriger, weil dann wohl eher ein Emulator genutzt werden muss. Qemu ist auch so ein Emulator, der dann aber mit jeder Menge Parametern gestartet werden müsste. Dazu später mehr...
p.s.
Unter "Cloud-fähiger" Rechner verstehe ich einen Rechner, der solange er an Strom und Netzwerk angeschlossen ist, immer über dieses Netzwerk erreichbar ist, auch im "ausgeschaltetem" Zustand. Auch ist so ein Rechner in der Lage von ISO Images zu booten, die nur im Netzwerk liegen. Ja, so etwas ist Standard. So etwas ist man bei PCs nicht gewohnt.
Kubernetes, geiler Scheiß...
Es ist wirklich super gemacht.
Google Pixel 7, Update angewendet...
Wir haben es endlich geschafft, die "komplizierte" Anpassung für das Google Pixel 7 durchzuführen. Lisa hatte gerade ihre Bachelor fertig geschrieben und deshalb absolut keine Zeit vorbei zu kommen und mir das Handy zu übergeben. Jetzt haben wir es gemacht. War total einfach, wenn man die Einstellungen alle findet. Da alles in Englisch angegeben ist und man es sich selbst übersetzen muss. Ihr Telefon ist auf Deutsch eingestellt. Der Rest der Anleitung ist wirklich einfach und sehr gut erklärt.
Mal sehen ob das Handy jetzt immer noch unmotiviert abraucht.
Hier nochmal der Link zur Anpassung. https://support.google.com/pixelphone/thread/256412156/ VORSICHT, das ist nur für Google Pixel Handys gedacht.
Es gibt Dinge, die glaubt man erst, wenn Mann sie sieht...
Beispiel:
Es sind 24 Pinguine, Intel Core i7 13700k, weil es den 14700k da noch nicht gab und der 13900k zu teuer war. Ich sehe das heute auch zum ersten mal. Sieht cool aus.
Cool...
QR-Code als utf8-Text...
Mittlerweile gibt es echt fast alles:
https://superuser.com/questions/1420001/is-it-possible-to-create-a-qr-code-using-text
qrencode -t UTF8i 'https://beispiel.de/'
Das Ergebnis ist dann ein QR-Code den man fast überall eintragen kann.
█▀▀▀▀▀█ ▀▄▄▀▀▀▄ ▀▀▄▄ █▀▀▀▀▀█ █ ███ █ ▀ ██ ▀█▄ ▄ █ ███ █ █ ▀▀▀ █ ▀▄▀▄▀▀ ▄▀▄▀▄ █ ▀▀▀ █ ▀▀▀▀▀▀▀ █ █▄▀▄▀▄▀ █▄█ ▀▀▀▀▀▀▀ ▀▀▄▀█▄▀▄ █▀▀▄ █▄ ▀██ ▀▄▄ ▄ ▀ ▀██▀▀ ▀▀▀▄██▄▀██ ██ ▀██▀ ▄▀█ ▀▀▄▄▄█▀ ██ ▀▀ ▄▄█▄▄▀█ ██▄▀▄██ ▄█▄█▀▀▀▀█▀▀█▀▀▄▀▄▀▄█▀▄██ ██▄█ █▄▀▄▄▄▀▄█▄ ▄▄▀▄█ ▄██▄ ▀▄█ ▀ ██▄▀▄ ▀▀ ▀▀▄█▄█▄▀▀▀▄▀█ ▀ █ ▀ ▀▀ ▀▀▀ ▄ █ ▀▄██▀▀▄██▀▀▀██▀ █ █▀▀▀▀▀█ █▄ ▀ █▀▄▄▀██ ▀ █▄ ▄ █ ███ █ █▄█ █▄▄█▀▄▄███▀▀▀█ ▄ █ ▀▀▀ █ ▄▀▀ ▄ ▀▀▀ █▀ ▄▄▀█▄█▀█ ▀▀▀▀▀▀▀ ▀ ▀▀▀▀▀▀ ▀▀ ▀▀
Ein Scanner sollte "Das funktioniert so aber nicht ganz richtig!" ausgeben.
Large Language Models...
Wirklich lesenswerter großartiger Artikel: https://www.computerbase.de/2023-03/kuenstliche-intelligenz-language-models-chatbots-grundlagen-erklaert/
HTML/2 HTML/3...
Beleidigung gefällig?...
Da kommen Erinnerungen hoch, Megatötbombe...
Docker soll auf host zugreifen...
Man möge in der docker-compose.yml
extra_hosts: - "host.docker.internal:host-gateway"
eintragen, dann kann aus einem Docker-Container heraus per http://host.docker.internal:PORT/...
auf einen anderen Container zugegriffen werden, so als ob man localhost:PORT vom Host aus verwendet.
Angeblich funktioniert das nur unter Linux.
Aufhören zu formatieren...
Das sieht echt besser aus...
Go und null Values...
Das merkt man erst dann, das es manchmal etwas tricky sein kann, JSON kennt halt 'null' als Objekt. Da hatte sich wohl niemand Gedanken im GO-Team gemacht.
Genauso wie der ternary Operator einfach fehlt. (condition ? true : false)
Goodbye Gitlab, welcome Gitea
Um es mal salopp zu sagen, Tschüß Gitlab. Du warst ein guter Freund, aber der Resourcen-Hunger auf kleinen Rechnern ist nicht mehr zu bändigen. Und das war nur die 13.12.15 Gitlab-CE Version. Ich habe mir jetzt ein Gitea 1.21.5 installiert.
Ich habe mittels curl
curl "https://<host>/api/v4/projects?private_token=<your private token>&per_page=100"
mir alle Repository-Namen ausgeben lassen.
Die Liste dann in einer Datei abgelegt und jede Zeile entsprechend erweitert:
git clone https://<user>:<gitlab-password>@<gitlab-url>/<path>/<reponame>.git ...
Das waren so >70. Repositories. Das sammelt sich halt alles so an mit der Zeit. Durch Ausführen habe ich alle Repositories aus Gitlab ausgecheckt.
Dann alle Organisationen per Script angelegt. Man könnte das auch per Hand, wollte ich aber nicht, waren mehr als 10.
function create_new_orga() { local username=$1 curl -v -X POST
-H "Authorization: token <gitea-token>"
-H "accept: application/json"
-H "Content-Type: application/json"
-d "{ \"username\": \"$username\", \"description\": \"\", \"email\":\"\", \"full_name\": \"\", \"location\": \"\", \"repo_admin_change_team_access\": true, \"visibility\": \"limited\", \"website\": \"\" }" "https://<gitea-url>/api/v1/orgs" } create_new_orga <organame 1> create_new_orga <organame 2> ...
Dann noch ein weiteres Script geschrieben, das alle Repositories in Gitea wieder hineinschreibt.
function create_new_repo() { local organame=$1 local reponame=$2 curl -v -X POST
-H "Authorization: token <gitea-token>"
-H "accept: application/json"
-H "Content-Type: application/json"
-d "{ \"auto_init\": true, \"default_branch\":\"master\", \"description\": \"\", \"gitignores\":\"\", \"issue_labels\":\"\", \"license\":\"\", \"name\": \"$reponame\", \"private\":true, \"readme\":\"\" }" "https://<gitea-url>/api/v1/orgs/$organame/repos" cd $reponame git remote set-url origin https://<user>:<password>@<gitea-url>/$organame/$reponame.git git push --all --force cd - } create_new_repo <organame 1> <repo-name 1> create_new_repo <organame 2> <repo-name 2> ...
Das lässt man dann laufen und kontrolliert am Ende tunlichst den Output, ob alles fehlerfrei geklappt hat.
Danach konnte ich Gitlab abschalten und jetzt läuft nur noch Gitea. Der Load des kleinen Servers ist gesunken, von ca. 0,30 auf 0,05.
Leider ist es mir noch nicht gelungen den Action-Runner in Gitea zu starten. Will ich das überhaupt?
Links:
efibootmgr... after NVRAM delete
So, habe meinen Rechner aus seinem Verschlag rausgefummelt, von allen Kabeln befreit AUCH STROM, geöffnet und auf dem Mainboard nach CLRTC
gesucht. Lt. ASUS FAQ suche man am unteren rechten Rand danach. Auf meinem B760 ist es eher links der Mitte zu finden. Dort einen Jumper drauf stecken, bis 10 zählen und den Jumper wieder abnehmen. Jetzt den Rechner wieder schließen, in den Verschlag fummeln, Kabel wieder anschließen und starten.
Der Start braucht etwas länger als man es gewohnt ist. Dann ins BIOS wechseln und dort die BIOS-Defaults laden, dann die Einstellungen vornehmen, die man sich vorher mühevoll zusammengesucht hat.
Gut, wer mit den Defaults leben kann.
Die Platten wurden immer noch nicht wieder erkannt, weil sie im NVRAM nicht eingetragen worden sind!
Also wieder den USB-Bootstick gestartet, das Linux gebootet und in die chroot Umgebung gewechselt. Im Handbuch mal eben die modernen Kernel-Einstellungen herausgesucht und den Kernel neu gebaut. Vorsicht beim Bauen des Kernels. Auch wenn man 24 Kerne hat, sollte man evtl. nicht mit 24 Kernen (make -j24) bauen. Ich habe parallel ein btop gestartet, um die CPU-Temperatur zu überwachen. Sonst kann es passieren, das der Prozessor es übertreibt und ggf. die 100°C übersteigt und sofort abschaltet.
make -j16 make modules_install make install
Grub Einstellungen (menuentry) in /etc/grub.d/40_custom
vorgenommen.
Das Menu wird dann per grub-mkconfig erstellt.
grub-mkconfig -o /boot/grub/grub.cfg
Um jetzt GRUB zu laden, muss dies installiert werden, das geschied auf einer mit "boot, efs" markierten vfat formatierten Partition die mit GPT arbeitet.
grub-install --target=x86_64-efi --efi-directory=/boot
Damit wird der GRUB-Bootloader installiert in /boot/EFI/gentoo/grubx64.efi
und gleichzeitig per efibootmgr in das NVRAM eingetragen.
Das braucht man nur einmal zu machen, weil GRUB sich selbst um das Laden der Kernel kümmert. Es sei den, es gibt ein Update von Grub (Umstellung 2.06 auf 2.12)
Um zu sehen ob der GRUB-Bootloader eingetragen ist:
efibootmgr BootCurrent: 0000 Timeout: 1 seconds BootOrder: 0000 Boot0000* gentoo HD(1,GPT, <partuuid>,0x800,0x100000)/File(\EFI\gentoo\grubx64.efi)
Die <partuuid> kann man finden per blkid | grep nvme
falls eine NVME fähige SSD im Rechner steckt. Ansonsten kann man das grep
weglassen und sich alles ausgeben.
Bei mir:
/dev/nvme0n1p1: UUID="E7xx-xxxx" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="ESP" PARTUUID="<partuuid>" /dev/nvme0n1p2: ... TYPE="ext4" ... ...
In der BootOrder zeigt eine kommaseparierte Liste von bootfähigen Platten die im NVRAM eingetragen sind. Sollte hier die eigene Platte fehlen, ist das ein Indiz für ein Problem. z.B. BootOrder: 0001 Aber darunter werden mehrere Platten angezeigt. Bei mir war es der Fehler "No space left on Device" beim Versuch mittels grub-install
einen neuen GRUB-Bootloader zu installieren. Deshalb diese Tortur des NVRAM löschens.
Aktuell verwende ich noch Grub 2.06-r9 und habe explizit den grub-2.12 maskiert. Es wird aktuell empfohlen statt /boot ein /efi einzurichten und alles dort zu installieren. Das klappt aber noch nicht so sauber, wie man es sich vorstellt. Bei mir landeten immer noch Dateien in /boot.
Links:
USB Stick booten, sobald das Menü des GRUB-Bootloaders erscheint 'e' drücken, ggf. nochmal 'e' drücken. Dann folgendes eintragen:
insmod part_gpt search --no-floppy --set=root --fs-uuid EFxx-xxxx chainloader /EFI/gentoo/grubx64.efi
Eintippen und versuchen mittels 'C-x' zu booten. Bei mir blieb es leider hängen. Die ID hier EFxx-xxxx ist die eigene Bootpartition, siehe oben unter UUID.
Security
Man kann im ASUS Bios die 4 wichtigen Sicherheits-Dateien auf die eigene Boot-Platte schreiben lassen.
Die anderen beiden (KEK, PK) sind wohl Schlüssel.
efibootmgr... No space left...
Was zur Hölle.
Eigentlich wollte ich mal schnell einen neuen Kernel installieren und habe das als Script voll automatisiert. Dank dem Grub2 Schei... muss man immer noch 2 Dateien extra anpassen (/etc/default/grub) und (/etc/grub.d/40_custom) dort einen neuen Menuentry einbringen. Der Rest geht fast komplett automatisch.
Aber jetzt plötzlich lässt sich das System nicht mehr booten.
Und ein Versuch im Bios etwas einzustellen ging schief. Also Bios komplett zurückgesetzt und trotzdem kann ich aktuell nicht ins NVRAM schreiben, da dies voll sein soll.
# efibootmgr ... Could not prepare Boot variable: No space left on device.
Wer hat sich diesen Schei... ausgedacht? Schlag in den Nacken! Weniger hat er nicht verdient.
Ich will meinen Rechner nicht öffnen, nur um den CLR... Button zu drücken, aber ich komme wohl nicht drum herum.
So ein SCHEI...!!! Drecks UEFI... Fluch!!!
Links:
BTW: Ich will mein CSM/MBR zurück, das war einfach. Zu Hause brauche ich kein Fort Knox.
Micro Kubernetes...
Wieder Fundstücke...
Google Pixel seit Weihnachten und es ist unbrauchbar...
Töchterchen hat ein Google Pixel 7 bekommen und kann es immer noch nicht richtig nutzen. Das Teil stürzt unmotiviert einfach mal ab.
Ich hoffe mal, wir bekommen es in den Griff mit diesem Workaround. Danke, das Heise sich des Problems auch mal angenommen hat.
Fundstücke...
Pickle, eine Konfiguration-Beschreibungssprache...
Sieht schon mal ganz brauchbar aus.
Language Server Protokoll
Wer fragt, wird ihn nie verstehen, wer ihn kennt, für den reicht eine Frage...
Der Editor: EMACS
Wie malloc(n) funktioniert
Package Manager für Windoof...
Eigentlich habe ich nicht viel am Hut mit diesem Kindermädchen, aber hier mal etwas, was Mann unbedingt haben/installieren sollte.
https://scoop.sh/
Ein Package Manager für Windoof.
scoop install nodejs
Schon hat Mann NodeJs auf der Platte. Cool. Wie man es unter richtigen Betriebssystemen schon lange gewohnt ist.
Github Actions
Wichtig dazu:
Über die Github CLI gh kommt man an viele Informationen heran, die man in der GUI nicht unbedingt sieht.
Kein CSV verwenden, es gibt keinen klaren Standard...
Bessere Alternativen WSV, OML, TBL
Fundstücke...
Elektronik Kompendium(s)...
Mal eine richtig gute Seite mit vielen Informationen über Elektronik/Computertechnik zum Stöbern, auch als Bücher erhältlich.
68030 mit 100-125MHz gefällig?
Auf Pi-Basis für den Amiga 500(+)/1000/2000.
Kann wohl noch viel schneller (68040 mit ~1GHz)? Soll auch Boards geben für 1200/3000/4000.
Awesome Linux Software...
Microsoft hat gerade angerufen...
Folgende Nummer pöppte bei mir in der Telefonanzeige auf: 00443303704891 ein Herr von Microsoft sei am Apparat.
Ich habe ihm gleich gesagt, er ist nicht von Microsoft und ich verwende dieses OS Kindermädchen nicht und habe dann aufgelegt.
Eigentlich sollte man solche Leute ja in längere Gespräche verwickeln ohne die wichtigste Info preis zu geben, die eigene öffentliche IP.
Wobei die eigene IP ja immer 127.0.0.1 ist, aber das wissen die längst. Auch die eigene IP zum Router die mit 192.168. beginnt, bringt diesen Leuten wenig.
Mein Tipp, einfach auflegen und niemals Programme installieren, die man gesagt bekommt.
Wieder geht ein Jahr... träller...
Frohes Neues Jahr... Oder ist dafür schon zu spät?
Wer weiterhin Lust hat, in meinen Lars alten Informationen zu stöbern, sei hier herzlichst eingeladen meine alten Blogs zu lesen.
Die älteren KommentareBlogs möge man hier suchen...