Имеется древняя непубличная linux система (на базе RedHat/CentOS, ядро 2.4.21), которая грузится с HDD (в реальности флэшка пром.исполнения с SATA интерфейсом) посредством
LILO. Скрипты инициализации в процессе загрузки перемещают необходимое для работы системы в ОЗУ и делают pivot_root/chroot. Система практически ничего не пишет кроме текущего лога (живет до перезагрузки) и необходимого для ее работы, поэтому для того, чтобы ни мучить флэшку понапрасну, всё и работает в ОЗУ. Запись на HDD (флэшку) требуется только в случае изменения каких-то настроек системы. В самой системе всё типичное для linux дистрибутивов, но не требующееся для работы, выпилено, например бинарник lilo и даже lilo.conf удалены. По сути на загрузочном HDD кроме загрузчика имеются лишь 1) ядро (Micro2), 2) образ initial ram disk (initrd.gz), 3) образ корневой FS (ramroot.img), в которую делается chroot. Вот все, что есть:
spoiler
[root@rescue /]# ls -Rla /mnt
/mnt:
total 57068
drwxr-xr-x 3 root root 4096 Nov 9 12:26 .
drwxr-xr-x 18 1000 users 360 Nov 9 12:25 ..
drwxr-xr-x 3 1000 users 4096 Mar 29 2023 boot
-rw-r--r-- 1 1000 users 58368000 Nov 9 10:56 ramroot.img
/mnt/boot:
total 1972
drwxr-xr-x 3 1000 users 4096 Mar 29 2023 .
drwxr-xr-x 3 root root 4096 Nov 9 12:26 ..
-rw-r--r-- 1 root root 1015869 Mar 29 2023 Micro2
drwxr-xr-x 2 1000 users 4096 Mar 29 2023 boot
-rw-r--r-- 1 1000 users 975486 Nov 1 10:59 initrd.gz
/mnt/boot/boot:
total 76
drwxr-xr-x 2 1000 users 4096 Mar 29 2023 .
drwxr-xr-x 3 1000 users 4096 Mar 29 2023 ..
-rw------- 1 root root 38912 Mar 29 2023 System.map
-rw-r--r-- 1 1000 users 512 Jul 14 2011 boot.b
-rw-r--r-- 1 1000 users 23108 Aug 4 2006 message
Требуется клонировать все это на новый HDD, но также интересен вариант переноса системы в вируталку. Использование Acronis, Clonezilla, в том числе, в режиме
посекторного копирования отрабатывает без проблем, но при попытке загрузиться с нового HDD грузится ядра, и далее, вероятно, на этапе монтирования initial ram disk стабильно получаю kernel panic. Также пробовал использовать dd с аналогичным неудачным результатом. Вот скриншот этого при попытке запустить всё на виртуалке, на реальном железе ситуация аналогична:
Предположение, что проблема связана с использованием LILO, который оперирует цилиндрами/головками/секторами HDD, и требуется обновить System.map для него, тем более размер/геометрия нового HDD отличаются от старого. Как это сделать правильно, т.к. все, что касается LILO из исходной системы выпилено.? Я пробовал загрузиться с
PLD RescueCD - один из старых LiveCD, где еще имеется LILO и даже нужной 23-й версии. Далее смонтировал содержимое старого HDD, с него распаковывал и смонтировал, как loop устройство файл initrd.gz (или мне нужен ramroot.img ?), затем сделал bind папок /proc, /sys и /sbin (её решил добавить, т.к. в исходной системе от бинарников LILO ничего нет) с PLD RescueCD. Затем сделал chroot и пытался выполнить команду /sbin/lilo (пусть, пока даже не создавая lilo.conf). Получил сообщение об отсутствии одного или двух .so файлов, которые, тоже выпилены из исходной системы. Мне нужно еще и папку /lib с этим(и) фалом bind-ить тоже? Я вообще в правильном направлении двигаюсь? И надо ли bind-ить папку /dev, которая в исходной системе уже имеется и не пустая? Может, это клонирование как-то проще делается, а я перемудрил?
Дополнительно: на реальной системе в BIOS для SATA контроллера установлен режим IDE Compatable. В этом случае, насколько я понимаю, важно не менять SATA порты подключения HDD, завязанные на maijor, minor номера устройств. Разумеется, я обращаю на это внимание и при попытке переноса на виртуалку (virtual device node) и на реальном железе при попытке грузиться с нового клонированного HDD.