codehunter
Goto Top

Boot-CD bzw. -Stick mit Linux zum Schnelltesten der Hardware

Hallo alle zusammen,

ich suche ein Mini-Linux das von CD oder USB-Stick booten kann und die vorgefundene Hardware in einer Art Bericht in der Konsole bzw. noch besser auf ttyS0 ausgibt.

Ich möchte damit einen Schnelltest für PCs realisieren. Ziel soll es sein, daß man in kurzer Zeit mehrere Rechner auswerten kann ohne daß man viel auf dem Tastenkasten rumhacken muss. Am besten so, daß nur der Prüfling per Nullmodemkabel mit dem Auswerterechner verbunden wird, Boot-CD rein und ab die Post. Auf dem Auswerterechner hab ich ein Windowsprogramm laufen das alles mitschneidet was auf COM1 rein kommt. Also z.B. den Schnelltest-Report vom Test-Linux.

Ihr müsst euch das so vorstellen, daß ich palettenweise gebrauchte Rechner habe. Nach einer kurzen Sichtprüfung (alles was älter als Pentium 4 ist wird geshreddert) müssen die übrig gebliebenen Rechner mit ihrer Ausstattung erfasst werden. Die ermittelten Daten sollen in einer Datenbank gesammelt werden, deshalb der Auswerterechner auf dem ein selbstentwickeltes Datenbank-Frontend läuft.

Ich benötige folgende Daten des Prüflings:

Prozessor (ID, Vendor, Stepping, Takt, Multiplikator etc.)
Mainboard (BIOS-Vendor, Vendor, System-ID etc.)
Chipsatz (Vendor etc.)
RAM-Größe und Anzahl der Module (evtl. ein paar SPD-Daten, Durchsatz etc.)
Graka (Vendor, Speicher etc.)
HDD-Controller (IDE/SATA/SCSI, RAID etc.)
Festplattentyp und -größe (evtl. U/min, Durchsatz etc.)
Art des optischen Laufwerks (CD-RW/-ROM DVD-RW/-ROM, Bluray-RW/-ROM etc.)
USB (1.0, 1.1, 2.0)
Firewire vorhanden
Sound (Vendor etc.)
Parallele Schnittstelle vorhanden
Serielle Schnittstelle vorhanden
Netzwerk (10/100/1000 MBit
Vendor etc.)
Bluetooth
WLAN

und was es sonst noch an interessanten Schnittstellen gibt.

Im Prinzip gibt es ja diverse Linux-Progs die solche Infos ausgeben können (cpuid, hdparm z.B.) darum denke ich könnte man das meiste mit einem Script erledigen. Vielleicht hat ja schon mal jemand sowas gebastelt, man muss ja nicht das Rad neu erfinden. Da ich aber bei weitem kein Linux-Experte bin könnte ich ein paar Tips gebrauchen.

Grüße
Cody

Content-Key: 115116

Url: https://administrator.de/contentid/115116

Printed on: April 18, 2024 at 06:04 o'clock

Mitglied: 75823
75823 May 01, 2009 at 21:17:15 (UTC)
Goto Top
Hmmm... diese Problem hatte ich nie, dies wegen kann ich dir mit vertilgen Tool oder Script nicht helfen. Ein paar Vorschläge für den Script vielleicht mache ich doch:

Prozessor (ID, Vendor, Stepping, Takt, Multiplikator etc.)

cat /proc/cpuinfo

Mainboard (BIOS-Vendor, Vendor, System-ID etc.)

dmidecode

Chipsatz (Vendor etc.)

lspci

RAM-Größe und Anzahl der Module (evtl. ein paar SPD-Daten, Durchsatz etc.)

dmidecode und/oder free -m

Graka (Vendor, Speicher etc.)

lspci und grep -i VideoRam /var/log/Xorg.0.log

HDD-Controller (IDE/SATA/SCSI, RAID etc.)

lspci

Festplattentyp und -größe (evtl. U/min, Durchsatz etc.)

hdparm -i /dev/sg[0-4]

Art des optischen Laufwerks (CD-RW/-ROM DVD-RW/-ROM, Bluray-RW/-ROM etc.)

hdparm -i /dev/sg[0-4]

USB (1.0, 1.1, 2.0)

lspci

Firewire vorhanden

lspci

Sound (Vendor etc.)

lspci

Parallele Schnittstelle vorhanden

k.a.

Serielle Schnittstelle vorhanden

k.a.

Netzwerk (10/100/1000 MBit Vendor etc.)

lspci

Bluetooth

lsusb ? oder dmesg | grep "Bluetooth: HCI device and connection manager initialized"

WLAN

lspci

Fast die Hälfte kann man mit den dmesg rausfiltern.
Member: Codehunter
Codehunter May 02, 2009 at 22:28:40 (UTC)
Goto Top
Danke! Basierend darauf hab ich mal nach fertigen Scripten gesucht und bin letztendlich bei lshw hängen geblieben. Das ist zwar kein Script sondern ein Programm, macht aber alles was ich brauche und kann den Kram sogar als XML ausgeben. Per Umleitung landet das dann auf ttyS0 und in meinem Windows-Proggi. Gefunden habe ich das Tool auf der Debian-Rescue-Live-CD. Das einzige was mich da stört ist die sehr lange Bootzeit bis man mal dahin kommt lshw zu starten. Außerdem die Eigenheit von Debian, beim Booten in einer Endlosschleife zu landen wenn kein Netzwerk bzw. kein DHCP verfügbar ist. Da werde ich wohl oder übel noch ein wenig an den Init-Scripten feilen müssen.
Mitglied: 75823
75823 May 03, 2009 at 08:17:05 (UTC)
Goto Top
Du kannst folgendes machen:
Installiere Bootloader syslinux auf ein USB-Stick
Nimm ein Kerenl von debian oder ubuntu zusammen mit initrd.
Entpake initrd und ändere den init script.
Nimm statisch kompilierte lshw. (fals du schaffst nicht selbst es zu kompilieren kann ich dir schicken).
Packe wieder initrd zusammen mit lshw.
Dann hasst du dein eigenes minidistro, ungefähr 10MB groß mit Startzeit 10 Sekunden.

Klingt nach kleines Abenteuer ;)
Member: Codehunter
Codehunter May 03, 2009 at 13:32:13 (UTC)
Goto Top
Das wäre ja suuuuper face-smile Ich denke mal, wenn das bootfähig aufm Stick ist dann ist der Weg zu einem bootfähigen ISO-Image auch nicht mehr weit. Ist glaub ich doch alles irgendwo eine Floppy-Emulation. Denn ich denke ich werd alle drei Bootmedien brauchen denn nicht jeder Rechner hat bootfähiges USB oder ein CD-ROM-Laufwerk. Aber eine von den drei Möglichkeiten ist eigentlich immer vorhanden.

Ich bin wie gesagt kein Linux-Experte. Vor Jahren habe ich mal einen Kernel bei Suse 5.irgendwas streng nach Handbuch kompiliert um den Soundblaster zum Laufen zu kriegen. Der blieb danach zwar weiterhin stumm aber dafür war der Tintenspucker auf einmal inkontinent und hat seine Tinte ins Druckerinnere laufen lassen. Ab da hab ich die Finger vom Kompilieren unter Linux gelassen ^^

Also ich sag mal so: Ich hab keine Hemmungen sowas selbst zu basteln. Allerdings fehlen mir bei Linux die Grundlagen, wie da was zusammenhängt. Darum bräuchte ich ein kleines Tutorial wie man das anstellt was du vorgeschlagen hast.

Was ich mich noch frage: lshw bedient sich ja diverser externer Tools wie lspci, hdparm usw. Wieviel vom normalen Debian-Bootablauf kann man da wegrationalisieren ohne daß lshw an Funktionalität verliert (Stichwort Treiber etc.)?
Mitglied: 75823
75823 May 03, 2009 at 14:27:34 (UTC)
Goto Top
Ich bin gerade unter dem Studiendruck, dies wegen werde ich wahrscheinlich nur gelegentlich antworten. Meistens musst selbst machen, ich gebe nur die Stichworts oder Links... ich will doch das du auch selbst was lernst :D

Du brauchst ein Distro damit du arbeiten kannst. Ich nutze Ubuntu dies wegen schlage ich dir das selbe vor.

Statischgelinkte lshw brauch nichts außer kernel, aber für eine normale minisystem brauchst du busybox. Busybox wird auch bei initrd benutzt. Wie man initrd entpackt kannst du überall finden z.B. hier:

http://wiki.openvz.org/Modifying_initrd_image
Mitglied: 75823
75823 May 04, 2009 at 07:41:58 (UTC)
Goto Top
Ein Prototyp habe gerade gemacht. Das init von ubuntu initrd habe ich gekürzt und ein paar Zeilen eingefügt:

#!/bin/sh

echo "Loading, please wait..."  

[ -d /dev ] || mkdir -m 0755 /dev
[ -d /root ] || mkdir -m 0700 /root
[ -d /sys ] || mkdir /sys
[ -d /proc ] || mkdir /proc
[ -d /tmp ] || mkdir /tmp
mkdir -p /var/lock
echo "mounting sysfs and procfs"  
mount -t sysfs -o nodev,noexec,nosuid none /sys
mount -t proc -o nodev,noexec,nosuid none /proc

# Note that this only becomes /dev on the real filesystem if udev's scripts 
# are used; which they will be, but it's worth pointing out 
mount -t tmpfs -o mode=0755 udev /dev
[ -e /dev/console ] || mknod -m 0600 /dev/console c 5 1
[ -e /dev/null ] || mknod /dev/null c 1 3
> /dev/.initramfs-tools
mkdir /dev/.initramfs
echo "creating nodes"  
mknod /dev/mem c 1 1
mknod /dev/ttyS0 c 4 64
mknod /dev/ttyS1 c 4 65

echo "lshw"  
/bin/lshw > /dev/ttyS0

es braucht noch Bearbeitung aber es funktioniert. Ich habe unter qemu getestet.
Member: Codehunter
Codehunter May 06, 2009 at 09:39:37 (UTC)
Goto Top
Entschuldige daß ich mich erst jetzt wieder melde, hatte ne Menge um die Ohren...

Ich habe erstmal eine frische Kubuntu 9.04 aufgesetzt. Erstens weil ich die neue eh mal ausprobieren wollte und zweitens weil sich das ja in dem Zusammenhang anbietet.

Busybox kenne ich von den ganzen Embedded-Kisten (WLAN etc.)

Ich habe hier eine schöne Anleitung gefunden zu dem Thema: http://wiki.unixboard.de/index.php/Bootable_USB_Key Kannst du da mal drüberschauen ob ich das so anwenden kann mit deinem init-Script oder ob in der Anleitung was enthalten ist das mit meinem Projekt kollidiert.

Was ich noch ergänzen möchte: Ich hätte auf dem Stick gern einen schreibbaren Bereich (eigene Partition z.B.) oder ist das Boot-File-System auf dem Stick generell writable?

Lieben Dank!
Mitglied: 75823
75823 May 06, 2009 at 10:34:03 (UTC)
Goto Top
Mit diesen Anleitung kannst du ein bootloader auf Usbstick installieren und eine fertige kernel mit initrd nutzen. Aber es ist schon mal gut für den Anfang, Wen du das schaffst dann kann man nur initrd korrigieren.
Member: Codehunter
Codehunter May 06, 2009 at 11:30:07 (UTC)
Goto Top
Gudi, ich meld mich dann wieder wenn ich mir nen neuen Stick besorgt habe (mein Testsubjekt will nimmer) und ich das Ding bootfähig bekommen habe.