LINUX.ORG.RU

Установка линукс


0

1

Приветствую. Возникла необходимость переустановить линукс на кассе, и делается это очень интересным способом: форматируется флэха или дискетка и на нее закидываются несколько файликов, и с нее грузится касса. Меня заинтересовало следующее, как можно сделать это без участия флэхи, по сети. На дискетку падают следующие файлики: instrd, kernel, install.cfg, syslinux.cfg, ldlinux.sys, warning.txt. Но какую команду выполнить чтобы запустить их удаленно? спасибо



Последнее исправление: Kristofer (всего исправлений: 1)

как можно сделать это без участия флэхи, по сети.

PXE

Но какую команду выполнить чтобы запустить их удаленно?

Никакую. Нет такой команды. Просто бывает железо, которое умеет грузиться по сети, и бывает железо, которое не умеет. По сути, это зависит от firmware машины. И вот если firmware это умеет, ты можешь определённым образом подготовить код и данные, чтобы firmware машины смогло их найти и запустить.

i-rinat ★★★★★
()

содежимое syslinux.cfg: PROMPT 0 DISPLAY warning.txt DEFAULT kernel APPEND initrd=instrd sp_bdev= sp_ip=192.168.10.124 sp_ipm=255.255.255.0 sp_ipreq=n sp_mnet=e100 sp_mhdd=ata_piix sp_durl=http://192.168.10.95:8181/ukminstall (как видно, он берет архивы для инсталяции по сети)

Kristofer
() автор топика

linux pxe boot

как то так ^

init_6 ★★★★★
()
Ответ на: комментарий от i-rinat

тогда что мне делать если нет дискет под рукой (или в продаже), а поставить надо? при этом все на руках есть, и файлы и путь, и архивы...

Kristofer
() автор топика
Ответ на: комментарий от i-rinat

PXE - только для загрузки, но не для переустановки, а мне нужно именно переустановить ось на кассе под управлением линукс (red hat 9)

Kristofer
() автор топика

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

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

На дискетку падают следующие файлики: instrd, kernel, install.cfg, syslinux.cfg, ldlinux.sys, warning.txt.

kernel - образ ядра Linux.
instrd - образ initial ram disk, в котором, скорее всего находится мини система со сриптом установки.
install.cfg - скорее всего, в этом файле есть какие-то параметры установки и сценарий установки из instrd, наверно, «ищет» этот файл на флешке и использует параметры из этого файла при устанвоке.
syslinux.cfg - конфигурационный файл загрузчика syslinux, котрый грузит ядро и instrd в память, передаёт управление ядру и параметры
ldlinux.sys - собственно образ загрузчика
warning.txt - скорее всего варианты сообщений об ошибках

PXE - только для загрузки

Собственно у вас тоже самое и на флешке, только загрузчик и мини система для установки, а именно образ ядра и образ instrd. Вы точно так же можете загрузить по сети эти два файла с помощью PXE.

Параметры «sp_bdev= sp_ip=192.168.10.124 sp_ipm=255.255.255.0 sp_ipreq=n sp_mnet=e100 sp_mhdd=ata_piix sp_durl=http://192.168.10.95:8181/ukminstall", скорее всего, указывают IP адрес сетевого интерфейса, маску, отключают запрос на получение ip адреса и указывают драйвер сетевой карты, который нужно подгрузить, указывают драйвер контроллреа жёстких дисков, который так же подгружается. Ну а последний параметр, скорее всего, указывает откуда нужно загружать систему для установки.

В общем, как я уже сказал, запустить установку вы можете и через PXE. Единственно, что может являться проблемой, это не доступность файла install.cfg, можете попробовать запустить установку так, может и встанет, но, скорее всего, нужно распаковывать instrd и смотреть сценарий установки (init).

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

наверное вопроса не поняли, я имел ввиду переустановку линукс на кассе

тебе уже сказали: PXE. Сначала загружаешь маленький линукс, а потом с его помощью ставишь большой. Как именно — везде по разному. В слаке просто ядро кидаешь на диск и всяких файлов каких надо, потом chroot и /sbin/lilo. И теперь система грузится с нужного носителя.

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

В общем, как я уже сказал, запустить установку вы можете и через PXE. Единственно, что может являться проблемой, это не доступность файла install.cfg

можно по NFS смонтировать ФС со всеми нужными файлами.

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

Можно, я лишь сужу по списку файлов, которые привёл ТС, если файл install.cfg находится в корне флешки, значит, наверное, это зачем-то да нужно. Что-то более точно сказать можно, если посмотреть содержимое файла, сценарий init из instrd, ну или ТС просто попробует загрузить систему (установку) через PXE без этого файла и посмотреть, что будет.

Ну а по поводу NFS, указан же параметр: sp_durl=http://192.168.10.95:8181/ukminstall", скорее всего в файле install.cfg указывается имя архива, который нужно скачать по указанному адресу, плюс какие-то параметры, разбивка диска или что-то подобное, но это пока просто предположение.

ТС, покажи содержимое файла install.cfg и что находится в http://192.168.10.95:8181/ukminstall .

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

PXE - только для загрузки, но не для переустановки

Ну и загружай установщик, а не рабочую ОС.

i-rinat ★★★★★
()

На дискете у тебя загрузчик syslinux. *.cfg — его конфиги, их тебе нужно внимательно прочесть. Warning — просто текст, который выводится при установке. Остались два файла — это ядро и образ корневой ФС. Эти два файла тебе и нужны.
Реализуешь загрузку этого ядра с этим образом по PXE, передав ему те же параметры, что аппендятся сейчас syslinux'ом.
Готово.

CYB3R ★★★★★
()

Скачай NetBoot Linux CD + CorePlus - ищи в инете сборки
Скинь на NFS сервер Ядро и InitRD твоей оськи
А дальше гугли

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

pxelinux.0 - это и есть «бутлоадер», который грузится по сети, затем запрашивает у TFTP сервера свой, конфигурационный файл, ip адрес TFTP сервера указывается соответствующим DHCP параметром, затем на основе конфигурационного файла предоставляет варианты загрузки.

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

Дык он грузится через EEPROM сетевой платы или BIOS ПеКа
А есть iPXE вроде - он замена EEPROM
Он грузит pxelinux.0 и т.д - делает все то, что и BIOS сет. платы

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

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

Далее работает уже этот загруженный файл, в частном случае pxelinux.0, далее уже код pxelinux.0 получает IP параметры сети, получает адрес TFTP сервера, запрашивает с него свой конфигурационный файл и на основе этого файла предоставляет варианты загрузки.

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

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

Без Pxelinux.0 с одним eeprom у вас не будет вариантов загрузки.

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

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

А этот файл может использоваться сценарием init в instrd

Этот сценарий подмонтирует флешку и будет парсить конфиг? Уж лучше весь конфиг передавать в строке параметров ядра.

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

Этот сценарий подмонтирует флешку и будет парсить конфиг?

Я не знаю, что будет делать сценарий init в instrd, я его не видел, могу только предполагать на основе указанных ТС сведений.

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

Разбирать и редактировать одну строку несколько сложнее, по крайней мере не так удобно, как редактировать конфигурационный файл, в котором каждый параметр на одной строке в формате «имя параметра» = «значение» или «имя параметра» «значение».

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

Хм... идея - собираем сто метровый кернел, который грузится в котором:
1. Кернел
2. Параметры ядра
3. В ядре инитрд на 90метров

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


А несколько конфигов можно сделать так, например:

syslinux.cfg:
LABEL install cool linux
  CONFIG install.cfg

install.cfg:
LABEL start installation
  KERNEL kernel
  APPEND very cool kernel parameters
Ну, можно ещё во втором конфиге выводить на экран WARNING.TXT и красить текст в красный. Не знаю, зачем нужно, но получится эффектно.

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

Да я просто предложил извращеный способ на базе ваших мыслей...
А так pxelinux наше фсио

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

Да, не такое. Там всё реализовано бесконечными INCLUDE, это немного другое. Но не исключено, что syslinux.cfg начинается со строчки «INCLUDE install.cfg».

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

содержимое install.cfg: export UKMSERVER_PORT=22222

export INSTALL_LINUX=y export INSTALL_UKMCLI=y export INSTALL_XWIN=n export FILE_XWIN_CONFIG= export UKMCLI_DB_HOST=127.0.0.1 export UKMCLI_DB_PORT=3306 export UKMCLI_DB_NAME=ukmclient export UKMCLI_DB_USER=ukm_terminal export UKMCLI_DB_PASSWORD=CtHDbCGK.C export INSTALL_LILLO=n export INSTALL_UKMSRV=n export INSTALL_PCSRV=n export ADMIN_DB_USER=root export ADMIN_DB_PASSWORD= export LINUX_DRIVE=auto export IPADDRESS_UKMSRV=

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

Нет, этот конфигурационный файл всё же использует сценарий init в instrd при установке, кроме всего прочего, насколько я вижу, здесь имя и пароль подключения к некоей базе данных, могли бы и не показывать эти строки.

install.cfg:

export UKMSERVER_PORT=22222
export INSTALL_LINUX=y 
export INSTALL_UKMCLI=y 
export INSTALL_XWIN=n 
export FILE_XWIN_CONFIG= 
export UKMCLI_DB_HOST=127.0.0.1 
export UKMCLI_DB_PORT=3306 
export UKMCLI_DB_NAME=ukmclient 
export UKMCLI_DB_USER=*****
export UKMCLI_DB_PASSWORD=*****
export INSTALL_LILLO=n 
export INSTALL_UKMSRV=n 
export INSTALL_PCSRV=n 
export ADMIN_DB_USER=****
export ADMIN_DB_PASSWORD=****
export LINUX_DRIVE=auto 
export IPADDRESS_UKMSRV=

Так что, например, вы распаковываете instrd и вносите в него изменения, что бы файл так же скачивался с http://192.168.10.95:8181/ukminstall.

Либо ищите флешку.

Покажите содержимое http://192.168.10.95:8181/ukminstall .

UPD: Я могу удалить свой комментарий, тогда вы сможете подправить свой .

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87

Да это же баш! Ладно, теперь я верю, что флешка монтируется скриптом в initrd. Но зачем такой костыль? Я бы передавал длинную строку параметров.

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

да костылей хватает..., а что касается http://192.168.10.95:8181/ukminstall, то там лежит МБ 200 архивов: могу только имена привести, так как закачивать подобное смысла нверное нет, имена: common-cli.tgz, common-ukm.tgz, instmedia-kmods.tgz, instmedia-utils.tgz, lillo-build.tgz, lillo-fixed.tgz, pcsrv-build.tgz, replacer-build.tgz, scripts.tar.gz, ukm-boot.tar.gz, ukm-kmods.tgz, ukm-root.tar.gz, ukmcli-build.tgz, ukmcli-fixed.tgz, ukmsrv-build.tgz, ukmsrv-fixed.tgz, ukmupman-build.tgz, ukmupman-fixed.tgz, xwin.tgz

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

Я уже объяснил, файл, где на каждой строке один параметр, проще редактировать. Кроме того, проще получать его содержимое, в init сценарии нужно просто смонтировать носитель и затем выполнить

source /<drive_mount_point>/install.cfg
или
. /<drive_mount_point>/install.cfg
или
sh /<drive_mount_point>/install.cfg
и не нужно писать много строк с обработкой параметров, переданных ядру.

Опять же в случае новой конфигурации изменения вносятся в этот файл, кроме всего прочего файл можно сжать в архив с паролем и положить в web сервер и скачивать его при установке. В общем, масса плюсов.

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

Вы можете выгрузить куда-либо instrd, попробуем его подправить, что бы install.cfg был уже в нём, либо скачивался с http://192.168.10.95:8181/ukminstall, можно сделать, что бы файл был в запароленном архиве, с вводом пароля при установке.

PS, а почему вы не отвечаете на мои сообщения ?

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

масса плюсов

Как по мне, так сплошные минусы. Нужно же сначала как-то смонтировать носитель. Ладно, если это дискета, но если флешка, уже проблемы.

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

Это не сложно, например с помощью метки файловой системы или UUID:

mount `findfs LABEL=метка_файловой_системы_носителя` /точка_монтирования/
. /точка_монтирования/install.cfg
mount `findfs UUID=UUID_файловой_системы_носителя` /точка_монтирования/
. /точка_монтирования/install.cfg
Перебором, в цикле тоже можно, но немного сложнее, хотя бы так:
blkid  | cut -f1 -d: | while read DEV 
do 
  mount $DEV /точка_монтирования/ -o ro
  test -e /точка_монтирования/install.cfg && . /точка_монтирования/install.cfg
  umount $DEV
done

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

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87

Ладно, возьму на заметку. Сейчас тоже занимаюсь встраиваемыми системами, потому и хочу поковыряться в initrd этого установщика.

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

Да, что-то я сомневаюсь, что ТС выложит куда-то initrd этого установщика.

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

извините, был занят..., а после всех сообщений, так вообще взрыв мозга..., ссылка (это содержимое установочной дискетки): http://dfiles.ru/files/gccoifv62

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

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

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

В общем, весь необходимый функционал уже есть в сценариях instrd, вы можете просто грузить посредством PXE ядро и instrd с передачей параметров:

sp_bdev=[b]pxe[/b] sp_ip=192.168.10.124 sp_ipm=255.255.255.0 sp_ipreq=n sp_ipg=192.168.10.95 sp_mnet=auto sp_mhdd=auto sp_durl=http://192.168.10.95:8181/ukminstall
Ну а дальше пойти одним из двух путей:
1. Разместить файл тут же http://192.168.10.95:8181/ukminstall . 2. Раз уж вы поднимаете tftp сервер для загрузки по сети, то можете расположить файл install.cfg в /tftpboot/install.cfg и соответственно настроить tftpd сервер, что бы он обслуживал, насколько я понимаю, в данном случае весь корень / файловой системы, либо можно настроить, так:
/var/tftp - директория, с которой будет отдавать файл tftpd
/var/tftp/tftpboot/install.cfg - файл с настройками.

Ну и возможен третий вариант, перепаковка instrd и добавление файл install.cfg в instrd в /etc/ukm/install.cfg .

Для третьего варианта вам нужен Linux или версии утилит cpio, unlzma, lzma и findutils под windows, лучше всё же иметь под рукой Linux, т.к. не знаю, что произойдёт с файлами устройств в директории /dev при перепаковки instrd на платформе Windows.
Для распаковки instrd создаёте директорию, переходите в неё, предполагается, что файлы instrd и install.cfg находятся на том же уровне, что и директория, и выполняете следующую команду:

mkdir /tmp/instrd_dir
unlzma -c ../instrdf | cpio -i -d -H newc
cp ../install.cfg etc/ukm/install.cfg
подтверждаете перезапись, там есть пустой файл.
Теперь запаковываете:
find . | cpio -o -H newc | lzma -9 > ../instrdf2
Всё, файл instrdf2 помещаете в директорию, которую обслуживает tftpd и указываете его в конфигурационном файле pxelinux.cfg/default вместо instrd.

Попробуйте в начале первые два варианта.

UPD:
Скорее всего, у вас есть документация по всему этому делу, в которой указаны способы установки и нюансы настройки.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от Kristofer
sp_bdev=pxe sp_ip=192.168.10.124 sp_ipm=255.255.255.0 sp_ipreq=n sp_ipg=192.168.10.95 sp_mnet=auto sp_mhdd=auto sp_durl=http://192.168.10.95:8181/ukminstall

Немного не правильно отобразилось, не учёл поведение тега CODE.

Удачи.

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

кстати, у нас серверная часть на винде, только кассы на линукс, так что работают они бесперебойно, что о серваке не скажешь, потому я думаю конф файлы держать локально на кассе

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