LINUX.ORG.RU

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


0

0

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

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

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


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


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

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

// wbr

klalafuda ★☆☆ ()
Ответ на: Re: chroot продолжить выполнение sh от klalafuda

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

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

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

WinLin ()

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

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

sf ★★★ ()
Ответ на: Re: chroot продолжить выполнение sh от WinLin

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

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

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

// wbr

klalafuda ★☆☆ ()
Ответ на: Re: chroot продолжить выполнение sh от sf

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

Теперь работает, как нужно.
Только не могу выполнить:
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 ()

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

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

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