diff options
-rw-r--r-- | Makefile | 14 | ||||
-rwxr-xr-x | skeleton/init | 55 |
2 files changed, 41 insertions, 28 deletions
@@ -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 |