[Gelöst] Welches Linux ?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

[Gelöst] Welches Linux ?

Beitrag von DEBIANUNDANDREAS » 13.11.2014 05:44:14

Hallo, Debian 7 (wheezy) habe ich auf Live SD Card.
Ich bräuchte ein Script das überprüft welches Linux ( dieses nicht gestartet) auf der Festplatte installiert ist, und welches prüft welche Live Version gestartet ist.
Es soll im Terminal eine Ausgabe erfolge ala : Ubuntu ( mit Versionsnummer) ist auf Festplatte installiert etc
Wichtig währe für mich, das die Bit Version sehr wichtig währe, also ob 32 Bit oder 64 Bit installiert sind und die Liveversion dieselbe Bits hat, weil ich will chrooten!!
Ich währe sehr dankbar wenn mir jemand so ein Script hier posten könnte !? Danke.
Zuletzt geändert von DEBIANUNDANDREAS am 14.11.2014 14:07:31, insgesamt 1-mal geändert.

Benutzeravatar
TRex
Moderator
Beiträge: 8319
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: Welches Linux ?

Beitrag von TRex » 13.11.2014 07:19:05

Code: Alles auswählen

 $ file /bin/bash
/bin/bash: ELF 64-bit LSB executable [...]
In einer 32bit Installation steht da entsprechend was anderes.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

Re: Welches Linux ?

Beitrag von DEBIANUNDANDREAS » 13.11.2014 07:48:04

Code: Alles auswählen

file /bin/bash
ergibt nur die LiveVersion
Wie mache ich das für die Festplatteninstallation, grub??

Benutzeravatar
hikaru
Moderator
Beiträge: 13907
Registriert: 09.04.2008 12:48:59

Re: Welches Linux ?

Beitrag von hikaru » 13.11.2014 07:56:19

TRex hat geschrieben:

Code: Alles auswählen

 $ file /bin/bash
/bin/bash: ELF 64-bit LSB executable [...]
Vorausgesetzt das System hat bash - funktioniert aber prinzipiell mit jedem anderen Binary auch.
Allerdings kann man sich streng genommen nicht darauf verlassen vor einem i386-System zu sitzen wenn man ein i386-Binary findet. Es könnte auch amd64 mit Multiarch sein.
Das Gleiche gilt für armel/armhf.

Eine wirklich zuverlässige Methode die Distribution und Version herauszufinden gibt es meines Wissens nach nicht. Debian (und Abkömmlinge) hat /etc/debian_version. Auf dem Wheezy/amd64-Rechner von dem ich gerade schreibe steht da z.B. das:

Code: Alles auswählen

$ cat /etc/debian_version 
7.7
Das muss allerdings nicht heißen, dass es sich um Debian handelt. Es könnte auch eine der drölf auf Debian basierenden Distributionen sein die /etc/debian_version nicht anpassen. Ubuntu ist identifizierbar soweit ich weiß.
Suse hat analog dazu /etc/SuSe-release und bei Red Hat als Familie gab es da wohl auch was.

Was relativ gut funktioniert ist, uname -a mit den Daten auf Distrowatch zu vergleichen. Das führt meist zu einem eindeutigen Ergebnis. Eine Garntie dafür gibt es aber natürlich nicht und es funktioniert eh nur, wenn der Standardkernel der Distribution benutzt wird.

Benutzeravatar
Patsche
Beiträge: 3262
Registriert: 21.06.2013 01:47:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home/10001101001

Re: Welches Linux ?

Beitrag von Patsche » 13.11.2014 10:37:53

Ich finde am eindeutigsten:

Code: Alles auswählen

lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux testing (jessie)
Release:	testing
Codename:	jessie

Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

Re: Welches Linux ?

Beitrag von DEBIANUNDANDREAS » 13.11.2014 10:55:01

Nä, man macht das anders.
1. Schritt

Code: Alles auswählen

uname -a
im Terminal
2. chrootumgebung und dann ins interne Festplattensystem wechseln
3.

Code: Alles auswählen

uname -a
im Terminal

Nur was ich nicht lösen konnte wie vergleiche ich den Output vom 1. Schritt mit dem 3. Schritt, weil beide Versionen (32 Bit oder 64 Bit) müssen beim chrooten gleich sein, Liveversion muss Festplattenversion entsprechen, um den 2. Schritt entweder in einem Scriptlauf zu starten oder zu beenden?

argx3
Beiträge: 93
Registriert: 20.08.2012 03:12:25

Re: Welches Linux ?

Beitrag von argx3 » 13.11.2014 17:20:20

Informiere dich doch bitte mal, was ein chroot ist.

Wenn du per chroot in ein anderes System wechselst läuft natürlich nicht der Kernel des anderen Systems.

Sofern dein Live-System GRUB mitbringt sollte dir ein

Code: Alles auswählen

sudo update-grub
allerdings alle auf Festplatte befindlichen Systeme anzeigen.

Benutzeravatar
TRex
Moderator
Beiträge: 8319
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: Welches Linux ?

Beitrag von TRex » 13.11.2014 19:17:30

argx3 hat geschrieben: Sofern dein Live-System GRUB mitbringt sollte dir ein

Code: Alles auswählen

sudo update-grub
allerdings alle auf Festplatte befindlichen Systeme anzeigen.
Ich finds eine ganz schlechte Idee, einen Befehl abzusetzen, der Dinge ändert, zum Auslesen von Informationen zu verwenden. Und noch viel schlechter, sowas unbedacht einem Anfänger zu empfehlen - der zerschießt sich damit noch sein System.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

JuergenPB

Re: Welches Linux ?

Beitrag von JuergenPB » 13.11.2014 19:28:06

Wenn ich es recht verstehe, läuft auf dem Rechner ein Live-System und ein weiteres ist irgendwo auf der Festplatte installiert.

Wenn du auf der Ebene des Live-Systems

Code: Alles auswählen

file /bin/bash
eingibst bekommst du dort die gesuchte Info zum Live-System

Dann suchst Du Dir den Mountpoint des anderen Systems (Festplatte muß ja irgendwo gemoutet sein), wechselst auf die Festplatte ins Verzeichnis bin und gibst
dann ein:

Code: Alles auswählen

file bash

Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

Re: Welches Linux ?

Beitrag von DEBIANUNDANDREAS » 14.11.2014 05:41:44

Der Wiederholung wegen >>>
Nur was ich nicht lösen konnte wie vergleiche ich den Output vom 1. Schritt mit dem 3. Schritt, weil beide Versionen (32 Bit oder 64 Bit) müssen beim chrooten gleich sein, Liveversion muss Festplattenversion entsprechen, um den 2. Schritt entweder in einem Scriptlauf zu starten oder zu beenden?

Benutzeravatar
TRex
Moderator
Beiträge: 8319
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: Welches Linux ?

Beitrag von TRex » 14.11.2014 07:28:23

Mach mal nicht so nen Wind. Wenn du das in nem Shellscript (ggf. zugeschnitten auf den Integer) hast, kannst du [ "$a" == "$b" ] verwenden.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

Re: Welches Linux ?

Beitrag von DEBIANUNDANDREAS » 14.11.2014 11:41:43

Leider hat das folgende nicht funktioniert. >>>

Code: Alles auswählen

if [ "$a" == "$b" ] 
then 
echo "beide gleich" 
read c
fi
Als Terminaloutput >>>
/home/andy/Schreibtisch/chroot LiveCD.sh: 31: [: unexpected operator

Benutzeravatar
4A4B
Beiträge: 962
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: Welches Linux ?

Beitrag von 4A4B » 14.11.2014 12:00:29

sh kennt im Gegensatz zu bash nur ein einfaches "=" als Vergleichs-Operator:

Code: Alles auswählen

if [ "$a" = "$b" ]

Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

Re: [Gelöst] Welches Linux ?

Beitrag von DEBIANUNDANDREAS » 14.11.2014 14:08:51

Danke das wahr richtig >>>

Code: Alles auswählen

if [ "$a" = "$b" ]
ein einmaliges Gleichheitszeichen reicht.
Damit ist das hiesige Thema (Thread) gelöst!!

argx3
Beiträge: 93
Registriert: 20.08.2012 03:12:25

Re: Welches Linux ?

Beitrag von argx3 » 19.11.2014 17:57:40

TRex hat geschrieben:
argx3 hat geschrieben: Ich finds eine ganz schlechte Idee, einen Befehl abzusetzen, der Dinge ändert, zum Auslesen von Informationen zu verwenden. Und noch viel schlechter, sowas unbedacht einem Anfänger zu empfehlen - der zerschießt sich damit noch sein System.
Ich schrieb, das kann man von einer LiveCD aus ausführen. Das ändert also am System genau gar nichts. 8)

Benutzeravatar
TRex
Moderator
Beiträge: 8319
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: Welches Linux ?

Beitrag von TRex » 19.11.2014 18:29:48

argx3 hat geschrieben:
TRex hat geschrieben:
argx3 hat geschrieben: Ich finds eine ganz schlechte Idee, einen Befehl abzusetzen, der Dinge ändert, zum Auslesen von Informationen zu verwenden. Und noch viel schlechter, sowas unbedacht einem Anfänger zu empfehlen - der zerschießt sich damit noch sein System.
Ich schrieb, das kann man von einer LiveCD aus ausführen. Das ändert also am System genau gar nichts. 8)
Beim Zitieren bitte aufpassen, ich hab das geschrieben, was da unter deinem Namen steht.

Und zum Livesystem: ja, mag sein. Aber bring ich einem Kind bei, dass es in der Spielstraße nicht aufpassen muss, wenn es über die Straße läuft?
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Benutzeravatar
Inkodiktus
Beiträge: 702
Registriert: 15.08.2013 01:15:35
Lizenz eigener Beiträge: GNU General Public License
Wohnort: » host@user╺─╸[~]

Re: [Gelöst] Welches Linux ?

Beitrag von Inkodiktus » 09.12.2014 17:53:48

Habe etwas überlegt und denke es ist richtig. :)
Man kann schlecht 2 Systeme vergleichen, dann müsste man ein drittes haben, das die zwei vergleicht. ^^
Wobei dann das Script eh nur auf einem System läuft
Bzw.. dafür benötigte man schon etwas größeres als nur eine kleine if Schleife.
Da müsste man auch in jedes System einzeln reingehen, checken und dann wieder in das andere und dieses überprüfen.
Da wäre es ein Einfacheres uname -a abzuschicken. :)
Würd mich jetzt interessieren:
a) wer schreibt nun so ein Script
b) wie würde es denn aussehen :)

Ich bin grad am Lernen, deshalb nehme ich mir schon etwas vor. ;)
Wenn ich nur Müll erzähle.
Grüße
Meine Sprachkenntnisse: nur deutsch
Mein Laptop: http://www.asus.com/Notebooks_Ultrabook ... ifications
Mein Debian: Stable + OpenBox
Mein Editor: Emacs
Meine Devise: Frei bleiben - so lange wie es geht : -)

Antworten