Иногда бывают такие ситуации, что получить или отправить электронную почту обычным путём нельзя (не работает/отсутствует почтовый клиент). В этом случае на помощь приходит командная строка.

    Доступ к SMTP через telnet (отправка почты).

telnet mail.mydomain.ru 25
mail.mydomain.ru — адрес smtp сервера

25 — smtp-порт сервера с которым должен соедениться telnet
220 mail.mydomain.ru ESMTP Sendmail 8.13.1/8.13.1; Sat, 6 Oct 2007 09:50:16 +0400
ehlo lo
ehlo lo — поздоровались с удалённым smtp-сервером
250-ENHANCEDSTATUSCODES

250-PIPELINING

250-8BITMIME

250-SIZE

250-DSN

250-ETRN

250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5

250-DELIVERBY

250 HELP

mail from: test@mydomain.ru
тут мы говорим что адрес почтовый отправителя письма test@mydomain.ru
250 2.1.0 test@mydomain.ru... Sender ok
поверка отправителя прошла успешно
rcpt to: test@remote.ru
здесь мы ввели постовый адрес получателя нашего письма test@remote.ru
250 2.1.5 test@remote.ru... Recipient ok
проверка получателя прошла успешно
data
комманда data говорит о том, что дальше пойдёт тело письма
354 Enter mail, end with «.» on a line by itself

ответ сервера говорит нам о том что закончить письмо мы должны набрать точку «.» на новой строке после набранного нами сообщения (тела письма)
this test mail bla-bla-bla.
это наш текст
.
точка — даём понять серверу что письмо набрано и его пора отправлять адресату
250 2.0.0 l965oGGR025162 Message accepted for delivery
ответ сервера — письмо ушло на отправку

Доступ к POP3 через telnet (приём почты)

telnet pop3.myserver.ru 110
pop3.myserver.ru — наш pop3 сервер

110 — pop3-порт на который соедениться телнет
+OK
сервер сказал что соеденение прошло нормально
user test
ввели имя пользователя test.
pass parol
ввели пароль «parol»
теперь мы можем узнать колличество и размер почтовых сообщений:
stat
для вывода полного листинга почтовых сообщений надо использоваьт команду:
list
для того чтобы прочитать нужное сообщение вводим:
retr номер письма
просмотреть только заголовок сообщения:
top номер письма 0 (в конце строки поставить ноль)
удалить письмо из ящика:
dele номер сообщения
выход:
quit

Дополнение:
1) Если SMTP сервер требует SMTP-аутентификацию, то после того как мы с ним поздоровались (ehlo lo) вводим команду AUTH LOGIN и после неё поочереди:
USERNAME имя-пользователя
PASSWORD наш-пароль
2) На почтовых серверах где заведено несколько виртуальных почтовых доменах в POP3-сессии в поле user следует вводить полностью эл ящик: test@myserver.ru

Как отправить файл по электронной почте из командной строки Linux.

Для отправки файла из командной строки можно воспользоваться несколькими способами:

  1.  Отправка текстового файла cat text.txt |  mail -s TEST email@address
  2. Отправка бинарного файла  cat text.exe | uuencode text.txt | mail -s TEST email@address
  3. Отправка файла с архивированием на лету:  gzip -c text | uuencode text.gz | mail -s TEST email@address
  4. Отправка с помощью утилиты mpack: mpack -s “Attached file” file.jpg test@example.com
  5. Отправка с помощью утилиты nail:

mail -s «Let's send file» -a file_to_send.rar recepient@email.adr<Enter>

Look at this funny file<Enter>

.<Enter>

<Ctrl-D>

Во всех перечисленных примерах -s это subject (тема письма). команда mail входит в состав пакета mailutils, программа mpack входит в состав одноимённого пакета mpack.

FreeBSD 9

1. Обновления системы и дерева портов

обновляем систему, используя утилиту для бинарного обновления системы — freebsd-update:

freebsd-update fetch && freebsd-update install

скачиваем и обновляем коллекцию портов
portsnap fetch Если вы запускаете Portsnap впервые, извлекаем снэпшот в /usr/ports: portsnap extract По завершении первого запуска Portsnap, как было показано выше, /usr/ports может быть обновлен при помощи:

# portsnap fetch && portsnap update

ОБНОВЛЕНИЕ УСТАНОВЛЕННЫХ ПАКЕТОВ ПРИ ПОМОЩИ PKGNG

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

#whereis portupgrade
portupgrade: /usr/ports/ports-mgmt/portupgrade
#cd /usr/ports/ports-mgmt/portupgrade
#make install clean

При установке вылезет окошко с запросом выбора базы. Лучше выбрать BDB4.
Далее идет установка, тянет она кстати немало, порядка 10 Mb.
Но вот установка завершилась. Смотрим что утилита умеет, а умеет она многое.
Вот основное:

— a все установленные порты

— F Получить все исходные тексты устанавливаемого пакета, но не устанавливать/обновить.
— r Обновить все порты, от которых зависит устанавливаемый порт.
— R Обновить все порты, которые зависят от устанавливаемого порта.
— v Выводить всю информацию.
— c Выполнить «make config-confitional» перед обновлением каждого порта.
— f Принудительно обновляет порт, если он был переустановлен на другую версию или выполнен downgrade порта.

Лично я обновляю через команду

#portupgrade -rcvf имя_порта 

Ну, а узнать список обновляемых портов можно командой

#pkg_version -v | grep "need"
png-1.4.1_1                    < need updating (port has 1.4.3)

Далее просто

portupgrade -rcvf png-1.4.1_1 

И еще, если утилита просит выполнить pkgdb -F — выполните обязательно, она исправляет нарушенные зависимости.

Однако стоит иметь ввиду, что portupgrade — это целый набор утилит:

  • portupgrade – одноименная утилита, средство автоматического обновления установленных программ
  • portinstall – утилита установки новых программ, присутствующих в системе портов FreeBSD
  • portversion – утилита показывающая установленный софт и наличие обновлений для него.
  • portsclean – утилита очистки мусора остающигося после сборки портов
  • portsdb – утилита создающая базу программ, присутствующих в портах FreeBSD
  • ports_glob – предназначена для поиска по базе портов
  • portcvsweb – браузер для CVSWeb
  • pkgdu – утилита, предназначенная для подсчета дискового пространства занятого уcтановленными программами
  • pkgdb – еще одна утилита для управления базой портов
  • pkg_which – предназначен для поиска по базе портов
  • pkg_sort – утилита сортирует порты в соответствии c зависимостями
  • pkg_fetch – утилита для скачки собранных(бинарных) пакетов
  • pkg_deinstall – средство для массового удаления установленного софта

Надеюсь, теперь вы не будете испытывать проблем с обновлением приложений.

 

Основной файл конфигурации cron, /etc/crontab, содержит следующие строки:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Первые четыре строки — это переменные, настраивающие среду окружения, в котором будут работать задачи cron. Значение переменной SHELL сообщает системе о том, какую оболочку использовать (в этом примере будет использована оболочка bash), а переменная PATH определяет пути, используемые для выполнения команд. Результат выполнения задач cron будет выслан по электронной почте пользователю, определённому в переменной MAILTO. Если в качестве значения переменной MAILTO задана пустая строка (MAILTO=""), электронные письма отправляться не будут. Переменная HOME задаёт домашний каталог, используемый при выполнения команд или сценариев.

Каждая строка в файле /etc/crontab имеет следующий формат:

minute   hour   day   month   dayofweek   command
  • minute — любое целое число от 0 до 59
  • hour — любое целое от 0 до 23
  • day — любое целое от 1 до 31 (день должен быть корректным, если указан месяц)
  • month — любое целое от 1 до 12 (или короткое название месяца, например: jan, feb и так далее)
  • dayofweek — любое целое от 0 до 7, где 0 или 7 означает Воскресенье (или короткое название дня недели, например: sun, mon и так далее)
  • command — команда, которая должны быть выполнена. Командой может быть как простая команда, например, ls /proc >> /tmp/proc, или команда запуска написанного вами специального сценария.

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

Дефис (-) между целыми числами обозначает диапазон чисел. Например, 1-4 означает целые числа 1, 2, 3 и 4.

Список значений, разделенных запятыми (,), обозначает перечень. Например, перечисление 3, 4, 6, 8 означает четыре указанных целых числа.

Косая черта (/) используется для определения шага значений. Целочисленное значение может быть пропущено в диапазоне, если после диапазона указать /<целое>. Например, значение минут 0-59/2, определяет, что будет пропущена каждая вторая минута. В качестве шага значений также может быть указана звёздочка. Например, значение месяца */3 определяет, что будет пропущен каждый третий месяц.

Любые строки, начинающиеся с символа решетки (#), являются комментариями, и не обрабатываются.

ПРИМЕРЫ

*/5 * * * * — запускать команду каждые пять минут
0 */3 * * * — запускать каждые три часа
0 12,13,14 * * * — запускать команду каждый час с 12 до 14

*/1 * * * * /usr/bin/php ~/site.ru/public_html/test.php   -   запуск каждую минуту php-скрипта test.php
0 */1 * * * /usr/bin/perl ~/site.ru/public_html/test.pl     -   запуск каждый час perl-скрипта test.pl

КОМАНДА

Необходимо задать путь до скрипта от домашнего каталога
Например: public_html/cgi-bin/script.pl
Cистема сама подставит символ ~/ (эта комбинация заменяет полный путь)
Получится: ~/public_html/cgi-bin/script.pl
Если в конце пути поставить символ & (амперсанд), то скрипт будет работать в фоновом режиме.
Установка этого символа необязательна.

1

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

почтовый ящик alarm@adminunix.ru,

сервер исходящей почтыadminunix.ru

паролем: super_password

email администратора у нас будет it@adminunix.ru
В вашем случае, данные для подключения к почтовому серверу и адрес получателя, необходимо указать свои.

Настройка отправки почты с сервера:
Для начала установим пакет ssmtp:

sudo apt-get install ssmtp

Настраиваем ssmtp

Отредактируем конфигурационный файл:

sudo mcedit /etc/ssmtp/ssmtp.conf

Приведя его в к виду указанному ниже:

 # Config file for sSMTP sendmail
 #
 # The person who gets all mail for userids < 1000
 # Make this empty to disable rewriting.
 root=postmaster
#Указываем логин пользователя, для подключения к почтовому серверу
 authuser=alarm
 #Указываем пароль для подключения
 authpass=super_password
 AuthMethod=LOGIN
 # The place where the mail goes. The actual machine name is required no
 # MX records are consulted. Commonly mailhosts are named mail.domain.com
 #Адрес сервера исходящей почты
 mailhub=adminunix.ru
 rewriteDomain=adminunix.ru #принудительное указание домена в поле From
 # Where will the mail seem to come from?
 #rewriteDomain=
 # The full hostname Очень желательно, чтобы hostname совпадал с PTR записью IP адреса, с которого будем устанавливать соединение, но не обязательно. hostname=ts174-23.adminunix.ru
 # Are users allowed to set their own From: address?
 # YES - Allow the user to specify their own From: address
 # NO - Use the system generated From: address
 FromLineOverride=NO #Запрещает скриптам «решать» с какого ящика отправлять письмо.

теперь отредактируем алиасы для отправки почты:

mcedit /etc/ssmtp/revaliases

Добавим в него следующее:

root:alarm@adminunix.ru:adminunix.ru
 postmaster:alarm@adminunix.ru:adminunix.ru
#for yandex
 root:alarm@yandex.ru:smtp.yandex.ru:465
 ubuntu:alarm@yandex.ru:smtp.yandex.ru:465
 postmaster:alarm@yandex.ru:smtp.yandex.ru:465
#for gmail
 root:alarm@gmail.com:smtp.gmail.com:587
 ubuntu:alarm@gmail.com:smtp.gmail.com:587
 postmaster:alarm@gmail.com:smtp.gmail.com:587

Если необходимо отправлять почту через smtp.yandex.ru

mailhub=smtp.yandex.ru:465 #адрес и порт smtp сервера яндекса
 UseTLS=YES #Использование шифрования SSL/TLS

Если необходимо отправлять почту через smtp.gmail.com

 mailhub=smtp.gmail.com:587
 UseSTARTTLS=YES

для FreeBSD изменим почтового клиента используемого по умолчанию:

mcedit /etc/mail/mailer.conf

приведем его к следующему виду:

#sendmail/usr/libexec/sendmail/sendmail
 #send-mail/usr/libexec/sendmail/sendmail
 #mailq<>/usr/libexec/sendmail/sendmail
 #newaliases/usr/libexec/sendmail/sendmail
 #hoststat/usr/libexec/sendmail/sendmail
 #purgestat/usr/libexec/sendmail/sendmail
 sendmail/usr/local/sbin/ssmtp
 send-mail/usr/local/sbin/ssmtp
 mailq/usr/local/sbin/ssmtp
 newaliases/usr/local/sbin/ssmtp
 hoststat/usr/bin/true
 purgestat/usr/bin/true

Для проверки работы SSMTP

echo test | mail -v -s "testing ssmtp setup" it@adminunix.ru

Если вы хотите настроить отправку писем для своего веб-сайта на php, измените файл php.ini:

#for apache
 sudo nano /etc/php5/apache2/php.ini
 #for nginx and php-fpm
 sudo nano /etc/php5/fpm/php.ini[/bash]

Найдите строку sendmail_path (она задокументирована с помощью 😉 и ниже неё вставьте:

sendmail_path = ssmtp -t

Отправка писем из скриптов bash/shell

Теперь давайте копнем глубже и попробуем отправить письмо из скрипта оболочки. Ниже простой скрипт, отправляющий информацию по использованию диска.

#!/bin/bash
 du -sh | mail -s "disk usage report" it@adminunix.ru

Откройте новый файл, вставьте в него приведенные выше строки, сохраните и запустите. Вы получите письмо, содержащее вывод команды «du -sh».
И последняя хитрость в письмах из командной сроки — добавление вложений к письмам, отправляемым из скриптов. Предположим, вам необходимо сделать резервную копию директории с конфигурационными файлами, заархивировать ее и отправить в качестве вложения с помощью mutt:

#!/bin/bash
 tar -zcf /home/user/backup.tar.gz /home/user/files_to_backup
 echo "Archived configuration files" | mutt -a /home/user/backup.tar.gz -s "backup data" it@adminunix.ru

Команда echo в начале третьей строки добавляет текст «Archived configuration files» в тело письма.

#!/bin/bash
 df -h > /tmp/mail_report.log
 free -m >> /tmp/mail_report.log
 mail -s “disk and RAM report” it@adminunix.ru < /tmp/mail_report.log

настройка Mdadm

Отредактируем настройки mdadm

sudo nano /etc/mdadm/mdadm.conf

Находим строку MAILADDR и вписываем туда адрес получателя уведомлений:

MAILADDR it@adminunix.ru

перезапускаем Mdadm

sudo /etc/init.d/mdadm restart

Теперь нам необходимо протестировать отправку уведомлений от Mdadm, в командной строке пишем:

mdadm --monitor --scan -1 --mail=it@adminunix.ru --test

Проверяем почтовый ящик админа, там будет лежать письма о состоянии RAID массива, такого содержания:

This is an automatically generated mail message from mdadm
running on Server_name.tld

A TestMessage event had been detected on md device /dev/md/0.

Faithfully yours, etc.

P.S. The /proc/mdstat file currently contains the following:

Personalities: [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
 md0: active raid1 sdb1[2] sda1[0]
 19529656 blocks super 1.2 [2/2] [UU]

Теперь нам нужно проверить реагирование системы в боевых условиях.
Если дело происходит на физической системе, то выдергиваем SATA шлейф, если на виртуальной, то можно просто отключить один из дисков, после этого идем проверять почту, там будет лежать письмо, следующего содержания:

This is an automatically generated mail message from mdadm
running on Server_name.tld

A FailSpare event had been detected on md device /dev/md/0.

It could be related to component device /dev/sdb1.

Faithfully yours, etc.

P.S. The /proc/mdstat file currently contains the following:

Personalities: [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
 md0: active raid1 sdb1[2](F) sda1[0]
 19529656 blocks super 1.2 [2/1] [U_]

Значит все отлично, система работает, уведомления отправляются и в случае чего, вы будете готовы все поднимать, а в нашей индустрии, быстро поднятое не считается упавшим…

Единственно верный способ почувствовать прелесть Mac OS X — купить компьютер или ноутбук Mac. Удобно, быстро, стабильно и без геморроя — человеческий подход в лучших традициях Mac. Желая познать непознаваемое, а именно — Mac OS X на обычном PC, энтузиасты активно допиливают различные виды Хакинтоша, ругаются словами «кекст» и боятся апдейтов системы. Еще сложнее было заставить макось работать под виртуальной машиной, но это только до сегодняшнего дня.

Экспериментальная поддержка

Все началось с того, что я решил попробовать написать приложение для iPhone/iPad и тут же встрял из-за досадного ограничения. Оказалось, SDK разработчика и все сопутствующие инструменты доступны только для платформы Mac OS Х. По правде говоря, Mac я собираюсь купить уже довольно давно, особенно после мучительных танцев с Хакинтошом, но, увы, заветный Macbook Pro 15" как был, так и остается лишь пунктом в списке «Хочу купить».

Колдовать снова с установкой Mac OS на свой PC, не имея гарантии, что смогу хотя бы запустить нужный софт, не было никакого желания. Опыт подсказывал, что ничего хорошего не выйдет и с виртуальными машинами. Ни одно решение для виртуализации, будь оно от Microsoft, Parallels, VMware или Sun, без шаманства (важный момент!) не позволяет запустить Mac OS в качестве гостевой ОС! Вернее говоря, не позволяло. Изучая changelog программы VirtualBox’а (теперь уже распространяемое под эгидой компании) Oracle, которую в последнее время использую в качестве основного средства виртуализации, наткнулся на очень интересную строчку: «Experimental support for Mac OS X Server guests». Опция впервые появилась в версии 3.2.0 и далее часто упоминается. Получается, в качестве гостевой OS теперь можно установить макось? Слово «server» сначала сбило с толку, но быстро выяснилось, что это есть не что иное, как лицензионное ограничение Mac OS X. Дело в том, что лицензия допускает установку ОС только на компьютеры и ноутбуки Mac. Все остальное, включая Хакинтоши и прочие извращения, по большому счету запрещены — вполне логичный шаг со стороны компании Apple. А вот ограничение внутри самой VirtualBox, как оказалось, искусственное. Быстро нашлось немало отзывов о том, что под VirtualBox’ом отлично устанавливается последняя версия Mac OS X, то есть Snow Leopard (такое вот кодовое имя релиза). Тут надо иметь в виду, что подобный опыт напрямую нарушает лицензию системы, поэтому может рассматриваться исключительно в образовательных целях.

Создание виртуальной машины

Главное требование для установки Mac OS X — поддержка процессором спецификации VT-x. Intel Virtualization Technology for x86 поддерживается практически всеми современными процессорами Intel, включая большинство Сore 2 Duo/Quad и модных i3/i5/ i7. Мы проводили эксперимент на Core 2 Duo E8500 и Windows 7 в качестве основной системы. Во многих случаях система должна завестись и на процессоре от AMD, но только при условии, что тот имеет поддержку технологии виртуализации AMV-V. Далее потребуется официальный диск с Mac OS X или его образ (у нас была версия 10.6.3), конечно же, легально купленный (это тебе не Windows!). Если образ сграблен под Mac OS и имеет разрешение .dmg, то привести его в привычный ISO-вид поможет утилита dmg2img (vu1tur.eu.org/tools): dmg2img source_file. dmg destination_file.iso. Далее необходимо создать «правильную» виртуальную машину, на которую и будет установлена система. Собственно, начать нужно с того, что указать тип гостевой системы — «Mac OS X Server». Что приятно, такой тип выбирается автоматически — стоит только в названии виртуалки использовать слова «mac» или, скажем, «leopard». Крайне желательно выделить виртуаль ной машине минимум 1024 Мб оперативки и создать виртуаль ный жесткий диск на 20 Гб (вполне можно использовать опцию «Dynamically expanding storage»). После создания виртуалки не лишним будет открыть ее свойства и, во-первых, отключить эмуляцию floppy-диска, а во-вторых, установить количество видеопамяти, равное 128 Мб. В качестве IDE-контроллера должен быть выставлен тип ICH6, но это работает и по умолчанию.

Далее есть два пути. Первый и самый правильный — обойтись силами одной только VirtualBox. Для этого необходимо закрыть программу (крайне важно, иначе ничего не получится!) и найти XML-конфиг только что созданной виртуалки. В XP он находится здесь: C:Documents and Settings<username>.VirtualBox Machines<name of the VM><name of the VM>.xml, в Vista/ Windows 7 C:Users<username>.VirtualBoxMachines<name of the VM><name of the VM>.xml. Под Linux’ом ищи XML внутри /home. В этом файле есть несколько строк, описывающих так называемые ExtraDataItem. Найди это место поиском в любом текстовом редакторе и добавь еще две строчки:

<ExtraDataItem name="VBoxInternal2/EfiBootArgs"
value=" "/>
<ExtraDataItem name="VBoxInternal2/SmcDeviceKey"
value="ourhardworkbythesewordsguardedpleasedontsteal
(c)AppleComputerInc"/>

После этого можно сохранить конфиг и заново запускать VirtualBox. Последний штрих — выбрать в качестве cdrome образ с Mac OS X и стартовать виртуальную машину. В 90% случаев запустится графический инсталлятор, и можно будет спокойно установить ось. Откуда берутся эти 10% неудач, сказать сложно. Однако если вдруг во время загрузки выплывает какая-нибудь kernel-ошибка, или многообещающе появится серый экран с курсором, но на этом все и останавливается, можно попробовать другой путь. В этом случае уже не надо никак шаманить с конфигом виртуалки (если добавил туда ExtraDataItem’ы, то их надо удалить). Идея в том, чтобы использовать альтернативный загрузчик — Empire EFI . Штука распространяется в виде ISO-файла (например, empireEFIv1085.iso), которую надо примонтировать к виртуалке и отдать команду на старт. Во время загрузки появится уже темный интерфейс Empire EFI — в этот момент надо демонтировать текущий образ альтернативного загрузчика и подключить ISO’шку со Snow Leopard. Обновляем информацию о диске (<F5>), жмем <Enter> — вуаля, опять же получаем окно установщика Mac OS X.

Установка и настройка

Тем или иным способом появляется графический интерфейс установщика системы, который приветливо предлагает выбрать язык для установки. Далее, спросив, куда необходимо установить ОС, он почему-то не предложит никаких вариантов. Все потому, что еще не размечен жесткий диск (виртуальный). Для того, чтобы создать структуры и отформатировать разделы, запускаем дисковую утилиту из раздела «Утилиты» верхнего меню. Тут выбираем вкладку «Стереть», потом жмем кнопку «стереть», и утилита сама все сделает за нас. Теперь указываем установщику размеченный раздел — и начинается процедуры установки. Reboot.

Полностью рабочая система с достойным разрешением, поддержкой клавиатуры/мыши, а также сетевого адаптера — вот, что тебя ждет сразу после перезагрузки компьютера. Единственное — придется пройти процедуру идентификации клавиатуры (мастер потребует нажать на клавиши рядом с <shift>’ами), а также создать учетную запись пользователя. Тут надо помнить, что раскладка клавиатуры переключается комбинацией <winkey>+<пробел>. От всех процедур регистрации и создания учетки в сервисе MobileMe можно смело отказаться, как и от процедуры переноса данных с другого компьютера Mac (ведь как заботливо, а!?). Далее, когда со всеми этими вопросами от нас отстанут, можно, наконец, пощупать саму систему.

Щелкаем по окошкам, запускаем различные программы, пробуем открыть страницы в браузере Safari. Тут же скачиваем Textmate, легендарный текстовый редактор для Mac OS X, в виде непривычного dmg-файла (формат дистрибутивов в Mac OS X) и устанавливаем — опять же, все отлично работает. Конечно, совсем не так шустро, как на самом Mac’е, и не так быстро, как в случае Хакинтоша, но при этом вполне комфортно. В эйфории от того, что не надо мучиться с кекстами и прочими шаманствами, можно даже не заметить отсутствие звука — в системе нет драйвера для звукового контроллера ICH AC97, который эмулирует VirtualBox. Вероятно, этот факт сильно напрягал энтузиастов, поэтому на форуме виртуалки быстро появились необходимые дрова. Добротный установщик, доступный на forums.virtualbox.org/viewtopic.php?f=4&t=30843, избавит даже от возни с ручной правкой kext’ов. Просто скачай PKG-файл, запусти его и перезапусти систему. Помимо отсутствия звука меня напрягало фиксированное разрешение, установленное в гостевой ОС, равное 1024×768. К счастью, и для этого есть маленький хинт, который опять же необходимо провернуть в конфиге виртуалки. Открываем XML-файл в текстовом редакторе и после всех ExtraDataItem добавляем новую строку:

<ExtraDataItem name="VBoxInternal2/EfiGopMode"
value="N"/>

Параметр N — это числа от 0 до 4, означающие разрешения 640×480, 800×600, 1024×768, 1280×1024, 1440×900 соответственно.

С помощью этой строки мы указываем, что виртуальная машина должна использовать так называемый VirtualBox EFI. EFI — это Extensible Firmware Interface, новый индустриальный стандарт, который должен заменить БИОС в качестве основного интерфейса.

Увы, в рамках используемого виртуальной машиной EFI другие разрешения не поддерживаются, но даже 1440×900 вполне достаточно для комфортной работы. Вот чего пока не хватает, так это поддержки надстройки Guest Additions, с помощью которой, например, можно очень просто обмениваться файлами между хостовой и гостевой машиной. Сейчас для этого придется использовать протокол SMB. Для этого сначала нужно его включить. Переходим в настройки: «Меню u„ Системные настройки „Љ Интернет и беспроводная сеть „| Общий доступ» и включаем «Общий доступ к файлам». В «параметрах» необходимо активировать протокол SMB. Теперь к любой Windows-машине с расшаренными ресурсами можно подключиться через меню «Переход „Ђ Подключение к серверу». Надо лишь указать адрес хоста в адресной строке: smb://10.0.2.2. Кстати говоря, значение 10.0.2.2 неслучайно: в большинстве случаев (то есть с сетевыми настройками VB и виртуальной машины по умолчанию) это будет адрес хостовой машины.

Эта инструкция предназначена для Mac OS X Lion и  состоит из двух основных этапов и предназначена для создания загрузочного USB флеш-брелока, карманного USB винчестера или SD карты. С помошью такого накопителя можно установить «чистую» операционную систему Mac OS X Lion, обновить существующую или воспользоваться вспомогательными системными утилитами.

Извлечение загрузочного образа из установщика


Монтируем .dmg образ с установщиком и заходим в ресурсы бандла Установка Mac OS X.app (Install Mac OS X.app > правый клик > Показать содержание пакета).

show-bundle-content

В открывшемся окне с ресурсами переходим в /Contents/SharedSupport/, тут должен находится ещё один .dmg образ — InstallESD.dmg. Он как раз нам и нужен.

inside-install-mac-os-x-app
Копируем его в любое удобное место, например на Рабочий стол. Если внутри приложения Установка Mac OS X.app (Install Mac OS X.app) такого не имеется, значит вы загрузили уже извлечённый и переименованный образ InstallESD.dmg, такие образы в сети встречаются чаще, так как всё остальное, кроме этого образа, не имеет никакой ценности.

Развёртывание образа Mac OS X Lion на USB накопитель


Теперь, уже имея образ с загрузочной операционной системой Mac OS X Lion, поступим стандартным и давно известным способом для развёртывания образа на USB накопитель при помощи Дисковой утилиты. В качестве USB накопителя может быть любое устройство: флеш-брелок или карманный винчестер. По этому же принципу можно использовать SD-карту памяти. Во избежание ошибок при развёртывании любого образа диска я рекомендую произвести его проверку (сканирование). Для этого запускаем Дисковую утилиту и в меню выбираем Образы > Сканировать ораз для восстановления… Указываем нужный образ и нажимаем Сканировать. Если сканирование образа оканчивается c ошибкой, но при этом вы на 100% уверены в его целостности, просто смонтируйте его двойным кликом на Рабочем столе и дождитесь окончания его проверки. После окончания сканирования подключаем к компьютеру USB накопитель (SD карту). В Дисковой утилите выбираем из списка слева наше устройство (1). Обращу внимание: не раздел, а именно всё устройство, как показано на изображении. В основном окне переходим в закладку Разбить диск на разделы (2). Из меню Схема томов (3) выбираем количество разделов, на которое хотим разбить накопитель.

disk-util-make-boot-flash-drive-1
Далее нажимаем кнопку Параметры… (4), которая находится под схемой разделов. В всплывающем окне выбираем параметр Схема разделов GUID (5) и нажимаем ОК (6).

disk-util-make-boot-flash-drive-2
После закрытия диалогового окна указываем объёмы для новых разделов. Для развёртывания Mac OS X Lion вполне хватит 4,5 ГБ. Нажимаем кнопку Применить (7).

disk-util-make-boot-flash-drive-3
После окончания операции переходим во вкладку Восстановить (рядом с вкладкой Разбить диск на разделы). В поле Источник перетягиваем извлечённый ранее из ресурсов образ InstallESD.dmg (у меня он называется OS X Lion DP 4.dmg), а в поле Назначение перетягиваем из левой части окна подготовленный раздел (у меня он называется WIN). Ставим флажок Очистить место назначения (8) и нажимаем кнопку Восстановить (9).

disk-util-make-boot-flash-drive-4
Пошёл процесс восстановления… После его окончания на подготовленном разделе будет располагаться загрузочная копия операционной системы Mac OS X Lion. Проверить всё ли мы правильно сделали достаточно просто: заходим в Системные настройки и выбираем Загрузочный том, в списке должен находиться созданный нами радел.
system-preferances-boot-volume-usb