Instalacja Linuksa na jednej partycji, na komputerze domowym


(roobal) #1

Czasami zdarza się, że na forum ktoś pyta czy możliwa jest instalacja Linuksa na jednej partycji. Teoretycznie, owszem, jest to możliwe, jednak w praktyce często stosuje się podział na 2 partycje - jedna na system, a druga na przestrzeń wymiany, tzw. partycja swap.

Często zdarza się, że ktoś chce współdzielić Linuksa z Windowsem i ma już zajęte partycje oraz jedną wolną dla nowego systemu. Oczywiście można by tu stworzyć partycję rozszerzoną i zainstalować system na partycjach logicznych ale co zrobić, jeśli już jest jedna partycja rozszerzona, a na niej kilka partycji logicznych już zajętych? Teoretycznie, można by stworzyć nowe partycje logiczne, natomiast w praktyce często robi się bałagan w układzie partycji, powoduje to, że później niedoświadczony użytkownik gubi się w takim podziale. Poza tym, skoro Windowsa czy FreeBSD można zainstalować na jednej partycji, to dlaczego nie Linuksa? Dlatego postanowiłem napisać, jak to zrobić, nie rezygnując ze swapa. Nie będę tu opisywał samego procesu instalacji, a jedynie podpowiem, jak się za to zabrać.

Jeśli na dysku jest już wydzielona partycja podstawowa dla Linuksa, to na niej zostanie zainstalowany system. Jeśli taka partycja jeszcze nie jest wydzielona, to zostanie to zrobione podczas instalacji systemu. Sam proces będzie polegał na zainstalowaniu systemu na jednej partycji montowanej w katalogu głównym oraz na stworzeniu partycji swap jako pliku wymiany (podobnie jak w Windowsie), na tejże partycji. Dlatego w przypadku takiej instalacji proponuję wydzielić dla systemu minimum 10GB wolnej przestrzeni dyskowej. Jeśli jesteś gotowy, to możesz rozpocząć instalację dowolnej dystrybucji. Ponieważ ja używam na co dzień Ubuntu, to na tym system będę wszystko prezentował.

Po rozpoczęciu instalacji, gdy dojdziesz już do momentu podziału dysku, wybierz ręczny/zaawansowany podział. Stwórz nową partycję lub jeśli już taką stworzyłeś wcześniej, np. pod Windowsem, to zmień jej ustawienia - przypisz tej partycji punkt montowania / i użyj systemu plików, np. Ext4. Zapisz zmiany i zaznacz do sformatowania. Gdy spróbujesz przejść do kolejnego kroku instalacji, system zapewne uprzedzi Cię, że nie stworzyłeś partycji na przestrzeń wymiany i możesz to naprawić lub kontynuować instalację bez tej partycji, instalator może też ostrzec przed ewentualnym niestabilnym działaniem systemu. Oczywiście należy zignorować tę wiadomość, przejść dalej i zainstalować system. Plik wymiany zostanie stworzony po instalacji systemu.

image.php?album_id=20&image_id=3355

Gdy system już się zainstalował i po drodze nie wystąpiły żadne błędy, należy go uruchomić. Jeśli nowy system uruchamia się bez problemu oraz nie pojawiły się żadne błędy w związku z brakiem partycji wymiany, to można zabrać się za tworzenie pliku wymiany. Dokonać tego można w bardzo szybki i prosty sposób, wykonując kilka poleceń w terminalu. Ponieważ potrzebne będą uprawnienia administracyjne, w tym celu należy zalogować się jako użytkownik root lub skorzystać z sudo, jeśli jest dostępne w twoim systemie.

W tym momencie należy zastanowić się ile potrzeba nam tak naprawdę przestrzeni wymiany. Uważam, że minimalnie powinno się stworzyć 512MB, a maksymalnie tyle ile mamy pamięci RAM (nie 2x ilość pamięci RAM, to już nie obowiązuje, szczególnie w przypadku dużych ilości pamięci fizycznej), chyba że ktoś zamierza ekstremalnie obciążać system (obróbka grafiki, edycja wideo itp.) to może stworzyć plik wymiany o wielkości dwukrotnej ilości pamięci fizycznej. Jeśli zamierzasz korzystać z hibernacji, to swap powinien być równy ilości pamięci fizycznej, czyli jeśli w komputerze zainstalowane jest 2GB RAM, to plik wymiany również powinien mieć 2GB, a dokładniej, to powinien mieć najlepiej 2048MB.

Żeby stworzyć plik wymiany, należy wydać takie polecenie

sudo dd if=/dev/zero of=/swap bs=1M count=2048

jest to dopiero fundament naszego przyszłego pliku wymiany. W tej chwili jest to surowy plik o wielkości 2GB, który wypadałoby sformatować jakimś systemem plików ale ponieważ to ma być przestrzeń wymiany, to trzeba go takim stworzyć, wydając kolejne polecenie. UWAGA! Jeśli chcesz stworzyć mniejszy lub większy plik wymiany, to zmień wartość count. Na przykład, jeśli chcesz stworzyć plik o wielkości 512MB, to wartość count należy zmienić na 512.

sudo mkswap /swap

Plik wymiany jest już stworzony i gotowy do użytku, trzeba go jeszcze najpierw aktywować, aby system mógł z niego korzystać

sudo swapon /swap

dla pewności można sprawdzić czy nasz swap działa.

free -m

Jeśli pojawi się coś podobnego

total used free shared buffers cached 

Mem: 2004 1028 975 0 48 640 

-/+ buffers/cache: 339 1664 

Swap: 2047 0 2047

i w pozycji Swap będą podobne wartości, to znaczy, że swap jest aktywny i działa. Jeśli widzisz tam natomiast same zera, to znaczy, że swap nie jest aktywny. Żeby system mógł korzystać z pliku wymiany po ponownym i każdym uruchomieniu komputera, należy go dodać do pliku /etc/fstab.

sudo su -c 'echo "/swap none swap sw 0 0" /etc/fstab'

Na tym można już zakończyć. Jeśli jednak interesuje Cię korzystanie z hibernacji, to musisz dokonać małej modyfikacji konfiguracji Gruba, dodając do jądra odpowiedni parametr. W tym celu należy edytować plik /etc/default/grub, żeby było szybciej, wykorzystam do tego edytor Sed

sudo su -c "sed 's/GRUB\_CMDLINE\_LINUX\=""\/GRUB\_CMDLINE\_LINUX\="resume=/swap"/g' /etc/default/grub /etc/default/grub.new mv -v /etc/default/grub.new /etc/default/grub"

Polecenie uruchamia edytor Sed, który dopisuje do linii GRUB_CMD_LINUX parametr resume z lokalizacją naszego pliku wymiany, żeby system wiedział skąd ma odtworzyć obraz zapisanej pamięci. Po wykonaniu powyższego polecenia, gdy zajrzysz do pliku /etc/default/grub, powinno to wyglądać tak:

GRUB_CMDLINE_LINUX="resume=/swap"

Pozostało już tylko zaktualizować konfigurację Gruba poleceniem

sudo update-grub2

oraz initrd poleceniem:

sudo update-initramfs -u

Jeśli korzystasz nadal ze starszej wersji Gruba, to wystarczy dodać parametr resume=/swap do linii kernel w menu.lst. Po ponownym uruchomieniu można już korzystać z hibernacji.

Ja sam stosuję taki plik wymiany zamiast osobnej partycji na swap, mój dysk podzieliłem akurat na dwie partycje - jedną na system, a drugą na katalog domowy. System zachowuje się stabilnie, hibernacja też działa i nie sprawia problemów. Praktycznie nie odczuwam żadnej różnicy w działaniu systemu, więc z czystym sumieniem mogę zaproponować taki sposób instalacji :slight_smile:


(Gabrielmichalski) #2

Wciąż, uparcie i wszędzie wypisujesz swoje subiektywne odczucia jako wzorzec dla każdej instalacji i zastosowania.

Odniosłeś się do współczesnych standardów, gdzie duża ilość pamięci RAM jest na porządku dziennym. Jeszcze lepiej wygląda sytuacja obecnie dostępnych pamięci dyskowych (HDD), gdzie pojemność liczona jest w TB, nie mniej jednak niż kilkaset GB dla typowego HDD.

Gdy korzysta się z hibernacji, cała zawartość pamięci (nie używa się kompresji) zapisywana jest na partycji lub pliko-partycji SWAP. Warto, by partycja/pliko-partycja była nieco większa niż zrzucany RAM.

  • Kiedyś - pojemność pamięci RAM była ograniczona - porównując do współczesnych standardów. System miał ograniczone zasoby, buforował mniej danych. Więcej nie mógł.

Dziś - pojemność pamięci RAM liczona jest w GB, a system może sobie w specyficznej sytuacji pozwolić na wydajniejsze i większe objętościowo buforowanie - i tak się dzieje.

Ustawienie SWAP na poziomie 2x RAM nie jest ani czymś szkodliwym, ani czymś niezbędnym, lecz wygodnie uniwersalnym.

Przywołam tutaj raz jeszcze dostępne obecnie zasoby współczesnych pamięci HDD i ich relatywnie niskie koszty zakupu.

Pojemność względna, pojemność bezwzględna, buforowanie danych pod kątem wydajności - przyrównaj to do kompilacji programów, gdzie ustawiasz poziom optymalizacji kodu - jeśli procesor nie będzie miał wystarczająco dużej, pośredniczącej pomiędzy rdzeniem a względnie wolną (vs. CACHE L1) pamięcią RAM, ultraszybkiej pamięci CACHE L1, to cała pętla zoptymalizowanego na max. kodu programu nie zmieści się w rzeczonym L1, wydajność programu nie wzrośnie.

Nie generalizuj, w specyficznych miejscach zaznacz wyraźnie, że jest to Twoja subiektywna ocena, Twoje subiektywne doświadczenie, nie zaś stwierdzenie faktu. To nie jest Twój jedyny, napisany w obecnej manierze post.

Piszesz dużo - pisz rzetelniej. Twoje wpisy będą dużo wartościowsze.