Kiedy wszystko idzie źle, czyli wyższa szkoła jazdy.
Source : Xubuntu 12.04, precise-desktop-amd64.iso
Target : Samsung NC110
Próba zainstalowania Xubuntu 12.04 w wersji 64 bity na moim nowym netbooku zakończyła się fiaskiem.
Instalator z nieznanych przyczyn nie poradził sobie z partycjami na dysku i zawieszał się w trakcie instalacji.
Laptopy zawsze były oporne.
Co ciekawe system uruchamiał się bez problemu z bootowalnej pamięci USB.
Wszystko działało jak należy, więc było o co powalczyć.
Rozpoznanie.
Netbook który posiadam jest dostarczany z preinstalowanym systemem Windows 7 Starter.
Szkoda by było Wieszaka uszkodzić, bo producent nie dołączył CD z systemem, wszystko jest na dysku.
Szczególnie że swoją przygodę z najlepszym systemem jaki kiedykolwiek wynaleziono zakończyłem na XP.
Głupio jak się ludzie o coś pytają, a ja nie wiem.
Jest okazja się poduczyć.
Tak więc Windows zostaje.
Wszystko trzeba zacząć od ustalenia jakie partycje znajdują się na dysku.
Dobrym narzędziem jest dystrybucja GParted
http://gparted.sourceforge.net/livecd.php .
Jest ona zorientowana na takie właśnie zadania jak grzebanie w nieznanych dyskach.
Tutaj użyjemy jedynie programów dostępnych na Xubuntu Live.
Uruchamiamy system Xubuntu 12.04 z bootowalnej pamięci USB.
Może być konieczne wejście do BIOS komputera i ustawienie kolejności bootowania.
Pamięć USB musi być wtedy podłączona, bo BIOS Samsunga wyswietla tylko aktywne urządzenia.
Ponieważ w netbooku jest bez wątpienia jeden twardy dysk, to jest prawie pewne, że będzie to /dev/sda.
Użyjemy polecenia
Polecenia fdisk używasz na własną odpowiedzialność !
Przed użyciem przeczytaj manual (polecenie man fdisk).
Fdisk jest prostym narzędziem, ma raptem kilka funkcji i nietrudno go opanować.
Niestety nieumiejętne użycie może przynieść sporo szkód.
Program jest interaktywny, ma help i wyświetla podpowiedzi.
Co ważne, wszelkie zmiany są wprowadzane w podręcznej pamięci i dopiero na wyraźne żądanie zapisywane na dysk.
Polecenie <q> zamyka fdisk bez zapisania zmian.
Jeśli chcemy zmiany zapisać wychodzimy przez <w>.
Dobrze jest przedtem poleceniem <p> jeszcze raz sprawdzić co namieszaliśmy.
W netbooku Samsung NC110 jest zamontowany dysk o pojemności 250 GB. podzielony następująco :
1. sda1 100 MB - partycja rozruchowa Windows7 - nietykalna
2. sda2 40 GB - (u mnie akurat tyle ustawiłem przy recovery systemu. normalnie to chyba 100 GB) partycja systemowa Windows7 -nietykalna
3. sda3 180 GB - partycja rozszerzona.
4. sda5 - partycja logiczna na partycji rozszerzonej - windowsowe D:
5. sda4 20 GB - partycja Recovery systemu Windows7 - absolutnie nietykalna.
Jak widać instalator Windows nie pozostawił wielkiego pola manewru.
Jedynym rozsądnym rozwiązaniem jest usunięcie istniejącej logicznej partycji /dev/sda5 i założenie na jej miejscu nowej logicznej partycji też /dev/sda5, ale o rozmiarze powiedzmy 40 GB.
Pozostałe miejsce na partycji /dev/sda3 będzie można w przyszłości wykorzystać na założenie dalszych partycji logicznych /dev/sda6, /dev/sda7, itd.
Da się to zrobić zarówno z Linuksa jak i z Windowsa.
Tak więc w programie fdisk usuwamy partycję /dev/sda5 i zakładamy partycję /dev/sda5, ale jej wielkość podajemy jako +40G.
Po tej operacji dobrze jest zrestartować komputer, a przynajmniej wykonać
aby mieć pewność, że żaden program nie korzysta ze starej kopii MBR dysku.
Stare śmieci.
Wykonanie polecenia fdisk zmienia tylko MBR dysku.
W miejscu starych partycji pozostały dane i nawet niektóre programy potrafią sobie korzystać z tych nieistniejących formalnie partycji jak gdyby nigdy nic.
Trzeba więc posprzątać szykując miejsce na nowy system.
To polecenie zakłada na partycji /dev/sda5 nowy system plików typu ext4, o etykiecie "linux-nc110".
Etykieta jest opcjonalna i dowolna.
Pusto ...
Jeśli wszystko poszło dobrze, to mamy na netbooku linuksowy system plików.
System ten jest jednak pusty.
Z wielu powodów nie możemy skopiować uruchomionego systemu.
Przede wszystkim Linux używa plików systemowych, których zawartość zmienia się dynamicznie w zależności od stanu systemu i uruchomionych aplikacji.
Tak więc kopiować można tylko system nie uruchomiony, statyczny, będący w stanie przed uruchomieniem komputera.
Mamy taki system plików pod ręką.
Otóż wszelkie dystrybucje Live używają takiego systemu tylko do odczytu, w czasie pracy podmieniając pewne fragmenty pamięcią na której można zapisywać zmiany.
Nie ma sensu tego tu i teraz wyjaśniać, ważne że w uruchomionym Live Xubuntu 12.04 ten system plików jest zamontowany w katalogu /rofs.
Kopiujemy.
Najpierw należ zamontować docelowy system plików.
W Xubuntu 12.04 mamy następujące możliwości :
1. kliknąć ikonkę na pulpicie
2. polecenie partprobe zamontuje wszystko co się da.
3. tradycyjny mount
Ja z lenistwa piszę partprobe.
Docelowy system plików montuje się u mnie pod /media/linux-nc110.
Skopiowanie całego drzewa katalogów w niezmienionej postaci wcale nie jest takie proste.
Żeby uniknąć przykrych niespodzianek należy uzywać wyłącznie metody pewnej i sprawdzonej :
Cała magia zawarta jest w przełączniku -dpR , który wymusza skopiowanie wszystkiego i zachowanie tej samej struktury drzewa.
Inne metody potrafią popsuć linki a nawet się zapętlić.
Łazarzu wstań !
Skopiowany system plików jest absolutnie martwy i nieuruchamialny.
Nie da się go uruchomić ponieważ :
1. Program rozruchowy nie jest zainstalowany.
2. Brakuje pliku kernela.
3. Plik /etc/fstab jest wadliwy.
4. Nie ma żadnych użytkowników w systemie.
Najpierw można zrobić porządek z plikiem fstab.
U mnie zawartość pliku powinna wyglądać tak :
Kernel oczywiście gdzieś musi być jeśli mamy uruchomionego Linuksa.
I faktycznie wystarczy poszukać
Kod: Zaznacz cały
cp /cdrom/casper/vmlinuz /media/linux-nc110/boot/vmlinuz-3.2.0-8-generic
Teraz już można włamać się do nieuruchamialnego systemu i niepodzielnie nim zawładnąć.
Poniższą lekcję dedykuję specjalnie paranoikom bezpieczeństwa i miłośnikom polecenia sudo.
Kod: Zaznacz cały
sudo -i
mount /dev /media/linux-nc110/dev -o bind
mount /proc /media/linux-nc110/proc -o bind
mount /sys /media/linux-nc110/sys -o bind
mount /run /media/linux-nc110/run -o bind
chroot /media/linux-nc110
dd if=/dev/sda of=/mbr.img bs=512 count=1
passwd root
update-grub
grub-install /dev/sda
exit
laefpad /media/linux-nc110/boot/grub/grub.cfg
Pierwsze polecenia montują foldery z plikami systemowymi, aby były widoczne z nowego położenia.
Chroot montuje podany katalog jako katalog główny, czyli jakby przenosił nas do innego systemu.
Co ciekawe w tym nowym systemie lądujemy z uprawnieniami roota i w Ubuntu akurat, to możemy więcej niż administrator systemu.
Najpierw robimy kopię MBR na wszelki wypadek.
Polecenie passwd służy do ustawiania hasła, tutaj hasła użytkownika root.
Przy okazji umożliwia to zalogowanie na konto root.
Update-grub i grub-install jak można się domyślić odpowiadają za zainstalowanie programu rozruchowego z właściwą konfiguracją.
Po komendzie exit lądujemy tam skąd przyszliśmy, czyli na Live Xubuntu.
Wpisy w grub.cfg warto sprawdzić.
Co ciekawe u mnie grub zawsze wykrywa partycję recovery Windowsa, ale systemową już niekoniecznie.
U mnie najważniejsza część pliku wygląda tak :
Kod: Zaznacz cały
menuentry 'Ubuntu, with Linux 3.2.0-8-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set=root 71f0be85-236f-4b56-a3c9-42052af02ffe
linux /boot/vmlinuz-3.2.0-8-generic root=/dev/sda5 ro quiet splash vt.handoff=7
}
menuentry 'Ubuntu, with Linux 3.2.0-8-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set=root 71f0be85-236f-4b56-a3c9-42052af02ffe
echo 'Loading Linux 3.2.0-8-generic ...'
linux /boot/vmlinuz-3.2.0-8-generic root=/dev/sda5 ro recovery nomodeset
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
insmod part_msdos
insmod ext2
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set=root 71f0be85-236f-4b56-a3c9-42052af02ffe
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
insmod part_msdos
insmod ext2
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set=root 71f0be85-236f-4b56-a3c9-42052af02ffe
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 6A4415F84415C7A9
chainloader +1
}
menuentry "Windows Recovery Environment (loader) (on /dev/sda4)" --class windows --class os {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos4)'
search --no-floppy --fs-uuid --set=root C064F93464F92E32
drivemap -s (hd0) ${root}
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
Wynik operacji.
Zainstalowane Xubuntu działa prawidłowo.
Na razie po angielsku, ale i na to przyjdzie czas.
Windows uruchamia się z gruba bez oporów.
Podsumowanie.
Po pierwsze da się.
Wystarczy trochę wiedzy i podstawowe narzędzia systemu Linux.
Po drugie na Virtualboxie się tego nie nauczyłem.
Tylko obcowanie z realnym sprzętem daje potrzebną wiedzę.
Po trzecie nie ma żadnego bezpieczeństwa, gdy dajesz fizyczny dostęp do swojego komputera.
Szczególnie w Ubuntu, gdzie panuje poroniona paranoja nieużywania konta roota.
W ciągu kilku minut średnio doświadczony linuksowiec odblokuje Ci konto roota i ustawi ssh.
Będzie na twoim komputerze przez sieć, kiedy zechce, a Ty się zorientujesz przypadkiem, albo nigdy.
Od bezpieczeństwa są zasady, nawyki, kopie bezpieczeństwa i programy szyfrujące.
Nie sudo i zablokowane konto roota.
.