Апгрейд, или как НЕ надо обновлять Слакваре.
Дали мне тут на поиграться новую машинку, с amd x2 (2*1900 Mhz, частоту можно сбрасывать до 1 Ггц), 2 Гб памяти, SATA самсунгом на 300 Гб. и RS780 как "видеокарта".
Хорошая игрушка, но без Linux-а не очень интересная. Загружаю самодельный LiveDVD, на который записана без малого вся моя система, но годичной давности (сделанная с помощью linux-live scripts, получилась некая приватная версия Slax'а, несовместимая с ним по формату модулей). После небольших заморочек с падающим Х-сервером (сам виноват, git версию закатал в suqashfs3-архив) получаю возможность разбить диск fdisk'ом, сделать mkfs.ext3 для корня и mkfs.xfs для всего-остального, выделив 3Гб своп-раздел под эксперименты с suspend-to-disk. Потом просто через вечный Миднайт Коммандер копирую файлы работающей системы на будущий рут-раздел (sda1), редактирую lilo.conf (да, я всё еще использую Lilo), монтирую /mnt/sda1/boot с опцией bind на boot "живой" системы, lilo, перезагрузка .... Логин. Небольшая чи(с)тка в /etc, статическое назначение ip-адреса, хотя сетевого кабеля ещё нету. Потом на USB флэшке притаскивается упакованный каталог /usr/X11R7 (всё-таки для ручных манипуляций Х сервер удобнее держать в таком виде, а не размазанным по всему /usr), ядро (2.6.32-rc3), ядро компилируюся, Х сервер заменяется, ребут в новое ядро (всего 2000 секунд на полную компиляцию) - и у меня уже есть Х с поддержкой моей видеокарты.
Позже покупается сетевой кабель, отдельные директории с основной машины монтируются через NFS (до 9.6 Мб/с на 100Mbit сети для больших файлов), и жизнь налаживается. Но для полной идентичности не хватает чего-то. Может, компилятора (gcc 4.2.4 vs 4.3.3). Ставить заново через пакетный менеджер лениво, делаю большой squashfs4 архив (в ядре есть теперь нативная поддержка этой сжатой ФС, но несовместимая с предыдущими версиями) из своего корневого раздела на основной машине (mksquashfs /mnt/hdc1/ /mnt/hdb2/image-date.sfs4 -e /mnt/hdc1/swap.file), копирую образ на машину, где его надо раскрыть, и задумываюсь ....
Знаю, что на старой и новой системах различаются Glibc (2.7 vs 2.9). Потенциально траблоопасная ситуация. Вспоминая, что для одного из 3-х ядер у меня есть initrd, сделанный стандартным скриптом mkinitrd, решаю махнуть рукой, открываю терминал с mc, монтирую образ, и начинаю копировать в корень, "поверх" старой системы. На полпути вылетает сначала мц, а потом и всё остальное. После перезагрузки не работает ничего, init не инитит.
"Круто!", подумал я и набрал в приглашении Lilo "2.6.31-rc9 init=/bin/sh root=/dev/ram0". И попал в урезанный шелл, находящийся в initrd. Изначально этот initrd служил для того, чтобы научить моё строго IDE ядро грузиться с SATA.
mkinitrd -c -m ahci:sd_mod -o 2.6.31-rc9 -f ext3 -r /dev/sda1
Однако сейчас мне нужно было чинить систему ... для начала создал несколько подкатологов
mkdir /mnt/root
mkdir /mnt/sda5
mkdir /mnt/image
mount /dev/sda5 не увенчался успехом. Зато mount /dev/sda1 /mnt/root сработало. Вспомнил, что пддержки xfs в инитрд я не делал... mount --bind спас в очередной раз, mount --bind /mnt/root/lib/modules /lib/modules и дальше insmod exportfs, insmod xfs, insmod squashfs. дальше mount /dev/sda5 /mnt/sda5 , mount /mnt/sda5/image-date.sfs4 /mnt/image и вперёд 'cp -R' . Правда, сначала пришлось rm -r /mnt/root/usr сделать.
Потом umont в обратном порядке, ребут.... Всё починено!
Дали мне тут на поиграться новую машинку, с amd x2 (2*1900 Mhz, частоту можно сбрасывать до 1 Ггц), 2 Гб памяти, SATA самсунгом на 300 Гб. и RS780 как "видеокарта".
Хорошая игрушка, но без Linux-а не очень интересная. Загружаю самодельный LiveDVD, на который записана без малого вся моя система, но годичной давности (сделанная с помощью linux-live scripts, получилась некая приватная версия Slax'а, несовместимая с ним по формату модулей). После небольших заморочек с падающим Х-сервером (сам виноват, git версию закатал в suqashfs3-архив) получаю возможность разбить диск fdisk'ом, сделать mkfs.ext3 для корня и mkfs.xfs для всего-остального, выделив 3Гб своп-раздел под эксперименты с suspend-to-disk. Потом просто через вечный Миднайт Коммандер копирую файлы работающей системы на будущий рут-раздел (sda1), редактирую lilo.conf (да, я всё еще использую Lilo), монтирую /mnt/sda1/boot с опцией bind на boot "живой" системы, lilo, перезагрузка .... Логин. Небольшая чи(с)тка в /etc, статическое назначение ip-адреса, хотя сетевого кабеля ещё нету. Потом на USB флэшке притаскивается упакованный каталог /usr/X11R7 (всё-таки для ручных манипуляций Х сервер удобнее держать в таком виде, а не размазанным по всему /usr), ядро (2.6.32-rc3), ядро компилируюся, Х сервер заменяется, ребут в новое ядро (всего 2000 секунд на полную компиляцию) - и у меня уже есть Х с поддержкой моей видеокарты.
Позже покупается сетевой кабель, отдельные директории с основной машины монтируются через NFS (до 9.6 Мб/с на 100Mbit сети для больших файлов), и жизнь налаживается. Но для полной идентичности не хватает чего-то. Может, компилятора (gcc 4.2.4 vs 4.3.3). Ставить заново через пакетный менеджер лениво, делаю большой squashfs4 архив (в ядре есть теперь нативная поддержка этой сжатой ФС, но несовместимая с предыдущими версиями) из своего корневого раздела на основной машине (mksquashfs /mnt/hdc1/ /mnt/hdb2/image-date.sfs4 -e /mnt/hdc1/swap.file), копирую образ на машину, где его надо раскрыть, и задумываюсь ....
Знаю, что на старой и новой системах различаются Glibc (2.7 vs 2.9). Потенциально траблоопасная ситуация. Вспоминая, что для одного из 3-х ядер у меня есть initrd, сделанный стандартным скриптом mkinitrd, решаю махнуть рукой, открываю терминал с mc, монтирую образ, и начинаю копировать в корень, "поверх" старой системы. На полпути вылетает сначала мц, а потом и всё остальное. После перезагрузки не работает ничего, init не инитит.
"Круто!", подумал я и набрал в приглашении Lilo "2.6.31-rc9 init=/bin/sh root=/dev/ram0". И попал в урезанный шелл, находящийся в initrd. Изначально этот initrd служил для того, чтобы научить моё строго IDE ядро грузиться с SATA.
mkinitrd -c -m ahci:sd_mod -o 2.6.31-rc9 -f ext3 -r /dev/sda1
Однако сейчас мне нужно было чинить систему ... для начала создал несколько подкатологов
mkdir /mnt/root
mkdir /mnt/sda5
mkdir /mnt/image
mount /dev/sda5 не увенчался успехом. Зато mount /dev/sda1 /mnt/root сработало. Вспомнил, что пддержки xfs в инитрд я не делал... mount --bind спас в очередной раз, mount --bind /mnt/root/lib/modules /lib/modules и дальше insmod exportfs, insmod xfs, insmod squashfs. дальше mount /dev/sda5 /mnt/sda5 , mount /mnt/sda5/image-date.sfs4 /mnt/image и вперёд 'cp -R' . Правда, сначала пришлось rm -r /mnt/root/usr сделать.
Потом umont в обратном порядке, ребут.... Всё починено!
Leave a comment