Cześć,
mam za zadanie stowrzyć minimalny kernel i system plików uruchaimiany w ram, ale na dobrą sprawę nawet nie wiem gdzie zacząć żeby to miało ręce i nogi. Niby jakiś kernel mam, ale system plików mnie przesta. Ktoś wskaże jakaś drogę? Coś próbuję zrobić przy pomocy busybox ale bez jakis rezultatów.
Poczytaj to na wstępie.
https://unix.stackexchange.com/questions/27309/how-do-i-have-linux-boot-with-a-rootfs-in-ram
Wersja "najmniejsza linia oporu":
Kernel + busybox skompilowany statycznie. Montujesz sobie virtual block device i robisz na nim system plików jaki tam potrzebujesz i jaki ma jądro wkompilowane, wrzucasz kernel i busyboxa plus pliki konfiguracyjne jeśli potrzebujesz. Jak chcesz to możesz skompresować wszystko nie licząc kernela do jednego pliku i ustawić jądro by to ładowało jako tzw. "świat". Jeśli opychasz to dalej klientom to musisz im zapewnić dostęp do źródeł tego co wykorzystałeś co jest na copyleft.
Myślę, że wszystko czego potrzebujesz znajdziesz w Linux From Scratch: http://www.linuxfromscratch.org/lfs/view/stable/
Nie napisałeś na jakiej architekturze to ma działać - ARM/Intel/MIPS/PowerPC lub coś innego? Ze swojej strony polecam buildroot-a - tam możesz sobie w "make menuconfig" wybrać opcje, które są potrzebne. Buildroot potrafi zbudować cross-toolchaina jeśli masz to zrobić na jakąś obcą architekturę. Buildroot może nie generuje minimalnego root fs-a ale można go poobcinać później.
Skoro x86 i kernel już masz to zainteresuj się initrd albo initramfs-em. Wrzuć tam okrojony do minimum root fs i tyle. A okrojony rootfs możesz zrobić z jakiejś dystrybucji Linuxa. Okrojony rootfs to np. katalogi /dev /etc /lib i /bin. Do stworzenia rootfs-a dla initramfs możesz użyć mkinitcpio.
Przyda się też polecenie ldd do sprawdzania zależności bibliotek i binarek. A z tym busybox-em to dobrze kombinujesz. Musisz go skompilować jako statyczną binarkę (opcja -static) - zrobić do niej linka o nazwie /init i to wrzucić do rootfs-a.
Dobra, zadanie udało mi rozwiązać. Ostatecznie system zmieści się na dyskietce i jeszcze zostanie trochę miejsca. Wszystko udało mi się zamknąć w 1103654 bajtach.