LINUX.ORG.RU

chroot продолжить выполнение sh


0

0

Нужно создать скрипт на shell, который выполнял бы свои действия,
делал chroot, продолжал работать внутри chroot,
далее выходил из chroot, снова продолжал работать.

Сейчас выполнение скрипта прерывается на команде chroot.
Пришлось скрипт разбить на две части: до chroot и внутри.

(Пытаюсь перепаковать deb-пакеты с LiveCD Ubuntu без установкм).



интересно, как он будет выходить из chroot(2)? на то это и chroot что из него не выйти.

ps: вместо описания задачи вы описываете частный метод. лучше скажите что нужно сделать в конечном итоге?

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

Есть LiveCD Ubuntu 6.10.
Обновить с него систему 6.06 нельзя,
можно только поставить систему с нуля.
Из-за лимитов не могу скачать Ubuntu-6.10-alternative.

На CD есть файл с сжатой файловой системой squahsfs.
Монтируем его как файловую систему и делаем
dpkg-repack ... внутри этого chroot.

WinLin
() автор топика

А в чем проблема? chroot NEWROOT [COMMAND...] Как только комманда chroot заканчивается - управление возвратится Вашему скрипту. Я дывным-давно так LFS собирал :].

sf ★★★
()
Ответ на: комментарий от WinLin

> На CD есть файл с сжатой файловой системой squahsfs. Монтируем его как файловую систему и делаем dpkg-repack ... внутри этого chroot.

ну если скрипта два как написано выше, то по-идее работать должно без проблем: один управляет сверху другой перепаковывает с chroot, почему бы и нет. откуда требование на один скрипт?

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от sf

Теперь работает, как нужно.
Только не могу выполнить:
chroot /tmp/squash cd /mnt | dpkg --get-selections ...
Не хочет переходить в каталог /mnt.
Без этой команды работает, но замусоривает каталоги.

*************************************************************
#!/bin/sh

apt-get install squashfs-tools dpkg-repack
sudo modprobe squashfs

rm -rf /tmp/squash
mkdir /tmp/squash

rm -rf /root/ubuntu_deb
mkdir /root/ubuntu_deb

mount /cdrom/casper/filesystem.squashfs /tmp/squash/ -o loop

mount -o bind /root/ubuntu_deb /tmp/squash/mnt
mount -o bind /tmp /tmp/squash/tmp
mount -o bind /usr/bin /tmp/squash/usr/local/bin

chroot /tmp/squash \
cd /mnt | \
dpkg --get-selections | \
grep -v "deinstall" | \
awk '{print $1}' | \
grep -v "^udev" | \
xargs dpkg-repack

umount -a

WinLin
() автор топика

mkdir /path/to/chroot/oldroot
cd /path/to/chroot
pivot_root . oldroot
#... do some stuff ...
cd oldroot
pivot_root . path/to/chroot

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