# bootmanager am pc per sps steuern



## grizzlyco

hallo leute ich habe eine aufgabe bekommen und weiß noch nicht ganz wie ich diese lösen soll, vielleicht fällt euch was ein.

wir haben einen rechner auf arbeit auf dem win2k und suse linux läuft. je nach dem welches betriebssystem gestartet ist werden verschiede programme für einen laser gestertet.
die auswahl des systems läuft mit dem bootmanager GRUB von suse.

jetzt soll ich mit einer sps auswählen können welches system gestartet werden soll. nur ich weiß nicht wie.

an dem rechner ist eine ps/2 tastatur dran und diese muß erhalten bleiben.

ich dachte daran vielleicht eine usb tastatur zu modifizieren und anstatt der tasten (pfeiltasten und enter) relais kontakte anzulöten. nur ich weiß gar nicht ob ich mit einer usb tastatur überhaupt schon zugriff im bootmanager habe, und ob das geht das ich 2 tastaturen an einem rechner habe. 

habt ihr vielleicht antworten auf meine fragen oder kennt ihr vielleicht noch eine bessere alternative?


----------



## Zottel

Entweder den Quellcode von Grub modifizieren, daß er z.B. vom Parallelport einliest :-(
Oder folgendes probieren: Vorrausetzung: Die Auswahl in grub erfolgt mit einem Tastendruck. Entweder mit einem einbuchstabigen Label, oder mit den Pfeiltasten.
Nun eine Tastatur aufschrauben und die Taste für das Label und eventuell die "return"-Taste mit Relais überbrücken und diese von der SPS aus steuern.


----------



## volker

evtl eine andere möglichkeit. dazu brauchst du aber zwei platten.
mit einem relais die jumper der hd's tauschen. also master mit slave.


----------



## lorenz2512

hallo,
vieleicht hilft dir das ein bißchen:
http://www.anfritz.de/port/content_tp.php#kap2.4
Ansonsten ist Zottels Lösung wohl die beste, alte ps2 tastatur modifizieren.
Ob 2 tasturen gehen hab ich noch nicht ausprobiert, aber handscanner und tastatur an einem strang geht einwandfrei.
mfg
dietmar


----------



## zotos

> Den Quellcode von Grub modifizieren, daß er z.B. vom Parallelport einliest.



Das hört sich nach einer Profi Lösung an. Dabei kann man viel lernen und Zeit damit verbringen.

Die Tastatur umzubauen bleibt ja immer noch als lösung. Wobei das Umbauen Handwerklich auch nicht sooo... einfach ist. Moderne Tastaturen bestehen aus bedampften Folien und nicht aus Hardware-Tasten.
[/code]


----------



## Ralle

Oder man schleift die Tastatur durch einen weiteren Tastaturstecker und die SPS schaltet über Outputs eine kleine Box, in der ein Tastaturdecoder (oder auch ein kleiner PIC, µP etc.) sitzt, welcher den gewünschten Tastaturcode einschleift.


----------



## Lipperlandstern

:idea: mal in eine andere Richtung gedacht..... angenommen der Bootmanger braucht nur eine Auswahl und startet dann nach Zeit (wie WinXP) automatisch.... dann würde es doch reichen bei einer fest eingebauten Tastatur einen Luftzylinder auf eine Pfeiltaste zu drücken oder eben nicht... je nach Auswahl. Und mit einem zweiten Zylinder kannste das ganze Ding einschwenken bzw ausschwenken wenn es bei der Arbeit stört.... Problem ist nur den Moment abzupassen in dem der Bootmanger gestartet ist.

... ist wohl doch nicht so eine gute Idee :-(..... und wie das wohl aussieht..... :shock:

Gearde gemerkt das man doch die ENTER-Taste braucht   
Also noch nen Zylinder..........


----------



## zotos

@Lipperlandstern: Das ist geil :!:  Bauen und ab damit zu knoff-hoff :lol:


----------



## Markus

naja du kannst auch nen kleinen robi an die tastatur setzten, der kann dir dann je nach tageslaune den bootmanager tippen oder eben schnell grub umprogrammieren...

mal im ernst, ich finde die lösung mit der zweiten platte am besten.

- ist am einfachsten

- festplatten kosten nicht die welt

- durch zweite hd bessere ausfallsicherheit

- ist für jeden verständlich (wenn an der paralellportgeschichte mal was geändert werden soll und du tot bist...)

- ist die "sauberste" "bastelei" zumindest schöner als die modifizierte tastatur mit der klappertechnik dran...


altenativ könteste auch zwei identische hd einbauen, auf beiden die komplette sw (win und linux) istallieren, nur eben die bootreihenfolge drehen. dann mit einem wechselkontakt die spannungversorgung der platten schalten.

wenn eine platte ausfällt oder die ansteuerung der sps nicht funktioniert kannste immer noch nach manueler anwahl weiter produzieren...


wenn es aber ne bastelei für die schule ist wäre die lösung mit dem pic der die tastatusignale einspeist vermutlich die spanndste...


----------



## grizzlyco

ja also ich werde wojl bei der version bleiben wo ich eine tastatur modifiziere, wenn ich habe von code grogrammierung von grub keine ahnung. und falls sich mal etwas ändert kann ich die umgebaute tastatur einfach ausstecken und alles ist wieder normal.

nur jetzt zur praxis:
wie kriege ich die kontakte an die tastatur?denn alle tastaturen die ich aufgeschraubt habe haben diese scheiß folien. 
wie soll ich da eine ader fest kriegen?


----------



## Zottel

Habe lange keine "moderne" Tastatur mehr aufgemacht... Ich würde vermuten, daß von die Folie irgend wo in einen Steckverbinder auf einer Platine endet, wo ein uC und der Kabelanschluß sitzen. Falls dem so ist, kannst du an diesen Steckverbinder was anlöten. Die ankommenden Leitungen Zeilen und Spalten der Tastaturmatrix sein und du kannst durch probieren rausfinden, welche du mit welcher kombinieren mußt um welches Zeichen zu bekommen. Es besteht eine gewisse Gefahr, den uC zu killen, wenn er z.B. die Spalten aktiv treibt und du zwei Spalten statt Spalte mit Zeile verbindest. Ist aber eher unwahrscheinlich. Tastauren sind ja eh billig.


----------



## Jochen Kühner

*quellcode von grub...*

denke das mit dem quellcode von grub is nich so einfach... da grub ja läuft bevor irgenein treiber oder sonstwas aktiv ist musst du ja die ganze ansteuerung der paralellen schnitstelle auch programmieren... denke da steckt sehr viel arbeit hinter...

würde ne tastaur nehemn die den ps2 prt druchschläust un dort dann die tasten anlöten... oder n microcontroller mit usb port (z.b. avr, pic,...) und diesem usb port das usb tastaur protokoll beibringen
(vieleicht gibts dazu hier: http://www.usb.org/developers/docs/ und hier: http://de.wikipedia.org/wiki/USB#Ger.C3.A4teklassen infos)


----------



## Maxl

Warum eigentlich umschalten?

Mit Programmen wie vmware oder wine sollte es doch möglich sein, beide Systeme parallel zur selben Zeit laufen zu lassen.


----------



## Zottel

*Re: quellcode von grub...*



			
				Jochen Kühner schrieb:
			
		

> denke das mit dem quellcode von grub is nich so einfach..


Glaube ich auch nicht.


			
				Jochen Kühner schrieb:
			
		

> . da grub ja läuft bevor irgenein treiber oder sonstwas aktiv ist musst du ja die ganze ansteuerung der paralellen schnitstelle auch programmieren... denke da steckt sehr viel arbeit hinter...


Nee, das nun gar nicht. Weil Grub wohl auf der reinen Hardware ohne Rechte läuft, braucht es keinen Treiber. Wenn man eine feste Adresse für den Port hat, z.0x378 und 0x379, reicht:
LOOP:
MOV 0x379,DX
IN     AL,DX
AND AL,01 //oder welches bit da genommen wird
JMPNE LINUX  //so ein Label gibt's wohl nicht, eher zur 1. Auswahl
AND AL,02 //oder welches bit da genommen wird
JMPNE WINDOWS //so ein Label gibt's wohl nicht, eher zur 2. Auswahl
JMP LOOP

Die Schwierigkeit liegt darin, die Einsprungstellen zu finden.


----------



## grizzlyco

leute erstmal danke für eure hilfe!!!!!

ich habe es im prinzip geschafft.

habe jetzt einen bootmanager auf der platte mit standart windows und einen boot manager auf einer diskette mit standart linux. wenn ich jetzt wndows starten will unterbricht meine sps die spannungsversorgung der floppy und der bootmanager der platte wird geladen. wenn ich linux starten will läd der rechner den bootanager von der diskette.

doof ist nur das wenn ich die spannungsversorgung von der floppy abgeschaltet habe sucht der rechner am anfang erstmal 30s die floppy (weil im bios steht das eine floppy da ist) und erst dannach startet er von der platte weiter.

also die beste lösung ist das noch nicht.


----------



## Zottel

Ich weiß nicht, ob jedes BIOS das hat, aber mir ist die Einstellung "seek floppy on boot" geläufig. Die kann man, soweit ich weiß, abschalten und dennoch mit der Floppy arbeiten.


----------



## Jochen Kühner

*@zottel...*

wie wärs wenn man deinen code als inline asembler irgendwo in diesem file http://savannah.gnu.org/cgi-bin/vie...?rev=1.7&content-type=text/vnd.viewcvs-markup einfügt?? Dort läd Grub seine Konfiguration und man könnet ja je nach auswahl des ports eine andere dateigröße und startadresse vorgeben (also unterschoedliche konfigurationen??) wär das möglich??

mfg.


----------



## Jochen Kühner

*oder da...*

oder in dem file http://savannah.gnu.org/cgi-bin/vie...rev=1.45&content-type=text/vnd.viewcvs-markup 
in der funktion run_menu


----------



## Zottel

Das 2.(stage2.c) scheint mir richtig zu sein (ohne das 1. gesehen zu haben). Es muß auch kein inline Assembler sein. Es sollte auch mit dem C-Makros inb() gehen:


		Code:
	

char port_state;
short base=0x378;

inb(port_state, BASE + 1);
if ((port_state&1)!=0){
 entryno=0;  //Wenn sie bei 0 anfangen zu zählen
 goto boot_entry;
}else if ((port_state&2)!=0){
 entryno=1;  //Wenn sie bei 0 anfangen zu zählen
 goto boot_entry;
}

Ob die bits 0 und 1 richtig sind, weiß ich nicht: Ich meine der Standard_parallelport hatte drei Input-Leitungen. Keine Ahnung mehr, auf welchen Bits die lagen...
[/code]


----------



## Jochen Kühner

*testen....*

das sollte man ja mal direkt testen....


----------



## Jakamara

Warum nehmt ihr anstatt grub nicht gag?
Da reicht eine Taste.


----------



## drfunfrock

Grub kann auch über RS232-Konsole gesteuert werden, so dass du nichts weiter als ASCII-Codes zu senden hast... 8) 
Siehe auch GRUB-Doku http://www.gnu.org/software/grub/manual/grub.html#Serial terminal

Doc Funfrock


----------

