LINUX.ORG.RU

установка по сети

 , ,


0

1

имею работающий ltsp от дебиана, который работает на просто pxe через прсотой tftp.

захотел попробовать arch на нотик поставить, до этого с ним дела не имел.

лишней болванки и флешки нет, решил воспользоваться тем, что netboot уже настроен и работает (мне так казалось).

сходил сюда, скачал образ, слегка разобравшись в противоречащих командах получил рабочее меню арча.

но тут возникла незадача - при попытке загрузиться клиент пытается получить с сервера сначала vmlinuz, а затем initrd.img, при том, что последний зачем-то весит 90 мб!

tftpd-сервер жалуется в лог, что файл слегка большой, обосновывая это некиим BLKSIZE, который, как я понял, устанавливается на стороне клиента. осиливать прошивку своего нотиковского загрузчика я не стал, от чего вопросы:

это вообще нормально, что в системе, ориентированной на загрузку с tftp предлагается такой большой файл?

это нормально, что initrd установщика столько весит?

каким образом это работает у других пользователей по этому мануалу?

я правда не в курсе, просто в моём сетевом установщике дебиана initrd весит 6 метров, в ltsp-образе 9.

и отдельным пунктиком хотелось бы выяснить, одному ли мне кажется следующая последовательность нелогичной?

mv /var/tftpboot/boot/{iso,sys}linux/* /var/tftpboot/
rmdir /var/tftpboot/boot/{iso,sys}linux
...
ln -s /var/tftpboot/{iso,sys}linux/pxelinux.0 /var/tftpboot/pxelinux.0

и самый главный вопрос - как это надо было сделать правильно? настроить gpxe и получать файлы через http? пересобрать для себя новый initrd? найти более древний релиз и взять initrd оттуда?

★★

Ответ на: комментарий от thelonelyisland

я остановился немного раньше, чем установка арча, так что твоя формулировка некорректна, но да. я не осилил.

и если я правильно тебя понял, то в арче всё так: документация неполна и неадекватна, пакеты несовместимы..? (=

ну серьезно, это больше похоже на битый сидюк, который читается только в приводе автора, это, на мой скромный взгляд, не есть повод для того, чтобы говорить, что я не осилил арч ^_^

billic ★★
() автор топика
Ответ на: комментарий от thelonelyisland

а слова «лишней болванки и флешки нет, решил воспользоваться тем, что netboot уже настроен и работает (мне так казалось).» тебе ни о чем не говорят, да? или метки pxe и tftp я поставил прсото так.

я не спорю, что любая макака с болванкой или юсб сможет, или же по-твоему разработчики просто так собирали образ для сетевой загрузки?

billic ★★
() автор топика
Ответ на: комментарий от billic

Можете использовать nfsroot, но ядро придётся собирать вам вам самому, т.к. в ядре на archboot NFS клиент собран модулем и вообще отключена возможность монтировать корень на nfs.

Нужно будет включить эти опции в ядре:

Device Drivers --->
  [*] Networking support
  Networking options --->
    <*> Packet socket
    <*> Unix domain sockets
    [*] TCP/IP networking
    [*]   IP: multicasting
    [*]   IP: kernel level autoconfiguration
    [*]     IP: DHCP support (NEW)

File systems --->
  Network File Systems  --->
    <*> file system support
    [*]   Provide NFSv3 client support
    [*]   Root file system on NFS

Так же включить поддержку вашей сетевой карты

Device Drivers
   [*] Network device support  ---> 
      [*]   Ethernet (10 or 100Mbit)  --->
      [*]   Ethernet (1000 Mbit)  --->
      [*]   Ethernet (10000 Mbit)  --->
контроллера жёстких дисков
Device Drivers
   <*> Serial ATA and Parallel ATA drivers  --->
и поддержку файловой системы, которую вы хотите использовать на корневом разделе
File systems  --->

Затем распаковываете initrd.img:

mkdir /var/nfs/initrd
cd /var/nfs/initrd
xz -cd /<path_to_initrd.img>/initrd.img | cpio -i -d -H newc

Правите сценарий init до такого состояния:

#!/bin/bash
PATH=/usr/sbin:/usr/bin:/sbin:/bin

. /init_functions
# add sh symlink
ln -s /bin/bash /bin/sh

mount -t proc proc /proc -o nosuid,noexec,nodev
mount -t sysfs sys /sys -o nosuid,noexec,nodev

mount -t devtmpfs dev /dev -o mode=0755,nosuid
mount -t tmpfs run /run -o nosuid,nodev,mode=0755

mkdir -m755 /run/initramfs

# parse the kernel command line
parse_cmdline

# if available, start udevd at this stage
if [ -x /lib/udev/udevd ]; then
    msg ":: Starting udevd..."
    /lib/udev/udevd --daemon --resolve-names=never
    udevd_running=1
    msg "done."
else
    udevd_running=0
fi

for d in ${disablehooks//,/ }; do
    eval "hook_${d}=disabled"
done

earlymodules=${earlymodules//,/ }
if [ -n "${earlymodules## }" ]; then
    modprobe -qab ${earlymodules}
fi

. /config

[ -n "${MODULES## }" ] && modprobe -qab $MODULES

# If rootdelay is empty or not a non-negative integer, set it to 10
if [ -z "${rootdelay}" ] || ! [ ${rootdelay} -ge 0 ]; then
    rootdelay=10
fi

if [ -e "/hooks" ]; then
    for h in ${HOOKS}; do
        TST=""
        eval "TST=\$hook_${h}"
        if [ "${TST}" != "disabled" ]; then
            run_hook () { msg "${h}: no run function defined"; }
            if [ -e "/hooks/${h}" ]; then
               . /hooks/${h}
               msg ":: Running Hook [${h}]"
               run_hook
            fi
        fi
    done
fi

# honor the old behavior of break=y as a synonym for break=premount
if [ "${break}" = "y" ] || [ "${break}" = "premount" ]; then
    echo ":: Pre-mount break requested, type 'exit' to resume operation"
    launch_interactive_shell
fi

exec /sbin/init

И убираете hook net:

rm /var/nfs/initrd/hook/net

Редактируете /etc/exports:

/var/nfs/initrd *(rw,sync,no_root_squash)

В конфигурационном файле pxelinux.0, pxelinux.cfg/default добавляете строку загрузки ядра:

LABEL archboot
KERNEL <kerne_name>
APPEND ip=dhcp root=/dev/nfs nfsroot=nfs_server_ip>:/var/nfs/initrd init=/init rw

Да, при повторном запуске нужно чистить /tmp/* и /var/run, но это уже допишите сами.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

спасибо большое!

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

billic ★★
() автор топика
Ответ на: комментарий от billic

Я же вам написал:

Можете использовать nfsroot, но ядро придётся собирать вам вам самому, т.к. в ядре на archboot NFS клиент собран модулем и вообще отключена возможность монтировать корень на nfs.

В ядре, которое поставляется с archboot отключены опции монтирования корневой файловой системе по nfs., а именное:

  • CONFIG_IP_PNP - IP: kernel level autoconfiguration (выключена)
  • CONFIG_IP_PNP_DHCP - IP: DHCP support (выключена)
  • CONFIG_IP_PNP_BOOTP - IP: BOOTP support (выключена)
  • CONFIG_IP_PNP_RARP - IP: RARP support (выключена)
  • CONFIG_ROOT_NFS - Root file system on NFS (выключена)
  • CONFIG_NFS_FS - NFS client support (собрана модулем, а должна монолитно)

Так же поддержка сетевой карты и контроллера жёстких дисков собрана модулем, а должны быть собраны монолитно, иначе нужно генерировать ещё initrd для их подгрузки. Но ядро всё равно нужно пересобирать для поддержки монтирвоания корневой файолвой системы по nfs.

Видимо ядро для этого не рассчитывалось.

Я же вам всё это расписал прочитайте внимательно. Возможно есть в archlinux ядро где опция 'CONFIG_ROOT_NFS' включена, но пять же в archlinux почти всё собирается модулями, в частности поддержка сетевой карты и контроллера жёстких дисков, а она должна быть в ядре монолитно, иначе как я сказал нужно собирать отдельный initrd для их подгрузки, а уже затем монтировать корень по nfs.

Так что проще взять и собрать ядро.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Я же вам написал:

это значит, что в archlinux предполагается использовать nfs для установки на новую систему? я не понимаю, если так - то почему об nfs ни слова в статье? я крайне Вам благодарен за подробную инструкцию, но мой вопрос в том, действительно ли нужно использовать nfs, или же предполагалось что-то ещё, вроде модифицированного клиента tftp, самостоятельной сборки initrd, которая влезет в стандартный максимальный размер или же чего-то ещё?

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

спасибо. извините.

billic ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.