Partitionsgröße in Linbo kann nicht geändert werden

Hallo,

ich habe eine funktionierende start.conf und möchte die Partitionsgrößen ändern. Die Änderungen werden aber nicht übernommen. Ich gehe folgendermaßen vor:

Nach der Änderung der Partitionsgrößen sieht die start.conf auf dem Server so aus:

[LINBO]
Server = 10.0.0.1
Group = win10_21H1
Cache = /dev/sda4
RootTimeout = 600
AutoPartition = no
AutoFormat = no
AutoInitCache = no
DownloadType = torrent
GuiDisabled = no
UseMinimalLayout = no
Locale = de-de
BackgroundColor = 394f5e
BackgroundFontColor = white
ConsoleFontColorStdout = lightgreen
ConsoleFontColorStderr = orange
SystemType = efi64
KernelOptions = quiet splash

[Partition]
Dev = /dev/sda1
Label = efi
Size = 200M
Id = ef
FSType = vfat
Bootable = yes

[Partition]
Dev = /dev/sda2
Label = msr
Size = 128M
Id = 0c01
FSType = 
Bootable = no

[Partition]
Dev = /dev/sda3
Label = windows
Size = 75G
Id = 7
FSType = ntfs
Bootable = no

[Partition]
Dev = /dev/sda4
Label = cache
Size = 20G
Id = 83
FSType = ext4
Bootable = no

[Partition]
Label = data
Dev = /dev/sda5
Size = 
Id = 7
FSType = ntfs
Bootable = no

[OS]
Name = Windows 10
Version = 21H1
Description = Windows 10 21H1
IconName = win10.svg
Image = 
BaseImage = win10-21H1.cloop
Boot = /dev/sda3
Root = /dev/sda3
Kernel = auto
Initrd = 
Append = 
StartEnabled = yes
SyncEnabled = no
NewEnabled = yes
Autostart = no
AutostartTimeout = 5
DefaultAction = start
RestoreOpsiState = no
ForceOpsiSetup = 
Hidden = yes

Vor der Änderung hatte /dev/sda3(ntfs) 50G und /dev/sda4(cache) 50G.

Danach linuxmuster-import-devices.

Jetzt partitioniere ich den Client in Linbo. Die Partitionstabelle sieht erwartungsgemäß dann so aus:

~ # fdisk -l /dev/sda
Found valid GPT with protective MBR; using GPT

Disk /dev/sda: 251658240 sectors,     0
Logical sector size: 512
Disk identifier (GUID): d01e992a-1076-48a9-9b0e-58ce4092c429
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 251658206

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          411647        200M   0700  EFI system partition
   2          411648          673791        128M   0700  Microsoft reserved partition
   3          673792       157960191       75.0G   0700  Basic data partition
   4       157960192       199903231       20.0G   0700  cache
   5       199903232       251656191       24.6G   0700  Basic data partition

Danach installiere ich Windows 10 in Linbo neu. Der PC bootet danach in Windows, allerdings sind die Partitionen wieder 50G/50G. Im Cache des Clients liegt aber die korrekte start.conf mit 75G/20G.

Wenn ich nochmals in Linbo bootet, sehe ich die Partitionstabelle, welche nicht mit der start.conf übereinstimmt.

~ # fdisk -l /dev/sda
Found valid GPT with protective MBR; using GPT

Disk /dev/sda: 251658240 sectors,     0
Logical sector size: 512
Disk identifier (GUID): 45ec3d84-9d29-47f7-a2eb-716a5b760b48
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 251658206

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          411647        200M   0700  EFI system partition
   2          411648          673791        128M   0700  Microsoft reserved partition
   3          673792       105531391       50.0G   0700  Basic data partition
   4       105531392       210388991       50.0G   0700  cache
   5       210388992       251656191       19.6G   0700  Basic data partition

Wie kann ich also die Partitionsgrößen ändern? Ein Bug in Linbo?

Es gibt schon ähnliche Themen hier, bei denen ich nicht überschaue, ob diese gelöst sind, oder wie die Zusammenhänge sind:

Danke!

Viele Grüße
Klaus

Hallo Klaus,

mach bitte noch mal folgendes:

  1. start.conf.gruppe auf dem Server kontrollieren/ändern → 75GB
  2. Client der Gruppe booten und mit linbo partitionieren
  3. Client mit neu+start syncen
  4. reboot und unter linbo nochmal auf die Partitionen schauen.

So wie ich das verstanden habe, wäre dann die Partitionierung wieder falsch.
Das kann ich mir aber nciht vorstellen, weil linbo bei neu+start nicht partitioniert: also nicht die Partitionierung ändert.

Dein Problem könnte woanders sein: nämlich bei der Partitionsgrößen (besser Dateisystemsgrößen) anzeige unter Windows.
Da kann es durch aus sein, dass Windows auf einer 75GB Partition nur 50 GB anzeigt, weil das Dateisystem nur 50 GB groß ist, obwohl die Partition größer ist.
Das müßte dann unter Windows repariert werden und danach ein neues Image erstellen und verteilen.

Mich wunder, dass dein Windows nach dem Vergrößern der Partition und dem sync noch bootet: das hab ich schon öfters anders erlebt…

LG

Holger

Hallo Holger,

vielen Dank für Deine schnelle Antwort!

So hatte ich es gemacht.
Auch die Cache Partition wird nicht angepasst.

Genau, die Partitionierung ist nach neu+start wieder falsch.

Leider nicht. Denn auch wenn ich nach einem erneuten Neustart in Linbo boote, sehe ich die falsche Partitionstabelle. Ist also unabhängig von Windows. Siehe fdisk -l oben

Die Partition ist danach nicht vergrößert. Tatsächlich ist es aber trotzdem so, daß nach dem ersten Neustart ein Bluescreen kommt.

Das liegt vielleicht daran? win10-client1_linbo.log:

## Log session begin: Fr 19. Nov 11:01:15 CET 2021 ##
[StdOut] start 1: ?/dev/sda3? 2: ?/dev/sda3? 3: ?auto? 4: ?? 5: ?? 6: ?/dev/sda4?
[StdOut] Kernel auto auf Partition /dev/sda3 nicht vorhanden. Setze auf "auto".
Stelle Windows-Bootdateien auf EFI-Partition wieder her.
[StdOut] Stelle Windows-Bootdateien auf EFI-Partition wieder her.
GPT:disk_guids don't match.
GPT:partition_entry_array_crc32 values don't match: 0x6a2ede0f != 0x8c9ec043
GPT: Use GNU Parted to correct GPT errors.
GPT:disk_guids don't match.
GPT:partition_entry_array_crc32 values don't match: 0x6a2ede0f != 0x8c9ec043
GPT: Use GNU Parted to correct GPT errors.
GPT:disk_guids don't match.
GPT:partition_entry_array_crc32 values don't match: 0x6a2ede0f != 0x8c9ec043
GPT: Use GNU Parted to correct GPT errors.
BootCurrent: 0003
Timeout: 0 seconds
BootOrder: 0005,0004,0003
Boot0000* UiApp
Boot0001* UEFI VBOX HARDDISK VBa1222117-dd70845c 
...

Nach dem 2. Neustart bootet Windows dann.

Viele Grüße
Klaus

Hi,
kannst Du sagen, was das genau bedeutet? Machst Du eine neue Installation oder „nur“ Neu+Sync?
Hast Du nach dem Partitionieren mal neu gebootet? Kommen Fehlermeldungen?
Ansonsten machs mal schrittweise:
Booten
Partitionieren → Kontrollieren
Reboot → Kontrollieren
initcache → Kontrollieren
Neu+Sync → und jettz?
Wann ändert sich die Partitionieung wieder zurück?
LG
Max

Hallo Max,

danke fürs Mitdenken!

Ich installiere Windows 10 in Linbo mit dem „roten“ Button, also neu+start neu.

Partitionstabelle richtig wie in start.conf

Partitionstabelle richtig wie in start.conf

Partitionstabelle richtig wie in start.conf

Ich lassen ein watch -n 1 fdisk -l auf dem Client laufen und sehe am Ende des Klonprozesses, daß sich die Partitionierung wieder ändert.

Hier wird anscheindend von Linbo die Partitionstabelle geändert:

win10-client1_image.log

## Log session begin: Sa 20. Nov 12:35:45 CET 2021 ##
GPT fdisk (gdisk) version 1.0.3

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): 
Expert command (? for help): Partition number (1-5): Enter the partition's new unique GUID ('R' to randomize): New GUID is 152009FE-E575-435C-ACB8-12785F8C80EF

Expert command (? for help): 
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): OK; writing new GUID partition table (GPT) to /dev/sda.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
## Log session end: Sa 20. Nov 12:35:45 CET 2021 ##

@thomas
Hast Du eine Idee, was hier falsch läuft?

Danke!

Viele Grüße
Klaus

Hallo Klaus,

hast Du mal eine Festplatte mit einem Partitionierer gelöscht und dann neu mit Linbo partitioniert?

Gruß

Alois

Hallo Alois,

ja, mit dd auf der Konsole. Aber das macht Linbo mittlerweile auch vor dem Partitionieren.

Danke und viele Grüße
Klaus

Hallo zusammen,

bevor ich mich hier verrenne, würde ich wirklich gerne wissen, ob mein Vorhaben so überhaupt möglich ist.
Ich bekomme für die PCs jetzt also größere SSD’s, statt 120GB jetzt 250GB. Das vorhandene Image möchte ich weiterbenutzen. Wie gehe ich also vor, um den maximalen Speicherplatz der neuen SSD’s für 1x Windows 10 Installation nutzen zu können?

Danke!
Klaus

Hallo Klaus,

… bei Windows ist das schon immer problematisch. Das liegt am geheimen Dateisystem NTFS5, das sich ständig hinter den Kulissen ändert. Die dazu in der OPenSource Welt verfügbaren Dateisystemtreiber gehen mit unterschiedlichen Aspekten von NTFS unterschiedlich gut um: manche Besser an manchen Stellen, dafür aber schlechter an anderen Stellen.
Die Performannce wird gebremst, da das derzeit verwendete Treiber über FUSE angebunden ist.
Besserung ist in Sicht mit einem von Paragon gelieferten, direkt in den Kernel (ab 5.15) integrierten Treiber: mehr Performance und mehr Feature. Linux 5.15 mit frischem NTFS-Treiber und SMB-Server | heise online
Der ist aber noch nicht in linbo enthalten.

Zurück zu deinem Problem:
Linbo paßt die Größe der Partition also beim „Neu und Start“ an. In diesem Fall nutzt es (meines Wissens nach: das kann veraltet/falsch sein) beim Neu+Start das Tool ntfs-clone. Das scheint das zu beswirken oder notwendig zu machen. Das Tool wird verwendet weil es zum einen schneller ist als rsync über den FUSE Treiber in die NTFS Partitionierte Partition und zum anderen nicht die Probleme hat mit den Schattenkopien (NTFS Umsetzung von HardLinks) und anderen NTFS Spezialitäten die Microsoft in den letzten Jahren eingebaut hat.
Wegen dieser zwei Dinge empfehle ich (und nutze selber) immer Neu+Start bei NTFS Dateisystemen.

Bei dir konterkariert dieses Vorgehen aber dein Vorhaben: Vergrößerung.

Du mußt das Windows in ein neues, größeres NTFS zurückspielen.
Das kannst du auf diese Weise probieren:

  1. Partition in start.conf anpassen
  2. Client Partitionieren
  3. (abweichend von meiner vorherigen Anleitung) sync+start nehmen
  4. Image erstellen
  5. ab sofort wieder (auch bei neuen Clients) Neu+Start nehmen.

Wenn das nicht klappt, dann hat dein Dateisystem „besonderheiten“ die rsync oder der FUSE Treiber eben nicht kann: dann mußt du anders vorgehen.
z.B. Partitionierung am Client mit gdisk unter LiveCD anpassen (Partitionen verschieben und größen verändern). Dann in der start.conf die Daten anpassen. Dann Client booten und Image erstellen.
Wenn du das zurück spielen willst (mit neu+start) kann es sein, dass linbo meckert: Partition zu klein. Dann mach sie in der start.conf ein wenig größer, reboote den Cleitn und versuch es nochmal, bis es klappt (ein wenig größer ist kein Problem: ntfsclone paßt ja an…).

Sorry, dass es so aufwändig ist: MS hält halt gerne was geheim …
Licht ist am Ende des Tunnels …

LG

Holger

Hallo Holger,

Danke für Deine Hinweise zu NTFS!

Das hatte ich auch gelesen und mache ich seither so.

sync+start habe ich jetzt sogleich probiert, also genau Deine Empfehlung. Das Problem ist, daß sync nicht funktioniert, wenn der Client partitioniert ist und noch keine Daten drauf sind. Linbo macht das dann wie neu+start, also mit ntfsclone statt rsync.

Wieder also dasselbe Problem, daß Linbo die Partitionsgrößen falsch anpasst. Woher sind die falschen Informationen? Im .cloop stehen die nicht drinnen, hier sind nur die GUID der Partitionen gespeichert.

@thomas @dorian
Ein Bug in linbo oder im Zusammenhang mit der Linbo GUI7?

Viele Grüße
Klaus

Hi,

Hast du mal folgendes probiert:

  1. alle Partitionen zu löschen
  2. client neu starten
  3. Partitionieren
  4. Neu+start

VG,
Dorian

Hallo Dorian,

danke für Deine Antwort!
Deine Empfehlung habe ich schon ausprobiert, siehe oben. Platte mit dd gelöscht. Macht aber auch Linbo schon. Dann Partitioniert und „neu+start“. Am Ende des Klonvorgangs passt Linbo die Partition wieder falsch an.

Es liegt übrigens nicht an der Gui7. Eben ausprobiert.

Bitte seht Euch das doch im Entwicklerkreis an.

Danke und viele Grüße
Klaus

Hallo Klaus,

dann tu doch mal in dem Zustand mit gparted im Livesystem die Partitionen verschieben und die von Windows vergrößern und dann Windows starten, dateisystem check laufen lassen und dann ein Iamge erstellen (die Partitionsgröße st ja noch imemr größer in der start.con).

LG

Holger

Hallo Holger,

ich kann keine Partitionen verschieben/vergrößern, weil die Partitionstabelle das nicht hergibt:

Hier nochmal mein virtueller Testclient mit der 120GB Platte, wo ich die Windows Partition in start.conf auf 75GB und die Cache Partitition laut start.conf auf 20GB gesetzt hatte:

root@server:~# linbo-ssh win10-client1
~ # parted -l /dev/sda
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 129GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name                          Flags
 1      1049kB  211MB   210MB   fat32        EFI system partition          boot, esp
 2      211MB   345MB   134MB                Microsoft reserved partition  msftres
 3      345MB   54.0GB  53.7GB  ntfs         Basic data partition          msftdata
 4      54.0GB  108GB   53.7GB  ext4         cache
 5      108GB   129GB   21.1GB  ntfs         Basic data partition          msftdata

Danke!

Viele Grüße
Klaus

Hallo Klaus,

warum den nicht?
Wenn die 3te Partition größer sein soll, dann muss die 5te eben vorher kleiner werden…

Du kannst mit Sicherheit nicht das gleiche Windows Image in unterschiedlichen Partitionsgrößen benutzen: also nur auf den Clients mit 250er SSD in die große Partition und auf den 120er in ide kleine: so läuft das nciht.
Du mußt bei den kleinen die Datenpartition kleiner machen…

LG

Holger

Hallo Holger,

Das soll mir doch bitte Linbo so erledigen, wie es in start.conf eingetragen ist. Macht es auch, nur dann später wieder rückgängig.

Daß ich ein Image einer größeren Platte nicht auf eine kleinere Platte aufspielen kann, leuchtet mir ein. Das macht ntfsclone nicht. Aber umgekehrt, klein auf groß, ist das z.B. mit Clonezilla möglich.

Viele Grüße
Klaus

Hallo Klaus,

Dein obiger „Schritt-für-Schrott“-Post ist ja recht klar: Nachdem das Image zurückgespielt wird, wird im Anschluss die Partitionstabelle verfälscht. Das sollte nicht sein.

Direkt nach dem Zurückkopieren des Images sollte die Partition weiterhin laut Partitionstabelle die neue Größe haben. Wenn dann der Rechner erfolgreich bootet, dann würde man allerdings in Windows noch die alte Größe sehen, weil das Dateisystem noch die alte Größe aufweist. Das muss dann noch an die neue Partitionsgröße angepasst werden.

Kann es sein, dass Linbo genau das versucht - das Dateisystem an die neue Partitionsgröße anpassen? Und das genau bei diesem Schritt etwas falsch läuft - es wird stattdessen die Partitionsgröße an die Dateisystemgröße angepasst? Das wäre dann tatsächlich ein Fehler in Linbo.

Beste Grüße

Jörg

Hi!

Sieht so aus, dass ntfsresize nicht mehr funktioniert. Den Sync kann man erzwingen, wenn man nach dem Partitionieren und Formatieren den Imagenamen (ohne Erweiterung .cloop) in die Datei .linbo auf die Partition schreibt:
echo image > /mnt/.linbo
Danach nicht vergessen die Partition auszuhängen.
Gerne kann dazu ein Issue auf github erstellt werden.

VG, Thomas

Hallo,

ich hab ein Issue erstellt.

LG

Holger

Hallo Thomas,

danke für die Rückmeldung!

Leider löst der Workaround das Problem nicht. Es ist auch nicht ntfsresize welches nicht funktioniert. Ich habe die Schritte aus der Funktion cp_cloop_ntfs aus linbo_cmd manuell ausgeführt. ntfsresize funktioniert dann einwandfrei.

Es ist so, daß die Partitionierung nach dem erfolgreichen restore irgendwann wieder zurückgesetzt wird. Irgendwo kurz nachdem der Registry Patch, also der postsync ausgeführt wird. Ich finde leider nicht raus, wo das ist.

Bitte beachten:
Auch die Partitionsgröße der Cache Partition wird wieder zurückgesetzt. Also kein NTFS Problem. Ich habe meinen Kommentar hier hinterlassen:

Danke @baumhof

Viele Grüße
Klaus