flavors annotate core-xfce/rootfs/etc/init.d/bootopts.sh @ rev 67

Add core-xfce
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Dec 05 17:40:41 2010 +0100 (2010-12-05)
parents
children
rev   line source
pascal@67 1 #!/bin/sh
pascal@67 2 # /etc/init.d/bootopts.sh - SliTaz boot options from the cmdline.
pascal@67 3 #
pascal@67 4 # Earlier boot options are in rcS, ex: config= and modprobe=
pascal@67 5 #
pascal@67 6 . /etc/init.d/rc.functions
pascal@67 7
pascal@67 8 # Update fstab for swapon/swapoff
pascal@67 9 add_swap_in_fstab()
pascal@67 10 {
pascal@67 11 grep -q "$1 " /etc/fstab || cat >> /etc/fstab <<EOT
pascal@67 12 $1 swap swap default 0 0
pascal@67 13 EOT
pascal@67 14 }
pascal@67 15
pascal@67 16 # Default user account without password (uid=1000). In live mode the option
pascal@67 17 # user=name can be used, but user must be added before home= to have home dir.
pascal@67 18 # This option is not handled by a loop and case like others and has no
pascal@67 19 # effect on an installed system.
pascal@67 20 if ! grep -q "100[0-9]:100[0-9]" /etc/passwd; then
pascal@67 21 if grep -q "user=" /proc/cmdline; then
pascal@67 22 USER=`cat /proc/cmdline | sed 's/.*user=\([^ ]*\).*/\1/'`
pascal@67 23 # Avoid usage of an existing system user or root.
pascal@67 24 if grep -q ^$USER /etc/passwd; then
pascal@67 25 USER=tux
pascal@67 26 fi
pascal@67 27 else
pascal@67 28 USER=tux
pascal@67 29 fi
pascal@67 30 echo -n "Configuring user and group: $USER..."
pascal@67 31 echo "$USER:x:1000:1000:SliTaz User,,,:/home/$USER:/bin/sh" >> /etc/passwd
pascal@67 32 echo "$USER::14035:0:99999:7:::" >> /etc/shadow
pascal@67 33 echo "$USER:x:1000:" >> /etc/group
pascal@67 34 echo "$USER:!::" >> /etc/gshadow
pascal@67 35 status
pascal@67 36 # Audio and cdrom group.
pascal@67 37 addgroup $USER audio
pascal@67 38 addgroup $USER cdrom
pascal@67 39 # /home/$USER files from /etc/skel.
pascal@67 40 if [ -d /etc/skel ]; then
pascal@67 41 cp -a /etc/skel /home/$USER
pascal@67 42 # Path for user desktop files.
pascal@67 43 for i in /home/$USER/.local/share/applications/*.desktop
pascal@67 44 do
pascal@67 45 sed -i s/"user_name"/"$USER"/g $i
pascal@67 46 done
pascal@67 47 else
pascal@67 48 mkdir -p /home/$USER
pascal@67 49 fi
pascal@67 50 # Set permissions.
pascal@67 51 chown -R $USER.$USER /home/$USER
pascal@67 52 # Slim default user.
pascal@67 53 if [ -f /etc/slim.conf ]; then
pascal@67 54 sed -i s/"default_user .*"/"default_user $USER"/\
pascal@67 55 /etc/slim.conf
pascal@67 56 fi
pascal@67 57 fi
pascal@67 58
pascal@67 59 # Parse /proc/cmdline for boot options.
pascal@67 60 echo "Parsing kernel cmdline for SliTaz live options... "
pascal@67 61
pascal@67 62 for opt in `cat /proc/cmdline`
pascal@67 63 do
pascal@67 64 case $opt in
pascal@67 65 eject)
pascal@67 66 # Eject cdrom.
pascal@67 67 eject /dev/cdrom ;;
pascal@67 68 autologin)
pascal@67 69 # Autologin option to skip first graphic login prompt.
pascal@67 70 echo "auto_login yes" >> /etc/slim.conf ;;
pascal@67 71 lang=*)
pascal@67 72 # Check for a specified locale (lang=*).
pascal@67 73 LANG=${opt#lang=}
pascal@67 74 echo -n "Setting system locale to: $LANG... "
pascal@67 75 echo "LANG=$LANG" > /etc/locale.conf
pascal@67 76 echo "LC_ALL=$LANG" >> /etc/locale.conf
pascal@67 77 [ ! -d /usr/lib/locale/$LANG ] && localedef \
pascal@67 78 -i $LANG -c -f UTF-8 /usr/lib/locale/$LANG &
pascal@67 79 status ;;
pascal@67 80 kmap=*)
pascal@67 81 # Check for a specified keymap (kmap=*).
pascal@67 82 KEYMAP=${opt#kmap=}
pascal@67 83 echo -n "Setting system keymap to: $KEYMAP..."
pascal@67 84 echo "$KEYMAP" > /etc/keymap.conf
pascal@67 85 status ;;
pascal@67 86 home=*)
pascal@67 87 # Check for a specified home partition (home=*) and check for
pascal@67 88 # user home dir. Note: home=usb is a shorter and easier way to
pascal@67 89 # have home=/dev/sda1.
pascal@67 90 DEVICE=${opt#home=}
pascal@67 91 [ "$DEVICE" = "usb" ] && DEVICE=sda1
pascal@67 92 echo "Home has been specified to $DEVICE..."
pascal@67 93 USBDELAY=`cat /sys/module/usb_storage/parameters/delay_use`
pascal@67 94 USBDELAY=$((1+$USBDELAY))
pascal@67 95 echo "Sleeping $USBDELAY s to let the kernel detect the device... "
pascal@67 96 sleep $USBDELAY
pascal@67 97 USER=`cat /etc/passwd | grep 1000 | cut -d ":" -f 1`
pascal@67 98 DEVID=$DEVICE
pascal@67 99 if [ -x /sbin/blkid ]; then
pascal@67 100 # Can be a label, uuid or devname. DEVID gives us first: /dev/name.
pascal@67 101 DEVID=`/sbin/blkid | grep $DEVICE | cut -d: -f1`
pascal@67 102 DEVID=${DEVID##*/}
pascal@67 103 fi
pascal@67 104 if [ -n "$DEVID" ] && grep -q "$DEVID" /proc/partitions ; then
pascal@67 105 echo "Mounting /home on /dev/$DEVID... "
pascal@67 106 [ -d /home/$USER ] && mv /home/$USER /tmp/$USER-files
pascal@67 107 mount /dev/$DEVID /home -o uid=1000,gid=1000 2>/dev/null \
pascal@67 108 || mount /dev/$DEVID /home
pascal@67 109 # Check if swap file must be generated in /home: swap=size (Mb).
pascal@67 110 # This option is only used within home=device.
pascal@67 111 if grep -q "swap=[1-9]*" /proc/cmdline; then
pascal@67 112 SWAP_SIZE=`cat /proc/cmdline | sed 's/.*swap=\([^ ]*\).*/\1/'`
pascal@67 113 # DD to gen a virtual disk.
pascal@67 114 echo "Generating swap file: /home/swap ($SWAP_SIZE)..."
pascal@67 115 dd if=/dev/zero of=/home/swap bs=1M count=$SWAP_SIZE
pascal@67 116 # Make the Linux swap filesystem.
pascal@67 117 mkswap /home/swap
pascal@67 118 add_swap_in_fstab /home/swap
pascal@67 119 fi
pascal@67 120 else
pascal@67 121 echo "Unable to find $DEVICE... "
pascal@67 122 fi
pascal@67 123 # Move all user dir if needed.
pascal@67 124 if [ ! -d "/home/$USER" ] ; then
pascal@67 125 mv /tmp/$USER-files /home/$USER
pascal@67 126 chown -R $USER.$USER /home/$USER
pascal@67 127 else
pascal@67 128 rm -rf /tmp/$USER-files
pascal@67 129 fi
pascal@67 130 # Install all packages in /home/boot/packages. In live CD and
pascal@67 131 # USB mode the option home= mounts the device on /home, so we
pascal@67 132 # already have a boot directory with the Kernel and rootfs.
pascal@67 133 if [ -d "/home/boot/packages" ]; then
pascal@67 134 for pkg in /home/boot/packages/*.tazpkg
pascal@67 135 do
pascal@67 136 tazpkg install $pkg
pascal@67 137 done
pascal@67 138 fi ;;
pascal@67 139 laptop)
pascal@67 140 # Laptop option to load related Kernel modules.
pascal@67 141 echo "Loading laptop modules: ac, battery, fan, yenta_socket..."
pascal@67 142 for mod in ac battery fan yenta_socket
pascal@67 143 do
pascal@67 144 modprobe $mod
pascal@67 145 done
pascal@67 146 grep -qs batt /etc/lxpanel/default/panels/panel ||
pascal@67 147 sed -i 's/= cpu/= batt\n}\n\nPlugin {\n type = cpu/' \
pascal@67 148 /etc/lxpanel/default/panels/panel 2> /dev/null
pascal@67 149 # Enable Kernel Laptop mode.
pascal@67 150 echo "5" > /proc/sys/vm/laptop_mode ;;
pascal@67 151 mount)
pascal@67 152 # Mount all ext3 partitions found (opt: mount).
pascal@67 153 # Get the list of partitions.
pascal@67 154 DEVICES_LIST=`fdisk -l | grep 83 | cut -d " " -f 1`
pascal@67 155 # Mount filesystems rw.
pascal@67 156 for device in $DEVICES_LIST
pascal@67 157 do
pascal@67 158 name=${device#/dev/}
pascal@67 159 # Device can be already used by home=usb.
pascal@67 160 if ! mount | grep ^$device >/dev/null; then
pascal@67 161 echo "Mounting partition: $name on /mnt/$name"
pascal@67 162 mkdir /mnt/$name
pascal@67 163 mount $device /mnt/$name
pascal@67 164 fi
pascal@67 165 done ;;
pascal@67 166 mount-packages)
pascal@67 167 # Mount and install packages-XXX.iso (useful without Internet
pascal@67 168 # connection).
pascal@67 169 PKGSIGN="LABEL=\"packages-$(cat /etc/slitaz-release)\" TYPE=\"iso9660\""
pascal@67 170 PKGDEV=$(blkid | grep "$PKGSIGN" | cut -d: -f1)
pascal@67 171 [ -z "$PKGDEV" -a -L /dev/cdrom ] && \
pascal@67 172 PKGDEV=$(blkid /dev/cdrom | grep "$PKGSIGN" | cut -d: -f1)
pascal@67 173 if [ -n "$PKGDEV" ]; then
pascal@67 174 echo -n "Mounting packages archive from $PKGDEV..."
pascal@67 175 mkdir /packages && mount -t iso9660 -o ro $PKGDEV /packages
pascal@67 176 status
pascal@67 177 /packages/install.sh
pascal@67 178 fi ;;
pascal@67 179 wm=*)
pascal@67 180 # Check for a Window Manager (for a flavor, default WM can be changed
pascal@67 181 # with boot options or with an addfile in /etc/X11/wm.default.
pascal@67 182 WM=${opt#wm=}
pascal@67 183 mkdir -p /etc/X11
pascal@67 184 case $WM in
pascal@67 185 jwm)
pascal@67 186 echo "jwm" > /etc/X11/wm.default ;;
pascal@67 187 ob|openbox|openbox-session)
pascal@67 188 echo "openbox" > /etc/X11/wm.default ;;
pascal@67 189 e17|enlightenment|enlightenment_start)
pascal@67 190 echo "enlightenment" > /etc/X11/wm.default ;;
pascal@67 191 esac ;;
pascal@67 192 *)
pascal@67 193 continue ;;
pascal@67 194 esac
pascal@67 195 done
pascal@67 196
pascal@67 197 # If no default WM fallback to Openbox (we never know).
pascal@67 198 if [ ! -f /etc/X11/wm.default ]; then
pascal@67 199 echo "openbox" > /etc/X11/wm.default
pascal@67 200 fi
pascal@67 201
pascal@67 202 # Activate an eventual swap file or partition.
pascal@67 203 if [ "`fdisk -l | grep swap`" ]; then
pascal@67 204 for SWAP_DEV in `fdisk -l | grep swap | awk '{ print $1 }'`; do
pascal@67 205 echo "Swap memory detected on: $SWAP_DEV"
pascal@67 206 add_swap_in_fstab $SWAP_DEV
pascal@67 207 done
pascal@67 208 fi
pascal@67 209 if grep -q swap /etc/fstab; then
pascal@67 210 echo "Activating swap memory..."
pascal@67 211 swapon -a
pascal@67 212 fi