LINUX.ORG.RU
ФорумAdmin

Перенос Linux на другой жёсткий диск


0

0

Дистрибутив пока что ASP Linux 14 Cobalt.

Ну начну с того, что несмотря на то что я читаю временами HOWTO и книжки всякие толстые я не очень представляю как происходит загрузка Linux. Насколько я понимаю сначала grub грузит ядро и initrd.img, монтируя последний как «/», потом выполняются некоторые программы на initrd, потом initrd размонтируется и монтируется тот раздел, который должен быть, после загрузка идёт в той последовательности как в /etc/rc.d указано. Есть правда непонятки: На каком именно этапе происходит обработка файла /etc/fstab? В initrd ведь тоже должны содержаться init и /etc/rc.d, как при изменении это синхронизируется с каталогом /etc/rc.d на рабочем разделе?

Теперь о перенесении. Нужно реорганизовать дисковое пространство. Раз не получается сконвертировать и изменить разделы GPartedом (ссылка на тему), то буду как советовали на одном форуме через бекап. На сколько я понимаю это значит, что я должен под Knoppix LiveCD заархивировать содержимое одного раздела, скопировать этот архив куда-нибудь в безопасное место, потом удалить этот раздел, создать новый требуемого размера и с требуемой файловой системой, потом распаковать на него архив. А чтобы всё потом монтировалось как надо отредактировать файл /etc/fstab. Вот тут первая подстава, потому как содержимое его:

UUID=4821a62e-37d6-4719-b9b7-789a6657126d /                       ext3    defaults        1 1
UUID=5d1121bf-c16b-495b-b0bf-5c771c95f935 /mnt/data               xfs     defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
UUID=e6ec1ec3-fc5f-4ad4-b47e-b70b76be5237 swap                    swap    defaults        0 0
Вобщем всё не так как в книгах написано. Почему вместо /dev/mapper/nvidia_bdebffcfp3 - UUID? Второе, как будет initrd работать на новом месте? Третье - не слишком ли я тут нагородил? Даже если это путь неправильный, знать как осуществляется перенос Linux на другой жёсткой диск будет полезно.

★★★★★

На каком именно этапе происходит обработка файла /etc/fstab?

На этапе стартовых скриптов, которые из инита, у тебя скорее всего где-то в /etc/rc.d, в общем случае дистрозависимо.

В initrd ведь тоже должны содержаться init и /etc/rc.d, как при изменении это синхронизируется с каталогом /etc/rc.d на рабочем разделе?

Не должны, и поэтому не синхронизируется. Задача инитрд - смонтировать рут и запустить на нем инит, больше он ничего не делает. Рут он получает из командной строки ядра (в загрузчике указывается), загружает модули, если нужны, находит нужный рут, монтирует, и запускает на нем init.

Почему вместо /dev/mapper/nvidia_bdebffcfp3 - UUID?

Ну а почему бы и нет, так однозначно именно эта партиция смонтируется, где б она не была подключена, я так подключал свой винт к другой машине по юсб, все грузилось.

Второе, как будет initrd работать на новом месте?

Будет, хотя тоже дистрозависимо.

Третье - не слишком ли я тут нагородил?

Все правильно пишешь. Можешь действительно тупо скопировать, и установить загрузчик (как раз установка загрузчика - самое веселое, как по мне). Рутовая файловая система должна замонтироваться, если укажешь правильный root= в грубе. А там уже и фстаб подправишь на новые уиды. Либо сразу подправь после того, как скопируешь, уиды можно посмотреть в /dev/disk/by-uuid. Ну и я использую LABEL= вместо UUID= - как по мне, при клонировании удобнее, хотя можно напутать, если 2 раздела с одинаковыми метками будут.

vga ★★ ()

> Второе, как будет initrd работать на новом месте?

initrd лучше сгенерировать заново. Он вообще часто (например при обновлении пакетов) перегенерируется. После копирования системы надо примонтировать её например в /mnt/newsystem, потом сказать

for n in dev proc sys dev/pts;do mount -obind /$n /mnt/newsystem/$n;done
chroot /mnt/newsystem su -l
и команду для генерации initrd (update-initrd или mkinitrd или как она там в твоём дистре называется).

pupok ★★ ()

думаю, будет полезно почитать gentoo stage4 how to Как именно происходит загрузка с initrd я не очень хорошо представляю, а как напрямую - все понятно. Чтобы развернуть stage4 нужно подготовить раздел, форматнуть, распаковать туда, установить grub и настроить его. И создать два минимально необходимых файла в /dev (остальные сделает udev):

/dev/null
/dev/console

с нужными major и minor, иначе хрен что загрузится. С инитрд - вполне возможно, что это будет сделано скриптами инициализации ядра автоматически

azure ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.