Debian on SGI Altix IA-64 (follow-up)
Hi,
At the end of December, I posted on this list about booting and running Debian
etch on SGI Altix 350. There was basically 3 things to modify on the netinst
cd to make it boot and install:
- putting 'relocatable' in elilo.conf (done - thanks to Dann Frazier)
- adding some modules to the d-i kernel (done - thanks to Dann Frazier)
- modifying something with the console device since we lose the console output
when booting the cd (just when init - or busybox init starts)
The trick I found to get the console output after init starts was to comment
out this line:
makedev 600 /dev/tts/"$i" c 4 "$(($i + 64))"
in /lib/debian-installer/init-udev-devices. I've done some research to know
exactly why this make the console output work.
In kernel > 2.6.7, there is a new serial console driver for the Altix L1
(CONFIG_SERIAL_SGI_L1_CONSOLE=y) and the device is /dev/ttySG0. I think this
device gets associated with /dev/console in the d-i because, if I
create it (just before busybox init starts):
mknod ttySG0 c 204 40
and
echo "something" > /dev/ttySG0 or
echo "something" > /dev/console
both will echo.
Then I looked at how busybox init was choosing the console and found out that
this part of code is being executed:
... (from busybox init.c source)
if (ioctl(0, TIOCGSERIAL, &sr) == 0) {
/* this is a serial console */
snprintf(console, sizeof(console) - 1, SC_FORMAT, sr.line);
...
while ((fd = open(console, O_RDONLY | O_NONBLOCK)) < 0 && tried < 2) {
/* Can't open selected console -- try
logical system console and VT_MASTER */
safe_strncpy(console, (tried == 0 ? _PATH_CONSOLE : CURRENT_VC),
sizeof(console));
...
So sr.line is set to 0 which seems correct but the SC_FORMAT variable
is '/dev/tts/' (hard-coded) resulting in console=/dev/tts/0 instead
of /dev/ttySG0.
On the d-i CD, /dev/tts/0 is created by
the /lib/debian-installer/init-udev-devices script, so busybox will try to
open it and will succeed but this device is not the correct one on the Altix
so no more console output after busybox init.
If I delete /dev/tts/0 (or comment out the line to create this device in the
init-udev-devices script), the 'open' call of busybox will fail so busybox
will retry with console=_PATH_CONSOLE (which is defined as /dev/console) and
this will work since we effectively are on /dev/console (/dev/ttySG0) during
the Debian installation on Altix.
That is what I think creates the problem with console output when installing
on Altix. I don't know what is the best solution to correct this but maybe:
1- patching busybox so that SC_FORMAT would be /dev/ttySG on Altix (if kernel
> 2.6.7)
2- creating the /dev/ttySG0 device in the init-udev-devices script
Stéphane
Reply to: