Инструкции по Continent
Общее
Инструкции для Continent
Фиксация MAC адресов в PNetLab
ВАЖНО: Подключение флешки, как и другие манипуляции с настройками машин PNetLab и их связями, заново генерируют MAC адреса для сетевых карт. Это приводит к изменению названий сетевых интерфейсов и ломает настройки сети в Continent. Что бы это избежать, необходимо заполнить поле First MAC в настройках каждой виртуальной машины уникальными значениями.

Cоответсвие MAC адресов и названий интерфейсов храняться в файле /etc/udev/rules.d/70-persistent-net.rules (ссылка)
Монтирование виртуального диска в хостовую ОС
Предусловия:
- Установлены пакеты qemu-utils и lvm2
Монтирование:
- Загрузить модуль ядра nbdВ виртульной машине PNetLab эта команда может вызывать ошибку. Тогда необходимо загрузить модуль командой:
sudo modprobe nbd max_part=8
insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8
- Отключить виртуальную машину (ВАЖНО: виртульную машину можно будет включить только после отключения диска из хостовой ОС!)
- Подключить виртуальный диск
sudo qemu-nbd -c /dev/nbd1 <путь к виртуальному диску vdi или qcow2>
sudo mount /dev/mapper/vg00-lv_root /mnt
sudo mount /dev/nbd1p1 /mnt/boot # при необходимости доступа к boot разделу
Команда lsblk показывает подключенные диски.
Отключение
- Отключить диск
sudo umount /mnt/boot # если был примонтирован sudo umount /mnt sudo vgchange -a n vg00 sudo qemu-nbd -d /dev/nbd1
- Включить виртуальную машину
- Выгрузить модуль ядра nbd, если в нем больше нет необходимости
modprobe -r nbd
Монтирование виртуальной флешки в Continent на PNetLab
Предусловия:
- Установлен пакет qemu-utils
Создание виртуальной флешки
sudo modprobe nbd max_part=8
#или insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8
qemu-img create -f raw myflash.img 512M
sudo qemu-nbd -c /dev/nbd2 -f raw ./myflash.img
fdisk /dev/nbd2
# ввести n
# соглашаться со всеми значениями по-умолчанию
# ввести w
sudo mkfs -t vfat /dev/nbd2p1
sudo qemu-nbd -d /dev/nbd2
Подключение флешки в виртуальную машину с Continent
ВАЖНО: Следующий действия могут сломать виртуальную машину с Continent (см. инструкцию "Фиксация MAC адресов в PNetLab")
- ВАЖНО: Убедиться, что флешка не подключена к другой виртуальной машине или хосту!
- В настройки виртуальной машины PNetLab в поле Qemu Options добавить:
-drive if=none,id=stick,format=raw,file=<ПУТЬ К ФАЙЛУ С ВИРТУАЛЬНОЙ ФЛЕШКОЙ> -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=stick

- Перезагрузить Continent
Получение root доступа к Continent 4 на виртуальной машине
- Отключить виртуальную машину с Continent
- Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)
- Заменить файл /mnt/boot/integrity на программу, которая всегда безусловно возвращает 0.Медиа:Integrity.txt (файл сохранить под именем integrity и дать права на запуск командой chmod +x integrity)
int main(int argc, char **argv) { return 0; }
- В файл настроек ограниченной консоли /etc/clish/misc.xml добавить bash. Для примера можно скопировать раздел настроек для команды uptime и заменить uptime на bash. В атрибут help написать Back door.
- Включить виртуальную машину с Continent. Через локальное меню Continent запустить ограниченную консоль (Инструменты - Диагностика - Командная строка) и выполнить команду bash. Получаем полный доступ к Linux под root.
Перекомпиляция ядра на виртуальной машине Continent
- Получить root доступ Continent (см. Получение root доступа к Continent 4 на виртуальной машине)
- Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)
- Компиляция и установка ядра: - в виртуальной машине в каталоге /boot по названию файлов определяем базовую версию ядра (например 5.10.210) - скачиваем исходный код ядра нужной версии https://mirrors.edge.kernel.org/pub/linux/kernel/ - копируем из виртуальной машины в папку с ядром файл /boot/config-XXXX под именем .config - компилируем ядро командой make -j<количество параллельных потоков> - проверяем успешность компиляции:- устанавливаем новое ядро в Continent
echo $? #должен вернуться 0 в случае отсутсвия ошибок
https://www.nathansweet.me/2017/02/03/build-linux-for-virtualboxsudo make INSTALL_MOD_PATH=/mnt modules_install sudo make INSTALL_PATH=/mnt/boot install
- Добавляем новое ядро в grub В файле /boot/grub/grub.conf дублируем строки загрузки основного ядра, заменяя название старого ядра на новое.
- Увеличиваем раздел /tmp в Continent до 1Гбт Текущего размера раздела tmp не хватает для проведения дальнейший операций, поэтому необходимо сначала уменьшить один из больших разделов, например /var, а затем увеличить раздел /tmp из освобожденного места. Список текущих разделов можно посмотреть командой lsblk https://ostechnix.com/resize-lvm-partitions-linux/
- Отключаем виртуальный диск, запускаем Continent, заходим в консоль под root
- Формируем initramfs
cd /boot dracut initramfs-<версия ядра>.x86_64.img <версия ядра>
- Перезагружаем Continent и выбираем в загрузчике новое ядро.