URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 79936
[ Назад ]

Исходное сообщение
"Откат FreeBSD64 на FreeBSD32"

Отправлено akuzhelev , 22-Апр-08 08:17 
Возможно ли имея установленную на сервере FreeBSD 64bit пересобрать все и превратить систему во FreeBSD 32bit?

Содержание

Сообщения в этом обсуждении
"Откат FreeBSD64 на FreeBSD32"
Отправлено ShyLion , 22-Апр-08 15:59 
>Возможно ли имея установленную на сервере FreeBSD 64bit пересобрать все и превратить
>систему во FreeBSD 32bit?

Учитывая, что придется пересобирать ВООБЩЕ все, оно тебе надо???


"Откат FreeBSD64 на FreeBSD32"
Отправлено shutdown now , 23-Апр-08 02:48 
>>Возможно ли имея установленную на сервере FreeBSD 64bit пересобрать все и превратить
>>систему во FreeBSD 32bit?
>
>Учитывая, что придется пересобирать ВООБЩЕ все, оно тебе надо???

Возможно, особенно если у тебя в ядре есть поддержка бинариков 32 бит и соответствующие либы


"Откат FreeBSD64 на FreeBSD32"
Отправлено akuzhelev , 23-Апр-08 15:00 
>>>Возможно ли имея установленную на сервере FreeBSD 64bit пересобрать все и превратить
>>>систему во FreeBSD 32bit?
>>
>>Учитывая, что придется пересобирать ВООБЩЕ все, оно тебе надо???
>
>Возможно, особенно если у тебя в ядре есть поддержка бинариков 32 бит
>и соответствующие либы

Какой план действий?


"Откат FreeBSD64 на FreeBSD32"
Отправлено shutdown now , 24-Апр-08 01:16 
>>>>Возможно ли имея установленную на сервере FreeBSD 64bit пересобрать все и превратить
>>>>систему во FreeBSD 32bit?
>>>
>>>Учитывая, что придется пересобирать ВООБЩЕ все, оно тебе надо???
>>
>>Возможно, особенно если у тебя в ядре есть поддержка бинариков 32 бит
>>и соответствующие либы
>
>Какой план действий?

вроде такого:
http://docs.freebsd.org/cgi/getmsg.cgi?fetch=243646+0+archiv...

билдишь ядро и мир под i386 TARGET_ARCH=i386, потом инсталишь всё на свободный раздел, например, своп
ребутишься
при загрузке указываешь 32-х битное ядро, корневую фс - set vfs.root.mountfrom="ufs:/dev/ad0s1b"
загружаешься в сингл мод
монтируешь основную фс и инсталишь мир на неё
ещё раз ребут


я пару раз переходил с i386 на amd64, наоборот причин не было


"Откат FreeBSD64 на FreeBSD32"
Отправлено AMDmi3 , 23-Апр-08 22:57 
>Возможно ли имея установленную на сервере FreeBSD 64bit пересобрать все и превратить
>систему во FreeBSD 32bit?

Думаю да. Но удаленно делать бы этого не стал (или сначала попрактиковался бы на свободной машине/в vm). Проблемы тут выдятся две: во-первых, как собрать мир под другую архитектуру (по идее нужно что-то типа CFLAGS="-march=pentium4 -m32" и такие же CXXFLAGS) в /etc/make.conf. Не факт, что эти CFLAGS будут использованы _везде_. Вторая проблема - установка. Если installworld использует внешние утилиты, то система будет однозначно убита, потому что 32bit/64bit бинарники не могут работать с 64bit/32bit библиотеками, а при последовательном переписывании файлов это обязательно случится. Но возможно, что installworld все-таки использует свои утилиты из /usr/obj.

В общем, простор для экспериментов огромен (и, кстати, можно безопасно опробовать процесс на целевой системе, поставив 64bit систему в jail, и обновив ее целиком  до 32bit в этом jail'е).

Как бы то ни было, действия на живой системе примерно таковы:
1) Для начала првоерить, что в ядре есть COMPAT_IA32, потушить и выключить в rc.conf все что можно.
Далее, есть несколько вариантов.
2) На живой системе нужно будет сделать installworld (это если проканает buildworld с указанными CFLAGS, в результате получится действительно 32bit мир без 64bit кусков и если installworld не пользуется внешними утилитами).
ЛИБО, можно смонтировать iso с 32бит фрей, и сделать ./install.sh из /mnt/cdrom/7.0-RELEASE/base. В base находится большая часть мира (т.е. библиотеки, /bin /sbin /usr/bin /usr/sbin и т.д.), и инсталлится это одним процессом tar (которому после запуска будет наплевать что происходит с библиотеками).
3) После этого (если все получится) все новые процессы будут уже 32битными (надо думать и gcc будет создавать 32битные бинарники по умолчанию). Можно спокойно пересобрать мир и ядро еще рез, чтобы наверняка (по идее, уже без -m32, хотят тут я не уверен), и перезагрузиться.

Замечу, что сам я лично это делать не пробовал - так что все что написано выше - лишь теоретические размышления. Ям много, каждая приводит систему в нерабочее состояние, поэтому правильнее всего было бы установить систему на другой раздел/на другой диск. Это можно сделать не выключая систему - либо installworld/installkernel/mergemaster из 32bit jail, либо `DESTDIR=/mnt/newroot ./install.sh` для base и kernels с CD.