slitaz-boot-scripts annotate etc/init.d/bootopts.sh @ rev 132

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