Linux 15.036 Themen, 107.107 Beiträge

Partition verkleinern - möglichst ohne Datenverlust

Andy 386 / 13 Antworten / Baumansicht Nickles

Ich möchte meine ext2-Linux-Partion verkleinern, um windows98 parallel darauf laufen zu lassen.

Die derzeitige Parttionstabelle sieht so aus:
3 GB (prim) ext2
0.2GB (ext) linux-swap

Ich habe mir schon gPart und parted angeschaut, ich denke mal, ich wäre schon in der Lage damit die Grössen einzustellen. Nur mein Problem: ich würde gerne Linux (Debian 3.1) dazu veranlassen, alle Daten an den Anfang (es kann auch ans Ende) der Partion zu schreiben.

Sowas wie defrag gibt es ja glaube ich nicht, weil Linux intelligenter die Dateien verwaltet, hab ich mal gelesen...
bei Antwort benachrichtigen
d-oli Andy 386 „Partition verkleinern - möglichst ohne Datenverlust“
Optionen

Zum Defragmentieren:
http://vleu.net/shake/

Ich habe mit der GParted Live CD (http://gparted.sourceforge.net/) Linux Partitionen vergrössert/verkleinert ohne zu defragmentieren, lief problemlos.
Nicht vergessen: Daten vorher sichern.

d-oli

PS:
(1) Sowas wie defrag gibt es ja glaube ich nicht, ...
Doch, gibt es: http://ck.kolivas.org/apps/defrag/

(2) http://de.wikipedia.org/wiki/Fragmentierung_%28Dateisystem%29
Ext2 kann durch defrag ... defragmentiert werden, was aber im normalen Einsatz nie nötig ist.

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
Andy 386 d-oli „Zum Defragmentieren: http://vleu.net/shake/ Ich habe mit der GParted Live CD...“
Optionen

Danke für die kompetente Antwort !

Ich hab nur ein bissl wenig Vertrauen, weil ich etwas über 1GB abschneiden will, und nicht weiss, wo Linux so die Dateien hingeschrieben hat...

defrag hat geklappt (ich noob meinte in meinem ersten Post das von MS)


beim shake hab ich aber ein Problem:
In file included from executive.h:18,
from judge.c:31:
judge.h:21: Warnung: redefinition of `uint'
/usr/include/sys/types.h:153: Warnung: `uint' previously declared here
judge.c: In Funktion »investigate«:
judge.c:88: error: `O_NOATIME' undeclared (first use in this function)
judge.c:88: error: (Each undeclared identifier is reported only once
judge.c:88: error: for each function it appears in.)
make: *** [judge.o] Fehler 1

Das versteh ich nich so ganz... hab noch nix am Code geändert...

bei Antwort benachrichtigen
d-oli Andy 386 „Danke für die kompetente Antwort ! Ich hab nur ein bissl wenig Vertrauen, weil...“
Optionen

Hmm ...
bei mir kommt folgendes raus, wenn ich das mit $ make kompiliere:


$ make
gcc -std=gnu99 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=600 -O2 -D_POSIX_C_SOURCE=200112L -Wall -pedantic-errors -Wcast-align -Wpointer-arith -Wbad-function-cast -DVERSION=\"0.29\" -DNDEBUG -c executive.c -o executive.o
gcc -std=gnu99 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=600 -O2 -D_POSIX_C_SOURCE=200112L -Wall -pedantic-errors -Wcast-align -Wpointer-arith -Wbad-function-cast -DVERSION=\"0.29\" -DNDEBUG -c judge.c -o judge.o
gcc -std=gnu99 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=600 -O2 -D_POSIX_C_SOURCE=200112L -Wall -pedantic-errors -Wcast-align -Wpointer-arith -Wbad-function-cast -DVERSION=\"0.29\" -DNDEBUG -c linux.c -o linux.o
gcc -std=gnu99 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=600 -O2 -D_POSIX_C_SOURCE=200112L -Wall -pedantic-errors -Wcast-align -Wpointer-arith -Wbad-function-cast -DVERSION=\"0.29\" -DNDEBUG -c main.c -o main.o
gcc -std=gnu99 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=600 -O2 -D_POSIX_C_SOURCE=200112L -Wall -pedantic-errors -Wcast-align -Wpointer-arith -Wbad-function-cast -DVERSION=\"0.29\" -DNDEBUG -c msg.c -o msg.o
gcc -std=gnu99 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=600 -O2 -D_POSIX_C_SOURCE=200112L -Wall -pedantic-errors -Wcast-align -Wpointer-arith -Wbad-function-cast -DVERSION=\"0.29\" -DNDEBUG -lattr executive.o judge.o linux.o main.o msg.o -o shake
gcc -std=gnu99 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=600 -O2 -D_POSIX_C_SOURCE=200112L -Wall -pedantic-errors -Wcast-align -Wpointer-arith -Wbad-function-cast -DVERSION=\"0.29\" -DNDEBUG -c unattr.c -o unattr.o
gcc -std=gnu99 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=600 -O2 -D_POSIX_C_SOURCE=200112L -Wall -pedantic-errors -Wcast-align -Wpointer-arith -Wbad-function-cast -DVERSION=\"0.29\" -DNDEBUG -lattr executive.o unattr.o linux.o -o unattr

Gib mal gcc -v auf der Konsole ein und poste das Resultat. Ich habe gcc Version 3.4.4 20050721 (Red Hat 3.4.4-2), du hast vermutlich gcc 2.irgendwas (?), was das Problem sein könnte.

d-oli
Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
Andy 386 d-oli „Hmm ... bei mir kommt folgendes raus, wenn ich das mit make kompiliere: make gcc...“
Optionen

gcc-Version 3.3.5 (Debian 1:3.3.5-13)

Nutzt der ganze log was ?

Vorher war glaube ich ein 3.1 installiert
Irgendein Programm wollte gcc-Komponenten der Version 3.3, also habe ich die draufkopiert, die alten aber nicht gelöscht...
Kann es daran liegen ?

bei Antwort benachrichtigen
d-oli Andy 386 „gcc-Version 3.3.5 Debian 1:3.3.5-13 Nutzt der ganze log was ? Vorher war glaube...“
Optionen
Nutzt der ganze log was ?
... nö - ich glaube nicht ... ;-)

Vorher war glaube ich ein 3.1 installiert
Irgendein Programm wollte gcc-Komponenten der Version 3.3, also habe ich die draufkopiert, die alten aber nicht gelöscht...
Kann es daran liegen ?

Schon möglich ...

Ich habe nach O_NOATIME gegoogelt , sieht so aus, als ob es da ein Linux-Kernel-Problem geben kann (http://www.google.de/search?hl=de&q=O_NOATIME&btnG=Google-Suche&meta=).

Kennst du dich mit C aus? Versuche doch einmal O_NOATIME im der judge.h Datei zu definieren:
#define O_NOATIME 01000000

Das kannst du unter typedef ... uint schreiben (http://www.ussg.iu.edu/hypermail/linux/kernel/0406.1/0981.html)

d-oli
Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
Andy 386 d-oli „Nutzt der ganze log was ? ... nö - ich glaube nicht ... - Vorher war glaube ich...“
Optionen

Ich hab jetzt ein Programm gefunden, mit dem ich die Partitionen teilen und dann auch angucken kann.

Nur jetzt mein Problem: in dem Teil, den ich abtrenne wollte, stehen noch Informationen. Kann ja auch müll sein.

Ich brächte also eine Funktion/Programm, was in unbenutzen Speicher von der Linux-Partition Nullen oder sowas reinschreibt.
Gibt es da was ?

bei Antwort benachrichtigen
d-oli Andy 386 „Ich hab jetzt ein Programm gefunden, mit dem ich die Partitionen teilen und dann...“
Optionen
Ich hab jetzt ein Programm gefunden, mit dem ich die Partitionen teilen und dann auch angucken kann.
... schön für dich. Wie heisst es denn und wie funktioniert es, oder ist das geheim?

Gibt es da was ?
Klar gibt es sowas, google mal danach ...

d-oli
Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
the_mic Andy 386 „Ich hab jetzt ein Programm gefunden, mit dem ich die Partitionen teilen und dann...“
Optionen
man dd
cat /dev/brain > /dev/null
bei Antwort benachrichtigen
Andy 386 the_mic „man dd“
Optionen

Sorry, ich hatte keine Zeit was ordentliches zu schreiben oder das von dir auszuproieren.

Ein bisschen c versteh ich schon.

die ATTR_DONTFOWLLOW wollte es auch noch definiert haben (hab via goolge 0x0001 gefunden), dann fehlte die linux.o gänzlich (hab ich leer erzeugt),
jetzt kommt:
/usr/bin/ld: cannot find -lattr
collect2: ld returned 1 exit status
make: *** [shake] Fehler 1

damit kann ich aber nix anfangen



Das besondere, wie ich fand an dem Programm, was ich auf der UltimateBootCD gefunden habe (hab sie grad nicht hier, kann den genauen namen nicht nennen...) dass man ohne wirklih zu schreiben schon das "Ergebnis" sehen kann...

bei Antwort benachrichtigen
d-oli Andy 386 „Sorry, ich hatte keine Zeit was ordentliches zu schreiben oder das von dir...“
Optionen
ld ist der GNU Linker man ld, der kann nichts Linken wo nichts ist ...
Versuche mal folgendes und schau nach, ob du ähnliche Resultate erhälst (Permission denied und No such file or directory kannst du ignorieren:

$ su
Password: ********

# cd /
# find . -name "*.h" -exec grep -l "O_NOATIME" {} \;
./usr/include/bits/fcntl.h
./usr/src/kernels/2.6.9-22.EL-hugemem-i686/include/asm-i386/fcntl.h
./usr/src/kernels/2.6.9-22.EL-hugemem-i686/include/linux/fs.h
./usr/src/kernels/2.6.9-22.EL-smp-i686/include/asm-i386/fcntl.h
./usr/src/kernels/2.6.9-22.EL-smp-i686/include/linux/fs.h
./usr/src/kernels/2.6.9-22.EL-i686/include/asm-i386/fcntl.h
./usr/src/kernels/2.6.9-22.EL-i686/include/linux/fs.h

# find . -name "*.h" -exec grep -l "ATTR_DONTFOLLOW" {} \;
./usr/include/attr/attributes.h

Kann O_NOATIME und ATTR_DONTFOLLOW nicht gefunden werden, dann kannst du:
1) versuchen den Kernel zu patchen, wie in einem vorangehenden Link beschrieben
2) versuchen O_NOATIME und ATTR_DONTFOLLOW in der linux.h Datei zu definieren und neu zu kompilieren make clean/make

Wird O_NOATIME und ATTR_DONTFOLLOW gefunden, dann kannst du:
1) versuchen deine vermurkste Entwicklungsumgebung wieder in Ordnung zu bringen
2) Linux neu installieren, was das Ganze betreffend Dualbootsystem mit Win 98 sowieso einfacher machen würde

d-oli
Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
the_mic Andy 386 „Sorry, ich hatte keine Zeit was ordentliches zu schreiben oder das von dir...“
Optionen

Hast du die Kernel-Header überhaupt installiert?

cat /dev/brain > /dev/null
bei Antwort benachrichtigen
Andy 386 the_mic „Hast du die Kernel-Header überhaupt installiert? “
Optionen

> Hast du die Kernel-Header überhaupt installiert?

DAS ist der Weg zur Lösung !
ich wollte ja Platz sparen !

Ich habe es mit Arctonics geschafft. da wurde auch gleich überprüft, ob noch verwendete Daten in der Partition liegen.

Vielen Dank für eure Hilfe & den kleinen Ausflug ins Bauen von Linux !

bei Antwort benachrichtigen