Ось деякі ресурси:
"Зміна кореня" або "хротування" - це метод збільшення масштабу на частині вашої файлової системи, так що, наприклад, /path
буде посилатися на те, що раніше було доступне на /mnt/path
. "Корінь" у виразі "chroot" відноситься до кореневої файлової системи /
, а не до кореневого користувача. (Хоча, як правило, вам знадобляться користувацькі привілеї для кореневого користування.)
Підготовка
Усі кроки в цьому посібнику повинні бути виконані як користувач root.
Ми припускаємо, що ваш жорсткий диск знаходиться в / dev / sda1, а його тип файлу - ext3. Якщо ви не знаєте розташування та тип файлу свого диска, прочитайте вихідний файл fdisk -l
.
Будьте впевнені, що архітектури системи, в яку ви завантажилися (наприклад, 32-бітний LiveCD) та системи, в яку ви хочете ввести (наприклад, це 32-бітна установка на вашому жорсткому диску), відповідають. Ви можете визначити архітектуру, яку ви завантажили за допомогою uname -m
.
Переконайтесь, що завантажені будь-які модулі ядра.
Налаштуйте свою мережу, якщо вона вам потрібна (наприклад, для встановлення оновлених пакетів).
Ініціалізуйте свій розділ swap, якщо це необхідно (наприклад, swapon /dev/sda3
).
Виконання хроту
cd /
mount -t ext3 /dev/sda1 /mnt
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
Якщо ваш /boot
каталог знаходиться на іншому розділі, ніж ваш /
, і ви хочете маніпулювати файлами на ньому (наприклад, якщо ви будете працювати з GRUB, здійснюючи оновлення ядра тощо), вам також потрібно буде встановити цей розділ. Якщо це в / dev / sda2, а його тип файлу ext2, виконайте такі дії:
mount -t ext2 /dev/sda2 /mnt/boot
Аналогічно для будь-яких інших частин вашої файлової системи ( /var
, /usr
), які знаходяться на окремих розділах, але до яких вам потрібен доступ. Як правило, коли ви хронізуєте, щоб виправити щось, вам не знадобиться доступ до / додому, тому вам не потрібно це турбувати.
(Також можна встановити файлові системи після того, як ви поставились, але розумніше це зробити заздалегідь. Причина полягає в тому, що коли ви робите це після, зовнішнє середовище / ядро не буде знати про змонтовані файлові системи, тому якщо ви забудете Якщо вимкнути їх перед тим, як вийти з chroot, система не знатиме, як їх вимкнути, коли вона вимкнеться. Це може пошкодити ці файлові системи.)
Якщо ви налаштували свою мережу та хочете використовувати її в системі, що вбудовується, скопіюйте її /etc/resolv.conf
, щоб мати змогу вирішувати доменні імена:
cp -L /etc/resolv.conf /mnt/etc/resolv.conf
Тепер ви готові перейти до змонтованої файлової системи:
chroot /mnt /bin/bash
(Якщо це повертає помилку chroot: cannot run command '/bin/bash': Exec format error
, це зазвичай вказує на те, що ви завантажилися з однією архітектурою (наприклад, x86_32) і намагаєтеся перейти на іншу (наприклад, x86_64). Рішенням є використання LiveCD, який має ту ж архітектуру, що і система, яку ви хочете chroot в.)
На даний момент ви все ще працюєте з ядром, з яким ви завантажилися, але всі шляхи /path
будуть посилатися на те, що раніше було /mnt/path
.
Якщо ви щось робите з GRUB, вам потрібно бути впевненим, що ваш /etc/mtab
файл оновлений:
grep -v rootfs /proc/mounts > /etc/mtab
У цей момент також може бути корисно зробити:
source /etc/profile
export PS1="(chroot) $PS1" # add a reminder to your prompt
Робіть свою брудну роботу
На даний момент ви можете виконати будь-яке усунення несправностей, що вам потрібно зробити:
- перевстановіть GRUB у MBR вашого диска
- скинути забутий пароль
- здійснити оновлення (або поновлення) ядра
- відновити свій initramdisk
- виправити / etc / fstab
- перевстановіть пакети за допомогою менеджера пакунків
- що завгодно
Очищення
По закінченні переконайтесь, що всі запущені програми зупинені. Потім вийдіть з chroot:
exit
Тепер демонтуйте всі встановлені вами розділи:
umount /mnt/boot # if you mounted this or any other separate partitions
umount /mnt/{proc,sys,dev}
Нарешті спробуйте відключити ваш жорсткий диск:
umount /mnt
Якщо ви отримаєте помилку про те, що / mnt (або будь-який інший розділ) зайнятий, це може означати одну з двох речей:
Програма була запущена всередині chroot.
Або частіше: на цьому кріпленні все ще існує точка монтування. Наприклад, / mnt / usr все ще встановлюється при спробі відключити / mnt.
В останньому випадку просто спочатку відключіть порушну точку кріплення. Щоб отримати нагадування про всі поточні точки кріплення, запустіть mount
без параметрів.
Нарешті:
reboot
chroot.sh
в корені кожної використовуваної нами системи, вміст якої більш-менш відповідає вищенаведеному. Коли мені потрібно перейти до цієї системи з LiveCD або чогось іншого, я просто монтую кореневу файлову систему і запускаю скрипт chroot. Більше шаленого гуглювання для правильних команд немає.