Перенос системы LINUX на другой винчестер с переразбивкой разделов
Когда-то давным давно в далекой-далекой галактике мне понадобилось перенести мою систему linux с одного винчестера на другой, а пользоваться проприетарщиной ужас, как не хотелось. Погуглив и поискав с помощью других поисковиков я нашел для себя решение, которое линукс-админу может показаться смешным, а меня оно тогда здорово выручило.
В общем — вот оно. Бейте ногами, режьте на части. Встречайте!
Первое, что нам необходимо сделать — это разметить новый жесткий диск в соответствии с желаниями и, возможно, исключив ошибки предыдущей разметки (если на исходном диске что то не нравится).
Разберем на конкретном примере моей системы. Я собираюсь перенести систему с HDD=80Gb на HDD=20Gb.
Мой диск, объемом 80Gb размечен следующим образом:
/dev/hda1 — /boot (250 Mb)
/dev/hda2 — swap (1Gb)
/dev/hda3 — extended (20Gb) (включает в себя /dev/hda5, /dev/hda6, /dev/hda7, /dev/hda8)
/dev/hda5 — / (5Gb)
/dev/hda6 — /tmp (512Mb)
/dev/hda7 — /usr (10Gb)
/dev/hda8 — /var (5Gb)
/dev/hda4 — /home (54Gb)
/home очень сильно забит информацией, потому его в клонирование я не включаю.
Выставив перемычки как положено, я подключаю новый HDD в систему. Он принял метку hdb
Можно разметить его с помощью ЛЮБОЙ удобной для вас утилиты. Мне было проще воспользоваться GPARTED — так визуально понятнее, да и видно там сразу, сколько реально места занято данными на той или иной партиции, что поможет определить стоит ли выделять столько много (или мало) места.
Я разметил новый диск (/dev/hdb) следующим образом:
/dev/hdb1 — /boot (250 Mb)
/dev/hdb2 — swap (1Gb)
/dev/hdb3 — extended (14Gb) (включает в себя /dev/hdb5, /dev/hdb6, /dev/hdb7, /dev/hdb8)
/dev/hdb5 — / (1Gb)
/dev/hdb6 — /tmp (512Mb)
/dev/hdb7 — /var (5Gb)
/dev/hdb8 — /usr (7Gb)
/dev/hdb4 — /home (4Gb)
Следующим шагом надо подмонтировать все созданные разделы на новом HDD к существующей системе.
Для этого на существующей системе я создал директорию /backup, в которой создал поддиректории /boot, /root, /var, /usr (/tmp — не надо), в соответствии с разделами на которые я разделил новый HDD.
Далее осуществляем само монтирование:
sudo mount /dev/hdb1 /backup/boot
sudo mount /dev/hdb5 /backup/root
sudo mount /dev/hdb7 /backup/var
sudo mount /dev/hdb8 /backup/usr
Вот и подобрались к самому интересному, но отнюдь не самому простому месту, к копированию данных.
В отличии от Windows Linux позволяет скопировать себя ПОЛНОСТЬЮ. Но надо помнить один важный момент — в системе есть аттрибуты на директории и файлы, а так же симлинки и хардлинки. Так вот необходимо так скопировать систему, чтоб все эти связи не растерялись. Для такой процедуры, по мнению больших специалистов, лучше всего подходит команда tar.
Смысл в том, что мы НЕ БУДЕМ архивировать файлы на диск, а будем их переносить через так называемую «трубу» или «поток» на приемный HDD.
Для упрощения процедуры переноса я написал скрипт backup.sh:
#!/bin/sh
cd /
tar -cf — dev initrd.img opt srv bin cdrom etc initrd lib sbin sys vmlinuz | (cd /backup/root; tar -xvpf -)
cd /boot
tar -cf — * | (cd /backup/boot; tar -xvpf -)
cd /var
tar -cf — * | (cd /backup/var; tar -xvpf -)
cd /usr
tar -cf — * (cd /backup/usr; tar -xvpf -)
немного объясню, что к чему:
«cd /»
— переход в root
«tar -cf — dev initrd.img opt srv bin cdrom etc initrd lib sbin sys | (cd /backup/root; tar -xvpf -)
» — заtarивание перечисленных директорий и файлов с передачей их на расtarивание на приемный HDD.
Узнать какие директории и файлы надо переносить несложно. Просто выполните команду «ls /» тем самым получив листинг вашей системы начиная с /.
В моем случае это:
ls /
backup boot dev home initrd.img media opt root srv tmp var
bin cdrom etc initrd lib mnt proc sbin sys usr vmlinuz
Из всего этого «добра» нам нужно выделить то что будет находиться в /.
Так, как я выделил отдельные партиции на диске под /boot, /var, /tmp, /usr и /home, получается что их на данном шаге нужно пропустить. Следовательно берем только dev initrd.img opt srv var
bin cdrom etc initrd lib sbin sys vmlinuz
А с остальными проще:
cd /boot
— заходим в существующий /boot
tar -cf — * | (cd /backup/boot; tar -xvpf -)
переносим все содержимое /boot в /backup/boot
Итак запускаем скрипт backup.sh и идем отдыхать на некоторое время. У меня все заняло около 10 минут.
Теперь еще один важный момент на который я вначале не обратил внимание, за что поплатился лишним временем и головной болью.
НЕДОСТАТОЧНО просто скопировать данные на партиции /var, /tmp, /usr.
После всех процедур переноса нам необходимо СОЗДАТЬ эти директории на приемном диске, как точки монтирования тех самых партиций (и все те точки монтирования, которые мы исключили при переносе — /home, /media, /tmp, /var, /mnt, /proc, /usr) ОБЯЗАТЕЛЬНО С ТЕМИ ЖЕ аттрибутами! То есть:
sudo mkdir /backup/root/home
sudo mkdir /backup/root/media
sudo mkdir /backup/root/tmp
sudo mkdir /backup/root/var
sudo mkdir /backup/root/mnt
sudo mkdir /backup/root/proc
sudo mkdir /backup/root/usr
какие выставить аттрибуты на директории можно узнать набрав команду ls -la / на исходной системе. Но кроме /tmp везде должен быть владелец root группа root и права 766. На /tmp надо поставить права 777.
Теперь надо на приемном HDD поправить fstab, если необходимо (если вдруг вы СОВСЕМ ПО ДРУГОМУ разметили диск). А так же поправить menu.lst загрузчика GRUB.
В UBUNTU что в fstab, что в menu.lst все диски прописаны через UUID а не просто /dev/hda.
узнать какой у вашего диска UUID можно с помощью команды: ls -l /dev/disk/by-uuid, на выводе должно получиться что то вроде:
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 11815c66-5ae7-4497-9039-51de9adef664 -> ../../hda2
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 78711a48-6776-4474-8fa8-87016aad83a2 -> ../../hda6
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 83fded3d-37c4-4d85-a965-a7bbe326178a -> ../../hda7
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 a60e482c-8260-48fb-a19e-f5f906d4d444 -> ../../hda8
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 bc7607fe-3bf2-4bc1-adce-8ab749a271c9 -> ../../hda1
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 cacd40ea-ac88-4143-b5d9-5cb477eeb85d -> ../../hda4
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 d4404ea9-0a8e-4a4c-b72d-10a5edd697be -> ../../hda5
вот нам нужны как раз цифры «11815c66-5ae7-4497-9039-51de9adef664», к примеру. Это UUID партиции swap (в моем случае).
в menu.lst правим следующие строки:
# kopt=root=UUID=d4404ea9-0a8e-4a4c-b72d-10a5edd697be ro
(не смотрите что строка закомментирована, при обновлении ядра именно отсюда берется информация)
kernel /vmlinuz-2.6.22-14-generic root=UUID=d4404ea9-0a8e-4a4c-b72d-10a5edd697be ro quiet splash locale
kernel /vmlinuz-2.6.22-14-generic root=UUID=d4404ea9-0a8e-4a4c-b72d-10a5edd697be ro single
Не забудьте тот факт, что хоть система и скопирована на диск, но она пока не умеет загружаться, потому что мы не установили загрузчик.
Делается это просто:
Берем установочный диск UBUNTU и грузимся.
переходим в консоль ctrl+f1
sudo su
grub
find /grub/stage1
root (hd0,0) сюда пишем то что выдала предыдущая команда
setup (hd0) сюда пишем то же самое но до первой запятой.
quit
Все — отсединяем диск от системы, подключаем, проверяем. У меня все заработало.
Так как я не переносил /home — то система ругнулась на то что я как пользователь есть а вот домашней папки у меня нет. Я поступил варварским способом — userdel %username% , а затем adduser %username% .
Просто мне было НЕВАЖНО. И лень расставлять аттрибуты. А таким образом система сделала все за меня.
Источник
Перенос Linux на другой компьютер
Вступление
Хочу поделиться собственным опытом переноса системы на другой компьютер, целиком и полностью отличающийся аппаратной конфигурацией.
На самом деле, вариантов перенести систему много. Каждый имеет свой подход. Я же опишу способ, который больше всего подходит для новичков.
Что имеем
Итак, вот конфигурация моего исходного компа, с установленно ОС:
Материнка: Intel S3200shv
Процессор: Intel Core 2 Duo E8400
Память: 8Гб
Raid 1 ёмкостью 300 Гб
ОС: Fedora 12 i686
Будем для краткости называть его «донором».
Конфигурация компа назначния:
Материнка: Intel Desktop Board D845EBG2
Процессор: Celeron 2ГГц
Память: 512Мб
HDD 160 Гб
Это будет «пациент».
Как видите, системы различаются целиком и полностью. В том числе размеры жёстких дисков. Но в этом нет ничего страшного.
На исходной системе мои разделы имели такой вид:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/dm-6 5.0G 2.5G 2.2G 53% /
/dev/dm-1 194M 55M 130M 30% /boot
/dev/dm-5 4.0G 141M 3.7G 4% /tmp
/dev/dm-3 99G 257M 94G 1% /var/db
/dev/dm-7 2.0G 87M 1.8G 5% /var/log
/dev/dm-2 173G 229M 164G 1% /var/www
В кратком виде алгоритм будет таким:
1. Создать разделы у «донора», как Вы хотите.
2. Установить на комп назначения такую же систему, как на исходном компе.
3. Подключить к исходному компу HDD компа назначения
4. Скопировать файлы из разделов «донора» в разделы «пациента».
Многие вместо второго шага правят разделы вручную. Я предлагаю установку, поэтому этот способ как мне кажется, проще и универсальнее. Чтобы Вы не мучились с переустановкой загрузчика и правкой /etc/fstab.
Шаг первый
Я размечал свой HDD с помощью загрузочного диска pmagic. Удобно и наглядно.
Разделы я создавал «один-в-один» как и на исходном компе, только меньше размером, т.к. HDD «пациента» меньше.
Шаг второй
Установка Fedora на подготовленный HDD прошла быстро и без проблем. Правда, сначала не мог запустить её в графическом режиме, т.к. стояла планка только в 256 Мб. Пришлось заменить на 512 и процесс пошёл.
Шаг третий
Для начала советую провести у «донора» небольшую подготовку. Это установить kudzu:
yum install kudzu
На всякий случай с помощью dd создать бэкап исходной системы. Мало ли, вдруг что-то напутаете при копировании файлов из-за невнимательности?
Далее, выключаем оба компа, подключаем к «донору» винчестер HDD, на который мы только что установили такую же систему. Загружаемся с LiveCD.
Шаг четвёртый
Заходим в консоль, под рутом создаём 2 директории: /mnt/donor/ и /mnt/pacient/. Внутри каждой директории я создал поддиректории, и туда смонтировал разделы HDD «донора» в /mnt/donor/, а разделы HDD «пациента» в /mnt/pacient/.
Теперь можно начать копировать файлы. Но прежде, очень важное замечание! Есть некоторые исключения, которые не нужно копировать от «донора»! Создадим где-нибудь файл exclude_list, содержащий эти исключения:
/etc/fstab
/boot/grub/grub.conf
/proc
/sys
/dev
/mnt
/media
А теперь копируем файлы с пом. команды:
rsync -xrlptgoEv —progress —exclude-from=/путь/до/exclude_list /путь/откуда/копируем/ /путь/куда/копируем/
Аналогично выполняем вышеприведённую команду для всех смонтированных разделов. Только обязательно в конце «/путь/откуда/копируем/» указывайте слеш.
Перезагружаемся.
У меня после перезагрузки система стартовала без проблем. В логах ни на что не ругалась. Единственное, что пришлось сделать, это подредактировать файл /etc/sysconfig/network-scripts/ifcfg-eth0, т.к. скопировался MAC-адрес с компа «донора». Ну и автозагрузка программ исправил с помощью ntsysv.
Было бы классно, если бы с виндой можно было проделать такой же фокус.
Источник
Перенос всей установки Linux на другой диск
У меня есть Ubuntu 14.04 с множеством пакетов и всего, что связано с работой, и я очень ей доволен. Он установлен на моем основном SSD-накопителе емкостью 120 ГБ (я выбрал «/», когда установил Ubuntu, поэтому я считаю, что все должно быть на этом диске). Он отображается как / dev / sda
Теперь я добавил еще один SSD на мой компьютер, который является 240Gb. В данный момент у меня нет под рукой других носителей информации (например, внешний жесткий диск).
Поскольку новый накопитель на 240 ГБ, очевидно, имеет большую емкость и работает быстрее (более новое поколение, чем мой на 120 ГБ), я хочу перенести свой Linux на этот новый накопитель. Этот новый диск отображается как / dev / sdb, и на данный момент он не отформатирован или что-то еще (я буквально распаковал и вставил в мой компьютер прямо сейчас: P)
Как я могу безопасно переместить мою установку Linux на новый диск?
Я могу изменить кабель SATA, чтобы новый диск отображался как / dev / sda, если это необходимо.
Это вывод «fdisk -l», если это помогает:
Вы можете использовать CLONEZILLA для этой цели.
Clonezilla — это бесплатный инструмент для создания образа и клонирования разделов и дисков, который можно использовать для резервного копирования всех ваших данных (целых дисков или разделов) с высокой степенью сжатия, а затем клонировать их обратно на жесткий диск, чтобы привести их в точно такое же состояние. Это быстрее, чем устанавливать ОС в большинстве случаев.
Создайте загрузочный (Live) USB с помощью Tuxboot 7.0 .
Загрузиться с созданного Clonezilla носителя.
Теперь у вас есть много вариантов:
- Создайте образ только ‘/’ (saveparts) и клонируйте его в любой раздел вашего другого SDD.
- Создайте образ полного диска (saveisk) и клонируйте его на свой новый SSD.
В вашем случае вы также можете использовать опцию «устройство-устройство», но я не знаком с ней.
Вы можете найти подробное руководство по Clonezilla здесь: http://clonezilla.org
Это можно сделать несколькими способами. Но самый простой — просто скопировать все файлы со старого диска на новый.
Создайте раздел ext4 и раздел подкачки на новом диске.
Загрузиться с LiveUSB.
Смонтируйте старый раздел Ubuntu в некоторый каталог, смонтируйте новый в другой каталог.
Скопируйте все файлы из старого в новый, используя cp -a команду.
Обновление /etc/fstab с новыми UUID.
Если что-то не понятно, могу добавить некоторые пояснения.
Если у вас есть время и вы хотите поехать:
- if это вход, of пункт назначения
- bs устанавливает размер блока. Это размер блоков, которые dd будет читать и записывать. Более высокие размеры блоков обычно означают более высокую производительность, но также и большее повреждение данных, если на входном диске есть ошибки, см. Здесь: archwiki на dd
- noerror продолжается в R / W-ошибок.
- sync синхронизирует смещения, если произошла ошибка.
Это в основном создаст образ вашего диска sda и запишет его на sdb (та же схема разделов и т. Д.). Конечно, это запишет все 120 ГБ, поскольку это не зависит от файлов. Таким образом, очень безопасно, но не самый быстрый, если вы используете только небольшие части диска. Однако, если входной диск достаточно заполнен, он может быть даже быстрее.
- После этого вы, вероятно, захотите изменить размер разделов, иначе вы не сможете воспользоваться дополнительным пространством.
- В любом случае может потребоваться изменить файл / etc / fstab.
Это тот случай, если идентификаторы оборудования используются для распознавания дисков.
В отличие от других ответов, это позволяет вам клонировать установку Linux и добавить ее в меню Grub, не изменяя текущие установки. Кроме того, он автоматически изменяет /etc/fstab для вас и обновляет grub меню загрузки.
Меню предоставлено, чтобы помочь вам выбрать правильный раздел для клонирования. Клон с раздела — это ваш текущий загруженный раздел.
rsync используется для оптимальной скорости, если вы решите отложить раздел. Это полезно, если обновление не удается, вы ждете исправления ошибки и хотите снова запустить обновление. Точно так же вы, возможно, выбрали неправильные опции во время обновления и хотите сделать это снова.
Когда я переключаюсь на новый жесткий диск, я делаю это так:
- создать макет раздела, который я хочу на новом диске
- загрузка с Live CD / USB или установка, спасение и т. д.
- смонтировать старый раздел (ы) жесткого диска для копирования, скажем, /mnt/a
- смонтировать новый раздел (ы) жесткого диска для получения файлов, скажем /mnt/b
- cp -a или используйте tar для копирования файлов /mnt/a в /mnt/b
- установите загрузчик (lilo или grub) на новый диск ¹
- обновить /etc/fstab (вы можете использовать blkid для определения новых UUID)
- перезагрузите компьютер и проверьте, все ли в порядке
Note¹:
Проверьте все жесткие диски и разделы, используя следующую команду:
Теперь обратите внимание на раздел, на котором установлена Ubuntu, который будет выглядеть так: /dev/sda1
Смонтируйте раздел, где вам нужно установить GRUB 2 (раздел жесткого диска), и файловая система появится в Nautilus. Теперь нам нужно смонтировать правильный раздел жесткого диска, чтобы внести изменения в фактическую MBR жесткого диска. Для этого нам необходимо:
Теперь смонтируйте раздел в другом месте
Создайте неразрывную ссылку из /dev папки на живом образе, из которого вы загрузились, в /dev папку в разделе, к которому вы подключены /mnt
Теперь нам нужно изменить корень с живого корня компакт-диска (/) на корневой каталог смонтированного раздела
Теперь вы находитесь в новой корневой оболочке, в которой смонтированный раздел является новым корневым. Вы можете проверить этот набор ls . Так как мы сейчас находимся в смонтированном разделе, мы можем опередить и установить GRUB 2:
Установки должны завершиться сейчас, без ошибок
Выйдите из оболочки CHROOT, набрав exit или нажав Ctrl +, и D вы вернетесь в Live CD / USB Shell
Размонтируйте разделы, которые мы смонтировали ранее, чтобы выполнить чистую перезагрузку:
и перезагрузите компьютер после извлечения Live CD или USB-накопителя для загрузки с жесткого диска:
Я решил провести эксперимент, связанный с этим постом.
Я приобрел Lenovo ThinkCentre. Он имел 256 ГБ SSD и 1 ТБ HDD (тип спиннера — быстрый, но не такой быстрый, как SSD).
Когда я установил Linux Mint 19.2 (LM19.2), он установил его на диск объемом 1 ТБ. SSD оказался невосстановимым, и я купил новый Kingston 240 ГБ SSD.
Я собирался установить LM19.2 на новый SSD, но казалось, что должен быть способ перенести мой хорошо разработанный образ LM19.2 с диска 1 ТБ на новый SSD.
Я нашел этот пост, и, хотя есть несколько убедительных советов выше, я был в режиме эксперимента. Ниже рассказывается о том, что я сделал, и это работало ОЧЕНЬ хорошо.
- Я использовал GParted для создания таблицы разделов и разделов на SSD, которые были того же типа, что и на 1 ТБ HDD.
- Я выполнил снимок ВСЕГО (нового инструмента в Ubuntu / Linux Mint) TimeShift на жестком диске LM19.2 1 ТБ.
- Я восстановил этот снимок на SSD.
- После того, как вышеуказанные шаги были выполнены (вы даже можете сделать 1 параллельно с 2 и 3), я перезагрузил компьютер, убедившись, что он выберет SSD.
- Единственное, что было странно во время перезагрузки, было то, что начальный экран grub спросил, хочу ли я загрузить Ubuntu. Я предположил, что это было свойственно восстановлению TimeShift, и это было.
- Последующие стартапы загружались, как это обычно делает LM19.2.
- Я отредактирую этот ответ, как только убедился, что могу сделать это с новым диском, висящим снаружи ПК (и кажется очевидным, что это будет работать), потому что это будет означать, что я могу быстро скопировать любую из моих машин LM на новое оборудование.
Только скорость загрузки сделала эти простые шаги стоящими усилий. Даже Dropbox переносился нормально — он просто хотел, чтобы я снова вошел в систему, и потребовалось все время, чтобы проиндексировать файлы, но он работал отлично.
Источник