Использование Inferno
Установка 3-й версии Inferno в среде 4-й Plan 9
Чтобы получить функционирующую 3-ю (стабильную на данный момент) версию виртуальной операционной системы Inferno в среде текущей, 4-й системы Plan 9, вам необходимо:
Первое. Загрузить дистрибутив системы inferno.tgz (15 MB) и платформо-зависимый компонентный пакет Plan9.tgz (2,3 MB) — из состава 3-го релиза (от 3 июня 2003 года), а также экспериментальное обновление от 15 июля 2002 года: inferno.tgz (3,6 MB) и Plan9.tgz (3,2 MB).
Второе. Извлечь сначала первую пару inferno.tgz и Plan9.tgz, а затем вторую, скажем в каталог /tmp/dist. У вас должно получится дерево, подобное следующему:
/tmp/dist/install/Plan9/992874070.gz /tmp/dist/install/Plan9 /tmp/dist/install/Plan9.rc /tmp/dist/install/inferno/992875131.gz /tmp/dist/install/inferno /tmp/dist/install /tmp/dist/Plan9/386/bin/emu /tmp/dist/Plan9/386/bin /tmp/dist/Plan9/386 /tmp/dist/Plan9 /tmp/dist/updates/20020715/Plan9/1026735350 /tmp/dist/updates/20020715/Plan9 /tmp/dist/updates/20020715/emu4e /tmp/dist/updates/20020715/applybase /tmp/dist/updates/20020715/applyplat /tmp/dist/updates/20020715/inferno/1029339552 /tmp/dist/updates/20020715/inferno /tmp/dist/updates/20020715/install.tgz /tmp/dist/updates/20020715/net_update.html /tmp/dist/updates/20020715/20020628.ps.gz /tmp/dist/updates/20020715/20020628.pdf /tmp/dist/updates/20020715/20020715.txt /tmp/dist/updates/20020715/unpacktools /tmp/dist/updates/20020715 /tmp/dist/updates /tmp/dist/dis/emuinit.dis /tmp/dist/dis/gunzip.dis /tmp/dist/dis/install/arch.dis /tmp/dist/dis/install/archfs.dis /tmp/dist/dis/install/bufio.dis /tmp/dist/dis/install/ckproto.dis /tmp/dist/dis/install/create.dis /tmp/dist/dis/install/info.dis /tmp/dist/dis/install/inst.dis /tmp/dist/dis/install/install.dis /tmp/dist/dis/install/proto.dis /tmp/dist/dis/install/wdiff.dis /tmp/dist/dis/install/wrap.dis /tmp/dist/dis/install/proto2list.dis /tmp/dist/dis/install/wrap2list.dis /tmp/dist/dis/install /tmp/dist/dis/lib/arg.dis /tmp/dist/dis/lib/bufio.dis /tmp/dist/dis/lib/daytime.dis /tmp/dist/dis/lib/inflate.dis /tmp/dist/dis/lib/readdir.dis /tmp/dist/dis/lib/string.dis /tmp/dist/dis/lib/styxlib.dis /tmp/dist/dis/lib /tmp/dist/dis /tmp/dist/LICENCE /tmp/dist/mnt/wrap /tmp/dist/mnt /tmp/dist/n/remote /tmp/dist/n /tmp/dist/tmp /tmp/dist
Третье. Заменить эмулятор emu (18.06.2001) на emu4e (15.07.2002):
mv /tmp/dist/Plan9/386/bin/emu /tmp/dist/Plan9/386/bin/emu_ cp /tmp/dist/updates/20020715/emu4e /tmp/dist/Plan9/386/bin/emu
Четвертое. Выполнить несколько подготовительных операций для Plan 9:
- Отключить проверку разрешений ФС («disk/kfscmd allow»).
- Добавить пользователя inferno и группу inf, включив строки:
- Чтобы Ken's File System перечитала файл /adm/users, дать команду «disk/kfscmd user».
- Создать домашний каталог нового пользователя:
mkdir /usr/inferno chgrp inf /usr/inferno chgrp -u inferno /usr/inferno
3:inferno:inferno: 10003:inf:inferno
в файл /adm/users (убедитесь, что первые числа не совпадают с уже использующимися там).
Пятое. Запустить установочный сценарий rc:
rc /tmp/dist/install/Plan9.rc -u /usr/inferno
Шестое. Включить проверку разрешений ФС («disk/kfscmd disallow»), добавить строку
bind -a /usr/inferno/Plan9/$cputype/bin /bin
в ваш lib/profile, и перезагрузить систему.
О том, как сделать (со)существование более комфортным
Рассмотрим несколько аспектов добавления некоторой доли удобства эксплуатации Inferno в Plan 9.
- Чтобы обеспечить Inferno доступ ко внешней файловой системе, запускайте emu с ключом -G.
- Для того чтобы функционировал буфер вырезать/вставить между Plan 9 и Inferno,
вставьте строку
bind /n/local/dev/snarf /chan/snarf
в файл /usr/inferno/lib/wmsetup. ^C и ^V могут использоваться для вырезки и вставки адресов в Charon. - В целом (и общем) оконный менеджер удобно запускать посредством сценария (скажем, под названием wm) вида:
#!/bin/rc rfork n echo scroll > /dev/wctl echo -n emucons $pid > /dev/label exec emu -G f/fonts/misc/unicode.6x13.font -g700x650 $* /dis/sh.dis -c '{ bind -c ''#U*'' /n/local wm/logon -u inferno sh -i }'
#!/bin/rc rfork n exec emu -G -g750x680 $* /dis/sh.dis -c '{ bind -c ''#U*'' /n/local charon }'
Создание Inferno, работающей в режиме собственной системы команд
Для построения native-версии Inferno, т.е., выполняющейся на «голой» аппаратуре Inferno, естественно, прежде всего требуется доступ к исходным текстам сей ОС. Благодаря выходу ее 4-й версии (Inferno Fourth Edition — I4E), безвозмездно распространяющейся на условиях либеральной лицензии open source типа, с этим проблем не должно возникнуть.
В последующем повествовании предполагается, что у вас наличествует разархивированная копия CD-образа I4E, либо файловая иерархия, которая была сформирована из содержимых отдельных пакетов-компонентов, как то: обязательного «дуэта» inferno.tgz–<целевая_машина>.tgz, плюс os.tgz, src.tgz и utils.tgz.
Первичная конфигурационная информация о сборке I4E овеществлена в одном файле — mkconfig, размещенном в корневом каталоге дерева исходных текстов — именно им и следует сначала заняться. Его первые несколько строк имеют вид, подобный приведенному ниже.
# On Nt systems, the ROOT path MUST be of the form `drive:/path' ROOT=/Users/pip/inferno20040527 # # Specify the flavour of Tk (std for standard builds) # TKSTYLE=std # # Except for building kernels, SYSTARG must always be the same as SYSHOST # SYSHOST=Plan9 # build system OS type (Hp, Inferno, Irix, Linux, Nt, Plan9, Solaris, MacOSX, Myrmigki) SYSTARG= Inferno # target system OS type (Hp, Inferno, Irix, Linux, Nt, Plan9, Solaris, MacOSX) OBJTYPE=386 # target system object type (s800, mips, 386, arm, sparc, power, superH)
Вам необходимо скорректировать значения переменных ROOT, SYSHOST, SYSTARG и OBJTYPE. ROOT представляет собой абсолютное путевое имя корня дерева исходных текстов I4E в вашей файловой системе. SYSHOST является системной архитектурой машины, в среде которой будет выполняться построение. Данная переменная всегда указывает на архитектуру «гостевой» ОС, ее значение устанавливается с использованием строк: «Hp», «Irix», «Linux», «Nt», «Plan9», «Solaris», «MacOSX». Не обращайте внимания на комментарий. SYSTARG — это архитектура целевой ОС, подлежащей компиляции; для сборок native-версии I4E присвойте переменной значение «Inferno». И наконец, переменная SYSHOST отвечает за целевую аппаратную архитектуру CPU; к примеру, сборка «родного Ада» для PC-семейства требует ее установки в «386».
На момент написания текущей заметки ядро Inferno, работающей в режиме собственной системы команд, возможно было построить только посредством компилятора C производства Bell Labs (например, Plan 9 C-компилятора). Убедитесь, что данное инструментальное средство находится в вашем распоряжении в функционирующем состоянии. C-компилятор включается в дистрибутив I4E, велика вероятность, что бинарная версия его у вас уже есть, в противном случае вы можете построить все обязательные для компиляции утилиты с помощью команды «mk install», выполненной в корне дерева исходных текстов системы. Бинарные файлы обычно помещаются по адресу $ROOT/$SYSHOST/$OBJTYPE/bin, например, Plan9/386/bin. Полезно добавить этот каталог к значению путевой переменной «гостевой» ОС.
С тем чтобы создать ядро, переместитесь в каталог os/pc (ядро для PC, для iPAQ — os/ipaq1110) и дайте команду mk. Это инициирует построение ядра I4E и всех необходимых библиотек. Результирующее ядро будет находится в файле «iXXX», например, конфигурационному файлу «pc4e» (PC-ядро) отвечает «ipc4e». Для использования в загрузочных дискетах последний понадобится поддать компрессии (gzip'ированию). Описанный ниже загрузчик «умеет» распознавать и извлекать ядро из архива.
Простейший способ обзавестись загрузочной дискетой или CD с Inferno состоит в… использовании загрузочного диска Plan 9. Причиной тому служит тот факт, что начальный загрузчик Plan 9 обладает информацией о том, как осуществлять «бутинг» ядер Inferno.
Сперва на сайте разработчиков Plan 9 получите загрузочный диск сей системы. Выбор конфигурации не имеет сколько-нибудь существенного значения, поскольку, в сущности, загрузочный диск Plan 9 является DOS-образом и вам придется очистить его от большинства файлов, в том числе и конфигурационных. Далее подмонтируйте образ на дискету, либо просто перепишите его туда. Замените файл 9pcflop.gz на ipc4e.gz. Следующий этап заключается в правке plan9.ini: скорректируйте переменную bootfile, чтобы та указывала на место размещения ядра I4E. Таким образом, после редактирования минимальный plan9.ini будет иметь вид:
monitor=multisync75 vgasize=640x480x8 mouseport=ps2 bootfile=fd0!dos!ipc4e.gzЕсли вашей целью было создание загрузочной дискеты, то вы ее успешно добились и теперь используя ее можете загружать свою машину. В случае, ежели вам «подавай» загрузочный CD, то вам следует воспользоваться только что приготовленной дискетой как образом начального загрузочного сектора для формата «бутовых» CD El Torito. За дополнительной информацией по этой теме обращайтесь к соответствующим руководствам эксплуатируемых вами программных средств CD-«прожига» (например, mkisofs в среде Unix или Easy CD Creator — в Windows варианте).
© Перевод на русский язык, Андрей
С. Кухар, 2004
Последняя модификация 13.06.2004