[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [tyndur-devel] [PATCH 1 of 2] build: dd if='/dev/zero' ... ist zu langsam



On Sat, Aug 14, 2010 at 02:10:58PM +0200, Andreas Freimuth wrote:
> 
> * Beim Erstellen von leeren Images auf dd verzichten, statt dessen ein
>   kleines Python-Script verwenden
> 
> Signed-off-by: Andreas Freimuth <m.nemo@xxxxxxx>
> ---
>  build/scripts/empty_file   |  24 ++++++++++++++++++++++++
>  build/scripts/image_cdrom  |   2 +-
>  build/scripts/image_floppy |   2 +-
>  build/scripts/image_hd     |   4 ++--
>  4 files changed, 28 insertions(+), 4 deletions(-)
> 
> diff --git a/build/scripts/empty_file b/build/scripts/empty_file
> new file mode 100755
> --- /dev/null
> +++ b/build/scripts/empty_file
> @@ -0,0 +1,24 @@
> +#!/usr/bin/python
> +# -*- coding: UTF-8 -*-
> +
> +# Eine leere Datei mit einer bestimmten Größe erzeugen
> +# Parameter:
> +#   1. Dateiname
> +#   2. Dateigröße
> +import sys
> +
> +def empty_file(filename, size):
> +    f = open(filename,"wb")
> +    if not f:
> +        sys.exit(1)
> +
> +    f.seek(size - 1)
> +    f.write('\0')
> +    f.close()

Funktioniert nicht für size = 0 und verkleinert schon vorhandene Dateien
nicht. f.truncate (oder wie auch immer das heißen mag) wäre
wahrscheinlich besser.

> +
> +if __name__ == "__main__":
> +    if len(sys.argv[1:]) != 2:
> +        print sys.stderr, "using: %s <filename> <size>" % sys.argv[0]
> +        sys.exit(1)
> +
> +    empty_file(str(sys.argv[1]), int(sys.argv[2]))

Tut das ganze nicht dasselbe wie dd of=$file seek=$size count=0? (Bzw.
in deiner Version auch noch conv=notrunc, aber das halte ich wie gesagt
für einen Bug und nicht für ein Feature)

Die Idee, nicht erstmal endlos Nullen zu schreiben, ist aber gut.

Kevin