Jestem ciekawy, czy możliwe jest zainstalowanie samego jądra Linuxa, czy też trzeba użyć jednego ze smaków. Gdyby to było możliwe, jak byś to zrobił? Nie potrzebuję szczegółowego samouczka. Chcę tylko wiedzieć, jak można to zrobić koncepcyjnie. Nie jestem dobry w sprawach niskopoziomowych i chcę wiedzieć, w jaki sposób wprowadzasz system operacyjny do komputera. Wyobrażam sobie, że ma to coś wspólnego z MBR.
No i zauważyłem, że wiele odpowiedzi sugeruje pewną dystrybucję minimalnego Linuksa. Powinienem chyba powiedzieć, że nie zamierzam instalować Linuksa z minimalną kością. To pytanie jest czysto teoretyczne. Mimo to naprawdę doceniam wszystkie odpowiedzi i odniosę się do nich natychmiast, jeśli kiedykolwiek będę chciał zainstalować naprawdę spersonalizowanego Linuksa.
źródło
kernel
też nie miał żadnych podstawowychbash
możliwości. Standardowy interfejs użytkownika został dostarczony przez program powłokiCOMMAND.COM
. Najbliższym działaniem, w którym można uzyskać dostęp do samego jądra, jest cokolwiek użytecznego, to należy uruchomić system za pomocą parametru jądrainit=/bin/bash
(zakładając, że na dysku znajduje się minimalna liczba Linuksa). W odpowiedzi, jeśli masz tylko program ładujący i jądro, zatrzyma się bardzo szybko, gdy go nie znajdzieinit
.Odpowiedzi:
Możesz technicznie zainstalować tylko bootloader i samo jądro, ale jak tylko jądro się uruchomi, będzie narzekać na niemożność uruchomienia „init”, wtedy po prostu będzie tam siedzieć i nie będziesz mógł nic z tym zrobić.
BTW, jest to część bootloadera, który znajduje się w MBR. Jądro znajduje się gdzieś na zwykłym obszarze dysku. Program ładujący jest skonfigurowany tak, aby wiedzieć, gdzie to jest, aby mógł załadować jądro i wykonać je.
źródło
Nie sądzę, że rozumiesz dokładnie, o co pytasz, ale możesz rzucić okiem na projekt Linux From Scratch .
źródło
aptitude search '?essential'
) na Debianie lub Ubuntu i zrozum, co każdy z nich robi (jest to nieco więcej niż absolutne minimum).Jeśli pytasz, czy możesz po prostu zainstalować lub zaktualizować jądro „przez” istniejący system bez instalowania wielu innych programów?
Jądro Linux to plik binarny zwykle nazywany
vmlinuz-x.x.x-x-name
wboot
katalogu (który zwykle jest oddzielną małą partycją na początku dysku twardego), gdzie x to numer wersji. „nazwa” to po prostu wybrana nazwa jądra, którą można ustawić w czasie kompilacji, można jej użyć do określenia, jakiego rodzaju maszyny lub architektury jest jądro z jakiegokolwiek innego powodu.Jest ładowany w czasie rozruchu przez program ładujący,
GRUB
który zwykle jest wywoływany przez kod rozruchowy w MBR, który jest wywoływany przez BIOS ROM. Po załadowaniu nie jest „trzymany otwarty” ani specjalnie chroniony. Możesz więc zastąpić ten plik innym działającym jądrem. AleGRUB
ma fajną funkcję, która pozwala wybrać wiele jąder do rozruchu. Więc całkiem sprytnie jest dodać swoje dodatkowe jądro do tej listy, ale zachowaj oryginalne znane działające jądro na wypadek, gdyby coś poszło nie tak.Uważam, że prawie wszystkie dystrybucje tworzą „modułowe” jądro, w którym sterowniki urządzeń znajdują się w osobnych plikach. Dlatego większość jąder potrzebuje systemu plików zawierającego sterowniki dostępne dla niego podczas rozruchu i do tego właśnie służy „initrd” (początkowy dysk RAM) lub „initramfs”.
GRUB
załaduje jądro w miejscu w pamięci, a initrd w innym miejscu i przeskoczy do jądra, informując go, gdzie jest initrd, uruchamiając Linuksa.Sterowniki mogą być również „wbudowane” w jądro i dlatego są automatycznie ładowane i dostępne, gdy bootloader ładuje
vmlinuz
obraz. Jądra przeznaczone do pracy w różnych systemach (takich jak większość dystrybucji) zwykle minimalizują to, co jest wbudowane w jądro, ponieważ dostępny sprzęt zostanie przeskanowany w późniejszym etapie procesu rozruchu i załadowane zostaną tylko moduły reprezentujące obecny sprzęt.Istnieją narzędzia do modyfikowania i tworzenia initrds. Debian ma fajne narzędzia i myślę, że inne dystrybucje też.
Jeśli więc pobierzesz nowsze jądro z kernel.org i skompilujesz je, aby utworzyć nowy obraz binarny jądra, musisz utworzyć lub zaktualizować initrd ze sterownikami, które działają z tym jądrem. Stary initrd nie będzie działał, ponieważ sterowniki muszą pasować do uruchomionej wersji jądra.
Plik initrd ma nazwę
initrd.img-x.x.x.x-name
podobną do jądra i może być zastąpiony po rozruchu, podobnie jak jądro, a najlepsza praktyka wskazywałaby, że nie usuwasz znanego działającego initrd, dopóki nie dowiesz się, że możesz pomyślnie załadować się do nowego jądra + initrd.Mam nadzieję, że zapewnia to pewien kontekst.
Jeśli szukasz instalacji Linuksa „od podstaw”, w której nie ma zainstalowanych żadnych dodatkowych programów, moim ulubionym wyborem zawsze była instalacja
netinst
obrazu Debiana . W zasadzie masz tylko najbardziej podstawowe narzędzia potrzebne do uruchomienia konsoli tekstowej wiersza poleceń inano
jako edytora tekstu.źródło
Pojedyncze pliki wykonywalne rootf
System absolutnie minimalny uruchamia jeden
/init
program, jak wyjaśniłem w Single Application Linux | Super użytkownikMinimalny Linux Live
https://github.com/ivandavidov/minimal
Dla bardziej interesującego systemu interaktywnego jest to (głównie edukacyjny) mały skrypt, który:
ISO pozostawia Cię w minimalnej powłoce z busybox.
Dzięki QEMU możesz łatwo uruchomić system.
Zmodyfikowałem go, aby umożliwić uruchamianie go z katalogu źródłowego jądra: https://github.com/cirosantilli/runlinux
Stosowanie:
i pozostaniesz w oknie QEMU z nowym minimalnym systemem. Niesamowite.
Ponieważ jest mały, jest to dobra opcja, aby przeczytać źródło i zrozumieć, co się dzieje.
Testowane na Ubuntu 16.04.
Konstruktor
https://buildroot.org/
Duży zestaw skryptów Makefile, które zarządzają:
Minimalny przykład:
Ma nawet przepisy na budowę X11 od podstaw: Jak zainstalować X11 na własnym systemie Linux Buildroot?
Profesjonalne rzeczy.
Alpine Linux
https://github.com/gliderlabs/docker-alpine
Wbudowana dystrybucja z menedżerem pakietów, który oferuje wstępnie skompilowane pliki binarne ze strony internetowej.
Zobacz też
źródło
Chciałbym powtórzyć sugestię Shadura, że powinieneś zabrudzić sobie ręce Linuxa od podstaw.
Ponadto, coś podobnego, wypróbuj Pocket Linux .
źródło
Możliwe jest zainstalowanie jądra Linux bez zwykłych narzędzi przestrzeni użytkownika. Zwykle odbywa się to w systemach wbudowanych, takich jak routery. Zwykle jądro jest ładowane z pamięci ROM lub Flash i zostało dostosowane do danego urządzenia (zwykle z wymaganymi sterownikami wkompilowanymi w jądro, a nie ładowanymi jako moduły).
Musi istnieć co najmniej jeden program przestrzeni użytkownika, aby stać się procesem „init” (niekoniecznie wywoływanym
init
, ale uruchamianym przez jądro jako proces 1 i automatycznym elementem nadrzędnym dowolnych osieroconych procesów) - chyba że jądro zostało zmodyfikowane (raczej niż po prostu dostosowane), aby tego nie wymagać.Z pewnością nie jest konieczne posiadanie powłoki, aby mieć działające urządzenie oparte na systemie Linux, chociaż może to znacznie ułatwić programowanie!
źródło
Wiele dystrybucji zapewnia instalacje „podstawowe”. To jest to, czego chcesz. Zobacz ubuntu-minimal, debian net-install, archlinux (domyślnie jest to tylko rdzeń).
Inne odpowiedzi są przydatne, jeśli chcesz się uczyć, ale może tak nie być = p
źródło