Загрузка Системы
Вход без пароля в ОС, добавляем модуль в initd, переименовываем VG
Стенд для тренировки "Загрузки Системы"
Задание:
Попасть в систему без пароля несколькими способами
Установить систему с LVM, после чего переименовать VG
Добавить модуль в initrd
Начнем с того, что я немного отредактировал Vagrantfile с прошлого домашнего задания, а именно дописал в начало:
MACHINES = {
:lesson6 => {
:box_name => "centos/7",
:box_version => "1804.02",
:ip_addr => '192.168.11.106',
},
}
после чего добавил строку:
vb.gui = true
1. Попасть в систему без пароля несколькими способами
Для получения доступа открываем GUI VirtualBox, запускаем вм. При выборе ядра для загрузки нажать e - в данном контексте edit. Попадаем в окно где мы можем изменить параметры загрузки.
1.1 rw init=/sysroot/bin/sh
В строке начинающейся с linux16 заменяем ro нa rw init=/sysroot/bin/sh, удаляем параметр console=ttS0,115200n8 и нажимаем сtrl+x для загрузки в систему.
Файловая система сразу смонтирована в режим Read-Write
1.2 rd.break
В конце строки начинающейся с linux16 добавляем rd.break console=tty1 и нажимаем сtrl-x для загрузки в систему. Попадаем в emergency mode. Корневая файловая система смонтирована. Попасть в нее и поменять пароль администратора:
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
touch /.autorelabel
После чего можно перезагружаться и заходить в систему с новым паролем.
1.3 init=/bin/sh
В конце строки начинающейся с linux16 удаляем параметр console=ttS0,115200n8, добавляем init=/bin/sh, нажимаем сtrl-x для загрузки в систему. Рутовая файловая система при этом монтируется в режиме Read-Only. Если вы хотите перемонтировать ее в режим Read-Write можно воспользоваться командой:
mount -o remount,rw /
После чего можно убедиться записав данные в любой файл или прочитав вывод команды: mount | grep root
2. Установить систему с LVM, после чего переименовать VG
Первым делом посмотрим текущее состояние системы (нас интересует вторая строка с именем Volume Group):
vgs
Приступим к переименованию:
vgrename VolGroup00 OtusRoot
Далее правим /etc/fstab, /etc/default/grub, /boot/grub2/grub.cfg.И тут есть два способа:
Открываем все эти 3 файла по очереди в редакторе и меняем VolGroup00 на OtusRoot.
Для правки используем sed, как например для редактирования /boot/grub2/grub.cfg команда будет иметь вид:
cat /boot/grub2/grub.cfg | grep VolGroup00 sed -i 's/VolGroup00/OtusRoot/g' /boot/grub2/grub.cfg
Пересоздаем initrd image, чтобы он знал новое название Volume Group:
mkinitrd -f -v /boot/initramfs-$(uname -r).img $(uname -r)
После чего можем перезагружаемся с новым именем Volume Group и проверяем
vgs
3 Добавить модуль в initrd
В каталоге с скриптами модулей создаем папку с именем 01test:
mkdir /usr/lib/dracut/modules.d/01test
В нее помещаем два скрипта:
[https://gist.github.com/lalbrekht/e51b2580b47bb5a150bd1a002f16ae85] module-setup.sh - который устанавливает модуль и вызывает скрипт test.sh
[https://gist.github.com/lalbrekht/ac45d7a6c6856baea348e64fac43faf0] test.sh - собственно сам вызываемый скрипт, в нём у нас рисуется пингвинчик
Затем командой mv мы переименовываем данные файлы, по названиям указанным выше.
Пересобираем образ initrd
dracut -f -v
Можно проверить/посмотреть какие модули загружены в образ:
lsinitrd -m /boot/initramfs-$(uname -r).img | grep test
Отредактируем grub.cfg убрав эти опции:rghb, quiet Для редактирования
vim /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
В итоге при загрузке будет пауза на 10 секунд и пингвин в выводе терминала ^__^
При выполнении данного задания я пользовался следующей информацией:
Last updated
Was this helpful?