cdist configuration management
Latest manual: https://www.cdi.st/manual/latest/
Home page: https://www.cdi.st
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.2 KiB
60 lines
1.2 KiB
#!/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
|
|
|