diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rwxr-xr-x | build_gfxoverlay.sh | 83 |
2 files changed, 84 insertions, 0 deletions
@@ -7,4 +7,5 @@ /config/chroot /config/common /config/source +/overlay* diff --git a/build_gfxoverlay.sh b/build_gfxoverlay.sh new file mode 100755 index 0000000..050c8ac --- /dev/null +++ b/build_gfxoverlay.sh @@ -0,0 +1,83 @@ +#!/bin/bash +if ((UID)); then + echo "Error: You must be root to run this script" + exit 2 +fi +case "$1" in +nvidia|fglrx) drv=$1;; +*) + echo "Usage: $(basename "$0") <nvidia|fglrx> <version>" + exit 3 + ;; +esac +case "$2" in +?*) ver="$2";; +*) + echo "Usage: $(basename "$0") <nvidia|fglrx> <version>" + exit 3 + ;; +esac +if [ ! -x chroot/bin/bash ]; then + echo "Error: something is wrong with \"chroot/\" - maybe you are in the wrong directory or haven't built it yet?" + exit 4 +fi +bit="$(file chroot/bin/true | grep -q 'ELF 64-bit' && echo 64 || echo 32)" +if [ -d "overlay$bit-$drv-$ver" -a -z "$OVERWRITE" ]; then + echo "Error: overlay \"overlay$bit-$drv-$ver\" already exists." + exit 5 +fi +mkdir -p overlay root +umount root/proc root/sys root/dev root &>/dev/null +rm -rf overlay/* overlay/.??* +mount -t aufs -o br:overlay:chroot/ none root/ +if [ -d cache ]; then + mkdir -p overlay/usr/src + for i in cache/NVIDIA-Linux* cache/ati-driver-installer* + do + [ -f $i ] && ln $i overlay/usr/src/ + done +fi +cd root/ +mount --bind /proc proc/ +mount --bind /sys sys/ +mount --bind /dev dev/ +cp /etc/resolv.conf etc/resolv.conf +cat <<"eof" > usr/sbin/update-initramfs +#!/bin/sh +echo "update-initramfs is disabled for overlay-build" +exit 0 +eof +cat <<"eof" > overlay.sh +#!/bin/sh + +export LC_ALL=C LANG= DISPLAY= + +uname() +{ +case $1 in +-m) + file /bin/true | grep -q 'ELF 64-bit' && echo x86_64 || echo x86 + ;; +-r) + basename /lib/modules/* + ;; +esac +} + +eof +cat usr/local/bin/install-$drv-debian.sh >> overlay.sh +sed -i '/exit 3/d' overlay.sh +chmod +x overlay.sh +chroot . /overlay.sh -v $ver -z +cd .. +umount root/proc root/sys root/dev root &>/dev/null +rm -rf root +if [ -d cache ]; then + mv -f overlay/usr/src/NVIDIA-Linux* cache/ 2>/dev/null + mv -f overlay/usr/src/ati-driver-installer* cache/ 2>/dev/null +fi +cd overlay +rm -rf usr/sbin/update-initramfs etc/resolv.conf usr/src/NVIDIA-Linux* usr/src/ati-driver-installer* overlay.sh tmp var/log .??* +cd .. +mv overlay "overlay$bit-$drv-$ver" + |