Giter Site home page Giter Site logo

ipxe's Introduction

CentOS 7 iPXE HTTP installation via text mode over serial console

The centos7-serial.ipxe iPXE boot script can be used to boot and install CentOS 7 over HTTP via a serial console. This is useful for (and was tested on) PC Engine's APU boards and APU2 boards (requires BIOS version >= 160311) or other systems without a video output but PXE/iPXE support.

Follow the steps below to boot the CentOS 7 installer over HTTP.

Open up a serial terminal, for example via minicom:

minicom -b 115200 8N1 -D /dev/ttyUSB0

Enter the iPXE boot menu, by pressing CTRL-B (on PC Engines APU at least):

iPXE 1.0.0+ -- Open Source Network Boot Firmware -- http://ipxe.org                                           
Features: HTTP iSCSI DNS TFTP AoE bzImage ELF MBOOT PXE PXEXT Menu                                            
                                                                                                              
iPXE>

Chainload ipxe over ipxe first (as the APU version seems to be buggy and will result in Initramfs unpacking failed: junk in compressed archive)

dhcp
chain http://boot.ipxe.org/ipxe.pxe
# CTRL-B
ifconf
chain http://rabe.hairmare.ch/centos7-serial.ipxe

# If your iPXE supports HTTPS, you can chainload directly from GitHub
chain https://raw.githubusercontent.com/radiorabe/ipxe/master/centos7-serial.ipxe

or if you're lazy:

# [...]

# URL shortener pointing to http://rabe.hairmare.ch/centos7-serial.ipxe
chain http://bit.ly/2cps3s6

# URL shortener pointing to https://raw.githubusercontent.com/radiorabe/ipxe/master/centos7-serial.ipxe
chain http://bit.ly/1WZH8Nu

Post installation steps

Before rebooting into the installed system make sure that the installed system can be accessed via serial console. Use the installation console to check the following steps. Alternatively you can also login via SSH as root later on (if you know which IP address your system has configured or obtained).

After the installation, the grub boot loader should already have the necessary kernel options set (the same as used during the installation) so that all the output will be redirected to the serial console (console=ttyS0,115200n8).

The configuration is located at /etc/sysconfig/grub (within the chroot or the already booted system):

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial --speed=115200"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap ipv6.disable console=ttyS0,115200n8"
GRUB_DISABLE_RECOVERY="true"

If you need to make changes, re-generate the grub configuration:

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

To be able to login over the serial console, a getty process needs to be started on the serial console. According to systemd for Administrators - Gettys on Serial Consoles, systemd should start a getty process automatically as soon as the kernel console parameter points to a serial console (console=ttyS0). However, for some reason systemd didn't start the getty and the service needs to be started and enabled manually:

systemctl enable [email protected]
systemctl start [email protected]

Afterwards there should be an agetty process running and the login should work over the serial console. You might need to send a break signal first, if there's no prompt visible (within minicom use CTRL-A then [Shift] F).

ps u -C agetty
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       655  0.0  0.0 110032   848 tty1     Ss+  18:46   0:00 /sbin/agetty --noclear tty1 linux
root      2424  0.0  0.0 110032   868 ttyS0    Ss+  18:47   0:00 /sbin/agetty --keep-baud 115200 38400 9600 ttyS0 vt220

ipxe's People

Contributors

hairmare avatar paraenggu avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

therevoman

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.