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

Материал из EWiki
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 139: Строка 139:
#Увеличиваем раздел /tmp  в Continent до 1Гбт  Текущего размера раздела tmp не хватает для проведения дальнейший операций, поэтому необходимо сначала уменьшить один из больших разделов, например /var, а затем увеличить раздел /tmp из освобожденного места.  Список текущих разделов можно посмотреть командой lsblk  https://ostechnix.com/resize-lvm-partitions-linux/
#Увеличиваем раздел /tmp  в Continent до 1Гбт  Текущего размера раздела tmp не хватает для проведения дальнейший операций, поэтому необходимо сначала уменьшить один из больших разделов, например /var, а затем увеличить раздел /tmp из освобожденного места.  Список текущих разделов можно посмотреть командой lsblk  https://ostechnix.com/resize-lvm-partitions-linux/
#Отключаем виртуальный диск, запускаем Continent, заходим в консоль под root
#Отключаем виртуальный диск, запускаем Continent, заходим в консоль под root
#ОПЦИОНАЛЬНО: ссылаемся в нашем ядре на модули ContinentOS<syntaxhighlight lang="bash">
cd /lib/modules
mv 5.10.210 _5.10.210
ln -s 5.10.210-2.continent.x86_64 5.10.210
</syntaxhighlight>
#Формируем initramfs<syntaxhighlight lang="bash">
#Формируем initramfs<syntaxhighlight lang="bash">
cd /boot
cd /boot

Версия от 03:58, 23 мая 2024

Общее

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

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

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


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

Поиск соответствия сетевых интерфейсов в Linux схеме в PNetLab

Все связи с каждой стороны обозначены как eX. Число X соответствует последнему числу в MAC адресе сетевого интерфейса.

Сохранение виртуальных машин в PNetLab

Виртуальные машины в PNetLab работают в рамках сессии. Если сессия будет по какой-то причине остановлена, то все виртуальные машины будут сброшены до базового состояния.

Что бы этого не произошло состояние виртуальных машин надо периодически сохранять. Инструкция по сохранению.

Сначал создаем копию виртуальных машин

  1. Останавливаем машину
  2. В контекстном меню машины нажимаем Node Commit
  3. Выбираем Take snapshot ....
  4. В настройках машины указываем в качестве образа наш snapshot
  5. В контекстном меню нажимаем Wipe
  6. Теперь наша машина работают со своим образом, но который основан на базовом образе, т.е. не занимает лишнее место.

Сохраняем изменения в собственный образ

  1. Остановить машину
  2. В контекстном меню машины нажимаем Node Commit
  3. Выбираем Commit to original

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

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

  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 показывает подключенные диски. Если возникнут проблемы монтирования ntfs разделов можно выполнить:

ntfsfix /dev/nbd1p2
mount -t ntfs-3g -o remove_hiberfile /dev/nbd1p2 /mnt

https://unix.stackexchange.com/a/236145

Отключение

  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). Cкачиваем исходный код ядра нужной версии https://mirrors.edge.kernel.org/pub/linux/kernel/ . Устанавливаем необходимые для компиляции библиотеки.
    sudo apt update
    sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev fakeroot
    sudo apt install dwarves
    
  4. Копируем из виртуальной машины в папку с ядром файл /boot/config-XXXX под именем .config. Добавляем/изменяем параметры ядра в конфигурационном файле:
    CONFIG_BPF_SYSCALL=y
    CONFIG_BPF_UNPRIV_DEFAULT_OFF=y
    CONFIG_BPF_JIT_ALWAYS_ON=y
    CONFIG_DEBUG_INFO_BTF=y
    CONFIG_DEBUG_INFO_REDUCED=y
    
  5. Компилируем ядро командой make -j<количество параллельных потоков>. -Проверяем успешность компиляции:
    echo $? #должен вернуться 0 в случае отсутсвия ошибок
    
  6. Устанавливаем новое ядро в 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
  7. Добавляем новое ядро в grub В файле /boot/grub/grub.conf дублируем строки загрузки основного ядра, заменяя название старого ядра на новое.
  8. Увеличиваем раздел /tmp в Continent до 1Гбт Текущего размера раздела tmp не хватает для проведения дальнейший операций, поэтому необходимо сначала уменьшить один из больших разделов, например /var, а затем увеличить раздел /tmp из освобожденного места. Список текущих разделов можно посмотреть командой lsblk https://ostechnix.com/resize-lvm-partitions-linux/
  9. Отключаем виртуальный диск, запускаем Continent, заходим в консоль под root
  10. ОПЦИОНАЛЬНО: ссылаемся в нашем ядре на модули ContinentOS
    cd /lib/modules
    mv 5.10.210 _5.10.210
    ln -s 5.10.210-2.continent.x86_64 5.10.210
    
  11. Формируем initramfs
    cd /boot
    dracut initramfs-<версия ядра>.x86_64.img <версия ядра>
    
  12. Перезагружаем Continent и выбираем в загрузчике новое ядро.