Usuwanie rozszerzonej partycji bez usuwania logiki w niej

3

Korzystam z laptopa opartego na Linuksie, i aby uruchomić w nim kilka dystrybucji, stworzyłem rozszerzoną partycję zawierającą kilka logicznych z GParted. Teraz, po dość długim czasie z tą konfiguracją, zmieniłem zdanie ze względu na brak miejsca na partycję danych. Teraz chcę pozostawić jedną dystrybucję w spokoju, tak jak jest to normalne, i ostatecznie mieć kilka innych systemów operacyjnych przechowywanych na zewnętrznych nośnikach do podłączenia i używania, jeśli chcę.

Oczywiście także ta partycja, którą chcę zachować (i trochę powiększyć) jest logiczną częścią rozszerzenia, które chcę zachować. Jeśli chodzi o liczbę, jestem w porządku, co oznacza, że ​​mam teraz tę dużą rozszerzoną dystrybucję, wymianę i partycje danych, więc jest miejsce na inną podstawową przed usunięciem rozszerzonej, ale nie wiem, jak ją usunąć bez dotykając logiki, nie chcę ponownie instalować systemu, tracąc wszystkie zmiany i ustawienia, i nie chcę utrzymywać rozszerzonej partycji dla samej logiki.

Jak mogę to zrobić? Czy muszę utworzyć nowy element główny, skopiować zawartą w nim zawartość logiczną, a następnie usunąć wszystko? Czy system uruchomi się i zachowa dokładnie wszystkie funkcje, które ma teraz? A może istnieje sposób na konwersję rozszerzenia na podstawowy, gdy zawiera on tylko jedną logikę? Czy mogę bezpośrednio przenieść logikę z rozszerzonej, zamieniając ją w podstawową? Albo znowu, czy jestem wkręcony?

HisDudeness
źródło
1
hlovdalnapisał naprawdę świetną odpowiedź na ten problem tutaj: serverfault.com/questions/48879/…
tydzień

Odpowiedzi:

4

Dzięki za odpowiedzi, w końcu znalazłem też inne metody, po prostu szukałem niewłaściwego sposobu: nie wiedziałem, że wszystko, co muszę napisać, to „zmienić logikę w podstawową”. Wydaje mi się, że rozwiązaniem, które zaproponowałem, jest Knjers, ale tak powiedziałem w jednym zdaniu, że nawet nie rozumiałem o czym on mówił, dopóki tego nie przeczytałem.

Post jest następujący: Konwertuj przez terminal

Gdybym wcześniej znalazł sposób na znalezienie rozwiązania tego problemu, oszczędziłbym jeden bezużyteczny post, ale może niektórzy ludzie byliby w tej samej sytuacji, więc wznowię rozwiązanie. Krótko mówiąc, potrzebujemy sfdisk. Pierwszy bieg

sudo sfdisk -d / dev / sdX

aby uzyskać szczegółową mapę dysku (oczywiście X oznacza literę urządzenia, uruchom sudo fdisk -l, aby uzyskać listę dysków, jeśli nie znasz kodu dysku).
Po prostu skopiuj to do pliku tekstowego i ręcznie edytuj tablicę partycji do tej, którą chcesz. Uważaj, szansa na spieprzenie wszystkiego jest dość duża. Testowałem wcześniej na pamięci USB i to po prostu działa.

W każdym razie wszystko, co musisz zrobić, to znaleźć mapę, którą chcesz utworzyć, i wyrazić ją w kategoriach sektorów. Wszystko jest łatwiejsze, jeśli znajdujesz się w sytuacji takiej jak moja (chcesz pozbyć się rozszerzonej partycji), ponieważ oznacza to, że możesz usunąć dowolną logikę, ale taką, którą chcesz zmienić na podstawową i mieć tylko jedną logikę wewnątrz rozszerzonej, tak dużą jak to. Możesz dostać się do tej sytuacji za pomocą łatwiejszego automatycznego narzędzia, takiego jak GParted. Jest to łatwiejsze, ponieważ możesz po prostu użyć początkowego i końcowego punktu rozszerzenia dla nowego podstawowego, a jeśli chcesz zachować rozszerzenie z kilkoma logikami i po prostu przenieść jeden z nich poza (oczywiście jest to możliwe tylko wtedy, gdy jest ostatni lub pierwszy - wystarczy przesunąć, jeśli nie jest - a jeśli masz trzy partycje podstawowe / rozszerzone lub mniej), edycja jest nieco bardziej złożona,

Załóżmy na przykład, że masz tę prostą mapę: jedną logikę w rozszerzonej lokalizacji na samym początku, swap i ogromną partycję danych.

sudo sfdisk -d / dev / sda

tablica partycji jednostki / dev / sda
: sektory

/ dev / sda1: start = 2048, rozmiar = 80000000, Id = f
/ dev / sda2: start = 80002048, rozmiar = 800000, Id = 82
/ dev / sda3: start = 80802048, rozmiar = 800000000, Id = 83
/ dev / sda4: start = 0, rozmiar = 0, Id = 0
/ dev / sda5: start = 4096, rozmiar = 79997952, Id = 83

Numery są po prostu tworzone przeze mnie, aby łatwiej było zobaczyć, jak to działa. Jak widać, maksymalna możliwa liczba „prawdziwych” partycji wynosi cztery, co oznacza, że ​​każda logika rozpocznie numerację od pięciu, nawet jeśli masz mniej niż cztery podstawowe. Ponadto / dev / sda4 byłby wyświetlany jako typ 0, zaczynając od 0, a duży 0 również, jeśli masz tylko trzy partycje i nie ma logiki. Próg czterech podstawowych jest zawsze wyświetlany. Id 83 to partycja ext Linux, a 82 to Linux swap (lista typów partycji z identyfikatorami) . Teraz, jeśli chcemy zachować tę dokładną mapę, z wyjątkiem partycji logicznej zastępującej rozszerzoną jako logiczną, po prostu wklejamy dokładne wyjście otrzymanej komendy (z „tablicy partycji”) i modyfikujemy ją w ten sposób:

tablica partycji jednostki / dev / sda
: sektory

/ dev / sda1: start = 4096, rozmiar = 79997952, Id = 83
/ dev / sda2: start = 80002048, rozmiar = 800000, Id = 82
/ dev / sda3: start = 80802048, rozmiar = 800000000, Id = 83
/ dev / sda4: start = 0, rozmiar = 0, Id = 0

Wszystko, co zrobiliśmy, to umieszczenie naszej logiki, z jego oryginalnymi limitami (zaczyna się nieco później i kończy nieco przed rozszerzeniem, musisz umieścić własne) w miejsce naszego rozszerzenia (zajmuje teraz pozycję z liczbą <5, zarezerwowane dla wersji rozszerzonej lub podstawowej) o identyfikatorze 83 (macierzysty system plików Linux, ostatecznie definiując go jako podstawowy). W ten sposób, gdy zaimportujemy nową tabelę, fragment zawierający wszystkie pliki naszej logiki zostanie rozpoznany jako część podstawowej, ale żaden z nich nie zostanie usunięty, więc jest po prostu idealny. Aby zaimportować naszą nową konfigurację, zapisz nasz plik tekstowy i wykonaj następujące polecenie:

sudo sfdisk --force / dev / sdX <ścieżka / do / pliku / yournewpartitiontable.txt

WAŻNE: zrób to podczas sesji na żywo, fundamentalne jest to, że dysk twardy nie jest używany, a wszystkie partycje są odmontowane. Jeśli dysk, który modyfikujesz, nie jest dyskiem systemowym (jak drugi dysk twardy lub dysk zewnętrzny lub pamięć USB / karta SD), to dobrze, po prostu upewnij się, że wszystkie jego partycje nie są zamontowane.

Metoda GParted:

Podczas uruchamiania systemu GParted Live w celu usunięcia wszystkich innych partycji logicznych i uzyskania rozszerzenia zawierającego wszystkie logiki, które chciałem zmienić na podstawowe, właściwie przypadkiem natknąłem się na nową metodę (tę, której użyłem, więc mogę gwarantuję, że to działa, musisz mieć mniej niż cztery partycje, ponieważ będziesz potrzebował darmowego bloku kopii zapasowej i faktycznie utworzysz nowy podstawowy, zanim będziesz mógł usunąć rozszerzone).

GParted ma kopięfunkcja, która tworzy dokładną kopię partycji w wystarczająco wolnym bloku. Wszystko, co zrobiłem, to skopiowałem moją logikę poza rozszerzoną, a następnie, po upewnieniu się, że wszystko działało tak jak na mojej oryginalnej partycji, usunąłem logiczną i rozszerzoną i przeniesiłem wszystko w miejsce tych, rozszerzając moją partycję danych. Ta metoda jest bezpieczniejsza, ponieważ nie jest w 100% manualna, ale także znacznie dłuższa (sprawiłem, że moja partycja danych zajmuje wolne miejsce, zwiększając ją z 380 do 440 GiB, co wymagało 5 godzin) i może bardziej stresujący dysk twardy, ponieważ ty zrobią w nim więcej akcji zamiast bezpośrednio modyfikować tablicę partycji i informacje symboliczne. Ale znów jest fajniejszy, ponieważ wykonujesz wszystko w jednej operacji,

Mam nadzieję, że to pomaga, na zdrowie!

HisDudeness
źródło
0

Wystarczy użyć początkowego i końcowego adresu LBA partycji logicznej i wprowadzić je jako początek i koniec jednego z czterech gniazd partycji podstawowej w MBR.

Jeśli jest to dysk SSD, po prostu miej nadzieję, że jest on dopasowany do wielu 8 sektorów LBA. SSD żyje dłużej, gdy wszystko jest wyrównane co najmniej 4096B. Jeszcze lepiej przy 128 KB.

knjers
źródło
0

Osobiście nie zawracałbym sobie głowy; utrzymywanie rozszerzonej partycji z jedną partycją logiczną nie spowoduje prawdziwej szkody. Istnieje bardzo małe dodatkowe ryzyko utraty partycji z powodu uszkodzenia struktur danych partycji logicznej, ale ryzyko to jest prawdopodobnie mniejsze niż ryzyko związane z użyciem narzędzia do partycjonowania do konwersji partycji logicznej na partycję podstawową.

Jeśli naprawdę chcesz to zrobić, polecam mój program FixParts , który może konwertować elementy podstawowe na logiczne i odwrotnie, w ramach ograniczeń narzuconych przez system MBR i bieżący układ partycji. Z tego, co powiedziałeś, nie oczekuję żadnych problemów z tą konwersją. Procedura byłaby taka:

  1. Uruchom FixParts na dysku
  2. Wpisz, paby wyświetlić tablicę partycji i sprawdź, czy FixParts pokazuje wszystko, co powinien
  3. Wpisz, raby zmienić logikę na podstawową. (Zostaniesz poproszony o numer partycji.)
  4. Wpisz ponownie, paby wyświetlić tabelę partycji, aby upewnić się, że wszystko jest w porządku.
  5. Wpisz, waby zapisać zmiany.

Chociaż rejestrowanie początkowych i końcowych sektorów partycji logicznej, usuwanie jej i zawierającej ją rozszerzonej partycji, a następnie ręczne tworzenie partycji z fdisklub partedmoże działać, jest to dodatkowa praca i zapewnia dodatkowe możliwości błędu ludzkiego; dlatego nie zrobiłbym tego w ten sposób - nie wtedy, gdy istnieje narzędzie do robienia tego automatycznie bez możliwości spustoszenia literówki.

Rod Smith
źródło