Archiv der Kategorie: Linux

Blender 2.6: „remove doubles“ für alle Objekte

Mal wieder eines dieser „Google-Löcher“: man findet nix zu einem Suchbegriff. Stopfen wir dieses Loch (und für mich ist es eine Art Zwischenablage, wenn ich das mal wieder brauchen sollte).

Problemstellung: man hat eine 3D-Szene beispielsweise aus einem anderen Programm in Blender importiert, und würde gerne damit weiterarbeiten. Stellt nun aber fest, dass praktisch alle Dreiecke im Modell doppelt sind – anwählen, Editmode, „Remove doubles“, „recalculate normals“ Editmode verlassen geht ja noch für 10 Objekte. Was aber, wenn das über 100 sind? Richtig, Blender hat ja zum Glück einen eingebauten Python-Interpreter. Also ein beliebiges Blender-Fenster schnappen, die Python-Konsole aufmachen über den kleinen Button unten links:

…und dann das hier einfach reinkopieren, ggf. noch einmal Return drücken. Vorher müssen die Objekte selektiert werden, die der Prozedur unterworfen werden sollen (ggf. mal mit ein paar anfangen, weil das Skript eine Weile braucht, wenn komplexe Geometrien dabei sind):

import bpy
if bpy.context.selected_objects != []:
	for ob in bpy.context.selected_objects:
		if ob.type == 'MESH':
			bpy.context.scene.objects.active = ob 
			bpy.ops.object.mode_set(mode='EDIT') 
			bpy.ops.mesh.select_all() 
			# remove doubles:
			bpy.ops.mesh.remove_doubles() 
			# recalculate outside normals:
			bpy.ops.mesh.normals_make_consistent(inside=False)
			bpy.ops.object.mode_set(mode='OBJECT')

 

Debian Update: Grub-Probleme

So, da war es mal wieder: das Update des Grauens, das man „mal schnell“ anstoßen wollte und das einem dann den Sonntagnachmittag versaut. Bei mir war’s das Update auf Lenny 6.0.3. Als mich apt-get nach den Platten gefragt hat, auf denen ich Grub installieren möchte, wurde ich schon stutzig. sda, sdb, md1 und md2 standen zur Auswahl – und es kam, wie es kommen musste: egal, welche ich ausgewählt habe, kam nur dieses Gemopper:

/usr/sbin/grub-setup: warn: This msdos-style partition label has no post-MBR gap; 
    embedding won't be possible!.
/usr/sbin/grub-setup: error: embedding is not possible, but this is required when 
    the root device is on a RAID array or LVM volume.

Na toll. Leider spuckt Tante Google hierzu nicht sonderlich viel zielführendes aus, also hier mein kleines How-To.

Warnhinweis: bitte nur nachmachen, wenn man weiß, was man tut. Alle Kommandos, die hier stehen, eignen sich prima zum kaputtkonfigurieren des GANZEN Systems.

Das Szenario, das ich hatte, war dies: RAID-1 für /boot und / (und für Swap. Ich weiß, das ist Kappes. Also ändern wir das gleich, während wir dran sind). Hier meine Konfig:

cat /proc/mdstat 
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] 
md2 : active raid1 sda3[0] sdb3[1]
      726266432 blocks [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1]
      2104448 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      4200896 blocks [2/2] [UU]

Die Einzelplatten sind gleich konfiguriert, und zwar so:

I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004be32

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1     8401994     4200997   fd  Linux raid autodetect
/dev/sda2         8401995    12611024     2104515   fd  Linux raid autodetect
/dev/sda3        12611025  1465144064   726266520   fd  Linux raid autodetect

…und die „1“ beim ersten Partitions-Start ist auch gleich das Problemkind. Allerdings hatte ich richtig Massel: die sda1 und sdb1 ergeben md0, und die ist bei mir als Swap eingetragen. Also müssen wir die umbauen und so einrichten, dass sie „höher“ als am Block 1 anfängt. Let’s go:

swapoff -a
mdadm --stop /dev/md0
fdisk /dev/sda

…und die Partition 1 umbasteln: löschen (d, 1), neu anlegen (n, p, 1, 63, [Maximalgröße hier eingeben]), Typ ändern (t, 1, fd), schreiben: w. Wer mag, tut das gleiche auf sdb (aus Gründen der Ästhetik, damit die Partitionen gleich groß sind zum Beispiel).  Dann bauen wir das RAID wieder zusammen, dieses Mal als Raid-0 für den Swap (warum auch nicht?):

mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sda1 /dev/sdb1

Und: Energie, Scotty:

mkswap /dev/md0

nebst einem

swapon -a

So, dann bitte nicht vergessen, Grub wieder draufzubügeln – dieses Mal hoffentlich ohne Fehlermeldung. Sonst wird der nächste Reboot etwas hässlich… ;-)

Danke an die Jungs aus dem Hetzner-Forum – die hatten die Lösung (allerdings halt nicht zu Googeln…)