aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile14
-rwxr-xr-xskeleton/init55
2 files changed, 41 insertions, 28 deletions
diff --git a/Makefile b/Makefile
index 2f5c6f1..fa7c1ac 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@ ARCH=$(shell uname -m)
MEMORY ?= 64
NET_BRIDGE ?= br0
NET_HWADDR ?= 66:66:66:66:66:66
-NET_IP4 ?=
+KEYMAP ?= i386/qwertz/de-latin1
LINUX_LOCAL ?=
DEFCONFIG ?=
NO_MODULES ?=
@@ -166,21 +166,21 @@ net:
-test -x /etc/qemu-ifup || sudo scripts/qemu-ifup linux-qemu-test
qemu: image
- qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' -enable-kvm -m $(MEMORY) -vga qxl -display sdl
+ qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' -enable-kvm -m $(MEMORY) -vga qxl -display sdl -append='keymap=$(KEYMAP)'
qemu-console: image
- qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' -enable-kvm -m $(MEMORY) -curses
+ qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' -enable-kvm -m $(MEMORY) -curses -append='keymap=$(KEYMAP)'
qemu-serial: image
- qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' -enable-kvm -m $(MEMORY) -nographic -append console=ttyS0
+ qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' -enable-kvm -m $(MEMORY) -nographic -append 'console=ttyS0 keymap=$(KEYMAP)'
qemu-serial-net: image
qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' -enable-kvm -m $(MEMORY) -nographic \
- -net nic,macaddr=$(NET_HWADDR) -net tap,ifname=linux-qemu-test,br=$(NET_BRIDGE),script=no,downscript=no -append 'net $(if $(NET_IP4),ip4) console=ttyS0'
+ -net nic,macaddr=$(NET_HWADDR) -net tap,ifname=linux-qemu-test,br=$(NET_BRIDGE),script=no,downscript=no -append 'net console=ttyS0 keymap=$(KEYMAP)'
qemu-net: image
qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' -enable-kvm -m $(MEMORY) -vga qxl -display sdl \
- -net nic,macaddr=$(NET_HWADDR) -net tap,ifname=linux-qemu-test,br=$(NET_BRIDGE),script=no,downscript=no -append 'net $(if $(NET_IP4),ip4)'
+ -net nic,macaddr=$(NET_HWADDR) -net tap,ifname=linux-qemu-test,br=$(NET_BRIDGE),script=no,downscript=no -append 'net keymap=$(KEYMAP)'
define HELP_PREFIX
@printf '%*s%-10s - %s\n' '20' '$1' '' '$2'
@@ -213,8 +213,8 @@ help:
$(call HELP_PREFIX_OPTS,NO_MODULES=y,neither build nor install kernel modules)
$(call HELP_PREFIX_OPTS,MEMORY=[SIZE],set the RAM size for QEMU)
$(call HELP_PREFIX_OPTS,NET_BRIDGE=[IF],set your host network bridge interface)
- $(call HELP_PREFIX_OPTS,NET_IP4=y,force IPv4 if set)
$(call HELP_PREFIX_OPTS,NET_HWADDR=66:66:66:66:66:66,set mac address for the qemu guest)
+ $(call HELP_PREFIX_OPTS,KEYMAP=arch/type/keymap,set a keymap which the init script tries to load)
$(call HELP_PREFIX_OPTS,LINUX_LOCAL=/path/to/linux,set a custom linux directory)
$(call HELP_PREFIX_OPTS,DEFCONFIG=y,use linux `make oldconfig` instead of `make x86_64_defconfig`)
$(call HELP_PREFIX_OPTS,BUILDJOBS=[NUMBER-OF-JOBS],set the maximum number of concurrent build jobs)
diff --git a/skeleton/init b/skeleton/init
index 29a9f3b..22e57d1 100755
--- a/skeleton/init
+++ b/skeleton/init
@@ -26,35 +26,48 @@ cat <<EOF
Boot took $(cut -d' ' -f1 /proc/uptime) seconds
_ _ __ _
- /\/\ (_)_ __ (_) / /(_)_ __ _ ___ __
- / \| | '_ \| | / / | | '_ \| | | \ \/ /
-/ /\/\ \ | | | | | / /__| | | | | |_| |> <
-\/ \/_|_| |_|_| \____/_|_| |_|\__,_/_/\_\
-
-
-Welcome to mini_linux
+ /\/\ (_)_ __ (_) / /(_)_ __ _ ___ __
+ / \| | '_ \| | / / | | '_ \| | | \ \/ /
+ / /\/\ \ | | | | | / /__| | | | | |_| |> <
+ \/ \/_|_| |_|_| \____/_|_| |_|\__,_/_/\_\
+=======================
+ Welcome to mini_linux
+=======================
EOF
for arg in $(cat /proc/cmdline | tr '[:upper:]' '[:lower:]'); do
- if [ x"${arg}" = xip4 ]; then
- sysctl -w net.ipv6.conf.all.disable_ipv6=1
- fi
-done
-
-for arg in $(cat /proc/cmdline | tr '[:upper:]' '[:lower:]'); do
- if [ x"$(command -v udhcpc)" != x -a x"${arg}" = xnet ]; then
- echo '*** INIT NETWORK ***'
- for netif in $(ls /sys/class/net); do
- ifconfig ${netif} 0.0.0.0 up
- done
- $(command -v udhcpc) -R -x hostname:${HOSTNAME} ${UDHCPC_ARGS}
- fi
+ case $arg in
+ net|net=*)
+ if [ x"$(command -v udhcpc)" != x ]; then
+ if [ x"${arg#net}" = x ]; then
+ for netif in $(ls /sys/class/net); do
+ ifconfig ${netif} up
+ done
+ else
+ NETIF="${arg#net=}"
+ echo "dhcp interface: ${NETIF}"
+ ifconfig ${NETIF} up
+ fi
+ $(command -v udhcpc) -R -x hostname:${HOSTNAME} ${UDHCPC_ARGS}
+ else
+ echo 'net: Missing udhcpc'
+ fi
+ ;;
+ keymap=*)
+ KEYMAP="/usr/share/keymaps/${arg#keymap=}.bmap"
+ if [ -r "${KEYMAP}" ]; then
+ echo "KEYMAP=${KEYMAP}"
+ loadkmap <"${KEYMAP}"
+ else
+ echo "keymap: Invalid path '${KEYMAP}'"
+ fi
+ ;;
+ esac
done
hostname ${HOSTNAME}
-loadkmap </usr/share/keymaps/i386/qwertz/de-latin1.bmap
cd ${HOME}
setsid cttyhack sh
poweroff -f