Если система не загружается

Если что-то пошло не так и ваша система не загружается, то не спешите расстраиваться. Можно загрузиться с установочного или LiveCD, примонтировать пул и исправить ошибки.

В данной статье я опишу лишь как можно получить доступ к пулам с помощью LiveCD.

Тестовый стенд: Solaris 11

Загружаемся с установочного диска, выбираем кодировку, раскладку и потом в установочном меню выбираем Shell (пункт 3). После этого мы попадаем в консоль. Что теперь делать? А делать можно всё, что угодно.

Сделаем доступным наш пул.

Создадим папку /a, куда будем импортировать наш пул и импортируем его:

#mkdir /a
#zpool import -f -R /a rpool

без ключа ‘-f’ будет ругаться, что пул уже есть часть другой системы. Теперь мы можем посмотреть уже файловые системы:

#zfs list
NAME                                     USED  AVAIL  REFER  MOUNTPOINT
rpool                                   12.1G  3.55G    40K  /a/rpool
rpool/ROOT                              5.63G  3.55G    31K  legacy
rpool/ROOT/solaris                      5.63G  3.55G  3.65G  /a/a/root
rpool/ROOT/solaris/var                  1.97G  3.55G  1.81G  /a/var
rpool/dump                               792M  3.58G   768M  -
rpool/export                             400M  3.55G    32K  /a/export
rpool/export/home                        400M  3.55G    32K  /a/export/home
rpool/export/home/skeletor               400M  3.55G   400M  /a/export/home/skeletor
rpool/swap                              1.03G  3.59G  1.00G  -
rpool/swap2                             2.06G  5.62G    16K  -
rpool/test                               728M  3.55G   719M  /a/test
rpool/zone0                              394M  3.55G    33K  /a/zone0
rpool/zone0/rpool                        394M  3.55G    31K  /a/rpool
rpool/zone0/rpool/ROOT                   394M  3.55G    31K  legacy
rpool/zone0/rpool/ROOT/solaris           394M  3.55G   362M  /a
rpool/zone0/rpool/ROOT/solaris/var      26.4M  3.55G  25.3M  /a/var
rpool/zone0/rpool/export                  98K  3.55G    32K  /a/export
rpool/zone0/rpool/export/home             66K  3.55G    32K  /a/export/home
rpool/zone0/rpool/export/home/skeletor    34K  3.55G    34K  /a/export/home/skeletor
rpool/zone1                              383M  3.55G    33K  /a/zone1
rpool/zone1/rpool                        383M  3.55G    31K  /a/rpool
rpool/zone1/rpool/ROOT                   383M  3.55G    31K  legacy
rpool/zone1/rpool/ROOT/solaris           383M  3.55G   355M  /a
rpool/zone1/rpool/ROOT/solaris/var      26.4M  3.55G  25.3M  /a/var
rpool/zone1/rpool/export                96.5K  3.55G    32K  /a/export
rpool/zone1/rpool/export/home           64.5K  3.55G    32K  /a/export/home
rpool/zone1/rpool/export/home/skeletor  32.5K  3.55G  32.5K  /a/export/home/skeletor
rpool/zone_solaris10                     729M  3.55G    33K  /a/zone_solaris10
rpool/zone_solaris10/rpool               729M  3.55G    31K  /a/rpool
rpool/zone_solaris10/rpool/ROOT          728M  3.55G    31K  legacy
rpool/zone_solaris10/rpool/ROOT/zbe-0    728M  3.55G   728M  /a
rpool/zone_solaris10/rpool/export         64K  3.55G    33K  /a/export
rpool/zone_solaris10/rpool/export/home    31K  3.55G    31K  /a/export/home

Как видим, почти всё нормально, кроме корня rpool/ROOT/solaris, он почему-то смонтирован в /a/a/root, а в /a нету подпапки ‘a’. Создадим её и смонтируем наш корень:

#ls /a
export rpool test zone_solaris10 zone0 zone1
#mkdir /a/a
#zfs mount rpool/ROOT/solaris
#ls /a
a export rpool test zone_solaris10 zone0 zone1
#ls /a/a/root/
bin cdrom devices export kernel media net opt pool1 root sbin test usr zone_solaris10 zone1
boot dev etc home lib mnt nfs4 platform proc rpool system tmp var zone0

Для заключительного финта можно даже сделать chroot, что бы точно править файлы на диске, а не в RAM.

#/usr/sbin/chroot /a/a/root /bin/sh

Теперь можно править нужные файлы. Так же можно присвоить IP, запустить ssh и работать полноценно.

В самом конце не забудьте экспортировать пулы.

Примечание.

После загрузки ОС с жёсткого диска, придётся заново импортировать все не корневые пулы.

Добавить комментарий

Ваш адрес email не будет опубликован.