GRUB2 Kernelparameter

Bisher (grub) konnte man Kernelparameter immer in der /boot/grub/menu.lst direkt eintragen. Bei Grub2 unter Ubuntu ist alles anders. Die menu.lst bzw. grub.cfg wird aus den Einträgen in /etc/grub.d und /etc/default/grub generiert. Das macht vieles einfacher.

Um z.B. generell bei allen konfigurierten Linux-Bootkerneln einen Parameter anzugeben reicht es in der Datei /etc/default/grub folgenden Eintrag zu ändern:

GRUB_CMDLINE_LINUX_DEFAULT="quiet 8250.nr_uarts=10"

Danach ist einmal „grub-update“ notwendig. Für weitere Infos siehe hier.

Kernellimit: 8-Fach Serielle Karte

Für einen Konsolenserver wurde eine 8-Fach serielle Karte (PCIe, OX16PCI954) in einen Server eingebaut. Allerdings wurden nur 2 der 8 Schnittstellen erkannt…

Etwas Recherche ergab, dass es ein Limit für die max. unterstützen Schnittstellen im Treiber 8250 (serial) gibt. Der Parameter „nr_uarts=10“ erhöht z.B. auf 10 Schnittstellen. Da der Treiber allerdings in der Regel mit im Kernel integriert ist (und nicht als Modul konfigriert werden kann) wird am besten beim Booten die richtige Einstellung mitgegeben.

Hier die Grub-Konfiguration im Falle von Ubuntu:

# /boot/grub/menu.lst
title           Ubuntu 9.04, kernel 2.6.28-15-server
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.28-15-server root=/dev/md0 ro quiet splash 8250.nr_uarts=10
initrd          /boot/initrd.img-2.6.28-15-server

Ansonsten könnte man auch zur Laufzeit den Parameter setzen. Oder in wie im folgenden Fall auslesen ob das Limit korrekt gesetzt wurde:

cat /sys/module/8250/parameters/nr_uarts

Kernel testen

Jedesmal spannend: Einen neuen Kernel installieren und dann der erste Reboot. Vor allem wenn es eine Remote-Maschine ist. Grub bietet netterweise die Option „–once“ um den default-Kernel nur einmal zu starten. Wenn etwas schief geht, reicht ein Reset (wenn man einen Remote-Resetter hat) um den alten Kernel wieder zu starten.

grub
savedefault --default=0 --once
quit