Бездисковая загрузка linux (загрузить по сети и работать локально)
Модераторы: SLEDopit, Модераторы разделов
-
iltmpz
- Сообщения: 34
- ОС: Mandriva 2010
Бездисковая загрузка linux
Захотел вот сделать бездисковую загрузку рабочих станций с сервера (как запасной вариант на случай повреждения лок. фс, просто быстро загрузить linux rescue по PXE, чтобы не возиться с болванками и т.п.)
Однако не могу понять принцип, как это делать.
Сейчас у меня OpenSUSE linux, работает бездисковая установка, которая использует свое ядро и initrd. Она сразу запускает процесс установки. А хочется, чтобы просто монтировалась ФС и с нее уже шла загрузка.
Однако я никак не могу понять принципы функционирования и параметры ядра:
Как я понял, грузится ядро и первоначально в качестве корневой ФС использует initrd. Как только первоначальная загрузка завершена - монтируется уже основная корневая ФС, и загрузка идет дальше?
Для установки используются параметры ядра (в конфиге tftp): append initrd=initrd install=nfs://ip:/share
А вот что делать для загрузки - я не понимаю.
- пробовал использовать те же linux/initrd от инсталлятора - сразу начинается установка.
- взял свои linux/initrd из /boot - он не видит nfs. Пересобрал ядро с поддержкой nfs в ядре - не понимаю, как передавать ему параметры, пробовал:
append initrd=initrd-2 ramdisk_size=32768 root=/dev/ram0 nfsroot=nfs://ip:/share/fs
- пробовал в /share выкладывать копию корневой ФС, либо создавать файл fs и в нем размещать копию ФС.
Монтироваться эта ФС не хочет - wrong fs type...
Причем initrd похоже подгружается, а вот дальше процесс не идет.
Как я понимаю - вся проблема в том, что возможно чего-то не хватает в ядре, возможно, как-то надо подправить initrd и грамотно подключить корневую ФС - буквально пара команд и параметров, но вот никак не разберусь, какие...
Однако не могу понять принцип, как это делать.
Сейчас у меня OpenSUSE linux, работает бездисковая установка, которая использует свое ядро и initrd. Она сразу запускает процесс установки. А хочется, чтобы просто монтировалась ФС и с нее уже шла загрузка.
Однако я никак не могу понять принципы функционирования и параметры ядра:
Как я понял, грузится ядро и первоначально в качестве корневой ФС использует initrd. Как только первоначальная загрузка завершена - монтируется уже основная корневая ФС, и загрузка идет дальше?
Для установки используются параметры ядра (в конфиге tftp): append initrd=initrd install=nfs://ip:/share
А вот что делать для загрузки - я не понимаю.
- пробовал использовать те же linux/initrd от инсталлятора - сразу начинается установка.
- взял свои linux/initrd из /boot - он не видит nfs. Пересобрал ядро с поддержкой nfs в ядре - не понимаю, как передавать ему параметры, пробовал:
append initrd=initrd-2 ramdisk_size=32768 root=/dev/ram0 nfsroot=nfs://ip:/share/fs
- пробовал в /share выкладывать копию корневой ФС, либо создавать файл fs и в нем размещать копию ФС.
Монтироваться эта ФС не хочет - wrong fs type...
Причем initrd похоже подгружается, а вот дальше процесс не идет.
Как я понимаю - вся проблема в том, что возможно чего-то не хватает в ядре, возможно, как-то надо подправить initrd и грамотно подключить корневую ФС - буквально пара команд и параметров, но вот никак не разберусь, какие...
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Бездисковая загрузка linux
соберите ядро вот так:
и грузитесь с nfs сервера.
(initrd НЕ нужен при этом. если он, конечно вам не нужен для других целей.
если initrd будете использовать обязательно в нем создайте с помощью mknod /dev/nfs)
взято тут: http://www.linuxcenter.ru/lib/articles/sof...erminals2.phtml
у меня так долго работало, потом захотелось ssh и я переделал на initrd. могу поделиться если надо, но это довольно сложно.
Очень важно включить поддержку NFS в файловых системах, далее в поддержке сети (вернуться) IP kernel level autoconfiguration и в открывшихся возможностях выбрать поддержку BOOTP и RARP. После этого в файловых системах выбрать поддержку корневого раздела на NFS.
Многие советуют собирать большие ядра с поддержкой initrd, помещая на него часть загружаемых модулей. Но автор статьи собрал монолитное ядро без поддержки модулей, выбросив всё лишнее - в том числе драйвера неиспользуемых сетевых карт. Получилось чуть больше 1 Мб.
Такое ядро, в принципе, даже влазит на дискету и загружается последней версией loadlin (что очень важно для старых компьютеров, не имеющих других внешних устройств, кроме дисковода 3,5").
ВНИМАНИЕ! В дистрибутиве Debian3.1 имеется loadlin с ошибками. Он такое ядро на загружает (хотя это обещано в его документации). "Правильный" loadlin имеется в комплекте следующего Debian'а, который на момент написания этого текста находится в состоянии test.
Для правильной (тестовой) загрузки ядру необходимо передать строку параметров типа
root=/dev/nfs nfsroot=/netroot ip=10.1.1.2:10.1.1.1::255.255.255.0:::
Имея в виду, что IP-адрес сервера 10.1.1.1
и грузитесь с nfs сервера.
(initrd НЕ нужен при этом. если он, конечно вам не нужен для других целей.
если initrd будете использовать обязательно в нем создайте с помощью mknod /dev/nfs)
взято тут: http://www.linuxcenter.ru/lib/articles/sof...erminals2.phtml
у меня так долго работало, потом захотелось ssh и я переделал на initrd. могу поделиться если надо, но это довольно сложно.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
iltmpz
- Сообщения: 34
- ОС: Mandriva 2010
Re: Бездисковая загрузка linux
Спасибо, очень полезная ссылка,
хотя у меня пока не заработало - nfs не монтируется - но продолжаю разбираться...
хотя у меня пока не заработало - nfs не монтируется - но продолжаю разбираться...
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Бездисковая загрузка linux
спрашивайте вопросы, если что (только с приложением конфигов и сообщениями об ошибках) - я на этом стадо собак съел :-\
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
iltmpz
- Сообщения: 34
- ОС: Mandriva 2010
Re: Бездисковая загрузка linux
Включил в ядре IP kernel level autoconfiguration, для него включил DHCP, BOOTP, RARP support.
Еще включил root file system on NFS
Больше в ядре ничего не менял.
В конфиге пробую прописать:
(У меня nfs - 30.4 - я его туда прописал? 30.15 это я вроде как ip бездисковой машины указал). В результате ядро грузится и пишет, что nfs-server не найден.
Пробовал другую настройку: append root=/dev/nfs nfsroot=192.168.30.4:/local/s1 ip=192.168.30.15
Пишет: Looking up port of RPC 100005/1 on 192.168.30.4
rpcbind - timeout, Root-NFS - unable, и дальше предлагает insert root floppy.
192.168.30.4:/local/s1 - сетевая шара nfs работает - в s1 я просто тупо скопировал все файлы из /
Это я еще что-то забыл включить в ядре?
Что я не так сделал?
Еще включил root file system on NFS
Больше в ядре ничего не менял.
В конфиге пробую прописать:
Код: Выделить всё
kernel bzImage
append root=/dev/nfs nfsroot=/local/s1 ip=192.168.30.15:192.168.30.4::255.255.255.0:::(У меня nfs - 30.4 - я его туда прописал? 30.15 это я вроде как ip бездисковой машины указал). В результате ядро грузится и пишет, что nfs-server не найден.
Пробовал другую настройку: append root=/dev/nfs nfsroot=192.168.30.4:/local/s1 ip=192.168.30.15
Пишет: Looking up port of RPC 100005/1 on 192.168.30.4
rpcbind - timeout, Root-NFS - unable, и дальше предлагает insert root floppy.
192.168.30.4:/local/s1 - сетевая шара nfs работает - в s1 я просто тупо скопировал все файлы из /
Это я еще что-то забыл включить в ядре?
Что я не так сделал?
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Бездисковая загрузка linux
в ядро сетевуху включили жестко или модулем?
(нужно жестко)
в тот момент, когда клиент пытается достучаться до сервера он пингуется?
не увидел у вас в настройках шлюза - он не нужен?
initrd используете?
на сервере запущен portmap?
вот. :-)
(нужно жестко)
в тот момент, когда клиент пытается достучаться до сервера он пингуется?
не увидел у вас в настройках шлюза - он не нужен?
initrd используете?
на сервере запущен portmap?
вот. :-)
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
-
iltmpz
- Сообщения: 34
- ОС: Mandriva 2010
Re: Бездисковая загрузка linux
Ленивая Бестолочь писал(а): ↑26.03.2009 17:39в ядро сетевуху включили жестко или модулем?
(нужно жестко)
в тот момент, когда клиент пытается достучаться до сервера он пингуется?
не увидел у вас в настройках шлюза - он не нужен?
initrd используете?
на сервере запущен portmap?
вот. :-)
А, точно - сетевуху-то я и забыл жестко включить - мог бы сам догадаться, пересобираю ядро...
Клиент не пинговался, шлюз не нужен (хотя не нашел, где его задавать), на сервере все в порядке вроде бы - простая машина к этой nfs цепляется.
inird по Вашему совету не использую (Может, зря, можно было бы все драйвера туда включить чтобы ядро лишний раз не пересобирать?)
-
iltmpz
- Сообщения: 34
- ОС: Mandriva 2010
Re: Бездисковая загрузка linux
Да, точно, спасибо - ядро грузится, rootfs цепляет 
Теперь возникает вопрос, как проще всего правильно сделать корневую ФС?
1. можно оставить ее read-only?
2. куда и как поместить модули ядра? Не хочу абсолютно все модули жестко включать в ядро. В обычном (не бездисковом) варианте они вроде бы как раз читаются из initrd, а тут что делать?
3. то что предлагают по той ссылке: - это зачем? Это обязательно, или можно просто скопировать rootfs как я прямо в подкаталог?
Теперь возникает вопрос, как проще всего правильно сделать корневую ФС?
1. можно оставить ее read-only?
2. куда и как поместить модули ядра? Не хочу абсолютно все модули жестко включать в ядро. В обычном (не бездисковом) варианте они вроде бы как раз читаются из initrd, а тут что делать?
3. то что предлагают по той ссылке:
Код: Выделить всё
dd if=/dev/zero of=/netrootimage bs=1024 count=524288
mke2fs /netrootimage-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Бездисковая загрузка linux
на каком дистрибутиве вы это все проделываете?
просто про opensuse не могу ничего красивого посоветовать, т.к. я с ней не работал.
а в дебиане я бы сделал так:
создаем директорию для корневой ФС клиента:
ставим туда базовую систему дебиана с помощью debootstrap
собираем ядро и модули, раскладываем все по местам (ядро на клиент или tftp если пользуете), модули в /lib/modules/<версия>
в принципе можно и просто копировать систему, как в том руководстве предлагают.
еще: если будете initrd использовать - придется его распокавать скорее всего и создать в нет /dev/nfs с помощью mknod.
я собирал довольно минималистское ядро под конкретную конфигурацию, поэтому модули не использовал.
initrd я сейчас использую, т.к. пользуюсь не стандартным средством подключения корневой фс, а сделал скрипт, который лежит в initrd и поднимает vpn по ssh до сервера и уже внутри него подключается по nfs. это для безопасности + сжатие трафика.
просто про opensuse не могу ничего красивого посоветовать, т.к. я с ней не работал.
а в дебиане я бы сделал так:
создаем директорию для корневой ФС клиента:
ставим туда базовую систему дебиана с помощью debootstrap
собираем ядро и модули, раскладываем все по местам (ядро на клиент или tftp если пользуете), модули в /lib/modules/<версия>
в принципе можно и просто копировать систему, как в том руководстве предлагают.
еще: если будете initrd использовать - придется его распокавать скорее всего и создать в нет /dev/nfs с помощью mknod.
inird по Вашему совету не использую (Может, зря, можно было бы все драйвера туда включить чтобы ядро лишний раз не пересобирать?)
я собирал довольно минималистское ядро под конкретную конфигурацию, поэтому модули не использовал.
initrd я сейчас использую, т.к. пользуюсь не стандартным средством подключения корневой фс, а сделал скрипт, который лежит в initrd и поднимает vpn по ssh до сервера и уже внутри него подключается по nfs. это для безопасности + сжатие трафика.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
-
iltmpz
- Сообщения: 34
- ОС: Mandriva 2010
Re: Бездисковая загрузка linux
nfs через vpn по ssh, да еще и из-под initrd это круто!
Мне наверно такое не понадобится...
Наконец-то дособирались модули - скопировал, подключил - ядро грузится, модули цепляются.
Уже выдало приглашение "login:", правда залогиниться пока не дает.
Думаю, осталось совсем немного: смонтировать пару ФС для записи (типа /tmp), а то у меня только read-only rootfs, разобраться с fstab и добиться того чтобы это запускалось. В ближайшее время закончу.
Еще раз спасибо!
Мне наверно такое не понадобится...
Наконец-то дособирались модули - скопировал, подключил - ядро грузится, модули цепляются.
Уже выдало приглашение "login:", правда залогиниться пока не дает.
Думаю, осталось совсем немного: смонтировать пару ФС для записи (типа /tmp), а то у меня только read-only rootfs, разобраться с fstab и добиться того чтобы это запускалось. В ближайшее время закончу.
Еще раз спасибо!
-
iltmpz
- Сообщения: 34
- ОС: Mandriva 2010
Re: Бездисковая загрузка linux
Наконец-то дошли руки - доделал, ровно полгода прошло
Но лучше поздно, чем никогда
Итак, описываю что и как делал и что получилось (в основном чтобы еще через полгода-год не изобретать все это еще раз если понадобится, ну и вдруг кому тоже полезно будет).
В качестве бездискового клиента использовал OpenSUSE 11.0 x86
Что использовать в качестве серверов NFS и DHCP - не принципиально (у меня те же opensuse, правда x64 и 10.3)
NFS-сервер: 192.168.30.4, путь к корневой фс: /local/pxe/s2
Также у меня работает DHCP-сервер, в нем дополнительно включил раздачу имен (а то имя хоста само ставилось как 192)
Корневую ФС сервер отдает клиенту как read-only.
Настройка tftp-сервера: в pxelinux.cfg/default прописал:
Поставил на тестовую машину (vmware) чистую OpenSUSE 11.0 x86, потом загрузился с другой системы, смонтировал ее диск, скопировал файловую систему на сервер NFS: rsync -auxS /mnt/ 192.168.30.4:/local/pxe/s2 (пишу по памяти)
Потом есть нюанс: root_squash в /etc/exports - root:root на клиенте превращается в nobody:nogroup на сервере.
Сменил владельца файлов рута на nobody:
find /local/pxe/s2/ -user root | xargs chown nobody #(пишу по памяти)
find /local/pxe/s2/ -group root | xargs chgrp nogroup #(пишу по памяти)
При этом не поменялись владельцы файлов с пробелами в именах (видимо я как-то не так xargs использовал), ну и фиг с ними.
Далее, меняем конфиги будущей бездисковой системы:
В /local/pxe/s2/etc/init.d/boot добавил после секции # populate /dev with initial content:
Что, зачем и почему:
В /tmp монтирую рамдиск - диск в памяти т.е, 200 Мбайт достаточно с запасом, на клиентах выделить столько не проблема.
На рамдиске размещаем данные, которые должны быть rw - это /etc, /var и /root
Далее нюанс с перекидыванием etc: /etc нужно для нормальной работы в режиме read-write, значит монтируем туда рамдиск, причем etc нужно и до такого монтирования, и после него. Чтобы не возникало путаницы с 2 разными etc и чтобы не вникать, какая часть файлов нужна "до", а какая "после" - просто скопировал все 1к1, после чего произвел подмену одной командой mount --bind.
Кроме этого я создал каталог /var_ro. Он копируется на рамдиск как /var при каждой загрузке.
Кроме того, я создал каталог /ro_shared - для хранения слишком больших каталогов из /etc и /var, которые могут быть read-only. Копировал их не надо - просто подключаю symlink'ами.
В итоге получилось так:
Как-то бестолково написал,
Смысл такой: если каталог /var/что_то_там нужен большой - на рамдиске его хранить нет места, а находится в /var_ro (который копируется на рамдиск), тогда в /var_ro создаем симлинк в соответствующий каталог /ro_shared. А если в этом /ro_shared оказалось нечто, что должно быть в режиме rw - перемещаем его обратно в /var_ro и делаем симлинк на /var
Следующий этап: почему-то загрузка зависала при попытке найти DHCP, наверно потому что сеть уже была в этот момент подключена, не знаю, просто убрал network start, в файле: /local/pxe/s2/etc/rc.d/network просто заменить все секции 'case "$ACTION" in ' на:
Еще в /local/pxe/s2/etc/inittab был runlevel 5, поменял на 3 (все равно X пока не грузятся, точнее грузятся только на той тестовой vmware, но я пока и не ставил себе такой задачи).
И в /etc/fstab убираю все лишнее, т.е. локальные диски.
Кажется, все.
запускаю, при загрузке pxe ввожу "rsc" - система грузится, причем практически без ошибок - ругается на отсутствие в fstab'е rootfs, да и фиг бы с ней.
Почему-то df показывает только одну ФС /dev, не понял почему не показывает корневую и рамдиск, может, потому что /proc и /sys монтируются позже рамдиска, ну да ладно, главное - система работает.
Если буду менять конфигурацию, доделывать и будет время/желание - этот пост тоже буду редактировать.
Дополнения/уточнения по существу вопроса приветствуются, вопросы тоже можно задавать
Но лучше поздно, чем никогда
Итак, описываю что и как делал и что получилось (в основном чтобы еще через полгода-год не изобретать все это еще раз если понадобится, ну и вдруг кому тоже полезно будет).
В качестве бездискового клиента использовал OpenSUSE 11.0 x86
Что использовать в качестве серверов NFS и DHCP - не принципиально (у меня те же opensuse, правда x64 и 10.3)
NFS-сервер: 192.168.30.4, путь к корневой фс: /local/pxe/s2
Также у меня работает DHCP-сервер, в нем дополнительно включил раздачу имен (а то имя хоста само ставилось как 192)
Корневую ФС сервер отдает клиенту как read-only.
Настройка tftp-сервера: в pxelinux.cfg/default прописал:
Код: Выделить всё
# Rescue server
label rsc
kernel bzImage
append root=/dev/nfs nfsroot=192.168.30.4:/local/pxe/s2 ip=dhcp vga=0x314Поставил на тестовую машину (vmware) чистую OpenSUSE 11.0 x86, потом загрузился с другой системы, смонтировал ее диск, скопировал файловую систему на сервер NFS: rsync -auxS /mnt/ 192.168.30.4:/local/pxe/s2 (пишу по памяти)
Потом есть нюанс: root_squash в /etc/exports - root:root на клиенте превращается в nobody:nogroup на сервере.
Сменил владельца файлов рута на nobody:
find /local/pxe/s2/ -user root | xargs chown nobody #(пишу по памяти)
find /local/pxe/s2/ -group root | xargs chgrp nogroup #(пишу по памяти)
При этом не поменялись владельцы файлов с пробелами в именах (видимо я как-то не так xargs использовал), ну и фиг с ними.
Далее, меняем конфиги будущей бездисковой системы:
В /local/pxe/s2/etc/init.d/boot добавил после секции # populate /dev with initial content:
Код: Выделить всё
#
# Diskless boot features
#
echo "Diskless boot processing"
echo -n "Mounting ramdisk to /tmp"
mount -t tmpfs -o size=200m tmpfs /tmp
rc_status -v -r
mkdir /tmp/etc /tmp/var /tmp/log /tmp/misc /tmp/lock /tmp/root
echo "Copying /etc to /tmp"
cp -r /etc /tmp
echo "Copying /var to /tmp"
cp -r /var_ro/* /tmp/var
echo "Mounting /tmp/etc to /etc"
mount --bind /tmp/etc /etc
rc_status -v -rЧто, зачем и почему:
В /tmp монтирую рамдиск - диск в памяти т.е, 200 Мбайт достаточно с запасом, на клиентах выделить столько не проблема.
На рамдиске размещаем данные, которые должны быть rw - это /etc, /var и /root
Далее нюанс с перекидыванием etc: /etc нужно для нормальной работы в режиме read-write, значит монтируем туда рамдиск, причем etc нужно и до такого монтирования, и после него. Чтобы не возникало путаницы с 2 разными etc и чтобы не вникать, какая часть файлов нужна "до", а какая "после" - просто скопировал все 1к1, после чего произвел подмену одной командой mount --bind.
Кроме этого я создал каталог /var_ro. Он копируется на рамдиск как /var при каждой загрузке.
Кроме того, я создал каталог /ro_shared - для хранения слишком больших каталогов из /etc и /var, которые могут быть read-only. Копировал их не надо - просто подключаю symlink'ами.
В итоге получилось так:
Код: Выделить всё
# ls -l /local/pxe/s2/
итого 84
drwxr-xr-x 2 nobody nogroup 4096 Авг 20 11:41 bin
drwxr-xr-x 3 nobody nogroup 4096 Авг 20 11:53 boot
drwxr-xr-x 5 nobody nogroup 4096 Авг 20 11:30 dev
drwxr-xr-x 98 nobody nogroup 12288 Авг 20 18:14 etc
drwxr-xr-x 3 nobody nogroup 4096 Авг 20 11:55 home
drwxr-xr-x 13 nobody nogroup 4096 Авг 20 11:41 lib
drwxr-xr-x 2 nobody nogroup 4096 Июн 7 2008 media
drwxr-xr-x 2 nobody nogroup 4096 Авг 20 16:09 mnt
drwxr-xr-x 3 nobody nogroup 4096 Июн 7 2008 opt
drwxr-xr-x 3 nobody nogroup 4096 Авг 20 11:30 proc
lrwxrwxrwx 1 root root 9 Авг 20 16:10 root -> /tmp/root
drwxr-xr-x 4 nobody nogroup 4096 Авг 20 18:16 ro_shared
drwxr-xr-x 3 nobody nogroup 12288 Авг 20 11:51 sbin
drwxr-xr-x 5 nobody nogroup 4096 Авг 20 11:49 srv
drwxr-xr-x 3 nobody nogroup 4096 Авг 20 11:30 sys
drwxrwxrwt 7 nobody nogroup 4096 Авг 20 12:03 tmp
drwxr-xr-x 12 nobody nogroup 4096 Авг 20 11:32 usr
lrwxrwxrwx 1 root root 8 Авг 20 16:11 var -> /tmp/var
drwxr-xr-x 14 nobody nogroup 4096 Авг 20 18:13 var_roКод: Выделить всё
# ls -l `find /local/pxe/s2/ro_shared -maxdepth 2`
/local/pxe/s2/ro_shared:
итого 8
drwxr-xr-x 4 root root 4096 Авг 20 18:14 etc
drwxr-xr-x 4 root root 4096 Авг 20 18:18 var
/local/pxe/s2/ro_shared/etc:
итого 8
drwxr-xr-x 3 nobody nogroup 4096 Июн 6 2008 bootsplash
drwxr-xr-x 8 nobody nogroup 4096 Авг 20 11:43 gconf
/local/pxe/s2/ro_shared/etc/bootsplash:
итого 4
drwxr-xr-x 3 nobody nogroup 4096 Июн 6 2008 themes
/local/pxe/s2/ro_shared/etc/gconf:
итого 28
drwxr-xr-x 2 nobody nogroup 4096 Авг 20 11:43 2
drwxr-xr-x 2 nobody nogroup 4096 Июн 7 2008 gconf.xml.defaults
drwxr-xr-x 2 nobody nogroup 4096 Июн 7 2008 gconf.xml.mandatory
drwxr-xr-x 6 nobody nogroup 4096 Авг 20 11:51 gconf.xml.schemas
drwxr-xr-x 2 nobody nogroup 4096 Авг 20 11:44 gconf.xml.vendor
-rw-r--r-- 1 nobody nogroup 34 Июн 7 2008 schema-install-source
drwxr-xr-x 2 nobody nogroup 4096 Авг 20 11:51 schemas
/local/pxe/s2/ro_shared/var:
итого 8
drwxr-xr-x 4 root root 4096 Авг 20 18:18 cache
drwxr-xr-x 3 root root 4096 Авг 20 18:19 lib
/local/pxe/s2/ro_shared/var/cache:
итого 8
drwxr-xr-x 5 suse-ncc suse-ncc 4096 Авг 20 11:47 beagle
drwxr-xr-x 5 nobody nogroup 4096 Авг 20 11:31 zypp
/local/pxe/s2/ro_shared/var/lib:
итого 4
drwxr-xr-x 3 nobody nogroup 4096 Авг 20 15:54 rpmКак-то бестолково написал,
Смысл такой: если каталог /var/что_то_там нужен большой - на рамдиске его хранить нет места, а находится в /var_ro (который копируется на рамдиск), тогда в /var_ro создаем симлинк в соответствующий каталог /ro_shared. А если в этом /ro_shared оказалось нечто, что должно быть в режиме rw - перемещаем его обратно в /var_ro и делаем симлинк на /var
Следующий этап: почему-то загрузка зависала при попытке найти DHCP, наверно потому что сеть уже была в этот момент подключена, не знаю, просто убрал network start, в файле: /local/pxe/s2/etc/rc.d/network просто заменить все секции 'case "$ACTION" in ' на:
Код: Выделить всё
start)
rc_status -v
;;
stop)
rc_status -v
;;
reload)
rc_status -v
;;
status)
rc_status -v
;;Еще в /local/pxe/s2/etc/inittab был runlevel 5, поменял на 3 (все равно X пока не грузятся, точнее грузятся только на той тестовой vmware, но я пока и не ставил себе такой задачи).
И в /etc/fstab убираю все лишнее, т.е. локальные диски.
Кажется, все.
запускаю, при загрузке pxe ввожу "rsc" - система грузится, причем практически без ошибок - ругается на отсутствие в fstab'е rootfs, да и фиг бы с ней.
Почему-то df показывает только одну ФС /dev, не понял почему не показывает корневую и рамдиск, может, потому что /proc и /sys монтируются позже рамдиска, ну да ладно, главное - система работает.
Код: Выделить всё
# ssh 192.168.30.95
Password:
Last login: Fri Aug 21 13:47:46 2009 from 192.168.30.194
Have a lot of fun...
testvm:~ # uname -a
Linux testvm 2.6.25.5-1.1-pae #4 SMP Thu Mar 26 17:51:25 MSK 2009 i686 athlon i386 GNU/Linux
testvm:~ # df
Файловая система 1K-блоков Исп Доступно Исп% смонтирована на
udev 385916 68 385848 1% /dev
testvm:~ # ls -l /
итого 56
drwxr-xr-x 2 nobody nogroup 4096 Авг 20 11:41 bin
drwxr-xr-x 3 nobody nogroup 4096 Авг 20 11:53 boot
drwxr-xr-x 11 root root 4220 Авг 21 13:45 dev
drwxr-xr-x 98 root root 5060 Авг 21 13:45 etc
drwxr-xr-x 3 nobody nogroup 4096 Авг 20 11:55 home
drwxr-xr-x 13 nobody nogroup 4096 Авг 20 11:41 lib
drwxr-xr-x 2 nobody nogroup 4096 Июн 7 2008 media
drwxr-xr-x 2 nobody nogroup 4096 Авг 20 16:09 mnt
drwxr-xr-x 3 nobody nogroup 4096 Июн 7 2008 opt
dr-xr-xr-x 71 root root 0 Авг 21 2009 proc
lrwxrwxrwx 1 root root 9 Авг 20 16:10 root -> /tmp/root
drwxr-xr-x 4 nobody nogroup 4096 Авг 20 18:16 ro_shared
drwxr-xr-x 3 nobody nogroup 12288 Авг 20 11:51 sbin
drwxr-xr-x 5 nobody nogroup 4096 Авг 20 11:49 srv
drwxr-xr-x 11 root root 0 Авг 21 2009 sys
drwxrwxrwt 12 root root 240 Авг 21 13:45 tmp
drwxr-xr-x 12 nobody nogroup 4096 Авг 20 11:32 usr
lrwxrwxrwx 1 root root 8 Авг 20 16:11 var -> /tmp/var
drwxr-xr-x 14 nobody nogroup 4096 Авг 20 18:13 var_roЕсли буду менять конфигурацию, доделывать и будет время/желание - этот пост тоже буду редактировать.
Дополнения/уточнения по существу вопроса приветствуются, вопросы тоже можно задавать
-
rm_
- Сообщения: 3340
- Статус: It's the GNU Age
- ОС: Debian
Re: Бездисковая загрузка linux
Потом есть нюанс: root_squash в /etc/exports - root:root на клиенте превращается в nobody:nogroup на сервере.
Сменил владельца файлов рута на nobody
А почему не использовали опцию "no_root_squash"?
На рамдиске размещаем данные, которые должны быть rw - это /etc
/etc вовсё не обязан быть r/w.
запускаю, при загрузке pxe ввожу "rsc"
Это ещё что/зачем?
Вообще, как-то слишком сложно и путанно получилось. Ну, раз работает, поздравляю.
-
iltmpz
- Сообщения: 34
- ОС: Mandriva 2010
Re: Бездисковая загрузка linux
Да, вы правы, no_root_squash было бы проще и правильнее. Не стал менять конфиг в exports чтобы не перезапускать NFS. Действительно, надо будет сделать.А почему не использовали опцию "no_root_squash"?
Он ругался на файл /etc/mtab что он read-only. Вообще полезно все-таки rw - например на случай если захочется оперативно поменять конфигурацию./etc вовсё не обязан быть r/w.
запускаю, при загрузке pxe ввожу "rsc"
Плохо я написал, непонятно и зря - к вопросу это отношения не имеет.
Это вот отсюда:
Код: Выделить всё
# Rescue server
label rscА по умолчанию у меня другая система грузится. Написал действительно как-то путанно, самому не нравится, попробую позже переписать...
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Бездисковая загрузка linux
rm /etc/mtab
ln -s /proc/mounts /etc/mtab
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
strah
- Сообщения: 283
- ОС: Freebsd, linux, Solaris.
Re: Бездисковая загрузка linux
А я просто в /etc/init.d/mountall.sh добавлял к команде mount параметр -n (это на debian, на ALT я это еще в каком-то файле менял).
/earth: file system full