Seite 2 von 2

Re: zwei Partitionen

Verfasst: 21 Jul 2009, 16:05
von DocDOS
oha.. kaum macht mans richtig, gehts auch..

Man sollte keine Umlaute im "orgname" eintragen *kopftisch* :D

Dafür kommt jetzt die Fehlermeldung, dass die Disk "in use" wäre.. (hier: 80 Gig S-ATA)

Folgende Meldung erhalte ich:

Code: Alles auswählen

Command '/bin/echo -e "0,4000,c,*
4080,5884,7
0,0
0,0
" | /sbin/sfdisk -D /dev/sda failed (1):
Checking that no-one is using this disk right now ...
BLKRRPART: Device or ressource busy
Any Ideas?

Re: zwei Partitionen

Verfasst: 29 Jul 2009, 15:24
von smokie128
Habe dasselbe Problem, aber erst seit ich das OPSI-Bootimage auf den neuesten Stand (20090707) gebracht habe. Benutze die veränderte setup.py aus diesem Thread sowie OPSI 3.4. Das Problem trat zuerst nur bei IBM R40-Notebooks auf, nach dem Update auch bei allen anderen Rechnern. Muss nun alle Rechner per Hand installieren, was bei einer größeren Anzahl an neuen Geräten sehr zeitaufwändig ist... Gibt es dafür einen Patch oder Workaround?

Des weiteren erhalte ich bei Rechnern mit 256 MB RAM öfter eine Fehlermeldung mit folgenden Inhalt:

Code: Alles auswählen

Command '/usr/bin/lshw -xml 2>/dev/null' failed (34304)
// habe grade gesehen, es ist eine neue Version draußen. Werde das mal ausprobieren, hoffe das behebt das Problem...

MfG,
smokie

Re: zwei Partitionen

Verfasst: 29 Jul 2009, 16:08
von DocDOS
Also, ich hab das Problem generell.. egal, welche Hardware ich dafür hernehme

und was für ne neue Version?.. VON was?.. Bootimage? *such*

[Edit:]
gefunden :D

Re: zwei Partitionen

Verfasst: 30 Jul 2009, 12:12
von smokie128
Hallo,
habe den Fehler gefunden. Eigentlich offensichtlich, aber oft übersieht man das offensichtliche...
Es liegt daran, dass die setup.py erst Partition 1 erstellt und formatiert, um danach Partition 2 zu erstellen und zu formatieren. Allerdings ist die Festplatte beim erstellen der 2. Partition noch eingehangen, was den Fehler erzeugt. Des Rätsels Lösung ist es, erst beide Partitionen zu erstellen und dann zu formatieren. Das Ergebnis steht hier (nur der modifizierte teil, muss also in die bestehende setup.py eingefügt werden):

Code: Alles auswählen

###################################################################################
### Modifikation
###################################################################################

# Get first harddisk
KB=1000
MB=1000*1000
GB=1000*1000*1000

disks = getHarddisks()
disk = disks[0]
disksize = disk.size - KB
partitions = disk.getPartitions()

# Disksize <= 4GB
# => Platte zu klein => exit
if (disksize <= 3999*MB):
  ui.getMessageBox().addText("Festplatte kleiner ab 4GB,zu klein!\n")

# nur eine Partition
elif (4*GB < disksize) and (disksize <= 14999*MB):
  # 4GB < Disksize <= 8GB
  # => erstelle 1 Partition ueber die gesamte Platte elif (4*GB < disksize) and (disksize <= 6*GB):
    if not partitions:
        ui.getMessageBox().addText("Es wird eine Partition ueber die gesamte Platte erstellt!\n")
        disk.deletePartitionTable()
        disk.createPartition(start="0%", end="100%", fs="fat32", boot=True)
        disk.createFilesystem(partition=1, fs="fat32")
    else:
        partition = partitions[0]
        partend = str(int((partition['end'] / (1024*1024)) - 1)) + "M"
        ui.getMessageBox().addText('Ende Partition 1: %s\n' % (partend))
        ui.getMessageBox().addText("Partition 1 wird neu erstellt\n")
        disk.deletePartition(partition=1)
        disk.createPartition(start="0%", end=partend, fs="fat32", boot=True)
        disk.createFilesystem(partition=1, fs="fat32")



# => 2 Partitionen: 1. 6GB, 2. Rest
elif (15001*MB < disksize) and (disksize < 30*GB):
  if not partitions:
    ui.getMessageBox().addText("Es werden zwei Partition erstellt!\n1. Partition: 6GB, 2. Partition: Rest\n")
    disk.deletePartitionTable()
    disk.createPartition(start="0M", end="6000M", fs="fat32", boot=True)
    disk.createFilesystem(partition=1, fs="fat32")
    disk.createPartition(start="6001M", end="100%", fs="ntfs")
    disk.createFilesystem(partition=2, fs="ntfs")
   
  else:
    partition = partitions[0]
    partend = str(int((partition['end'] / (1024*1024)) - 1)) + "M"
    disk.deletePartitionTable()
    ui.getMessageBox().addText('Ende Partition 1: %s\n' % (partend))
    ui.getMessageBox().addText("Partition 1 wird neu erstellt\n")   
    ui.getMessageBox().addText("\nSchritt 2: Erstelle neue 1. Partition\n")
    disk.createPartition(start="0M", end="6000M", fs="fat32", boot=True)
    ui.getMessageBox().addText("\nSchritt 3: Erstelle neue 2. Partition\n")
    disk.createPartition(start="6001M", end="100%", fs="ntfs")
    ui.getMessageBox().addText("\nSchritt 4: Formatiere 1. Partition\n")
    disk.createFilesystem(partition=1, fs="fat32")
    ui.getMessageBox().addText("\nSchritt 5: Formatiere 2. Partition\n")
    disk.createFilesystem(partition=2, fs="ntfs")


# 2 Partitionen: 1. 40%, 2. 60%
elif (30*GB < disksize) and (disksize <= 80*GB):
  if not partitions:
    ui.getMessageBox().addText("Es werden zwei Partition erstellt!\n1. Partition: 6GB, 2. Partition: Rest\n")
    disk.deletePartitionTable()
    disk.createPartition(start="0%", end="40%", fs="fat32", boot=True)
    disk.createFilesystem(partition=1, fs="fat32")
    disk.createPartition(start="40,1%", end="100%", fs="ntfs")
    disk.createFilesystem(partition=2, fs="ntfs")
   
  else:
    partition = partitions[0]
    partend = str(int((partition['end'] / (1024*1024)) - 1)) + "M"
    disk.deletePartitionTable()
    ui.getMessageBox().addText('Ende Partition 1: %s\n' % (partend))
    ui.getMessageBox().addText("Partition 1 wird neu erstellt\n")   
    ui.getMessageBox().addText("\nSchritt 2: Erstelle neue 1. Partition\n")
    disk.createPartition(start="0%", end="40%", fs="fat32", boot=True)
    ui.getMessageBox().addText("\nSchritt 3: Erstelle neue 2. Partition\n")
    disk.createPartition(start="40,1%", end="100%", fs="ntfs")
    ui.getMessageBox().addText("\nSchritt 4: Formatiere 1. Partition\n")
    disk.createFilesystem(partition=1, fs="fat32")
    ui.getMessageBox().addText("\nSchritt 5: Formatiere 2. Partition\n")
    disk.createFilesystem(partition=2, fs="ntfs")



# 2 Partitionen: 1. 32GB, 2. Rest
else:
  if not partitions:
    ui.getMessageBox().addText("Es werden zwei Partition erstellt!\n1. Partition: 40%, 2. Partition: 60%\n")
    disk.deletePartitionTable()
    disk.createPartition(start="0%", end="32000M", fs="fat32", boot=True)
    disk.createFilesystem(partition=1, fs="fat32")
    disk.createPartition(start="32001M", end="100%", fs="ntfs")
    disk.createFilesystem(partition=2, fs="ntfs")
  else:
    partition = partitions[0]
    partend = str(int((partition['end'] / (1024*1024)) - 1)) + "M"
    disk.deletePartitionTable()
    ui.getMessageBox().addText('Ende Partition 1: %s\n' % (partend))
    ui.getMessageBox().addText("Partition 1 wird neu erstellt\n")   
    ui.getMessageBox().addText("\nSchritt 2: Erstelle neue 1. Partition\n")
    disk.createPartition(start="0%", end="32000M", fs="fat32", boot=True)
    ui.getMessageBox().addText("\nSchritt 3: Erstelle neue 2. Partition\n")
    disk.createPartition(start="32001M", end="100%", fs="ntfs")
    ui.getMessageBox().addText("\nSchritt 4: Formatiere 1. Partition\n")
    disk.createFilesystem(partition=1, fs="fat32")
    ui.getMessageBox().addText("\nSchritt 5: Formatiere 2. Partition\n")
    disk.createFilesystem(partition=2, fs="ntfs")
   

###################################################################################
### Modifikation ende
###################################################################################
Hatte übrigends beim letzten Kopieren der kompletten setup.py hier aus dem Forum Probleme, weil die Einrückungen nicht richtig übernommen wurden... Aber das lässt sich ja recht einfach beheben mit den opsi-tools.

MfG, smokie128