Package: rootskel Reply below..
Stéphane Larose wrote: > 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 I don't know how doable #1 is (would need some way for busybox to detect this machine), so I'm focusing on #2. However, I'm not sure why creating the /dev/ttySG0 device would work. From your description it sounds like busybox init would still try to use the hardcoded /dev/tts/0 device instead. Seems like we could fix it by making init-udev-devices skip creation of /dev/tts/0, if running on the altix. What would be a good way to detect that machine? -- see shy jo
signature.asc
Description: Digital signature