# 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