LINUX.ORG.RU

9
Всего сообщений: 96

firewalld блокирует работу NFS

Здравствуйте. Имеется сервер с крутящимися на нём сервисами dhcpd, httpd, tftpd, nfs. Между сервером и клиентами два устройства, выполняющие роли маршрутизаторов и файрволлов. Сервер и клиенты в разных подсетях. Все устройства на VMware, с установленными CentOS 8.

Клиенты бездисковые, по tftp и http (с помощью pxe) заливают себе в память загрузчик и прочие файлы. И далее, при условии выключенного firewall-cmd на промежуточных устройствах, клиенты подключаются к nfs-серверу и выводят окно ввода логина и пароля. Если firewall-cmd включен, то этап с подключением к nfs-серверу обламывается (выводится спам сообщениями: mount.nfs access denied by server while mounting). Задача состоит в обеспечении стабильной связи клиентов с сервером через включенные файрволлы.

Что пробовал. В firewall-cmd пробовал добавлять сервисы и разные порты, имеющие отношение к nfs. Также, учитывая динамическое использование портов nfs и смежными службами, вручную назначил конкретные порты и также добавил их в файрволл. Но всё безрезультатно. Пробовал ещё засунуть клиентов в одну подсеть с сервером, но в таком случае всё работает и без настроек файрволла. Ещё проверял на доступность порты сервера через nc (нужные порты открыты).

https://i.imgur.com/YrklEUf.png — спам сообщениями на бездисковом клиенте.

https://pastebin.com/y5paQszV — текущие настройки файрволла на сервере и двух маршрутизаторах.

https://pastebin.com/PtJpKPY2 — данные о портах с rpcinfo -p .

https://pastebin.com/agecVfPw — настройка в /etc/exports .

https://pastebin.com/kMSStBk1 — настройки конфига default в pxelinux.cfg/ .

https://pastebin.com/mKTeHavN — кусок сообщений из /var/log/messages на сервере, во время спама сообщениями на клиенте.

https://pastebin.com/JCAtjFgF — на маршрутизаторе, имеющем общую подсеть с клиентами, поставил интерфейс на прослушку с помощью tcpdump -i ens34 port 2049 . В выводе непонятное месиво данных.

 , , , ,

Serpentary ()

Как сделать загрузку по сети с одного сервера на 10 компов без Ж дисков?

суть такая сервер будет для игр и чтоб хотелось на всех компах одни игры были а не устанавливать на каждый одно итоже.
все на линукс. но проблема в том что железо разное

 

Regacar ()

Все пропало мистика...

Доброго времени суток. Я нахожусь в некотором шоке и пожалуй начну историю из долека. Не знаю как у других но у меня вчера был очень насыщенный день.

Закралась мне идея в офисе вынести жесткие диски юзеров на сервер в ISCSI.

Я взял сервер Xeon E3-1240v2 старенький из бездействующих серверов, туда воткнул 4 диска WD30EFRX, 8GB RAM, обе сетевухи в bond0. Поставил Debian 10, программный mdraid RAID5 из 3-х дисков, этот рейд в lukscrypt на шифрованном разделе ext4. (вообще я хотел поизучать LVM2 но пока просто на ext4) Далее у меня tgtd раздает таргеты по 100гб через backing-store. Еще у меня там TFTP сервер c IPXE, маленький скрипт на PHP под Nginx.

Вообщем включается клиент, загружается с PXE (MBR). Mikrotik раздает DHCP указывает на сервер PXE, там менюшка, далее скармливается IPXE загрузчик который тягает скрипт с веб сервера, скрипт указываем ISCSI target диск и с него грузится Win7\Win10.

Там помимо Юзеров(1 юзер реально боевой) на этом сервере еще кружится диск от Hyper-V и пара виртуалок. Все это было в таком продакшн тесте, производительность ISCSI через гигабитную локалку давольно не плохая.

Вообщем Все работало…. Пару месяцев..

Сегодня с утра мне сообщают что не работает часть сервисов в этом офисе не доступна, как оказалось здох блок питания в Mikrotik, пока туда сюда пока заменил два кондера пока все поднялось. Все поднялось кроме этого боевого компа юзера.

Тут маленький момент, юзер пришел и пробовал включить комп уже после того как упал маршрутизатор и сломался PXE.

Вообщем юзер включает компьютер, с PXE+ISCSI грузится Win7 проходит половину загрузки и перезагружается и так в цикле. Решаю перезагрузить сервер, малоли что маршрутизатор не работал несколько часов, а там бондинг итд, при этом какбы сервер доступен работает нормально ушел в перезагрузку, нормально вернулся. Подципил lukscrypt диск перезапустил tgt, он отдельно цепляет конфиги с рейда. Проблема таже самая, грузится 7-ка до половины и перезагружается, причем долго тупит.

Отключаю правила ACL на TGTd и 7-ка начинает загружаться, но имеет совершенно не те данные в образе!!! Тобиш корректно загрузилась какаято промежуточная версия особо не настроенной Win7. Никаких ошибок не по рейду ни в логах, как будто с добрым утром все четко.

Я сижу и не могу понять а куда собственно делать полностью настроенная и стабильно работающая несколько месяцев система. Сервер не перезагружался какоето время, возможно все эти два месяца.

У меня 2 теории о сложившейся ситуации.

  1. Во время тестирования я чтото напутал, скормил в конфиг промежуточный образ а реальный образ например удалил и пока служба работала все было в порядке, предпологаю был открыт дискриптор удаленного файл.
  2. Tgt совершил какойто невероятный финт ушами с кэшами или кудато в неизвестном мне направлении сохранял данные не трогая оригинальный образ и при перезагрузке благополучно все забыл. Темнеменее я облазил весь сервер через du -sh ./* и не нашел каких либо крупных файлов имеющих отношение к проблеме.

Я пробовал запускать undelete и debugfs но совершенно не обнаружил удаленных массивов данных. Также я по самому проблемному образу проходился R-Studio и даже намека на файлы пользователя не обнаружил.

Я подозреваю что в самой ext4 должны сохраняться какието данные, и мне бы хотелось их както выудить, но к сожалению мне даже дамп на 6тб некуда сохранить.

Пользователь уже смирился, но меня както карежит, я планирую переводить на подобную систему весь офис и както не очень хотелосьбы в одно прекрасное утро утратить в неизвестном направлении вообще все. Какие есть варианты?

p.s Hyper-V и Виртуалки поднялись нормально с тогоже tgt.

 , , ,

KIRALEX ()

Установка fedora 31 с product.img по сети

Всем привет.

Пытаюсь настроить установку fedora31 по сети pxe с файлом product.img - брендингом anaconda. Не могу понять где указать ссылку на него, чтобы он подцеплялся.

В iso и на usb-флешке все работает.

 , ,

MoiseIisus ()

centos по сети не грузится

Надо через PXE загрузить систему по NFS. Есть такок initrd

#!/bin/nash

mount -t proc /proc /proc
setquiet
echo Mounting proc filesystem
echo Mounting sysfs filesystem
mount -t sysfs /sys /sys
echo Creating /dev
mount -o mode=0755 -t tmpfs /dev /dev
mkdir /dev/pts
mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts
mkdir /dev/shm
mkdir /dev/mapper
echo Creating initial device nodes
mknod /dev/null c 1 3
mknod /dev/zero c 1 5
mknod /dev/urandom c 1 9
mknod /dev/systty c 4 0
mknod /dev/tty c 5 0
mknod /dev/console c 5 1
mknod /dev/ptmx c 5 2
mknod /dev/rtc c 10 135
mknod /dev/tty0 c 4 0
mknod /dev/tty1 c 4 1
mknod /dev/tty2 c 4 2
mknod /dev/tty3 c 4 3
mknod /dev/tty4 c 4 4
mknod /dev/tty5 c 4 5
mknod /dev/tty6 c 4 6
mknod /dev/tty7 c 4 7
mknod /dev/tty8 c 4 8
mknod /dev/tty9 c 4 9
mknod /dev/tty10 c 4 10
mknod /dev/tty11 c 4 11
mknod /dev/tty12 c 4 12
mknod /dev/ttyS0 c 4 64
mknod /dev/ttyS1 c 4 65
mknod /dev/ttyS2 c 4 66
mknod /dev/ttyS3 c 4 67
echo Setting up hotplug.
hotplug
echo Creating block device nodes.
mkblkdevs
echo "Loading ehci-hcd.ko module"
insmod /lib/ehci-hcd.ko 
echo "Loading ohci-hcd.ko module"
insmod /lib/ohci-hcd.ko 
echo "Loading uhci-hcd.ko module"
insmod /lib/uhci-hcd.ko 
mount -t usbfs /proc/bus/usb /proc/bus/usb
echo "Loading jbd.ko module"
insmod /lib/jbd.ko 
echo "Loading ext3.ko module"
insmod /lib/ext3.ko 
echo "Loading virtio.ko module"
insmod /lib/virtio.ko 
echo "Loading virtio_ring.ko module"
insmod /lib/virtio_ring.ko 
echo "Loading virtio_pci.ko module"
insmod /lib/virtio_pci.ko 
echo "Loading virtio_blk.ko module"
insmod /lib/virtio_blk.ko 
echo "Loading scsi_mod.ko module"
insmod /lib/scsi_mod.ko 
echo "Loading sd_mod.ko module"
insmod /lib/sd_mod.ko 
echo "Loading libata.ko module"
insmod /lib/libata.ko 
echo "Loading ata_piix.ko module"
insmod /lib/ata_piix.ko 
echo "Loading ahci.ko module"
insmod /lib/ahci.ko 
echo "Loading dm-mod.ko module"
insmod /lib/dm-mod.ko 
echo "Loading dm-log.ko module"
insmod /lib/dm-log.ko 
echo "Loading dm-mirror.ko module"
insmod /lib/dm-mirror.ko 
echo "Loading dm-zero.ko module"
insmod /lib/dm-zero.ko 
echo "Loading dm-snapshot.ko module"
insmod /lib/dm-snapshot.ko 
echo "Loading dm-mem-cache.ko module"
insmod /lib/dm-mem-cache.ko 
echo "Loading dm-region_hash.ko module"
insmod /lib/dm-region_hash.ko 
echo "Loading dm-message.ko module"
insmod /lib/dm-message.ko 
echo "Loading dm-raid45.ko module"
insmod /lib/dm-raid45.ko 
echo "Loading tg3.ko module"
insmod /lib/tg3.ko 
echo "Loading bnx2.ko module"
insmod /lib/bnx2.ko 
echo "Loading e1000.ko module"
insmod /lib/e1000.ko 
echo "Loading e1000e.ko module"
insmod /lib/e1000e.ko 
echo Waiting for driver initialization.
stabilized --hash --interval 1000 /proc/scsi/scsi
mkblkdevs
echo Scanning and configuring dmraid supported devices
echo Scanning logical volumes
lvm vgscan --ignorelockingfailure
echo Activating logical volumes
lvm vgchange -ay --ignorelockingfailure  VolGroup00
resume /dev/VolGroup00/LogVol01
echo Creating root device.
mkrootdev -t ext3 -o defaults,ro /dev/VolGroup00/LogVol00
echo Mounting root filesystem.
mount /sysroot
echo Setting up other filesystems.
setuproot
echo Switching to new root and running init.
switchroot
Оно работает в QEMU, а на железе хрен. https://i111.fastpic.ru/big/2020/0512/16/986ca8810d8168d2e384a2f46f9da216.jpeg Нужные модули сетевок закинул в initrd, но не помогает. Загружаюсь так
 APPEND initrd=initrd-2.6.18-419.el5.img ramdisk_size=100000 ksdevice=eth0 ip=dhcp noipv6 url --url nfs://centos 
Как подебажить?

 ,

macumazan ()

Arch Netboot. Куда скачивается образ?

Впервые столкнулся с netboot, поэтому сразу опишу что делал:

  1. Создал раздел FAT32 на флешке. Не EFI, просто обычный раздел.
  2. Скачал арчевский ipxe.efi, переименовал и положил на флешку в EFI/BOOT/BOOTX64.EFI

PXE работает, образ грузится, монтируется в /dev/loop, установочная среда запускается.

Вопрос, а куда грузится образ? Где он физически находится? В оперативе?

P.S. Если я все делаю неправильно и данный способ чем-то чреват, тоже напишите, так как я до этого дошел исключительно методом тыка.

 , , , ,

qtm ()

Как при pxe загрузке задать МАС нужный для входа в сеть через своего провайдера

Просмотрел поиск на форуме МАС - но не нашел решения вроде простой проблемы.

Кабель один и выход в сеть только с прописанным у провайдера МАС - а компов несколько.

Современные Linux типа Kubuntu - как то могут сами «считывать» МАС у провайдера и выходить в сеть - сами прописав у себя нужный МАС.

Винда сама не может, а прописанный руками МАС: в 10ке - часто слетает, а вот в 7ке - держится стабильно.

Сейчас нужна рхе загрузка с компа с другим МАС - но чтобы провайдер пропустил в сеть - нужен его МАС - а системы где можно прописать МАС через 'ip' или 'ifconfig' - еще нет.

Получается - при рхе загрузи - системы где можно сменить МАС - только Grub\рхе

Но для Grub - даже здесь - не нашел про МАС.

1). Можно ли и как в Grub\рхе задать МАС - нужный для выхода в сеть через провайдера ?

А вообще - чтобы не скачивать полностью разные варианты - как начать установку например прямо с адресов типа:

ftp://mirrors.sonic.net/pub/OpenBSD/6.6/i386/bsd.rd
ftp://ftp.eu.openbsd.org/OpenBSD/5.7/i386/bsd.rd
https://cdn.openbsd.org/pub/OpenBSD/snapshots/i386/bsd.rd

Загрузить (на голый комп, через pxe) эти 10 мб - а дальше они сами знают как развернуться.

Пробовал на виртуалке - где нет проблемы МАС (прописан в хост системе) - 'pxeboot' и

boot ftp://mirrors.sonic.net/pub/OpenBSD/6.6/i386/bsd.rd

- но 'Permission Denied'. Что еще надо - если это уже /pub/ ?

Но виртуалка для установки не годится - Для слабых компов - отдельно стоят типа FreeBSD, OpenBSD - уже не Linux - а другие Unix подобные системы - надо установку с запуском реальной машины. А это через pxe.

2). Как правильно прописать загрузку с адресов выше ?

3). Где в установленном OpenBSD прописать МАС постоянно ?

Пишут что нужно прописать в

/etc/network/interfaces
hwaddress ether 00:0b:....

но такого файла нет. Создать его или нужно где-то в другом файле прописывать МАС ?

 , ,

alex52mail ()

PXE меню в ubuntu

Привет. Короч. Пытаюсь настроить PXE для установки ОС с сетевого компа. Настроил ubuntu с dhcp, тфтп и сислинукс. Теперь по сети компы попадают на него, но не получается настроить меню. Может нужно ещё что-то установить, или настроить. Меню работает, но не получается подцепить к нему образа, с которых грузиться. /tftpboot/pxelinux.cfg/default:

ui vesamenu.c32
PROMPT 0
menu background background.jpg
menu title Boot menu

LABEL bootlocal
   menu label Standard boot
   kernel chain.c32
   append hd0 0
   timeout 10
 TEXT HELP
The system will boot after the time is up
 ENDTEXT

LABEL Windows PE ->
      KERNEL memdisk
      APPEND iso raw initrd=images/ubuntu-18.04.3.iso
LABEL Windows PE ->
      KERNEL memdisk
      APPEND iso raw initrd=images\ubuntu-18.04.3.iso
LABEL Windows PE ->
      KERNEL memdisk
      APPEND iso raw initrd=/tftpboot/pxelinux.cfg/iso/ubuntu-18.04.3.iso
LABEL Windows PE ->
      KERNEL memdisk
      APPEND iso raw initrd=\tftpboot\pxelinux.cfg\iso\ubuntu-18.04.3.iso
LABEL Windows PE ->
      KERNEL memdisk
      APPEND iso raw initrd=192.168.2.1:\iso\ubuntu-18.04.3.iso
LABEL Windows PE ->
      KERNEL memdisk
      APPEND iso raw initrd=192.168.2.1:/iso/ubuntu-18.04.3.iso

На клиентской машине выдаёт:

Loading memdisl..
Could not find ramdisk image: 192.168.2.1:/iso/ubuntu-18.04.3.iso
Хотя папка доступна у неё везде права. По сети могу в папке создать файл.

 , ,

chart41 ()

Посоветуйте как лучше загружать конфигурацию хоста по сети

Включаю ПК или виртуалку подключенные к локальной сети, DHCP раздаёт PXE, загружается дистрибутив линукса (в теории, он может быть любой), — там просто загружается ядро и initramfs сразу содержащий squashfs-образ с системой, куда потом chroot'ится /init-скрипт. В общем, получается работающая система в RAM через PXE.

Простой /init-скрипт в initramfs, который чрутится в squashfs-образ с системой.

# cat init
#!/bin/sh

error() {
  setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1'
}

mount -t proc none /proc || error
mount -t sysfs none /sys || error
mount -t devtmpfs devtmpfs /dev || error
mount -t tmpfs tmpfs /overlay || error

mkdir -p /ro /overlay/rw /overlay/work
mount -t squashfs -o loop,noatime /filesystem.squashfs /ro || error
mount -t overlay -o lowerdir=/ro,upperdir=/overlay/rw,workdir=/overlay/work rootfs /newroot || error

mount --move /dev /newroot/dev
umount /sys
umount /proc

exec chroot /newroot /sbin/init
exec sh
reboot

Чрутнулся. Система успешно загрузислась. Теперь не знаю как лучше настраивать систему сразу после загрузки. Например, в дистрибутивах есть /etc/rc.local файл, выполняющийся сразу после загрузки. Можно модифицировать его, чтобы он например, делал bash -s <(curl http://10.0.0.1/rc_local.php), и уже скриптом отдавать глядя на IP машины дальнейшие команды (в виде bash скрипта) для конфигурации системы и введения её в работу. Настроить SSH, доустановить нужные пакеты, сделать git clone и прочая-прочая-прочая. Всё, что угодно.

А как бы вы реализовали такую настройку системы?

Только не надо про syslinux с его pxeconfig, это не то пальто: там в зависимости от MAC ты только выбираешь, какой файл с конфигурацией syslinux'а отдать. Я не хочу иметь 100500 образов систем, — пусть система будет одна, и уже в процессе загрузки она настраивается под каждый хост.

 

Spoofing ()

Почему ОС всё ещё не загружаются по сети?

Представьте, в ОС или каком-либо компоненте нашли уязвимость, взломали, и одно дело, утекшие данные, а ведь до кучи могут сделать хост частью своего ботнета, например. Вы хватаетесь за голову, что ж теперь, аудит проводить, куда лазили, что делали, или просто переустановить всё, опять же заново настраивать, — сплошной головняк. Восстановление из последнего бэкапа? Как давно он был сделан? Ведь наверняка с тех пор в конфигурацию хоста внесены изменения. Я веду к тому, что всё ещё популярно хранить актуальное состояние ОС в единственном экземпляре в «горячем» виде, так сказать.

А что если, экземпляр вашей ОС хранился бы в «холодном» виде в образе, на сервере, откуда бы загружался на ваш хост при каждом его включении, и подтягивал за собой всю конфигурацию, необходимую для работы. Хост взломали, а вы просто исправили баг в образе который хранится «на холодную» и жмякнули кнопочку reset для перезагрузки, и снова в строю. Это же просто офигенно.

Как раз сейчас я этим и занимаюсь и решил поделиться мыслями. Хочу перевести все свои сервисы на удалённую «бездисковую» загрузку по сети. Чтоб даже домашний ПК-роутер, раздающий интернеты, загружался по сети и подтягивал образ с соответствующей конфигурацией. Для этого нужен только DHCP, tftp-hpa и... grub2, либо syslinux.

Когда компьютер включается, UEFI / BIOS при необнаружении накопителей пытается загрузиться через сеть, это так по-умолчанию, можно тупо принести новый комп из магазина домой, закрытыми глазами его собрать, включить и он загрузится, и станет нодой, частью вашей сети, да... кра-со-та.

UEFI спросит DHCP-сервер, DHCP выдаст IP и скажет, что по такому-то адресу находится загрузчик. UEFI попытается загрузить его по TFTP-протоколу, и в случае успеха, уже сам grub2 покажет красивую менюшку с выбором ОС, — добро пожаловать бездисковую загрузку по сети!

С установкой и запуском tftp-hpa проблем не будет, /usr/sbin/in.tftpd --listen --secure --verbose /var/ftp/tftpboot

Предлагаю всё хранить в /var/ftp/tftpboot, туда же установим загрузчик GRUB2:

# grub-mknetdir --net-directory /var/ftp/tftpboot
Netboot directory for i386-pc created. Configure your DHCP server to point to /var/ftp/tftpboot/boot/grub/i386-pc/core.0
Netboot directory for i386-efi created. Configure your DHCP server to point to /var/ftp/tftpboot/boot/grub/i386-efi/core.efi
Netboot directory for x86_64-efi created. Configure your DHCP server to point to /var/ftp/tftpboot/boot/grub/x86_64-efi/core.efi

Далее DHCP, достаточно настроить чтобы он раздавал IP и говорил по какому адресу находится файл загрузчика, который UEFI будет загружать через TFTP.

# cat /etc/dhcpd.conf
shared-network arpanet {
  interface br0;

  allow booting;
  allow bootp;
  next-server 10.0.0.1;
  filename "boot/grub/i386-pc/core.0";

  subnet 10.0.0.0 netmask 255.0.0.0 {
    option domain-name-servers 8.8.8.8, 8.8.4.4;
    option subnet-mask 255.0.0.0;
    option routers 10.0.0.1;
    range 10.0.0.2 10.0.0.254;
  }
}

Загрузка будет происходить с tftp://${next-server}/${filename}. У меня интерфейс br0 — бридж, в который вхожи все виртуальные машины. Именно br0 присвоен 10.0.0.1. У вас это может быть просто сетевая карта enp1s4po3te5ri7ng9.

Алсо, если у вас реально UEFI, можно добавить проверку, какой загрузчик отдавать системе:

option client-system-architecture-type code 93 = unsigned integer 16;

if option client-system-architecture-type = 00:09 {
  filename "boot/grub/x86_64-efi/core.efi";
}
else {
  filename "boot/grub/i386-pc/core.0";
}

У меня кстати на QEMU с OVMF загрузчик EFI не заработал. Не знаю почему, то ли OVMF кривой, то ли надо тестировать на реальном железе (пока не пробовал).

Ну и вишенкой на торте надо создать обычный grub.cfg vi /var/ftp/tftpboot/boot/grub/grub.cfg:

set default=0
set timeout=60
menuentry "Boot SLAX" {
  linux /boot/os/slax/vmlinuz load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 from=http://10.0.0.1/slax/slax-64bit-9.9.1.iso
  initrd /boot/os/slax/initrfs.img
}
menuentry "Reboot" {
  reboot
}
menuentry "Shutdown" {
  halt
}
menuentry "Continue" {
  exit
}

На этом вся настройка. Для теста я использовал qemu-system-x86_64 -nic tap, который скриптами /etc/qemu-{ifup,ifdown} входил в бридж br0. BIOS спрашивал DHCP, DHCP выдавал IP и сообщал адрес загрузчика, далее BIOS загружал его с TFTP сервера и удачно грузился grub2, а дальше — дело тривиальное. Напихать кучу образов ОС.

Для примера можно использовать SLAX, для этого скачаем ISO-образ дистрибутива, стырим оттуда файлики /slax/boot/{vmlinuz,initrfs.img} и положим к себе в /var/ftp/tftpboot/boos/os/slax/.

Расскажу, как это работает, почему загружается SLAX и почему не загружается Debian / Ubuntu / Anything Else по сети.

Мы включили ПК, по TFTP загрузился grub2 и всё управление сейчас находится у него. Далее, выбирая пунктик меню загрузки SLAX, сам grub2 загружает с TFTP-сервера файлы /vmlinuz и /initrfs.img и передаёт управление уже ядру /vmlinuz. А ядро-то про TFTP сервер ничего не знает! И initrd SLAX'а, и любого другого дистрибутива ничего про TFTP не знает. До того момента, как мы грузимся по сети, мы работаем с TFTP-сервером, grub2 может оттуда загружать все свои модули, шрифты, аниме-картинку-с-понями для фона, но после того, как он передаёт управление ядру — забудьте про TFTP, всё.

В данном примере параметром к ядру указан from=http:// iso-образ SLAX, — да, iso-образ будет скачан с этого ресурса и SLAX будет успешно загружен по сети, нооо, важная деталь — это не параметр ядра, from= сохранится в /proc/cmdline, но ядро не знает что с этим делать, с from= будет работать сам /init скрипт находящийся в initrfs.img. Это чисто фича SLAX, и такой фичи нет у других дистрибутивов.

Как же тогда загрузить Ubuntu Live по сети? Да, grub2 может загрузить ISO образ размером 2гб, но оно вам надо? Ядро не знает про http и ftp (поправьте, если ошибаюсь), но ядро знает про NFS (Network File System) и умеет работать с ней. Таким образом, чтобы загрузить Ubuntu Live, вам надо точно так же извлечь vmlinuz и initrd из iso-образа Ubuntu, а параметром к ядру дописать root=/dev/nfs, таким образом ядро Ubuntu (и любого другого дистрибутива, т.к. это уже фича самого ядра Linux), будет знать, что после того как какой-нибудь скрипт в initrd запросит внешний файл, например, Live-образ системы, — ядро знает, что брать его надо с nfs://10.0.0.1/ubuntu-live — так-то!

Если будут вопросы, постараюсь ответить (хотя скоро спать).

За основу дистрибутива для загрузки по сети я беру любимый CRUX. Вся идея в том, чтобы загружался простенький busybox, подключался к сети (udhcpc), а затем через wget ftp://10.0.0.1/boot/pxelinux.cfg/54:52:00:12:34:56/init.sh && sh init.sh выполнял дальнейшие инструкции для загрузки, которые могут быть вообще любые. Подтягивал любой образ ФС по сети и switch_root в него! Так-то.

 

Spoofing ()

Авторизация по mac-адресу на уровне grub2

По дороге к виртуализации, до кучи захотелось сделать бездисковые станции. Ну, чтобы включаешь новенький ПК, а тебе сразу по DHCP предлагают установить на выбор новую ОС, а по-таймату продолжат загрузку ОС, CRUX например, сделав железку частью моей сети. Как мультизагрузочная флешка, только по сети, по кабелю.

https://files.catbox.moe/dffqpe.png

Установка и настройка DHCP, TFTP прошла успешно. Всего одной командой grub-mknetdir была создана структура /tftpboot директории. Теперь при запуске виртуальной машины без всяких там параметров, или же подключения нового физического компьютера в свич, — они все заходят в бридж br0, где участникам сети раздаются айпишники предлагается загрузка по сети. Включаем ПК / КВМ и получаем приветствие grub2. Пустого, пока что.

Дело тривиальное, наполнить его Debian, Ubuntu, CentOS, ... Windows? Мультизагрузочная «флешка» по сети это одно. Возвращаемся к бездисковым станциям, — допустим, я отправил пакет Wake-On-Lan, физический компьютер без диска включился, далее grub2 предлагает ему как и всем на выбор установку ОС, а по-таймауту в 3 секунды продолжает загрузку уже сконфигурированной ОС _конкретно для данного хоста_.

Суть в том, что таких компьютеров много, задачи у каждого свои: кто-то днс-сервер, кто-то веб-сервер. Тут должна быть какая-то идентификация, по mac-адресу например. На каком уровне тогда её организовать? На уровне grub2? То есть, сделать множественные menuentry "(00-00-00-00-00-FF)" доступными для всех, чтобы grub2 сам выбирал кого загружать в зависимости от mac-адреса устройства. Что в принципе не безопасно, т.к. конфигурации будут доступны всем. Уровне DHCP? Я не знаю как, в зависимости от mac каждому хосту предлагать отдельный загрузчик?

Ещё вопрос, хотел было попробовать freedos для начала, но для его запуска требуется memdisk, который идёт в пакете syslinux. insmod memdisk у граба это не то. Тащить все загрузчики я не хочу, не комильфо. grub2 самый фичастый, и я решил использовать чисто его. Как вы видите, у меня нет никакого «pxelinux.0», только grub2. Но вот походу, memdisk в нём нет, и какой-нибудь установленный образ freedos не загрузить, или я пока не знаю как.

 ,

Spoofing ()

Centos 7 netinstall Ошибка при натройке базового репозитория.

Добрый день!
У меня возникла проблема с установкой Centos, попробовал две версии 7.6 и 7.5.
Запускаю установку по pxe, сервер pxe и tftp это wds под windows server 2019, так сложилось к сожалению.
Ближе к деталям. Был добавлен загрузчик syslinux.
Написал файл загрузки, часть отвечающая за загрузку Centos

LABEL centos
MENU LABEL CentOS
KERNEL Images/Web/centos/7.x/7.5/isolinux/vmlinuz
append initrd=Images/Web/centos/7.x/7.5/isolinux/initrd.img inst.repo=http://192.168.1.251/centos/7.x/7.5/ method=http://192.168.1.251/centos/7.x/7.5/ devfs=nomount
На iis создал сайт с каталогами из образа minimal, всё доступно, всё читается и скачивается. anaconda грузиться без проблем, но во время долгой попытки загрузки метаданных и выходит ошибка при настройке базового репозитория. Причем не важно какой я указываю репозиторий, локальный или внешний.
Помогите разобраться в чем причина такого поведения.

 , , ,

UnderTaket ()

PXE и настройка DNS

Всем привет. Есть образ Debian 9. Который грузится по сети. Создается соединение enp0s3, которое настроено вручную по тем параметрам которые дал DHCP. Но DNS сервера не прописываются. Приходится сбрасывать на второе соединение, которое получает настройки Автоматом (DHCP) и оно уже подтягивает DNS сервера нормально.

Есть ли какой то выход, чтобы сразу подтягивались DNS сервера? Или возможно как-то прописать, чтобы после старта системы делался сброс соединения на автомат(по DHCP)

 , , , ,

echo1337 ()

PXE/TFTP

Всем привет!

Поднимаю PXE в режиме LEGACY/UEFI. С первым проблем нет, работает, а вот со вторым ругаеться.

NBP filename is shim64.efi NBP filesize is 0 Bytes PXE-E23: client received TFTP error from server

файл лежит в /var/lib/tftpboot/, права есть.

В чем может быть проблема?

 

Jecz ()

rescuecd 6x and PXE

Раньше ( до версии 6х ) грузил сабж по сетке без проблем, tftp, NFS, http без вопросов. Но тут сменили дистр и никак не могу осилить это дело :(

Все время пишет типа : '/dev/disk/by-label/' device did not show up after 30 seconds

Почитал инет и вроде это только АРЧа фича :( Может есть кто спец по АРЧу и подскажет куда нажать ?

 , ,

mx__ ()

Fedora Silverblue and net-live

Hi all !
(вроде вопрос не совсем про games)

Тут наткнулся на пару статей :
https://blogs.gnome.org/alexl/2019/03/06/nvidia-drivers-in-fedora-silverblue/
https://fedoramagazine.org/set-up-fedora-silverblue-gaming-station/

Видать я уже отстал от жизни и это уже можно юзать. Попробовал по сабжу поискать в инете, что то не удалось :( Может кто уже искал или делал и кинет ссылку ?

Интересует 2 вопроса :
1. Как silverblue грузить по PXE ?
2. Как в после вшития в образ silverblue нужных пакетов опять сделать так что он уже грузился по сети ?

Спасибо.

 ,

mx__ ()

Проблема с загрузкой dr.Web LiveCD по сети

Выдаёт следующую груду

VFS: Cannot open root device "nfs" or-unknown-block(0,255):error
Kernel panic-not syncing: VFS: Unable to mount root fs on unkonwn-block(0,255)
end Kernel panic-not syncing: VFS: Unable to mount root fs on unknown-block(0,255)
Файл default
 ui vesamenu.c32                                                                                                       
PROMPT 0                                                                                                               
   LABEL bootlocal                                                                                                       menu label Boot from first HDD                                                                                     
   kernel chain.c32                                                                                                   
   append hd0 0                                                                                                       
   timeout 120                                                                                                        
label drweb                                                                                                           
MENU LABEL Drweb  LiveCD                                                                                              
KERNEL images/drweb/iso/casper/vmlinuz                                                                                
INUTRD images/drweb/iso/casper/initrd.lz                                                                              
APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=10.10.1.103:/srv/tftp/images/drweb                               
language=ru locale=ru_RU.UTF-8 quiet splash noapic --                                                                  
 ENDTEXT              

 , , ,

subatomicshifter ()

Автоматическое развертывание настроенной системы по сети.

Имеется работающая система. Есть большое желание установить ее на другие компы с минимальным вмешательством, а лучше, полностью автоматически. Например, с помощью PXE загрузки. Ну или, что-то типа Clonezilla с возможностью удаленного подключения. Загрузилась машина с PXE, зашел и запустил развертывание. Есть такое?

 , ,

AndrK189100 ()

Как сделать filesystem.squashfs?

Мне нужно загрузить Убунту по сети, которая будет запускать пару скриптов. Нужна минимальная сборка, без иксов и с минимальным количеством пакетов и настроек. По первому проблем нет, подгружаю initrd и vmlinuz, а после по nfs filesystem.squashfs. Файлы взял с live cd Убунты 16.04. Все прекрасно работает. Но в filesystem.squashfs с live cd находится много лишнего, знаю, что можно распоковать образ и сделать chroot /mnt/squashfs, но удалять нужно много лишнего. Можно ли сделать filesystem.squashfs из уже установленной системы (голая Убунта 16.04 на жестком диске), как-нибудь так: mksquashfs /dev/sdb1 ~/filesystem.squashfs и после грузить ее по сети? Будет работать?

 , ,

K0m0nec ()

Не инициализируются устройства при сетевой загрузке Ubuntu ... initrd.img

Сетевую загрузку пилил следующим диким способом. Извиняюсь за длинный текст, но так будет ближе к делу. Если нужна дополнительная информация, спрашивайте.

Если есть совсем другой способ, буду благодарен за подробную инструкцию. Однако, пробовал через debootstrap и chroot на i386 системе - не получилось.

В итоге запилил следующее.

0) Клиентская бездисковая машина - сервер на базе Intel Xeon E5

1) Установил минимальный Ubuntu 14.04.5 LTS Server amd64 с загрузочной флэшки и репозитория в интернете. Затем настроил свои скрипты и прикладной софт. Проверил - работает, идет мониторинг этой машины на удаленном zabbix-сервере.

2) Отредактировал /etc/initramfs-tools/initramfs.conf

BOOT=ram

3) Добавил скрипт ram, как рекомендовано здесь но с изменениями, подробно описанными здесь там поэтапно описаны мемуары моей борьбы, есть вопросы но нет ответов

4) На работающей системе создал initrd.img для сетевой загрузки

mkinitramfs -o /home/user1/initrd.img

5) Выключил клиентскую машину, отсоединил диск, примонтировал на рабочей машине, почистил ненужное и упаковал целиком, вместе с директорией boot.

find . -print0 | cpio --null -ov --format=newc | gzip -9 > /путь с архиву/rootfs.cpio.gz
6) Скопировал всё на третью машинуу в каталог /../../tftpboot - это PXE-сервер на базе старой писишки. Забегая вперёд, поскольку родное ядро категорически не хотело грузиться, заимствовал ядро linux из сетевой сборки netboot.tar.gz. Остальное не знаю как применить, не пригодилось.

Получилось следующее

/../../tftpboot/
pxelinux.cfg/
             default
initrd.img
linux
pxelinux.0
rootfs.cpio.gz

файл default настроен так

timeout 0
default default
label default
    kernel linux
    append initrd=initrd.img boot=ram rooturl=ftp://10.0.1.1/rootfs.cpio.gz
7) Настроил DHCP и TFTP на основе dnsmasq

8) Включаю целевую бездисковую машину,

стартует получение IP по DHCP, получен IP, загружены pxelinux.0 linux initrd.img стартовал скрипт ram но остановился на строке configure_networking, с ошибкой

ipconfig: no devices to confugure
/init: .: line 222: can't open 'run/net-*.conf'
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000200
...

содержимое этого скрипта-ram с отладочным кодом и неудачными попытками

retry_nr=0

do_rammount()
{

log_begin_msg "configure_networking"

# Вешается внутри этой функции
    configure_networking

    E=$?
    #if [ $E ]; then
	log_begin_msg "ERROR=$E"
    #fi
log_end_msg

    /bin/sleep 30

log_begin_msg "mkdir -p /tmp/rootfs"
    mkdir -p /tmp/rootfs
log_end_msg

    cd /tmp/rootfs
      IP=`echo "${rooturl}"|sed -e 's/^[^0-9.]*\([0-9.]*\)\/\(.*\)$/\1/'`
    FILE=`echo "${rooturl}"|sed -e 's/^[^0-9.]*\([0-9.]*\)\/\(.*\)$/\2/'`
#Это осталось от попыток качать образ tftp и ftp клиентами, которых не нашлось. Но до закачки всё равно пока не доходит из-за отсутствия устройств.

log_begin_msg "wget ftp://$IP:69/$FILE -O /tmp/rootfs/$FILE"
    wget ftp://$IP:69/$FILE -O /tmp/rootfs/$FILE
log_end_msg

#log_begin_msg "echo get "$FILE"|ftp "$IP
#    echo "get $FILE"|ftp $IP
#log_end_msg

log_begin_msg "mkdir -p ${rootmnt}"
    mkdir -p ${rootmnt}
log_end_msg

log_begin_msg "mount -t tmpfs -o size=6G none ${rootmnt}"
    mount -t tmpfs -o size=6G none ${rootmnt}
log_end_msg

log_begin_msg "gzip -dc /tmp/rootfs/rootfs.cpio.gz|cpio -idm -"
    cd ${rootmnt}
    gzip -dc /tmp/rootfs/rootfs.cpio.gz|cpio -im -
log_end_msg
}

# Это основная функция
mountroot(){

log_begin_msg "for x in $(cat /proc/cmdline); do"
    for x in $(cat /proc/cmdline); do
	case $x in
	rooturl=*)
		export rooturl=${x#rooturl=}
		;;
	esac
    done
log_end_msg

    /bin/sleep 10

# Это я добавил просто так, т.к. ничего не получалось
log_begin_msg "load_modules"
    load_modules
log_end_msg

    /bin/sleep 10

log_begin_msg "wait_for_udev 10"
    wait_for_udev 30
log_end_msg

    /bin/sleep 10

log_begin_msg "delay=${ROOTDELAY:-180}"
    delay=${ROOTDELAY:-180}
log_end_msg

    /bin/sleep 10

# Этот блок не решает проблему. Устройств как не было , так и не появляются
log_begin_msg "modprobe af_packet;ifdown*;modprobe e1000e;ifup*"
    modprobe af_packet
    ifdown eth3;ifdown eth2;ifdown eth1;ifdown eth0
    #rmmod e1000e; modprobe -r e1000e;
    modprobe e1000e
    ifup eth0; ifup eth1; ifup eth2; ifup eth3
    ls /sys/class/net
log_end_msg

    /bin/sleep 10

# Это тоже добавлено просто так, может поможет, не помогло
log_begin_msg "resolve_device /dev/eth0"
    resolve_device /dev/eth0
log_end_msg

    /bin/sleep 10

log_begin_msg "do_rammount"
    # Досюда доходит, но далее оно повиснет
    do_rammount
log_end_msg

# Досюда и до цикла не доходит

    /bin/sleep 1

log_begin_msg "while [ ${retry_nr} -lt ${delay} ] && [ ! -e ${rootmnt}${init} ]; do"
    while [ ${retry_nr} -lt ${delay} ] && [ ! -e ${rootmnt}${init} ]; do
	/bin/sleep 3
	log_begin_msg "do_rammount"
	    do_rammount
	log_end_msg
	retry_nr=$(( ${retry_nr} + 1 ))
    done
log_end_msg
}

 , ,

MariaRTI ()