Я использую Ubuntu 10.04 и только что установил Linux Mint 13. Я могу работать с Linux Mint полный рабочий день, но сейчас я хотел установить его на первый раздел, но сохранить загрузочную Ubuntu.
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 58593279 29295616 83 Linux
/dev/sda2 58595326 976768064 459086369+ 5 Extended
/dev/sda5 959980140 976768064 8393962+ 82 Linux swap / Solaris
/dev/sda6 58595328 898696186 420050429+ 83 Linux
/dev/sda7 898697216 959963135 30632960 83 Linux
sda6 - это раздел данных со всеми моими документами. sda7 был добавлен новый для создания двойной загрузки. Я клонировал sda1 в sda7 с
dd if=/dev/sda1 of=/dev/sda7
Конечно, это также клонировало UUID, поэтому я создал новый UUID для sda7 с
tune2fs /dev/sda7 -U random
Когда я перечисляю UUID с blkid
, то это действительно изменился. Затем я установил Linux Mint на sda1. У меня также есть настройка fstab для монтирования sda7, чтобы я мог копировать файлы конфигурации в новую ОС. Я нормально загружаюсь в Linux Mint, но когда я пытаюсь загрузиться в Ubuntu, я получаю сообщение (из памяти, возможно, неполное), что загрузчик не может найти /dev/disk/by-uuid/<old UUID>
.
В этот момент я посмотрел в grub.cfg, и, конечно же, старый UUID указан вместе с новым:
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Ubuntu, with Linux 2.6.32-41-generic (on /dev/sda7)" --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root='(hd0,msdos7)'
search --no-floppy --fs-uuid --set=root 3869f8c2-dcf8-4522-bc8b-91b0ce0040fa #This is the new UUID
linux /boot/vmlinuz-2.6.32-41-generic root=UUID=72a5e117-9a39-4de1-9d28-53791d055ff5 ro quiet splash #This is the old UUID
initrd /boot/initrd.img-2.6.32-41-generic
}
Затем я попытался исправить это с помощью sudo update-grub
, но Я все еще получаю ту же запись со смесью новых и старых UUID. Я также попытался вручную отредактировать grub.cfg, чтобы заменить старый на новый UUID, но я все еще получаю то же сообщение, что загрузчик не может найти устройство со старым UUID.
Итак, откуда update-grub
читает старый UUID? И как мне исправить grub, чтобы он мог загружать клонированный раздел?
Я предполагаю, что вы не просматриваете / редактируете тот же самый grub.cfg, на который смотрит загрузчик. Помните, у вас есть две разные /boot/grub
директории, и загрузчик должен знать, какую искать. update-grub
обновляет grub.cfg в смонтированном в настоящее время /boot/grub/grub.cfg
. Я предполагаю, что загрузчик смотрит на другой раздел. После того, как я закончу свою первую чашку кофе, я смогу подтвердить это, прочитав ваш пост и, возможно, сделав заметки, но сейчас это должно быть обоснованное предположение.
Я считаю, что вам нужно бежать sudo grub-install --root-directory=/ /dev/sda
. Я даю полную версию для дополнительной информации - параметр --root-directory
по умолчанию равен /
.
Эта команда переустановит загрузчик в / dev / sda, сказав, что он ищет параметр «root-directory» (/ boot / grub) для grub.cfg. Если вы хотите, чтобы ваш grub.cfg находился в другом дистрибутиве, вы можете смонтировать его и указать другой «корневой каталог», такой как, например, /mnt/my_other_distro/
, если он был смонтирован в /mnt/my_other_distro
.
Редактировать: ( после кофе ) Теперь я вижу одну важную проблему ... вы должны были изменить UUID для sda1, а не sda7. Затем, когда вы установили Mint на sda1, он все равно изменит его, если вы переформатируете, но если вы его не измените, он может запутаться. Изменяя UUID для старой установки Ubuntu, вы сделали недействительными все параметры монтирования в его / etc / fstab вместе с меню GRUB. Я предполагаю, что Mint не регенерирует меню, а только копирует записи, поэтому ему все равно, правильно это или нет.
Запуск update-grub исправляет grub.cfg, но не код grub в MBR; это изменяется только с помощью grub-install.
И Linux Mint не знает, что на самом деле означают записи в grub.cfg, так как он может ссылаться на диск, которого в тот момент даже не было. Я думаю, он просто добавляет новую запись к вершине существующих.
Хорошо, я нашел решение, которое, вероятно, я должен (или не должен) делать в первую очередь.
После dd
клонирования раздела Ubuntu перед установкой Linux Mint я загрузился в Ubuntu. Именно тогда я понял (глядя на таблицу разделов), что UUID был дублирован, поэтому я сгенерировал новый UUID. Но когда я установил Linux Mint, он отформатировал исходный раздел и все равно сгенерировал новый UUID. По сути, я запустил
sudo tune2fs /dev/sda7 -U <old UUID>
sudo grub-update
и соответственно сбросил fstabs, и все заработало. Во-первых, никогда не следовало изменять UUID клонированного раздела.
Тем не менее, может быть полезно узнать, как изменить UUID раздела, и при этом загрузчик найдет его, так что Марти спасибо за ваш ответ выше.
Это останется полезным и для других, и для меня, и для меня тоже.
Редакция № 1 --------------------
http://www.linuxjournal.com/content/copy-your -linux-install-different-partition-or-drive
просто шаг, который я нашел, просматривая ..... и сразу после выхода отсюда после того, как я добавил это ниже .. ...
--------------- конец редактирования # 1
И я должен добавить это;
UUID всегда останется неизменным. имеет значение форматирование. Он МОЖЕТ измениться, если потребуется, только при использовании Dban или SecureDelete (который каждый может найти с помощью HaremsBootCD для всех ОС или UltimateBootCD для Windows) (потому что он выходит из системы / выключается ОС для запуска этих программ). Только SecureDelete может общаться прямо на HDD. Ни один из форматов, выполненных через / любая ОС, не может стереть UUID, даже через обычный liveCD (как объяснено / сказано выше).
Так что да, как я и догадывался, если клонированный раздел клонировал uuid (что является ОЧЕНЬ плохой идеей и неправильным управлением со стороны разработчика программного обеспечения ...), было бы безопасно вести журнал и записывать uuid как дисков, так и таблицы разделов, чтобы исправить будущий fstab (используя любой live CD для редактирования его как root ofcourse) для загрузки linux. Но я не думаю и не вижу, как клонированный будет иметь какую-либо часть корневой таблицы разделов. Раздел и таблица разделов - это две разные вещи, одна идет поверх другой как слой на столе. Таким образом, UUID должен оставаться прежним ..... если только в этой таблице не добавлен новый раздел (основной, логический или расширенный эфир)
Итак, сейчас нет нужды ... Linux - это весело потому что мы можем сделать это, но также и Linux - это боль, потому что мы должны знать, что мы должны делать и должны делать все эти "хитрые" вещи.
И я ЛЮБЛЮ / ЛЮБЛЮ форумы Ubuntu / Mint / Debian / CrunchBang / Slackware, потому что мы можем обмениваться старым и НОВЫМ решением. Не так, как (не то, что нравится и нравится большинству и мне) на форумах, посвященных архитектуре, где любое «решенное» очень устарело после 12 дней или даже хуже, и / или любой пользователь даже получает выговор за попытку сказать «спасибо» (даже после прочтения архивных руководств) (может быть, мне стоит начать делать свою собственную ОС из LFS --linux-from-scratch;) может быть проще собрать, чем спрашивать других, как у них работает, кто знает (?)
Во всяком случае, я попал сюда из поиска Google для /, если способ клонирования установки Linux. Я не только обнаружил, что это можно сделать, но и должен убедиться, что он имеет правильный UUID, о котором я не думал, кроме как просто его клонировать и загрузить.