Index: src/scripts/enter_chroot.sh |
diff --git a/src/scripts/enter_chroot.sh b/src/scripts/enter_chroot.sh |
index 6ad51fa44c251f4e11f8f478994c19e320481bc4..a056dd445eaff8aaf0e6a3e09c5f2c117edac0b7 100755 |
--- a/src/scripts/enter_chroot.sh |
+++ b/src/scripts/enter_chroot.sh |
@@ -25,7 +25,8 @@ DEFINE_string build_number "" \ |
DEFINE_string chrome_root "" \ |
"The root of your chrome browser source. Should contain a 'src' subdir." |
-DEFINE_boolean official_build $FLAGS_FALSE "Set CHROMEOS_OFFICIAL=1 for release builds." |
+DEFINE_boolean official_build $FLAGS_FALSE \ |
+ "Set CHROMEOS_OFFICIAL=1 for release builds." |
DEFINE_boolean mount $FLAGS_FALSE "Only set up mounts." |
DEFINE_boolean unmount $FLAGS_FALSE "Only tear down mounts." |
@@ -64,6 +65,8 @@ set -e |
INNER_CHROME_ROOT="/home/$USER/chrome_root" # inside chroot |
CHROME_ROOT_CONFIG="/var/cache/chrome_root" # inside chroot |
INNER_DEPOT_TOOLS_ROOT="/home/$USER/depot_tools" # inside chroot |
+KERNEL_MODULES_ROOT="/lib/modules/$( uname -r )" # inside and outside chroot |
+FUSE_DEVICE="/dev/fuse" |
sudo chmod 0777 "$FLAGS_chroot/var/lock" |
@@ -138,7 +141,29 @@ function setup_env { |
echo "This may impact chromium build." |
fi |
fi |
- fi |
+ fi |
+ |
+ # Mount fuse device from host machine into chroot and copy over |
+ # corresponding kernel modules. |
+ MOUNTED_PATH="$(readlink -f "${FLAGS_chroot}${FUSE_DEVICE}")" |
+ if [ -z "$(mount | grep -F "on ${MOUNTED_PATH} ")" ] |
+ then |
+ if [ -c "${FUSE_DEVICE}" ] ; then |
+ echo "Mounting fuse device" |
+ sudo touch "${MOUNTED_PATH}" |
+ sudo mount --bind "${FUSE_DEVICE}" "${MOUNTED_PATH}" |
+ INNER_MOD_PATH="$(readlink -f "${FLAGS_chroot}${KERNEL_MODULES_ROOT}")" |
+ if [ ! -f "${INNER_MOD_PATH}/modules.dep" ] ; then |
+ sudo mkdir -p "${INNER_MOD_PATH}/kernel/fs/fuse" |
+ sudo cp -fu "${KERNEL_MODULES_ROOT}/modules.dep" "${INNER_MOD_PATH}" |
+ sudo cp -fu "${KERNEL_MODULES_ROOT}/kernel/fs/fuse/fuse.ko" \ |
+ "${INNER_MOD_PATH}/kernel/fs/fuse" |
+ fi |
+ else |
+ echo "Warning: Fuse device not found. gmergefs will not work" |
+ fi |
+ fi |
+ |
) 200>>"$LOCKFILE" || die "setup_env failed" |
} |