Signed-off-by: Nico Schottelius <nico@wurzel.schottelius.org>remotes/origin/4.0-pre-not-stable
parent
f51a444012
commit
7ba6c0a44a
@ -1,29 +0,0 @@ |
||||
#!/bin/sh |
||||
|
||||
# FIXME: Write cdist type / explorer that finds |
||||
# package for a file, distro independent |
||||
|
||||
if [ "$#" -ne 1 ]; then |
||||
echo "$0 dir-out" |
||||
exit 1 |
||||
fi |
||||
|
||||
dir=$1; shift |
||||
boot=$dir/boot |
||||
|
||||
mkdir -p "$boot" |
||||
cp /boot/vmlinuz-linux \ |
||||
/boot/initramfs-linux-fallback.img \ |
||||
/usr/lib/syslinux/bios/isolinux.bin \ |
||||
"$boot" |
||||
|
||||
cp /usr/lib/syslinux/bios/ldlinux.c32 \ |
||||
"$dir" |
||||
|
||||
cat > "$dir/isolinux.cfg" << eof |
||||
default preos |
||||
label preos |
||||
title cdist PreOS |
||||
linux /boot/vmlinuz-linux |
||||
initrd /boot/initramfs-linux-fallback.img |
||||
eof |
@ -0,0 +1,24 @@ |
||||
#!/bin/sh |
||||
|
||||
# FIXME: distro specific kernel location |
||||
|
||||
if [ "$#" -ne 1 ]; then |
||||
echo "$0 dir-out" |
||||
exit 1 |
||||
fi |
||||
|
||||
dir=$1; shift |
||||
boot=$dir/boot |
||||
|
||||
mkdir -p "$boot" |
||||
cp /boot/vmlinuz-linux "$boot/linux" |
||||
cp /usr/lib/syslinux/bios/isolinux.bin "$boot" |
||||
cp /usr/lib/syslinux/bios/ldlinux.c32 "$dir" |
||||
|
||||
cat > "$dir/isolinux.cfg" << eof |
||||
default preos |
||||
label preos |
||||
title cdist PreOS |
||||
linux /boot/linux |
||||
initrd /boot/initramfs |
||||
eof |
@ -0,0 +1,8 @@ |
||||
#!/bin/sh |
||||
|
||||
rm -rf preos |
||||
mkdir -p preos/boot |
||||
|
||||
./generate.sh > preos/boot/initramfs |
||||
./add_kernel_isolinux.sh preos |
||||
|
@ -0,0 +1,27 @@ |
||||
#!/bin/sh |
||||
set -ex |
||||
|
||||
|
||||
initramfs_dir=$(mktemp -d /tmp/cdist-preos.XXXXXXX) |
||||
# initramfs_dir=$1 |
||||
|
||||
for dir in bin sbin etc proc sys newroot; do |
||||
mkdir -p ${initramfs_dir}/$dir |
||||
done |
||||
touch ${initramfs_dir}/etc/mdev.conf |
||||
|
||||
cp init "${initramfs_dir}/init" |
||||
cp $(which busybox) "${initramfs_dir}/bin" |
||||
ln -fs busybox "${initramfs_dir}/bin/sh" |
||||
|
||||
cd "${initramfs_dir}" |
||||
find . | cpio -H newc -o | gzip |
||||
|
||||
exit 0 |
||||
|
||||
# TODO: |
||||
# - Kernel modules |
||||
# - ssh |
||||
# - various mkfs |
||||
# - libs |
||||
|
@ -0,0 +1,60 @@ |
||||
#!/bin/sh |
||||
|
||||
#Mount things needed by this script |
||||
mount -t proc proc /proc |
||||
mount -t sysfs sysfs /sys |
||||
|
||||
#Disable kernel messages from popping onto the screen |
||||
echo 0 > /proc/sys/kernel/printk |
||||
|
||||
#Create all the symlinks to /bin/busybox |
||||
busybox --install -s |
||||
|
||||
#Create device nodes |
||||
mknod /dev/null c 1 3 |
||||
mknod /dev/tty c 5 0 |
||||
mdev -s |
||||
|
||||
#Function for parsing command line options with "=" in them |
||||
# get_opt("init=/sbin/init") will return "/sbin/init" |
||||
get_opt() { |
||||
echo "$@" | cut -d "=" -f 2 |
||||
} |
||||
|
||||
#Defaults |
||||
init="/sbin/init" |
||||
root="/dev/hda1" |
||||
|
||||
#Process command line options |
||||
for i in $(cat /proc/cmdline); do |
||||
case $i in |
||||
root\=*) |
||||
root=$(get_opt $i) |
||||
;; |
||||
init\=*) |
||||
init=$(get_opt $i) |
||||
;; |
||||
esac |
||||
done |
||||
|
||||
|
||||
exec sh |
||||
|
||||
# Skipping the rest |
||||
|
||||
#Mount the root device |
||||
mount "${root}" /newroot |
||||
|
||||
#Check if $init exists and is executable |
||||
if [[ -x "/newroot/${init}" ]] ; then |
||||
#Unmount all other mounts so that the ram used by |
||||
#the initramfs can be cleared after switch_root |
||||
umount /sys /proc |
||||
|
||||
#Switch to the new root and execute init |
||||
exec switch_root /newroot "${init}" |
||||
fi |
||||
|
||||
#This will only be run if the exec above failed |
||||
echo "Failed to switch_root, dropping to a shell" |
||||
exec sh |
Loading…
Reference in new issue