Возникла задача перенести установленную систему Ubuntu Server 12.04 на микросервере, находящуюся на комплектном жестком диске на другой диск, в зарезервированный раздел(ы).
Про разметку дисков микросервера можно посмотреть в заметке о GPT - LVM - RAID - 3TB.
Комплектный жесткий диск (250ГБ), был размечен, в своё время, установщиком Ubuntu Server, в автоматическом режиме, а это таблица разделов MBR, да еще и с логическими разделами. Это непорядок, тем более,сейчас осуществляю переход на GPT, чтобы снять ограничения.
Целевой 3ТБ жесткий диск Seagate ST3000DM001, размечен в современную разметку GPT. На нём существуют специально выделенные разделы под основную и резервные Linux системы.
Трудности переноса Ubuntu на другой диск (миграция MBR на GPT)
Просто копирование файлов не помогает. В Linux есть специальные файлы и каталоги. Для них специальный подход. Также, т.к. современные Linux системы имеют дело с уникальными идентификаторами GUID, то и для них, - специальных подход.
HP Proliant Microserver N40L имеет обычный BIOS, а не современную систему UEFI. Поэтому, микросерверу для загрузки нужен диск с разметкой MBR.
Комплектный диск был размечен в MBR и нормально загружался. Но для повышения гибкости микросервера, он будет преобразован.
Разметка в MBR на современных дисках, с 4KiB физическими секторами, влечёт падение производительности, из-за устаревших требований MBR разметки - начало раздело кратно 63 сектору.
Т.е. современный компьютер, должен иметь биос с поддержкой GPT разметки (а это UEFI биос), уметь с неё загружаться и должны быть диски, правильно размененные в GPT. А выравнивание, при разметке в GPT, выполнится утилитами, такими как gdisk.
На а в нашем случае - загрузчик, с MBR, будет на флешке, и проблема выравнивания и загрузки с GPT, нас не сильно коснется.
Задача
Перенести систему с комплектного загрузочного диска на 3TБ диск в один из зарезервированных ранее разделов для Ubuntu Linux. Попутно, разделить систему, данные системы и пользовательские данные. После этого, преобразовать комплектный жесткий диск в GPT. Перенести только систему обратно. После этого, создать загрузочный том на маленькой флешке, с загрузчиком GRUB2, для загрузки системы либо с 3TБ диска, либо с 250ГБ.
По максимуму, забыть про MBR и более не размечать диски в ней.
Флешку можно подключить к внутреннему разъему микросервера, а можно просто повесить сзади микросервера, вынув её после загрузки.
Исполнение
Для переноса системы, можно выполнить загрузку с другого носителя, приостановив работу микросервера.Загружаюсь с usb-ssd.
Далее, понадобятся 4 (в моём случае) точки монтирования.Одна укажет путь к корневой системе исходного (250ГБ) диска, вторая - путь к корневой системе целевого раздела 3ТБ диска, третья - путь к разделу home целевого раздела 3 TБ, четвертая - путь к разделу данных.
Перенос будет состоять из нескольких этапов.
1. Форматирование целевого раздела корневой файловой системы (/), в EXT4.
2. Форматирование целевого раздела домашней папки (/home), в EXT4.
. Простое копирование простых файлов корневой файловой системы исходного диска
. Перенос полезных данных из папки /home исходного раздела, в папку на раздел данных. Т.к. сейчас полезные данные, не относящиеся к микросерверу храняться внутри папки /home, в подпапках.
. Простое копирование остатков папки home, в целевой раздел. Перенос данных относящихся к микросерверу на раздел /home на целевом диске.
. Изменение необходимых файлов на целевом разделе: цель: /etc/fstab,
. Создание специальных каталогов и специальных файлов
- Настройка загрузки
Итак, целевой диск, в моём случае 3ТБ: /dev/sda
Раздел корневой системы целевого диска, будущая точка монтирования (/): /dev/sda7
Раздел домашней папки. будущая точка монтирования (/home): /dev/sda8.
Раздел подкачки (swap), будущей системы: /dev/sda4.
Форматирование
Форматирование - очень опасная операция, часто приводящая к случайной порче полезных данных, по невнимательности. На свой страх и риск.
Форматирование 2 разделов, одной строкой, с указанием меток:
# mkfs.ext4 -L two-root /dev/sda7 && mkfs.ext4 -L two-home /dev/sda8
Также, т.к. форматирование делается вначале пути, не лишнем будет ознакомиться с файловой системы ext4, почитать про возможности.
Монтирование
Монтирование отформатированных целевых разделов, в точки временного монтирования. Можно примонтировать в путь /mnt/two-root /mnt/two-home, можно в иные места, не суть. Единственно что можно заметить здесь, это использовать короткие имена точке монтирования, дабы не превысить ограничение длины пути в Linux.
# mkdir /mnt/two-root
# mkdir /mnt/two-home
# mount -t ext4 /dev/sda7 /mnt/two-root
# mount -t ext4 /dev/sda8 /mnt/two-home
Перенос корневой файловой системы (корня,root).
Можно пойти несколькими путями. Использовать утилиту tar, утилиту rsync, простое копирование (cp-ax), dump/restore.
Но, при любом способе, надо контролировать следующие условия: права файлов, даты файлов и каталогов, жесткие и мягкие ссылки, именованные каналы, сокеты, точки монтирования, специальные файловые системы.
Точки монтирования (например дисков с пользовательскими данными), должны исключаться из копирования (при переносе корня), либо должны предварительно быть отмонтироваными. Известные точки монтирования: /mnt - /media /home Специальные файловые системы /dev /sys /proc. Но конечный список определятся местными условиями.
Воспользуемся конвейером Linux, чтобы перенести "корень" одной командой, но прежде потренируемся.
Учебный пример: перенос файлов содержащих .backup в имени, в другую папку, посредством утилиты tar (последовательный архив):
# tar -c --exclude=place1 *.backup | tar -x --directory=/mnt/two-home/
здесь опции:
-c - создание архива
--exclude= - исключение объектов по шаблону
*.backup - это файлы которые будут архивироваться
| - символ конвейера (pipe) в Linux/Unix, перенаправление вывода команды слева в команду справа.
-x - извлечение архива
--directory= - смена каталога, на тот куда будет произведено извлечение архива
Работает tar в каталоге запуска и копирует все файлы с расширением backup.
Выполнив такую команду, мы избегаем формирование огромного файла архива корневой системы (а это лишнее место хранения), а сразу, по мере поступления файлов в архив, разархивируем их в целевой каталог. При этом, не используем сжатия, так что всё работает достаточно быстро.
Если при этом использовать такую известную утилиту NetCat (nc) - то архив можно передать и на другую машину в сети (другой микросервер).
Однако, любая ошибка в синтаксисе, указание неверных путей, может вывести рабочую систему из строя, т.к. работа суперпользователя ничем не ограничена.
Если требуется более безопасный способ, то тогда проводить архивацию в файл, а потом из файла восстанавливать на целевой точке монтирования.
Рабочий пример микросервера: перенос корневой системы
т.к. у меня 1 раздел, на котором и root и home, то при копировании root, я исключаю home, и копирую потом отдельно.
Прежде чем копировать, надо оценить имеющееся место на целевом разделе.
Всё копирование, делаем из каталога источника, чтобы избежать указания длинных путей.
# cd /mnt/src-root
# tar -cp --exclude=home --exclude=proc --exclude=sys --exclude=dev --exclude=mnt --exclude=media . | tar -x --directory=/mnt/two-root
Также, я отдельной командой скопировал каталог конфигураций etc, были какие-то сложности.
# tar -cp etc | tar -x --directory=/mnt/two-root
Скопировал содержимое папки home (а не саму папку), в корень будущего раздела /home:
# tar -cp --exclude=backup home/* | tar -x --directory=/mnt/two-home
Также, я отдельной командой скопировал папку backup из каталога home в другое место
# tar -cp home/backup | tar -x --directory=/mnt/backup
Выяснение UUID:
# blkid | grep sda7
dev/sda7: LABEL="two-root" UUID="7fd88c8d-6ec2-4142-94ff-b70987654321" TYPE="ext4"
# blkid | grep sda8
dev/sda7: LABEL="two-home" UUID="7fd88c8d-6ec2-4142-94ff-b71234567890" TYPE="ext4"
Редактирование /etc/fstab на целевом разделе:
# nano /mnt/two-root/etc/fstab
Замена UUID точек монтирования / и /home на полученные на предидущем этапе. Монтирование по уникальному идентификатору раздела, позволяет, например, переставить жесткие диски (а они тут же поменяют имена устройств) и спокойно, ядру, загрузить корневую файловую систему и домашнюю.
Каждая точка монтирования на своей строке, добавить комментарии - дату изменения, метку системы, что делалось.
Раздел подкачки указал просто устройство, т.к. uuid не нашел (раздел не форматированный) - /dev/sda4
Выдержка из fstab:
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
UUID=7fd88c8d-6ec2-4142-94ff-b70987654321 / ext4 errors=remount-ro 0 1
UUID=7fd88c8d-6ec2-4142-94ff-b71234567890 /home ext4 errors=remount-ro 0 1
# временно указано устройство, а не UUID
/dev/sda4 none swap sw 0 0
Создание точек монтирования специальных файловых систем:
# mkdir /mnt/two-root/proc
# mkdir /mnt/two-root/sys
# mkdir /mnt/two-root/dev
Обычные точки монтирования:
# mkdir /mnt/two-roor/media
# mkdir /mnt/two-roor/mnt
В принципе, на этом этапе, всё, можно воспользоваться обновлением загрузчика (update-grub) на текущей запущенной системе, он обновиться, найдет новые системы и пропишет строки запуска и попробовать перезагрузиться в новую систему, используя стартовый носитель (usb-ssd), как загрузчик.
# update-grub
Найден Ubuntu 12.04.1 LTS (12.04) на /dev/sda7
Найден openSUSE 11.4 (x86_64) на /dev/sdc2
Найден Ubuntu 12.04.1 LTS (12.04) на /dev/sde1
Новая сформированная система (резервная копия основной системы микросервера) найдена на /dev/sda7.
Откопался даже эксперимент с OpenSuse на каком-то дискe, про который я уже и забыл :-)
Также откопалась основная система микросервера на комплектном диске /dev/sde1.
Просто загрузчик на новом диске, ещё не знал, про наличие других систем и мог загрузить только свою.
А можно, заняться установкой загрузчика, но с дисками GPT - это нетривиальный процесс. Т.к. на микросервере BIOS, то нужен диск размеченный в MBR - у меня будет флешка.
В микросервере, есть удобная функциональность, стандартный внутренний USB-порт на плате. Туда подключу флеш-накопитель. Размечу его в MBR.
Сделаю несколько разделов.
Первый раздел, выделю для загрузчика. Второй раздел выделю для образа дополнительного загрузочного диска. Третий раздел - либо UDF, либо exFAT. Пока не решил, как будет.
Установка загрузчика GRUB2 на загрузочный том (флешку)
Загрузчику нужно где-то хранить свои файлы. GRUB2 хранит обычно в папке /boot/grub, иногда просто /grub.
Загружаемся в любой системе, желательно поновее (12.10).
Инсталляция загрузчика выполняется командой grub-install, с опциями.
Флешка у меня в этот раз, была /dev/sdf
# fdisk /dev/sde
Диск /dev/sde: 7743 МБ, 7743995904 байт
113 головок, 57 секторов/треков, 2348 цилиндров, всего 15124992 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Идентификатор диска: 0x000be372
Устр-во Загр Начало Конец Блоки Id Система
/dev/sde1 63 392672 196305 83 Linux
Boot раздел флешки (/dev/sde1) был примонтирован в /media/iam/boot.
Выполняем установку загрузчика GRUB2:
# grub-install --boot-directory=/media/iam/boot /dev/sdf
Этим мы меняем поведение установщика и он, вместо текущего корня, устанавливае Grub 2 в указанную директорию (файлы GRUB2, конфигурационный файл, меню и пр.), а в само устройство /dev/sdf прописывает загрузочный boot-sector.
Теперь надо обновить список операционных систем, доступных для загрузки, сгенерировав главный конфигурационный файл GRUB2, следующей командой:
# grub-mkconfig -o /media/iam/boot/grub/grub.cfg
Может возникнуть вопрос, почему не update-grub. Update-grub обновляет по умолчанию файл, /boot/grub/grub.cfg, а этот файл находится в корне загруженной системы. А это нам не надо, хотя можно тоже освежить.
Далее, я выключаю микросервер, отключаю диск с которого шла загрузка и включаю микросервер. В BIOS выставляю опцию - загрузки с USB и гружусь.
Если всё правильно, то появиться меню загрузчика и будет список готовых для загрузки операционных систем. Выбираю загрузку установленной настольной системы Ubuntu Gnome 12.10 (на /dev/sdb5).
Также, после перезагрузки проверяю загружаемость микросервера с комплектного диска, с резервной системы на диске /dev/sda7.
Замеченная особенность, загрузочная флешка автомонтируется при запуске графического рабочего стола Gnome Shell. Если её отключить, то перезагрузка не сработает и надо выключить микросервер, чтобы заработало.
В принципе, её можно убрать из автомонтирования, либо не отключать - самое простое.
Соединение GPT и MBR в Hybrid MBR
Технология нестандартная, но используемая. Существенным недостатком является, то что вся настройка (долгая) может легко слететь при любой установке, любой системы. Обычно через время, всё это забывается и благополучно переписывается. Системы проверки корректности структуры разметки, также могут не понять режим Hybrid MBR и исправить ошибку :-)
Существенным плюсом, не требуется флешка для загрузки с GPT дисков.
Если есть желание, то можно потренироваться [см. Ресурсы.1].
Использование rsync для переноса корневой системы
Rsync также может быть использован для переноса корневой системы [см. Ресурсы п. 2].
Как-то так:
# rsync -qaHEAXh --progress --exclude 'home' --exclude 'dev' --exclude 'proc' --exclude 'sys' --exclude 'media' --exclude 'mnt' /mnt/src-root/* /mnt/two-root
Ресурсы
1. Hybrid MBR. http://www.rodsbooks.com/gdisk/hybrid.html
2. Перенос Ubuntu на другой винчестер. http://lin.in.ua/articles/2-Debian/4-Opisanie_processa_perenosa_Ubuntu_Debian_na_drygoj_vinchester.html
3. О выравнивании разделов. http://www.linux.org.ru/wiki/en/%D0%92%D1%8B%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%BE%D0%B2_%D0%B4%D0%B8%D1%81%D0%BA%D0%B0
Про разметку дисков микросервера можно посмотреть в заметке о GPT - LVM - RAID - 3TB.
Комплектный жесткий диск (250ГБ), был размечен, в своё время, установщиком Ubuntu Server, в автоматическом режиме, а это таблица разделов MBR, да еще и с логическими разделами. Это непорядок, тем более,сейчас осуществляю переход на GPT, чтобы снять ограничения.
Целевой 3ТБ жесткий диск Seagate ST3000DM001, размечен в современную разметку GPT. На нём существуют специально выделенные разделы под основную и резервные Linux системы.
Трудности переноса Ubuntu на другой диск (миграция MBR на GPT)
Просто копирование файлов не помогает. В Linux есть специальные файлы и каталоги. Для них специальный подход. Также, т.к. современные Linux системы имеют дело с уникальными идентификаторами GUID, то и для них, - специальных подход.
HP Proliant Microserver N40L имеет обычный BIOS, а не современную систему UEFI. Поэтому, микросерверу для загрузки нужен диск с разметкой MBR.
Комплектный диск был размечен в MBR и нормально загружался. Но для повышения гибкости микросервера, он будет преобразован.
Разметка в MBR на современных дисках, с 4KiB физическими секторами, влечёт падение производительности, из-за устаревших требований MBR разметки - начало раздело кратно 63 сектору.
Т.е. современный компьютер, должен иметь биос с поддержкой GPT разметки (а это UEFI биос), уметь с неё загружаться и должны быть диски, правильно размененные в GPT. А выравнивание, при разметке в GPT, выполнится утилитами, такими как gdisk.
На а в нашем случае - загрузчик, с MBR, будет на флешке, и проблема выравнивания и загрузки с GPT, нас не сильно коснется.
Задача
Перенести систему с комплектного загрузочного диска на 3TБ диск в один из зарезервированных ранее разделов для Ubuntu Linux. Попутно, разделить систему, данные системы и пользовательские данные. После этого, преобразовать комплектный жесткий диск в GPT. Перенести только систему обратно. После этого, создать загрузочный том на маленькой флешке, с загрузчиком GRUB2, для загрузки системы либо с 3TБ диска, либо с 250ГБ.
По максимуму, забыть про MBR и более не размечать диски в ней.
Флешку можно подключить к внутреннему разъему микросервера, а можно просто повесить сзади микросервера, вынув её после загрузки.
Исполнение
Для переноса системы, можно выполнить загрузку с другого носителя, приостановив работу микросервера.Загружаюсь с usb-ssd.
Далее, понадобятся 4 (в моём случае) точки монтирования.Одна укажет путь к корневой системе исходного (250ГБ) диска, вторая - путь к корневой системе целевого раздела 3ТБ диска, третья - путь к разделу home целевого раздела 3 TБ, четвертая - путь к разделу данных.
Перенос будет состоять из нескольких этапов.
1. Форматирование целевого раздела корневой файловой системы (/), в EXT4.
2. Форматирование целевого раздела домашней папки (/home), в EXT4.
. Простое копирование простых файлов корневой файловой системы исходного диска
. Перенос полезных данных из папки /home исходного раздела, в папку на раздел данных. Т.к. сейчас полезные данные, не относящиеся к микросерверу храняться внутри папки /home, в подпапках.
. Простое копирование остатков папки home, в целевой раздел. Перенос данных относящихся к микросерверу на раздел /home на целевом диске.
. Изменение необходимых файлов на целевом разделе: цель: /etc/fstab,
. Создание специальных каталогов и специальных файлов
- Настройка загрузки
Итак, целевой диск, в моём случае 3ТБ: /dev/sda
Раздел корневой системы целевого диска, будущая точка монтирования (/): /dev/sda7
Раздел домашней папки. будущая точка монтирования (/home): /dev/sda8.
Раздел подкачки (swap), будущей системы: /dev/sda4.
Форматирование
Форматирование - очень опасная операция, часто приводящая к случайной порче полезных данных, по невнимательности. На свой страх и риск.
Форматирование 2 разделов, одной строкой, с указанием меток:
# mkfs.ext4 -L two-root /dev/sda7 && mkfs.ext4 -L two-home /dev/sda8
Также, т.к. форматирование делается вначале пути, не лишнем будет ознакомиться с файловой системы ext4, почитать про возможности.
Монтирование
Монтирование отформатированных целевых разделов, в точки временного монтирования. Можно примонтировать в путь /mnt/two-root /mnt/two-home, можно в иные места, не суть. Единственно что можно заметить здесь, это использовать короткие имена точке монтирования, дабы не превысить ограничение длины пути в Linux.
# mkdir /mnt/two-root
# mkdir /mnt/two-home
# mount -t ext4 /dev/sda7 /mnt/two-root
# mount -t ext4 /dev/sda8 /mnt/two-home
Перенос корневой файловой системы (корня,root).
Можно пойти несколькими путями. Использовать утилиту tar, утилиту rsync, простое копирование (cp-ax), dump/restore.
Но, при любом способе, надо контролировать следующие условия: права файлов, даты файлов и каталогов, жесткие и мягкие ссылки, именованные каналы, сокеты, точки монтирования, специальные файловые системы.
Точки монтирования (например дисков с пользовательскими данными), должны исключаться из копирования (при переносе корня), либо должны предварительно быть отмонтироваными. Известные точки монтирования: /mnt - /media /home Специальные файловые системы /dev /sys /proc. Но конечный список определятся местными условиями.
Воспользуемся конвейером Linux, чтобы перенести "корень" одной командой, но прежде потренируемся.
Учебный пример: перенос файлов содержащих .backup в имени, в другую папку, посредством утилиты tar (последовательный архив):
# tar -c --exclude=place1 *.backup | tar -x --directory=/mnt/two-home/
здесь опции:
-c - создание архива
--exclude= - исключение объектов по шаблону
*.backup - это файлы которые будут архивироваться
| - символ конвейера (pipe) в Linux/Unix, перенаправление вывода команды слева в команду справа.
-x - извлечение архива
--directory= - смена каталога, на тот куда будет произведено извлечение архива
Работает tar в каталоге запуска и копирует все файлы с расширением backup.
Выполнив такую команду, мы избегаем формирование огромного файла архива корневой системы (а это лишнее место хранения), а сразу, по мере поступления файлов в архив, разархивируем их в целевой каталог. При этом, не используем сжатия, так что всё работает достаточно быстро.
Если при этом использовать такую известную утилиту NetCat (nc) - то архив можно передать и на другую машину в сети (другой микросервер).
Однако, любая ошибка в синтаксисе, указание неверных путей, может вывести рабочую систему из строя, т.к. работа суперпользователя ничем не ограничена.
Если требуется более безопасный способ, то тогда проводить архивацию в файл, а потом из файла восстанавливать на целевой точке монтирования.
Рабочий пример микросервера: перенос корневой системы
т.к. у меня 1 раздел, на котором и root и home, то при копировании root, я исключаю home, и копирую потом отдельно.
Прежде чем копировать, надо оценить имеющееся место на целевом разделе.
Всё копирование, делаем из каталога источника, чтобы избежать указания длинных путей.
# cd /mnt/src-root
# tar -cp --exclude=home --exclude=proc --exclude=sys --exclude=dev --exclude=mnt --exclude=media . | tar -x --directory=/mnt/two-root
Также, я отдельной командой скопировал каталог конфигураций etc, были какие-то сложности.
# tar -cp etc | tar -x --directory=/mnt/two-root
Скопировал содержимое папки home (а не саму папку), в корень будущего раздела /home:
# tar -cp --exclude=backup home/* | tar -x --directory=/mnt/two-home
Также, я отдельной командой скопировал папку backup из каталога home в другое место
# tar -cp home/backup | tar -x --directory=/mnt/backup
Выяснение UUID:
# blkid | grep sda7
dev/sda7: LABEL="two-root" UUID="7fd88c8d-6ec2-4142-94ff-b70987654321" TYPE="ext4"
# blkid | grep sda8
dev/sda7: LABEL="two-home" UUID="7fd88c8d-6ec2-4142-94ff-b71234567890" TYPE="ext4"
Редактирование /etc/fstab на целевом разделе:
# nano /mnt/two-root/etc/fstab
Замена UUID точек монтирования / и /home на полученные на предидущем этапе. Монтирование по уникальному идентификатору раздела, позволяет, например, переставить жесткие диски (а они тут же поменяют имена устройств) и спокойно, ядру, загрузить корневую файловую систему и домашнюю.
Каждая точка монтирования на своей строке, добавить комментарии - дату изменения, метку системы, что делалось.
Раздел подкачки указал просто устройство, т.к. uuid не нашел (раздел не форматированный) - /dev/sda4
Выдержка из fstab:
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
UUID=7fd88c8d-6ec2-4142-94ff-b70987654321 / ext4 errors=remount-ro 0 1
UUID=7fd88c8d-6ec2-4142-94ff-b71234567890 /home ext4 errors=remount-ro 0 1
# временно указано устройство, а не UUID
/dev/sda4 none swap sw 0 0
Создание точек монтирования специальных файловых систем:
# mkdir /mnt/two-root/proc
# mkdir /mnt/two-root/sys
# mkdir /mnt/two-root/dev
Обычные точки монтирования:
# mkdir /mnt/two-roor/media
# mkdir /mnt/two-roor/mnt
В принципе, на этом этапе, всё, можно воспользоваться обновлением загрузчика (update-grub) на текущей запущенной системе, он обновиться, найдет новые системы и пропишет строки запуска и попробовать перезагрузиться в новую систему, используя стартовый носитель (usb-ssd), как загрузчик.
# update-grub
Найден Ubuntu 12.04.1 LTS (12.04) на /dev/sda7
Найден openSUSE 11.4 (x86_64) на /dev/sdc2
Найден Ubuntu 12.04.1 LTS (12.04) на /dev/sde1
Новая сформированная система (резервная копия основной системы микросервера) найдена на /dev/sda7.
Откопался даже эксперимент с OpenSuse на каком-то дискe, про который я уже и забыл :-)
Также откопалась основная система микросервера на комплектном диске /dev/sde1.
Просто загрузчик на новом диске, ещё не знал, про наличие других систем и мог загрузить только свою.
А можно, заняться установкой загрузчика, но с дисками GPT - это нетривиальный процесс. Т.к. на микросервере BIOS, то нужен диск размеченный в MBR - у меня будет флешка.
В микросервере, есть удобная функциональность, стандартный внутренний USB-порт на плате. Туда подключу флеш-накопитель. Размечу его в MBR.
Сделаю несколько разделов.
Первый раздел, выделю для загрузчика. Второй раздел выделю для образа дополнительного загрузочного диска. Третий раздел - либо UDF, либо exFAT. Пока не решил, как будет.
Установка загрузчика GRUB2 на загрузочный том (флешку)
Загрузчику нужно где-то хранить свои файлы. GRUB2 хранит обычно в папке /boot/grub, иногда просто /grub.
Загружаемся в любой системе, желательно поновее (12.10).
Инсталляция загрузчика выполняется командой grub-install, с опциями.
Флешка у меня в этот раз, была /dev/sdf
# fdisk /dev/sde
Диск /dev/sde: 7743 МБ, 7743995904 байт
113 головок, 57 секторов/треков, 2348 цилиндров, всего 15124992 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Идентификатор диска: 0x000be372
Устр-во Загр Начало Конец Блоки Id Система
/dev/sde1 63 392672 196305 83 Linux
Boot раздел флешки (/dev/sde1) был примонтирован в /media/iam/boot.
Выполняем установку загрузчика GRUB2:
# grub-install --boot-directory=/media/iam/boot /dev/sdf
Этим мы меняем поведение установщика и он, вместо текущего корня, устанавливае Grub 2 в указанную директорию (файлы GRUB2, конфигурационный файл, меню и пр.), а в само устройство /dev/sdf прописывает загрузочный boot-sector.
Теперь надо обновить список операционных систем, доступных для загрузки, сгенерировав главный конфигурационный файл GRUB2, следующей командой:
# grub-mkconfig -o /media/iam/boot/grub/grub.cfg
Может возникнуть вопрос, почему не update-grub. Update-grub обновляет по умолчанию файл, /boot/grub/grub.cfg, а этот файл находится в корне загруженной системы. А это нам не надо, хотя можно тоже освежить.
Далее, я выключаю микросервер, отключаю диск с которого шла загрузка и включаю микросервер. В BIOS выставляю опцию - загрузки с USB и гружусь.
Если всё правильно, то появиться меню загрузчика и будет список готовых для загрузки операционных систем. Выбираю загрузку установленной настольной системы Ubuntu Gnome 12.10 (на /dev/sdb5).
Также, после перезагрузки проверяю загружаемость микросервера с комплектного диска, с резервной системы на диске /dev/sda7.
Замеченная особенность, загрузочная флешка автомонтируется при запуске графического рабочего стола Gnome Shell. Если её отключить, то перезагрузка не сработает и надо выключить микросервер, чтобы заработало.
В принципе, её можно убрать из автомонтирования, либо не отключать - самое простое.
Соединение GPT и MBR в Hybrid MBR
Технология нестандартная, но используемая. Существенным недостатком является, то что вся настройка (долгая) может легко слететь при любой установке, любой системы. Обычно через время, всё это забывается и благополучно переписывается. Системы проверки корректности структуры разметки, также могут не понять режим Hybrid MBR и исправить ошибку :-)
Существенным плюсом, не требуется флешка для загрузки с GPT дисков.
Если есть желание, то можно потренироваться [см. Ресурсы.1].
Использование rsync для переноса корневой системы
Rsync также может быть использован для переноса корневой системы [см. Ресурсы п. 2].
Как-то так:
# rsync -qaHEAXh --progress --exclude 'home' --exclude 'dev' --exclude 'proc' --exclude 'sys' --exclude 'media' --exclude 'mnt' /mnt/src-root/* /mnt/two-root
потом и для home.
Часто практикуется синхронизация рабочей копии системы с резервной по расписанию.
Ну и обратная операция, когда всё проверено и работает так как надо, можно приступить к форматированию комплектно диска в GPT и обратный перенос. Файл заметки большой, а команд не так много.
При обратной операции попробую rsync.
Всё.
Ресурсы
1. Hybrid MBR. http://www.rodsbooks.com/gdisk/hybrid.html
2. Перенос Ubuntu на другой винчестер. http://lin.in.ua/articles/2-Debian/4-Opisanie_processa_perenosa_Ubuntu_Debian_na_drygoj_vinchester.html
3. О выравнивании разделов. http://www.linux.org.ru/wiki/en/%D0%92%D1%8B%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%BE%D0%B2_%D0%B4%D0%B8%D1%81%D0%BA%D0%B0
Комментариев нет:
Отправить комментарий