# --- ROCK-COPYRIGHT-NOTE-BEGIN --- # # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # Please add additional copyright information _after_ the line containing # the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by # the ./scripts/Create-CopyPatch script. Do not edit this copyright text! # # ROCK Linux: rock-src/package/blindcoder/ezipupdate/mod_ezipupdate.sh # ROCK Linux is Copyright (C) 1998 - 2005 Clifford Wolf # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. A copy of the GNU General Public # License can be found at Documentation/COPYING. # # Many people helped and are helping developing ROCK Linux. Please # have a look at http://www.rocklinux.org/ and the Documentation/TEAM # file for details. # # --- ROCK-COPYRIGHT-NOTE-END --- # # [MAIN] 60 dm DeviceMapper configuration (encrypted filesystems) dm_edit_status () { gui_menu dm_edit_status "Please select new status of $device" \ "Is encrypted" "status=encrypted" \ "Decrypt" "status=decrypt" \ "Encrypt" "status=encrypt" \ "Encrypted Swap (read documentation)" "status=swap" \ "not encrypted" "status=plain" } dm_edit_dev () { cmd="" for x in /dev/{ide,scsi}/host*/bus*/target*/lun*/{disc,part*} ; do [ -b $x ] || continue cmd="$cmd '$x' 'device=$x'" done eval "gui_menu dm_edit_dev \"Please select new device to mount on $mountpoint\" $cmd" } dm_edit () { device=$1 while read olddevice oldmountpoint oldstatus ; do [ "$olddevice" == "$device" ] && break done < /etc/conf/dm/mounts mountpoint=$oldmountpoint status=$oldstatus run=0 while [ $run -eq 0 ] ; do gui_menu dm_edit "Edit encryption for $device" "Device: $device" "dm_edit_dev $mountpoint" \ "Mountpoint: $mountpoint" "gui_input 'Please enter new mountpoint' '$mountpoint' mountpoint" \ "Status: $status" "dm_edit_status" run=$? done sed -e "s,^$olddevice.*$oldmountpoint.*$oldstatus$,$device\t$mountpoint\t$status," -i /etc/conf/dm/mounts return 0 } dm_add () { cmd="" for x in /dev/{ide,scsi}/host*/bus*/target*/lun*/{disc,part*} ; do [ -b $x ] || continue grep -q $x /etc/conf/dm/mounts && continue cmd="$cmd '$x' 'device=$x'" done eval "gui_menu dm_add1 'Please select the device to use' $cmd" cmd="" gui_input "Please enter mountpoint of $device" "/data" mountpoint gui_menu dm_add2 "Please enter current state of $device" \ "is encrypted" "status=encrypted" \ "Decrypt" "status=decrypt" \ "Encrypt" "status=encrypt" \ "Encrypted Swap (read documentation)" "status=swap" \ "not encrypted" "status=plain" echo -e "$device\t$mountpoint\t$status" >>/etc/conf/dm/mounts } main() { run=0 if [ ! -f /etc/conf/dm/mounts ] ; then mkdir -p /etc/conf/dm touch /etc/conf/dm/mounts fi while [ $run -eq 0 ] ; do cmd="" while read device mountpoint status ; do cmd="$cmd 'Edit device $device ($status on $mountpoint)' 'dm_edit $device'" done < /etc/conf/dm/mounts cmd="$cmd 'Add new device' 'dm_add'" eval "gui_menu dm 'encrypted filesystems' $cmd" run=$? done tmp="`mktemp`" grep -v "added by mod_dm" /etc/conf/kernel >$tmp while read device mountpoint status ; do if [ "$status" == "swap" -o "$status" == "encrypted" -o "$status" == "encrypt" -o "$status" == "decrypt" ] ; then for x in aes-i586 dm-mod dm-crypt ; do grep -q $x $tmp || cat >> $tmp <<-EOF ### $x ### added by mod_dm modprobe $x # added by mod_dm EOF done fi done < /etc/conf/dm/mounts rm -f /etc/conf/kernel mv $tmp /etc/conf/kernel chmod 644 /etc/conf/kernel tmp=`mktemp` rm -rf ${tmp} grep -v fsck /etc/conf/initrd/initrd_dm > ${tmp} rm -f /etc/conf/initrd/initrd_dm mv ${tmp} /etc/conf/initrd/initrd_dm while read dev a mnt b fs c ; do [ -e "/sbin/fsck.${fs}" ] && echo "/sbin/fsck.${fs} /sbin/fsck.${fs}" done < <( mount ) | sort | uniq >>/etc/conf/initrd/initrd_dm echo "/sbin/fsck /sbin/fsck" >>/etc/conf/initrd/initrd_dm }