diff --git a/Makefile b/Makefile index fc01d1a87de7138b855383c62390b63a82608bca..40dc2846493e497e2b67d7f06b9c03e906b06253 100644 --- a/Makefile +++ b/Makefile @@ -48,7 +48,9 @@ CONF_FILES := mkinitfs.conf \ features.d/xfs.files \ features.d/xfs.modules \ features.d/zfs.files \ - features.d/zfs.modules + features.d/zfs.modules \ + features.d/qeth.modules \ + features.d/dasd_mod.modules SCRIPTS := mkinitfs bootchartd initramfs-init IN_FILES := $(addsuffix .in,$(SCRIPTS)) @@ -71,6 +73,9 @@ SED_REPLACE := -e 's:@VERSION@:$(FULL_VERSION):g' \ -e 's:@datadir@:$(datadir):g' DEFAULT_FEATURES ?= ata base cdrom ext2 ext4 keymap kms mmc raid scsi usb virtio +ifeq ($(shell uname -m), s390x) +DEFAULT_FEATURES += qeth dasd_mod +endif all: $(SBIN_FILES) $(SCRIPTS) $(CONF_FILES) diff --git a/features.d/dasd_mod.modules b/features.d/dasd_mod.modules new file mode 100644 index 0000000000000000000000000000000000000000..ce843c5b7e11518994213d3e9a23dc776db7c674 --- /dev/null +++ b/features.d/dasd_mod.modules @@ -0,0 +1 @@ +kernel/drivers/s390/block/dasd* diff --git a/features.d/qeth.modules b/features.d/qeth.modules new file mode 100644 index 0000000000000000000000000000000000000000..bb5c320f09e4f98d3f1f0f0223ea425c5b5e3946 --- /dev/null +++ b/features.d/qeth.modules @@ -0,0 +1 @@ +kernel/drivers/s390/net/qeth* diff --git a/initramfs-init.in b/initramfs-init.in index bf2d9bd12f211ddac82b48af898518858fce6620..15a28270ed3f7e5e324dfba262609441e50fc78b 100755 --- a/initramfs-init.in +++ b/initramfs-init.in @@ -269,7 +269,7 @@ set -- $(cat /proc/cmdline) myopts="alpine_dev autodetect autoraid chart cryptroot cryptdm cryptheader cryptoffset cryptdiscards debug_init dma init_args keep_apk_new modules ovl_dev pkgs quiet root_size root usbdelay ip alpine_repo apkovl alpine_start splash blacklist - overlaytmpfs rootfstype rootflags nbd resume" + overlaytmpfs rootfstype rootflags nbd resume s390x_net dasd nameserver s390x_installer" for opt; do case "$opt" in @@ -345,6 +345,30 @@ mount -t devpts -o gid=5,mode=0620,noexec,nosuid devpts /dev/pts [ -d /dev/shm ] || mkdir /dev/shm mount -t tmpfs -o nodev,nosuid,noexec shm /dev/shm +if [ -n "$dasd" ]; then + for mod in dasd_mod dasd_eckd_mod dasd_fba_mod; do + modprobe $mod + done + for _dasd in $(echo "$dasd" | tr ',' ' ' ); do + echo 1 > /sys/bus/ccw/devices/"${_dasd%%:*}"/online + done +fi + +if [ "${s390x_net%%,*}" = "qeth_l2" ]; then + for mod in qeth qeth_l2 qeth_l3; do + modprobe $mod + done + _channel="${s390x_net#*,}" + echo "$_channel" > /sys/bus/ccwgroup/drivers/qeth/group + echo 1 > /sys/bus/ccwgroup/drivers/qeth/"${_channel%%,*}"/layer2 + echo 1 > /sys/bus/ccwgroup/drivers/qeth/"${_channel%%,*}"/online +fi + +if [ -n "$s390x_installer" ]; then + echo "nameserver $nameserver" > /etc/resolv.conf + ALPINE_REPO=${KOPT_alpine_repo:-http://dl-cdn.alpinelinux.org/alpine/latest-stable/main} +fi + # load available drivers to get access to modloop media ebegin "Loading boot drivers" @@ -572,6 +596,7 @@ fi # hack so we get openrc pkgs="$pkgs alpine-base" +[ -n "$s390x_installer" ] && pkgs="$pkgs openssh" # copy keys so apk finds them. apk looks for stuff relative --root mkdir -p $sysroot/etc/apk/keys/ @@ -610,7 +635,7 @@ else apkflags="$apkflags --update-cache" fi -if [ "$KOPT_quiet" = yes ]; then +if [ "$KOPT_quiet" = yes ] || [ -n "$s390x_installer" ]; then apkflags="$apkflags --quiet" fi @@ -627,6 +652,19 @@ if [ -n "$ovlfiles" ]; then else apk add --root $sysroot $repo_opt $apkflags $pkgs fi + +if [ -n "$s390x_installer" ]; then + rc_add sshd default + echo "PermitRootLogin yes" >> $sysroot/etc/ssh/sshd_config + # to make modloop happy + mkdir -p $sysroot/.modloop/modules/$(uname -r) + if [ -n "${s390x_installer#*,}" ]; then + echo "root:${s390x_installer#*,}" > $sysroot/.passwd + chroot $sysroot sh -c 'chpasswd < /.passwd' + rm $sysroot/.passwd + fi +fi + umount $sysroot/sys $sysroot/proc $sysroot/dev eend $?