Библиотека сайта rus-linux.net
Мини-HOWTO: Переход на новый жесткий диск
Yves Bellefeuille
yan@storm.ca
Konrad Hinsen
hinsen@cnrs-orleans.fr
Перевод: Станислав Рогин, SWSoft Pte Ltd.
Версия 2.11, 13 апреля 2000
- Содержание
- 1. Введение
- 2. Установите оба диска в вашу систему
- 3. Отключите не-Linux разделы и сетевые диски
- 4. Разбейте новый диск на разделы
- 5. Отформатируйте новый диск
- 6. Подключите новый диск
- 7. Скопируйте файлы со старого диска на новый
- 8. Исправьте необходимым образом файл
/new-disk/etc/fstab
- 9. Приготовьте LILO для загрузки с нового диска
- 10. Создайте загрузочную дискету (необязательно)
- 11. Уберите старый диск
- 12. Перезагрузите систему, исправьте файл конфигурации LILO
- 13. Благодарности:
- 14. Авторские права
1. Введение
В этом документе описывается перенос (или миграция) целой системы Linux с одного диска на другой.
В дальнейшем мы будем придерживаться следующего: "/dev/hda"
(первый жесткий диск IDE) означает "старый"
диск, и "/dev/hdb"
(второй жесткий диск IDE
) означает "новый" диск.
Конкретные разделы старого диска будут называться /dev/hda1
, /dev/hda2
Конкретные разделы нового диска будут называться /dev/hdb1
, /dev/hdb2
и так далее.
Все примеры в документе испытывались на дистрибутиве Red Hat 6.0. Также они были проверены в Debian 2.1, Slackware 3.5 и SuSE 6.2; мы будем указывать на различия в дистрибутивах.
Если какие-то из команд не сработают в вашей системе, пожалуйста, дайте нам знать; не забудьте упомянуть дистрибутив и его версию.
2. Установите оба диска в вашу систему
Современные системы поддерживают четыре "EIDE"-устройства на одном контроллере жестких дисков, поэтому, в идеале, не должно возникнуть проблем с установкой обоих дисков в систему, даже если у вас есть еще "EIDE"-устройства. Жесткие диски и CD-ROM - типичные примеры EIDE-устройств. Флоппи-дисководы и стримеры обычно подключаются к контроллеру флоппи, очень редко к контроллеру жестких дисков.
SCSI-адаптеры значительно более гибки и поддерживают до семи устройств. Если вы являетесь счастливым (и богатым) обладателем SCSI-адаптера, то уже наверно про это знаете, и вы, возможно, знаете, какие из устройств являются SCSI! За более подробной информацией обращайтесь к HOWTO: SCSI .
Даже очень старые системы поддерживают два устройства на контроллере жесткого диска, поэтому вы все равно сможете установить два диска одновременно. Однако, если у вас, в дополнение к старому диску, подключено еще одно дополнительное устройство (например, если у вас есть жесткий диск и CD-ROM), то придется его убрать, чтобы вместо него установить новый диск.
Вы также должны правильно настроить диски "главными" или "зависимыми" ("master" или "slave"), соответствующим образом выставив переключатели ("jumpers") на дисках. Обычно информация об этих настройках бывает написана на самих дисках; если ее нет - читайте документацию или обратитесь к производителю.
Вы также обязаны проинформировать BIOS о наличии дисков и их "геометрии". Обычно программа настройки BIOS запускается при запуске системы нажатием клавиши. Ниже приведены варианты этих клавиш для наиболее распространенных версий BIOS:
- Notebook-и фирмы Acer:
Клавиша F2 в процессе Теста-При-Включении (Power-On Self-Test (POST))
- American Megatrends (AMI):
Клавиша Del в процессе Теста-При-Включении (Power-On Self-Test (POST))
- Award:
Del, или Ctrl-Alt-Esc
- Compaq:
Клавиша F10после того, как в верхнем правом углу экрана появится небольшой квадрат (при включении системы)
- Dell:
Ctrl-Alt-Enter
- DTK:
Клавиша Esc в процессе Теста-При-Включении (Power-On Self-Test (POST))
- Hewlett-Packard Pavilion:
Клавиша F1 в момент появления синей заставки HP
- IBM Aptiva 535:
Клавиша F1, когда квадратик с волнистыми линиями появляется в правом верхнем углу экрана [1]
- IBM PS/2:
Ctrl-Alt-Del, или Ctrl-Alt-Ins, когда курсор находится в правом верхнем углу
- Mr. BIOS:
Ctrl-Alt-S в процессе Теста-При-Включении (Power-On Self-Test (POST))
- Packard Bell:
В некоторых моделях клавиши F1 или F2 в процессе Теста-При-Включении (Power-On Self-Test (POST))
- Phoenix:
Ctrl-Alt-Esc, Ctrl-Alt-S, или Ctrl-Alt-Enter
На многих старых системах требуется диск с надписью "Installation" или "Reference".
Перезагрузите систему и войдите в нее как root. Если вы используете команду " su" , чтобы стать root-ом, используйте " su -"(с параметром "-").
3. Отключите не-Linux разделы и сетевые диски
/dos
подключен DOS-раздел, его необходимо отключить командой:
umount /dos
Обратите внимание на синтаксис команды umount, он отличается от английского слова unmount отсутствием первой буквы n.
Вам также придется подобным образом отключить все сетевые диски.
4. Разбейте новый диск на разделы
fdisk /dev/hdb
EIDE -устройства именуются, как
hda
,
hdb
,
hdc
, и
hdd
в каталоге /dev
.
Разделы на этих дисках могут принимать номера от 1 до16 и также находятся в каталоге
/dev
. Например:
/dev/hda4
- это 4-ый раздел на диске a (первом EIDE-диске).
SCSI -устройства именуются, как
sda
,
sdb
,
sdc
,
sdd
,
sde
,
sdf
, и
sdg
в каталоге
/dev
.Разделы на них, аналогично EIDE-дискам, могут принимать номера от 1 до 16 и находятся в каталоге
/dev
. Например:
/dev/sda3
- это 3-ий раздел на SCSI-диске a (первом SCSI-диске).
(Примечание переводчика: на деле SCSI-диски могут не ограничиваться /dev/sdg - очевидно, что если у вас несколько SCSI-контроллеров, то SCSI-дисков может быть значительно больше - но это, однако, достаточно редкое явление.)
Для Linux-разделов с файловой системой ext2, используйте идентификатор файловой системы 83. Для разделов подкачки (swap), используйте 82.
Если на вашем новом диске более 1024 цилиндров, смотрите "Мини-HOWTO: Большие диски". Вкратце, вы должны все файлы, необходимые для загрузки Linux, поместить в пределах первых 1024 цилиндров. Один из вариантов - создать небольшой раздел (5 Мб или что-то около того) исключительно для каталога
/boot
в начале диска. (Внимание, пользователи Slackware: Ядро находится в файле
/vmlinuz
вместо /boot/vmlinuz, поэтому вам придется поместить ядро одновременно в каталог /boot/vmlinuz
/
и в каталог
/boot
в этот небольшой раздел.)
Разделы для других систем (не для Linux) должны быть созданы в родных системах, с использованием родного fdisk или чего-то подобного, а не при помощи fdisk из Linux.
5. Отформатируйте новый диск
mkfs.ext2 /dev/hdb1
Чтобы программа форматирования произвела также и поиск плохих блоков (физических дефектов) в форматируемом разделе, добавьте опцию
-c
перед
/dev/hdb1
.
В случае, если на новом диске будет больше одного Linux-раздела,
отформатируйте их все командами "mkfs.ext2 /dev/hdb2", "mkfs.ext2 /dev/hdb3" соответственно. Добавьте опцию -c
, если это необходимо.
(Замечание: в старых дистрибутивах команда "mkfs -t ext2 -c /dev/hdb1" не проверяла наличие плохих блоков в Red Hat, Debian и Slackware, что должна была делать в соответствии с man. Сейчас это исправлено.) |
mkswap /dev/hdb1
К этой команде вы также можете добавить опцию -c
для проверки плохих блоков на разделе "/dev/hdb1
".
6. Подключите новый диск
/new-disk
, и подключите его туда:
mkdir /new-disk mount -t ext2 /dev/hdb1 /new-disk
Если на новом диске имеется больше одного раздела - подключите их все в
каталоге /new-disk
с той же организацией, что они будут иметь позже.
/dev/hdb1: / /dev/hdb2: /home /dev/hdb3: /var /dev/hdb4: /var/spool
/new-disk
соответственно, как:
/dev/hdb1: /new-disk /dev/hdb2: /new-disk/home /dev/hdb3: /new-disk/var /dev/hdb4: /new-disk/var/spool
До подключения разделов вам придется создать точки подключения на соответствующих "уровнях", например:
mkdir /new-disk [1st level] mount -t ext2 /dev/hdb1 /new-disk mkdir /new-disk/home [2nd level] mount -t ext2 /dev/hdb2 /new-disk/home mkdir /new-disk/var [2nd level also] mount -t ext2 /dev/hdb3 /new-disk/var mkdir /new-disk/var/spool [3rd level] mount -t ext2 /dev/hdb4 /new-disk/var/spool
/new-disk/tmp
, вам
будет необходимо исправить разрешения на этот каталог для того, чтобы
все имели к нему доступ:
chmod 1777 /new-disk/tmp
7. Скопируйте файлы со старого диска на новый
/sbin/telinit 1
При копировании жесткого диска вам надо скопировать все каталоги и файлы, включая ссылки.
Однако, вам не нужно копировать каталог /new-disk
, потому что это и есть
новый диск!
Более того, вам надо создать на новом диске каталог /proc
, но содержимое
этого каталога копировать не нужно: /proc
- это виртуальная файловая
система, и в ней нет настоящих файлов, а есть лишь информация о системе и
процессах, в ней работающих.
Существуют 3 разных способа копирования старого диска на новый. Это может занять значительное время, особенно если у вас большой диск или мало оперативной памяти. Минимум скорости копирования - примерно 10 Мб в минуту, а, скорее всего, это будет происходить значительно быстрее.
Вы можете следить за копированием командой "df", запущенной с другого терминала. Используйте "watch df" или "watch ls -l /new-disk", чтобы видеть отчет, обновляемый раз в две секунды; нажмите клавиши Ctrl-C для прекращения просмотра. Помните, однако, что сам запуск команды "watch" может замедлить процесс копирования.
- cp -ax / /new-disk
Это наиболее простой способ, но он подходит, только если ваша исходная система находилась на одном разделе.
Опция
-a
сохраняет исходную файловую систему настолько, насколько возможно. Опция-x
ограничивает работу команды cp одной файловой системой - поэтому не нужно беспокоиться о каталогах/new-disk
и/proc
.Для пользователей SuSE: . Используя этот метод, вы должны также создать каталог
/dev/pts
на новом диске. Используйте команду "mkdir /new-disk/dev/pts".(Замечание: Новые версии cp, при использовании опции
-x
, создадут пустые каталоги/new-disk/new-disk
и/new-disk/proc
. В этом случае необходимо удалить каталог/new-disk/new-disk
, и оставить/new-disk/proc.
.)- cd / && echo cp -a `/bin/ls -1Ab | egrep -v "^new-disk$|^proc$"` /new-disk | sh
(напишите все это в одной строке)
Эта команда перейдет в корневой каталог и затем скопирует все файлы и каталоги, кроме
/new-disk
и/proc
в/new-disk
. Заметьте, что первый символ после ls - это цифра 1, а не буква L!Эта команда должна работать в любом случае.
- cp -a /bin /boot /dev /etc /home /lib /lost+found /mnt /root /sbin /tmp /usr /var /new-disk
(напишите все это в одной строке)
Последний каталог -
/new-disk
- это назначение команды cp. Все остальные каталоги - источники. Таким образом, мы копируем все каталоги из списка в/new-disk
.При применении этого метода вы просто перечисляете каталоги, которые хотите скопировать. Здесь мы указали все каталоги, кроме
/new-disk
и/proc
. Если вы не можете использовать первые два метода по каким-либо причинам, то всегда можете вручную указать каталоги, которые необходимо скопировать.Также надо учесть, что если в корневом каталоге есть файлы, то их тоже надо скопировать отдельной командой. В частности, это касается Debian и Slackware, так как эти дистрибутивы помещают файлы в корневой каталог:cp -dp /* /.* /new-disk
В предыдущих версиях этого Мини-HOWTO упоминалось, что вы можете использовать "tar" для копирования диска, но в этом методе была обнаружена ошибка. Конечно, существуют и другие методы скопировать диск, но эти три являются наиболее простыми, быстрыми и надежными.
/proc
на новом диске, если его еще нет:
mkdir /new-disk/proc
umount /new-disk fsck.ext2 -f /dev/hdb1 mount -t ext2 /dev/hdb1 /new-disk
Если на новом диске существует больше одного раздела, то вам придется отключить их все "снизу вверх" до запуска fsck.ext2: в соответствии с примером, приведенном выше, вам надо сначала отключить разделы 3-го уровня, затем 2-го и, только в конце, первого.
find / -path /proc -prune -o -path /new-disk -prune -o -xtype f -exec cmp {} /new-disk{} \;
(напишите все это в одной строке)
Для пользователей Slackware:. стандартная "базовая" установка Slackware (только файлы серии "A") не включает команду "cmp", поэтому это сравнение не запустится, если у вас установлены только базовые файлы. Команда "cmp" находится в файлах серии "AP1".
Здесь мы сравниваем только обычные файлы, символьные же и блочные
устройства (из каталога /dev
), гнезда (sockets), и т.п. здесь не
учитываются, так как команда "cmp" работает с ними не совсем корректно. Мы
будем не против, если кто-нибудь подскажет нам, как сравнить эти
"специальные" файлы.
8. Исправьте необходимым образом файл /new-disk/etc/fstab
Если разделы или их организация на новом диске отличается от того, что было
на старом диске, исправьте необходимым образом на новом диске файл
/new-disk/etc/fstab
.
Убедитесь в том, что названия разделов дисков (первая колонка)
соответствуют организации разделов, которую вы создали на новом диске, что
разделы старого диска убраны, и что вы подключаете только один раздел в
качестве корневого "/
" (это написано во второй колонке).
Чтобы подробнее узнать о формате файла /etc/fstab
, см Руководство
системного администратора Linux , глава 4 "Подключение и отключение
разделов".
/dev/hda1 swap swap defaults 0 0
9. Приготовьте LILO для загрузки с нового диска
(Спасибо Rick Masters за помощь в создании этой главы.) |
Мы предполагаем, что вы собираетесь установить LILO в Главную Загрузочную Запись (Master Boot Record (MBR) - это делается в большинстве случаев. Вы хотите установить LILO на второй диск, который станет первым.
/new-disk/etc/lilo.conf
примерно так:
disk=/dev/hdb bios=0x80 # Указываем LILO воспринимать второй # диск так, как будто он первый # диск (BIOS ID 0x80). boot=/dev/hdb # Устанавливаем LILO на второй жесткий # диск. map=/new-disk/boot/map # Местонахождение файла карты ("map file"). install=/new-disk/boot/boot.b # Файл, которые надо записать в # загрузочный сектор жесткого диска. prompt # LILO должно вывести приглашение # "LILO boot:". timeout=50 # Загрузить систему по умолчанию после 5 # секунд ожидания. (Значение задается в # десятых долях секунды.) image=/new-disk/boot/vmlinuz # Местонахождение ядра Linux. Настоящее # имя может включать в себя номер # версии, например, # "vmlinuz-2.0.35". label=linux # Название Linux-системы. root=/dev/hda1 # Местонахождение корневого раздела # нового жесткого диска. Исправьте # его в соответствии с новой системой. # Заметьте, что вы должны использовать # название будущего местоположения, на # момент физического отключения старого диска. read-only # Сначала подключаем разделы в режиме # "только для чтения", для запуска fsck.
Для пользователей Slackware:. Используйте image=/new-disk/vmlinuz.
Если вы используете SCSI-диск, то вам, возможно, придется добавить строку с
"initrd". Смотрите ваш текущий файл /etc/lilo.conf
.
/sbin/lilo -C /new-disk/etc/lilo.conf
Опция -C
указывает LILO, какой конфигурационный файл использовать.
10. Создайте загрузочную дискету (необязательно)
Вы можете, если захотите, создать загрузочную дискету, чтобы избежать проблем с загрузкой, если они возникнут при загрузке с нового диска.
fdformat /dev/fd0H1440 mkfs.ext2 /dev/fd0 mount -t ext2 /dev/fd0 /mnt
Для пользователей Debian: . В Debian 2.x версии используйте /dev/fd0u1440
вместо
/dev/fd0H1440
. В Debian версии 1.x, используйте
/dev/fd0h1440
, со строчной буквой
h.
Для пользователей Debian:. В Debian версий 2.x, используйте superformat вместо
fdformat.
Вы можете не обращать внимания на ошибку
mformat: command not found
.
В Debian версий 1.x, в случае если у вас нет команды
fdformatвы можете пропустить ее, если диск уже
отформатирован. Вы можете просто проверить дискету на наличие
плохих блоков, добавив опцию -c
к команде
mkfs.ext2.
Для пользователей Slackware:. Используйте /dev/fd0u1440
вместо
/dev/fd0H1440
. В очень старых версиях попытайтесь использовать
/dev/fd0h1440
, со строчной буквой
h.
Для пользователей SuSE:. Используйте /dev/fd0u1440
вместо
/dev/fd0H1440
.
/boot
на дискету:
cp -dp /boot/* /mnt
Для пользователей Red Hat: . Если в каталоге /boot
есть файлы vmlinux
и vmlinuz
(обратите внимание на
различие в последних буквах), тогда вам надо скопировать только файл
vmlinuz
. Он ничем не отличается от файла vmlinux, просто он сжат для
экономии места.)
Для пользователей Slackware:. Скопируйте также на дискету файл /vmlinuz
,
используйте команду cp /vmlinuz /mnt.
/mnt/lilo.conf
в соответствии с тем, что написано ниже:
boot=/dev/fd0 # Установить LILO на флоппи-диск. map=/mnt/map # Местонахождение файла карты ("map file"). install=/mnt/boot.b # Файл, который надо записать в # загрузочный сектор диска. prompt # LILO должно вывести приглашение # "LILO boot:" timeout=50 # Загрузить систему по умолчанию после 5 # секунд ожидания. (Значение задается в # десятых долях секунды.) image=/mnt/vmlinuz # Местонахождение ядра Linux на дискете. # Настоящее имя может включать в себя номер # версии, например, # "vmlinuz-2.0.35". label=linux # Название Linux-системы. root=/dev/hda1 # Местонахождение корневого раздела # нового жесткого диска. Исправьте # его в соответствии с новой системой. # Заметьте, что вы должны использовать # название будущего местоположения, на # момент физического отключения старого диска. read-only # Сначала подключаем разделы в режиме # "только для чтения", для запуска fsck.
/sbin/lilo -C /mnt/lilo.conf
Опция -C
указывает LILO на загрузочную дискету:
umount /mnt
11. Уберите старый диск
Выключите систему и уберите старый диск. Не забудьте изменить настройки нового диска и информацию в BIOS.
12. Перезагрузите систему, исправьте файл конфигурации LILO
Перезагрузите систему. Если возникнут какие-нибудь проблемы,
используйте загрузочную дискету, которую вы только что сделали. Чтобы
загрузиться с нее, просто измените порядок загрузки системы в BIOS на
A:, C:
.
/etc/lilo.conf
на тот случай, если вы захотите еще раз запустить
LILO. Ниже приведен пример:
boot=/dev/hda # Устанавливаем LILO на первый жесткий # диск. map=/boot/map # Местонахождение файла карты ("map file"). install=/boot/boot.b # Файл, которые надо записать в # загрузочный сектор жесткого диска. prompt # LILO должно вывести приглашение # "LILO boot:". timeout=50 # Загрузить систему по умолчанию после 5 # секунд ожидания. (Значение задается в # десятых долях секунды.) image=/boot/vmlinuz # Местонахождение ядра Linux. Настоящее # имя может включать в себя номер # версии, например, # "vmlinuz-2.0.35". label=linux # Название Linux-системы. root=/dev/hda1 # Местонахождение корневого раздела # нового жесткого диска. Исправьте # его в соответствии с новой системой. read-only # Сначала подключаем разделы в режиме # "только для чтения", для запуска fsck.
Для пользователей Slackware: . Используйте image=/vmlinuz.
13. Благодарности:
Большое спасибо Scott Christensen, Frank Damgaard, Alexandre Fornieles, David Fullerton, Igor Furlan, Jerry Gaines, Chris Gillespie, Nicola Girardi, Per Gunnar Hansoe, Richard Hawes, Ralph Heimueller, Gerald Hermant, Andy Heynderickx, Paul Koning, Hannu Liljemark, Claes Maansson, Rick Masters, Jason Priebe, Josh Rabinowitz, Douglas Rhodes, Valentijn Sessink, Kragen Sitaker, Stephen Thomas, и Gerald Willman.
Этот документ можно переводить на любой язык. Если вы это сделаете, отправьте копию перевода Konrad Hinsen
<hinsen@cnrs-orleans.fr>
.
14. Авторские права
Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.
Этот документ является частью проекта Linux HOWTO.
Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.
Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.
Мы бы хотели распространить эту информацию по всем возможным каналам. Но
при этом сохранить авторские права и быть уведомленными о всех планах
распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь
к координатору проекта Linux HOWTO по электронной почте:
<linux-howto@metalab.unc.edu>
или к координатору русского
перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу
<linux-howto@asplinux.ru>
Примечания
[1] | Интересно: а это относится к другим моделям Aptiva? |