ODROID-U3 prawie własny Debian

Po zabawie „rozbudowanymi” obrazami systemów Android i XUbuntu przygotowywanych przez producenta płyty ODROID-U3 (które są zresztą z uwagi na budowę w 100% kompatybilne z modelem U2) przyszedł czas na przygotowanie podstawy pod system produkcyjny.

Do tego celu wybrałem wstępnie Debiana i ukochane Gentoo. Wcześniej określiłem systemy jako rozbudowane – nie chodzi tu w moim przypadku o Androida, bo to nie system na serwery a o XUbuntu, które świetnie nadaje się na desktopa a niekoniecznie na serwer. W tym przypadku nie potrzebuję środowiska graficznego, aplikacji biurowych i innych, które zabierają kolejne megabajty i uruchamiają niezliczone usługi. Oczywiście usługi można wyłączyć a aplikacje odinstalować, ale to wymaga czasu a śmieci i tak zostaną (taka moja upierdliwość ??) i trzeba znowu poświęcić czas na sprzątanie. Zdecydowałem się na Debiana, może z powodu, że trochę obawiałem się o trwałość dysku eMMC, który ma w końcu ograniczoną ilość cykli zapisu/odczytu a kompilacja systemu i aplikacji w Gentoo trochę miesza na dysku itp. niezależnie czy będzie to sama instalacja czy aktualizacja. Oczywiście można postawić Gentoo za pomocą pre-kompilowanych pakietów, lub budować takie pakiety samodzielnie na innym komputerze, ale pierwsza opcja zabiera radość posiadania systemu „zrobionego na miarę” a na realizację drugiego potrzeba dodatkowych zasobów i czasu. Kompromisem wydaje się użycie do roli systemu produkcyjnego właśnie Debiana.

Na wiki Odroid.us znalazłem kilka obrazów Debiana. Jest wersja z zainstalowanymi X’ami, oraz wersja bez środowiska graficznego tzw. „base”. Wersję z zintegrowanym środowiskiem graficznym odstawiam na bok, pobrałem więc i nagrałem obraz „base” na dysku eMMC. Start systemu bezproblemowy i Debian działa jak trzeba, ale… Bazowo wentylator kręci się na maksymalnych obrotach i nie znalazłem prostej metody, żeby przełączyć w tryb automatycznej regulacji. Możliwe, że przyszłe wersje obrazów będą działały – wymagana jest aktualizacja kernela, którą można zrobić na kilka sposobów, ale o tym kiedyś. Sam system OK, ale nie wiem dlaczego został przygotowany dość niechlujnie bo nie trudno znaleźć pozostałości po różnych aplikacjach włączając niezainstalowane X11 a katalog w „etc” pozostał… Wiem maruda jestem…
Na szybko pozostaje budowa własnego Debiana lub użycie dostępnego pliku „rootfs” – co zostanie opisane poniżej. Plik ten nie jest obrazem systemu a jedynie głównym drzewem plików systemu. Nie ma tam jądra ani bootloadera koniecznego do właściwego startu systemu.

UWAGA: Niewłaściwe użycie niektórych poleceń może spowodować trwałe i nieodwracalne szkody na sprzęcie, systemie i psychice 😉 Czytaj i myśl stosując podane tu metody postępowania.

 

UPDATE: Aktualnie do budowy „czystego” Debiana na ODROID-U3 używam skryptu, który napisałem i udostępniłem w poście: Skrypt do budowy Debiana dla ODROID.

Aby uzyskać funkcjonalny system zdolny do wystartowania i pracy należy zacząć od podstawy. Ja do tego celu użyłem przygotowanego przez ekipę Hardkernel obrazu XUbuntu, który nagrywamy na dysk eMMC lub kartę SD. Dzięki tej operacji mamy na nośniku bootloadera i wersję jądra zgodną z naszą płytką. Do wykonania dalszych operacji potrzebujemy komputera z zainstalowaną dowolną dystrybucją linuksa, w ostateczności może też być jakakolwiek dystrybucja urchamiana z płyty lub pendrive. Wszystkie polecenia wykonujemy z uprawnieniami użytkownika root. Podłączamy wcześniej nagrany nośnik startowy (karta microSD lub eMMC przy pomocy adaptera) ODROIDa do komputera z uruchomionym linuksem. Załóżmy, że nasz nośnik został wykryty w systemie jako /dev/sdb. Montujemy drugą partycję (na której znajduje się główne drzewo plików systemu) poleceniami

EDIT : Przed usunięciem zawartości partycji wykonujemy kopię katalogu /var/lib/modules zawierającego moduły jądra, które po rozpakowaniu rootfs przywracamy do drzewa w oryginalne miejsce.

Wcześniej upewniając się dwukrotnie, czy na pewno jesteśmy we właściwym katalogu (polecenie pwd) usuwamy zawartość poleceniem

Dla myślących na skróty: formatowanie ułatwi sprawę teraz, a później trzeba będzie robić poprawki dlatego, że formatowanie zmieni nam UUID partycji, który jest używany do identyfikacji partycji przez system w czasie startu. Wracając do tematu. Ściągamy z sieci zawierający rootfs i rozpakowujemy jego zawartość poleceniem

Po zakończeniu operacji odmontowujemy partycję

i mamy zrobiony system dla naszego ODROIDa. Montujemy tak przygotowany nośnik do naszego ODROIDa i  uruchamiamy płytkę. Do systemu logujemy się przez ssh lub adapter UART przy użyciu poświadczeń root/root (dla wersji niższej niż 7) lub root/odroid, w zależności jaką wersję rootfs będziemy wgrywać Po uruchomieniu płytki z tak przygotowanego nośnika system na 100% wymaga aktualizacji, wydajemy więc polecenia

a następnie

Przy użyciu tej metody mamy stosunkowo świeże jądro i nie ma konieczności jego aktualizacji. No i nasz wentylatorek działa już z regulacją obrotów.
Polecam wykonać jeszcze poniższe operacje:

Zmiana hasła użytkownika root (passwd), usunięcie lub zmiana hasła użytkowników: user lub/i odroid

Usunięcie o odtworzenie kluczy SSH:

Ustawienie zegara na właściwą strefę czasową poleceniem

Ja ustawiłem także locale na UTF8. Aby uzyskać taką możliwość potrzebujemy zainstalować lokalizacje poleceniem

a następnie uruchamiamy

gdzie wybieramy, które zestawy mają być dostępne i który ma być domyślny. Po ponownym zalogowaniu się do ssh konsola będzie działała w wybranym kodowaniu znaków.

Ponieważ przy każdym restarcie ODROID’a zmienia się MAC-Address interface sieciowego polecam jego ustawienie na stałe – na wartość aktualnie obecną w systemie. Pomocne może okazać się w tym przypadku polecenie:

Dzięki temu na naszym ODROID-U3 gościmy system praktycznie minimalny, bez zbędnych aplikacji. Teraz można przejść do instalacji niezbędnych pakietów.

Poniżej wynik polecenia dmesg po starcie systemu:

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *