Linux - dowiązania zamiast źródła
: 31 marca 2015, 20:57
Witam
Zajmuje się programowaniem systemów wbudowanych, a konkretnie jestem na początku przygody jeśli chodzi o linux embedded. Nie wiem jak poradzić sobie z następującym problemem i czy to w ogóle jest problem, bo może system robi coś automatycznie . Może przybliżę na szybko temat tym, którzy nie orientują się w systemach embedded. Generalnie Linux embedded to taki sam linux jak na naszych PC tylko, że jądro jest bardziej okrojone z programów, funkcji itd. Jeśli chcemy, aby system wystartował z karty SD należy na tej karcie umiescić binarke obrazu linuxa zImage, binarke boot loadera 2 poziomu np u-boot.bin itd i należy również umieść cały File System. Czyli katalogi etc, usr, lib , root w tych katalogach muszą się również znaleźć niezbędne programy, które mają działać na urządzeniu docelowym. Takim potrzebnym programem jest min. busybox. Jego instalacje przeprowadzam następująco
Pobieram ze WEB źródło -> uruchamiam make z opcja kros kompilacji (pod ARM) -> kopiuje zainstalowane narzędzia do docelowego systemu plików w innym miejscu na razie na PC.
Czyli wszystkie zainstalowane pliki busybox trafiają jakby do szkieletu nowego systemu. Problem polega na tym, że zainstalowany busybox w katalogach bin nie posiada programów tylko odnieśienia. Jak domyślam się to dlatego, że te programy istnieją już w systemie wieć system uznał po co jeszcze raz je tworzyć ja se walnie dowiązanie, i teraz już pewnie rozumiecie co się stanie jak przeniosę taki system plików na urządzenie docelowe. Takie coś nie może działać, bo w urządzeniu są dowiązania a nie programy tutaj listing katalogu bin który miałby się znalejsć w target. Zatem pytanie jak sprawić, że zainstalują się faktycznie programy, a nie dowiązania.
Jesttego oczywiście dwa razy więcej. Jednak zauważcie, że busybox jest programem źródłowym.
Dodam jeszcze, że taka sama sytuacja dotyczy modułów, bibliotek itd. Dotyczy również innych programów np doinstaluje serwer ssh to tworzy się dowiązanie a nie binarka.
Zajmuje się programowaniem systemów wbudowanych, a konkretnie jestem na początku przygody jeśli chodzi o linux embedded. Nie wiem jak poradzić sobie z następującym problemem i czy to w ogóle jest problem, bo może system robi coś automatycznie . Może przybliżę na szybko temat tym, którzy nie orientują się w systemach embedded. Generalnie Linux embedded to taki sam linux jak na naszych PC tylko, że jądro jest bardziej okrojone z programów, funkcji itd. Jeśli chcemy, aby system wystartował z karty SD należy na tej karcie umiescić binarke obrazu linuxa zImage, binarke boot loadera 2 poziomu np u-boot.bin itd i należy również umieść cały File System. Czyli katalogi etc, usr, lib , root w tych katalogach muszą się również znaleźć niezbędne programy, które mają działać na urządzeniu docelowym. Takim potrzebnym programem jest min. busybox. Jego instalacje przeprowadzam następująco
Pobieram ze WEB źródło -> uruchamiam make z opcja kros kompilacji (pod ARM) -> kopiuje zainstalowane narzędzia do docelowego systemu plików w innym miejscu na razie na PC.
Czyli wszystkie zainstalowane pliki busybox trafiają jakby do szkieletu nowego systemu. Problem polega na tym, że zainstalowany busybox w katalogach bin nie posiada programów tylko odnieśienia. Jak domyślam się to dlatego, że te programy istnieją już w systemie wieć system uznał po co jeszcze raz je tworzyć ja se walnie dowiązanie, i teraz już pewnie rozumiecie co się stanie jak przeniosę taki system plików na urządzenie docelowe. Takie coś nie może działać, bo w urządzeniu są dowiązania a nie programy tutaj listing katalogu bin który miałby się znalejsć w target. Zatem pytanie jak sprawić, że zainstalują się faktycznie programy, a nie dowiązania.
Kod: Zaznacz cały
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 ash -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 base64 -> busybox
-rwxrwxrwx 1 rafal rafal 941368 mar 31 11:36 busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 cat -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 catv -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 chattr -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 chgrp -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 chmod -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 chown -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 conspy -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 cp -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 cpio -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 cttyhack -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 date -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 dd -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 df -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 dmesg -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 dnsdomainname -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 dumpkmap -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 echo -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 ed -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 egrep -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 false -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 fatattr -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 fdflush -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 fgrep -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 fsync -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 getopt -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 grep -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 gunzip -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 gzip -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 hostname -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 hush -> busybox
lrwxrwxrwx 1 rafal rafal 7 mar 31 11:36 ionice -> busybox
Dodam jeszcze, że taka sama sytuacja dotyczy modułów, bibliotek itd. Dotyczy również innych programów np doinstaluje serwer ssh to tworzy się dowiązanie a nie binarka.