Этот пост — не вопрос, но готовое решение. Я пользуюсь этим методом около двух лет. Я купил себе нетбук с лицензионным windows и, естественно, захотел запустить на нём linux, но так, чтобы не пришлось переразбивать жесткий диск, да и привода CD у меня нету.
При реализации этого метода у нас будут такие штуки:
- frugal-установка — она же «экономная» или «бережная», когда на машину с виндой устанавливается рядом линукс, без необходимости выделять для него отдельный раздел;
- dual-boot — «двойная загрузка», когда на данной машине можно загрузить как винду, так и линукс;
- live-система — так как линукс будет перенесен с LiveCD, то и новая система, поселившаяся на жестком диске, будет обладать свойствами Live.
Далее я опишу только алгоритм ручной установки. Все действия очевидные и предсказуемые; никто не скажет «этот ваш установщик превратил в кашу мой жесткий диск», так как вы становитесь сами себе установщиком. При желании, по данному алгоритму можно реализовать установщик, например NSIS для установки прямо из windows, либо shell-скрипт для установки из загруженной Live-системы.
SliTaz распространяется как образ ISO. Для установки я выбираю себе основную («core») редакцию: http://mirror.slitaz.org/iso/4.0/flavors/slitaz-4.0-core.iso Что-то мне так и не повезло с версией 4-в-1, но, может, руки не очень прямые были.
Любым доступным методом извлекаем из образа два файла:
- ядро (bzImage или vmlinuz-2.6.37-slitaz);
- файловую систему (rootfs.gz).
[Файлы можно также взять здесь: http://mirror.slitaz.org/boot/4.0/ Говорят, что можно просто «слить» в один файл все четыре rootfs*.gz, но я это не пробовал.]
Windows установлен у меня на диске C:. Создаём папку boot на диске C: и помещаем два извлеченных ранее файла в эту папку.
На диске C: можно увидеть (если постараться, т.к. файл скрытый и системный) файл ntldr — это загрузчик windows. Положим на диск C: загрузчик linux — файл grldr. Взять его можно здесь: http://mirror.slitaz.org/boot/grldr
Создадим на диске C: файл menu.lst и запишем в него пункты меню, которым будет пользоваться наш загрузчик grldr:
timeout=2
default 0
gfxmenu (hd0,1)/boot/gfx/message.distro-noball
title SliTaz 4.0
rootnoverify (hd0,1)
kernel (hd0,1)/boot/bzImage rw root=/dev/null home=/dev/sda2 vga=789 lang=ru_RU kmap=ru autologin
initrd (hd0,1)/boot/rootfs.gz
title commandline (Командная строка)
savedefault --wait=2
commandline
title Reboot (Перезагрузка)
reboot
title ShutDown PC (Выключить)
halt
Это мой файл (вернее, его часть), а для того, чтобы он подошёл к вашему компьютеру, нужно его немного изменить. Если вы никогда до этого не настраивали меню GRUB, то тут вам придётся повозиться.
timeout=2 — если в течение 2 секунд после загрузки меню вы ничего не нажмете, то загрузится пункт по умолчанию;
default 0 — номер пункта по умолчанию, нумерация идёт с нуля;
gfxmenu (hd0,1)/boot/gfx/message.distro-noball — захотелось красивого меню с картинкой, но если вы не найдёте ничего такого, то эту строку можно удалить. Здесь (hd0,1) означает мой первый по счёту жесткий диск (цифра 0 — нумерация с нуля), а на нём второй по счёту раздел (цифра 1 — нумерация с нуля). Этот раздел жесткого диска windows называет диском C:. А дальше в этой строчке меню идёт путь: в папке boot лежит папка gfx, а в ней лежит файл message.distro-noball, вы можете загрузить его себе из моего дропбокса: http://dl.dropbox.com/u/47815386/message.distro-noball
Дальше идут пункты меню. Каждый пункт меню начинается со слова title — это заголовок пункта; то что написано в строчке после title вы увидите в меню. Русские буквы лучше не использовать, иначе нужно сохранять файл меню в кодировке UTF-8, да и русские буквы будут видны только в графическом меню (если определён gfxmenu), а в текстовом будут непонятные буквы.
Рассмотрим только пункт SliTaz 4.0.
rootnoverify (hd0,1)
Необходимая строка. Раздел диска (hd0,1) назначается основным («монтируется как корневой») без каких-либо проверок. Как вы можете узнать, какой раздел вам сюда вписать? Можно спросить того, кто разбивал вам жесткий диск на разделы («диск C: это какой по счёту у меня раздел на жёстком диске?») или посмотреть самому в какой-либо графической программе, наподобие Acronis DiskDirector или GPartEd. Я сам удивился, когда это увидел. Жёсткий диск у меня один, а на нём два раздела. Первый (hd0,0) является скрытым, на нём находится какая-то информация для восстановления к заводским настройкам, а второй (hd0,1) — это и есть наш диск C:.
kernel…
Указываем загрузчику на ядро линукса.
(hd0,1)/boot/bzImage — это путь к ядру. Название и путь могут быть произвольными, главное — точно указать их здесь, чтобы загрузчик мог его найти. После следуют параметры загрузки ядра. Рассмотрим их.
rw — обычный режим работы, когда можно не только читать файлы, но и писать (изменять, создавать новые) при работе с файловой системой;
root=/dev/null — корневой файловой системы нет, мы используем виртуальную;
home=/dev/sda2 — можно обойтись без этого параметра, но лучше с ним. Здесь указывается, что раздел sda2 будет использоваться для домашних папок пользователей. Здесь «sd» означает жёсткий диск, буква «a» — первый (a, b, c…), цифра 2 — второй раздел (1, 2, 3…). Да это же тот же самый диск C:! Да, правда. Зачем такая разница в записи? (hd0,1) используется в GRUB, он отделен от линукса, он может загружать не только linux, но и windows и т.п. А запись /dev/sda2 используется в линуксе — загружается ядро и появляется устройство sda2.
В домашней папке /home находятся папки по именам пользователей (tux в данном случае), поэтому из windows мы увидим в дальнейшем папку C:\tux.
vga=789 — указывает видео-режим, который будет использоваться на время загрузки. В данном случае 800×600. Можно попробовать здесь vga=ask для вывода списка доступных режимов, а потом заменить на нужное число (здесь 789 — десятичное число, а в списке обычно пишутся шестнадцатеричные числа, например, 789=0x315).
lang=ru_RU — обязательный параметр для SliTaz 4.0, указываем русский язык системы; без указания lang=… SliTaz 4.0 не загрузится;
kmap=ru — то же самое, но указывает раскладку клавиатуры;
autologin — необязательный параметр. С ним будет происходить автоматический вход в систему (хехе, как в windows с одним пользователем).
Следующая строчка в этом пункте меню:
initrd (hd0,1)/boot/rootfs.gz
Я надеюсь, вы поняли, что из windows это видно как файл C:\boot\rootfs.gz В нём находится вся файловая система SliTaz 4.0, все программы, настройки, значки и т.п. Менять папку и название файла крайне не желательно, если вы хотите пользоваться возможностью WriteFS из SliTaz.
Остальные пункты меню говорят сами за себя. Вы можете и не писать их в вашем меню.
Следующий вопрос, который нам нужно решить — а как же запустить сам загрузчик линукса grldr? Ведь мы же условились не переразбивать жёсткий диск и не менять на нём загрузочную запись (для того, чтобы можно было удалить папку boot, файлы C:\grldr и C:\menu.lst в «случае чего»). Для этого мы воспользуемся возможностью самого windows. Откроем файл C:\boot.ini в текстовом редакторе. Этот файл также скрытый и системный, для того, чтобы увидеть его можно настроить «вид папки» или воспользоваться вашим любимым Тотал Коммандером или Фри Коммандером, научив их показывать скрытые и системные файлы. В конец файла boot.ini дописываем строчку:
c:\grldr="Start Linux"
Учтите, что многие текстовые редакторы откажутся сохранять изменённый файл, поэтому нужно сначала снять атрибуты «скрытый» и «системный» с файла, изменить его, а потом по желанию установить атрибуты снова. Здесь:
c:\grldr — где лежит наш загрузчик grldr;
Start Linux — произвольный текст.
Вот мой файл boot.ini полностью:
[boot loader]
timeout=5
default=c:\grldr
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Home Edition RU" /noexecute=optin /fastdetect
c:\grldr="Start Linux"
Здесь мы видим ожидание 5 секунд и пункт по умолчанию — загрузка линукса. Всё, можно перезагружаться. После перезагрузки мы увидим на чёрном экране меню из двух пунктов:
Microsoft Windows XP Home Edition RU
Start Linux
Здесь я не рассмотрел множество нюансов. Как использовать другие редакции SliTaz кроме Core? Как проделать ту же установку, но на windows, отличном от XP? Не знаю.
Что делать, если линукс не загружается? Проверьте весь ход методики, описанной здесь. Если загружается LiveCD, то будет загружаться и так.
Что делать, если теперь не загружается ни windows, ни linux? Загрузитесь с LiveCD и восстановите файл boot.ini до прежнего состояния. Вы ведь сохранили оригинал себе в загашнике?
Как работать с этим линуксом? Как вам хочется ;) У нас типичная Live-система, каждый раз всё с нуля. Но есть и отличие. Настройки программ будут сохраняться в домашней папке пользователя (/home/tux = C:\tux) и после выключения компьютера система будет помнить ваши предпочтения. А вот, если вы установили какие-либо программы, то они устанавливаются в нашу виртуальную файловую систему, которая находится в оперативке, и которая будет очищена при выключении питания. Что делать? Перед выключением компьютера, для того, чтобы не устанавливать программы каждый раз, нужно пересобрать rootfs.gz. Процесс этот долгий, но ведь и программы устанавливать приходится не часто, так что с этим вполне можно жить. Для перепаковки нажмите правую кнопку мыши на пустом месте рабочего стола и отыщите там пункт writefs gzip.