СМХВРНФЕМХЕ ДЮММШИ
LinuxRSP.Ru. Все о Linux по-русски. Пингвинья Масленица. Blin
Live-CD
.wheader
{
font-family: Helvetica, sans-serif;
font-size: 15px;
font-weight: bold;
}
.mainmenu
{
font-family: Helvetica, sans-serif;
font-size: 12px;
}
.smalltext
{
font-family: Helvetica, sans-serif;
font-size: 11px;
font-weight: normal
}
.plaintext
{
font-family: Helvetica, sans-serif;
font-size: 11px;
font-weight: normal
}
.plainsubtext
{
font-family: Helvetica, sans-serif;
font-size: 10px;
font-weight: normal
}
.author
{
font-family: Helvetica, sans-serif;
font-size: 11px;
color: black
}
.news
{
font-family: Serif;
font-size: 17px;
}
.toppos
{
font-family: Helvetica, sans-serif;
font-size: 50px;
color=#cccccc
}
a:link
{
color: black;
}
a:visited
{
color: black;
}
a:hover
{
color: blue;
}
Пингвинья Масленица
Вот уж не
думал, что материал об украинском Live-CD дистрибутиве Blin вызовет
такой интерес у читателей (см. статью "Блины со сметаной",
МК #23 (246)). На мой почтовый ящик пришло просто море писем
с просьбой помочь установить его на жесткий диск и при этом не
затронуть рабочие разделы. Мне, находившемуся в отпуске за тысячу
километров от компьютера и пользующемуся только почтой в
интернет-клубах, было тяжело посоветовать что-то стоящее. Однако сейчас
я уже дома, поэтому давайте разбираться вместе.
Как вы помните
из статьи, всем процессом установки blin'a на жесткий диск заправляет
скрипт install-blin-to-hdd. Одной из особенностей его работы
является уничтожение всех данных на Primary-Master жестком диске. Нашей
задачей фактически является ручное выполнение скрипта. При этом
необходимо будет создать разделы с требуемой файловой системой,
перенести на нее blin, подправить конфигурационные файлы в соответствии
с новыми данными и установить загрузчик. Все эти вопросы были освещены
в соответствующих статьях более подробно, и я рекомендую желающим
разобраться в происходящем перечитать их заново. Сразу же оговорюсь,
что ни я, ни тем более редакция и разработчики дистрибутива никакой
ответственности за сохранность данных не несем. Операции с разделами,
особенно если непонятна суть процесса, всегда рискованна. Сохраните
наиболее важное подальше. Приступаем.
Итак, для
новой системы нужно место. Создайте на жестком диске при помощи Partition
Magic еще один раздел размером приблизительно 800 Мб (с
запасом). Для усложнения задачи, Linux будем помещать на двух разделах,
плюс зарезервируем отдельный swap-раздел. Можно тут же их и нарезать в
созданном разделе при помощи той же Partition, но мы ведь разбираемся с
Linux, поэтому далее будем работать средствами этой системы. Да что ж
это я в самом деле - откусить лишнее можно и при помощи parted,
который имеется в комплекте blin и работает с разделами,
отформатированными под FAT32 (желательно перед этим все же его
дефрагментировать). Например:
root@localhost > parted GNU Parted 1.6.4
Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation,
Inc. This program is free software, covered by the GNU General
Public License. This program is distributed in the hope that it
will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details. Using
/dev/ide/host0/bus0/target0/lun0/disc Информация: The operating system
thinks the geometry on /dev/ide/host0/bus0/target0/lun0/disc is
3649/255/63. Therefore, cylinder 1024 ends at 8032,499M.
Теперь
смотрим, какие разделы (minor) имеются в наличии:
(parted) print Disk geometry for
/dev/ide/host0/bus0/target0/lun0/disc: 0.000-28629,562 megabytes
Disk label type: msdos Minor Start End Type Filesystem
Flags 2 0,031 1898,305 primary fat32 boot 4
1898,306 2063,034 primary linux-swap 3 2063,035 6063,596
primary ext3 1 6063,596 28623,625 extended
lba 5 6063,627 8063,876 logical ext3 6
8063,908 18065,280 logical fat32 7 26317,450 27619,562
logical lvm 8 27619,594 28623,625 logical ext3
Как видите,
minor 6 с файловой системой FAT32 великоват, его и будем
сокращать. Сделать это можно при помощи команды (полный список можно
получить, введя help) resize MINOR Start End, где start и end должны
быть новыми значениями. Подрежем-ка его на один гиг снизу, тем более
что, судя по таблице, после него некоторое пространство свободно (между
18065 и 26317). Режем:
(parted) resize 6 8063,908 17065,280
moving data... 100% (time left 00:00) Предупреждение: The kernel was
unable to re-read the partition table on
/dev/ide/host0/bus0/target0/lun0/disc (Device or resource busy). This
means Linux won't know anything nothing about the modifications
you made until you reboot. You should reboot your computer before
doing anything with /dev/ide/host0/bus0/target0/lun0/disc. (parted)
print Disk geometry for /dev/ide/host0/bus0/target0/lun0/disc:
0.000-28629,562 megabytes Disk label type: msdos Minor Start
End Type Filesystem Flags 2 0,031 1898,305
primary fat32 boot 4 1898,306 2063,034 primary
linux-swap 3 2063,035 6063,596 primary ext3 1
6063,596 28623,625 extended lba 5 6063,627
8063,876 logical ext3 6 8063,908 17069,062 logical
fat32 lba 7 26317,450 27619,562 logical lvm
8 27619,594 28623,625 logical ext3
Как видите,
раздел 6 уменьшился. Далее создаем разделы для swap, корневого и
/home при помощи той же утилиты; новички могут воспользоваться cfdisk,
которая считается более удобной:
(parted) mkpartfs logical linux-swap 17070
17270 (parted) mkpart logical 17274 17774 (parted) mkpart logical
17775 18300
Напомню, что
если раздел создается при помощи parted, его можно сразу
отформатировать под выбранную файловую систему. К сожалению, в данный
момент это только swap, ext2 и fat32. Поэтому
мы отформатировали только swap-раздел, а в остальных используем более
удобную журналируемую ext3. После изменения таблицы разделов
рекомендуется перезагрузить систему, чтобы ядро могло их увидеть (иначе
при форматировании последует сообщение о том, что такого раздела нет).
После перезагрузки уточняем при помощи cfdisk или parted новые
обозначения наших разделов:
cfdisk 2.11r Disk Drive: /dev/hda Size:
30020272128 bytes, 30.0 GB Heads: 255 Sectors per Track: 63
Cylinders: 3649 Name Flags Part Type FS Type [Label] Size (MB)
---------------------------------------------------- hda2 Boot
Primary Win95 FAT32 1990,52 hda4 Primary Linux swap
172,74 hda3 Primary Linux ext3 [/] 4194,90 hda5
Logical Linux ext3 [/usr/local] 2097,45 hda6 Logical Win95
FAT32 (LBA) 9442,63 hda9 Logical Linux swap 213,86
hda7 Logical Linux 512,57 hda8 Logical Linux
320,79 Logical Free Space 8850,41 hda1
Logical Linux LVM 1365,40 hda1 Logical Linux ext3
[/home] 1052,84 [Bootable] [ Delete ] [ Help ] [Maximize] [
Print ] [ Quit ] [ Type ] [ Units ] [ Write ]
Итак, swap
раздел будет помещаться на /dev/hda9, корневой поцепим на /dev/hda7, а
/home - в /dev/hda8. Дальнейшие шаги, конечно, хотелось бы выполнить
вручную, чтобы было понятней, но при этом придется вводить много
данных, что увеличивает вероятность ошибки. Поэтому просто переделаем
под свои нужды скрипт install-blin-to-hdd - убирать ведь легче, чем
добавлять. Копируем оригинальный скрипт себе в текущий каталог, т.к.
изменить его на CD-ROM?е не получится:
root@localhost > whereis
install-blin-to-hdd install-blin-to-hdd: /usr/sbin/install-blin-to-hdd
/usr/local/sbin/install-blin-to-hdd root@localhost > cp
/usr/sbin/install-blin-to-hdd ./
И открываем
его:
root@localhost > gedit
./install-blin-to-hdd&
Далее привожу
рабочий вариант скрипта со своими комментариями, остальное нужно
удалять. Вам останется только заменить в нужных местах место
расположения своего корневого раздела и /home. И еще я заменил все
вызовы die на exit 1 (их там 33, поэтому воспользуйтесь
автозаменой в том же gedit), так как по непонятной причине,
если что-то не получалось, скрипт не прерывал работу, а выводил
сообщение о том, что он, мол, не знает, что такое "die", и продолжал
смело кромсать далее, что приводило к некоторым осложнениям. В случае с
exit все происходило, как и положено, скрипт прерывал работу, позволяя
разобраться с проблемой. Итак, новый вариант скрипта:
#!/bin/bash disk=hda
mountpoint=/mnt/${disk}7 # в этих строках в соответствующие переменные
занесены значения диска (в нашем случае это Primary Master, на других
дисках придется повозиться с LILO) и место будущего корневого раздела,
т.е. /dev/hda7 (в моем случае) # размонтируем все смонтированные
разделы. В процессе тестирования скрипт прерывал работу, ссылаясь на
то, что-де такой-то раздел не смонтирован, поэтому в окончательном
варианте я вообще выбросил эту строку (данные-то забэкапил, и терять в
общем-то было то нечего), но все же вам я ее рекомендую оставить. for
mnt in /mnt/${disk}* do if [ -e "$mnt" ] then umount $mnt
|| exit 1 fi done # в этом месте был вызов программы sfdisk, при
помощи которой переразбивался на новые разделы жесткий диск - его
выкидываем обязательно # создаем файловые системы ext3 на ./dev/hda7 и
8 - замените своими значениями mke2fs -j /dev/${disk}7 || exit 1
mke2fs -j /dev/${disk}8 || exit 1 # а эта строка создает
swap-раздел. Мы это сделали раннее, я оставил ее для примера, а еще для
тех, кто пользовался cfdisk при создании разделов mkswap /dev/${disk}9
|| exit 1 if [ ! -d $mountpoint ] then mkdir -p $mountpoint ||
exit 1 fi mount /dev/${disk}7 $mountpoint || exit 1 # создаем точку
монтирования для корневого раздела (если нет) и монтируем его сюда;
замените своим значением # объявляем функцию, при помощи которой будем
копировать данные copyfs () { echo -n "copying $1 to $2..." test -L
"$2" && rm -f "$2" if [ ! -d "$2" ] then
mkdir "$2" || exit 1 fi cd "$1" || exit 1 ## awn: change
tar chaint to cp # tar clpf - . | tar xpf - -C $2 # эти
закомментированные строки сохранены в оригинальном виде; они
представляют второй вариант решения той же задачи cp -ax . "$2"
|| exit 1 echo " done" } # копируем корневую файловую систему copyfs /
$mountpoint || exit 1 # монтируем копируем каталог /home rm -f
$mountpoint/home || exit 1 echo -n "delete home..." mkdir -p
$mountpoint/home || exit 1 mount /dev/${disk}8 $mountpoint/home ||
exit 1 copyfs /home $mountpoint/home || exit 1 # можно просто
скопировать данные из /home в /mnt/hda8, но хотелось меньше скрипт
переделывать # дальнейшие действия несколько озадачивают, ведь
фактически команда cp / /mnt/hda7 должна была бы скопировать все
каталоги. Но проблема состоит в том, что, например, /var является
символической ссылкой куда-то в глубину, и поэтому их необходимо
вытаскивать персонально. Потому-то я и оставил следующий фрагмент
практически без изменений, просто закомментировав ненужное rm -f
$mountpoint/var || exit 1 mkdir -p $mountpoint/var || exit 1 #mount
/dev/${disk}7 $mountpoint/var || exit 1 copyfs /var $mountpoint/var
|| exit 1 copyfs /bin $mountpoint/bin || exit 1 copyfs /lib
$mountpoint/lib || exit 1 copyfs /sbin $mountpoint/sbin || exit 1 #
copying /usr copyfs /usr $mountpoint/usr || exit 1 # copying /opt... cd
/opt || exit 1 for optpkg in * do if [ -e "/opt/$optpkg" ] #
can be unexpanded mask from shell then copyfs /opt/$optpkg
$mountpoint/opt/$optpkg || exit 1 fi done # далее создаем файл
/etc/fstab под новое разбиение. Пропишите в него все разделы, которые
вам бы хотелось видеть автоматически примонтированными при запуске, не
забыв создать заранее точки монтирования, иначе скрипт будет ругаться
при загрузке echo "creating fstab..." cat >$mountpoint/etc/fstab
<
${mountpoint}${ff} || exit 1 done rm -f $mountpoint/etc/mtab || exit 1
ln -s /proc/mounts $mountpoint/etc/mtab || exit 1 # разобрались с
точками монтирования в таблице процессов, теперь копируем ядро echo -n
"copy kernel...." cp /mnt/cdrom/isolinux/vmlinuz $mountpoint || exit
1 # теперь создаем "на лету" файл /etc/lilo.conf и устанавливаем
загрузчик # замените в строках ниже значения разделов на те, что
используются в вашей системе mkdir -p $mountpoint/dev || exit 1 # cd
/dev || exit 1 # tar clpf - . | tar xpf - -C $mountpoint/dev echo -n
"..configure LILO...." cat >$mountpoint/etc/lilo.conf < ./ install-blin-to-hdd
После правки
скрипта еще раз проверяем его на опечатки и запускаем:
Если скрипт
отработал без ошибок, значит, можно перезагружаться и проверить работу.
Все, blin у вас на жестком диске, и можно потихоньку приводить его к
своим требованиям. А в случае сбоев, чтобы заново все не перебирать,
лучше скопируйте получившийся скрипт в Windows-раздел, предварительно
перемонтировав его в режим записи-чтения:
mount --bind /dev/ $mountpoint/dev # don't
confuse lilo... lilo -L -r $mountpoint || exit 1 # синхронизируем
диск с кешем и размонтируем разделы /bin/sync umount $mountpoint/dev
umount /dev/${disk}7 umount /dev/${disk}8 echo -n "..alles..." >mount
-o remount,rw /mnt/hda6 >cp ./ install-blin-to-hdd /mnt/hda6
На этом все.
При внимательном подходе проблем быть не должно. Напомню только, что
удалить LILO средствами Windows можно, загрузившись с загрузочной
дискеты и, перейдя на диск С, ввести fdisk /mbr. Если что
непонятно, обратитесь к предыдущим моим материалам - там описано
подробней все, чем мы сегодня занимались.
Linux
forever!
Сергей А.Яремчук Мой Компьютер Weekly
ПЮГДЕКШ
ХМДСЯРПХЮКЭМШИ ЛНМХРНП
ЛХЦПЕМЭ
ТКЮЦ АЮЬМЪ
ТНЯТНПМШИ ЙПЮЯЙЮ
ТСРАНКЭМШИ РНРЮКХГЮРНП
НАЕД
РПХ ЖБЕРЮ: ЯХМХИ
ЛЕДХЖХМЯЙХИ ОЕПЕБНД
ЙСПЭЕПЯЙХИ ОНВРЮ
НАКХЖНБЙЮ ЩКЕЙРПНЙЮЛХМ
ОЕПЕБНД ХЯОЮМЯЙХИ
БЮПНВМШИ ОНБЕПУМНЯРЭ cata
hi-fi
hi-fi
hi-fi
hi-fi
hi-fi
ТКЧНПЕЯЖЕМРМШИ ЙПЮЯЙЮ
motorola v3i ЙСОХРЭ
ЙСОХРЭ ЙНМДЕМЯЮРННРБНД
БШЬХБЙЮ ТКЮЦ
ГЮЙЮГЮРЭ ТКЮЦ
РНПЦНБШИ БХРПХМЮ
ДЕРЯЙХИ ЛХП wow
ДЕРЯЙХИ ЛХП wow
ДЕРЯЙХИ ЛХП wow
ДЕРЯЙХИ ЛХП wow
ДЕРЯЙХИ ЛХП wow
ДЕРЯЙХИ ЛХП wow
ДЕРЯЙХИ ЛХП wow
ДЕРЯЙХИ ЛХП wow
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
СЯРПНИЯРБН ОКЮБМШИ ОСЯЙ
ЯКЧДНОКЮЯРНБШЕ БРСКЙЮ
ГЮРЕМЕМХЕ БХРПХМЮ
ЯМЕЦНСАНПНВМШИ ЛЮЬХМЮ
ЙПЮЯМШИ ОКНЫЮДЭ ЛЮБГНКЕИ
ЮКЭОХМХГЛ
РПЕУЛЕПМШИ ОПЕГЕМРЮЖХЪ
ТЮЙСКЭРЕР ОЯХУНКНЦХЪ
ХГЛЕПХРЕКЭ ЯНОПНРХБКЕМХЕ
ЙБМ
ЙСОХРЭ АКХММХЖС
ЩКЕЙРПНЛНМРЮФМШИ ЯРНК
БЯРПЮХБЮЕЛШИ БШРЪФЙЮ
БПЕЛЪ ХБЮМНБН
БПЕЛЪ ХБЮМНБН
БПЕЛЪ ХБЮМНБН
БПЕЛЪ ХБЮМНБН
БПЕЛЪ ХБЮМНБН
БПЕЛЪ ХБЮМНБН
БПЕЛЪ ХБЮМНБН
БПЕЛЪ ХБЮМНБН
БПЕЛЪ ХБЮМНБН
БПЕЛЪ ХБЮМНБН
БПЕЛЪ ХБЮМНБН
БПЕЛЪ ХБЮМНБН
ВЕПМШИ ЙНТЕ
ВЕПМШИ ЙНТЕ
ВЕПМШИ ЙНТЕ
ВЕПМШИ ЙНТЕ
ВЕПМШИ ЙНТЕ
ВЕПМШИ ЙНТЕ
ВЕПМШИ ЙНТЕ
ВЕПМШИ ЙНТЕ
ВЕПМШИ ЙНТЕ
ВЕПМШИ ЙНТЕ
ВЕПМШИ ЙНТЕ
ВЕПМШИ ЙНТЕ
ЯДЕКЮРЭ ОЮГК
ЯДЕКЮРЭ ОЮГК
ЯДЕКЮРЭ ОЮГК
ЯДЕКЮРЭ ОЮГК
ЯДЕКЮРЭ ОЮГК
ЯДЕКЮРЭ ОЮГК
ЯДЕКЮРЭ ОЮГК
ЯДЕКЮРЭ ОЮГК
ЯДЕКЮРЭ ОЮГК
ЯДЕКЮРЭ ОЮГК
ЯДЕКЮРЭ ОЮГК
ЮЙПХКНБШИ ОПЪФЮ
БШАНПНВМШИ СТ-КЮЙ
ЦНПЪВХИ НАЕД
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЯКНЕМШИ ХГДЕКХЕ
ЙСОХРЭ БХДЕНЙЮПРС
ЯОА ДНЯРЮБЙЮ
ОПНТЕЯЯХНМЮКЭМШИ ТЮПТНП
ЮМРЕММЮ АСЯРЕП
ЩТХПМШИ ЮМРЕММЮ
СМХВРНФЕМХЕ ДЮММШИ