HOWTO Настройка 32-х битного режима под AMD64
Материал из Gentoo Linux Wiki
- Вернуться в раздел руководства
Содержание |
[править] А зачем оно надо?
Потребность в 32-х битном режиме возникла из-за того, что далеко не все программы под Gentoo могут работать в 64-ом режиме. Особенно это ощущается, когда пытаешься установить серверы игр и прочие не GPL-пакеты.
Поскольку руководства на эту тему я не нашел, то решил его написать сам, дабы не забыть ;)
[править] Установка 32-х битной системы
[править] Распаковка Stage3 для AMD Athlon
Будем считать, что 64-ех битная система установлена и мы уже в ней ;)
Для начала нам необходимо установить в какой-либо каталог слепок 32-х битного образа для AMD Athlon (не AMD64).
Для этого создадим какой-нибудь каталог для нее (в моем случаем /mnt/gentoo32) и распакуем туда образ системы:
| Code: /bin/bash |
$ cd /home/users/downloads $ wget -c http://distfiles.gentoo.org/releases/x86/2005.0/stages/athlon-xp/stage3-athlon-xp-2005.0.tar.bz2 $ su # mkdir /mnt/gentoo32 # cd /mnt/gentoo32 # tar -xvjpf /home/user/downloads/stage3-athlon-xp-2005.0.tar.bz2 # cp -L /etc/resolv.conf /mnt/gentoo32/etc/ # cp -L /etc/passwd /mnt/gentoo32/etc/ |
ВАЖНО: Еще раз обращаю внимание: на этом этапе мы распаковываем для 32-х битного AMD Athlon (не AMD64).
После этого этапа у нас будет распакованный Stage3 для AMD Athlon в необходимом нам каталоге.
[править] Установка необходимых пакетов
Для входа в систему в 32-х битном режиме необходимо установить соответствующий пакет: emerge setarch
Войти в 32-х битный режим можно командой: linux32 chroot /mnt/gentoo32
[править] Установка и запуск 32-х битных демонов
[править] Скрипт для запуска 32-х битных демонов
Для запуска демонов в 32-х битном режиме при загрузке системы, удобно использовать следующий скрипт:
| Файл: /etc/init.d/gentoo32 |
#!/sbin/runscript
ROOT32=/mnt/gentoo32
MOUNT="home tmp sys usr/portage dev dev/pts dev/shm"
RUNLEVEL=gentoo32
depend() {
use net
use dns
need localmount
need bootmisc
}
start() {
ebegin "Mounting 32bits chroot dirs"
mount none -t proc $ROOT32/proc
for DIR in $MOUNT; do
mount /$DIR $ROOT32/$DIR -o bind
done
eend $? "An error occured while attempting to mount 32bit chroot directories"
ebegin "Remove old 32bits init.d files"
rm -fR $ROOT32/var/lib/init.d/softscripts/*
rm -fR $ROOT32/var/lib/init.d/started/*
eend $?
ebegin "Remove old pid files"
find $ROOT32/var/run/* -not -type d -print0 | xargs -0 rm -f
eend $?
ebegin "Update 32bits config files"
cp -pf /etc/resolv.conf $ROOT32/etc/
cp -pf /etc/passwd $ROOT32/etc/
cp -pf /etc/shadow $ROOT32/etc/
cp -pf /etc/group $ROOT32/etc/
cp -pf /etc/gshadow $ROOT32/etc/
cp -pf /etc/hosts $ROOT32/etc/
cp -Ppf /etc/localtime $ROOT32/etc/
eend $?
ebegin "Starting 32bits daemons"
eend $?
linux32 chroot $ROOT32 rc $RUNLEVEL
eend $? "An error occured while attempting to run 32bit daemons"
}
stop() {
ebegin "Stopping Gentoo32"
linux32 chroot $ROOT32 rc $RUNLEVEL stop
eend $?
ebegin "Unmounting 32bits chroot dirs"
UMOUNT=""
for DIR in $MOUNT; do UMOUNT="$DIR $UMOUNT"; done
for DIR in $UMOUNT; do
umount -f $ROOT32/$DIR
done
umount -f $ROOT32/proc
eend $?
}
|
Этот скрипт монтирует общие каталоги, очищает перечень ранее запущенных сервисов и выполняет запуск загрузочных скриптов.
[править] Подготовка 32-х битной системы
Чтобы он запускался при старте системы, необходимо выполнить команду:
| Code: /bin/bash |
# rc-update add gentoo32 default |
| Примечание: Здесь и далее предполагается, что каталог 32-х битной системы: /mnt/gentoo32, а ее runlevel: gentoo32 |
Так же необходимо создать каталог для runlevel-а 32-х битной системы: /mnt/gentoo32/etc/runlevels/gentoo32/
[править] Добавление 32-х битного демона в автозапуск
Для добавления скрипта в автоматическую загрузку, его необходимо добавить под 32-х битным режимом коммандой вида:
| Code: linux32 chroot /mnt/gentoo32 |
# rc-update add distccd gentoo32 |
[править] Резюме
В результате должна получиться система в системе, работавющая в 32-х битном режиме на AMD64.
Так же стоит отметить, что у них будет общий каталог /usr/portage, поэтому emerge sync достаточно выполнить только на одной из них, несмотря на то, что установка/удаление/обновление пакетов на кажной из них необходимо выполнить по отдельности.
[править] Ссылки
Основа для данного руководства http://www.gentoo.org/proj/en/base/amd64/howtos/index.xml?part=1&chap=2
