LinuxForum.Fans
Тема

Как узнать какой бинарник(и) работают при выполнении команды "mount -L

Автор: trscod 6 сообщений 1913 просмотров
#61363

Есть задача - чтобы init скрипт из initrd смог исполнить монтирование по метке тома. По имени тома он это делает прекрасно, по метке не хочет. Хочу выяснить какие бинарники и либы работают на mount -L и добавить их в initrd.
То есть, я хочу, запустив команду "mount -L", как-то узнать какие программы - бинарные файлы из /bin , /sbin и /lib работают, то есть осуществляют само монтирование. Как это сделать?
Заранее спасибо за любую "обходную" идею.

#61370

Возможно, я не понял ваш вопрос. Вы хотите узнать, какие библиотеки mount использует при вызове?
Тогда так:
[console]
#ldd `which mount` | egrep -o '[^/]lib[a-zA-Z]+\.so\..'
libblkid.so.1
libuuid.so.1
libc.so.6
[/console]

#61389

Вы правильно поняли.
# ldd /bin/mount
linux-gate.so.1 => (0xb7749000)
libblkid.so.1 => /lib/libblkid.so.1 (0xb772c000)
libuuid.so.1 => /lib/libuuid.so.1 (0xb7727000)
libc.so.6 => /lib/libc.so.6 (0xb75df000)
/lib/ld-linux.so.2 (0xb774a000)
Эти либы присутствуют в каталоге /lib initramfs. Почему не хочет монтировать по label? Говорит не найден партишен.
Интересно, libuuid.so.1 -это либа, позволяющая монтировать по uuid?

#61395

Покажите структуру вашего initrd, т. е. что в нём есть.
Попробуйте сделать chroot в создаваемый initrd, команда mount работает с нужным вам функционалом?

#61438

ls
bin dev etc lib linuxrc loopfs mnt proc sda1 squash sysroot temp

ls bin
cat chroot cp gzip mkdir mount pivot_root ps sh tar umount

ls dev
console loop0 null sda sda1 sda2 sda3 sda4 sda5 tty tty0

ls lib
ld-linux.so.2 libacl.so.1 libattr.so.1 libblkid.so.1 libc.so.6 libdl.so.2 libncurses.so.5 libproc.so libpthread.so.0 librt.so.1 libuuid.so.1

Под chroot'ом все работает. Правда, я традиционно подмонтировал /dev и /proc.

ага, я, кажется, понял для чего нужны ссылки:
ls /dev/disk/by-label/
vr1 vr2 vr3 vr4

в нормально загруженной системе они есть.

Наверное, эти ссылки создаются UDEV'ом
Похоже, нужно добавить udev в initrd.
Как быть, если не хочется связываться с бизибокс?

#61821

Спасибо. Busybox оказался более разумным средством, а монтировать пришлось так:
mount $(findfs LABEL=label) /mnt

Войдите или зарегистрируйтесь, чтобы ответить.