Enable Serial Console on Boot: Difference between revisions

From Alpine Linux
(updaed wikitags except in syslinux section due to lack of knowledge)
 
(9 intermediate revisions by 7 users not shown)
Line 1: Line 1:
== How to Enable the Serial Console on Boot (1.10.x)==
This page explains how to Enable Serial Console on Boot in Alpine Linux, both during Installation and at any time later. The necessary steps related to  [[Bootloaders]] like [[#Grub|Grub]] and [[#Syslinux|Syslinux]] are given in this page.
 
== Enabling a login console ==
 
{{Tip|If you plan on enabling a serial console, don 't skip this section.}}
 
This is done in {{Path|/etc/inittab}}. There is commented entry for ttyS0. Uncomment it to enable it as shown:{{Cat|/etc/inittab|# Put a getty on the serial port
ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100}}
 
To start the getty, reload the inittab:{{Cmd|#kill -HUP 1}}
 
=== Add your serial console to the trusted local terminal list ===
 
If you face the problem that the login prompt always refuses a valid '''root''' password when you use serial console, add the below entry entry to {{Path|/etc/securetty}} as shown:{{Cat|/etc/securetty|ttyS0}}
 
== Syslinux ==
 
=== How to Enable the Serial Console on Boot (1.10.x)===


When using syslinux to boot, you'll need to modify the syslinux.cfg file in the root directory of the boot device. If using a disk-based Alpine, modify the /boot/extlinux.cfg file.
When using syslinux to boot, you'll need to modify the syslinux.cfg file in the root directory of the boot device. If using a disk-based Alpine, modify the /boot/extlinux.cfg file.
Line 8: Line 25:
* optionally, remove <tt>quiet</tt> from the <tt>append </tt> parameter
* optionally, remove <tt>quiet</tt> from the <tt>append </tt> parameter


=== Example syslinux.cfg ===
==== Example syslinux.cfg ====


<pre>
<pre>
Line 20: Line 37:
</pre>
</pre>


 
=== extlinux.conf (3.0+)===
== extlinux.conf (3.0+)==


The /etc/update-extlinux.conf is read by the update-extlinux utility.
The /etc/update-extlinux.conf is read by the update-extlinux utility.
Line 34: Line 50:
serial_baud=9600</pre>
serial_baud=9600</pre>


=== Xen ===
{{Todo|[[#Enabling two consoles during boot|Enabling two consoles during boot]] in extlinux menu is yet to be documented. Refer [http://patchwork.openembedded.org/patch/45175/ thread].}}
 
==== Xen ====


Notice, if you want to use this for a Xen VM,
Notice, if you want to use this for a Xen VM,
Line 49: Line 67:
</pre>
</pre>


See the [http://wiki.xen.org/wiki/Xen_Serial_Console Xen wiki] for more details.
See the [https://wiki.xenproject.org/wiki/Xen_Serial_Console Xen wiki] for more details.


=== Example /boot/extlinux.conf ===
==== qemu ====


This is a complete file, written by the update-extlinux command.
Like Xen, qemu should run at speed 115200.
 
Conveniently, the alpine "virt" image (but not the "standard" image) comes with this all configured on the default ISO.
 
Sample command to run qemu on alpine-virt with a serial console:
<pre>
qemu-system-x86_64 -accel kvm -cdrom alpine-virt-3.16.0-x86_64.iso -display none -chardev stdio,id=char0,logfile=serial.log,signal=off -serial chardev:char0
</pre>
Note that this example command uses the logfile option to log the output of the serial console; you can remove this if you don't need it.
 
==== Example /boot/extlinux.conf ====
 
This is a complete file, written by the {{ic|update-extlinux}} command.


<pre>
<pre>
Line 72: Line 102:
</pre>
</pre>


Please: adjust the tty speed to 115200 if needed (Xen!!).
Please: adjust the tty speed to 115200 if needed (Xen/qemu!!).


The timeout is given in centiseconds, so this would be a 10 second timeout.
The timeout is given in deciseconds, so this would be a 10 second timeout.[https://wiki.syslinux.org/wiki/index.php?title=Config#TIMEOUT] A timeout of 0 does not boot without delay, but rather waits indefinitely for the user.


If the file is read by pygrub, the same value is interpreted as seconds, resulting in a 100s bootup delay per VM.
If the file is read by pygrub, the same value is interpreted as seconds, resulting in a 100s bootup delay per VM.


== Enabling a login console ==
== Grub ==


This is done in /etc/inittab. There is commented entry for ttyS0. Just enable it.
If you're using Grub as your bootloader, follow this section.
<pre>
Edit {{Path|/etc/default/grub}} and add the following lines (assuming you're using the first serial port at 115200 baud rate){{Cat|/etc/default/grub|<nowiki>...
# Put a getty on the serial port
GRUB_TERMINAL="serial console"
ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100
GRUB_SERIAL_COMMAND="serial --unit=0 --word=8 --parity=no --speed 115200 --stop=1"
</pre>
</nowiki>}}


To start the getty, restart init:
Also add ''console=ttyS0,115200n8d'' to the {{ic|GRUB_CMDLINE_LINUX_DEFAULT}} variable so your Your {{Path|/etc/default/grub}} should now look something like this:{{Cat|/etc/default/grub|<nowiki>GRUB_TIMEOUT=2
<pre>
GRUB_DISABLE_SUBMENU=y
kill -HUP 1
GRUB_DISABLE_RECOVERY=true
</pre>
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8d modules=sd-mod,usb-storage,xfs quiet rootfstype=xfs"
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial --unit=0 --word=8 --parity=no --speed 115200 --stop=1"
</nowiki>}}


== Enabling two consoles during boot ==
Now, regenerate your {{Path|/boot/grub/grub.cfg}} with the following command:{{Cmd|# grub-mkconfig -o /boot/grub/grub.cfg}}


It's possible to output to both the serial and vga console during the system boot.
Remember to [[#Enabling a login console|enable login console]] and [[#Add your serial console to the trusted local terminal list|add your serial console to the trusted local terminal list]], if not already done.
 
<PRE>
append "quiet console=ttyS0,9600 console=tty0"
</PRE>


Not known how to do the same thing in the extlinux menu.
=== Enabling two consoles during boot ===
You might find a starting point in this thread: http://patchwork.openembedded.org/patch/45175/


== Add your serial console to the trusted local terminal list ==
It's possible to output to both the serial and vga console during the system boot, when using [[#Grub|Grub]].
If you face the problem that the login prompt always refuses your password when you use serial console, you missed this entry.


Add this to the <tt>/etc/securetty</tt> file: 
<PRE>
<PRE>
ttyS0
append "quiet console=ttyS0,9600 console=tty0"
</PRE>
</PRE>


[[Category:Booting]]
[[Category:Booting]] [[Category:Installation]]
[[Category:Installation]]

Latest revision as of 15:33, 17 August 2025

This page explains how to Enable Serial Console on Boot in Alpine Linux, both during Installation and at any time later. The necessary steps related to Bootloaders like Grub and Syslinux are given in this page.

Enabling a login console

Tip: If you plan on enabling a serial console, don 't skip this section.

This is done in /etc/inittab. There is commented entry for ttyS0. Uncomment it to enable it as shown:

Contents of /etc/inittab

# Put a getty on the serial port ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100

To start the getty, reload the inittab:

#kill -HUP 1

Add your serial console to the trusted local terminal list

If you face the problem that the login prompt always refuses a valid root password when you use serial console, add the below entry entry to /etc/securetty as shown:

Contents of /etc/securetty

ttyS0

Syslinux

How to Enable the Serial Console on Boot (1.10.x)

When using syslinux to boot, you'll need to modify the syslinux.cfg file in the root directory of the boot device. If using a disk-based Alpine, modify the /boot/extlinux.cfg file.

Add the following:

  • serial 0 9600
  • add console=ttyS0,9600 to the append parameter
  • optionally, remove quiet from the append parameter

Example syslinux.cfg

serial 0 9600
timeout 20
prompt 1
default grsec
label grsec
        kernel /boot/grsec
        append initrd=/boot/grsec.gz alpine_dev=sda1:vfat modules=sd-mod,usb-storage console=ttyS0,9600

extlinux.conf (3.0+)

The /etc/update-extlinux.conf is read by the update-extlinux utility.

To do so, change the default entry:

default_kernel_opts="quiet"

to read like this:

default_kernel_opts="console=ttyS0,9600 quiet"

Set the serial port and baud rate to match the default_kernel_opts line above:

serial_port=0
serial_baud=9600
Todo: Enabling two consoles during boot in extlinux menu is yet to be documented. Refer thread.


Xen

Notice, if you want to use this for a Xen VM, you need to configure the speed at 115200 bps and enable the

serial="pty"

setting in the VM config file.


Xen can be configured to use and log to a serial console by editing /etc/update-extlinux.conf to include the following lines:

default_kernel_opts="console=hvc0 earlyprintk=xen nomodeset"
xen_opts="dom0_mem=256M com1=115200,8n1 console=com1"

See the Xen wiki for more details.

qemu

Like Xen, qemu should run at speed 115200.

Conveniently, the alpine "virt" image (but not the "standard" image) comes with this all configured on the default ISO.

Sample command to run qemu on alpine-virt with a serial console:

qemu-system-x86_64 -accel kvm -cdrom alpine-virt-3.16.0-x86_64.iso -display none -chardev stdio,id=char0,logfile=serial.log,signal=off -serial chardev:char0

Note that this example command uses the logfile option to log the output of the serial console; you can remove this if you don't need it.

Example /boot/extlinux.conf

This is a complete file, written by the update-extlinux command.

DEFAULT menu.c32
PROMPT 0
MENU TITLE Alpine/Linux Boot Menu
MENU AUTOBOOT Alpine will be booted automatically in # seconds.
SERIAL 0 9600
TIMEOUT 100
LABEL grsec
  MENU DEFAULT
  MENU LABEL Linux 3.10.33-0-grsec
  LINUX vmlinuz-3.10.33-0-grsec
  INITRD initramfs-3.10.33-0-grsec
  APPEND root=UUID=re-mov-ed-uu-id modules=sd-mod,usb-storage,ext4 console=ttyS0,9600

MENU SEPARATOR

Please: adjust the tty speed to 115200 if needed (Xen/qemu!!).

The timeout is given in deciseconds, so this would be a 10 second timeout.[1] A timeout of 0 does not boot without delay, but rather waits indefinitely for the user.

If the file is read by pygrub, the same value is interpreted as seconds, resulting in a 100s bootup delay per VM.

Grub

If you're using Grub as your bootloader, follow this section.

Edit /etc/default/grub and add the following lines (assuming you're using the first serial port at 115200 baud rate)

Contents of /etc/default/grub

... GRUB_TERMINAL="serial console" GRUB_SERIAL_COMMAND="serial --unit=0 --word=8 --parity=no --speed 115200 --stop=1"

Also add console=ttyS0,115200n8d to the GRUB_CMDLINE_LINUX_DEFAULT variable so your Your /etc/default/grub should now look something like this:

Contents of /etc/default/grub

GRUB_TIMEOUT=2 GRUB_DISABLE_SUBMENU=y GRUB_DISABLE_RECOVERY=true GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8d modules=sd-mod,usb-storage,xfs quiet rootfstype=xfs" GRUB_TERMINAL="serial console" GRUB_SERIAL_COMMAND="serial --unit=0 --word=8 --parity=no --speed 115200 --stop=1"

Now, regenerate your /boot/grub/grub.cfg with the following command:

# grub-mkconfig -o /boot/grub/grub.cfg

Remember to enable login console and add your serial console to the trusted local terminal list, if not already done.

Enabling two consoles during boot

It's possible to output to both the serial and vga console during the system boot, when using Grub.

append "quiet console=ttyS0,9600 console=tty0"