Инструкции по Continent: различия между версиями

Материал из EWiki
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 81: Строка 81:
</syntaxhighlight>[[Медиа:Integrity.txt]]  (файл сохранить под именем integrity и дать права на запуск командой chmod +x integrity)
</syntaxhighlight>[[Медиа:Integrity.txt]]  (файл сохранить под именем integrity и дать права на запуск командой chmod +x integrity)
# В файл настроек ограниченной консоли /etc/clish/misc.xml добавить bash. Для примера можно скопировать раздел настроек для команды uptime и заменить uptime на bash. В атрибут help написать Back door.  
# В файл настроек ограниченной консоли /etc/clish/misc.xml добавить bash. Для примера можно скопировать раздел настроек для команды uptime и заменить uptime на bash. В атрибут help написать Back door.  
# Включить виртуальную машину с Continent. Через локальное меню Continent запустить ограниченную консоль (Инструменты - Диагностика - Командная строка) и выполнить команду bash. Получаем полный доступ к Linux под root.
# Отключить диск, включить виртуальную машину с Continent. Через локальное меню Continent запустить ограниченную консоль (Инструменты - Диагностика - Командная строка) и выполнить команду bash. Получаем полный доступ к Linux под root.


== Перекомпиляция ядра на виртуальной машине Continent ==
== Перекомпиляция ядра на виртуальной машине Continent ==

Версия от 08:03, 16 мая 2024

Общее

Инструкции для Continent

Фиксация MAC адресов в PNetLab

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


Cоответсвие MAC адресов и названий интерфейсов храняться в файле /etc/udev/rules.d/70-persistent-net.rules (ссылка)

Монтирование виртуального диска в хостовую ОС

Предусловия:

  1. Установлены пакеты qemu-utils и lvm2

Монтирование:

  1. Загрузить модуль ядра nbd
    sudo modprobe nbd max_part=8
    
    В виртульной машине PNetLab эта команда может вызывать ошибку. Тогда необходимо загрузить модуль командой:
    insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8
    
  2. Отключить виртуальную машину (ВАЖНО: виртульную машину можно будет включить только после отключения диска из хостовой ОС!)
  3. Подключить виртуальный диск
sudo qemu-nbd -c /dev/nbd1 <путь к виртуальному диску vdi или qcow2>
sudo mount /dev/mapper/vg00-lv_root /mnt
sudo mount /dev/nbd1p1 /mnt/boot # при необходимости доступа к boot разделу

Команда lsblk показывает подключенные диски.

Отключение

  1. Отключить диск
    sudo umount /mnt/boot # если был примонтирован
    sudo umount /mnt
    sudo vgchange -a n vg00
    sudo qemu-nbd -d /dev/nbd1
    
  2. Включить виртуальную машину
  3. Выгрузить модуль ядра nbd, если в нем больше нет необходимости
    modprobe -r nbd
    

Монтирование виртуальной флешки в Continent на PNetLab

Предусловия:

  1. Установлен пакет 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")

  1. ВАЖНО: Убедиться, что флешка не подключена к другой виртуальной машине или хосту!
  2. В настройки виртуальной машины 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
  3. Перезагрузить Continent

Получение root доступа к Continent 4 на виртуальной машине

  1. Отключить виртуальную машину с Continent
  2. Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)
  3. Заменить файл /mnt/boot/integrity на программу, которая всегда безусловно возвращает 0.
    int main(int argc, char **argv) {
       return 0;
    }
    
    Медиа:Integrity.txt (файл сохранить под именем integrity и дать права на запуск командой chmod +x integrity)
  4. В файл настроек ограниченной консоли /etc/clish/misc.xml добавить bash. Для примера можно скопировать раздел настроек для команды uptime и заменить uptime на bash. В атрибут help написать Back door.
  5. Отключить диск, включить виртуальную машину с Continent. Через локальное меню Continent запустить ограниченную консоль (Инструменты - Диагностика - Командная строка) и выполнить команду bash. Получаем полный доступ к Linux под root.

Перекомпиляция ядра на виртуальной машине Continent

  1. Получить root доступ Continent (см. Получение root доступа к Continent 4 на виртуальной машине)
  2. Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)
  3. Компиляция и установка ядра: - в виртуальной машине в каталоге /boot по названию файлов определяем базовую версию ядра (например 5.10.210) - скачиваем исходный код ядра нужной версии https://mirrors.edge.kernel.org/pub/linux/kernel/ - копируем из виртуальной машины в папку с ядром файл /boot/config-XXXX под именем .config - компилируем ядро командой make -j<количество параллельных потоков> - проверяем успешность компиляции:
    echo $? #должен вернуться 0 в случае отсутсвия ошибок
    
    - устанавливаем новое ядро в Continent
    sudo make INSTALL_MOD_PATH=/mnt modules_install
    sudo make INSTALL_PATH=/mnt/boot install
    
    https://www.nathansweet.me/2017/02/03/build-linux-for-virtualbox
  4. Добавляем новое ядро в grub В файле /boot/grub/grub.conf дублируем строки загрузки основного ядра, заменяя название старого ядра на новое.
  5. Увеличиваем раздел /tmp в Continent до 1Гбт Текущего размера раздела tmp не хватает для проведения дальнейший операций, поэтому необходимо сначала уменьшить один из больших разделов, например /var, а затем увеличить раздел /tmp из освобожденного места. Список текущих разделов можно посмотреть командой lsblk https://ostechnix.com/resize-lvm-partitions-linux/
  6. Отключаем виртуальный диск, запускаем Continent, заходим в консоль под root
  7. Формируем initramfs
    cd /boot
    dracut initramfs-<версия ядра>.x86_64.img <версия ядра>
    
  8. Перезагружаем Continent и выбираем в загрузчике новое ядро.