Add option to activate serial console
Resolves #6 Co-Authored-By: Jakub Jirutka <jakub@jirutka.cz> I just refactored the code.
This commit is contained in:
parent
b4e289fd4b
commit
6c4201fcd1
1 changed files with 24 additions and 5 deletions
|
@ -60,6 +60,8 @@
|
||||||
# -c --script-chroot (SCRIPT_CHROOT) Bind <script>'s directory at /mnt inside image and chroot
|
# -c --script-chroot (SCRIPT_CHROOT) Bind <script>'s directory at /mnt inside image and chroot
|
||||||
# into the image before executing <script>.
|
# into the image before executing <script>.
|
||||||
#
|
#
|
||||||
|
# -t --serial-console (SERIAL_CONSOLE) Add configuration for a serial console on ttyS0.
|
||||||
|
#
|
||||||
# -h --help Show this help message and exit.
|
# -h --help Show this help message and exit.
|
||||||
#
|
#
|
||||||
# -v --version Print version and exit.
|
# -v --version Print version and exit.
|
||||||
|
@ -247,7 +249,11 @@ setup_extlinux() {
|
||||||
local root_dev="$2" # root device
|
local root_dev="$2" # root device
|
||||||
local modules="$3" # modules which should be loaded before pivot_root
|
local modules="$3" # modules which should be loaded before pivot_root
|
||||||
local kernel_flavor="$4" # name of default kernel to boot
|
local kernel_flavor="$4" # name of default kernel to boot
|
||||||
|
local serial_port="$5" # serial port number for serial console
|
||||||
local default_kernel="$kernel_flavor"
|
local default_kernel="$kernel_flavor"
|
||||||
|
local kernel_opts=''
|
||||||
|
|
||||||
|
[ -z "$serial_port" ] || kernel_opts="console=$serial_port"
|
||||||
|
|
||||||
if [ "$kernel_flavor" = 'virt' ]; then
|
if [ "$kernel_flavor" = 'virt' ]; then
|
||||||
_apk search --root . --exact --quiet linux-lts | grep -q . \
|
_apk search --root . --exact --quiet linux-lts | grep -q . \
|
||||||
|
@ -255,10 +261,12 @@ setup_extlinux() {
|
||||||
|| default_kernel='vanilla'
|
|| default_kernel='vanilla'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sed -Ei -e "s|^[# ]*(root)=.*|\1=$root_dev|" \
|
sed -Ei \
|
||||||
-e "s|^[# ]*(default_kernel_opts)=.*|\1=\"\"|" \
|
-e "s|^[# ]*(root)=.*|\1=$root_dev|" \
|
||||||
|
-e "s|^[# ]*(default_kernel_opts)=.*|\1=\"$kernel_opts\"|" \
|
||||||
-e "s|^[# ]*(modules)=.*|\1=\"$modules\"|" \
|
-e "s|^[# ]*(modules)=.*|\1=\"$modules\"|" \
|
||||||
-e "s|^[# ]*(default)=.*|\1=$default_kernel|" \
|
-e "s|^[# ]*(default)=.*|\1=$default_kernel|" \
|
||||||
|
-e "s|^[# ]*(serial_port)=.*|\1=$serial_port|" \
|
||||||
"$mnt"/etc/update-extlinux.conf
|
"$mnt"/etc/update-extlinux.conf
|
||||||
|
|
||||||
chroot "$mnt" extlinux --install /boot
|
chroot "$mnt" extlinux --install /boot
|
||||||
|
@ -303,8 +311,8 @@ wgets() (
|
||||||
|
|
||||||
#============================= M a i n ==============================#
|
#============================= M a i n ==============================#
|
||||||
|
|
||||||
opts=$(getopt -n $PROGNAME -o b:cCf:hi:k:p:r:s:v \
|
opts=$(getopt -n $PROGNAME -o b:cCf:hi:k:p:r:s:tv \
|
||||||
-l branch:,image-format:,image-size:,initfs-features:,kernel-flavor:,keys-dir:,mirror-uri:,no-cleanup,packages:,repositories-file:,rootfs:,script-chroot,help,version \
|
-l branch:,image-format:,image-size:,initfs-features:,kernel-flavor:,keys-dir:,mirror-uri:,no-cleanup,packages:,repositories-file:,rootfs:,script-chroot,serial-console,help,version \
|
||||||
-- "$@") || help 1 >&2
|
-- "$@") || help 1 >&2
|
||||||
|
|
||||||
eval set -- "$opts"
|
eval set -- "$opts"
|
||||||
|
@ -322,6 +330,7 @@ while [ $# -gt 0 ]; do
|
||||||
-p | --packages) PACKAGES="${PACKAGES:-} $2";;
|
-p | --packages) PACKAGES="${PACKAGES:-} $2";;
|
||||||
-r | --repositories-file) REPOS_FILE="$(realpath "$2")";;
|
-r | --repositories-file) REPOS_FILE="$(realpath "$2")";;
|
||||||
--rootfs) ROOTFS="$2";;
|
--rootfs) ROOTFS="$2";;
|
||||||
|
-t | --serial-console) SERIAL_CONSOLE='yes'; n=1;;
|
||||||
-c | --script-chroot) SCRIPT_CHROOT='yes'; n=1;;
|
-c | --script-chroot) SCRIPT_CHROOT='yes'; n=1;;
|
||||||
-h | --help) help 0;;
|
-h | --help) help 0;;
|
||||||
-V | --version) echo "$PROGNAME $VERSION"; exit 0;;
|
-V | --version) echo "$PROGNAME $VERSION"; exit 0;;
|
||||||
|
@ -342,6 +351,7 @@ done
|
||||||
: ${REPOS_FILE:="/etc/apk/repositories"}
|
: ${REPOS_FILE:="/etc/apk/repositories"}
|
||||||
: ${ROOTFS:="ext4"}
|
: ${ROOTFS:="ext4"}
|
||||||
: ${SCRIPT_CHROOT:="no"}
|
: ${SCRIPT_CHROOT:="no"}
|
||||||
|
: ${SERIAL_CONSOLE:="no"}
|
||||||
|
|
||||||
if [ -f /etc/alpine-release ]; then
|
if [ -f /etc/alpine-release ]; then
|
||||||
: ${INSTALL_HOST_PKGS:="yes"}
|
: ${INSTALL_HOST_PKGS:="yes"}
|
||||||
|
@ -349,6 +359,9 @@ else
|
||||||
: ${INSTALL_HOST_PKGS:="no"}
|
: ${INSTALL_HOST_PKGS:="no"}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
SERIAL_PORT=
|
||||||
|
[ "$SERIAL_CONSOLE" = 'no' ] || SERIAL_PORT='ttyS0'
|
||||||
|
|
||||||
[ $# -ne 0 ] || help 1 >&2
|
[ $# -ne 0 ] || help 1 >&2
|
||||||
|
|
||||||
IMAGE_FILE="$1"; shift
|
IMAGE_FILE="$1"; shift
|
||||||
|
@ -447,13 +460,19 @@ _apk add --root . linux-$KERNEL_FLAVOR
|
||||||
einfo 'Setting up extlinux bootloader'
|
einfo 'Setting up extlinux bootloader'
|
||||||
|
|
||||||
_apk add --root . --no-scripts syslinux
|
_apk add --root . --no-scripts syslinux
|
||||||
setup_extlinux . "UUID=$root_uuid" "$ROOTFS" "$KERNEL_FLAVOR"
|
setup_extlinux . "UUID=$root_uuid" "$ROOTFS" "$KERNEL_FLAVOR" "$SERIAL_PORT"
|
||||||
|
|
||||||
cat > etc/fstab <<-EOF
|
cat > etc/fstab <<-EOF
|
||||||
# <fs> <mountpoint> <type> <opts> <dump/pass>
|
# <fs> <mountpoint> <type> <opts> <dump/pass>
|
||||||
UUID=$root_uuid / $ROOTFS noatime 0 1
|
UUID=$root_uuid / $ROOTFS noatime 0 1
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
if [ "$SERIAL_PORT" ]; then
|
||||||
|
echo "$SERIAL_PORT" >> "$mount_dir"/etc/securetty
|
||||||
|
sed -Ei "s|^[# ]*($SERIAL_PORT:.*)|\1|" "$mount_dir"/etc/inittab
|
||||||
|
fi
|
||||||
|
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
einfo 'Enabling base system services'
|
einfo 'Enabling base system services'
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue