projects
/
grml2usb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Mount vfat devices with explicit iocharset option. [Closes: issue735]
[grml2usb.git]
/
grml2usb
diff --git
a/grml2usb
b/grml2usb
index
361e6a0
..
487f315
100755
(executable)
--- a/
grml2usb
+++ b/
grml2usb
@@
-20,7
+20,7
@@
import fileinput
import glob
# global variables
import glob
# global variables
-PROG_VERSION = "0.9.1
7-pre1
"
+PROG_VERSION = "0.9.1
8
"
MOUNTED = set() # register mountpoints
TMPFILES = set() # register tmpfiles
DATESTAMP = time.mktime(datetime.datetime.now().timetuple()) # unique identifier for syslinux.cfg
MOUNTED = set() # register mountpoints
TMPFILES = set() # register tmpfiles
DATESTAMP = time.mktime(datetime.datetime.now().timetuple()) # unique identifier for syslinux.cfg
@@
-32,6
+32,11
@@
def syslinux_warning(option, opt, value, parser):
"is grml2usb's default. Continuing anyway.\n")
setattr(parser.values, option.dest, True)
"is grml2usb's default. Continuing anyway.\n")
setattr(parser.values, option.dest, True)
+# if grub option is set, unset syslinux option
+def grub_option(option, opt, value, parser):
+ setattr(parser.values, option.dest, True)
+ setattr(parser.values, 'syslinux', False)
+
# cmdline parsing
USAGE = "Usage: %prog [options] <[ISO[s] | /live/image]> </dev/sdX#>\n\
\n\
# cmdline parsing
USAGE = "Usage: %prog [options] <[ISO[s] | /live/image]> </dev/sdX#>\n\
\n\
@@
-56,7
+61,8
@@
parser.add_option("--fat16", dest="fat16", action="store_true",
help="format specified partition with FAT16")
parser.add_option("--force", dest="force", action="store_true",
help="force any actions requiring manual interaction")
help="format specified partition with FAT16")
parser.add_option("--force", dest="force", action="store_true",
help="force any actions requiring manual interaction")
-parser.add_option("--grub", dest="grub", action="store_true",
+parser.add_option("--grub", dest="grub", action="callback",
+ callback=grub_option,
help="install grub bootloader instead of (default) syslinux")
parser.add_option("--grub-mbr", dest="grubmbr", action="store_true",
help="install grub into MBR instead of (default) PBR")
help="install grub bootloader instead of (default) syslinux")
parser.add_option("--grub-mbr", dest="grubmbr", action="store_true",
help="install grub into MBR instead of (default) PBR")
@@
-945,7
+951,7
@@
def check_for_fat(partition):
raise CriticalException("Failed to read device %s"
" (wrong UID/permissions or device/directory not present?)" % partition)
raise CriticalException("Failed to read device %s"
" (wrong UID/permissions or device/directory not present?)" % partition)
- if
options.syslinux and
filesystem != "vfat":
+ if filesystem != "vfat":
raise CriticalException("Partition %s does not contain a FAT16 filesystem. (Use --fat16 or run mkfs.vfat %s)" % (partition, partition))
except OSError:
raise CriticalException("Partition %s does not contain a FAT16 filesystem. (Use --fat16 or run mkfs.vfat %s)" % (partition, partition))
except OSError:
@@
-1220,6
+1226,8
@@
def install_iso_files(grml_flavour, iso_mount, device, target):
# * catch "install: .. No space left on device" & CO
if options.dryrun:
# * catch "install: .. No space left on device" & CO
if options.dryrun:
+ global GRML_DEFAULT
+ GRML_DEFAULT = grml_flavour
return 0
elif not options.bootloaderonly:
logging.info("Copying files. This might take a while....")
return 0
elif not options.bootloaderonly:
logging.info("Copying files. This might take a while....")
@@
-1706,11
+1714,15
@@
def handle_iso(iso, device):
register_tmpfile(device_mountpoint)
remove_device_mountpoint = True
try:
register_tmpfile(device_mountpoint)
remove_device_mountpoint = True
try:
- mount(device, device_mountpoint, "")
+ check_for_fat(device)
+ mount(device, device_mountpoint, ['-o', 'utf8,iocharset=iso8859-1'])
except CriticalException, error:
except CriticalException, error:
- logging.critical("Fatal: %s", error)
- cleanup()
- sys.exit(1)
+ try:
+ mount(device, device_mountpoint, "")
+ except CriticalException, error:
+ logging.critical("Fatal: %s", error)
+ cleanup()
+ sys.exit(1)
try:
try:
try:
try:
@@
-1808,7
+1820,7
@@
def handle_vfat(device):
# check for vfat filesystem
if device is not None and not os.path.isdir(device):
try:
# check for vfat filesystem
if device is not None and not os.path.isdir(device):
try:
- check_for_fat(device)
+
if options.syslinux:
check_for_fat(device)
except CriticalException, error:
logging.critical("Execution failed: %s", error)
sys.exit(1)
except CriticalException, error:
logging.critical("Execution failed: %s", error)
sys.exit(1)
@@
-1892,6
+1904,10
@@
def main():
if options.dryrun:
logging.info("Running in simulation mode as requested via option dry-run.")
if options.dryrun:
logging.info("Running in simulation mode as requested via option dry-run.")
+ if options.grubmbr and not options.grub:
+ logging.critical("Error: --grub-mbr requires --grub option.")
+ sys.exit(1)
+
# specified arguments
device = args[len(args) - 1]
isos = args[0:len(args) - 1]
# specified arguments
device = args[len(args) - 1]
isos = args[0:len(args) - 1]