ZogG — Как я перешел с 32 битной генты на 64 битную
В общем зашел я на канле генту-ру (часто там сижу), слово за слово, и меня подбили на переход на 64 битную систему, взвесив все за и против (мне было и так скучно,
хотя 32 бита работало как надо), я решился на это. И так, как я это сделал.
Первым делом, я забекапил:
/etc/ - все моими настройками (кроме флагов и фтаба и маке.конф, там почти все настройки всей системы)
/var/lib/portage - там находится мой мир(world - все пакеты, вроде списка всех пакетов, что я поставил) с его настройками.
/usr/src/linux/.config - эта папка симлинк на текущее ядро, ну и понятно я скопировал его настройки
Мои ошибки были, это забыть забекапить :
/usr/local/bin - все мои скрипты (самописанные и взятые у друзей/с сети
/usr/local/portage - все ебилды моего локального оверлея (ебилды мной написанные и взятые у друзей/с сети)
/usr/share/themes /usr/share/icons - темы оформления моего любимого хфсе4
Загрузившись в ЛайфСд Убунты 9.04 64 битной (важно чтоб была 64 бита для chroot, и если фс как у меня на ехт4, то надо 9.04 - так как только там поддержка на лайфсиди). В ней я установил х-чат для консультации, и открыл пиджин для конфы. Следующее действия, было может быть не совсем кошерным, но я удалил с диска всё(хоум и другой контенгент у меня отдельными дисками). Открыл в ФФ гид по быстрой установке х86 системы (имея опыт с генту, знаю что установка почти одинаковая). Дальше я зашел на сайт локального института ( можно качать и с офф сайта но дольше) и скачал stage3 (для amd64 - это для всех 64 битных систем) и снапшот портажа. Дальше так:
mkdir /mnt/gentoo - "комната для опытов"
mount /dev/sda3 /mnt/gentoo - ну собственно ...
в /mnt/gentoo распаковываем stage3* в /mnt/gentoo/usr распаковываем portage*
mount /dev/sda1 /mnt.gentoo/boot - тут у меня граб отдельным диском, у кого нет, надо было забекапить
mount -t proc proc /mnt/gentoo/proc - эти и далее команды для чрута
mount-o bind dev /mnt/gentoo/dev - девайсы (опция бинд маунтит не как девайс а как папку)
cp -L /etc/resolv.conf /mnt/gentoo/etc/ - копируем настройки сети, чтоб в чаруте была сеть
chroot /mnt/gentoo /bin/bash && env-update && source /etc/profile - та-да мы в как бы в генту
тут можно утсановить дату и часовой пояс =)
Потом, что и было в дальнейшем моей ошибкой, так как я хотел сэкономить время, перекидываения маке.конф и флагов в /etc/ , так как я хотел сразу собрать ядро которое я использовал со своими настройками, а оно masked, поэтому советую просто в свежий маке.конф добавить ACCEPT_KEYWORDS="amd64 ~amd64" (следует заметить, что ~ - не стабильная ветка) и после
emerge gentoo-sources - собираем ядро (тут я добился сбора ядра своей версии чтоб конфиг к нему пременить)
cd /usr/src/linux - идем в папку симлинка ядра
make oldconfig && make && make modules_install && make install - взяли старые настройки ядра, собрали его, собрали модули, установили его (он в /boot/grub сам устанавливаеться куда надо)
Так как я хотел свой мир, я сразу перепрыгнул к установке граба
emerge grub - ставим
grub - настраиваем
Вот дальше началось самое интересное, я ресинкнулся и обновил портаж(emerge portage), а потом я тупо перекинул обратно настройки мира и стал пересобирать его (emerge -e world, где -e чтоб переставило всё, независимо от того стоит или нет). Ну и понятно, так как на самом деле у меня ничего не стоит, то в какой-то момент у меня перестали собираться все пакеты. Как я выяснил обновился binutils и он требовал openrc для нормальный работы,( а тот неще не установился) так как требовался файл /etc/init.d/function.sh (это симлинк на /lib/rc/sh/function.sh), узнал я это попробывав gcc-config -l (думал с гсс не всё в порядке). Полазил по нету, нашел только одно решение - переустановка, но мне было лень и я решил сделать грязных хак, я скопировал этот файл с ноута и перекинул куда надо, собрал openrc, binutils и новый gcc, и все заладилось как надо. потом я вернул обратно все свои флаги /etc/portage/package.use и свой старый make.conf, изменив там пару флагов (для 64 битной системы), CFLAGS заменил на "-march=native -O2 -pipe" (native только с версий gcc-4.4.* работает) и поменял ACCEPT_KEYWORDS с "x86 ~x86" на "amd ~amd" (повторюсь, это дает возможно собирать не стабильные пакеты, тем кто не в теме, не советую). Ну и собственно emerge -e world --keep-going (последний флаг делает, что при ошибке он пропускает пакет и прыгает к следующему) и пошёл спать. На утро я обнаружил, что из 1079 пакет, почти все собрались и те что не собрались, я попытался собрать отдельно, решив проблему (лучше с флагом --oneshot, так как это могут быть только зависимости, а этот флаг собирает пакет не вписывая/выписывая его из мира). После этого как прилежный гентушник я запустил python-updater (ну в стайдже вроде 2.5, а у меня 2.6 поставился) и revdep-rebuild (проверяет есть ли что битое(зависимости или либы и так далее) и пересобирает). После этого вернул на место /etc/ старый (главнео чтоб make.conf что вы уже вернули и переделали не изменил опять). Так же если у вас пропиареные дрова видео или аслы вне ядра, пересоберите их и выберите (eselect opengl set nvidia), верните папку юзера ( mkdir /home/zogg в моем случае ) и рестарт. У меня не завёлся гдм, так как битая либа была, но я генту запустилась, я пересобрал дрова нвидии опять и всё заработало. Потом прошёл день ковыряний и поиска иконок и тем для рабочего стола =)
хотя 32 бита работало как надо), я решился на это. И так, как я это сделал.
Первым делом, я забекапил:
/etc/ - все моими настройками (кроме флагов и фтаба и маке.конф, там почти все настройки всей системы)
/var/lib/portage - там находится мой мир(world - все пакеты, вроде списка всех пакетов, что я поставил) с его настройками.
/usr/src/linux/.config - эта папка симлинк на текущее ядро, ну и понятно я скопировал его настройки
Мои ошибки были, это забыть забекапить :
/usr/local/bin - все мои скрипты (самописанные и взятые у друзей/с сети
/usr/local/portage - все ебилды моего локального оверлея (ебилды мной написанные и взятые у друзей/с сети)
/usr/share/themes /usr/share/icons - темы оформления моего любимого хфсе4
Загрузившись в ЛайфСд Убунты 9.04 64 битной (важно чтоб была 64 бита для chroot, и если фс как у меня на ехт4, то надо 9.04 - так как только там поддержка на лайфсиди). В ней я установил х-чат для консультации, и открыл пиджин для конфы. Следующее действия, было может быть не совсем кошерным, но я удалил с диска всё(хоум и другой контенгент у меня отдельными дисками). Открыл в ФФ гид по быстрой установке х86 системы (имея опыт с генту, знаю что установка почти одинаковая). Дальше я зашел на сайт локального института ( можно качать и с офф сайта но дольше) и скачал stage3 (для amd64 - это для всех 64 битных систем) и снапшот портажа. Дальше так:
mkdir /mnt/gentoo - "комната для опытов"
mount /dev/sda3 /mnt/gentoo - ну собственно ...
в /mnt/gentoo распаковываем stage3* в /mnt/gentoo/usr распаковываем portage*
mount /dev/sda1 /mnt.gentoo/boot - тут у меня граб отдельным диском, у кого нет, надо было забекапить
mount -t proc proc /mnt/gentoo/proc - эти и далее команды для чрута
mount-o bind dev /mnt/gentoo/dev - девайсы (опция бинд маунтит не как девайс а как папку)
cp -L /etc/resolv.conf /mnt/gentoo/etc/ - копируем настройки сети, чтоб в чаруте была сеть
chroot /mnt/gentoo /bin/bash && env-update && source /etc/profile - та-да мы в как бы в генту
тут можно утсановить дату и часовой пояс =)
Потом, что и было в дальнейшем моей ошибкой, так как я хотел сэкономить время, перекидываения маке.конф и флагов в /etc/ , так как я хотел сразу собрать ядро которое я использовал со своими настройками, а оно masked, поэтому советую просто в свежий маке.конф добавить ACCEPT_KEYWORDS="amd64 ~amd64" (следует заметить, что ~ - не стабильная ветка) и после
emerge gentoo-sources - собираем ядро (тут я добился сбора ядра своей версии чтоб конфиг к нему пременить)
cd /usr/src/linux - идем в папку симлинка ядра
make oldconfig && make && make modules_install && make install - взяли старые настройки ядра, собрали его, собрали модули, установили его (он в /boot/grub сам устанавливаеться куда надо)
Так как я хотел свой мир, я сразу перепрыгнул к установке граба
emerge grub - ставим
grub - настраиваем
grub> root (hd0,0) - как я говорил бут у меня на первом разделе первого диска(потому и 0,0)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd0) - система стоит на первом жестком, потому туда в MBR и пишем
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 16 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/boot/grub/stage2 /boot/
grub/menu.lst"... succeeded
Done.
grub> quit
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd0) - система стоит на первом жестком, потому туда в MBR и пишем
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 16 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/boot/grub/stage2 /boot/
grub/menu.lst"... succeeded
Done.
grub> quit
Вот дальше началось самое интересное, я ресинкнулся и обновил портаж(emerge portage), а потом я тупо перекинул обратно настройки мира и стал пересобирать его (emerge -e world, где -e чтоб переставило всё, независимо от того стоит или нет). Ну и понятно, так как на самом деле у меня ничего не стоит, то в какой-то момент у меня перестали собираться все пакеты. Как я выяснил обновился binutils и он требовал openrc для нормальный работы,( а тот неще не установился) так как требовался файл /etc/init.d/function.sh (это симлинк на /lib/rc/sh/function.sh), узнал я это попробывав gcc-config -l (думал с гсс не всё в порядке). Полазил по нету, нашел только одно решение - переустановка, но мне было лень и я решил сделать грязных хак, я скопировал этот файл с ноута и перекинул куда надо, собрал openrc, binutils и новый gcc, и все заладилось как надо. потом я вернул обратно все свои флаги /etc/portage/package.use и свой старый make.conf, изменив там пару флагов (для 64 битной системы), CFLAGS заменил на "-march=native -O2 -pipe" (native только с версий gcc-4.4.* работает) и поменял ACCEPT_KEYWORDS с "x86 ~x86" на "amd ~amd" (повторюсь, это дает возможно собирать не стабильные пакеты, тем кто не в теме, не советую). Ну и собственно emerge -e world --keep-going (последний флаг делает, что при ошибке он пропускает пакет и прыгает к следующему) и пошёл спать. На утро я обнаружил, что из 1079 пакет, почти все собрались и те что не собрались, я попытался собрать отдельно, решив проблему (лучше с флагом --oneshot, так как это могут быть только зависимости, а этот флаг собирает пакет не вписывая/выписывая его из мира). После этого как прилежный гентушник я запустил python-updater (ну в стайдже вроде 2.5, а у меня 2.6 поставился) и revdep-rebuild (проверяет есть ли что битое(зависимости или либы и так далее) и пересобирает). После этого вернул на место /etc/ старый (главнео чтоб make.conf что вы уже вернули и переделали не изменил опять). Так же если у вас пропиареные дрова видео или аслы вне ядра, пересоберите их и выберите (eselect opengl set nvidia), верните папку юзера ( mkdir /home/zogg в моем случае ) и рестарт. У меня не завёлся гдм, так как битая либа была, но я генту запустилась, я пересобрал дрова нвидии опять и всё заработало. Потом прошёл день ковыряний и поиска иконок и тем для рабочего стола =)