|
@@ -349,60 +349,83 @@ if [ "" = "${HDIUTIL}" ]; then
|
349
|
349
|
LINUXIMAGE=${PWD}/DMDirc.dmg
|
350
|
350
|
fi;
|
351
|
351
|
|
352
|
|
- SIZE=$((`du -sb ${DMG} | awk '{print $1}'` + 10))
|
353
|
352
|
# Non-OSX
|
354
|
353
|
# This doesn't work quite aswell as on OSX, but it works.
|
355
|
|
- if [ "" = "${MKHFS}" -a "" != "${MKHFSPLUS}" ]; then
|
356
|
|
- MKHFS=${MKHFSPLUS}
|
357
|
|
- fi;
|
358
|
|
- # mkfs.hfs will only create 512kb+ sized images
|
359
|
|
- if [ ${SIZE} -lt 524288 ]; then
|
360
|
|
- echo "Size is less than 512kb"
|
361
|
|
- SIZE=524288;
|
362
|
|
- fi;
|
363
|
|
- dd if=/dev/zero of=${LINUXIMAGE} bs=${SIZE} count=1
|
364
|
|
- ${MKHFS} -v 'DMDirc' ${LINUXIMAGE}
|
365
|
|
- # however older versions of mkfs.hfs will only create 4mb+ sized images :/
|
366
|
|
- if [ $? -eq 1 ]; then
|
367
|
|
- if [ ${SIZE} -lt 4194304 ]; then
|
368
|
|
- echo "Size is less than 4MB"
|
369
|
|
- SIZE=4194304;
|
|
354
|
+ IMGBLOCKSIZE=4096 # OSX Default = 4096
|
|
355
|
+ MVRES=0
|
|
356
|
+ createImage() {
|
|
357
|
+ MVRES=0
|
|
358
|
+ SIZE=${1}
|
|
359
|
+ if [ "" = "${MKHFS}" -a "" != "${MKHFSPLUS}" ]; then
|
|
360
|
+ MKHFS=${MKHFSPLUS}
|
|
361
|
+ fi;
|
|
362
|
+ # mkfs.hfs will only create 512kb+ sized images
|
|
363
|
+ if [ ${SIZE} -lt 524288 ]; then
|
|
364
|
+ echo "Size is less than 512kb"
|
|
365
|
+ SIZE=524288;
|
370
|
366
|
fi;
|
371
|
367
|
dd if=/dev/zero of=${LINUXIMAGE} bs=${SIZE} count=1
|
372
|
|
- ${MKHFS} -v 'DMDirc' ${LINUXIMAGE}
|
373
|
|
- fi;
|
374
|
|
- # Now try and mount
|
375
|
|
- # This could be a problem, as linux requires either root to mount, or an fstab
|
376
|
|
- # entry.
|
377
|
|
- # Try to mount, if this fails, let the user know what to add to fstab.
|
378
|
|
- if [ -e ${LINUXIMAGEDIR} ]; then
|
379
|
|
- rm -Rf ${LINUXIMAGEDIR}
|
380
|
|
- fi;
|
381
|
|
- mkdir ${LINUXIMAGEDIR}
|
382
|
|
- mount ${LINUXIMAGEDIR}
|
383
|
|
- MOUNTRES=${?}
|
384
|
|
- if [ ${MOUNTRES} -ne 0 ]; then
|
385
|
|
- # Try using full parameters - could be running as root.
|
386
|
|
- mount -t hfsplus -o loop ${RUNNAME} ${LINUXIMAGEDIR}
|
|
368
|
+ ${MKHFS} -b ${IMGBLOCKSIZE} -v 'DMDirc' ${LINUXIMAGE}
|
|
369
|
+ if [ ${?} -ne 0 ]; then
|
|
370
|
+ echo "mkfs.hfs failed to create the image, aborting."
|
|
371
|
+ exit 1;
|
|
372
|
+ fi;
|
|
373
|
+ # Now try and mount
|
|
374
|
+ # This could be a problem, as linux requires either root to mount, or an fstab
|
|
375
|
+ # entry.
|
|
376
|
+ # Try to mount, if this fails, let the user know what to add to fstab.
|
|
377
|
+ if [ -e ${LINUXIMAGEDIR} ]; then
|
|
378
|
+ rm -Rf ${LINUXIMAGEDIR}
|
|
379
|
+ fi;
|
|
380
|
+ mkdir ${LINUXIMAGEDIR}
|
|
381
|
+ mount ${LINUXIMAGEDIR}
|
387
|
382
|
MOUNTRES=${?}
|
388
|
|
- fi;
|
389
|
|
- if [ ${MOUNTRES} -ne 0 ]; then
|
390
|
|
- echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
|
391
|
|
- echo "@ ERROR @"
|
392
|
|
- echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
|
393
|
|
- echo "You do not have permission to mount the image."
|
394
|
|
- echo "Please add the following lines to /etc/fstab and rcd oun this script again"
|
395
|
|
- echo "# DMDirc OSX dmg image"
|
396
|
|
- echo "${LINUXIMAGE} ${LINUXIMAGEDIR} auto users,noauto,loop 0 0"
|
397
|
|
- echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
|
398
|
|
- echo "@ ERROR @"
|
399
|
|
- echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
|
400
|
|
- exit 1;
|
401
|
|
- fi;
|
402
|
|
- mv -fv ${DMG}/* ${LINUXIMAGEDIR}
|
403
|
|
- mv -fv ${DMG}/.[A-Za-z]* ${LINUXIMAGEDIR}
|
404
|
|
- umount ${LINUXIMAGEDIR}
|
405
|
|
- # If anyone finds out how to compress these nicely, add it here.
|
|
383
|
+ if [ ${MOUNTRES} -ne 0 ]; then
|
|
384
|
+ # Try using full parameters - could be running as root.
|
|
385
|
+ mount -t hfsplus -o loop ${RUNNAME} ${LINUXIMAGEDIR}
|
|
386
|
+ MOUNTRES=${?}
|
|
387
|
+ fi;
|
|
388
|
+ if [ ${MOUNTRES} -ne 0 ]; then
|
|
389
|
+ echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
|
|
390
|
+ echo "@ ERROR @"
|
|
391
|
+ echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
|
|
392
|
+ echo "You do not have permission to mount the image."
|
|
393
|
+ echo "Please add the following lines to /etc/fstab and re run this script again"
|
|
394
|
+ echo "# DMDirc OSX dmg image"
|
|
395
|
+ echo "${LINUXIMAGE} ${LINUXIMAGEDIR} auto users,noauto,loop 0 0"
|
|
396
|
+ echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
|
|
397
|
+ echo "@ ERROR @"
|
|
398
|
+ echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
|
|
399
|
+ exit 1;
|
|
400
|
+ fi;
|
|
401
|
+ mv -fv ${DMG}/* ${LINUXIMAGEDIR}
|
|
402
|
+ MVRES=${?}
|
|
403
|
+ if [ ${MVRES} -ne 0 ]; then
|
|
404
|
+ echo "Image incorrect size."
|
|
405
|
+ else
|
|
406
|
+ mv -fv ${DMG}/.[A-Za-z]* ${LINUXIMAGEDIR}
|
|
407
|
+ MVRES=${?}
|
|
408
|
+ if [ ${MVRES} -ne 0 ]; then
|
|
409
|
+ echo "Image incorrect size."
|
|
410
|
+ fi;
|
|
411
|
+ fi;
|
|
412
|
+ umount ${LINUXIMAGEDIR}
|
|
413
|
+ # If anyone finds out how to compress these nicely, add it here.
|
|
414
|
+ }
|
|
415
|
+
|
|
416
|
+ INCREASE=10
|
|
417
|
+ IMAGESIZE=$(((`du -s --block-size ${IMGBLOCKSIZE} ${DMG} | awk '{print $1}'` + ${INCREASE}) * ${IMGBLOCKSIZE} ))
|
|
418
|
+ createImage ${IMAGESIZE}
|
|
419
|
+
|
|
420
|
+ # This sucks, but it makes sure the image gets created at a size that contains
|
|
421
|
+ # everything.
|
|
422
|
+ # I can't manage to get du to return the size that the files actually end up
|
|
423
|
+ # using on the image.
|
|
424
|
+ while [ ${MVRES} -ne 0 ]; do
|
|
425
|
+ INCREASE=$((${INCREASE} + 5))
|
|
426
|
+ IMAGESIZE=$(((`du -s --block-size ${IMGBLOCKSIZE} ${DMG} | awk '{print $1}'` + ${INCREASE}) * ${IMGBLOCKSIZE} ))
|
|
427
|
+ createImage ${IMAGESIZE}
|
|
428
|
+ done;
|
406
|
429
|
|
407
|
430
|
if [ "${LINUXIMAGE}" != "${RUNNAME}" ]; then
|
408
|
431
|
# Rename the image
|