Powszechną praktyką jest dostarczanie sterowników jądra systemu Linux (obiektów jądra KO) do kodu źródłowego i budowanie i instalowanie ich na komputerze docelowym. Na przykład sterowniki wyświetlania NVIDIA i dodatkowe sterowniki Oracle VirtualBox są instalowane w ten sposób. Powszechne jest również otrzymywanie nowych wersji jądra (z odpowiednimi nagłówkami) poprzez aktualizację systemu. Wymaga to ponownego zbudowania i ponownego zainstalowania KO, w przeciwnym razie urządzenie przestanie działać po aktualizacji.
W naszym skrypcie startowym instalacji produktu chcemy dodać krok do wykonania i instalacji KO przy każdym starcie. Użytkownik może zrezygnować i musiałby ręcznie zbudować i zainstalować KO. Sterownik urządzenia komunikuje się z urządzeniem USB.
Szczegółowe informacje:
Rzeczywista ponowna kompilacja będzie miała miejsce tylko raz po zainstalowaniu nowego jądra, ponieważ make nie będzie próbował ponownie skompilować pliku, który już istnieje i jest aktualny.
Przebudowanie sterownika zajmuje około dwóch sekund, a milisekundy pominięcie kompilacji podczas normalnego rozruchu (nie po aktualizacji jądra)
W mało prawdopodobnym przypadku, gdy kompilacja się nie powiedzie, nie powinna zawieść systemu lub spowodować jego niestabilności. Jednak nasze urządzenie nie będzie działać.
Niektóre dystrybucje mogą zezwalać na rejestrowanie haków, wykonywanie działań na określonych zdarzeniach, takich jak aktualizacja jądra. Próbujemy jednak zaimplementować coś, co będzie działać na większości dystrybucji w jednolity sposób. Nasz instalator to skrypt + tar lub skrypt + rpm. Niestety dla tego wydania nie mamy przepustowości, aby przygotować pakiety natywne dla wszystkich dystrybucji (na przykład w stylu Debiana).
Pytania:
Czy to akceptowalne rozwiązanie? Jeśli nie, dlaczego?
Jakie są potencjalne zagrożenia związane z tym podejściem?
Jakie jest właściwe / preferowane miejsce do uruchomienia podczas uruchamiania? rc.local lub skrypt w init.d lub innym? Celem jest sprawienie, aby działał w większości dystrybucji przy użyciu tej samej metody (jeśli w ogóle jest to możliwe).