Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
meta-elphel393
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
meta-elphel393
Commits
55d7a9b2
Commit
55d7a9b2
authored
Jul 07, 2016
by
Oleg Dzhimiev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. initramfs 2. parallel make for initramfs
parent
7a705d48
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
336 additions
and
0 deletions
+336
-0
core-image-elphel393-initramfs.bb
recipes-core/images/core-image-elphel393-initramfs.bb
+22
-0
core-image-elphel393.bb
recipes-core/images/core-image-elphel393.bb
+1
-0
init-live.sh
recipes-core/initrdscripts/files/init-live.sh
+277
-0
initramfs-live-boot_1.0.bbappend
recipes-core/initrdscripts/initramfs-live-boot_1.0.bbappend
+1
-0
linux-xlnx_4.0.bbappend
recipes-kernel/linux/linux-xlnx_4.0.bbappend
+35
-0
No files found.
recipes-core/images/core-image-elphel393-initramfs.bb
0 → 100644
View file @
55d7a9b2
# Simple initramfs image. Mostly used for live images.
DESCRIPTION = "Small image capable of booting a device. The kernel includes \
the Minimal RAM-based Initial Root Filesystem (initramfs), which finds the \
first 'init' program more efficiently."
PACKAGE_INSTALL = "initramfs-live-boot ${VIRTUAL-RUNTIME_base-utils} udev base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}"
# Do not pollute the initrd image with rootfs features
IMAGE_FEATURES = ""
export IMAGE_BASENAME = "core-image-elphel393-initramfs"
IMAGE_LINGUAS = ""
LICENSE = "MIT"
IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}"
inherit core-image
IMAGE_ROOTFS_SIZE = "8192"
BAD_RECOMMENDATIONS += "busybox-syslog"
recipes-core/images/core-image-elphel393.bb
View file @
55d7a9b2
...
...
@@ -8,6 +8,7 @@ IMAGE_INSTALL = "packagegroup-core-boot ${ROOTFS_PKGMANAGE_BOOTSTRAP} ${CORE_IMA
IMAGE_INSTALL_append = "u-boot-ezynq"
IMAGE_INSTALL_append += " \
sudo \
gcc \
python-core \
python-numpy \
python-argparse \
...
...
recipes-core/initrdscripts/files/init-live.sh
0 → 100644
View file @
55d7a9b2
#!/bin/sh
PATH
=
/sbin:/bin:/usr/sbin:/usr/bin
ROOT_MOUNT
=
"/rootfs"
ROOT_IMAGE
=
"rootfs.img"
MOUNT
=
"/bin/mount"
UMOUNT
=
"/bin/umount"
ISOLINUX
=
""
ROOT_DISK
=
""
# Copied from initramfs-framework. The core of this script probably should be
# turned into initramfs-framework modules to reduce duplication.
udev_daemon
()
{
OPTIONS
=
"/sbin/udev/udevd /sbin/udevd /lib/udev/udevd /lib/systemd/systemd-udevd"
for
o
in
$OPTIONS
;
do
if
[
-x
"
$o
"
]
;
then
echo
$o
return
0
fi
done
return
1
}
_UDEV_DAEMON
=
`
udev_daemon
`
early_setup
()
{
mkdir
-p
/proc
mkdir
-p
/sys
mount
-t
proc proc /proc
mount
-t
sysfs sysfs /sys
mount
-t
devtmpfs none /dev
# support modular kernel
modprobe isofs 2> /dev/null
mkdir
-p
/run
mkdir
-p
/var/run
$_UDEV_DAEMON
--daemon
udevadm trigger
--action
=
add
}
read_args
()
{
[
-z
"
$CMDLINE
"
]
&&
CMDLINE
=
`
cat
/proc/cmdline
`
for
arg
in
$CMDLINE
;
do
optarg
=
`
expr
"x
$arg
"
:
'x[^=]*=\(.*\)'
`
case
$arg
in
root
=
*
)
ROOT_DEVICE
=
$optarg
;;
rootimage
=
*
)
ROOT_IMAGE
=
$optarg
;;
rootfstype
=
*
)
ROOT_FSTYPE
=
$optarg
modprobe
$optarg
2> /dev/null
;;
# ubi.mtd=*)
# optarg_arr=${optarg//,/ }
# ROOT_UBIVOL=$optarg_arr[0]
# ;;
LABEL
=
*
)
label
=
$optarg
;;
video
=
*
)
video_mode
=
$arg
;;
vga
=
*
)
vga_mode
=
$arg
;;
console
=
*
)
if
[
-z
"
${
console_params
}
"
]
;
then
console_params
=
$arg
else
console_params
=
"
$console_params
$arg
"
fi
;;
debugshell
*
)
if
[
-z
"
$optarg
"
]
;
then
shelltimeout
=
30
else
shelltimeout
=
$optarg
fi
esac
done
}
boot_live_root
()
{
# Watches the udev event queue, and exits if all current events are handled
udevadm settle
--timeout
=
3
--quiet
killall
"
${
_UDEV_DAEMON
##*/
}
"
2>/dev/null
# # Allow for identification of the real root even after boot
# mkdir -p ${ROOT_MOUNT}/media/realroot
# mount -n --move "/run/media/${ROOT_DISK}" ${ROOT_MOUNT}/media/realroot
# # Move the mount points of some filesystems over to
# # the corresponding directories under the real root filesystem.
# for dir in `awk '/\/dev.* \/run\/media/{print $2}' /proc/mounts`; do
# mkdir -p ${ROOT_MOUNT}/media/${dir##*/}
# mount -n --move $dir ${ROOT_MOUNT}/media/${dir##*/}
# done
mount
-n
--move
/proc
${
ROOT_MOUNT
}
/proc
mount
-n
--move
/sys
${
ROOT_MOUNT
}
/sys
mount
-n
--move
/dev
${
ROOT_MOUNT
}
/dev
cd
$ROOT_MOUNT
# busybox switch_root supports -c option
exec
switch_root
-c
/dev/console
$ROOT_MOUNT
/sbin/init
$CMDLINE
||
fatal
"Couldn't switch_root, dropping to shell"
}
fatal
()
{
echo
$1
>
$CONSOLE
echo
>
$CONSOLE
exec
sh
}
early_setup
[
-z
"
$CONSOLE
"
]
&&
CONSOLE
=
"/dev/console"
read_args
#echo "Not waiting for removable media..."
# C=0
# while true
# do
# echo "testing C= $C"
# echo "break immediately"
# break
# for i in `ls /run/media 2>/dev/null`; do
# if [ -f /run/media/$i/$ROOT_IMAGE ] ; then
# found="yes"
# ROOT_DISK="$i"
# break
# elif [ -f /run/media/$i/isolinux/$ROOT_IMAGE ]; then
# found="yes"
# ISOLINUX="isolinux"
# ROOT_DISK="$i"
# break
# fi
# done
# if [ "$found" = "yes" ]; then
# break;
# fi
# # don't wait for more than $shelltimeout seconds, if it's set
# if [ -n "$shelltimeout" ]; then
# echo -n " " $(( $shelltimeout - $C ))
# if [ $C -ge $shelltimeout ]; then
# echo "..."
# echo "Mounted filesystems"
# mount | grep media
# echo "Available block devices"
# cat /proc/partitions
# fatal "Cannot find $ROOT_IMAGE file in /run/media/* , dropping to a shell "
# fi
# C=$(( C + 1 ))
# fi
# sleep 1
# done
# Try to mount the root image read-write and then boot it up.
# This function distinguishes between a read-only image and a read-write image.
# In the former case (typically an iso), it tries to make a union mount if possible.
# In the latter case, the root image could be mounted and then directly booted up.
mount_and_boot
()
{
mkdir
$ROOT_MOUNT
#mknod /dev/loop0 b 7 0 2>/dev/null
#if [ "$ROOT_FSTYPE" = "ubifs" ]; then
#unlock flash ? - driver should have taken care of this
# ubiattach won't be found and there's no need because kernel already knows
#ubiattach /dev/ubi_ctrl -m $ROOT_UBIVOL
#fi
if
!
mount
-t
$ROOT_FSTYPE
-o
rw,noatime
$ROOT_DEVICE
$ROOT_MOUNT
;
then
fatal
"Could not mount rootfs device (not
$ROOT_FSTYPE
?)"
fi
# always 'overlay'
TMP
=
/var/volatile/tmp
mkdir
-p
/var/volatile
mount
-t
tmpfs tmpfs /var/volatile
mkdir
-p
$TMP
/rootfs.ro
$TMP
/rootfs.rw
if
!
mount
-n
--move
$ROOT_MOUNT
$TMP
/rootfs.ro
;
then
rm
-rf
$TMP
/rootfs.ro
$TMP
/rootfs.rw
fatal
"Could not move rootfs mount point"
else
mount
-t
tmpfs
-o
rw,noatime,mode
=
755 tmpfs
$TMP
/rootfs.rw
mkdir
-p
$TMP
/rootfs.rw/upperdir
$TMP
/rootfs.rw/work
mount
-t
overlay overlay
-o
"lowerdir=
$TMP
/rootfs.ro,upperdir=
$TMP
/rootfs.rw/upperdir,workdir=
$TMP
/rootfs.rw/work"
$ROOT_MOUNT
# Assuming $ROOT_MOUNT/var/volatile exists
mount
--move
/var/volatile
$ROOT_MOUNT
/var/volatile
# Everything is already moved with /var/volatile
#mkdir -p $ROOT_MOUNT/rootfs.ro $ROOT_MOUNT/rootfs.rw
#mount --move /rootfs.ro $ROOT_MOUNT/rootfs.ro
#mount --move /rootfs.rw $ROOT_MOUNT/rootfs.rw
fi
boot_live_root
#commenting out old lines
# mkdir $ROOT_MOUNT
# mknod /dev/loop0 b 7 0 2>/dev/null
#
# if ! mount -o rw,loop,noatime,nodiratime /run/media/$ROOT_DISK/$ISOLINUX/$ROOT_IMAGE $ROOT_MOUNT ; then
# fatal "Could not mount rootfs image"
# fi
#
# if touch $ROOT_MOUNT/bin 2>/dev/null; then
# # The root image is read-write, directly boot it up.
# boot_live_root
# fi
#
# # determine which unification filesystem to use
# union_fs_type=""
# if grep -q -w "overlay" /proc/filesystems; then
# union_fs_type="overlay"
# elif grep -q -w "aufs" /proc/filesystems; then
# union_fs_type="aufs"
# else
# union_fs_type=""
# fi
#
# # make a union mount if possible
# case $union_fs_type in
# "overlay")
# mkdir -p /rootfs.ro /rootfs.rw
# if ! mount -n --move $ROOT_MOUNT /rootfs.ro; then
# rm -rf /rootfs.ro /rootfs.rw
# fatal "Could not move rootfs mount point"
# else
# mount -t tmpfs -o rw,noatime,mode=755 tmpfs /rootfs.rw
# mkdir -p /rootfs.rw/upperdir /rootfs.rw/work
# mount -t overlay overlay -o "lowerdir=/rootfs.ro,upperdir=/rootfs.rw/upperdir,workdir=/rootfs.rw/work" $ROOT_MOUNT
# mkdir -p $ROOT_MOUNT/rootfs.ro $ROOT_MOUNT/rootfs.rw
# mount --move /rootfs.ro $ROOT_MOUNT/rootfs.ro
# mount --move /rootfs.rw $ROOT_MOUNT/rootfs.rw
# fi
# ;;
# "aufs")
# mkdir -p /rootfs.ro /rootfs.rw
# if ! mount -n --move $ROOT_MOUNT /rootfs.ro; then
# rm -rf /rootfs.ro /rootfs.rw
# fatal "Could not move rootfs mount point"
# else
# mount -t tmpfs -o rw,noatime,mode=755 tmpfs /rootfs.rw
# mount -t aufs -o "dirs=/rootfs.rw=rw:/rootfs.ro=ro" aufs $ROOT_MOUNT
# mkdir -p $ROOT_MOUNT/rootfs.ro $ROOT_MOUNT/rootfs.rw
# mount --move /rootfs.ro $ROOT_MOUNT/rootfs.ro
# mount --move /rootfs.rw $ROOT_MOUNT/rootfs.rw
# fi
# ;;
# "")
# mount -t tmpfs -o rw,noatime,mode=755 tmpfs $ROOT_MOUNT/media
# ;;
# esac
#
# # boot the image
# boot_live_root
}
# if [ "$label" != "boot" -a -f $label.sh ] ; then
# if [ -f /run/media/$i/$ISOLINUX/$ROOT_IMAGE ] ; then
# ./$label.sh $i/$ISOLINUX $ROOT_IMAGE $video_mode $vga_mode $console_params
# else
# fatal "Could not find $label script"
# fi
#
# # If we're getting here, we failed...
# fatal "Target $label failed"
# fi
mount_and_boot
recipes-core/initrdscripts/initramfs-live-boot_1.0.bbappend
0 → 100644
View file @
55d7a9b2
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
recipes-kernel/linux/linux-xlnx_4.0.bbappend
View file @
55d7a9b2
...
...
@@ -28,6 +28,10 @@ export _MAKEFLAGS="-s -w -B KCFLAGS='-v'"
export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE _MAKEFLAGS"
EXTRA_OEMAKE = "${_MAKEFLAGS}"
INITRAMFS_IMAGE = "core-image-elphel393-initramfs"
INITRAMFS_IMAGE_BUNDLE = "1"
#IMAGE_FSTYPES = "cpio.gz"
do_fetch_append() {
if os.path.isdir("${DEV_DIR}"):
print("Found DEV_DIR, skipping cloning")
...
...
@@ -78,5 +82,36 @@ do_deploy_append(){
else
echo "NOT 3 FOUND!"
fi
#copy initramfs image over initramfsless image
if [ -f ${DEPLOYDIR}/${INITRAMFS_BASE_NAME}.bin ]; then
if [ -f ${DEPLOY_DIR_IMAGE}/${RLOC}/${PRODUCTION_KERNEL} ]; then
rm ${DEPLOY_DIR_IMAGE}/${RLOC}/${PRODUCTION_KERNEL}
fi
cp ${DEPLOYDIR}/${INITRAMFS_BASE_NAME}.bin ${DEPLOY_DIR_IMAGE}/${RLOC}/${PRODUCTION_KERNEL}
fi
done
}
# Override kernel_do_compile used by do_bundle_initramfs in kernel.bbclass
# Added ${PARALLEL_MAKE} only
kernel_do_compile() {
unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE
# The $use_alternate_initrd is only set from
# do_bundle_initramfs() This variable is specifically for the
# case where we are making a second pass at the kernel
# compilation and we want to force the kernel build to use a
# different initramfs image. The way to do that in the kernel
# is to specify:
# make ...args... CONFIG_INITRAMFS_SOURCE=some_other_initramfs.cpio
if [ "$use_alternate_initrd" = "" ] && [ "${INITRAMFS_TASK}" != "" ] ; then
# The old style way of copying an prebuilt image and building it
# is turned on via INTIRAMFS_TASK != ""
copy_initramfs
use_alternate_initrd=CONFIG_INITRAMFS_SOURCE=${B}/usr/${INITRAMFS_IMAGE}-${MACHINE}.cpio
fi
oe_runmake ${KERNEL_IMAGETYPE_FOR_MAKE} ${PARALLEL_MAKE} ${KERNEL_ALT_IMAGETYPE} CC="${KERNEL_CC}" LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS} $use_alternate_initrd
if test "${KERNEL_IMAGETYPE_FOR_MAKE}.gz" = "${KERNEL_IMAGETYPE}"; then
gzip -9c < "${KERNEL_IMAGETYPE_FOR_MAKE}" > "${KERNEL_OUTPUT}"
fi
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment