image = {
magic = "eb48",
device = "/dev/hda",
- write = WRITE_SEPARATELY
+ write = WRITE_EMULATED
}
}
image = {
magic = {"4844", "5735"},
device = "linux",
- write = WRITE_COMBINED
+ write = WRITE_IMAGE
}
}
end
function Writer._write_memory(self, devicename, imagestream)
- local devicestream = ltn12.sink.file(io.open(devicename, "w"))
- local stat, err = ltn12.pump.all(imagestream, devicestream)
- if stat then
- return os.execute("sync")
+ local imageproc = posix.fork()
+ assert(imageproc ~= -1, ERROR_RESOURCE)
+ if imageproc == 0 then
+ fs.unlink(self.IMAGEFIFO)
+ assert(posix.mkfifo(self.IMAGEFIFO), ERROR_RESOURCE)
+ local imagefifo = io.open(self.IMAGEFIFO, "w")
+ assert(imagefifo, ERROR_RESOURCE)
+ ltn12.pump.all(imagestream, ltn12.sink.file(imagefifo))
+ os.exit(0)
end
+
+ return os.execute(
+ "%s write '%s' '%s' >/dev/null 2>&1" % {
+ self.MTD, self.IMAGEFIFO, devicename
+ }
+ )
end
function Writer._write_combined(self, devicename, imagestream, appendfile)
end
return os.execute(
- "%s -j '%s' write '%s' '%s'" % {
+ "%s -j '%s' write '%s' '%s' >/dev/null 2>&1" % {
self.MTD, appendfile, self.IMAGEFIFO, devicename
}
)
end
function Writer._refresh_block(self, devicename)
- return os.execute("%s refresh '%s'" % {self.MTD, devicename})
+ return os.execute("%s refresh '%s' >/dev/null 2>&1" % {self.MTD, devicename})
end
function Writer._append(self, devicename, appendfile, erase)
erase = erase and ("-e '%s' " % devicename) or ''
return os.execute(
- "%s %s jffs2write '%s' '%s'" % {
+ "%s %s jffs2write '%s' '%s' >/dev/null 2>&1" % {
self.MTD, erase, appendfile, devicename
}
)