Багато разів, особливо під час базікання, ми потрапляли в біду, не маючи доступу до системи для її відновлення, але рішення просте: скористайтеся командою chroot з будь-якого LiveCD / RepairCD.
У багатьох місцях (форумах, блогах ...) згадується ця команда і дається "копіювати / вставляти" код, але я маю намір у цьому дописі трохи пояснити ці кроки, щоб добре використати це інструмент, з пізнанням причини.
Введення
Команда chroot Він відомий як CHangeROOT, тобто команда, яка дозволяє змінити кореневу систему системи, в якій ви працюєте. Іншими словами: якщо ви з LiveCD і хочете, щоб все, що ви працюєте на консолі, впливало на встановлену систему, спочатку потрібно скористатися chroot.
Проблема в тому, що його недостатньо використовувати chroot Таким чином, перед тим, як ми повинні правильно змонтувати певні розділи.
ЯК
Спочатку нам потрібно запустити термінал або з іншої встановленої системи (на іншому розділі / диску), або з LiveCD. ВАЖЛИВО: архітектура LiveCD повинна відповідати архітектурі системи, що підлягає ремонту (32 або 64 біти).
Опинившись у терміналі, ми почнемо з ідентифікації наших розділів:
fdisk -l
- За допомогою цієї команди ми перелічимо всі наші розділи / диски. Ми повинні визначити, який є цільовим розділом, де встановлена наша система для ремонту, відтепер ми будемо називати його зламана система.
У цьому прикладі ми розглянемо, що наша зламана система працює / dev / sda1 .
Ми продовжуємо збирати систему. Спочатку ми створимо папку, в якій ми будемо працювати, а пізніше змонтуємо розділ, де знаходиться наша зламана система, в цій папці
mkdir /mnt/my_linux
mount /dev/sda1 /mnt/my_linux
Якщо у вас є папка / Головна o / var або будь-який інший на іншому розділі, вам слід змонтувати його так:
mount /dev/sda2 /mnt/my_linux/var
- ПРИМІТКА: Я взяв як приклад розділ / dev / sda2 для папки / var, нехай кожен з них налаштує код відповідно до своїх характеристик.
Зазвичай цього вистачає, якщо вам просто потрібно редагувати файли вручну, але якщо ми хочемо виконати деякі команди, які налаштовують систему, нам потрібно змонтувати певні спеціальні системні папки: / dev, / proc y / sys.
mount -t proc proc /mnt/my_linux/proc
mount -t sysfs sys /mnt/my_linux/sys
mount -o bind /dev /mnt/my_linux/dev
- З варіантом -t ми розповідаємо монтувати тип "файлової системи", який ми хочемо змонтувати. Це необхідно вказати через особливий характер папок / proc y / sys.
- З варіантом -o вказуємо варіанти монтувати. Варіант пов'язувати він служить для "зв’язку". У UNIX усі апаратні пристрої доступні через папку / dev, ось чому ми повинні встановити наш струм / dev в папці, де зараз знаходиться наша зламана система. Оскільки ця папка вже змонтована, потрібно лише сказати монтувати де він спочатку змонтований.
Це робиться таким чином, щоб chroot мати доступ до цих папок, як якщо б вони були зламаною системою, хоча вони повинні бути з поточної системи (наприклад: сесія LiveCD), оскільки вони пов’язані зі станом системи, процесів та обладнання.
Зараз саме час використовувати chroot:
chroot /mnt/my_linux/ /bin/bash
- Команда передається як аргументи шлях до нового кореня «/» (що в нашому випадку є / mnt / my_linux) та консоль, яку ви хочете використовувати (у цьому випадку ми обрали загальновідомий bash, знайдений у / bin / bash). Якщо ми не вкажемо консоль, ми опинимось перед дещо архаїчним інтерпретатором команд (він не заповнюється при натисканні на вкладку тощо).
Тепер ми можемо використовувати консоль так, ніби у нас був запущений кореневий сеанс у нашій непрацюючій системі (редагування файлів, перевірка сценаріїв, встановлення / видалення пакетів ...). ПОПЕРЕДЖЕННЯ! Щоб внесені зміни вступили в силу, вам потрібно відключити файлову систему після виходу chrootПодивіться на приклад нижче.
Більше інформації в https://wiki.archlinux.org/index.php/Change_Root (більше, ніж рекомендується прочитати).
Приклад використання: відновити GRUB2
Одне з найпоширеніших застосувань chroot Це як інструмент для ремонту GRUB. Оскільки, якщо переривник зламається, практично неможливо завантажити нашу систему, щоб це виправити.
ПРИМІТКА: цей невеликий підручник є простим прикладом, він працює на різних дистрибутивах, отриманих із Debian, Ubuntu та openSUSE, серед інших. Незважаючи на це, перевірте документацію вашого дистрибутиву, оскільки в багатьох командах не знайдено оновлення-grub.
# ПРИМІТКА: ці команди запускаються один раз усередині chroot.update-grub
grub-install /dev/sda
- з оновлення-grub Ми оновлюємо меню введення GRUB2, тим самим додаючи відсутні входи. Пізніше ми перевстановлюємо GRUB на наш диск, оскільки він був пошкоджений.
У цьому випадку я взяв / dev / sda як і диск, на якому ми маємо нашу систему, він повинен бути адаптований до вашого випадку.
Наш GRUB вже повинен бути відремонтований, тому ми повинні вийти chroot, демонтуйте файлову систему (ВАЖЛИВО) та перезавантажте систему, щоб зміни набрали чинності. Якщо ми забудемо демонтувати файлову систему, можливо, перезавантаження файлів не буде демонтовано правильно, а тому деякі зміни не наберуть чинності.
# ми залишили chrootexit
# відключити файлову систему та перезавантажитиumount /mnt/my_linux/dev
umount /mnt/my_linux/sys
umount /mnt/my_linux/proc
umount /mnt/my_linux
reboot
І це все. Я сподіваюся, вам це сподобається і що це допоможе вам. Вітання!