Рубрика:
Администрирование /
Продукты и решения
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
АНТОН БОРИСОВ
В яблочко! Краткий обзор ОС Darwin 7.0 на платформе x86 (Mac OS X 10.3 Jaguar)
Полгода прошло с момента выхода в свет последнего релиза упомянутого в заголовке продукта. Президент Apple Стив Джобс подтвердил, что MacOSX действительно можно запустить на x86-платформе [1]. Давайте разберемся, что же может привлечь потенциального пользователя/администратора, помимо легендарного названия фирмы Apple Computer? В первую очередь, ориентирование компании на постепенное расширение своей продукции. Как известно, на протяжении своей истории операционные системы фирмы Apple работали только на оборудовании самой Apple. Отчасти это правильно. Приходится меньше волноваться о вопросах совместимости аппаратного и программного обеспечения. В то же время это и откровенный тупик в развитии.
Что же из себя представляет Darwin? Если коротко – это некое ядро операционной системы MacOSX, оно состоит из 5 главных компонентов: микроядро Mach, BSD-подсистема, файловая система, сетевая подсистема и система ввода-вывода (I/O Kit).
- Микроядро Mach занимается распределением вычислительных ресурсов, защитой памяти, обменом сообщений между процессами.
- Вокруг микроядра существует «обертка» из POSIX API, абстрактная файловая система и сетевая подсистема. Многое в микроядре заимствовано из 4.4 BSD-Lite2, соответственно модель процессов, система безопасности, потоковая поддержка покажутся знакомыми всем, кто работал с BSD-системами.
- Файловая система поддерживает как UNIX (UFS), так и «родную» маковскую файловую систему (HFS).
- TCP/IP-стек основан на проверенном временем BSD-коде.
- Объектно-ориентированная система ввода/вывода представляет развитую инфраструктуру для управления драйверами устройств.
К сожалению, графическая подсистема MacOSX (Quick Time, OpenGL, Quartz), пользовательский интерфейс (Aqua) не присутствуют в системе. Хотя и без них Darwin является уже полноценной ОС. Более подробно об истории возникновения Darwin см. [2].
Дискутировать относительно открытости продуктов самой фирмы Apple можно долго, однако нас в первую очередь должно волновать несколько моментов:
- списки совместимости с оборудованием (так называемые hardware compatibility list [3]);
- знание структуры *BSD-систем;
- потребность в использовании данной ОС в обучающем процессе на производстве.
Насчет первого пункта сильно огорчаться не следует, т.к. система стартует и работает на более-менее современной x86 машине. В общем-то, Intel Celeron 366, 128 Мб памяти должно хватить для ознакомления. Также следует обзавестись одной из следующих сетевых карт: 3Com 3c90x, Intel 8255x, Broadcom 570x, Realtek 8139, Dec 21x4 (она же Tulip). Встроенные сетевые карты, к сожалению, не поддерживаются. Видеокарта должна работать в VESA-режиме.
Для начала возьмем дистрибутив с сайта OpenDarwin [4]. Он из себя представляет упакованный gzip-образ, который потом надо записать на компакт-диск. Размер упакованного образа составляет 430 Мб.
wget -ct0 http://opendarwin.org/downloads/darwin-701.iso.gz
gzip -d darwin-701.iso.gz
cdrecord -v darwin-701.iso
Для дальнейшей работы потребуется пустой жесткий диск размером не более 2 Гб или такого же объема раздел.
Установленная система занимает примерно 1 Гб. Оставшееся место будем использовать для сборки необходимых пакетов.
Настраиваем загрузку с компакт-диска, и после определения оборудования ядром ОС мы увидим приглашение выбрать тот диск, на который хотим поставить операционную систему.
"1) Auto-partition the disk (Destroys all disk contents)" "2) Manually partition the disk using fdisk" "3) Use existing partitions" |
Пункт 1 предназначен для установки на пустой диск. В случае, когда не надо иметь на диске несколько систем, выбирайте его. Пункт 3 предназначен для случая, когда место заранее выделено и размечено под операционную систему Darwin (ее идентификатор 0xA8, см. далее по тексту).
Если вам не подошли пункты 1 или 3, тогда вспоминаем, что настоящие герои всегда идут в обход и выбирают самый легкий путь. В целом разметка вручную не так и страшна, как кажется на первый взгляд.
Выбираем пункт 2. Для начала следует ознакомиться с командами fdisk данной системы.
Правильно, нажимаем слово «help» и читаем, что есть в меню. Команд немного, поэтому можно набирать не полную версию, а, например, сокращать до 2 начальных букв. То есть вместо «help» писать «he».
Команды прочитаны, пора выделить место под наше сегодняшнее яблочко. Распечатаем содержимое MBR диска, на который будем ставить ОС. Для этого подаем команду «print». Видим теперь, где находятся разделы и свободное место. Для редактирования свободного места подадим команду «edit ID», где ID – это номер раздела, предположим под номером 2 (то есть на текущем диске первичный раздел номер 2). Процедура выбора необходимого размера для нового раздела не составит, я надеюсь, особого труда. Отмечу, что размер считается в секторах, а не в килобайтах. Идентификатор файловой системы для Darwin имеет код 0xA8 (Darwin UFS).
Затем следует обновить информацию в MBR (Master Boot Record). Если вы ставите на чистый диск, то в MBR никакого загрузчика нет. Поэтому следует записать в него штатный, идущий в комплекте с OpenDarwin. В случае когда вы устанавливаете на отдельный раздел, все равно придется перезаписать MBR. В этом нет ничего страшного, т.к. дальше в статье разъясняется на примере LILO, как сделать загрузку нескольких операционных систем.
Для этих целей предусмотрена команда «update». После этого запишем в MBR непосредственно сведения о разделе, в котором будет жить наша «яблочная» операционная система. Сделаем это с помощью команды «write». Следует помнить, что в MBR записывается новый загрузчик, поэтому если у вас стоял LILO, GRUB или что-то аналогичное, то он будет просто-напросто переписан загрузчиком от Darwin. У меня используется LILO, поэтому я просто добавил в /etc/lilo.conf следующую строчку:
# DarwinOS begins
other = /dev/hdd2
label = DarwinOS
# DarwinOS ends
И запустив /sbin/lilo, перезаписываю MBR. Теперь при старте можно будет выбрать загрузку с раздела hdd2, где обитает OpenDarwin.
Всё. Выставим флаг активности раздела (команда «active ID», где ID – опять-таки нужный нам номер раздела). И завершим разметку подав команду «exit».
После этого осталось дождаться, чтобы установились пакеты, входящие в состав компакт-диска. Как говорится, возьмите чай, кофе – сахар по вкусу.
В ходе установки внимание обращает тот факт, что все пакеты находятся в упакованном виде. Сжаты они с помощью bzip2. После установки истинно «яблочных» пакетов, таких как AppleUSBAudio, следом идут пакеты с до боли знакомыми названиями. Согласитесь, что такие строчки, как apache-670tar.bz2, bind9-7tar.bz2, gcc-1495tar.bz2, вам о чем-то говорят. В этом нет ничего удивительного, т.к. система, как вы, наверное, слышали, базируется на BSD.
Большинство утилит, присутствующих в системе, хорошо знакомы людям, постоянно работающим в Open/Net/FreeBSD, да и тем, кто когда-либо занимался сборкой программ под UNIX.
Вернемся к нашему яблоку. Перегружаемся, не забываем вытащить из привода компакт-диск. Далее загрузка будет происходить с нашего жесткого диска.
Вот несколько интересных, на мой взгляд, строк, которые можно наблюдать при старте системы. Ваше аппаратное обеспечение отличается от моего, но по аналогии можете сами проследить отличия.
Kernel virtual space from 0x0 to 0x40000000. Available physical space from 0x727000 to 0x10000000
AppleSMBIOS: socketDesignation = SOCKET A AppleSMBIOS: processorType = 0x3 AppleSMBIOS: processorFamily = 0x1 AppleSMBIOS: manufacturer = AuthenticAMD AppleSMBIOS: processorVersion = AMD Athlon(TM) XP 1700+ AppleSMBIOS: voltage = 0x8e AppleSMBIOS: externalClock = 0x85 AppleSMBIOS: maximumClock = 0x8ca AppleSMBIOS: currentClock = 0x5ba
AppleGenericPCATADriver: Port 0x1f0, IRQ 14 AppleGenericPCATADriver: Port 0x170, IRQ 15
BSD root: disk1s2, major 14, minor 9 hfs_mount: invalid HFS+ sig 0x0000
Apple3Com3C90x: 3Com EtherLink 3C905C Port 0xd800 IRQ 11 Apple3Com3C90x: Ethernet address 00:01:03:d1:f9:7c |
Итак, строка externalClock = 0x85 означает, что шина работает на частоте 133 МГц (переведите цифры в десятичное представление). Строка currentClock = 0x5ba разъясняет, что текущая тактовая частота равна 1466 МГц, а максимальная частота для этого типа процессора равна 2250 МГц (maximumClock = 0x8ca).
Стоит разъяснить, откуда появляется надпись «hfs_ mount: invalid HFS+ sig 0x0000». Вы помните, когда мы ставили идентификатор раздела, то поставили 0xA8 (Darwin UFS). В связи с чем делаем вывод, что корневой раздел у нас отформатировался в UFS-формате. Ничего страшного, кроме досадного факта, что файловая система у нас получилась нежурналируемая. Для того чтобы корневая файловая система была в HFS+ формате, при начальной разметке диска следует ставить идентификатор 0xAF (вместо 0xA8). Перевести систему из UFS в HFS+ пока не представляется возможным.
Процесс загрузки ОС кардинально не отличается от процесса загрузки системы на FreeBSD. Знакомые конфигурационные файлы в /etc (rc, rc.boot, rc.common, fstab, syslog.conf и т. д.).
Итак, перед нами приглашение на вход в систему. Заходим под пользователем root (пароль изначально не установлен). Что необходимо сделать на этом этапе? Попробуем поднять сеть? Давайте сделаем!
Даем команду:
# ifconfig
lo0: flags=8049 mtu 16384 inet6 ::1 prefixlen 128 inet6 fe80::1 prefixlen 64 scopeid 0x1 inet 127.0.0.1 netmask 0xff000000 gif0: flags=8010 mtu 1280 stf0: flags=0<> mtu 1280 en0: flags=8863 mtu 1500 ether 00:01:03:d1:f9:7c media: autoselect (100baseTX ) status: active supported media: 10baseT/UTP 10baseT/UTP autoselect 10 0baseTX 100baseTX |
Ага, вот и наша сетевая карта (интерфейс en0). Есть два пути – правильный и не очень правильный. Чтобы прописать в Darwin IP-адрес для интерфейса, в /etc/ надо создать файл iftab. Структура его следующая:
en0 inet 10.0.0.10 netmask 255.255.255.0 up
где 10.0.0.10 – IP-адрес, 255.255.255.0 – маска сети, «up» – интерфейс при загрузке поднять.
Стоит отметить, что файла /etc/rc.conf в Darwin просто нет. Поэтому вписать информацию о сетевых адресах по аналогии с FreeBSD не получится.
Так вот, правильный путь не работает. Поэтому либо пропишем в /etc/rc.common наш сетевой адрес (для этого найдите функцию CheckForNetwork() – в ее теле и надо прописать), либо идем в системный каталог автозагрузки. Его полный путь – /System/Library/StartupItems. Каталог, отвечающий за сеть, именуется Network.
Файл, который необходимо отредактировать, совпадает с названием каталога (его имя тоже Network). Обратите внимание, что на нем установлены биты на исполнение.
# cat Network
#!/bin/sh
##
# Configure network interfaces and host name
##
. /etc/rc.common
StartService ()
{
ConsoleMessage "Initializing network"
ipconfig waitall > /dev/null 2>&1
if [ "${IPV6:=-YES-}" = "-NO-" ]
then
sysctl -w net.inet6.ip6.auto_on=0 > /dev/null
ip6 -x
fi
if [ "${IPFORWARDING:=-NO-}" = "-YES-" ]
then
sysctl -w net.inet.ip.forwarding=1 > /dev/null
else
sysctl -w net.inet.ip.forwarding=0 > /dev/null
fi
ifconfig en0 10.0.0.10 netmask 255.255.255.0
}
StopService ()
{
return 0
}
RestartService ()
{
return 0
}
RunService "$1"
Вот так выглядит файл Network на моей машине. Добавленная строка выделена красным цветом.
Небольшое уточнение, выясненное в ходе настройки. При переходе на новую систему не надо забывать, что структурно Darwin не отличается от FreeBSD или, скажем, Linux в плане загрузки модулей. Что я хочу этим сказать. Если у вас сетевая карта опознана, то Darwin подгрузит для нее модуль. Как только модуль подгружен, то можно выставлять IP-адрес и маску. В общем, если выставляете IP-адрес в один из rc-файлов, будьте внимательны.
Вставляйте строку после загрузки модулей ядра (они загружаются демоном kextd).
На этом этапе сеть у нас готова. Правда, развертка монитора может раздражать. Мы ведь работаем в VESA-режиме. Вертикальная развертка 60 Hz.
Давайте зададим текстовый режим консоли. Для этого редактируем файл /Library/Preferences/SystemConfiguration/com.apple.Boot.plist.
В оригинале он выглядит так.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/P
ropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string> -v</string>
<key>Boot Graphics</key>
<string>Yes</string>
<key>APM</key>
<string>Yes</string>
</dict>
</plist>
Да, забыл сказать. Почти все конфигурационные файлы в Darwin хранятся в xml-формате. Что мы сейчас и видим.
Для текстового режима необходимо поменять параметр Boot Graphics с Yes на No. Со следующей загрузки будет использоваться текстовый режим.
Добавим теперь сервисы ftp, telnet. Редактируем файл /etc/inetd.conf, удаляем ненужные символы, ставим комментарии перед нужными нам службами.
Посылаем сигнал, чтобы демон inetd перечитал свои настройки.
killall -1 inetd
Отлично. Службы появились.
Теперь задумаемся, а может, нам еще нужен и веб-сервер? А DNS-сервер? Что ж, пробовать, так все и сразу.
Чтобы запускать указанные и некоторые другие службы, при старте Darwin существует файл /etc/hostconfig:
# cat /etc/hostconfig
# /etc/hostconfig
##
# This file is maintained by the system control panels
##
# Network configuration
HOSTNAME=DarwinOS
# Services
AUTOMOUNT=-NO-
CUPS=-NO-
IPFORWARDING=-NO-
IPV6=-YES-
NETINFOSERVER=-NO-
NISDOMAIN=-NO-
RPCSERVER=-YES-
QTSSERVER=-YES-
WEBSERVER=-YES-
DNSSERVER=-NO-
COREDUMPS=-NO-
VPNSERVER=-NO-
Если параметр установлен в -YES-, тогда при старте указанные службы будут запущены.
Запуском apache (строка WEBSERVER=-YES-) занимается файл /System/Library/StartupItems/Apache/Apache.
Для DNS-сервера выделен файл /System/Library/Startup Items/BIND/BIND. В целом прослеживается аналогия со структурой системных файлов, например, как в Linux Slackware. В последней скрипты, запускающие определенный сервис, называются /etc/rc.d/rc.ServiceName.
Строка MAILSERVER предназначена для почтовой службы postfix, TIMESYNC – для синхронизации времени, CUPS – для сервиса, отвечающего за печать, SMBSERVER – samba-сервис, добавим самостоятельно чуть позднее.
Картина вырисовывается следующая. Сначала отрабатываются файлы /etc/rc*, а затем – соответствующие файлы в /System/Library/StartupItems.
Чтобы запустить свой сервис, необходимо создать в /System/Library/StartupItems директорию с названием сервиса. В ней должны находиться: исполняемый файл, совпадающий с названием только что созданной директории и информационный файл StartupParameters.plist.
Давайте посмотрим, как создать скрипт сервиса, отвечающего за старт samba-сервера.
#!/bin/sh
# Include system wide configuration options
. /etc/rc.common
# Start SMB services
if [ "${SMBSERVER:=-NO-}" = "-YES-" ]; then
ConsoleMessage "Starting SMB services"
/usr/sbin/smbd -D
/usr/sbin/nmbd -D
fi
Файл StartupParameters.plist:
{
Description = "smb file server";
Provides = ("Samba");
Requires = ("Resolver");
OrderPreference = "None";
Messages =
{
start = "Starting Samba";
stop = "Stopping Samba";
};
}
Вставляем в файл /etc/hostconfig строчку SMBSER-VER=-YES- и в дальнейшем надо будет выделить samba-ресурсы (файл /etc/smb.conf).
Так, со службами все понятно. Установим локальное время в системе.
cd /etc
ln -s /usr/share/zoneinfo/Europe/Moscow localtime
Для необходимого нам hostname следует подправить файл /etc/rc.boot. Вместо строки по умолчанию «hostname localhost» вставим «hostname DarwinOS».
Теперь мы рассмотрим концепцию NetInfo, реализованную в Darwin. Система может искать информацию как в файлах службы NetInfo, так и в «плоских» («plain text») файлах (/etc/fstab, /etc/passwd и др.).
Для добавления пользователя, существует утилита niutil (NetInfo Util). С помощью этой же утилиты настраивается большая часть системы.
niutil -create / /users/Bob
niutil -createprop / /users/Bob shell /bin/tcsh
niutil -createprop / /users/Bob realname UncleBob
niutil -createprop / /users/Bob home /Users/Bob
niutil -createprop / /users/Bob _shadow_passwd
Комментарии, надеюсь, излишни? Сначала мы создали объект Bob в иерархии /users, а затем добавили этому объекту свойства. Добавить добавили, но надо и создать ему домашний каталог.
cd /Users
mkdir Bob
chown -R Bob:wheel Bob
Теперь у Bob домашняя директория, да и сам он получился по умолчанию в группе wheel. Можно переделать, добавив через niutil пользователю uid и gid.
Для получения списка объектов в иерархии NetInfo выполним команду:
niutil -list . /
Получим список корневых иерархий. Для просмотра объекта resolver (аналог /etc/resolver):
niutil -read . /locations/resolver
Создадим запись в объекте resolver:
niutil -createprop . /locations/resolver nameserver 10.0.0.100
Всю базу NetInfo можно просмотреть:
nidump -r / / > nidump.txt
Приступаем к заключительной части нашей статьи. Готовимся к прыжку в окна X-сервера.
В Darwin он называется XDarwin (это портированный в Mac OS проект XFree86). В системе обнаруживается только один оконный менеджер. Это twm.
Для запуска twm создадим в домашней директории файл .xinitrc:
# cat ~/.xinitrc
/usr/X11R6/bin/xterm & /usr/X11R6/bin/twm |
Не забываем, что он должен иметь установленным исполняемый бит.
# chmod +x .xinitrc
А теперь в окна! То есть в X-сервер.
# startx
Как-то непривычно, не правда ли?
Давайте поменяем twm на другой менеджер. Например, blackbox. Сказано – сделано.
wget -ct0 http://prdownloads.sf.net/blackboxwm/blackbox-0.65.0.tar.gz
mkdir ~/sources
mv blackbox-0.65.0.tar.gz sources
tar xzvf blackbox-0.65.0.tar.gz
cd blackbox-0.65.0
./configure --prefix=/usr/local/blackbox
make && make install
Меняем .xinitrc.
echo “/usr/local/blackbox/bin/blackbox” > ~/.xinitrc
Теперь, как мне кажется, намного симпатичнее.
Большую часть приложений придется собирать из исходников. Кому нравится GNOME, нет проблем. Дело вкуса. Для любителей клубнички даже существует проект darwine, запуск windows-приложений под Darwin (небезызвестный родоначальник – проект wine).
Пару слов о модулях, упомянутых в начале статьи. Просмотр информации о загруженных модулях:
# kextstat
Index Refs Address Size Wired Name (Version) 1 1 0x0 0x0 0x0 com.apple.kernel (7.0) 2 1 0x0 0x0 0x0 com.apple.kpi.bsd (7.0) 3 1 0x0 0x0 0x0 com.apple.kpi.iokit (7.0) 4 1 0x0 0x0 0x0 com.apple.kpi.libkern (7.0) 5 1 0x0 0x0 0x0 com.apple.kpi.mach (7.0) 10 29 0x0 0x0 0x0 com.apple.kernel.6.0 (6.9.9) 11 1 0x0 0x0 0x0 com.apple.kernel.bsd (6.9.9) 12 1 0x0 0x0 0x0 com.apple.kernel.iokit (6.9.9) 13 1 0x0 0x0 0x0 com.apple.kernel.libkern (6.9.9) 14 1 0x0 0x0 0x0 com.apple.kernel.mach (6.9.9) 16 2 0x21279000 0x49000 0x48000 com.apple.driver.AppleACPIPlatform (1.0.0d4) <15 10> 17 0 0x212c7000 0x5000 0x4000 com.apple.driver.AppleI386GenericPlatform (1.0.0) <10> 24 3 0x22b8b000 0x4000 0x3000 com.apple.driver.ApplePS2Controller (1.0.2) <10> 26 0 0x22c0e000 0x3000 0x2000 com.apple.driver.ApplePS2Keyboard (1.0.2) <24 19 10> 30 0 0x22c9a000 0x5000 0x4000 com.apple.driver.AppleGenericPCATA (1.2) <29 2 7 10> 31 3 0x22cb5000 0x16000 0x15000 com.apple.iokit.IOUSBFamily (2.0.5) <10> 34 0 0x22d35000 0x7000 0x6000 com.apple.driver.Apple3Com3C90x (1.2.2) <27 22 10> 36 0 0x22d69000 0x4000 0x3000 com.apple.iokit.IOATAPIProtocolTransport (1.3.0) <35 29> 44 1 0x22e5c000 0x18000 0x17000 com.apple.iokit.IOGraphicsFamily (1.3) <27 10> 45 0 0x22e74000 0xe000 0xd000 com.apple.iokit.IONDRVSupport (1.3) <44 27 10> 51 0 0x22ea0000 0x3000 0x2000 com.apple.driver.ApplePS2Mouse (1.0.3) <24 19 10> 52 0 0x22efe000 0xd000 0xc000 com.apple.filesystems.msdosfs (1.3) <10> 53 0 0x22f0f000 0x7000 0x6000 com.apple.nke.IPFirewall (1.3) <10> 54 0 0x22f26000 0xc000 0xb000 com.apple.filesystems.ntfs (1.0) <10> |
В списке я оставил упоминания модулей, названия которых отчасти говорят о платформе и используемом оборудовании.
- kextload kextName – загрузка модуля под именем kextName (они находятся в /System/Library/Extensions).
- kextunload kextName – соответственно выгрузка из памяти модуля kextName.
- kextxcache – подготовка базы модулей, хранящихся в /System/Library/Extensions.
Apache-сервер, которым комплектуется система, идентифицируется следующим образом:
sh-2.05b# telnet darwin 80
Trying 10.0.0.10... Connected to darwin. Escape character is "^]". HEAD / HTTP/1.0 HTTP/1.1 200 OK Date: Sun, 23 May 2004 00:53:47 GMT Server: Apache/1.3.28 (Darwin) Content-Location: index.html.en Vary: negotiate,accept-language,accept-charset TCN: choice Last-Modified: Wed, 18 Jul 2001 23:44:21 GMT ETag: "37bce-5b0-3b561f55;3fa2d462" Accept-Ranges: bytes Content-Length: 1456 Connection: close Content-Type: text/html Content-Language: en Expires: Sun, 23 May 2004 00:53:47 GMT Connection closed by foreign host. |
Настройка ничем оригинальным не отличается.
Интересно, как же идентифицируется система со стороны. Сейчас поглядим. Заходим на удаленную машину. И оттуда запускаем наш сканер портов nmap.
# /usr/local/nmap/bin/nmap -v -sS -O darwin
Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2004-05-27 23:01 MSD Host darwin (10.0.0.10) appears to be up ... good. Initiating SYN Stealth Scan against darwin (10.0.0.10) at 23:01 Adding open port 21/tcp Adding open port 6000/tcp Adding open port 80/tcp Adding open port 23/tcp The SYN Stealth Scan took 11 seconds to scan 1659 ports. For OSScan assuming that port 21 is open and port 1 is closed and neither are firewalled Interesting ports on darwin (10.0.0.10): (The 1652 ports scanned but not shown below are in state: closed) PORT STATE SERVICE 21/tcp open ftp 23/tcp open telnet 70/tcp filtered gopher 80/tcp open http 5050/tcp filtered mmcc 6000/tcp open X11 8000/tcp filtered http-alt Device type: general purpose Running: Apple Mac OS X 10.3.X OS details: Apple Mac OX X 10.3.0 - 10.3.2 (Panther) TCP Sequence Prediction: class="truly" random Difficulty=9999999 (Good luck!) IPID Sequence Generation: Incremental
Nmap run completed -- 1 IP address (1 host up) scanned in 20.452 seconds |
Со стороны не отличишь, действительно ли это MacOSX на платформе PPC или x86. Жаль, что ни Aqua, ни Quartz не предусмотрены.
Посмотрим на samba-ресурсы удаленной машины.
DarwinOS:~ root# smbclient -L fuji -I fuji 2> /dev/null
Password: Anonymous login successful
Sharename Type Comment --------- ---- ------- Share Disk Share Media Disk Music & Video Share Software Disk Software Share IPC$ IPC IPC Service (Samba Server) ADMIN$ Disk IPC Service (Samba Server) Anonymous login successful
Server Comment --------- ------- FUJI Samba Server
Workgroup Master --------- ------- MYGROUP ATHLON |
Посмотрим на геометрию диска из-под ОС Darwin.
DarwinOS:~ root# fdisk /dev/rdisk1
Disk: /dev/rdisk1 geometry: 779/128/63 [6281856 sectors] Signature: 0xAA55 Starting Ending #: id cyl hd sec - cyl hd sec [ start - size] ------------------------------------------------------------------------ 1: 06 0 1 1 - 68 127 63 [ 63 - 556353] DOS > 32MB *2: A8 69 0 1 - 576 127 63 [ 556416 - 4096512] Darwin UFS 3: 00 0 0 0 - 0 0 0 [ 0 - 0] unused 4: 00 0 0 0 - 0 0 0 [ 0 - 0] unused |
Наглядно и просто. Файловых систем не так уж и много.
# ls /System/Library/Filesystems
cd9660.fs cddafs.fs hfs.fs msdos.fs ntfs.fs ufs.fs |
Файловая система NTFS доступна только на чтение. Для монтирования файловой системы из-под Linux:
# mount /dev/hdd2 /mnt/hd -t ufs -o, ufstype=44bsd
На момент написания статьи поддержка из-под Linux только на чтение.
Напоследок пара строк о средстве фильтрации трафика. Конечно, это ipfw. Полностью похож на своего *BSD-собрата. Впрочем, это не собрат, а скомпилированный под Darwin оригинальный ipfw. Правила задаются и убираются абсолютно так же, как и в FreeBSD. Более подробно см. в статьях: «Ipfw и управление трафиком в FreeBSD» (№6 журнала «Системный администратор» за 2003 год), «Сам себе антихакер. Защита от хакерских атак с помощью ipfw» (№1 журнала «Системный администратор» за 2004 год).
В целом из машины на основе OpenDarwin вполне возможно сделать почтовый релей, систему доступа из Интернета по ppp-соединению, веб-сервер. Основные компоненты по созданию сетевой инфраструктуры уже присутствуют в системе: postfix, mysql, php, apache, bind, perl. Относительно сетевой безопасности – код стека TCP/IP, как говорилось в начале статьи, основан на оригинальном BSD-коде. Если каких-либо программ не хватает, то следует обратиться на сайт [7]. Вполне возможно, что эти программы уже портированы и доступны, как ports.
Несколько слов о компиляции программ под Darwin. В системе используется GNU Compiler Collection. Поэтому особых проблем при сборке возникнуть не должно. В Darwin я встретил такое понятие, как «толстые» файлы («fat»-files). То есть при сборке файлы компилируются под несколько архитектур, например, под PPC и под x86. И собираются в один бинарный файл. При выполнении файла происходит определение архитектуры и передается управление на необходимый участок кода. В частности, ядро, идущее с системой, собрано с поддержкой как PowerPC (PPC) архитектуры, так и x86.
Конечно же, статья не претендует на полное освещение всех нюансов «фруктовой» ОС. Она предназначена в первую очередь для тех, кто собирается расширить свой кругозор, и тех, кто неравнодушен к самой компании Apple Computer.
Мечты придуманы для того, чтобы из них делать реальность. И фруктовая компания не забывает об этом.
Ссылки:
- http://developer.apple.com/darwin/history.html
- http://news.com.com/2100-1045_3-5103279.html
- http://www.opendarwin.org/hardware
- http://blackboxwm.sf.net
- http://www.opendarwin.org/documentation
- http://www.mymac.ru
- http://darwinports.opendarwin.org
- Потемкин А. Mac OS X или то, что должен знать каждый про Macintosh, Apple и операционные системы. – Журнал «Системный администратор», №7, июль, 2003 г. – 68-77 с. (http://samag.ru/archive/article/157)
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|