slitaz-boot-scripts annotate etc/init.d/user-home.sh @ rev 254

Huge change in boot... we start X as soon as possible by default, for this we have to config keymap, locale, user and home before, let do that in rcS. Also some fixes such as TZ
author Christophe Lincoln <pankso@slitaz.org>
date Fri Apr 29 16:06:08 2011 +0200 (2011-04-29)
parents
children c76406c5b7c5
rev   line source
pankso@254 1 #!/bin/sh
pankso@254 2 # /etc/init.d/user.sh - SliTaz default user for live mode and /home.
pankso@254 3 #
pankso@254 4 # This script is called from the main boot script /etc/init/rcS
pankso@254 5 # to add a user for live mode and mount /home before we start Slim
pankso@254 6 # since we need a user to autologin and provide a desktop
pankso@254 7 #
pankso@254 8 # Default user account without password (uid=1000). In live mode the option
pankso@254 9 # user=name can be used, but user must be added before home= to have home dir.
pankso@254 10 # This option is not handled by a loop and case like others and has no
pankso@254 11 # effect on an installed system.
pankso@254 12 #
pankso@254 13
pankso@254 14 if ! grep -q "100[0-9]:100[0-9]" /etc/passwd; then
pankso@254 15 if grep -q "user=" /proc/cmdline; then
pankso@254 16 USER=`cat /proc/cmdline | sed 's/.*user=\([^ ]*\).*/\1/'`
pankso@254 17 # Avoid usage of an existing system user or root.
pankso@254 18 if grep -q ^$USER /etc/passwd; then
pankso@254 19 USER=tux
pankso@254 20 fi
pankso@254 21 else
pankso@254 22 USER=tux
pankso@254 23 fi
pankso@254 24 echo -n "Configuring user and group: $USER..."
pankso@254 25 adduser -D -s /bin/sh -g "SliTaz User" -G users -h /home/$USER $USER
pankso@254 26 passwd -d $USER >/dev/null
pankso@254 27 status
pankso@254 28 # Audio and cdrom group.
pankso@254 29 addgroup $USER audio
pankso@254 30 addgroup $USER cdrom
pankso@254 31 addgroup $USER video
pankso@254 32 addgroup $USER tty
pankso@254 33 # /home/$USER files from /etc/skel.
pankso@254 34 # make user be only read/write by user
pankso@254 35 chmod -R 700 /home/$USER
pankso@254 36 # Slim default user.
pankso@254 37 if [ -f /etc/slim.conf ]; then
pankso@254 38 sed -i s/"default_user .*"/"default_user $USER"/\
pankso@254 39 /etc/slim.conf
pankso@254 40 fi
pankso@254 41 fi
pankso@254 42
pankso@254 43 # Check for a specified home partition (home=*) and check for
pankso@254 44 # user home dir. Note: home=usb is a shorter and easier way to
pankso@254 45 # have home=/dev/sda1.
pankso@254 46 #
pankso@254 47 if grep -q "home=" /proc/cmdline; then
pankso@254 48 DEVICE=${opt#home=}
pankso@254 49 [ "$DEVICE" = "usb" ] && DEVICE=sda1
pankso@254 50 echo "Home has been specified to $DEVICE..."
pankso@254 51 DEVID=`/sbin/blkid | sed 'p;s/"//g' | grep "$DEVICE" | sed 's/:.*//;q'`
pankso@254 52 if [ -z "$DEVID" ]; then
pankso@254 53 USBDELAY=`cat /sys/module/usb_storage/parameters/delay_use`
pankso@254 54 USBDELAY=$((2+$USBDELAY))
pankso@254 55 echo "Sleeping $USBDELAY s to let the kernel detect the device... "
pankso@254 56 sleep $USBDELAY
pankso@254 57 fi
pankso@254 58 USER=`cat /etc/passwd | sed '/:1000:/!d;s/:.*//;q'`
pankso@254 59 DEVID=$DEVICE
pankso@254 60 if [ -x /sbin/blkid ]; then
pankso@254 61 # Can be a label, uuid, type or devname. DEVID gives us first: /dev/name.
pankso@254 62 DEVID=`/sbin/blkid | sed 'p;s/"//g' | grep "$DEVICE" | sed 's/:.*//;q'`
pankso@254 63 fi
pankso@254 64 DEVID=${DEVID##*/}
pankso@254 65 if [ -n "$DEVID" ] && grep -q "$DEVID" /proc/partitions ; then
pankso@254 66 echo "Mounting /home on /dev/$DEVID... "
pankso@254 67 [ -d /home/$USER ] && mv /home/$USER /tmp/$USER-files
pankso@254 68 mount /dev/$DEVID /home -o uid=1000,gid=1000 2>/dev/null \
pankso@254 69 || mount /dev/$DEVID /home
pankso@254 70 # Check if swap file must be generated in /home: swap=size (Mb).
pankso@254 71 # This option is only used within home=device.
pankso@254 72 if grep -q "swap=[1-9]*" /proc/cmdline; then
pankso@254 73 SWAP_SIZE=`sed 's/.*swap=\([^ ]*\).*/\1/' < /proc/cmdline`
pankso@254 74 # DD to gen a virtual disk.
pankso@254 75 echo "Generating swap file: /home/swap ($SWAP_SIZE)..."
pankso@254 76 dd if=/dev/zero of=/home/swap bs=1M count=$SWAP_SIZE
pankso@254 77 # Make the Linux swap filesystem.
pankso@254 78 mkswap /home/swap
pankso@254 79 add_swap_in_fstab /home/swap
pankso@254 80 fi
pankso@254 81 else
pankso@254 82 echo "Unable to find $DEVICE... "
pankso@254 83 fi
pankso@254 84 # Move all user dir if needed.
pankso@254 85 if [ ! -d "/home/$USER" ] ; then
pankso@254 86 mv /tmp/$USER-files /home/$USER
pankso@254 87 chown -R $USER.users /home/$USER
pankso@254 88 else
pankso@254 89 rm -rf /tmp/$USER-files
pankso@254 90 fi
pankso@254 91 # Install all packages in /home/boot/packages. In live CD and
pankso@254 92 # USB mode the option home= mounts the device on /home, so we
pankso@254 93 # already have a boot directory with the Kernel and rootfs.
pankso@254 94 if [ -d "/home/boot/packages" ]; then
pankso@254 95 for pkg in /home/boot/packages/*.tazpkg
pankso@254 96 do
pankso@254 97 tazpkg install $pkg
pankso@254 98 done
pankso@254 99 fi
pankso@254 100 # We can have custom files in /home/boot/rootfs to overwrite
pankso@254 101 # the one packed into the Live system.
pankso@254 102 if [ -d "/home/boot/rootfs" ]; then
pankso@254 103 cp -a /home/boot/rootfs/* /
pankso@254 104 fi
pankso@254 105 fi