PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [bash] automatisch partitionieren?



quinte17
14-06-2004, 12:42
hi leutz!
ich will mir ein script schreiben, dass mir eine festplatte automatisch partitioniert.
ich habe mir schon die man pages von fdisk und cfdisk angeschaut, aber habe noch nichts brauchbares gefunden. google war auch noch nicht sehr hilfreich ;(
die platte ist aber nicht immer leer, also sollte dass script dann auch automatisch partitionen löschen können.
weiß jemand wie man sowas machen kann? partition soll dann in etwa so aussehen:

hda1: 2xRAM = swap
hda2: / rest
(vielleicht noch für /var eine partition)

kann mir da jemand vielleicht einen tip oder ein paar links geben?
greetz

roli
14-06-2004, 15:14
Nun, fdisk automatisieren kannst du z.B. mit einem file welches die kommandos enthält welche du interaktiv eingeben würdest.
z.b.

$cat auto_fdisk
p
q

$fdisk /dev/hda < auto_fdisk
du könntest also ein "fdisk -l" machen und mit einem kleinen script darauf deine kommandos zusammenstellen. Ich denke mit ein bisschen awk, sed, grep und cut Erfahrung dürfte das zu bewerkstelligen sein.

greex,
roli

peschmae
14-06-2004, 15:49
Mit GNU Parted dürfte das kein Problem sein



root@thinkpad:~# parted --help
Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]
Apply COMMANDs with PARAMETERS to DEVICE. If no COMMAND(s) are given, runs in
interactive mode.

OPTIONs:
-h, --help displays this help message
-i, --interactive where necessary, prompts for user intervention
-s, --script never prompts for user intervention
-v, --version displays the version

COMMANDs:
check MINOR do a simple check on the filesystem
cp [FROM-DEVICE] FROM-MINOR TO-MINOR copy filesystem to another partition
help [COMMAND] prints general help, or help on COMMAND
mklabel LABEL-TYPE create a new disklabel (partition table)
mkfs MINOR FS-TYPE make a filesystem FS-TYPE on partititon MINOR
mkpart PART-TYPE [FS-TYPE] START END make a partition
mkpartfs PART-TYPE FS-TYPE START END make a partition with a filesystem
move MINOR START END move partition MINOR
name MINOR NAME name partition MINOR NAME
print [MINOR] display the partition table, or a partition
quit exit program
rescue START END rescue a lost partition near START and END
resize MINOR START END resize filesystem on partition MINOR
rm MINOR delete partition MINOR
select DEVICE choose the device to edit
set MINOR FLAG STATE change a flag on partition MINOR


Hat also einen nicht interaktiven Modus und auch genügend potentielle Kommandozeilenparameter zum rumspielen :)

MfG Peschmä

quinte17
14-06-2004, 15:54
hey danke für deine antwort!
sieht ja schoneinmal nicht so schlecht aus.
mir würde aber eine lösung mit sfdisk ein wenig besser gefallen, da ich dort des -z flag habe, also er von einer leeren partitionierung ausgehen soll.
ich möchte mir da nicht unbedingt mehr arbeit machen als notwendig, weil mit fdisk muss ich ja dann auch per hand löschen oder nicht?

leider habe ich sfdisk noch nicht gecheckt ;(
die man page hat nicht sehr viele infos, mit denen ich im moment etwas anfangen kann


hat sonst noch jemand eine idee?
greetz

der vorschlag mit dem parted fällt vorerst aus, da ich es sonst extra installieren müsste, was ich eigentlich nicht möchte. es sollte ein recht schlankes und einfaches system sein und mit minimalen standard tools laufen. (basis ist LFS)
aber trotzdem danke für die antwort!
wenn ich keinen anderen weg mehr finde, wird mir nichts anderes übrigbleiben.

peschmae
14-06-2004, 17:09
Naja, parted ist eigentlich nur ein einzelnes Binary - mehr nicht. So um 3-400 kb.

MfG Peschmä

fork
14-06-2004, 18:11
Ich partitioniere derzeit mit sfdisk (http://freshmeat.net/projects/util-linux/) allerdings verwendet ich statische(vorher mit sfdisk ausgelesene) Partitionstabellen.

Aber das dynamisch zu machen ist wohl auch nicht so das Problem. Habe jetzt aber gerade keine Festplatte an der ich rumspielen möchte.... ;)

quinte17
15-06-2004, 07:40
hiho fork!
kannst du mir mal einen codeschnipsel zeigen? (ich habe hier eine festplatte zum austoben ;))

weil so richtig bin ich noch nicht unterwegs...
muss ich eigentlich aufpassen mit dem bootsektor? oder kann die 1. partition bei 0 anfangen? (momentan fängt die 1. partition bei 63 an, wurde mit cfdisk partitioniert)

danke schonmal!
greetz

fork
18-06-2004, 16:10
Hier gibt's ein paar anschauliche Beispiele:
http://www.polarhome.com:793/manual/util-linux-2.11y/sfdisk.examples

Die Festplattengrösse kannst Du mit
sfdisk -s <Festplatten-geraetedatei> auslesen.

fork
19-06-2004, 14:55
Ein kleines Beispiel von mir:

Die Festplatte:
sfdisk -s /dev/hdc
83300
-> 80 MB IDE

Die Datei:
,10,83,*
,,f
;
;
,10,82
,,83
1. Zeile sagt:
Anfang der Partition nicht angegeben -> erster Sektor
10 -> Groesse der Partition: 10 Einheiten(default: cylinder, bei mir Megabytes, Schalter -u)
83 -> Partitionskennung fuer Linux
* -> bootable - Flag (fuer Linux gaenzlich irrelevant)
2. Zeile:
Start nichts angegegen -> direkt nach erster Partition
Groesse nichts angegeben -> alles
f -> Partitionskennung: Win 95 Erweitert(LBA)
3. und 4. Zeile:
; -> keine Nutzung der 3. und 4. primaeren Partition
5. Zeile(logisches Laufwerk):
Start nichts angegeben -> anfang der Erweiterten Partition
10 -> Groesse 10 Einheiten
82 -> Linux Swap
6. Zeile:
Der Rest fuer eine Partition mit Kennung Linux

Der Befehl fuers durchfuehren der Partitionierung:
sfdisk -uM /dev/hdc <datei.txt