Najlepszy Tryb Usuwania Nieskompresowanego Jądra

Oto prawdopodobnie kilka prostych metod, które mogą również pomóc rozwiązać problem z nieskompresowanym jądrem.

Tagi to zbiór odpowiedzi na określone aspekty dotyczące komponentu. Ta lista jest przeznaczona dla tego programu ładującego przed załadowaniem jądra. Program ładujący przechowuje je jako informacje kontaktowe 0x100, a także przesyła je do jądra za pośrednictwem manifestu r2.

Czytanie wspaniałego nieskompresowanego obrazu jądra z pamięci historycznej jest generalnie dłuższe, ale czas jest udokumentowany, ponieważ nie jest wymagana dekompresja.

Niezależnie od tego, czy nieskompresowane jądro liczy się jako prawdziwe zwycięstwo pod względem butów, czy też nie, czas, jaki to zajmie, będzie zależał od tego, jak szybko odczytasz z danej kopii zapasowej przestrzeni dyskowej i jak szybko możesz uczyć się z podana pamięć zapasowa. całą prędkość procesora (ponieważ znacznie szybszy procesor zajmuje mniej czasu bezpośrednio na dekompresję). Tak więc przy szybkim produkcie i wolnej pamięci w tle kompresja również może przynieść korzyści, a przy bajecznie wolnym procesorze i szybkim, dobrym pamięci RAM w tle, kompresja danych może być całkowitą stratą.

Następna najlepsza strategia polega na empirycznym ustaleniu, czy czasami byłoby lepiej dla nowego systemu, aby można było mieć nieskompresowane jądro, znane jako jądro skompresowane.

nieskompresowane jądro

Uwaga: dobrym przypadkiem jest oczywiście sytuacja, w której można bardzo dobrze użyć DMA do załadowania złożonego jądra na kawałki, rozpakowując w ten sposób poprzedni utwór podczas ładowania następnego utworu .

Jestem początkującym, jeśli chcesz mieć łuk i naprawdę się nim cieszyć. Niedawno zacząłem poprawiać wysiłki związane z uruchomieniem i razem z tym zacząłem budować moje ekskluzywne jądro. Teraz chcę wypróbować nowy, świetny nieskompresowany obraz jądra. Dokumentacja po tym jest dość zwięzła, ale myślę o odpowiednich sugestiach Kconfig, które znalazłem. Problem polega na tym, że są one prawie zawsze ignorowane w czasie kompilacji i chcę zapytać, jakiej metody kompresji jądra potrzebuję, ponieważ rozpakowywanie nie dotyczy określonej opcji.

CONFIG_HAVE_KERNEL_GZIP oznacza nCONFIG_HAVE_KERNEL_BZIP2 = nCONFIG_HAVE_KERNEL_LZMA = nCONFIG_HAVE_KERNEL_XZ implikuje nCONFIG_HAVE_KERNEL_LZO = nCONFIG_HAVE_KERNEL_LZ4 = nCONFIG_HAVE_KERNEL_UNCOMPRESSED jest równy miećCONFIG_KERNEL_UNCOMPRESSED = y

Dlaczego zdecydowanie jądro Linuksa jest skompresowane?

Czas potrzebny na dekompresję procesora jest krótszy niż czas potrzebny na faktyczne odczytanie systemu we/wy. Z tego powodu chcieli skrócić czas wdrażania. , Włączniki świateł do jazdy samochodem od czterech lat historycznie. Skompresowane jądro Linuksa połączone ze starym jądrem mieści się na jednym małym, skomplikowanym dysku.

Używam Arch Build System-Build dla mojego jądra (najnowsza wersja 5.5).

To jest krótki wpis na blogu – podzielę się moim sposobem ładowania nieskompresowanych obrazów Linuksa, jąder popcornu podczas testowania między wersjami kompresji jądra, a jedna z tych opcji nie zapewnia kompresji danych. Wschód

nieskompresowane jądro

Pobranie nieskompresowanego obrazu jądra wykonuje pracę pożyteczną. Chociaż obraz jądra jest zwykle droższy i trwa dłużej przy zapisywaniu z pamięci do pamięci RAM, tego typu obrazy jądra nie muszą już być dekompresowane, rozpakowywane i ładowane do pamięci RAM. Jest to niezwykle przydatne w przypadku oprogramowania z bardzo dużym procesorem lub może bardzo małą pamięcią RAM w przypadku skompresowanych i nieskompresowanych obrazów w czasie sneakersów. Typowym przypadkiem jest umożliwienie im uruchamiania procesorów napisanych z emulowanymi układami FPGA podczas projektowania procesora, który obejmuje końcowy układ krzemowy. Na przykład widziałem układ Cortex A15 działający z częstotliwością 11 MHz podczas połączenia Linaro Q2.11 w Budapeszcie. Przy różnej częstotliwości taktowania ładowanie nieskompresowanego stylu jądra oszczędza wiele minut czasu trunk, zmniejszając liczbę zdarzeń związanych z tworzeniem i testowaniem. Zwróć uwagę, że zapisywanie zdjęcia jądra do pamięci RAM za pomocą tych emulatorów narzędzi jest niedrogie, ponieważ jest ono konfigurowane przez cały emulator z głównego pliku określonego przez użytkownika przed emulacją konkretnego systemu.

Co to jest znaczący plik bzImage?

obraz bz. bzImage to załadowany obraz jądra utworzony za pomocą en bzImage podczas kompilacji jądra. Jest prawie na pewno ważne, aby zauważyć, że bzImage bez wątpienia nie jest skompresowany z bzip2 !! Telefon bz w bzImage jest fałszywy !! Okazuje się, kiedy “Big Zimage”.

Tworzenie obrazu jądra o niskim lub nieskompresowanym na ARM jest uważane za łatwe i tylko wtedy, gdy zauważysz, gdzie nieskompresowany obraz jest połączony z tym, co robić! Dla osób, które nigdy wcześniej tego nie robiły, udostępniam kilka krótkich instrukcji poniżej.

Aby wygenerować nieskompresowany obraz jądra, po prostu postępuj zgodnie ze standardowymi lekcjami make . Wymaganym plikiem jest bardzo często arch / arm / boot na obraz .

W zależności od używanego bootloadera może to być wystarczająca ilość. Jeśli jednak używasz U-Boota, będziesz musiał umieścić taki obraz z powrotem w kontenerze uImage , aby U-Boot pamiętał o szczegółach, takich jak rozmiar w odniesieniu do obrazu i jego rzeczywistych raportów . punktem wyjścia jest to, czy koncepcja jest uważana za skompresowaną, czy nie… Problem polega na tym, że najprawdopodobniej nie będziesz już uruchamiać create uImage w celu utworzenia tego kontenera. Dzieje się tak, ponieważ ARM w Linuksie rzeczywiście nie ma opcji konfiguracyjnej umożliwiającej zapisanie dowolnego typu nieskompresowanego jądra, a zatem katalog uImage będzie z konieczności zawierać jądro skondensowane.

Czy uImage jest skompresowany?

Jaka jest między nimi różnica? Obraz: ogólny plik binarny jądra systemu Linux. zImage: Wyłącznie skompresowana, samorozpakowująca się wersja obrazu jądra systemu Linux. uImage: Każdy kompletny obraz, który ma pokrycie u-boot (instalowane przez narzędzie mkimage), który często zawiera typ funkcji operacyjnej i dodatkowo zawiera informacje o niektórych programach ładujących.

W związku z tym należy wprowadzić uImage mkimage ręcznie. Aby to zrobić bez konieczności odgadywania poprawnych problemów z mkimage , polecam połączenie make UImage v = tylko jeden raz:

$ make V = 8 uObraz… Jądro: łuk / ramię i ramię / but / zImage gotowy /bin/bash/home/mike/linux/scripts/mkuboot.sh -A Arm -O Linux -T Kernel -C -a Brak 0x80008000 -elizabeth 0x80008000 -n ‘Linux-3.3.0-rc6-00164-g4f262ac’ – g łuk dla każdego ramienia / buta / uImageŁuk na ramię / boot / z Nazwa obrazu: Linux-3.3.0-rc6-00164-g4f262acUtworzono: Ch , 08 marzec 13:54:00 2012Typ obrazu: obraz jądra Linux ARM (nieskompresowany)Rozmiar danych: 3351272 bajtów idzie do 3272,73 kb = 3,20 informacje: mb80008000. obciążeniePunkt wejścia: 80008000 Arch / ramię / boot kontra uImage jest gotowy

Nie zdziw się, gdy powyższa wiadomość mówi, że to jądro nie jest skompresowane (odpowiednik dla -C none na konkretnym rynku). Jeśli powiemy U-Bootowi, że ten obraz jest już skompresowany, wszystko prawdopodobnie zajmie się rozpakowaniem i wypłatą do pamięci RAM przed załadowaniem najważniejszego obrazu jądra.

Teraz, gdy już wiesz, że mkimage kontroluje wszystko, co powinieneś uruchomić. Po prostu uruchom to po kolei polecenie w folderze Image zamiast zImage (możesz natychmiast zastąpić mkuboot.sh mkimage ):

$ mkimage -A Zakres -O Linux -T Kernel -C Nie masz -rzeczywiste 0x80008000 -e -n 0x80008000 ‘Linux-3.3.0-rc6-00164-g4f262ac’ -deborah arch / arm / boot Nazwa obrazu: łuk / ręka – ładowanie / uImageObraz Linux-3.3.0-rc6-00164-g4f262acUtworzono: czw, 2007 marzec 14:02:27 2012Typ obrazu: obraz jądra Linux ARM (nieskompresowany)Rozmiar danych: 6 958 068 bajtów to 6 794,99 KB oznacza 6,64 adres e-mail: MB80008000. obciążeniePunkt wejścia: 80008000

Uncompressed Kernel
Unkomprimierter Kernel
Neszhatoe Yadro
Noyau Non Compresse
Kernel Descompactado
압축되지 않은 커널
Ongecomprimeerde Kernel
Kernel Sin Comprimir
Okomprimerad Karna
Kernel Non Compresso