home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- set -e
-
- if [ "$1" = prereqs ]; then
- exit 0
- fi
-
- . /usr/share/initramfs-tools/hook-functions
-
- number=
- suffix=
- eval $(printf "%s" "$COMPCACHE_SIZE" | \
- sed -nre 's/^ *([1-9][0-9]*) *([%KMGT]) *$/number="\1"; suffix="\2";/p')
-
- if [ -z "$number" ] || [ -z "$suffix" ]; then
- exit 0
- fi
-
- if have_module ramzswap; then
- name=ramzswap
- manual_add_modules ramzswap
- elif have_module compcache; then
- name=compcache
- manual_add_modules compcache
- else
- exit 0
- fi
-
- copy_exec /sbin/swapon
-
- mkdir -p "$DESTDIR"/etc/udev/rules.d
- cat >"$DESTDIR"/etc/udev/rules.d/80-compcache.rules <<EOF
- KERNEL=="ramzswap0", ACTION=="add", \\
- RUN+="/sbin/swapon -p 100 /dev/ramzswap0 2>/dev/null"
- EOF
-
- mem_total="\$(sed -nre 's/^MemTotal:\\s*([0-9]+) kB\$/\\1/p' /proc/meminfo)"
-
- case "$suffix" in
- %) kbytes="\$(($mem_total * $number / 100))" ;;
- K) kbytes=$(($number)) ;;
- M) kbytes=$(($number * 1024)) ;;
- G) kbytes=$(($number * 1024 * 1024)) ;;
- T) kbytes=$(($number * 1024 * 1024 * 1024)) ;;
- esac
-
- cat >"$DESTDIR"/scripts/init-top/compcache <<EOF
- #!/bin/sh
-
- PREREQ=""
- prereqs()
- {
- echo "\$PREREQ"
- }
-
- case \$1 in
- prereqs)
- prereqs
- exit 0
- ;;
- esac
-
- # find total amount of available ram
- TOTAL_RAM=\$( grep MemTotal /proc/meminfo |tr -d ': [A-Z][a-z]')
-
- # Do not use compcache on the liveCD if we have more than 512M
- if [ "\${BOOT}" = "casper" ]; then
- if [ "\${TOTAL_RAM}" -gt 524288 ]; then
- exit 0
- fi
- fi
-
- EOF
-
- if [ "$name" = ramzswap ]; then
- cat >>"$DESTDIR"/scripts/init-top/compcache <<EOF
- modprobe -q --ignore-install ramzswap disksize_kb="$kbytes"
- EOF
- else
- cat >>"$DESTDIR"/scripts/init-top/compcache <<EOF
- modprobe -q --ignore-install compcache compcache_size_kbytes="$kbytes"
- EOF
- fi
-
- chmod 0755 "$DESTDIR"/scripts/init-top/compcache
-
- # vim:set et sw=2 sts=2:
-