Zmiana rozmiaru partycji rozruchowej z pełnym szyfrowaniem dysku

12

Widziałem odpowiedzi na ogólne pytanie dotyczące zmiany rozmiaru partycji rozruchowej. W moim przypadku zainstalowałem Ubuntu 12.04 Alternate z pełnym szyfrowaniem dysku. Ponieważ nie można zamontować dysku podczas operacji zmiany rozmiaru, czy nie spowoduje to uszkodzenia partycji głównej?

Mam kopię zapasową wszystkiego, więc potencjalnie mógłbym dokonać ponownej instalacji, ale nie wiem, jak określić rozmiar partycji rozruchowej przed szyfrowaniem.

Tom Stone
źródło

Odpowiedzi:

3

Wiem, że to pytanie jest stare, ale pojawia się podczas wyszukiwania problemu z małą partycją rozruchową i korzystania z szyfrowania dysku.

Instalator Ubuntu ubiquityużywa partmando partycjonowania. Gdy opcja „Użyj cały dysk” jest zaznaczona, konfiguracje działowe pochodzą z partman plików przepis w /lib/partman/recipes-[arch]/*oraz /lib/partman/recipes/*na live CD. Znajdź przepis używany przez instalatora i zmodyfikuj maksymalny rozmiar /bootpartycji. W moim systemie używana jest domyślna receptura /lib/partman/recipes/30atomic. Otwórz terminal:

ubuntu@ubuntu:~$ sudo nano /lib/partman/recipes/30atomic

Przejdź do sekcji dotyczącej partycji rozruchowej i zmień trzeci numer (256 poniżej) na żądany rozmiar (zalecam co najmniej 512):

128 512 256 ext2
    $defaultignore{ }
    method{ format }
    format{ }
    use_filesystem{ }
    filesystem{ ext2 }
    mountpoint{ /boot }

W tej sekcji podano, że rozmiar będzie wynosił od 128 do 256 MB, z priorytetem 512, co określa, jak ważny jest rozmiar tej partycji w stosunku do innych.

Zapisz go z Ctrl+ O, Enter. Następnie uruchom instalator, zainstaluj jak zwykle.

mkayaalp
źródło
2

Zakładam, że przez pełne szyfrowanie dysku masz na myśli posiadanie małej niezaszyfrowanej partycji rozruchowej i innej partycji, która jest fizycznym woluminem do szyfrowania (dm-crypt). Jeśli między nimi nie ma miejsca, nie będzie można nieniszcząco zmienić rozmiaru zaszyfrowanej partycji, aby uzyskać więcej miejsca na / boot.

Spójrz na moją odpowiedź tutaj - to może pomóc.

Marcin Kamiński
źródło
0

Tak, zmiana rozmiaru rozruchu jest możliwa, ale jest bardzo skomplikowana. Spróbowałbym tego dopiero po utworzeniu kopii zapasowej WSZYSTKICH danych. Jeśli popełnisz błąd, ryzyko utraty danych jest dość wysokie. Będziesz chciał mieć gotowy do rozruchu system Ubuntu Live USB / CD, ponieważ powinieneś wykonywać te operacje po uruchomieniu na żywo USB / CD.

Dawno temu dowiedziałem się, kiedy społeczność linuxowa zmienia wymagania dotyczące wymaganego rozmiaru partycji rozruchowej. Wcześniej 100-200 MB wystarczało na rozruch, ale potem społeczność podwoiła swoje wymagania dotyczące rozmiaru. Wpłynęło to na użytkowników, którzy postępowali zgodnie z poprzednimi wytycznymi.

/server/334663/what-is-the-recommended-size-for-a-linux-boot-partition

Aktualne wymagania dotyczące / boot odsyłam do oficjalnych wytycznych.

https://help.ubuntu.com/community/DiskSpace

W momencie pisania tego tekstu wytyczne zalecają / bootują z 250 MB do 1 GB miejsca. Poleciłbym osobną partycję rozruchową z największą wymaganą przestrzenią. Partycja rozruchowa musi być niezaszyfrowana podczas procesu rozruchu. Proces uruchamiania będzie montował po drodze różne zaszyfrowane partycje, na przykład zaszyfrowane dyski LUKS lub zaszyfrowane katalogi HOME, i istnieją różnice między tymi podejściami. Z mojego doświadczenia wynika, że ​​używanie różnych opcji szyfrowania dysku twardego Ubuntu powoduje problemy przy późniejszej aktualizacji Ubuntu, wymagającej ręcznej interwencji.

Ogólny przegląd odsyłam do tego artykułu, który uważam za dobrze napisany.

„LUKS szyfruje wiele partycji na Debian / Ubuntu za pomocą jednego hasła”

https://www.martineve.com/2012/11/02/luks-encrypting-multiple-partitions-on-debianubuntu-with-a-single-passphrase/

Gdy zauważysz potrzebę zmiany partycji, ten post był dla mnie bardzo pomocny.

„Jak zmienić rozmiar zaszyfrowanego systemu plików LUKS”

https://ubuntuforums.org/showthread.php?t=726724

Ponieważ gparted nie obsługuje przenoszenia zaszyfrowanych partycji LUKS, nie można tego zrobić za pomocą poleceń gparted z wiersza poleceń ani z GUI. Odkryłem, że możesz użyć gparted do utworzenia partycji, a następnie użyć dd do przeniesienia zaszyfrowanych partycji za pomocą kopii sektor po sektorze. Wiąże się to z możliwością obliczenia wielkości części w odniesieniu do sektorów. Pomyłka oznacza utratę danych i ponowną instalację.

W moim przypadku muszę zwiększyć rozmiar mojej partycji rozruchowej z 537 MB do 1 GB. Potrzebuję tego w ramach mojej aktualizacji z Ubuntu 12.04 do 14.04, aby aktualizacja Ubuntu mogła znaleźć wystarczającą ilość miejsca na / boot. Tak, możesz usunąć autorove, aby zwolnić miejsce w / boot, ale ogólne wymagania uległy zmianie, więc powiększałem boot, aby dostosować się do tych wytycznych. Oto mój układ partycji.

Partition Table: gpt

Number  Start   End    Size   File system  Name  Flags
 1      1049kB  538MB  537MB  fat32              boot
 2      538MB   794MB  256MB  ext2
 3      794MB   240GB  239GB

Mam zaszyfrowany dysk LUKS w części nr 3 i mój rozruch w partycji nr 1, więc nie było wystarczającej ilości miejsca na rozszerzenie / boot. Uwaga Gparted nie może przenieść partycji nr 3, ponieważ jest to partycja szyfrowana. Aby to naprawić, utworzyłem czwartą partycję na końcu mojego dysku tego samego rozmiaru w sektorach i użyłem dd do skopiowania zawartości partycji 3 na partycję 4. Uważam, że warto zmienić rozmiar mojego katalogu głównego na niezbędny minimalny rozmiar. W związku z tym wykonałem następujące operacje, aby rozwiązać kwestię rozmiaru mojego / boot.

  1. Zmniejsz główny system plików na partycji nr 3
  2. Zmieniłem rozmiar partycji nr 3 (aby była mniejsza)
  3. Utworzono partycję nr 4 o tym samym rozmiarze (na końcu dysku)
  4. Wykorzystano DD do skopiowania sektorów partycji nr 3 na partycję nr 4
  5. Usunięto partycję nr 3, aby zwolnić miejsce na dysku
  6. Wykorzystano Gparted do zmiany rozmiaru i przeniesienia partycji # 1 i # 2
  7. Utworzono nową część nr 3 o tym samym rozmiarze co zmniejszoną część 3 (lub partycję nr 4)
  8. Użyto DD do skopiowania sektorów partycji # 4 na partycję # 3
  9. Usuń partycję # 4
  10. Rozwiń rozmiar partycji # 3 do pierwotnej wielkości # 3
  11. Zaktualizowano system plików zawarty w zaszyfrowanej partycji # 3 do pozostałego miejsca

W ten sposób mogłem usunąć partycję # 3 i użyć gparted do przenoszenia i powiększania partycji # 1 i # 2. Przeczytanie powyższych przewodników powinno zapewnić wystarczająco dużo wglądu, aby przejść dalej. Nie pokazano go tutaj, ale zmniejszając partycję główną, usunąłem grupę woluminów wymiany na tej samej partycji i odtworzyłem ją na końcu. Wszystko to odbywa się podczas uruchamiania na dysku flash USB Live Linux. Oto kilka moich notatek, które nie były łatwo dostępne w powyższych przewodnikach.

Uznałem, że blockdev jest użyteczny w wyświetlaniu rozmiaru partycji w sektorach. Pomogło mi to, gdy obliczałem rozmiary sektora.

sudo blockdev --getsize /dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500p2
499712

Polecenie Gparted „jednostka s” wyświetli tablicę partycji w sektorach. Cała zmiana rozmiaru partycji, usuwanie i tworzenie odbywa się za pomocą Gparted. W ten sposób możesz po prostu wykonać całą matematykę w sektorach. „Unit compact” przełączy się z powrotem na format MB / GB, jeśli chcesz zobaczyć, jak wygląda matematyka sektora.

(parted) unit s
(parted) p                                                                
Model: Linux device-mapper (mirror) (dm)
Disk /dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500: 468857096s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start     End         Size        File system  Name  Flags
 1      2048s     1050623s    1048576s    fat32              boot
 2      1050624s  1550335s    499712s     ext2
 3      1550336s  456656896s  455106561s

Polecenie resize2fs ma sprytną opcję zmiany rozmiaru do minimum. Podczas tej części usunąłem również grupę woluminów wymiany.

ubuntu@ubuntu:~$ sudo resize2fs -M -p /dev/ubuntu-vg/root
resize2fs 1.42.9 (4-Feb-2014)
Resizing the filesystem on /dev/ubuntu-vg/root to 2261211 (4k) blocks.
Begin pass 3 (max = 1600)
Scanning inode table          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/ubuntu-vg/root is now 2260992 blocks long.

Po zmianie rozmiaru tabel partycji wróć i zaktualizuj gparted. Użyto 4096 * 2260992, a następnie blockdev, aby sprawdzić matematykę tutaj. Oto polecenie gparted.

(parted) resizepart 3
End?  [224419843s]? 225970179s 
Warning: Shrinking a partition can cause data loss, are you sure you want to continue?
Yes/No? yes                                                               
Device /dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500p3 not found
device-mapper: table ioctl on  failed: No such device or address
(parted) p                                                                
Model: Linux device-mapper (mirror) (dm)
Disk /dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500: 468857096s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start     End         Size        File system  Name  Flags
 1      2048s     1050623s    1048576s    fat32              boot
 2      1050624s  1550335s    499712s     ext2
 3      1550336s  225970179s  224419844s

Zauważ, że liczba sektorów na partycji nr 3 jest mniejsza niż moja pierwotna lista, tzn. W ten sposób możesz użyć gparted do utworzenia partycji nr 4 przed kopią DD. Zmniejszenie zwalnia więcej miejsca na dysku dla tej kopii.

ubuntu@ubuntu:~$ sudo dd if=/dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500 of=/dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500 bs=512 skip=1550336 count=224419844 seek=244437218
224419844+0 records in
224419844+0 records out
114902960128 bytes (115 GB) copied, 2146.1 s, 53.5 MB/s

Po skopiowaniu DD przejdź dalej i powiększ rozmiar partycji / boot. Usuniesz oryginalną partycję # 3, a następnie ponownie utworzysz partycję # 3 w nowej lokalizacji sektora po powiększonych partycjach # 1 i # 2. Ponownie zastosowano blockdev do pomiaru wielkości sektora. Utworzyłem tę partycję # 3 o takim samym rozmiarze jak partycja # 4, która jest mniejsza niż pierwotnie # 3. Użyj DD, aby skopiować sektory # 4 na partycję # 3.

ubuntu@ubuntu:~$ sudo dd if=/dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500 of=/dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500 bs=512 skip=244437218 count=224419844 seek=9242624

Po skopiowaniu usuń partycję # 4 i rozwiń rozmiar partycji # 3. W moim przypadku właśnie przywróciłem partycję nr 3 do rozmiaru z początku. Miałem dość miejsca, aby to zrobić.

(parted) resizepart 3                                                     
End?  [464349185s]? 464349184s                                           
Warning: Shrinking a partition can cause data loss, are you sure you want to continue?
Yes/No? y                                                                 
Device /dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500p3 not found
device-mapper: table ioctl on  failed: No such device or address
(parted) p                                                                
Model: Linux device-mapper (mirror) (dm)
Disk /dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500: 468857096s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start     End         Size        File system  Name  Flags
 1      2048s     4192255s    4190208s    fat32              boot
 2      5146624s  9242623s    4096000s    ext2
 3      9242624s  464349184s  455106561s

Gdy gparted zwiększy rozmiar partycji, nie aktualizuje systemu plików. Zauważ, że system plików jest zawarty w zaszyfrowanej partycji, więc aby ją zmienić, należy go otworzyć i zamontować. Użyj następującego polecenia, aby to naprawić. W razie potrzeby można to zrobić w systemie na żywo.

user@zagyg:/$ sudo resize2fs /dev/ubuntu-vg/root
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/ubuntu-vg/root is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 13
The filesystem on /dev/ubuntu-vg/root is now 54266880 blocks long.

Podsumowując, Gparted nie obsługuje natywnie swojej operacji, ale jest to niezwykle przydatne narzędzie do zarządzania partycjami. Moim zdaniem jest nieco bardziej przydatny niż fdisk. Pomiędzy Gparted i DD mogłem zarządzać moimi partycjami, a następnie użyć narzędzi Ubuntu do aktualizacji z 12.04 LTS do 14.04 LTS.

Doc
źródło
Partycja rozruchowa nie musi być niezaszyfrowana. Nie mam osobnej partycji / boot, to tylko część moich głównych zaszyfrowanych rootfów. Grub może wystartować w takiej konfiguracji. II rozruch z mojej partycji 1 MiB EFI. Podczas gdy zmiana rozmiaru / rozruch wymaga mniej więcej tych kroków, nie trzeba wykonywać ich ręcznie. Możesz po prostu użyć KDE Partition Manager 3.0, aby wykonać wszystkie te kroki. Np. Wykonuję tutaj niektóre operacje na moich zaszyfrowanych rootfach z systemu, nawet nie używając live cd youtube.com/watch?v=FKCQ7pJN1vY Chociaż live cd jest konieczny do przeniesienia partycji Luks.
Andrius Štikonas