Gentoo Archives: gentoo-commits

From: Richard Farina <zerochaos@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/genkernel:aufs commit in: defaults/
Date: Fri, 05 Sep 2014 16:10:05
Message-Id: 1403565075.5d4766cd1b811a525f5b624fc1e8daf1207acac0.zerochaos@gentoo
1 commit: 5d4766cd1b811a525f5b624fc1e8daf1207acac0
2 Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
3 AuthorDate: Mon Jun 23 17:58:33 2014 +0000
4 Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
5 CommitDate: Mon Jun 23 23:11:15 2014 +0000
6 URL: http://sources.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=5d4766cd
7
8 Coding style changes throughout all the AUFS related code.
9
10 ---
11 defaults/initrd.defaults | 4 +-
12 defaults/initrd.scripts | 179 ++++++++++++++++++-------------------
13 defaults/linuxrc | 227 +++++++++++++++++++++--------------------------
14 3 files changed, 188 insertions(+), 222 deletions(-)
15
16 diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
17 index d0efa28..67b0d28 100755
18 --- a/defaults/initrd.defaults
19 +++ b/defaults/initrd.defaults
20 @@ -58,7 +58,7 @@ KSUFF='.ko'
21 REAL_ROOT=''
22 CONSOLE='/dev/console'
23 NEW_ROOT='/newroot'
24 -RC_NO_UMOUNTS="/newroot|/newroot/mnt/changesdev|/mnt/overlay|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino"
25 +RC_NO_UMOUNTS="/newroot|/newroot/mnt/changesdev|/mnt/rw_branch|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino"
26 CDROOT='0'
27 CDROOT_DEV=''
28 CDROOT_TYPE='auto'
29 @@ -71,7 +71,7 @@ CDROOT_MARKER='/livecd'
30 USE_AUFS_NORMAL=0
31 AUFS_MODULES=false
32 AUFS_CHANGES=false
33 -AUFS_CHANGESFILE=livecd.aufs
34 +AUFS_CHANGESFILE=/livecd.aufs
35
36 LOOPS='/livecd.loop /zisofs /livecd.squashfs /image.squashfs /livecd.gcloop'
37
38
39 diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
40 index 52b18b3..5ca1203 100644
41 --- a/defaults/initrd.scripts
42 +++ b/defaults/initrd.scripts
43 @@ -314,8 +314,7 @@ union_insert_modules() {
44 # This should really go into /etc/init.d/localmounts but until then we manually set this here
45 conf_rc_no_umounts() {
46 local conf nomount fnd
47 - conf="${CHROOT}/etc/rc.conf"
48 - fnd=0
49 + conf=$CHROOT/etc/rc.conf fnd=0
50
51 if nomount=$(grep -n '^[[:blank:]]*RC_NO_UMOUNTS=' $conf); then
52 local i n data cmd IFS
53 @@ -350,33 +349,28 @@ conf_rc_no_umounts() {
54 create_changefs() {
55 local size
56
57 - while [ 1 ]
58 - do
59 + while :; do
60 read -p '<< Size of file (Press Enter for default 256 Mb): ' size
61 - if [ -z "${size}" ]; then
62 - size=256
63 - fi
64 - size="${size}"
65
66 - if [ ${size} -lt 16 ]
67 - then
68 - bad_msg "Please give a size of at least 16 Mb"
69 + [ -n "$size" ] || size=256
70 +
71 + size=$size
72 +
73 + if [ 15 -ge "$size" ]; then
74 + bad_msg "Please give a size of at least 16 Megabytes"
75 else
76 - dd if=/dev/zero of=${CHANGESMNT}/${AUFS_CHANGESFILE} bs=1M count=${size} &>/dev/null
77 - if [ $? = '0' ]
78 - then
79 - good_msg "Creation of ${AUFS_CHANGESFILE}, ${size} Mb on ${CHANGESDEV} successful, formatting it ext2"
80 - mke2fs -F ${CHANGESMNT}/${AUFS_CHANGESFILE} &>/dev/null
81 + if dd if=/dev/zero "of=$CHANGESMNT$AUFS_CHANGESFILE" bs=1M count="$size" &>/dev/null; then
82 + good_msg "Creation of $AUFS_CHANGESFILE, ${size}Mb on $CHANGESDEV successful, formatting it ext2"
83 + mke2fs -F "$CHANGESMNT$AUFS_CHANGESFILE" >/dev/null
84 AUFS_CHANGES=true
85 break
86 else
87 - rm -f ${CHANGESMNT}/${AUFS_CHANGESFILE}
88 - bad_msg "Unable to create ${AUFS_CHANGESFILE} on ${CHANGESDEV} of ${size} Mb"
89 + rm -f "$CHANGESMNT$AUFS_CHANGESFILE"
90 + bad_msg "Unable to create ${AUFS_CHANGESFILE#*/} on $CHANGESDEV of ${size}Mb"
91 bad_msg "Ensure your disk is not full or read-only"
92 +
93 read -p '<< Type "a" to abort, anything else to continue : ' doabort
94 - if [ "${doabort}" = "a" ]; then
95 - return 1
96 - fi
97 + if [ a = "$doabort" ]; then return 1; fi
98 fi
99 fi
100 done
101 @@ -386,87 +380,80 @@ create_changefs() {
102 setup_aufs() {
103 bootstrapCD
104
105 - if [ -n "${AUFS}" ]
106 - then
107 - if [ "${AUFS}" = "detect" ]
108 - then
109 - CHANGESMNT="${NEW_ROOT}${CDROOT_PATH}"
110 - CHANGESDEV=${REAL_ROOT}
111 + if [ -n "$AUFS" ]; then
112 + if [ detect = "$AUFS" ]; then
113 + CHANGESMNT=$NEW_ROOT$CDROOT_PATH
114 + CHANGESDEV=$REAL_ROOT
115 else
116 - CHANGESDEV=${AUFS}
117 - good_msg "Mounting ${CHANGESDEV} to ${MEMORY} for aufs support"
118 - mount -t auto ${CHANGESDEV} ${CHANGESMNT} &>/dev/null
119 - ret=$?
120 - if [ "${ret}" -ne 0 ]
121 - then
122 - bad_msg "Mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
123 + CHANGESDEV=$AUFS
124 + good_msg "Mounting $CHANGESDEV to $MEMORY for aufs support"
125 +
126 + if ! mount -t auto "$CHANGESDEV" "$CHANGESMNT" &>/dev/null; then
127 + bad_msg "Mount of $CHANGESDEV failed, falling back to ramdisk based aufs"
128 unset AUFS
129 fi
130 fi
131 +
132 # Check and attempt to create the changesfile
133 - if [ ! -e ${CHANGESMNT}/${AUFS_CHANGESFILE} ] && [ -n "${AUFS}" ]
134 - then
135 + if [ ! -e $CHANGESMNT$AUFS_CHANGESFILE ] && [ -n "$AUFS" ]; then
136 create_changefs
137 - mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY}
138 - elif [ -n "${AUFS}" ]
139 - then
140 - local nbpass=0
141 - while [ 1 ]
142 - do
143 - mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY}
144 - ret=$?
145 - if [ "${ret}" -ne 0 ]
146 - then
147 - if [ ${nbpass} -eq 0 ]
148 - then
149 - bad_msg "Mounting of changes file failed, Running e2fsck"
150 - e2fsck ${CHANGESMNT}/${AUFS_CHANGESFILE}
151 - nbpass=$((${nbpass} + 1))
152 - else
153 - bad_msg "Mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
154 - bad_msg "your ${AUFS_CHANGESFILE} might be messed up, and I couldn't fix it"
155 - bad_msg "moving ${AUFS_CHANGESFILE} to ${AUFS_CHANGESFILE}.bad"
156 - mv ${CHANGESMNT}/${AUFS_CHANGESFILE} ${CHANGESMNT}/${AUFS_CHANGESFILE}.bad
157 - bad_msg "Try to fix it yourself with e2fsck"
158 + mount -t auto "$CHANGESMNT$AUFS_CHANGESFILE" "$MEMORY"
159 + elif [ -n "$AUFS" ]; then
160 + while :; do
161 + if mount -t auto "$CHANGESMNT$AUFS_CHANGESFILE" "$MEMORY" &>/dev/null; then
162 + break
163 + else
164 + bad_msg "Mounting of changes file failed, Running e2fsck"
165 +
166 + if ! hash e2fsck &>/dev/null; then
167 + bad_msg "/sbin/e2fsck not found! aborting filesystem check"
168 + bad_msg "Moving ${AUFS_CHANGESFILE#*/} to ${AUFS_CHANGESFILE#*/}.bad"
169 +
170 + mv "$CHANGESMNT$AUFS_CHANGESFILE" "$CHANGESMNT$AUFS_CHANGESFILE.bad"
171 + break
172 +
173 + fi
174 +
175 + if e2fsck "$CHANGESMNT$AUFS_CHANGESFILE" &>/dev/null; then
176 + good_msg "e2fsck ran successfully. Please verify data after bootup"
177 + else
178 + bad_msg "Your ${AUFS_CHANGESFILE#*/} image might be corrupted"
179 + bad_msg "moving ${AUFS_CHANGESFILE#*/} to ${AUFS_CHANGESFILE#*/}.bad"
180 +
181 + mv "$CHANGESMNT$AUFS_CHANGESFILE" "$CHANGESMNT$AUFS_CHANGESFILE.bad"
182 break
183 fi
184 - else
185 - if [ ${nbpass} -eq 1 ]
186 - then
187 - good_msg "e2fsck ran successfully. Please check your files after bootup"
188 - fi
189 - break
190 fi
191 done
192 fi
193 # mount tmpfs only in the case when changes= boot parameter was
194 # empty or we were not able to mount the storage device
195 - if [ "${CDROOT}" -eq '1' -a ! -f ${CHANGESMNT}/${AUFS_CHANGESFILE} ]
196 - then
197 - XINO=${MEMORY}
198 - umount ${MEMORY} &>/dev/null
199 - bad_msg "Failed to find ${AUFS_CHANGESFILE} file on ${CHANGESDEV}"
200 - bad_msg "Create an ext2 ${AUFS_CHANGESFILE} file on this device if you wish to use it for aufs"
201 - bad_msg "Falling back to ramdisk based aufs for safety"
202 + if [ 1 = "$CDROOT" ] && [ ! -f "$CHANGESMNT$AUFS_CHANGESFILE" ]; then
203 + XINO=$MEMORY
204 + umount "$MEMORY" &>/dev/null
205 +
206 + bad_msg "Create an extfs ${AUFS_CHANGESFILE#*/} file on this device"
207 + bad_msg "if you wish to have aufs data persistency on reboots"
208 + bad_msg "Falling back to ramdisk based aufs"
209 good_msg "Mounting ramdisk to $MEMORY for aufs support"
210 - mount -t tmpfs tmpfs ${MEMORY}
211 +
212 + mount -t tmpfs tmpfs "$MEMORY"
213 else
214 - XINO=${MEMORY}/xino
215 - mkdir -p ${XINO}
216 - mount -t tmpfs tmpfs ${XINO}
217 + XINO=$MEMORY/xino
218 +
219 + mkdir -p "$XINO"
220 + mount -t tmpfs aufs-xino "$XINO"
221 fi
222 else
223 - good_msg "Mounting ramdisk to $MEMORY for aufs support"
224 - mount -t tmpfs tmpfs ${MEMORY}
225 - XINO=${MEMORY}
226 + XINO=$MEMORY
227 +
228 + good_msg "Mounting ramdisk to $MEMORY for aufs support"
229 + mount -t tmpfs tmpfs "$MEMORY"
230 fi
231
232 - mkdir -p ${CHANGES}
233 - mount -t aufs -n -o nowarn_perm,udba=none,xino=${XINO}/.aufs.xino,br:${CHANGES}=rw aufs ${UNION}
234 - ret=$?
235 - if [ "${ret}" -ne 0 ]
236 - then
237 - bad_msg "Can't setup union ${UNION} in directory!"
238 + mkdir -p "$CHANGES"
239 + if ! mount -t aufs -n -o "nowarn_perm,udba=none,xino=$XINO/.aufs.xino,br:$CHANGES=rw" aufs "$UNION"; then
240 + bad_msg "Can't setup union $UNION in directory!"
241 USE_AUFS_NORMAL=0
242 fi
243 }
244 @@ -1420,22 +1407,24 @@ getdvhoff() {
245
246 setup_squashfs_aufs() {
247 # Setup aufs directories and vars
248 - overlay=/mnt/overlay
249 - static=/mnt/livecd
250 + rw_branch=/mnt/rw_branch ro_branch=/mnt/livecd
251
252 - for i in "${overlay}" "${static}"; do
253 - [ ! -d "${i}" ] && mkdir -p "${i}"
254 + for dir in $rw_branch $ro_branch; do
255 + [ ! -d $dir ] && mkdir -p "$dir"
256 done
257 - good_msg "Loading aufs"
258 - modprobe aufs > /dev/null 2>&1
259
260 - mount -t squashfs -o loop,ro "${CDROOT_PATH}/${LOOPEXT}${LOOP}" "${static}"
261 - mount -t tmpfs none "${overlay}"
262 - mount -t aufs -o br:${overlay}:${static} aufs "${NEW_ROOT}"
263 + good_msg "Loading aufs module ..."
264 + modprobe aufs &>/dev/null
265
266 - [ ! -d "${NEW_ROOT}${overlay}" ] && mkdir -p "${NEW_ROOT}${overlay}"
267 - [ ! -d "${NEW_ROOT}${static}" ] && mkdir -p "${NEW_ROOT}${static}"
268 - for i in "${overlay}" "${static}"; do mount --move "${i}" "${NEW_ROOT}${i}"; done
269 + mount -t squashfs -o loop,ro "$CDROOT_PATH/$LOOPEXT$LOOP" "$ro_branch"
270 + mount -t tmpfs none "$rw_branch"
271 + mount -t aufs -o "br:$rw_branch:$ro_branch" aufs "$NEW_ROOT"
272 +
273 + [ ! -d $NEW_ROOT$rw_branch ] && mkdir -p "$NEW_ROOT$rw_branch"
274 + [ ! -d $NEW_ROOT$ro_branch ] && mkdir -p "$NEW_ROOT$ro_branch"
275 + for mount in $rw_branch $ro_branch; do
276 + mount --move "$mount" "$NEW_ROOT$mount"
277 + done
278 }
279
280 setup_unionfs() {
281
282 diff --git a/defaults/linuxrc b/defaults/linuxrc
283 index 8b3ff87..5a341af 100644
284 --- a/defaults/linuxrc
285 +++ b/defaults/linuxrc
286 @@ -255,31 +255,17 @@ do
287 ;;
288 aufs\=*)
289 USE_AUFS_NORMAL=1
290 - echo ${x#*=} | grep , &>/dev/null
291
292 - if [ "$?" -eq '0' ]
293 - then
294 + if echo "${x#*=}" | grep , &>/dev/null; then
295 UID=${x#*,}
296 AUFS=${x%,*}
297 else
298 AUFS=${x#*=}
299 fi
300 ;;
301 - aufs.changes\=*)
302 - USE_AUFS_NORMAL=1
303 - echo ${x#*=} | grep , &>/dev/null
304 -
305 - if [ "$?" -eq '0' ]
306 - then
307 - UID=${x#*,}
308 - AUFS=${x%,*}
309 - else
310 - AUFS=${x#*=}
311 - fi
312 - ;;
313 aufs.persistent)
314 USE_AUFS_NORMAL=1
315 - AUFS="detect"
316 + AUFS=detect
317 ;;
318 # Allow user to specify the modules location
319 aufs.modules\=*)
320 @@ -461,16 +447,14 @@ then
321 # Setup the root filesystem
322 bootstrapFS
323
324 - if [ "${USE_AUFS_NORMAL}" -eq '1' ]
325 - then
326 + if [ 1 = "$USE_AUFS_NORMAL" ]; then
327 setup_aufs
328 - CHROOT=${UNION}
329 + CHROOT=$UNION
330 else
331 CHROOT=${NEW_ROOT}
332 fi
333
334 - if [ "${REAL_ROOT}" != "/dev/nfs" ] && [ "${LOOPTYPE}" != "sgimips" ] && [ "${USE_AUFS_NORMAL}" != '1' ]
335 - then
336 + if [ /dev/nfs != "$REAL_ROOT" ] && [ sgimips != "$LOOPTYPE" ] && [ 1 != "$USE_AUFS_NORMAL" ]; then
337 bootstrapCD
338 fi
339
340 @@ -502,7 +486,7 @@ then
341 fi
342
343 # Determine root device
344 -good_msg 'Determining root device...'
345 +good_msg 'Determining root device ...'
346 while true
347 do
348 while [ "${got_good_root}" != '1' ]
349 @@ -720,7 +704,7 @@ then
350 FS_LOCATION='mnt/livecd'
351 elif [ "${LOOPTYPE}" = 'squashfs' ]
352 then
353 - if [ "${USE_AUFS_NORMAL}" != '1' ]; then
354 + if [ 1 != "$USE_AUFS_NORMAL" ]; then
355 good_msg 'Mounting squashfs filesystem'
356 _CACHED_SQUASHFS_PATH="${NEW_ROOT}/mnt/${LOOP}"
357 _squashfs_path="${CDROOT_PATH}/${LOOPEXT}${LOOP}" # Default to uncached
358 @@ -782,25 +766,23 @@ then
359 fi
360 fi # if [ -n "${CRYPT_ROOT}" ]
361
362 - if [ "${USE_AUFS_NORMAL}" -eq '1' ]
363 - then
364 - union_insert_dir ${CHROOT} ${NEW_ROOT}/${FS_LOCATION}
365 -
366 - # Make sure fstab notes livecd is mounted ro. Makes system skip remount which fails on aufs dirs.
367 - # TODO: remounting all tmpfs as RO seems weird, can we be more specific?
368 - #sed -e 's|\(.*\s/\s*tmpfs\s*\)defaults\(.*\)|\1defaults,ro\2|' /${UNION}/etc/fstab > /${UNION}/etc/fstab.new
369 - #mv /${UNION}/etc/fstab.new /${UNION}/etc/fstab
370 + if [ 1 = "$USE_AUFS_NORMAL" ]; then
371 + union_insert_dir "$CHROOT" "$NEW_ROOT/$FS_LOCATION"
372
373 # Function to handle the RC_NO_UMOUNTS variable in ${CHROOT}/etc/rc.conf
374 conf_rc_no_umounts
375
376 # Fstab changes for aufs
377 - if ! grep -q '^aufs' "${CHROOT}"/etc/fstab 2>/dev/null; then
378 - for i in /var/tmp /tmp /usr/portage/distfiles; do
379 - [ ! -d "${CHROOT}${i}" ] && mkdir -p "${CHROOT}${i}"
380 + if ! grep -q '^aufs' "$CHROOT/etc/fstab" 2>/dev/null; then
381 + for dir in /var/tmp /tmp /usr/portage/distfiles; do
382 + [ ! -d $CHROOT$dir ] && mkdir -p "$CHROOT$dir"
383 done
384
385 - cat > "${CHROOT}"/etc/fstab << FSTAB
386 + cat > "$CHROOT/etc/fstab" << FSTAB
387 +####################################################
388 +## ATTENTION: THIS IS THE FSTAB ON THE LIVECD ##
389 +## PLEASE EDIT THE FSTAB at /mnt/gentoo/etc/fstab ##
390 +####################################################
391 aufs / aufs defaults 0 0
392 vartmp /var/tmp tmpfs defaults 0 0
393 tmp /tmp tmpfs defaults 0 0
394 @@ -808,30 +790,29 @@ distfiles /usr/portage/distfiles tmpfs defaults 0 0
395 FSTAB
396 fi
397
398 - if ${AUFS_MODULES}; then
399 + if $AUFS_MODULES; then
400 warn_msg "Adding all modules in $MODULESD/modules/"
401
402 - if [ -z "${MODULESD}" ]
403 - then
404 - union_insert_modules ${CDROOT_PATH}
405 + if [ -z "$MODULESD" ]; then
406 + union_insert_modules "$CDROOT_PATH"
407 else
408 - mkdir ${NEW_ROOT}/mnt/modulesd
409 - mount "${MODULESD}" ${NEW_ROOT}/mnt/modulesd
410 - union_insert_modules ${NEW_ROOT}/mnt/modulesd
411 + mkdir "$NEW_ROOT/mnt/modulesd"
412 + mount "$MODULESD" "$NEW_ROOT/mnt/modulesd"
413 + union_insert_modules "$NEW_ROOT/mnt/modulesd"
414 fi
415 fi
416
417 # Copy user keymap file
418 if [ -e /etc/sysconfig/keyboard ]; then
419 - [ ! -d ${CHROOT}/etc/sysconfig ] && mkdir -p ${CHROOT}/etc/sysconfig
420 - cp /etc/sysconfig/keyboard ${CHROOT}/etc/sysconfig/
421 + [ ! -d $CHROOT/etc/sysconfig ] && mkdir -p "$CHROOT/etc/sysconfig"
422 + cp /etc/sysconfig/keyboard "$CHROOT/etc/sysconfig/"
423 fi
424
425 # Create the directories for our new union mounts
426 - test ! -d "${CHROOT}${NEW_ROOT}" && mkdir -p "${CHROOT}${NEW_ROOT}"
427 + [ ! -d $CHROOT$NEW_ROOT ] && mkdir -p "$CHROOT$NEW_ROOT"
428
429 - if ${AUFS_CHANGES} && [ ! -d "${CHROOT}${NEW_ROOT}/mnt/changesdev" ]; then
430 - mkdir -p "${CHROOT}${NEW_ROOT}/mnt/changesdev"
431 + if $AUFS_CHANGES && [ ! -d $CHROOT$NEW_ROOT/mnt/changesdev ]; then
432 + mkdir -p "$CHROOT$NEW_ROOT/mnt/changesdev"
433 fi
434 fi
435
436 @@ -856,67 +837,67 @@ FSTAB
437 then
438 setup_unionfs ${NEW_ROOT} /${FS_LOCATION}
439 CHROOT=/union
440 - else
441 - #XXX Note to potential reviewers. diff formats this section very very oddly. Be sure to review this hunk after applied, do NOT simply read the diff
442 - if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
443 - then
444 - good_msg "Copying read-write image contents to tmpfs"
445 - # Copy over stuff that should be writable
446 - (cd "${NEW_ROOT}/${FS_LOCATION}"; cp -a ${ROOT_TREES} "${NEW_ROOT}") || {
447 - bad_msg "Copying failed, dropping into a shell."
448 - do_rundebugshell
449 - }
450 -
451 - # Now we do the links.
452 - for x in ${ROOT_LINKS}
453 - do
454 - if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ]
455 - then
456 - ln -s "$(readlink ${NEW_ROOT}/${FS_LOCATION}/${x})" "${x}" 2>/dev/null
457 - else
458 - # List all subdirectories of x
459 - find "${NEW_ROOT}/${FS_LOCATION}/${x}" -type d 2>/dev/null | while read directory
460 - do
461 - # Strip the prefix of the FS_LOCATION
462 - directory="${directory#${NEW_ROOT}/${FS_LOCATION}/}"
463 -
464 - # Skip this directory if we already linked a parent directory
465 - if [ "${current_parent}" != '' ]; then
466 - var=$(echo "${directory}" | grep "^${current_parent}")
467 - if [ "${var}" != '' ]; then
468 - continue
469 - fi
470 - fi
471 - # Test if the directory exists already
472 - if [ -e "/${NEW_ROOT}/${directory}" ]
473 - then
474 - # It does exist, link all the individual files
475 - for file in $(ls /${NEW_ROOT}/${FS_LOCATION}/${directory})
476 - do
477 - if [ ! -d "/${NEW_ROOT}/${FS_LOCATION}/${directory}/${file}" ] && [ ! -e "${NEW_ROOT}/${directory}/${file}" ]; then
478 - ln -s "/${FS_LOCATION}/${directory}/${file}" "${directory}/${file}" 2> /dev/null
479 - fi
480 - done
481 - else
482 - # It does not exist, make a link to the livecd
483 - ln -s "/${FS_LOCATION}/${directory}" "${directory}" 2>/dev/null
484 - current_parent="${directory}"
485 - fi # if [ -e "/${NEW_ROOT}/${directory}" ] ... else
486 - done # while read directory
487 - fi # if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ] ... else
488 - done # for x in ${ROOT_LINKS}
489 - mkdir -p initramfs proc tmp run sys 2>/dev/null
490 - chmod 1777 tmp
491 -
492 - fi # if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
493 - #XXX: end extremely confusing hunk
494 -
495 - # have handy /mnt/cdrom (CDROOT_PATH) as well
496 - _new_cdroot="${NEW_ROOT}${CDROOT_PATH}"
497 - [ ! -d "${_new_cdroot}" ] && mkdir -p "${_new_cdroot}"
498 - mount --bind "${CDROOT_PATH}" "${_new_cdroot}"
499 -
500 - fi # if [ "${USE_UNIONFS_NORMAL}" = '1' ] ... else
501 + else
502 + #XXX Note to potential reviewers. diff formats this section very very oddly. Be sure to review this hunk after applied, do NOT simply read the diff
503 + if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
504 + then
505 + good_msg "Copying read-write image contents to tmpfs"
506 + # Copy over stuff that should be writable
507 + (cd "${NEW_ROOT}/${FS_LOCATION}"; cp -a ${ROOT_TREES} "${NEW_ROOT}") || {
508 + bad_msg "Copying failed, dropping into a shell."
509 + do_rundebugshell
510 + }
511 +
512 + # Now we do the links.
513 + for x in ${ROOT_LINKS}
514 + do
515 + if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ]
516 + then
517 + ln -s "$(readlink ${NEW_ROOT}/${FS_LOCATION}/${x})" "${x}" 2>/dev/null
518 + else
519 + # List all subdirectories of x
520 + find "${NEW_ROOT}/${FS_LOCATION}/${x}" -type d 2>/dev/null | while read directory
521 + do
522 + # Strip the prefix of the FS_LOCATION
523 + directory="${directory#${NEW_ROOT}/${FS_LOCATION}/}"
524 +
525 + # Skip this directory if we already linked a parent directory
526 + if [ "${current_parent}" != '' ]; then
527 + var=$(echo "${directory}" | grep "^${current_parent}")
528 + if [ "${var}" != '' ]; then
529 + continue
530 + fi
531 + fi
532 + # Test if the directory exists already
533 + if [ -e "/${NEW_ROOT}/${directory}" ]
534 + then
535 + # It does exist, link all the individual files
536 + for file in $(ls /${NEW_ROOT}/${FS_LOCATION}/${directory})
537 + do
538 + if [ ! -d "/${NEW_ROOT}/${FS_LOCATION}/${directory}/${file}" ] && [ ! -e "${NEW_ROOT}/${directory}/${file}" ]; then
539 + ln -s "/${FS_LOCATION}/${directory}/${file}" "${directory}/${file}" 2> /dev/null
540 + fi
541 + done
542 + else
543 + # It does not exist, make a link to the livecd
544 + ln -s "/${FS_LOCATION}/${directory}" "${directory}" 2>/dev/null
545 + current_parent="${directory}"
546 + fi # if [ -e "/${NEW_ROOT}/${directory}" ] ... else
547 + done # while read directory
548 + fi # if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ] ... else
549 + done # for x in ${ROOT_LINKS}
550 + mkdir -p initramfs proc tmp run sys 2>/dev/null
551 + chmod 1777 tmp
552 +
553 + fi # if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
554 + #XXX: end extremely confusing hunk
555 +
556 + # have handy /mnt/cdrom (CDROOT_PATH) as well
557 + _new_cdroot="${NEW_ROOT}${CDROOT_PATH}"
558 + [ ! -d "${_new_cdroot}" ] && mkdir -p "${_new_cdroot}"
559 + mount --bind "${CDROOT_PATH}" "${_new_cdroot}"
560 +
561 + fi # if [ "${USE_UNIONFS_NORMAL}" = '1' ] ... else
562
563 #UML=$(cat /proc/cpuinfo|grep UML|sed -e 's|model name.*: ||')
564 #if [ "${UML}" = 'UML' ]
565 @@ -928,18 +909,16 @@ FSTAB
566 # Let Init scripts know that we booted from CD
567 export CDBOOT
568 CDBOOT=1
569 -else # if [ "${CDROOT}" = '1' ]
570 +else
571 if [ "${USE_UNIONFS_NORMAL}" = '1' ]
572 then
573 mkdir /union_changes
574 mount -t tmpfs tmpfs /union_changes
575 setup_unionfs /union_changes ${NEW_ROOT}
576 mkdir -p ${UNION}/tmp/.initrd
577 - fi
578 - if [ "${USE_AUFS_NORMAL}" -eq '1' ]
579 - then
580 - union_insert_dir ${UNION} ${NEW_ROOT}
581 - mkdir -p ${UNION}/tmp/.initrd
582 + elif [ 1 = "$USE_AUFS_NORMAL" ]; then
583 + union_insert_dir "$UNION" "$NEW_ROOT"
584 + mkdir -p "$UNION/tmp/.initrd"
585 fi
586
587 fi # if [ "${CDROOT}" = '1' ]
588 @@ -986,22 +965,20 @@ fi
589
590 verbose_kmsg
591
592 -if [ "${USE_AUFS_NORMAL}" -eq '1' ]
593 -then
594 - UNION_MEMORY=${CHROOT}/.unions/memory
595 +if [ 1 = "$USE_AUFS_NORMAL" ]; then
596 + UNION_MEMORY=$CHROOT/.unions/memory
597
598 - mkdir -p "${UNION_MEMORY}"
599 - mount --move "${MEMORY}" "${UNION_MEMORY}"
600 + mkdir -p "$UNION_MEMORY"
601 + mount --move "$MEMORY" "$UNION_MEMORY"
602 test_success "Failed to move aufs /memory into the system root"
603
604 - for i in /mnt/gentoo /mnt/livecd /mnt/overlay ${CDROOT_PATH}
605 - do
606 - mkdir -p "${CHROOT}${i}"
607 - chmod 755 "${CHROOT}${i}"
608 + for dir in /mnt/gentoo $rw_branch $ro_branch $CDROOT_PATH; do
609 + mkdir -p "$CHROOT$dir"
610 + chmod 755 "$CHROOT$dir"
611 done
612
613 - for i in ${CDROOT_PATH} ${overlay} ${static}; do
614 - mount --move ${NEW_ROOT}${i} ${CHROOT}${i}
615 + for dir in $CDROOT_PATH $rw_branch $ro_branch; do
616 + mount --move "$NEW_ROOT$dir" "$CHROOT$dir"
617 done
618 fi