LINUX.ORG.RU

слинковать статически busybox с uclibc


0

1

Всем привет,

Понимаю, что вопрос тупой. Но все вопросы тупые, когда на них уже знаешь ответ. Задачка у меня простая: собираю initramfs с утилитками от busybox. Тулчейн собирал с Buildroot и лежит он у меня в /home/Developer/Toolchain/arm-toolchain. Busybox собираю примерно следующим образом:

busybox_vers=1.19.3 initramfs_rootfs_path=$(pwd)/rootfs

buildBusyBox() { make -C busybox-$busybox_vers clean make -j2 -C busybox-$busybox_vers make -C busybox-$busybox_vers CONFIG_PREFIX=$initramfs_rootfs_path install }

Initramfs отваливается каждый раз с «Kernel panic - not syncing: Attempted to kill init!» Подозрение на то, что я не правильно собрал busybox и точнее, что uclibc надо бы линковать статично. Но как это делается? Гыгль даёт 1000 ответов, не могу найти мой правильный.

Всем спасибо, velik


1) Покажи список файлов в rootfs

2) Проверь, что бинарники, собранные статически, работают

3) Есть опция: Build BusyBox as a static binary (no shared libs) (STATIC) [N/y/?] (NEW) n

Угадай, что она делает.

Rzhepish
()
Ответ на: комментарий от Rzhepish

1) Покажи список файлов в rootfs

Только те директории, в которых что-то есть. Остальные пусты:

velik@laptop:/home/Developer/LiveSd/rootfs$ ls -l
insgesamt 40
drwxr-xr-x 2 velik velik 4096 2011-12-01 08:54 bin
drwxrwxrwx 2 velik velik 4096 2011-12-01 08:54 dev
drwxrwxrwx 2 velik velik 4096 2011-12-01 08:54 etc
-rwxr-xr-x 1 velik velik  806 2011-12-01 08:54 init
drwxrwxrwx 2 velik velik 4096 2011-12-01 08:54 mmc
drwxrwxrwx 2 velik velik 4096 2011-12-01 08:54 proc
drwxr-xr-x 2 velik velik 4096 2011-12-01 08:54 sbin
drwxrwxrwx 2 velik velik 4096 2011-12-01 08:54 sys
drwxrwxrwx 2 velik velik 4096 2011-12-01 08:54 sysroot
drwxr-xr-x 3 velik velik 4096 2011-12-01 08:54 usr
velik@laptop:/home/Developer/LiveSd/rootfs$ cd bin 
velik@laptop:/home/Developer/LiveSd/rootfs/bin$ ls -l
insgesamt 132
-rwxr-xr-x 1 velik velik 132564 2011-12-01 08:54 busybox
lrwxrwxrwx 1 velik velik      7 2011-12-01 08:54 hush -> busybox
lrwxrwxrwx 1 velik velik      7 2011-12-01 08:54 ls -> busybox
lrwxrwxrwx 1 velik velik      7 2011-12-01 08:54 mkdir -> busybox
lrwxrwxrwx 1 velik velik      7 2011-12-01 08:54 mount -> busybox
lrwxrwxrwx 1 velik velik      7 2011-12-01 08:54 sh -> busybox
lrwxrwxrwx 1 velik velik      7 2011-12-01 08:54 umount -> busybox
velik@laptop:/home/Developer/LiveSd/rootfs/bin$ cd ../dev                                                                                                                     
velik@laptop:/home/Developer/LiveSd/rootfs/dev$ ls -l                                                                                                                         
insgesamt 0                                                                                                                                                                    
crw-rw---- 1 root vboxusers 5,  1 2011-12-01 08:11 console                                                                                                                     
crw-rw-rw- 1 root vboxusers 1,  3 2011-12-01 08:11 null                                                                                                                        
crw-rw-rw- 1 root tty       5,  0 2011-12-01 08:48 tty                                                                                                                         
crw-rw---- 1 root dialout   4, 64 2011-12-01 08:11 ttyS0                                                                                                                       
velik@laptop:/home/Developer/LiveSd/rootfs/dev$ cd ../sbin/                                                                                                                   
velik@laptop:/home/Developer/LiveSd/rootfs/sbin$ ls -l                                                                                                                        
insgesamt 0                                                                                                                                                                    
lrwxrwxrwx 1 velik velik 14 2011-12-01 08:54 depmod -> ../bin/busybox                                                                                                          
lrwxrwxrwx 1 velik velik 14 2011-12-01 08:54 insmod -> ../bin/busybox                                                                                                          
lrwxrwxrwx 1 velik velik 14 2011-12-01 08:54 losetup -> ../bin/busybox                                                                                                         
lrwxrwxrwx 1 velik velik 14 2011-12-01 08:54 lsmod -> ../bin/busybox                                                                                                           
lrwxrwxrwx 1 velik velik 14 2011-12-01 08:54 mdev -> ../bin/busybox                                                                                                            
lrwxrwxrwx 1 velik velik 14 2011-12-01 08:54 modprobe -> ../bin/busybox                                                                                                        
lrwxrwxrwx 1 velik velik 14 2011-12-01 08:54 rmmod -> ../bin/busybox                                                                                                           
lrwxrwxrwx 1 velik velik 14 2011-12-01 08:54 switch_root -> ../bin/busybox                                                                                                     
velik@laptop:/home/Developer/LiveSd/rootfs/sbin$ cd ../usr/bin/                                                                                                               
velik@laptop:/home/Developer/LiveSd/rootfs/usr/bin$ ls -l                                                                                                                     
insgesamt 0                                                                                                                                                                    
lrwxrwxrwx 1 velik velik 17 2011-12-01 08:54 groups -> ../../bin/busybox 

Инит скрипт в корне пока весьма примитивен:

#!/bin/sh
export PATH=/bin:/usr/bin:/sbin:/usr/sbin
mdev -s
echo "Falling back to rescue shell..."
exec sh

2) Проверь, что бинарники, собранные статически, работают

Тут не так просто - собирается под АРМ. Но с этим же тулчейном собираю другие проэкты - работают без проблем

3) Есть опция: Build BusyBox as a static binary (no shared libs) (STATIC) [N/y/?] (NEW) n

Спасибо, про неё не знал.

Вот черт. У меня она = y, значит он таки слинковался статически.

Че-та я пока не понимаю, с какой стороны браться...

velikS
() автор топика
Ответ на: комментарий от velikS

> > 2) Проверь, что бинарники, собранные статически, работают

Тут не так просто - собирается под АРМ.

Собери что-нить вроде хелоу-ворлд статически, при загрузке ядра укажи этот бинарник вместо init. Если это не заработает — значит busybox то же нерабочий.

Rzhepish
()
Ответ на: комментарий от Rzhepish

Не, я подумал тут эту rootfs запаковать в squash файл, его подмонтировать на рабочей плате как лупбэк и попробовать сделать chroot и exec его инит скрипта. Т.е., типа, всё то же, что делает кернел, когда я засовываю это дело в initramfs. Ток на это надо немного времени. Но тогда по крайней мере буду уверен, что этот мини rootfs для initramfs работает. Спасибо за идею..

velikS
() автор топика
Ответ на: комментарий от velikS

qemu-system-arm/gxemul — базовые вещи можно потестировать и в них. Возможно придётся пересобрать ядро, но это не долго.

Rzhepish
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.