From e06fa2ac4d441481ede63b58c3a15358dcd5eda9 Mon Sep 17 00:00:00 2001 From: Henning Heinold Date: Tue, 1 Apr 2014 16:22:33 +0200 Subject: [PATCH 1/4] linux-sysmocom/sysmocom-bsc: enable EHCI_HCD to get USB 2.0 support --- recipes-bsp/linux/linux-sysmocom/sysmocom-bsc/defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes-bsp/linux/linux-sysmocom/sysmocom-bsc/defconfig b/recipes-bsp/linux/linux-sysmocom/sysmocom-bsc/defconfig index d52b15f..6673c87 100644 --- a/recipes-bsp/linux/linux-sysmocom/sysmocom-bsc/defconfig +++ b/recipes-bsp/linux/linux-sysmocom/sysmocom-bsc/defconfig @@ -2093,7 +2093,7 @@ CONFIG_USB_DEVICE_CLASS=y # # CONFIG_USB_C67X00_HCD is not set # CONFIG_USB_XHCI_HCD is not set -# CONFIG_USB_EHCI_HCD is not set +CONFIG_USB_EHCI_HCD=y # CONFIG_USB_OXU210HP_HCD is not set # CONFIG_USB_ISP116X_HCD is not set # CONFIG_USB_ISP1760_HCD is not set From 4433c53b7603c019600d8d5af1f000f87c3deadd Mon Sep 17 00:00:00 2001 From: Henning Heinold Date: Fri, 21 Mar 2014 21:04:03 +0100 Subject: [PATCH 2/4] initramfs: modify init-install to install our bsc image Fixes: partly SYS#75 --- .../initrdscripts/files/init-install.sh | 180 ++++++++++++++++++ .../initramfs-live-install_sysmocom.inc | 2 + .../initramfs-live-install_1.0.bbappend | 1 + 3 files changed, 183 insertions(+) create mode 100644 recipes-core/initrdscripts/files/init-install.sh create mode 100644 recipes-core/initrdscripts/initramfs-live-install_sysmocom.inc create mode 100644 yocto-dora/initramfs-live-install_1.0.bbappend diff --git a/recipes-core/initrdscripts/files/init-install.sh b/recipes-core/initrdscripts/files/init-install.sh new file mode 100644 index 0000000..250b13f --- /dev/null +++ b/recipes-core/initrdscripts/files/init-install.sh @@ -0,0 +1,180 @@ +#!/bin/sh -e +# +# Copyright (C) 2008-2011 Intel, 2014 sysmocom +# install.sh [device_name] [rootfs_name] [video_mode] [vga_mode] +# + +PATH=/sbin:/bin:/usr/sbin:/usr/bin + +# We want a 1 Gig partition on the cf +partition_size=1000 + +# Get a list of hard drives +hdnamelist="" +live_dev_name=${1%%/*} + +echo "Searching for hard drives ..." + +for device in `ls /sys/block/`; do + case $device in + loop*) + # skip loop device + ;; + ram*) + # skip ram device + ;; + *) + # skip the device LiveOS is on + # Add valid hard drive name to the list + if [ $device != $live_dev_name -a -e /dev/$device ]; then + hdnamelist="$hdnamelist $device" + fi + ;; + esac +done + +TARGET_DEVICE_NAME="" +for hdname in $hdnamelist; do + # Display found hard drives and their basic info + echo "-------------------------------" + echo /dev/$hdname + if [ -r /sys/block/$hdname/device/vendor ]; then + echo -n "VENDOR=" + cat /sys/block/$hdname/device/vendor + fi + echo -n "MODEL=" + cat /sys/block/$hdname/device/model + cat /sys/block/$hdname/device/uevent + echo + # Get user choice + while true; do + echo -n "Do you want to install this image there? [y/n] " + read answer + if [ "$answer" = "y" -o "$answer" = "n" ]; then + break + fi + echo "Please answer y or n" + done + if [ "$answer" = "y" ]; then + TARGET_DEVICE_NAME=$hdname + break + fi +done + +if [ -n "$TARGET_DEVICE_NAME" ]; then + echo "Installing image on /dev/$TARGET_DEVICE_NAME ..." +else + echo "No hard drive selected. Installation aborted." + exit 1 +fi + +device=$TARGET_DEVICE_NAME + +# +# The udev automounter can cause pain here, kill it +# +rm -f /etc/udev/rules.d/automount.rules +rm -f /etc/udev/scripts/mount* + +# +# Unmount anything the automounter had mounted +# +umount /dev/${device}* 2> /dev/null || /bin/true + +if [ ! -b /dev/loop0 ] ; then + mknod /dev/loop0 b 7 0 +fi + +mkdir -p /tmp +cat /proc/mounts > /etc/mtab + +# MMC devices are special in a couple of ways +# 1) they use a partition prefix character 'p' +# 2) they are detected asynchronously (need rootwait) +rootwait="" +part_prefix="" +if [ ! "${device#mmcblk}" = "${device}" ]; then + part_prefix="p" + rootwait="rootwait" +fi +rootfs=/dev/${device}${part_prefix}1 + +echo "*****************" +echo "Rootfs partition size: $rootfs_size MB ($rootfs)" +echo "*****************" +echo "Deleting partition table on /dev/${device} ..." +dd if=/dev/zero of=/dev/${device} bs=512 count=2 + +echo "Creating new partition table on /dev/${device} ..." +parted /dev/${device} mklabel msdos + +echo "Creating rootfs partition on $rootfs" +parted /dev/${device} mkpart primary 0% $partition_size + +parted /dev/${device} print + +echo "Formatting $rootfs to ext4..." +mkfs.ext4 $rootfs + +mkdir /tgt_root +mkdir -p /boot + +echo "Copying rootfs files..." +dd if=/media/$1/$2 of=$rootfs bs=1024 + +# Handling of the target root partition +mount $rootfs /tgt_root + +if [ -d /tgt_root/etc/ ] ; then + # We dont want udev to mount our root device while we're booting... + if [ -d /tgt_root/etc/udev/ ] ; then + echo "/dev/${device}" >> /tgt_root/etc/udev/mount.blacklist + fi +fi + +# Handling of the target boot partition +mount --bind /tgt_root/boot /boot +echo "Preparing boot partition..." + +GRUBCFG="/boot/grub/grub.cfg" +mkdir -p $(dirname $GRUBCFG) + +cat > $GRUBCFG << EOF +default=0 +timeout=1 + +serial --unit=0 --speed=38400 +terminal --timeout=2 serial + +terminal_input --append serial +terminal_output --append serial +EOF + +if [ -f /etc/grub.d/40_custom ] ; then + echo "Preparing custom grub2 menu..." + + cat /etc/grub.d/40_custom >> $GRUBCFG + sed -i "s@__ROOTFS__@$rootfs $rootwait@g" $GRUBCFG + sed -i "s/__VIDEO_MODE__/$3/g" $GRUBCFG + sed -i "s/__VGA_MODE__/$4/g" $GRUBCFG + sed -i "s/__CONSOLE__/$5/g" $GRUBCFG + sed -i "/#/d" $GRUBCFG + sed -i "/exec tail/d" $GRUBCFG + chmod 0444 $GRUBCFG +fi + +ln -fs /boot/bzImage /tgt_root/vmlinuz +grub-install /dev/${device} +echo "(hd0) /dev/${device}" > /boot/grub/device.map + +umount /boot +umount /tgt_root + +sync + +echo "Remove your installation media, and press ENTER" + +read enter + +echo "Rebooting..." +reboot -f diff --git a/recipes-core/initrdscripts/initramfs-live-install_sysmocom.inc b/recipes-core/initrdscripts/initramfs-live-install_sysmocom.inc new file mode 100644 index 0000000..0fca764 --- /dev/null +++ b/recipes-core/initrdscripts/initramfs-live-install_sysmocom.inc @@ -0,0 +1,2 @@ +SYSMOCOM := "${@os.path.dirname(bb.data.getVar('FILE', d, True))}" +FILESEXTRAPATHS_prepend := "${SYSMOCOM}/files:" diff --git a/yocto-dora/initramfs-live-install_1.0.bbappend b/yocto-dora/initramfs-live-install_1.0.bbappend new file mode 100644 index 0000000..69d3d84 --- /dev/null +++ b/yocto-dora/initramfs-live-install_1.0.bbappend @@ -0,0 +1 @@ +require recipes-core/initrdscripts/${PN}_sysmocom.inc From 45929766a93a46ce6f89b66c222d2d30070cf308 Mon Sep 17 00:00:00 2001 From: Henning Heinold Date: Tue, 1 Apr 2014 19:01:04 +0200 Subject: [PATCH 3/4] core-image-minimal-initramfs: append the image to install charset deps for the vfat kernel modul --- yocto-dora/core-image-minimal-initramfs.bbappend | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 yocto-dora/core-image-minimal-initramfs.bbappend diff --git a/yocto-dora/core-image-minimal-initramfs.bbappend b/yocto-dora/core-image-minimal-initramfs.bbappend new file mode 100644 index 0000000..380663a --- /dev/null +++ b/yocto-dora/core-image-minimal-initramfs.bbappend @@ -0,0 +1,2 @@ +# add needed modules for vfat +IMAGE_INSTALL_append = " kernel-module-nls-iso8859-1 kernel-module-nls-cp437 " From 076f6e1bb0b1d7b79ac71eb9cfbb41eb86b1102e Mon Sep 17 00:00:00 2001 From: Henning Heinold Date: Tue, 1 Apr 2014 20:19:37 +0200 Subject: [PATCH 4/4] init-install.sh: resize the install partition --- recipes-core/initrdscripts/files/init-install.sh | 4 ++++ yocto-dora/core-image-minimal-initramfs.bbappend | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/recipes-core/initrdscripts/files/init-install.sh b/recipes-core/initrdscripts/files/init-install.sh index 250b13f..e51dc04 100644 --- a/recipes-core/initrdscripts/files/init-install.sh +++ b/recipes-core/initrdscripts/files/init-install.sh @@ -170,8 +170,12 @@ echo "(hd0) /dev/${device}" > /boot/grub/device.map umount /boot umount /tgt_root +echo "Resizing partition" +resize2fs $rootfs + sync + echo "Remove your installation media, and press ENTER" read enter diff --git a/yocto-dora/core-image-minimal-initramfs.bbappend b/yocto-dora/core-image-minimal-initramfs.bbappend index 380663a..6d8febe 100644 --- a/yocto-dora/core-image-minimal-initramfs.bbappend +++ b/yocto-dora/core-image-minimal-initramfs.bbappend @@ -1,2 +1,2 @@ -# add needed modules for vfat -IMAGE_INSTALL_append = " kernel-module-nls-iso8859-1 kernel-module-nls-cp437 " +# add needed modules for vfat and e2fsprogs for resize2fs +IMAGE_INSTALL_append = " kernel-module-nls-iso8859-1 kernel-module-nls-cp437 e2fsprogs "