ISO/configs/syslinux-iso/overlay/etc/rc.d/archiso

117 lines
3.0 KiB
Plaintext
Raw Normal View History

# vim: set ft=sh:
. /etc/rc.conf
. /etc/rc.d/functions
scan_network ()
{
netparam () { echo ${2} | sed "s|.*${1}\([^ ]*\).*|\1|gi"; }
#
netdevs=$(cat /proc/net/dev | grep ':' | cut -d':' -f1)
for net in ${netdev}; do
stats=$(ifconfig ${net} | tr -s "\n" " ")
done
}
scan_mount_pts ()
{
#iterate over all block devices
stat_busy "Scanning local block devices"
for dev in $(echo /sys/block/*/dev /sys/block/*/*/dev); do
devname="/dev/$(echo ${dev} | cut -d'/' -f3,4 | cut -d'/' -f1)"
mountpt="/mnt/$(basename '${devname}')"
mkdir -p "${mountpt}" 2>/dev/null
mount ${options} "${devname}" "${mountpt}" >/dev/null 2>&1
fstype=$(awk '{ if ($1=="${devname}") { print $3" "$4;q }}' /proc/mounts)
fstype="${fstype%%,*}"
case "${fstype%% *}" in
*fat*|ntfs|*dos) options="user,exec,uid=0,gid=100,umask=00070" ;;
*) options="users,defaults,exec" ;;
#TODO handle 'sync' on usb devices...
esac
echo "${devname} ${mountpt} ${fstype} ${options} 0 0 #configured by archiso" >>/etc/fstab
done
stat_done
}
scan_swap ()
{
#Archie finds a pagefile.sys for windows/dos machines... may add later
stat_busy "Finding existing swap partitions"
swapdev="$(fdisk -l 2>/dev/null | grep swap | cut -d' ' -f1)"
if [ -e "${swapdev}" ]; then
swapon ${swapdev}
echo "${swapdev} swap swap defaults 0 0 #configured by archiso" >>/etc/fstab
fi
stat_done
}
do_homedir ()
{
stat_busy "Scanning for existing HOME directory"
user="$(cmdline_param homeuser)"
for hdir in $(find /mnt -name "home/${user}" 2>/dev/null); do
mkdir -p "/home/arch/"
# break after the first success...
mount --bind "${hdir}" "/home/arch/" && break
done
stat_done
}
do_makeuser ()
{
stat_busy "Making the default user arch"
addgroups="audio,disk,optical,wheel"
useradd -m -p "" -g users -G $addgroups arch
stat_done
}
do_locale_gen ()
{
stat_busy "Generating locales..."
sed -i "s/#\(${LOCALE/[@.]*}\)/\1/" /etc/locale.gen
/usr/sbin/locale-gen > /dev/null
stat_done
}
# GIT does not manage perms others thans 755 and 644, so fix here.
do_fix_perms ()
{
stat_busy "Fixing file permissions..."
chmod 440 /etc/sudoers
stat_done
}
# If an alternate console was specified on the kernel command line,
# start agetty on it too.
do_special_console()
{
cmdline_console="$(kernel_cmdline console)"
[ $? -ne 0 ] && return
dev="${cmdline_console%%,*}"
args="${cmdline_console##*,}"
baud="${args%%[neo]*}" && baud="${baud:-"9600"}"
[ "x${args}" != "x${args%%r}" ] && rts="-h"
stat_busy "Starting agetty on console: ${cmdline_console}"
echo "${dev}" >> /etc/securetty
echo "z0:2345:respawn:/sbin/agetty ${rts} ${baud} ${dev} linux" >> /etc/inittab
/sbin/telinit q
stat_done
}
case "$1" in
start)
do_locale_gen
do_makeuser
do_fix_perms
do_special_console
;;
esac
exit 0