lkde / edu

Educational repository for all sorts of experiments
2 stars 0 forks source link

How to make aufs-based chroot (for KDE3 devel) #10

Open midenok opened 10 years ago

midenok commented 10 years ago
  1. Install prerequisites: aufs-tools and scipts from here (get them with git clone to correctly import symlink) To check, if aufs is supported by your kernel use these commands:
root:~# modprobe aufs
root:~# lsmod|grep aufs
aufs                  182094  0
  1. Create /opt/jail-trees, put there create-tree.sh
  2. Create /opt/jail, put there mount.sh and symlink to it umount.sh
  3. Run from inside /opt/jail-trees (as root):
./create-tree.sh kde3
rm -rf ./kde3/home
  1. Run from inside /opt/jail (as root):
./mount.sh kde3
  1. Fix any errors with mount/unmount, so the script will run smoothly without any messages. Check results with mount command.
  2. Hooray, we have working jail inside /opt/jail/kde3! Use it with chroot or more sophisticated schroot.
    For chroot run: chroot /opt/jail/kde3 and add into /etc/jailrc:
PS1={kde3}$PS1

then add into .bashrc:

[ -f /etc/jailrc ] && . /etc/jailrc
midenok commented 10 years ago

[20:20:06] Екатерина: Привет, у меня возникли проблемы с chroot. Делаю по wiki на git'e и на 5-ом пункте (запуск mount.sh) возникает вот такое http://pastebin.com/KUf69NUy . Подскажи, пожалуйста, что делать.

[00:31:33] lyosha: привет! я думаю, что у тебя нет отдельной fs для /usr, /var, /home как у меня. для этого случая я не тестировал. надо просто убрать их из обработки (он не может накладывать одну и ту же fs дважды)

Оказалось: /opt и / были в одном дереве. Пролечилось переносом /opt в /home (т.к. /home был отдельным деревом).

midenok commented 10 years ago

Женя, как дела? Всё получается? Катя помогла?

Катя, дай пожалуйста мне модифицированный скрипт mount.sh. Я его закоммичу себе в бранч, потом буду делать универсальную версию.

kei91 commented 10 years ago

mount.sh

BadEugene commented 10 years ago

Катя помогла, но ошибки во время исполнения mount.sh остались, попозже выложу подробное описание действий.

midenok commented 10 years ago

Спасибо!

BadEugene commented 10 years ago

Значит так: 1 Внес запись /home/opt /opt bind bind 0 0 в fstab 2 Перенес все из /opt в /home/opt 3 Перезагрузился 4 Создал описанную в руководстве структуру, заменил mount.sh 5 Вывод modprobe:

     linux-dgy4:/home/opt # modprobe aufs
     linux-dgy4:/home/opt # lsmod|grep aufs
     aufs                  330129  0 

6 Запустил

./create-tree.sh kde3
rm -rf ./kde3/home

7 Результат выполнения mount.sh

linux-dgy4:/home/opt/jail # ./mount.sh kde3
mount: mount point /opt/jail/kde3/var/cache/apt/archives does not exist
mount --bind /var/cache/apt/archives /opt/jail/kde3/var/cache/apt/archives

Дома результат был другой. была та большая ошибка как в начале у Кати. На этом компе, я так понимаю осталось разобраться с /opt/jail/kde3/var/cache/apt/archives

midenok commented 10 years ago

Поскольку у тебя недебиан, исключи /opt/jail/kde3/var/cache/apt/archives из скрипта.

BadEugene commented 10 years ago

Исключил, от chroot-ился в kde3 качаю зависимости kdelibs3 и kdebase3

midenok commented 10 years ago

Гуд!

BadEugene commented 10 years ago

then add into .bashrc:

[ -f /etc/jailrc ] && . /etc/jailrc

В какой .bashrc добавлять? Их несколько в разных каталогах

Самоответ: Добавлять в /home/<username>. Правда почему работает для рута, непонятно, вроде же у рута свой bashrc, но это наверное не важно

midenok commented 10 years ago

/root маунтится наслоением (aufs) /home маунтится биндингом (bind)

Поэтому /home один и тот же для jail и для system. Если в jail изменить /home/user/.bashrc, то он изменится и в system. /etc маунтится наслоением, поэтому в system /etc/jailrc будет отсутствовать.