• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

Anzeige des boot prompts auf serieller Konsole

crotchmaster

happy BSD user
Themenstarter #1
Hallo Mitstreiter,

ich habe auf einer OpenBSD 3.9 Kiste die serielle Konsole eingerichtet. Das funktioniert auch alles prächtig. Ich konnte trotz Foren- u. Googlesuche folgende Frage nicht beantworten:

Wie bekomme ich den boot prompt zu Gesicht?

Das letzte was ich auf dem Monitor sehe, ist 'switching console to com0'. Das geöffnete minicom schweigt 10 Sekunden (timeout von 10s eingestellt) und dann kommen schon die Ausgaben des Kernels. Ich möchte aber gerne in den single user modus booten können usw.

Ich hoffe einer der OpenBSD-Experten kann mir helfen.

Danke und Gruß

c.
 
#2
In /etc/boot.conf

Code:
stty com0 9600
set tty com0
Und in /etc/ttys

Code:
tty00   "/usr/libexec/getty std.9600"   vt220    on secure
Beachte: Die Zeile gibt's schon in /etc/ttys, nur steht da statt "on" ein "off". Du musst das "off" ersetzen wenn Du Dich auf der seriellen Konsole einloggen willst, ansonsten kannst Du es einfach so lassen.

Ich glaube mehr muss nicht gemacht werden.
 

crotchmaster

happy BSD user
Themenstarter #3
Hi VincentVega,

die beiden Dateien hatte ich schon so bearbeitet und es funktioniert auch soweit, mit einer anderen Geschwindigkeit allerdings. Meine Frage zielte mehr darauf ab, bereits den boot prompt auf die serielle Konsole zu bekommen. Jetzt schreibe ich z.B. 'boot bsd.generic' in /etc/boot.conf' rein um den GENERIC-Kernel zu booten. Ich möchte es gerne so machen, wie bei einer ganz stink normalen OpenBSD Installation: Am prompt 'boot -s' eingeben, um in den single user Modus zu booten, oder 'boot hd1a:/bsd.generic' usw.

Danke trotzdem für deine Hilfe.

Gruß c.
 
#4
Ok, tut mir leid, da hab' ich Deine Frage falsch verstanden.

Ich bin mir jetzt nicht ganz sicher, aber es könnte sein, dass Dein Problem eben jene Zeile 'boot bsd.generic' in /etc/boot.conf ist.

boot(8), das ist das Program das Du interaktiv bedienen möchtest, interpretiert /etc/boot.conf und führt die darin enthaltenen Kommandos aus, so als wären sie von einem Menschen interaktiv an der Konsole eingegeben worden.

Wenn die letzte Zeile in /etc/boot.conf eben 'boot ...' lautet, dann führt das dazu, dass boot(8) den Kernel bootet. Normalerweise brauchst Du 'boot ...' nicht angeben; es wird automatisch versucht /bsd oder /bsd.old zu laden.

Nachtrag: Bitte gib' doch 'n kleines Feedback ob's daran lag, irgendwie beschäftigt mich das jetzt und meine nächste OpenBSD Installation ist 150 km weit weg :)
 
#5
...das liegt meiner meinung nach am mbr/bootloader. folgenden eintrag habe ich in /usr/src/sys/arch/i386/stand/mbr/Makefile gefunden:

# Uncomment this to make mbr talk to a serial port.
#CPPFLAGS+=-DSERIAL=0

vielleicht kann man den mbr gleich dazu überreden, mit der seriellen konsole zu reden. allerdings weiß ich nicht, wie das mit der geschwindigkeit dann aussieht. vielleicht mal probieren?
 

CommanderZed

OpenBSD User
Mitarbeiter
#8
huhu ... ist das überhaupt möglich? Greifen beim Boadloader die o.G. sachen denn schon?

amd64 and i386 notes:

* OpenBSD numbers the serial ports starting at tty00, DOS/Windows labels them starting at COM1. So, keep in mind tty02 is COM3, not COM2
* Some systems may be able to operate without a video card in the machine, but certainly not all -- many systems consider this an error condition. Some machines will even refuse to work easily without a keyboard attached.
* Some systems are capable of redirecting all BIOS keyboard and screen activity to a serial port through a configuration option, so the machine can be completely maintained through the serial port. Your results may vary -- when using this feature, some BIOSs may prevent the bootloader from seeing the serial port, and thus, the kernel will not be told to use it. Some BIOSs have an option to "Continue Console Redirection after POST" (Power On Self Test), this should be set to "OFF", so the boot loader and the kernel can handle their own console. Unfortunately, this feature is not universal.
* PC compatible computers are not designed to be run from a serial console, unlike some other platforms. Even those systems that support a serial console usually have it as a BIOS configuration option -- and should the configuration information get corrupted, you will find the system looking for a standard monitor and keyboard again. You generally must have some way to get a monitor and keyboard to your amd64 and i386 systems in an emergency.
* You will need to edit /etc/ttys as above.
* Only the first serial port (com0) is supported for console on amd64 and i386.
das klingt für mich so, wie als wäre das nicht auf allen Systemen möglich ... ich hab da aber zugegebener maßen nicht wirklich ahnung von ;)
 
#9
crotchmaster hat gesagt.:
Das letzte was ich auf dem Monitor sehe, ist 'switching console to com0'. Das geöffnete minicom schweigt 10 Sekunden (timeout von 10s eingestellt) und dann kommen schon die Ausgaben des Kernels. Ich möchte aber gerne in den single user modus booten können usw.
Alles, was ich dazu sagen kann: works for me, sowohl mit qemu als auch mit einem echten Rechner (siehe Anhang).

Versuch mal, mit cu(1) auf die Leitung zu sehen, evtl. murkst minicom ja run.
 

Anhänge

#10
kili hat gesagt.:
Alles, was ich dazu sagen kann: works for me, sowohl mit qemu als auch mit einem echten Rechner (siehe Anhang).

Versuch mal, mit cu(1) auf die Leitung zu sehen, evtl. murkst minicom ja run.
mmh, wie hast du das hinbekommen? ich habe das auch versucht, indem ich beim mbr-makfile den kommentar aus der zeile "CPPFLAGS+=-DSERIAL=0" rausgenommen habe. aber leider geht's bei mir nicht? any suggestions?
 
#11
uwerler hat gesagt.:
mmh, wie hast du das hinbekommen? ich habe das auch versucht, indem ich beim mbr-makfile den kommentar aus der zeile "CPPFLAGS+=-DSERIAL=0" rausgenommen habe. aber leider geht's bei mir nicht? any suggestions?
Ich habe bei mir nichts am MBR oder an boot(8) geschraubt, nur das plain /etc/boot.conf passend geschrieben. Warum das bei anderen nicht funktioniert, weiss ich nicht -- ich hab's aber wie gesagt nur mit qemu und ein paar embedded Devices getestet.
 
#13
uwerler hat gesagt.:
achso, das meinst du. das funktioniert bei mir auch. ich dachte, du hättest den bootprompt auch auf das serielle interface gelegt.
Meinst Du mich? Ich habe den Bootprompt auf der seriellen Schnittstelle.

Das serialboot.txt, das ich weiter oben angehaengt habe, habe ich mittels script(1) aus einer cu-Session ueber ein serielles Kabel auf ein embedded Device erstellt, und da wirst Du ganz am Anfang den Bootprompt finden:

Code:
>> OpenBSD/i386 BOOT 2.10
boot>
Das laeuft sowohl mit 'nem EM-551, das ich neulich jemandem hier abgekauft habe, als auch mit dem Soekris net-4801.
 
#14
kili hat gesagt.:
Meinst Du mich? Ich habe den Bootprompt auf der seriellen Schnittstelle.

Das serialboot.txt, das ich weiter oben angehaengt habe, habe ich mittels script(1) aus einer cu-Session ueber ein serielles Kabel auf ein embedded Device erstellt, und da wirst Du ganz am Anfang den Bootprompt finden:

Code:
>> OpenBSD/i386 BOOT 2.10
boot>
Das laeuft sowohl mit 'nem EM-551, das ich neulich jemandem hier abgekauft habe, als auch mit dem Soekris net-4801.
ja, ich meinte dich.

das soekris hat ja ein combios, was also die ausgaben von hause aus auf das serielle interface legt. deswegen siehst du auch den bootprompt. mit einem "normalen" bios scheint es aber ned zu funktionieren.
 
Themenstarter #15
Es ist echt kurios!

Ich habe zwei OpenBSD 3.9 Installationen, eine von 3.8 auf 3.9 aktualisiert, die andere soeben frisch von CD installiert. Bei beiden Installationen sind die Dateirechte identisch und ich habe mal die md5-Summen von /boot,/bsd (GENERIC-Kernel) und /etc/boot.conf verglichen, auch diese sind identisch. Die erste Installation zeigt mir erst den Kerneloutput an, während die frische Installation auch den boot-Prompt anzeigt und ich dort auch mittels boot -s in den single user mode booten kann. Das ist schon sehr kurios.

Der einzige Unterschied ist, das ich bei der aktualisierten Installation nachträglich die Datei /etc/boot.conf erstellt habe, während ich bei der frischen Installation gleich bei der Installation com0 als Konsole und die Geschwindigkeit auf 9600bps eingestellt habe. Aber sollte das wirklich einen Unterschied machen?

Gruß c.
 
#16
Um den Boot Prompt auf den Seriellen Ausgang zu bekommen ist nur folgende Einstellung fuer erforderlich in der /etc/boot.conf:
Code:
set tty com0
Hatt rein gar nix mit dem Kernel oder sonstiges zutun.
Der Kernel ist bis dato gar nicht geladen. Nur der bootstrap.
Hier mal aus der man boot.conf:
Basic operations include:

o Detecting and switching between multiple consoles.

[...]
2. Probe for console devices, which includes the (default) PC VGA+Key-
board console (pc0) and up to four serial consoles (com0 through
com3) connected to the serial ports. Display messages to the de-
fault console about the devices found.
Es koennte sein, das dein Serielles Device vom bootstrap nicht erkannt wird, aber ist auch nur eine Vermutung.
 

/dev/urandom

Well-Known Member
#17
MateJunk hat gesagt.:
Es koennte sein, das dein Serielles Device vom bootstrap nicht erkannt wird, aber ist auch nur eine Vermutung.
Um das auszuprobieren kannst du ja mal die Platten tauschen, wenn das möglich ist.

Ich hab bisher nur einmal auf OpenBSD/i386 eine serielle Konsole eingerichtet, da hatte ich auch einen Bootprompt, allerdings war das noch mit 3.7, doch da sollte sich eigentlich nichts geändert haben.


/dev/urandom
 
Themenstarter #18
MateJunk hat gesagt.:
Um den Boot Prompt auf den Seriellen Ausgang zu bekommen ist nur folgende Einstellung fuer erforderlich in der /etc/boot.conf:
Code:
set tty com0
Nur ist gut gesagt. Ob ich nun die Geschwindigkeit setzte oder nicht, ändert nichts daran, das bei der einen Installation die Ausgaben erst mit dem Kernel-Output beginnen, während bei der zweiten schon der boot-Prompt erscheint.

MateJunk hat gesagt.:
Hatt rein gar nix mit dem Kernel oder sonstiges zutun.
Der Kernel ist bis dato gar nicht geladen. Nur der bootstrap.
Hier mal aus der man boot.conf:

Es koennte sein, das dein Serielles Device vom bootstrap nicht erkannt wird, aber ist auch nur eine Vermutung.
Das das nichts mit dem Kernel zu tun hat, ist mir auch klar. Es war nur ein Hinweis darauf, das die Ausgaben auf der seriellen Konsole erst mit dem Kernel-Output anfangen, während sie bei der 'funktionierenden' Installation schon mit 'boot>' beginnen. Ich denke nicht, das es an der Erkennung der seriellen Schnittstelle liegt, sonst würde ja der Kernel-Output nicht auf der ser. Konsole erscheinen.

Gruß c.