суббота, 2 апреля 2011 г.

Изготовление мультизагрузочного CD-диска

Исследуя в очередной раз просторы Интернета, я обратил внимание на то, что вопросы создания "многоОСных" CD почти не освещены. Немногие производители специализированного коммерческого софта под Windows включают в свои продукты возможность создания загрузочных компакт-дисков. Но мне ещё не приходилось встречать программу, позволяющую создавать мултизагрузочные диски. На мой взгляд, создание таких дисков в среде Linux задача более простая, чем в Windows. Существует множество доступных утилит, которые помогут вам создать загрузочный CD с Linux'ом. Но вот мултизагрузочный CD -- это уже деликатес. И какой! Имея такой диск, вы становитесь счастливым обладателем нескольких операционных систем в одной упаковке. На этом диске можно разместить несколько версий Linux -- с поддержкой журналируемых файловых систем и без них, с дополнительными утилитами для восстановления данных и пр. Кроме этого, на диске могут быть размещены и другие ОС -- BSD, QNX, Plan9 и т.д. Общим числом до 10 (десяти)! Впечатляет? Читайте дальше.

Почему это может быть полезно (и интересно) для вас? Представьте себе -- вы используете в своей работе Linux и FreeBSD. Или, к примеру, вы установили на свой компьютер несколько дистрибутивов Linux и вдруг с системой что-то случилось и нет никакой возможности получить доступ к данным обычным путём. Либо вам придётся воспользоваться загрузочной дискетой (но тут могут возникнуть проблемы -- например, вы используете журналируемую файловую систему типа XFS или шифруемую файловую систему и вам нужно 5 загрузочных дискет, чтобы получить к ним доступ), либо создать мултизагрузочный CD с несколькими версиями ядра и набором утилит на все случаи жизни. Думаю, небольшой CD с 10-ю операционными системами избавит вас от заблуждений, что в этом мире всегда что-то идёт неправильно и с этим ничего невозможно поделать.

Работая над этой статьёй, я пытался сделать её как можно более простой для понимания. Особенно для новичков. Я, по возможности, избегал технического языка, который может быть не всем понятен. Надеюсь, мне это удалось, и тем самым я смог привлечь к статье внимание большего числа читателей.

Загрузочный CD использует так называемый стандарт El Torrito. Более подробно с ним можно ознакомится на http://www.cdpage.com/Compact_Disc_Variations/danaboot.html

Для нас важной информацией будет то, что мы можем записать на компакт-диск до 10-и операционных систем и использовать в дальнейшем этот диск на любой машине, чей BIOS поддерживает функции загрузки с CD. Загрузочный ISO-образ может быть создан с возможностью эмуляции дискет объёмом 1.44MB или 2.88MB, либо жёсткого диска.[1]

От слов к делу -- практическое руководство по подготовке мултизагрузочного CD

Во-первых, в вашем распоряжении должен быть образ загрузочной дискеты под DOS или Linux. Образ (или загрузочный образ) -- это файл, представляющий из себя копию загрузочной дискеты[2]. Существует несколько типов образов. Для создания одного из них вы можете воспользоваться командой dd (disk dump) и создать образ одного из разделов файловой системы (в качестве примера здесь показано создание образа первого раздела файловой системы [hda1][3]):

dd if=/dev/hda1 of=/my_image.file

Что-то у меня сомнения по поводу размера получившегося файла... Прим. ред.

Файл my_image.file будет создан и размещён в корне вашей файловой системы. Не каждый образ является загрузочным -- это зависит от содержания, поэтому хорошей идеей будет запастись "энным" количеством образов (под Linux или BSD). Проще всего это сделать загрузив такие образы из Интернета:

http://www.ibiblio.org/pub/Linux/system/recovery/

Ibiblio является одним из лучших архивов в Сети. Образы загрузочных дискет вы можете найти по указанной выше ссылке. При этом вам не нужно беспокоится о том, чтобы делать их загрузочными -- всё уже сделано за вас[4]. Однако, если вы хотите создать образ загрузочной дискеты своими руками, то можете воспользоваться утилитами Bootkit, CatRescue, SAR, disc-recovery-utils и им подобными, которые помогут вам создать загрузочные дискеты (или их образы).

Файлами, которые нам понадобятся для того, чтобы создать мултизагрузочный компакт-диск, будут fbsd-flp-1.0.3.bin (загрузочный образ дискеты FreeBSD размером 2.88MB), tomsrtbt или создайте собственные образы, сняв копии с загрузочных дискет, которые находятся в вашем распоряжении. Вставьте дискету (DOS или Linux) в дисковод и введите следующую команду:

dd if=/dev/fd0 of=boot.img bs=512 count=2880[5]

Неплохой идеей будет посетить http://freshmeat.net и провести поиск по ключевому слову "mini" -- возможно вы обнаружите несколько мини-дистрибутивов Linux, о которых даже и не подозревали.

Сайт http://www.ibiblio.org/pub/Linux/system/recovery/ содержит (кое-что я удалил)...

  • Bootkit-1.01.tar.gz
  • CatRescue101E.tgz
  • SAR-2.25.tar.gz
  • banshee-linux.0.61.tar.bz2
  • brd-2.0.tar.gz
  • disc-recovery-utils-1.0.tgz
  • fbsd-iso-1.0.3.bin.gz
  • fspace.tgz
  • genromfs-0.5.1.tar.gz
  • mulinux-5r0.lsm
  • mulinux-5r0.tgz
  • picoboot-0.95.tar.gz
  • rescue02.zip
  • resque_disk-2.3.99-pre9-A.tgz
  • rip-10.exe
  • rip-51.iso.bin
  • sash.tar.z
  • tomsrtbt-2.0.103.ElTorito.288.img.bz2
  • tomsrtbt-2.0.103.dos.zip
  • trccs-0.8.1r2.iso.bz2
  • trccs-0.8.1r2.tar.bz2
  • trccs-0.8.1r2_boot_disk.img.bz2
  • yard-2.1.tar.gz
  • yard-prefabs-2.tgz
  • zdisk-2.14.tar.gz

Есть ещё несколько неплохих сайтов, откуда вы можете скачать образы загрузочных дискет:

LIAP (http://www.liap.eu.org/): LIAP -- это "Linux в пилюлях" -- сайт содержит множество образов 1.44MB'ых дискет с различными утилитами и разными версиями ядра для борьбы со всякого рода неприятностями.

LEKA RESCUE FLOPPY (http://leka.muumilaakso.org/): Leka Rescue Floppy -- миниатюрный дистрибутив, помещающийся на 1.44MB'ой дискете.

TOMSRTBT (http://www.toms.net/rb/): Tomsrtbt (Tom's Root Boot) мини-дистрибутив, содержащий утилиты по восстановлению данных (очень хорошие). Вы можете загрузить образ на 2.88MB с вышеуказанного сайта.

Кроме этого вы можете скачать образы загрузочных дискет для DOS. Посетите, например, http://www.bootdisk.com и скачайте их, если вам это необходимо. Сайт содержит образы загрузочных дискет для DOS с версии 5.00 по 6.22, Win 95/98/ME, наборы для NT4/NT5, DrDOS 7.х и пр. Здесь же вы найдёте загрузочную дискету для FreeDOS.

Немного терминологии. Существует разница между загрузочным образом дискеты и ISO-образом, который записывается на CD. Что нам нужно, так это загрузочные образы дискет, из которых мы создадим ISO-образ.

1) Вы можете подготовить образы загрузочных дискет при помощи команды:

dd if=/dev/fd0 of=/my_image.img

или вы можете скачать эти образы из Интернета (см. ссылки, указанные ранее). Теперь вернёмся "домой", в Linux. :) Создайте каталог /CD и скопируйте в него загрузочные образы (помните, их не должно быть больше 10). Проверьте, чтобы имена файлов соответствовали формату 8.3 (до 8 символов для имени и до 3 для расширения). Это необходимо для совместимости с DOS-программой makebt.exe, которой мы воспользуемся чуть позже.

2) Если вы хотите использовать оставшееся свободное место на CD (10 образов загрузочных дискет займут около 14MB, максимум -- 28MB), скопируйте утилиты в поддиректорию /CD/Soft. Информацию о том, как получить доступ к компакт-диску (в среде Linux и DOS) дана ниже.

3) Теперь можно создать ISO-образ:

mkisofs -b image.img -c boot.cat -J -l -R -r -o /cd.iso /CD

Файл "boot.cat" или "boot.catalog" будет автоматически создан, поэтому нет необходимости создавать его в директории /CD. Просто выполните команду -- всё остальное она сделает за вас. В качестве загружаемого образа вы можете указать имя любого образа из тех, что скопированы в /CD. Он и будет тем образом, который будет выполняться при загрузке с CD. Размер образа должен быть 1.44MB или 2.88MB.

4) Файл cd.iso будет создан в корневом каталоге / (/cd.iso). Проверить этот файл можно смонтировав его (mount /cd.iso /mnt -o loop). Если всё в порядке, то вы сможете просмотреть содержимое ISO-файла в директории, к которой его подмонтировали (в нашем случае это /mnt). Если этот ISO-образ записать на CD, то мы получим "одно-загрузочный" CD.

5) Теперь нам необходимо отредактировать ISO-образ таким образом, чтобы получить возможность мултизагрузки оставшихся образов. Тем самым мы включим их в загрузочное меню, которое будет отображаться при загрузке с CD. Меню будет представлено пунктами, пронумерованными от 1 до 10 (если вы создадите все 10 образов). Выбор будет осуществляться указанием номера необходимой операционной системы.[12]

6) После того как мы закончим редактирование -- можно будет записывать CD.

Поскольку у меня нет времени, чтобы написать скрипт на Perl, который бы редактировал ISO-образ и т.к. редактирование ISO-образа может оказаться делом сложным и для некоторых запутанным (а я хотел сделать статью как можно более простой в восприятии), то лучшим выходом из создавшегося положения будет использование программ, свободно доступных в Интернете. Одной из них является makebt.exe. Когда-то я нашёл эту программу в каком-то из закоулков Сети, но, к сожалению, первоисточник найти уже не могу, поэтому я выложил её на своём сайте http://www.tankred.sk/~juro/freebsd/makebt.zip. Где вы и сможете её скачать.

Вы можете запустить makebt.exe под DOSEMU или BOCHS (http://bochs.sourceforge.net) или загрузить DOS с системной дискеты, образы которых доступны на http://www.bootdisk.com или создать загрузочную дискету с FreeDOS и, загрузившись с дискеты, запустить утилиту makebt.exe. Если у вас нет раздела под DOS, тогда выходом из сложившейся ситуации будет использование эмулятора DOSEMU -- он может получать доступ к разделам Linux, где и будет лежать cd.iso и ждать ваших "очУмелых ручек".

Когда вы запустите makebt.exe, он попросит ввести полный путь[6] и имя файла ISO-образа, который нужно отредактировать и вы увидите экранную форму, в которую затем нужно ввести имена образов загрузочных дискет:[7]

-----------------------------------------------------------------------------
Make Multiple Boot CD-ISO Image Modifier ver 1.02
ISO File path and name: e:\temp\cd.iso
Bootable Disk Image Boot media type Default LBA
------------------- --------------- ------- --------
BC ) BOOT.CAT
1 ) FBSD.IMG 1.44M Floppy Y
2 ) LINUX.IMG 2.88M Floppy -
3 ) PLAN9.IMG 1.44M Floppy -
4 ) QNX.IMG 1.44M Floppy -
5 ) OPENBSD.IMG 2.88M Floppy -
6 )
7 )
8 )
9 )
10 )




TAB = move between fields, up/down arrows = move between rows, F1 = Confirm
Use left and right arrow to choose emulation type
-----------------------------------------------------------------------------

BC означает Boot Catalog (загрузочный каталог). Просто укажите boot.cat и и не волнуйтесь ни о чём, т.к. вы уже использовали эту строку в опциях при вызове команды mkisofs (главное, что ISO-образ уже содержит строку "boot.cat"). Теперь введите имена загрузочных образов. Вы должны вводить их имена в формате 8.3.

Кроме имени образа вы должны указать вид эмуляции -- эмуляция 1.44MB дискеты или 2.88MB. Мы будем использовать только эмуляцию на 1.44MB и 2.88MB, но если хотите поэкспериментировать с эмуляцией жёсткого диска, то создайте раздел Linux на 650MB и скопируйте туда файловую систему с вашей машины[8]. Для выбора типа эмуляции используйте клавишу управления курсором (стрелка вправо). Кроме того, в колонке "Default" вы должны указать, который из образов должен быть загружаемым по-умолчанию. Для этого нужно нажать "Y". И последнее (хотя оно должно быть первым) -- переход между горизонтальными полями ввода -- клавиша "TAB". Перемещение вверх-вниз осуществляется как обычно -- соответствующими клавишами управления курсором.

Когда закончите вводить данные, нажмите клавишу F1 (возможно придётся нажать её несколько раз -- программа может среагировать на ваше нажатие не сразу). makebt.exe обладает зачатками интеллекта (точнее вежливости) -- если вы ввели неверное имя файла, то она сообщит об этом (после нажатия клавиши F1). Не включайте никаких описаний для загрузочных образов в меню, которое появится после нажатия F1, поскольку эта особенность используется главным образом в SCSI CD-ROM'ах и я не изучил её досконально.

Ну, вот и всё. Теперь можно записывать CD.

cdrecord -v speed=8 dev=0,0,0 /cd.iso[9]

Когда вы загрузитесь с CD, то не увидите описания для операционных систем -- только двузначные номера (в конце строки в скобках)[10]. У меня не было достаточно времени для экспериментов, чтобы разобраться с этим, поэтому хорошей идеей будет записать порядковые номера пунктов меню и описание к ним, чтобы быть в курсе какая система и откуда грузится.

Здесь мы имели дело с образами дискет, являющимися системными, поэтому если вы загрузились с CD, который только, что создали, то вы можете получить доступ к вашему CD-ROM'у выполнив команду "mount /dev/hdc /mnt". Тем самым вы получите возможность воспользоваться утилитами, которые сохранили в каталоге /Soft. В случае с системой DOS вам необходимо добавить в config.sys драйвер для доступа к CD, а в autoexec.bat прописать загрузку программы mscdex.exe.

Если вы хотите создать под Linux программу, которая будет модифицировать ISO-образ, то попробуйте сравнить оригинальный ISO-образ с тем, который получится после внесения в него изменений утилитой makebt.exe. Для этого подойдёт утилита сравнения двоичных файлов bdiff, автор Giuliano Pochini. Bdiff небольшая программка, делающая с двоичными файлами тоже, что и известные утилиты diff и patch с текстовыми файлами. Найти её можно здесь: http://space.virgilio.it/g_pochini@virgilio.it/. Учтите, что оба ISO-образа должны быть одинакового размера. Утилита сравнения двух файлов выдаст вам смещение, где записан флаг, устанавливающий режим мултизагрузки. Это сектор 17 (Boot Volume Descriptor) и Boot Catalog Sector[11].

Я создал множество мултизагрузочных CD, используя всё вышеизложенное и проблем с их созданием не было никаких. Однако, учитывая то, что первый блин всегда может выйти комом, советую вам использовать для ваших экспериментов CD-RW диски. Удачи!

Примечания переводчика

[1] Последняя возможность заинтересует тех, кто хочет разместить отинсталлированную операционную систему на компакт-диске.
[2] Для тех, кто не в курсе, что это такое -- речь идёт о точной посекторной (или, если хотите побайтовой) копии дискеты. Т.е. первые 512 байт образа -- это boot-сектор, далее -- всё зависит от типа файловой системы, размещённой на дискете.
[3] Автором статьи делается упор на то, что это должен быть Linux-раздел. Хотя, на самом деле, это не обязательно -- с таким же успехом на его месте может быть и DOS-раздел. Главное, чтобы он был primary, а не extended.
[4] Прошу учесть, что не все файлы по указанной ссылке являются загрузочными образами. Ищите те, что содержат в имени файла "iso" или "img". Да, и к размеру присматривайтесь -- образы дискет будут двух размеров -- 1.44MB или 2.88MB, с учётом компрессии.
[5] Учтите, если вы планируете создать копию с дискеты, чей размер отличается от 1.44MB, вы должны указать для ключа count другое значение. Для 2.88MB -- это будет в два раза больше -- 5670. Вообще-то ключи bs и count нужны только в том случае, если размер дискеты отличается от стандартной -- 1.44MB (хотя где-то же должны жить и здравствовать дисководы на 2.88MB).
[6] Обращаю ваше внимание на то, что обязательно нужно указать полный путь к ISO-образу. Даже если makebt.exe и ISO-образ и находятся в одном и том же каталоге. Проверено -- на эти грабли я уже наступил. :)
[7] Вот, что мне удалось обнаружить, создавая свой собственный мултизагрузочный CD: оказывается первым пунктом меню при загрузке с CD идёт тот образ загрузочной дискеты, что был указан в опциях программы mkisofs. Поэтому в программе makebt.exe нужно указывать только "недостающие" образы.
[8] Увы, но в этом месте автор, что-то очень "мутно" изъясняется, что дальше делать с таким разделом -- в оригинале статьи стоит фраза оканчивающаяся словом "experiment" и многоточие. Скорее всего автор забыл дописать предложение, планируя к нему вернуться позже. Писать свои домыслы на эту тему, не проверенные практикой, не буду, чтобы не загружать вам мозги.
[9] Если будете писать на CD-RW, не забудьте указать ту скорость, на которой компакт-диск позволяет писать, а не 8-ю, как это указано в примере. Хотя уже появились CD-RW диски с возможностью записи на 8-й скорости.
[10] Очень странная ситуация: для первого пункта меню -- это образ указанный при вызове программы mkisofs -- сигнатура отлична от нулевой -- (19). Первым я поставил образ загрузочной дискеты для Windows'98. Для всех остальных пунктов, которые были добавлены при помощи makebt.exe -- (00).
[11] К сожалению, утилита bdiff хороша, как инструмент для "латания" двоичных файлов. Этого у неё не отнимешь. Но вот для получения информации о том, где находятся "разночтения" в файлах, лучше подойдёт утилита cmp из пакета diffutils.
[12] Не уверен, что это ошибка автора, но создавая свой собственный "десятиОСный" загрузочный CD, я обнаружил следующую странность। Первые девять пунктов меню нумеруются от 1 до 9. Далее для 10-го и 11-го (!) пунктов меню используются в качестве "горячих" клавиш символы ":" и ";", соответственно. Методом "научного втыка" я выяснил, что первый пункт соответствует тому образу, что был указан в опциях команды mkisofs. А второй -- тому образу, что указан первым в списке образов в программе makebt.exe (в нашем примере это fbsd.img). При этом оба этих образа не обязательно должны совпадать. Таким образом у нас получается 11 вариантов загрузки! Но если бы всё было так хорошо, то это было бы очень странно. Законы Мерфи никто не отменял. О чём это я? А проблема в следующем -- я не смог найти горячие клавиши для пунктов 10 и 11. Хотя там и указаны символы ":" и ";", но их нажатие ни к чему не приводит. Попытка "потоптать" всю клавиатуру не дала никаких результатов. Возможно кому-то из читателей удастся решить эту проблему. В таком случае не забудьте поделиться как. И последнее. Идеи, изложенные в статье проверялись в среде Junior 2.0, обновлённом из Сизифуса. Пишущий CD-привод -- SONY.

Автор: (C) Juraj Sipos
Перевод: (C) Александр Куприн

понедельник, 23 июня 2008 г.

Создание сервера для раздачи инета в локалку на базе Opensuse 10.3

Материальная база:

  1. Имеем две машины на базе OpenSuSe Linux 10.3.
  2. В каждой машине имеем по сетевому интерфейсу (в моём случае он ещё и беспроводной, но это картины не меняет) eth0.
Сетевая конфигурация машин:

  1. Первый компьютер, далее именуемый как "сервер" подключен к провайдеру ДомРу (замените на имя Вашего провайдера) через PPPoE (IP адрес вида 10.x.x.x выдаётся динамически, но каждый раз один и тот же, адреса DNS серверов также получаются при подключении) и в моём случае имеет внутренний IP 192.168.155.2 (в Вашем случае пропишите ему адрес 192.168.0.1, так будет привычнее) .
  2. Второй компьютер, далее именуемый как "клиент" соединён сетью с первым через свитч (с серверной стороны и ДомРу и локалка подключены через один интерфейс) и имеет внутренний IP 192.168.155.1 (Вы же выберите лучше 192.168.0.2)
Требуется:

  1. Обеспечить прозрачный доступ в интернет через NAT для клиентской машины
  2. Обеспечить поддержку внутреннего ДНС сервера в качестве ретранслятора (далее поймёте зачем это)
Некоторые данные, которые нам пригодятся:

  1. IP адрес яндекса 213.180.204.8
  2. IP адрес гугла 64.233.187.99
  3. Утилита "ping", предназначенная для проверки сетевого соединения между узлами
  4. DNS сервер bind для удобной работы с DNS
  5. Прозрачный прокси на squid (факультативно), позволяющий кешировать весь хттп трафик для его экономии и увеличения скорости доступа к ресурсам.
  6. Suse Firewall 2, обертка для Iptables, предназначенная для удобного конфигурирования фаервола.
  7. Немного бутербродов и чая \ кофе, т.к. процесс не очень-то и быстрый
Для начала предположим, что у нас уже есть настроенное и исправно функционирующее PPPoE соединение. Убедиться в этом можно командой: ping ya.ru и есть в ответ будет выдано нечто вида:
nrg@dell:~> ping google.com
PING google.com (72.14.207.99) 56(84) bytes of data.
64 bytes from eh-in-f99.google.com (72.14.207.99): icmp_seq=1 ttl=244 time=171 ms
64 bytes from eh-in-f99.google.com (72.14.207.99): icmp_seq=2 ttl=244 time=173 ms
64 bytes from eh-in-f99.google.com (72.14.207.99): icmp_seq=3 ttl=244 time=184 ms
64 bytes from eh-in-f99.google.com (72.14.207.99): icmp_seq=4 ttl=244 time=172 ms
64 bytes from eh-in-f99.google.com (72.14.207.99): icmp_seq=5 ttl=244 time=170 ms

То все отлично, можно идти дальше. Далее проверим соединение между машинами наберём на сервере команду ping 192.168.155.1, а на клиенте соответственно ping 192.168.155.2 и в ответ должны посыпаться ответы, указанные выше. Насчёт IP, как я уже сказал выше, используейте 192.168.0.1 вместо 192.168.155.2 и 192.168.0.1 вместо 192.168.155.1.

Сеть работоспособна. Шаг первый, настроим трансляцию пакетов с Локальной сети в Интернет.

  1. Открываем Yast2 -> "Пользователи и безопасность" -> "Брандмауэр".
  2. Переходим на вкладку "Интерфейсы", выбираем там наше ДСЛ соединение (так зовётся PPPoE), щёлкаем кнопку изменить и выбираем "Внешняя зона", а для сетевой карты, подключённой к Локальной Сети (далее "ЛВС"), выбираем соответственно "Внутренняя зона"
  3. Переходим на вкладку "Трансляция сетевых адресов", в верху ставим галочку "Трансляция сетевых адресов".
  4. Далее щёлкаем кнопку "Добавить" и вводим следующее: сеть источника 192.168.155.0/24, протокол TCP, в полях "Требуемый порт" и "Перенаправление в порт" прописываем нули, требуемый IP вводим "0.0.0.0/0", т.е. любой. А в поле "Перенаправить в транслированный IP" наш IP, который выдаётся для dsl соединения (ifconfig dsl0 и смотрите поле inet addr:). В моём случае это адрес вида 10.65.0.x.
  5. Применяем настройки Брандмауэра.
  6. Переходим к клиентской машине.
На клиентской машине в Yast2->"Сетевые устройства" -> Сетевая плата вбиваем IP сервера (192.168.155.2) как шлюз по умолчанию на вкладке Маршрутизация.
Далее опять же на клиентской машине вбиваем ping 64.233.187.99 и смотрим %) Если полетели пакетики, то ура, ибо роутинг уже работает!

Далее нам нужно сделать, чтобы вместо ping ip можно было сделать ping ya.ru.
Установка локального DNS сервера

  1. Ставим через Yast2 пакет bind и пакета для конфигурирования Бинда через yast2 (вбейте в поиске bind он будет показан)
  2. Открываем Yast2 -> "Сетевые службы" -> "Сервер DNS"
  3. Ставим галочку "PPP Демон устанавливает направление запроса", это означает, что если наш локальный ДНС сервер не обнаружит в своей базе IP адреса требуемого домена, то он попросит его у ДНС провайдера, а в случае указанной конфигурации он автоматически определит ДНС провайдера и будет использовать его. Щелкаем далее.
  4. ничего не трогаем на странице "Установка DNS сервера: DNS зоны" и щелкаем далее.
  5. В поле "Запуск службы" ставим галочку "При загрузке системы" и жмем завершить, тем самым применяя настройки.
Возвращаемся к клиентской машине.И снова Yast2 -> "Сетевые настройки" -> "Сетевая карта" -> Имя узла DNS и там ставим галочку "Изменить /etc/resolv.conf вручную", после этого в поле Сервер имён №1 вбиваем IP нашего сервера - 192.168.155.2 и применяем.

Теперь делаем ping ya.ru и радуемся увиденному %) Всё, мои поздравления, сервер настроен, можете открывать браузер на клиентской машине и юзать Инет %)

Добавление прозрачного прокси на базе squid (опционально).

Теперь можно улучшить скорость доступа к ресурсам и уменьшить потребляемый трафик посредством кэширующего прокси на базе squid.
Установите прокси сервер squid и запустите его командой service squid start (или поместите в автозагрузку на 3й либо 5й уровень запуска).
После этого нам требуется немного модифицировать его конфигурацию, открываем любым текстовым редактором файл /etc/squid/squid.conf
Потом отыскиваем там строку "http_port 3128" и меняем её на "http_port 3128 transparent", тем самым мы указали, что прокси теперь может использоваться как прозрачный.

Далее нам нужно указать, что подсеть 192.168.155.0/24 (а в Вашем случае 192.168.0.0/24) является доверенной, чтобы клиенты из данной подсети смогли использовать прокси. Находим текст:
http_access allow localhost
# And finally deny all other access to this proxy
http_access deny all

И изменяем на следующее следующее:
acl our_networks src 192.168.155.0/24
http_access allow our_networks
http_access allow localhost
# And finally deny all other access to this proxy
http_access deny all

Тем самым мы как раз и добавили нашу подсеть в список допустимых и перезапускаем squid командой service squid restart дабы применить произведённые настройки.

И, наконец, укажем SuSe Firewall`у, что для портов 80 и 8080 нужно использовать прокси. Для этого открываем /etc/sysconfig/SuSEfirewall2
Там ищем строку вида FW_REDIRECT="" и заменяем её на
FW_REDIRECT="192.168.155.0/24,0/0,tcp,80,3128"

Далее перезапускаем Suse Firewall2 через Yast2 и наблюдаем через команду tail -f /var/log/squid/access.log ,что теперь все запросы на указанные порты перекидываются на прокси :)

Чуть позже дополню все скриншотами и выправлю текст.
Благодарность, критика, вопросы по теме принимаются и приветствуются за исключением случаев, когда собеседник хочет, чтобы все сделали за него ("быстро и шоп работало") и ведёт себя бестактно, тогда в помощи я буду вынужден отказать, т.к. ценю своё время.

Автор: Одинцов Павел ака энерджи. Ноября 2007г. Общее время написания статьи: 1 час.

воскресенье, 6 апреля 2008 г.

10 привычек хорошего иcпользования UNIX

IBM LogoГде-то примерно такого названия статья попалась на сайте developerWorks IBM. Приссмотрелся, кажется UNIX tips: Learn 10 good UNIX usage habits интересна и, возможно, поможет не только новичку в *nix. Как говорил мой одноклассник (”снэмал не я”) перевод мой, не бэйте больна. ;)

Вступление

Когда вы часто используете систему, вы склоняетесь к использованию шаблонов. Иногда, вы привыкаете делать что-то не лутшим возможным образом. Иногда, вы даже перебираете примеры плохой практики, которые ведут к суматохе и неуклюжести. Один из лутших способов исправление этих недостатков заключается в том, чтобы добросовесно подобрать хорошие привычки, корорые препятствуют плохому. Эта статья предлагает 10 ценных привычек командной строки UNIX, которые помогут избежать часто используемых изьянов и сделают вашу работу в коммандной строке более продуктивной. Каждая привычка более подробно описана ниже в списке хороших практик.

Усвойте 10 хороших привычек

Вод этот список:

  1. Делайте дерево каталогов в одну строку
  2. Изменяйте каталог - не переносите архив
  3. Обьеденяйте ваши комманды с управляемымы операторами
  4. Заключайте переменный в кавычки с осторожностью.
  5. Используйте управляющие последовательности (escape sequences) для управления длинным вводом
  6. Группируйте ваши комманды в список
  7. Используйте xargs вне find
  8. Знайте, когда “grep” следует делать подсчет и когда он должен шагнуть в сторону (не могу нормально перевести “it should step aside.”)
  9. Находите некоторые поля в выводе, не только строки (тоже как-то коряво)
  10. Перестаньте туннелировать cat (Stop piping cats). (просто жесть!)

Делайте дерево каталогов в одну строку

На листинге 1 показано одину с самых распространённых плохих привычек в UNIX: создание каталогов по-очереди.

Листинг 1. Пример №1: Создание дерева каталогов по-одному

~ $ mkdir tmp
~ $ cd tmp
~/tmp $ mkdir a
~/tmp $ cd a
~/tmp/a $ mkdir b
~/tmp/a $ cd b
~/tmp/a/b/ $ mkdir c
~/tmp/a/b/ $ cd c
~/tmp/a/b/c $

Именно по-этому быстрее всего использовать опцию -p команды mkdir и сделать все родительские каталоги вместе с их детьми одной коммандой. Но даже администраторы, которые знают об этой опции, всё ещё содают по-одной директории. Это стоит вашего времени, чтобы добросовестно выработать хорошую привычку:

Листинг 2. Пример №1: Создание дерева одной командой

~ $ mkdir -p tmp/a/b/c

Вы можете использовать даную опцию, чтобы создать весь комплекс каталогов, которые часто всего используется в скриптах, а не просто иерархию. Например:

Листинг 3. Пример №1: Создание комплекса каталогов одной командой

~ $ mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}

В прошлом, единственным оправданием для определения директории по отдельности было, что реализация mkdir не поддерживает этот вариант, но это не верно в большинстве систем. IBM, AIX ®, mkdir, GNU mkdir и другие, которые поддерживают Единую Спецификацию UNIX (Single UNIX Specification) теперь имеют эту опцию.

Для нескольких систем, которые до сих пор не имеют этой поддержки, можно использывать скрипт mkdirhier (смотрите в Resources), который является обёрткой для mkdir с этой опцией:

Листинг 3. Пример №1: Создание комплекса каталогов одной командой

~ $ mkdirhier project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}

Изменяйте каталог - не переносите архив

Другим плохим шаблоном является перенос .tar-архива в определённую директорию чтобы расспаковать. Вам не нужно этого делать. Вы можете расспаковать архив в любую директорию, которую пожелаете, с поммощью опции -С. Используйте опцию -С с именем каталога, когда расспаковываете архив:

Листинг 4. Пример №2: Использование опции -С при расспаковке архива

~ $ tar xvf -C tmp/a/b/c newarc.tar.gz

Привычка использывать -С является предпочительной, чем перемещение архива для расспаковки, изменение каталога и только потом расспаковка содержания архива - особенно если архив принадлежит ещё кому-то.

Обьеденяйте ваши комманды с управляемымы операторами

Вы, наверное, уже знаете, что в большинстве команднsх оболочек (shell), можно объединить команды в одной командной строке, поставив точку с запятой (;) между ними. Точка с запятой - это упрапляющий оператор shell (shell control operator), и хотя она полезна для связывания вместе несколько дискретных команд в одну командную строку, она не работает для всего. Например, предположим что вы используете точку с запятой для обьединения двух комманд, в которых правильно выполнение второй команды польностью зависит от успешного выполнения первой. Если первая команда не выполнилась так, как вы ожидали, то вторая команда всё равно выполнится, что неправильно. Вместо этого, используйте больше подходящие управляющие команды (некоторые с них описаны в этой статье). С тех пор, когда ваш shell их поддерживает, они стоят того, чтобы стать привычкой в использовании.

Выполнить команду, только если другая вернула нулевой статус

Используйте управляющий оператор && для обьединения двух комманд, чтобы вторая выполнилась только тогда, когда первая вернула только нулевой статус завершения (zero exit status). Другими словами, первая успешно выполнилась - вторая запустилась. Если же первая команда дала сбой, то вторая не запустится вообще. Например:

Листинг 5. Пример №3. Обьединение команд управляющими операторами

~ $ cd tmp/a/b/c && tar xvf ~/archive.tar

В этом примере архив ~/archive.tar расспакуется в каталог tmp/a/b/c, если только каталог существует. Если же каталога не существует, то команда tar даже не запустится.

Выполнить команду, только если другая вернула не нулевой статус возврата

Похожый оператор || обьединяет две команды, и запуск второй будет тогда, первая командв вернула не нулевой код возврата. Другими словами, когда первая команда успешна, то вторая не выполнится. Если произойдёт сбой первой команды, то выполнится вторая.Этот оператор часто используется для проверки существования каталога и создани его, если его нет:

Листинг 6. Пример №3: Обьединение команд управляющими операторами

~ $ cd tmp/a/b/c || mkdir -p tmp/a/b/c

Ви может также обьединять управляющие конструкции, описаные в этой части.

Листинг 7. Пример №3: Пример, обьединяющий управляющие операторы

~ $ cd tmp/a/b/c || mkdir -p tmp/a/b/c && tar xvf -C tmp/a/b/c ~/archive.tar

Заключайте переменный в кавычки с осторожностью.

Всегда будьте внимательны с shell expansion и именами переменных. Вцелом, вложить вызовы переменных в двойные кавычки хорошая идея, если только у вас есть веские причины не делать этого. Точно так же, если у Вас алфавитно-цифровым название переменной следует непосредственно за текстом, убедитесь , что заключили название переменной в фигурные скобки ({}), чтобы отличить её от ближайшего текста. Иначе, интерпритатор shell примет следуемый текст за имя переменной и, скорее всего, вернёт пустой результат. Листинг 8 содержит примеры разного квотирования переменных и их последствия.

Листинг 8. Пример №4: Квотирование и не квотирование переменных

~ $ ~ $ ls tmp/
a b
~ $ VAR=”tmp/*”
~ $ echo $VAR
tmp/a tmp/b
~ $ echo “$VAR”
tmp/*
~ $ echo $VARa


~ $ echo “$VARa”

~ $ echo “${VAR}a”
tmp/*a
~ $ echo ${VAR}a
tmp/a
~ $

Используйте управляющие последовательности (escape sequences) для управления длинным вводом

Вы уже, наверное, видели примеры кода, в котором backslash (\) продолжает длинную строку в следующей, и вы знаете, что большинство shell-оболочек рассматривают ваш ввод последовательных строк, присоединённых косой чертой, как одину длинную команду. Тем не менее, Вы не сможете воспользоваться этой функцией в командной строке, как часто, как вам хочется. Backslash особенно удобен, если ваш терминал не поддерживает multi-line wrapping должным образом или когда командная строка меньше чем обычно ( например, когда у вас длинный путь в приглашении). Backslash также полезен для лучшего понимания длинных строк, как показано на следующем примере:

Листинг 9. Пример №5: Использование / для длинного ввода

~ $ cd tmp/a/b/c || \
> mkdir -p tmp/a/b/c && \
> tar xvf -C tmp/a/b/c ~/archive.tar

Кроме того, следующие строки также работают:

Листинг 10. Пример №5: альтернативный пример использования / для длинного ввода

~ $ cd tmp/a/b/c \
> || \
> mkdir -p tmp/a/b/c \
> && \
> tar xvf -C tmp/a/b/c ~/archive.tar

Однако, вы разделяете вводимую строку на несколько, а shell всегда рассматривает её одну, потому что он всегда обрезает все слэшы и пробелы .

Примечание: В большенстве коммандных оболочек, когда вы нажмёте клавишу “Вверх”, текущая многострочная строка превратится в одну длинную.

Группируйте ваши комманды в список

Большинство командных оболочек имеют возможность группировать набор комманд в списки, таким образом чтобы вы могли передать их общий вывод в поток ( a pipeline) или переправить любые с потоков в одно место. Вы можете вообще делать это, управляя списком команд в подоболочке (subshell) или управляя списком команд в текущей командной оболочке.

Запуск списка команд в подоболочке (subshell)

Используйне одиночные скобки для указания списка команд в одной граппе. Это запустит команды в новом subshell и позволит вам передавать или собрать вывод, как показано в следующем примере:

Листинг 11. Пример №6: Запуск списка комманд в подоболочке

~ $ ( cd tmp/a/b/c/ || mkdir -p tmp/a/b/c && \
> VAR=$PWD; cd ~; tar xvf -C $VAR archive.tar ) \
> | mailx admin -S “Archive contents”

В этом примере, содержание архива расспаковывается в tmp/a/b/c/, а вывод из группы команд, в том числе перечень извлеченных файлов, отправляется по почте на адрес admin.

Использование подоболочки предпочительнее, когда вы в списке комманд переопределяете переменные окружения и не хотите, чтобы эти определения применились к текущей оболочке.

Запуск списка команд в текущей оболочке

Используйте фигурные скобки ({}) для указания списка команд группы для запуска в текущей оболочке. Убедитесь, что есть пробелы между скобками и командами или shell может неправильно их интерпритировать. Также, убедитесь, что последняя команда в гуппе заканчивается точкой с запятой, как в следующем примере:

Листинг 12. Пример №6: Запуск списка комманд в текущеё оболочке

~ $ { cp ${VAR}a . && chown -R guest.guest a && \
> tar cvf newarchive.tar a; } | mailx admin -S “New archive”

Используйте xargs вне find

Используйте инструмент xargs как фильтр, для эфективного использования результатов вывода команды find. Общим принцыпом этого является, что запуск find предоставит список файлов, удовлитворяущих некоторым критериям. Этот список передается в xargs, который затем запускает некоторые другие полезные команды с этим спиком файлов как аргумент, как в следующем примере:

Листинг 13. Пример класического использования xargs

~ $ find some-file-criteria some-file-path | \
> xargs some-great-command-that-needs-filename-arguments

Однако, не думайте, что xargs выступает помощиком find; это - один из тех недостаточно использованных инструментов, который, когда использование войдёт в привычку, вы захотите применять к всему, в том числе в следующих целях.

Получение списка, разделённого пробелами

В этом простом вызове, xargs выступает как фильтр, который получает ввод как список (каждый член с новой строки). Утилита вставляет членов списка в одну строку, разделённую пробелами:

Листинг 14. Пример вывода xargs

~ $ xargs
a
b
c
Control-D
a b c
~ $

Вы можете послать вывод любой утилыты, которая выводит имена файлов, через xargs для получения аргументов для утилиты, получающей имена файлов, как в следующем примере:

Листинг 15. Пример использования xargs

~/tmp $ ls -1 | xargs
December_Report.pdf README a archive.tar mkdirhier.sh
~/tmp $ ls -1 | xargs file
December_Report.pdf: PDF document, version 1.3
README: ASCII text
a: directory
archive.tar: POSIX tar archive
mkdirhier.sh: Bourne shell script text executable
~/tmp $

Команда xargs может большее, чем прохождение по именам файлов. Успользуйте её для получения текста в одну строку:

Листинг 16. Пример №7: Использование xargs для вывода текста в одну строку

~/tmp $ ls -l | xargs
-rw-r–r– 7 joe joe 12043 Jan 27 20:36 December_Report.pdf -rw-r–r– 1 \
root root 238 Dec 03 08:19 README drwxr-xr-x 38 joe joe 354082 Nov 02 \
16:07 a -rw-r–r– 3 joe joe 5096 Dec 14 14:26 archive.tar -rwxr-xr-x 1 \
joe joe 3239 Sep 30 12:40 mkdirhier.sh
~/tmp $

Будьте осторожны с xargs

Технически, существуют редкие ситуации, в которой вы могли бы получить неприятности при использовании xargs. По-умолчанию, символ конца файла - подчёркивание (_);если этот символ отправлен как единственный входящий аргумент, всё, что после него - игнорируется. В качестве меры предосторожности используйте -е флаг, который, без аргументов, отключает строку конца файла полностью.

Знайте, когда “grep” следует делать подсчет и когда он должен шагнуть в сторону

Избегайте отправки grep в канал (piping) wc -l, чтобы подсчитать количество строк вывода. Опция grep -c выводит количество строк, которые подпадают под шаблон, и основном быстрее чем канал на wc, как в следующем примере:

Листинг 17. Пример №8: Подсчёт строк с использование grep и без

~ $ time grep and tmp/a/longfile.txt | wc -l
2811

real 0m0.097s
user 0m0.006s
sys 0m0.032s
~ $ time grep -c and tmp/a/longfile.txt
2811

real 0m0.013s
user 0m0.006s
sys 0m0.005s
~ $

С добавлением фактора скорости, опция -c является лучшим способом сделать подсчёт. В ситуации с многими файлами, grep с параметром -c возвращает количество строк для каждого файла, по одному на строку, в это время как pipe с wc возвращает общее количество для всех файлов.

Однако, независимо от скорости работы, этот пример демонстрирует другую распространенную ошибоку, которую следует избегать. Эти методы подсчёта возвращают количество строк, которые содержат подходящий шаблон - и если это то, что вы ищете, то это прекрасно. Но, в случае, когда строки имеют множественные образцы вложений шаблона, этот метод не даст правильное количество найденых образцов. Для подсчёта количества использований, используйте wc в конце концов. Сначала, запустите команду grep с опцией -o, если ваша версия уё поддерживает. Этот параметр выводит только подходящий шаблон, один на строку, но не саму строку. Но вы не можете использовать её в вместе с параметром -c option, так что используйте wc -l для подсчёта строк, как показано в примере:

Листинг 18. Пример №8: Подсчёт подходящих шаблонов

~ $ grep -o and tmp/a/longfile.txt | wc -l
3402
~ $

В этом случае, вызов wc немножко быстрее, чем второй вызов grep с пустым шаблоном и подсчётом количества строк(как grep -c).

Находите некоторые поля в выводе, не только строки

Инструмент awk предпочтителен, чем grep, когда Вы хотите найти соответствия в только определенной области строк вывода и не только где-нибудь в строках.

В этом простейшем примере показано, как получить список только тех файлов, которые изменялись в декабре:

Листинг 19. Пример №9: Использование grep для поиска в спецефических полях

~/tmp $ ls -l /tmp/a/b/c | grep Dec
-rw-r–r– 7 joe joe 12043 Jan 27 20:36 December_Report.pdf
-rw-r–r– 1 root root 238 Dec 03 08:19 README
-rw-r–r– 3 joe joe 5096 Dec 14 14:26 archive.tar
~/tmp $

В этом примере, grep вывод строки в которых, время изменения в Dec, а так же хорошо выводит и файлы с именем Dec. Ведь, файл, такой как December_Report.pdf, подходит, даже если его изменяля в январе. Это возможно не то, что вы хотели. Для нахождения по шаблону в особенном поле, лучше использовать awk, где относительный оператор соответствует точной области, как в примере:

Листинг 20. Пример №9: Использование awk для поиска в спецефических полях

~/tmp $ ls -l | awk ‘$6 == “Dec”‘
-rw-r–r– 3 joe joe 5096 Dec 14 14:26 archive.tar
-rw-r–r– 1 root root 238 Dec 03 08:19 README
~/tmp $

Смотрите Ресурсы для лучшего понимания awk.

Перестаньте туннелировать cat

Одна с основных-но-общих ошибочного использования grep связана с отправкой в канал вывода cat в grep для поиска строки в файле. Это абсолбтно излишне и пустая трата времени, потому как утилиты, такие как grep, получают имя файла как аргумент. Вам просто ненадо использовать cat в этом случае, как и в примере:

Листинг 21. Пример №10: Использование grep с использованием cat и без

~ $ time cat tmp/a/longfile.txt | grep and
2811

real 0m0.015s
user 0m0.003s
sys 0m0.013s
~ $ time grep and tmp/a/longfile.txt
2811

real 0m0.010s
user 0m0.006s
sys 0m0.004s

~ $

Эта ошибка относится к множеству средств. Поэтому большинство инструментов принимают стандартный ввод в качестве аргумента с использованием дефиса (-), даже аргумент за использование cat для множественной вставки файлов в stdin часто не действительный. В дествительности, это только необходимо для связки с каналом нескольких фильтрующих параметров cat.

Вывод: Перенимайте хорошие привычки

Очень хорошо получить привычки командной строки для чего-то плохого в использовании. Вредные привычки замедляют вас и часто приводят к неожиданным ошибкам. Эта статья представляет 10 новых привычек, которые могут помочь Вам отказаться от многих из наиболее распространенных ошибок. Принятие этих хороших привычек является позитивным шагом на пути к улутшении навыков владения командной строки UNIX.

скопировано с .wpal

воскресенье, 20 января 2008 г.

Ubuntu Flash Install

материалы:
USB Flash Drive 1GB
ubuntu-7.10-desktop-i386.iso

вставляем флэшку в разъём...

запускаем терминал,
чтобы всё в терминале от суперюзера делать:

Код:
sudo su

смотрим как флэшка определилась:

Код:
fdisk -l

моя флешка определяется как sdg и раздел на ней sdg1
далее везде использованы эти имена.

размонтируем раздел:

Код:
umount /dev/sdg1

быстрое форматирование (на всякий случай):

Код:
dd if=/dev/zero of=/dev/sdX bs=512 count=1

установка программы ms-sys:

Код:
apt-get install ms-sys

восстановление MBR программой ms-sys:

Код:
ms-sys -s /dev/sdg

создание и изменение разделов:

Код:
fdisk /dev/sdg

n

p

1

жмём ENTER

+720M

a

1

t

6

n

p

2


жмём ENTER


жмём ENTER

w

форматирование разделов:

Код:
mkdosfs -n ubuntu710 /dev/sdg1

mkfs.ext2 -b 4096 -L casper-rw /dev/sdg2

установка утилит syslinux:

Код:
apt-get install syslinux mtools

запись syslinux на раздел sdg1 (непримонтированный):

Код:
syslinux -sf /dev/sdg1

примонтировать usb-drive (должно автомонтироваться при подключении usb-drive (раздел sdg1 монтируется как /media/ubuntu710)

примонтировать образ ubuntu-7.10 к /media/cdrom (пример показан для образа, находящегося в домашней папке):

Код:
mount -o loop ubuntu-7.10-desktop-i386.iso /media/cdrom

переходим на примонтированный образ:

Код:
cd /cdrom

копируем всё, что нужно на раздел на флэшке:

Код:
cp -rf casper disctree dists install pics pool preseed .disk isolinux/*
md5sum.txt README.diskdefines ubuntu.ico casper/vmlinuz casper/initrd.gz /media/ubuntu710/

возвращаемся в home:

Код:
cd /home

скачиваем нужный архив с сайта pendrivelinux.com:

Код:
wget pendrivelinux.com/downloads/U710fix.zip

распаковываем архив на флэшку:

Код:
unzip -o -d /media/ubuntu710/U710fix.zip

всё!


в параметрах boot в BIOS компьютера должна быть включена возможность загрузки с usb и эмуляция usb-drive как жёсткого диска
(example: emulate usb disk > as all fixed drives)

ubuntu на usb-drive может грузиться в live-режиме и в persistent-режиме (с сохранением изменений)

Установка любого Linux-дистрибутива прямо с жёсткого диска без записи DVD


Перевод статьи Install any Linux distro directly from hard disk without burning any DVD. Я вот решил переустановить систему (в какой раз уже?) и записывание на болванки мне очень не нравиться. Ставить с iso-образа намного интереснее и быстрее (я так думаю). Я перепробовал ставить систему с минимального образа и потом с интернет доставлять, а теперь попробую с iso.

Установка любого Linux-дистрибутива прямо с жёсткого диска без записи DVD

После того, как вы выкачали какой-то Linux-дистрибутив с Интернета, вы должны записать его на DVD, CD или несколько CD-дисков, чтобы происталировать его. В основном этот CD или DVD используется только раз после того лежит спокойно и, что хуже всего, почти каждый релиз Linux-дистрибутива выходит каждые 6 месяцев. И если вы имеете привычку обновлять систему с каждым новым релизом, то у вас должно быть дюжина ненужных дисков на комоде. Какие растраты дисков! Но благодаря одному трюку вы сможете инсталировать любой дистрибутив прямо в жёсткого диска без прожига образа на оптический диск. Необходимо только для этого трюка, чтобы у вас уже стояла операционная система. Это и понятно, ведь пока вы не загрузите свою машину, вы не сможете ничего проинсталировать; и вы не загрузитесь с диска Linux, потому что вы не записали такого ;). Тут я оперирую Microsoft Windows как преинсталированой операционной системой.

Почти все программы инсталяции Linux используют два файла для загрузки системы: ядро Linux и initial root file system (), которая содержит минимальный набор директорий, монтируемая раньше чем будет доступна коренная файловая система / . Эта initial root file system ещё называется Ram-диск (initrd). Ми должны использовать эти два файла, чтобы загрузить ваш PC. Приступим.

  1. Первым делом вам нужно скопировать ISO-файлы Linux на наш жёсткий диск (конечно, вы уже их имеете). Удостоверьтесь, что раздел FAT32, если дистро, который вы инсталлируете, не имеет поддержки чтения/записи на NTFS. Некоторые дистрибутивы требуют ISO-файл в корне раздела. Если вы скопируете его в папку, установщик может не найти его.
  2. Используйте Winrar для открытия ISO-файла (вам не надо распаковывать его). Теперь нам нужно два файла, о которых я говорил ранее. Файлы часто всего находятся в директории isolinux. Разные дистрибутивы могут размещать эти файлы в разных папках; вы должны просто найти их, но это не сложно. Эти два файла ещё по-разному называются в дистрибутивах. Файлы, которые вам надо найти и распаковать : (ядро показано зелёным, а Ram-диск - красным)
    Fedora:
    vmlinuz и initrd.img
    Suse: linux и initrd
    Mandriva: vmlinuz и all.rdz
    Ubuntu: vmlinuz и initrd.gz
    Gentoo: gentoo и gentoo.igz
    Knoppix: vmlinuz и initrd.img
    Slackware: bzImage и initrd.img
    Debian: vmlinuz и initrd.gz
  3. Потом вы должны распаковать эти два файла и скопировать в c:\boot (раньше надо было сделать папку “boot”)
  4. Теперь скачайте файл grub4dos отсюда. Распакуйте папку “boot” и файл “grldr” с скачанного zip-файла. В папке “boot” есть папка “grub“; скопируйте папку “grub” в c:\boot. Скопируйте файл “grldr” на c:\
  5. Откройте c:\boot\grub\menu.lst и добавте следующие строчки. (Подсказка: hd0 ссылается на первый жёсткий диск. Если вы имеете долше чем один диск, они будут называться hd1, hd2 и т.д. Замените hd0 правильным указателем на жёсткий диск если windows инсталирован на
    другом диске.) Замените файлы ядро_Linux и Ram_диск на те, которые используются в вашей системе. (те, которые вы скопировали в c:\boot)
    title Install Linux
    kernel
    (hd0,0)/boot/Linux_kernel
    initrd
    (hd0,0)/boot/Ram_disk
  6. Теперь вы должны добавить grub в ваш c:\boot.ini файл. Вы можете открыть boot.ini нахав на Start>Run (Пуск->Выполнить или нажать на клавиатуре Windows+R. прим. перев.) и набрать c:\boot.ini. Если Windows не разрешает изменять файл, то идите в Control Panel>System и нажмите вкладку Advanced. Теперь под Startup and Recovery нажмите Settings и в System Startup нажмите Edit. Откройте boot.ini и добавте эти строки в конец файла.
    C:\grldr=”Start GRUB”  
  7. Теперь всё готово, чтобы инсталировать Linux. Перегрузите свой PC и в окне загрузчика выберите “Start GRUB“. Это загрузит GRUB. С окна grub выберите “Install Linux”. Во время инсталяции, вас спросят о источнике инсталяции. Выберите жёсткий диск и потом выберите раздел жёсткого куда вы скопировали ISO-файл. Иногда вам потребуется указать полный путь к разделу и имя файла ISO. Где-то запишите его перед началом инсталяции.

Я сам тестировал это на Fedora, Suse и Mandriva и работает все без проблем. Я не имею сомнений по поводу того, что это заработает и на других дистрибутивах.
Обновление: dougfractal добавил, что это возможно и под Linux. Метод он описал так:

С консоли введите такие команды:
 sudo mkdir /distro
sudo chmod `whoami`:`whoami`
cp MYLINUX.iso /distro/distro.iso

Теперь распакуйте ядро_Linux и Ram_диск в /distro
Откройте /boot/grub/menu.lst

  #ADD NEW ENTRY#
title Install Linux
root (hdX,X)
kernel /distro/Linux_kernel
initrd /distro/Ram_disk

Перегрузитесь и выберите “Install Linux” из-под grub.

Взято с блога ".wpal"

пятница, 18 января 2008 г.

Установка Linux на коммуникаторы Blue Angel

From: http://mobiledevice.ru
Newsgroups: email
Date: Mon, 24 Apr 2007 14:31:37 +0000 (UTC)
Subject: Установка Linux на коммуникаторы Blue Angel

Оригинал: http://mobiledevice.ru/Blue-Angel-HTC-Operation-System-ustanovka-Linux.aspx


Для установки нужен сам коммуникатор, компьютер с загруженной системой
Linux (вполне подойдёт и LiveCD), кард-ридер, карта памяти (не более
чем на 1 Гб). Порядок действий:

1. Скачайте нужные файлы в каталог, к которому в дальнейшем можно
будет получить доступ из Linux:
http://gnulinux.biz/files/blueangel/sd/linux/zImage-2.6.12
http://gnulinux.biz/files/blueangel/sd/linux/initrd-2.6.12-hh2.gz
http://handhelds.org/moin/moin.cgi/BlueAngel?action=AttachFile&do=get&target=haret.exe
http://gnulinux.biz/files/blueangel/sd/linux/gpe-ba.tar.bz
http://gnulinux.biz/files/blueangel/sd/linux/startup.txt
http://handhelds.org/moin/moin.cgi/BlueAngel?action=AttachFile&do=get&target=autorun.exe

2. Отформатируйте карточку памяти.

3. Подключите кард-ридер к компьютеру с загруженной ОС Linux.

4. В консоли Linux запустите программу fdisk:

fdisk /dev/sda (исходя из предположения, что sda - это карточка памяти)


Если существует только /dev/sda1, то это означает, что карточка памяти
уже отформатирована и содержит раздел, который необходимо удалить:

fdisk /dev/sda1


Нажмите "p" для получения списка разделов и их номеров
Нажмите "d" для удаления раздела
Нажмите "w" для сохранения и выхода

Далее необходимо создать два раздела:

fdisk /dev/sda


Нажмите "n" для создания нового раздела
Нажмите "p" для выбора типа раздела "primary"

Нажмите Enter для подтверждения выбора начального положения раздела

Введите размер нового раздела "+30M"

Созданный раздел должен иметь тип файловой системы "FAT16" или
"FAT32", поэтому нажмите "t" для изменения типа раздела с "83 Linux"
на "FAT32"

Нажмите <> для сохранения и выхода

5. Аналогично создайте ещё один раздел (начальное положение раздела не
изменяйте, размер также оставьте предлагаемый по умолчанию, файловую
систему оставьте без изменений - ext3)

6. Отформатируйте созданные разделы:

mkfs.vfat /dev/sda1
mkfs.ext3 /dev/sda2


(для вашей системы команды могут быть другими)

7. Примонтируйте разделы:

mount -t vfat /dev/sda1 /mnt/sd0
mount -t ext3 /dev/sda2 /mnt/sd1


8. На первом разделе (который примонтирован в каталог /mnt/sd0)
необходимо создать каталоги linux и 2577. В первый каталог скопируйте
файлы zImage, initrd, startup and haret, во второй - autorun.exe

9. Распакуйте GPE в раздел с файловой системой ext3:

- смените каталог: cd /mnt/sd1
- распакуйте архив: tar xjvpf <католог-с-gpe>/gpe-ba.tar.bz2


САМ АРХИВ В РАЗДЕЛ EXT3 НЕ КОПИРУЙТЕ!!!

10. Выполните ряд финишных операций:

cd /
sync
umount /dev/sda1
umount /dev/sda2


11. Теперь достаточно вынуть карту памяти из кард-ридера, вставить её
в коммуникатор и перезагрузить коммуникатор. Linux должен запуститься
автоматически. Загружаться он будет долго, так что запаситесь
терпением.

Статья написана по материалам http://handhelds.org/moin/moin.cgi/BlueAngel

Взято с сайта "OpenNET.ru"

Ubuntu Flash Minimal

Здратвуйте. Началом моего поста пслужило желание, нет, даже потребность создать загрузочный USB flash диск с Ubuntu, на котором можно было бы делать изменения и оставлять их на носителе. Поскольку на сайте можно заказать Ubuntu, Kubuntu и Edubuntu, я выбрал именно Edubuntu, т.к. с него можно установить базовую ситему.

Итак, приступим:

1) Нам нужна флэшка (512Mb хватит, у меня больше не было) и собственно сам дистрибутив Edubuntu 6.06.
При загрузке с CD жмем F6 и пишем:
preseed/file=/cdrom/preseed/server.seed initrd=/istall/initrd.gz ramdisk_size=16384 root=/dev/ram rw quiet --
Загружаемся и устанавливаем базовую систему (без своп).

2)
Устанавливаем оконный менеджер, я выбрал blackbox. Для этого нам понадабится установить xserver-xorg, xinit, xfonts-base, xterm (есть на диске) и сам blackbox (его нужно скачать предварительно с репозитария ubuntu или настроить apt-get).

3)
Теперь добавим blackbox в автозагрузку. В домашей папке в файле .bash_profile, добавляем:
if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then
startx /usr/bin/blackbox
fi
Все. Flash диск с Убунтой готов!

4)
Дополниние.
4.1 Проблема с русификацией консоли решается (если настроен интернет):
apt-get install console-cyrillic
если интернета нет, то устанавливаем console-terminus и console-cyrillic, под root'ом запускаем: cyr
4.2 Автозагрузка. Без забивки логина и пароля. Устанавливаем пакет mingetty (на диске его нет). В /etc/inittab меняем строку вида
1:2345:respawn:/sbin/getty 38400 tty1
на
1:2345:respawn:/sbin/mingetty --autologin user tty1

Взято с блога "Убунтовщик"