close

Вход

Забыли?

вход по аккаунту

?

Linux Format №4 апрель 2016

код для вставки
Выпуски Linux Format - http://100pdf.net/kompjuternye-zhurnaly/linux-format/
DVD ДАРОМ!
FEDORA 23 & KALI 2.0
66 страниц
учебников
и статей!
» Мультизагрузка всего!
» Ubuntu для новичков
» Облачное хранилище Hadoop
Академия кодинга:
Принимаемся за Swift!
Главное в мире Linux
Апрель 2016 № 4 (208)
Технология бронезащиты от атак
и безопасности онлайн
» Напрочь отгоним хакеров
» Защитим свои серверы
» Обнаружим эксплойты
» Тестируем на Android, Pi
и не только!
ЕС Т Ь
НА Я
ЭЛЕКТРОИНЯ
ВЕРС ГО
к Pi Zero Обзор
Приставка
Raspberry Pi Ruby & Sonic Pi
Е
Д ЛЯ ВАШ ТА!
ПЛАН­ШЕ
lorer pHAT
nCloud
8.0: Exp
loud
е
OwnеCе и лучш
R
Нов
Ow
rry Pi
Raspbe
Ruby: Сочиним
случайную
музыку
формы
нальной плат ги.
день
многофункцио
жую версию но купить на карманные
тестирует све
Лес Паундер Zero, которую вполне мож
для нового Pi
ся,
Пользова
телям
Ваша пор
ция
Pi
смачных
новостей,
появил
Zero только
aspberry Pi
создаобщество уже
а огромное со
пьютеставки к ком
АЛЛАН
ло платы-при
версию
МАК-КАЛ
создал новую
ЛАХ
ру-крошке. Pimoroni ты Explorer HAT, расорганиза
тор Rhône
ной пла
изValley Raspberry
своей популяр
трех плат. Про
диапазон до
Jam
ширив свой
ле 2014 г. с двух
това ло в нача
водство стар
шла с емкостHAT, которая
ми
плат: Explorer
све то дио да
огда мы думаем о языках для общения с Raspberry Pi, мы,
ным вхо дом,
Да лее используем два понятия кодирования для этой строки:
ным сен сор
Но в стандартес тест венно, под ра зу меваем Scratch и Python. Од на ко цикл повто
дов и выходов.
ра ноты и переменную:
и набором вхо
лера двигатеSonic Pi — программируемый в реальном времени синтехватало контрол
ренpace = 1
ной версии не
ак-то раз
вторую, расши
затор — использует Ruby, популярный язык, созданный Юкихиро
у себя до
добавлен во
сии
loop do
ма,
ля, и он был
следней вер
на юге Фран
ших
“Matz” Мацумото и тоже достойный изучения.
тым
— Pro. А в по
ции, я про
уж но
нения
ми
play 60
ния ва
aspberry Pi
ную версию
с откры щенет
снултимая со все
шенствования.
ся очень
ствучим
виса хра предос тав ле
чувизу
номы
На этом бель
создавал
уроке
грамм
рано. Решил
ряд приемов кодирования на Ruby,
видим усовер
защи
го сер
sleep pace
и
чить шоу
ся как по
ма комфорта
недавними Raspструмент
Pimoroni мы
ших про частный и
вклювста ет по верх
стью
трясающий
BBC Click
но
ролуч
лич
но
зи
обучения;
от
Zero, но он весь используя приложение Sonic Pi. Мы будем использовать перемениз
ни
Explorer
и увидел
инна лич
end
berry Pi,
и, безуслов
Эл Джей
ет поверх Pi
Explorer pHAT
синхро
ковым.
сюжет
ственный
— одна
Zero и совмесРича [LJ
отлично вста
гает
но, стал таные для хранения данных; цик лы для повторения проек та; массиных GPIO Pi.
можно
доступ
Наш
Rich]:
свой соб
го GPIO из Pi
pHAT пред ла
вания Raspberry На четвертом году
> Explorer pHAT моделях 40-контакт
Переменная pace [англ.
к ним
сам“темп]
не? OwnCloudсоздать
используется «„Сде
тодио40-контактно
в техно
ных
лайнения чисвоего су
ми GPIO Raspгих
шей
лучать
сторо
Pi открыва
логии — для хра
эксперт
щью OwnCloud
щая
вы для
ряд защищен
хране сии Pro, и све
ществонот и условные операторы для изменения слового значения — цеэто?»
40-контактны
себя и на дру
образова
реально ли Ис
ми и по ту. Для боль
ет новые
могаю
С помо
вующие в верния наборов
дов
лого Там
илигос пла ваю
шой пайтим со всеми
ния — од
дыдущих
польприсутстму
данны
горизонты
не
контак тов вхо
дом, по ный сервис.
ворилосьщей точкой.
бу ет не боль
обетиихропре
ним из са
зыки по
фай лы.
слевтес
ными
вания. К концу этого проек та вы созда дите зуя этот метод, можно Maker,
тодиодом
ных
Интер
ли, в Запад
о дви
ние свеЛес
мых даль
Pi. Пла та тре
лач
ваши
создатьИТ-мас
место для хране
ми лич
Паундер — дов, представлен
berry
нияже
зна
чения темного к
нии
и выходов, поной Афри
троллеров
Pi Zero. Explorer
ми. Управ ле
них стал
нованная
ный об
зоровать
терских,
ся свои
нечтоцеуни
личие
каль
но улучке, где
этокон
не музыка в привычном понимании, но пер- па проек та, вместо того,
экс-ления, ос
исстполь
но, как и сам
ключен
Макомпонен та
и наное;
рительный
ет
вен
на
щих
шиф
бу
лить
ст
уча
мож
Arduino
где
ник
об
под
ляю
тре
ра
как
зособ
но
де
и
и
нии.
что
зво
Pro,
бы
—
жене
стко закодиро
же без
вать его
ва,
ле
для всего
и—
проект Malinux французский бла
управ управки
версиях,вый шаг в автомапенсируют эти упуможет
Explorer
вать и
матов,
тельно простое
го —
ройст
перененой
в
да
ментирокоманчем ком тическом ее соз
tuxfamily.org),
занная версия
ринель
d так же
тодиваодтель
пепа
Télé (http://malinux готвоты относи
го уст
ном
ных фор ложений.
дите,
легка
начинается с «улет
Raspberry
pHATнии с помощью генерации слу- проек та. Цикл, как вихе
do и за
усва
d
pHAT — уре
гателя более
кры
ется с end.
манная
пера, чтобы све
она
ды и кон так
используя
с любо
OwnClou ми различ
вреда
Pi». Успе
ды Raspberry
без
чайных
ций,
чисел.Pi Zero и Explorer
проду
tele.
идущимPi дви
ния резисто
вать
ко ст ные вхо
ла
Pi, обучает
с OwnClou
гих при
ности
хе... чего? но
током,
Важно помнить, что кадля
С помощью
ж дый
С помощью
весьма ва
цикл
жен быть
хорошо жестве функ вашего Pi.
меня
уда ле ны ем
проект,
управления
наТак открыт
ма лийских
Foundation
вседол
безопас
лять фай бавив ряд дру
и пу те- щения.
висами,
собствен
ся элемен ты
для
ротаван
и нача лось, правиль
Для это
зиек
ление,
про
гоный
дится любая модель Raspberry Pi; вам по- и закрыт. В данном при
горел. Вместо
тори
детей.
ключают
ной ветки
зер или
мого
ся заземет
при мно
до
ет управ
> У OwnCloud
я очень
В, но ос тавшие
Нашперт
мере цикл
полняется и сегонеч
restart.
I2C/3
старые (и
так же обесон лайн-сер web-брау
поты.
Raspbian
стра- легко создать
корпуса.
дняно.
контролирует шествупла
да жевы
ность,
pHAT
клизере —
ПО уме
«в теме» беско
требуется аудиома
новые) мо
ными
они подналень
телекие
env ет управ- apachectl МБ,лявам
визоре (или комплект 3,5-мм динамиков)
к светодиоду,
работающим
на брау
прак тич
экс
насчет то
пользуя же мобильные
что проис
об лач
не,том
дели Pi к
заставляя Pi вставляемый в самые
sudo
ным контак
rewriteпечива
2 чат ют.
H-драйвевпе
исклюго,
от солнеч
лы, ис
шить ее с дру гими
ходит здесь,
ности Jessie.
лее
щью $
так
щееся выход
чить
и последняя
идет с дву мя
вервоз
сиямож
OwnCloud
Raspbian
headers
ных батарей, ЭЛТ-экранам,
Весь код проек та — на http://
тей програм
и ее
выобес
делыпе
помо
вать
всяром бо го Explorer
во Франции,
ние мотором
вать фай и Linux, а
хотя я точ
доляр- яв ляю
откройтеpHAT
сервер
Как и
Цена платы
в новую
пла ты может
размеся
a2enmod те Apache с ле лы жу
мированию.
чтобы учить
верно не про
низиро
Шарма
ми менять по
, Mac
bit.ly/LXF208Randomness.
кие
вписываются
ж дый вы ход
ки.лингОн пидяДар
$ sudo
Для это
того, ваш позволяет
фи, просто
файдви щих
най
Чтобы при
для
Маянк
дехото
сившту
ра, способны
висинхро
Чтобы изменить темп
пусти
шой
мо
про
в двух Ка
екнат
та, можно про
ны и отлично
и
сто измебольчерез масшет
фа
ситься
рамина
нить значение те подробности
в Windows и iOS. Более
часто
можно
ции PHP.
совгла
переза
ему работать
тов.
блог
на http://
загру жать фи
пе- читель Начнем мы
екра
на http://bit.ly/Maнять участие, узвольно лаках, так
симум 500 мА
прогу
склон
ный
грузны
файлов
клиент
ки Pi
рабочий стол, затем откроем прило- темпа, например, если он меньRaspberry.
Мыс за
Затем
отправьте
PHP, php.ini, мотоax_
вольт
ра, позволяя
хотите
кон
гаться мак
об
ше 1, использование числа с плаRhône Valley
стему Zero.
ность
свои Pi по
array], высокоbigl.es. ся до- экосиже
основатеlinuxTelebelow
стольный ройств Android измененных
upload_m
гурации
не
тает в
робот мог дви
Upton],
d на диЕс ли вы
ние Sonic Pi,[Eben
Raspberry
которое
адресу:
ить файл
можно найти в меню Programming. Через вающей точкой, тако
уст
тона [Darlington
25 Rue Henri
конфи
лий.
всех
ло впол
или
менные направ
ниях, чтобы
полу чает
мыгоскак
лебудь
Jam быстро. В при0.3,
его
сделает это очень
ном Аптоном
друзь
что бы попроОт контак та
бых уси
Martin, 31700 Association Bilou
ся настро торе файл
енты для рые версии
с Эбене
шой точностью.
на что-ни
вер OwnClou ет весьте пере
побуповоду
ями
тель.
боль
дет
с
осо
ный
ча
ди
2М
сколь
сер
про
ко
се
кунд
нии
Sonic
с
Toguna,
клю
Pi
маль
дет
ле
но
го
тов
во
при
ре
к
дак
ра
без
бо
Foundation,
си
име
те.
Sonic
Най
им
ста
Pi использу- мере ниже я добавил
Blagnac, Фран
.
мак
но
проеще
ра
логич написать
чения
ки по дим с фев тыре, но пешлодве
Raspberry Pi
в любом направ
вом ре
ках к Zeверсии
настро
го гостро
хранит
шой ток, но
серве
став
гают программ
ция.
да, и тольсле строкирачеля
прихра
/apache2 ните их зна
мых срерани- лем ет несколько
буфения
роводля
нения кода; в буфер 0 мы начнем пи- ред концом цик ла:ши
таточно боль
в тексто
таночек старой водстве мы
гателя пред ла
сить его
ко что заверy Pi. ПО
лируе
контак тов ог
дыусдви
лось наше
мощно- с
хоно
стью
него высказыва
y Pi
> Малийские
Вы
приклю
в /etc/php5_size и изме
нуться
недав
мож
единенных
ру ко
.
и контро
шестое ме
изменения их
сать на Ruby.что приставки стоимо
про его
лачдети учат
щийся
гическим
Raspberr
так же
выход с объ
для Raspberr
play 70
Так же я ак
роприятие.
ляемый метод
В данном
ся на ваших
полагаю,
мире об
больших ет да же на
тает с 5-В ло
тов станет
управ
ку OwnCloud
ных,
и post_max да же 2G.
на рынке,
тановках танов
тивно уча
ния в
и в не
лю- ro: «Я Первая стро
ваших проек
А. Вход рабо
застарых Pi.
каиметь
кода игспрос
рает ноту, Sonic Pi использует MIDI (цифfilesize
бота
ус
ния дан
ных ус
тиве Raspbian
ствую в раз
или
нологий.
sleep pace
батывать от
Code Club
че- чен 1
так что скорость
до £ 15 будут
хране
бования хорошо ра
всести,php-apc,
ст ри бу
витии
ных тех
1024М
лее круп
аксессуаускорить install
от £ро10вой
но может сра
так же имеет
во Франции
пить
к для
интерди
фейс
ные тре
лучше
тятзыку
каль
вроде
ных инстру ментов) для представ лечтобы
но, в бо
устройством,
Explorer pHAT
за хому
В, что очень
дом —
сти
5
(и
мой.
Да
лее
циа
мы
до
до
лю
дру
ба
вим
но
не
скром
руе
apt-get
станUSB-дис
ко
В
то
наль
APC,
рый
и
—
ку
код,
2
тив
что
не
бы
ваш
гих
со
дер
жать
варь
ма
—
pHAT
сколь
в области
ини- наш цикл
тель
Pi это
пония
ния от
как
СОВМЕСТИМО
бится
вающий
Опцио
и Explorer
нот числами,
так что
для ноты «до» мы используем 60: play 60. в потоке. В Ruby лег
ко га).
щью sudo
изводи
бого напряже
тор PHP
таких,
вых входа (для
те
вытяги
пона до
звуковыми сенPi дал
ко опе
ровать с дин
Raspberry
этих устройств»,
потоками,
так что мы можем
вер,
тыре аналого
селера ненты с помо
дах —
мнеришанс
добавь
сти и про танием, не
ры для
боте с ультра СО ВСЕМИ
так же
платах Arduino),
Затем на жмите кнопку Run. Если ничего не слышно, на жмите запус
пу шест
вить ак
APC и
вать сер
по
дежно
ставлено на
удобно при ра
пи
B. Вам
красным даттить код в инего
сколь
ко потоков.те
во мы используем это
ворить
ной на
те ком
из них. |
дартно, но пред
Model
стейстройки
в проек те анаодин
номным начать настраи
сивным инфра
о «цифроВ Sonic Piвать
Pi
на меню Prefs и измените аудиовыход в соответствии с вашим уст- для
сималь
Загрузи те файл на
с авто
использовать
рес. Про
сорами и пас
вом
создания сло
нии»
ев соз
даваемой му
зы
ки.образова/conf.d
плюс
и для мак зовать диск
позволяющие
крой
ж де чем ческий IP-ад ному MACмассу новых
как DHT 11/22.
ройством. Вы должны услышать звук «бом».
0-apc.ini
тем от
Pi. Пре
/etc/php5
чиком (PIR).
соры, такие
Наш код теперьПо
стати
будет
выглядеть
комств.
такзна
(пом
mkdir
ните, что начав цикл
/conf.d/2
к уникаль роутера.
го исполь Raspberr y
логовые сен
5-В входов
части
применения
y Pi есть
$ sudo
из
идет с набором
IP-адрес
шего
с do, мы должны
нозва
ми
стиер
с end, тотPiже
и чис
nano /etc/php5
Плата так же
прин
гим!
ния ва
цип применяетэнергию что у Raspberr привязать
сошить
общеего
ленния с дру ги
ства Фран
$ sudo
щью
—
рирова
дет дру
исполь зова
тесь,
для
ся и к потокам):отстает
помо
=apc.so
ция сильно
ваш бу
минист
понская ком
лать это
убеди
и вы хосдов
от других
Apache
.111, но
extension
нице ад
соб сде
пания под
стран. Мы
pHAT весьpace = 0.3 ся, что в
ТИМО
грузив
led=1
названием
бота ла пла
на деемший спо
Pi на стра Pi за 192.168.3
2016 г. это
переза
Python для Explorer 2 и 3. ИсСОВМЕС Pi
apc.enab
Idein разрату мульти-Pi,
вашего
изменится.
шего
Библиотека
Explorer pHAT
готовить
size=12M ширование,
in_thread do сложное
версии
чать и взаи
адресу
способную
рес на
Самое
пакеты
здесь —
и охватывает
пора под
те кэ
наС ПК И
apc.shm_
едагоги!
модейство
подклюмем ад
преодолеть
вероятность,
ма надежна
по ни ма ния Разработчик: Pimoroni ni.com
рован;
loop do ковой барь
включи
На зависть
в терми
загрузить бавьте
вать с 16-ю
Мы при
языпро стой для
что у этого
Затем
до
фигури Pi и введите
своим мас
ер. Да же
можно
l restart
Pi Zero. Есть
тым друзь
ни- Сайт: https://shop.pimoro
, если
нал и
чально как
самые «франпродук та,
поль зуя очень
в
теровиplay 60 кофонные»
лять со стоя
ям и колле
apachect строен и скон
на Debian, тите терми
за думанно
основа для
на: Ј 10
8/10
мож но управ
гам, запи
на
как /dev/sda1 на софанаты за
$ sudo
на Picademy,
плате. Це
го изнанаучных
основан
чите USB-диск
будет и ком
син так сис,
сывайтесь
ние
Запус
рован
частую ре
сервер
sleep pace
ют подтя
ность
выходов на
проек тов
проводимую
честере со
8/10
мер
Подклю
шаИтак,
нуть англий
смонти ратите внима
ва входов и
на базе GPU,
Функциональ ность
ку Raspbian рия Debian.
0. Тестоял
@Google.
нения.
ly/LXF208clus ческий релиз. Не про
ем множест
ский, бла
ries/isv:/
play 70 этому «на
тель
ное изменение
В Ман9/10
Посколь из репозито
во хра
щью
ков. Об
рывный курс ся бесплатный, двух
но, USB-диск
годаря
пустите!
ter
Производи
нокомпью
/reposito
бие 6154-F66
такие как плав
ources.
средст
с помо
те
Вероят
http://bit.
дневный
дой
повышения
теру». Для
Режимы —
реключате9/10
гих USB-дис дит наподо
во в рабо
sleep
пе
pace
ман
глав
и
ст
nsuse.org tee /etc/apt/s
blkid.
OwnCloud
Непреко
ние
ной
дру
Удоб
Professional
га
OwnCloud
ква
ме
фигурой
ня
лификации
ла, ми
выгля
ле sudo
диска,
плено
ют
тории
nload.ope /’ | sudo
ность цены
Development]
Pi во Фран
уровня сиг на
[Continued
end
ляется Фран
Оправдан
вас и упроща
прикре
репози
который вания этого
нопреподава
n_7.0/
для профес
тываются за
UUID,
суа Мок [Francoisции яву вас не
функциональ
‘deb http://dow
телей.
тиро
сиональных
ity/Debia
ли — обраба
end
ет должной
преподава
$ echo
ния.
вующий ку для мон
ries/
ры, а библиоMocq],
» Снабжа
Занятия про
:commun
тель ин
цесс привыка
аппарату
ответст
я
пап
/reposito
новичкам про
матиски,
со всеми не- стью хакеровпревосходна.
Теперь бло
дайте
созда
ownCloud
еще одинфор
wncloud
поток,
друвгим
ге дим
зуя
Скора ь
набором нот. В этом
Garage Google ходили в новом зда
=33 /dev/sda1
(www.framboi
nsuse.org /Release.key
чьем
совместима
cloud.list
перь соз
/media/o
исполь
рию тека Python
нии Digital
Explorer pHAT
se314.fr)
1-2 марта
id=33,gid
nload.ope
слу чае мылее
помощ
диск,
mkdir
ско600
list.d/own
пиру
и
вим
сывается в се
исходуже
ныйбопоток и понизим выupdate.
и 22-23 мар
2016, 14-15
поем
руйте
07,auto,u
стов.вста
$ sudo
отлично впи
http://dow munity/Debian_7.0
систекоОн уже стал
та 2016. Под
марта 2016
смонти
давними Pi и
соту звука.
ey
ловаястой язык лиотеки
$ wget
из самых
sudo apt-getвисимоне хватать ем
-o umask=0
одним
робно
PicademyGoog
Затем
дой $
loud:com - < Release.k
продавае
за
ка фай Проно
Да, нам будет
-t vfat
смонмые биб
просмотная
мощ
мых авто
коман
leManchester сти — на http://bit.ly/
го дис
плат Explorer.
Прилагае
in_threadв do
туибуемые загрузит
mount
isv:OwnC
Makey [MaKey
Чтобы
add
сфере ИТ
Мала, но
ров
у ваше хода, коррект
тистипе-вительно ин сро$ sudo
обновить
в стиле Makey
все тре
уди
и сейчас
же
apt-key
четыре выгда диск
Python
гает, что
реть ста
> Sonic Pi имеет очень понятный интерфейс, что способствует его
помогает
wncloud
бы обес
стных входов
Улаплаты
можно OwnCloud и
loop doпереводить
$ sudo
к пред ме там
чайшие
и спе. Ко
root.
. Это так
APC,
мне
тории
на каждый, fstab, чтотивны, и в крат
/media/o
предпопо 500/dev/sda1
ставка-тачпад
учебные
вер
ку кэша те его
owncloud задать пароль деносвоению. Ему вторит и исключительно чистый и легко читаемый
на мА ванные
Репози
манда
H-конфайл
мате
MaKey — при
те создавать
play Raspberry
50
— прим. пер.],
install
руй
ви те сер
ве
роровать
Эта ко
ки вы буде
зити
тирован
просят
Pi Foundation, риа лы
скопи
циали
apt-get
го пользования,
шепри
ус тано
в редакторе код Ruby.
ты.
годные для
в ваш
и он мон
повседневно
и вас по
$ sudo
sleep
тов, вы
отредак
Затем
стаpace
чтобы они
свои проек
чтобы
леры, при
ние:
ли доступ
скрипт
LXF208 | 89
понен
oot с поMySQL,
ма FAT32 вы сможете тролмон
мощью
тирова
ны француз
Апрель 2016
вер Apache,ной рамых ком
данных
сти с по
клонникам
5-В моторов.
ся,
DocumentR /usr/
ским потребуе
тическое
cp
тирует
ит базу
Pi.
ит web-сер коррект
автома
мощью phpapc/
тановке
и настро
настро
d. Для
мо ду ли
90 | LXF208 Апрель 2016
t.ru/subscribe
вок к ус
чить ему
www.linuxformat.ru/subscribe
тически кой OwnClou
share/doc/
лен ные
Вдоба
www.linuxforma
/var/www/
автома
оп ре де
нов
apc.php
манда
с ус та
> Pi — это
просмотвклю чить
ная ко
вовать
ся
ст
си
и затем стику
ла!
бит
дей
до
ти
88 | LXF208
взаимо
d по на
рите ста зере
Апрель 2016
cribe
OwnClou в термина ле
t.ru/subs
в web-брау lhost/
боты
те
Введи
uxforma
на http://loca
Apache.
www.lin
www.linuxfo
данных
своих Вкратце
хранение
троль
» Pimoroni созка.
дал очередпод кон лизе обла
ную плату-прире
взять
ставку в серии
вает, как в свежем
ных
плат, нацелен
показы туп к ним
лей
на мыслите
ноных.
дос
Шарма
подоб
и самоделки
ная
Маянк деленный
го Dropbox- с крупной
Разработан
десу ще
ставания третьей
во вез
для нового Pi
удобст
и распре
речи рас
данных
коZero, но совмесбез го
ли вам
Лес Паундер рассматривает, как немного изучить Ruby, программируя Raspberry
Pi и сочиняя фрагмент случайной музыки с Sonic Pi.
Привет...
К
К
Н
обзоров и
учебников
от Raspber
ry Pi
Pi для ре
бенка...
Пожертвуй
из Мали, те свой неисполь
в западной
зуе
Африке. мый Pi детям
R
Темп и потоки
1 × 16 = Pi!
ные
Исключитель
функции
loud
ка OwnC
Установ
Бойтесь прошивок
АНБ может заставить
Intel внедрить уязвимость
в их процессоры
Мэтью Гэрретт — об ужасах прошивок с. 38
Сравнение
База данных NoSQL
Кодирование видео
Рулим MongoDB
» Тестируем самые шустрые
транс­кодеры для высокого разрешения
Вердикт
навскидку
Свойства
Кластер Multi-P
i—
штука инте
ресная.
Я
Учите Pi
Состоялись
мартовские
курсы.
П
Рейтинг 8/10
apc.php.
92
| LXF208
rmat.ru/subs
Апрель
cribe
2016
Плюс: Для Pi!
8-страничный гид по Raspberry Pi
» Кoдируем на Ruby и на Pi
» Сервер документов OwnCloud 8.0
» Pi Zero Explorer pHAT
» Освоим любимую
Интернетом базу данных
ПОДПИСНЫЕ ИНДЕКСЫ В КАТАЛОГАХ
Агентство «Роспечать» — 36343,
«Почта России» — 11932, «Пресса России» — 90959
iteleradio.ru
Приветствие
Что мы делаем
» Мы поддерживаем открытое сообщество, предоставляя
источник информации и площадку для обмена мнениями.
» Мы помогаем всем читателям получить от Linux максимум
пользы, публикуя статьи в разделе «Учебники»: здесь каждый
найдет что-то по своему вкусу.
» Мы выпускаем весь код, появляющийся на страницах раздела
«Учебники», по лицензии GNU GPLv3.
» Мы стремимся предоставлять точные, актуальные и непред­
взятые сведения обо всем, что касается Linux и свободного ПО.
Кто мы
Во­прос на­шим экс­пер­там был та­ким: в дан­ном но­ме­ре
мы изу­ча­ем ха­кер­ские сек­ре­ты — ка­ков ваш са­мый боль­шой
или лю­би­мый сек­рет Linux, ко­то­рый, по-ва­ше­му, дол­жен
знать ка­ж ­дый?
Уг­ро­зы и рис­ки
Ха­кер­ские ата­ки, кра­жа дан­ных, DDoS — па­ни­че­­ские со­об­ще­ния о та­
ких про­ис­ше­ст­ви­ях по­яв­ля­ют­ся в но­во­стях чуть ли не ка­ж ­дую не­де­лю.
Ка­жет­ся, что мир сто­ит на гра­ни ка­та­с т­ро­фы, и за­д а­ча обес­пе­че­ния
ин­фор­ма­ци­он­ной безо­пас­но­сти прак ­ти­че­­ски не ре­шае­ма. Так ли это?
С од­ной сто­ро­ны, мы дей­с т ­­ви ­тель­но не мо­жем га­ран ­т и­ро­вать от­с ут­с т ­­вие
уяз­ви­мо­стей в про­грамм­ном обес­пе­че­нии и ап­па­ра­т у­ре. Мож­но го­во­рить толь­ко
о ве­ро­ят­но­стях. Ад­ми­ны то­же не иде­а ль­ны. Имен­но их ошиб­ки ча­ще все­го и при­
во­д ят к пе­чаль­ным по­след­ст­­ви­ям. А от «от­ка­за в об­слу­жи­ва­нии» во­об­ще ни­к то
не за­стра­хо­ван. Лю­бую сис­те­му мож­но пе­ре­гру­зить за­про­са­ми, лю­бой ее ком­
по­нент мо­жет ба­наль­но сло­мать­ся.
С дру­гой сто­ро­ны, тео­рия учит нас, что риск ИБ воз­ни­ка­ет толь­ко то­гда, ко­
гда ис­точ­ник уг­ро­зы мо­жет с той или иной ве­ро­ят­но­стью ис­поль­зо­вать уяз­ви­
мость. Эту ве­ро­я т­ность мож­но и долж­но умень­шать. Во­прос толь­ко в «це­не
во­про­са». Вот тут-то и при­хо­дит­ся вы­чис­лять риск — сум­му этих двух ве­ро­ят­но­
стей, ум­но­жен­ную на ве­ли­чи­ну ущер­ба. Опыт по­ка­зы­ва­ет, что по­след­нюю мно­
гие склон­ны пре­уве­ли­чи­вать. Да­лее все про­с то — за­тра­ты на за­щи­т у долж­ны
быть аде­к­ват­ны рис­­к у. Не все уг­ро­зы ак­т у­а ль­ны, не все рис­­ки не­при­ем­ле­мы.
Глав­ное — без па­ни­ки!
»» Джон­ни Бид­велл
В ме­ню на­строй­ки яд­ра, ес­ли вы ище­те сим­вол
и на­жи­мае­те но­мер, со­от­вет­ст­вую­щий ему в ре­
зуль­та­тах, вы по­па­дае­те пря­мо на не­го, а не ище­те
путь к не­му са­ми. Ну да, при по­ис­ке ра­бо­ты поч­ти
то же са­мое, но до не­дав­не­го вре­ме­ни эта жем­чу­
жи­на от ме­ня ус­коль­за­ла.
Ник Пирс
Вот вам хак ино­го ро­да — я его от­крыл, со­би­
рая из Raspberry Pi Zero при­ем­ник AirPlay для
жур­на­ла Mac Format. Я ском­би­ни­ро­вал его
с ЦАП за £ 15 от http://iqaudio.co.uk и бле­стя­
щим ди­ст­ри­бу­ти­вом Pi MusicBox — и по­лу­чил
от­пад­но-по­тря­саю­щий звук!
Лес Па­ун­дер
Я люб­лю спо­соб по­ис­ка в пре­дыс­то­рии Bash.
Я час­то поль­зу­юсь со­че­та­ни­ем кла­виш Ctrl + r для
ин­те­рак­тив­но­го по­ис­ка ко­ман­ды в мо­ей ис­то­рии,
что­бы не ша­рить там с по­мо­щью grep. И мож­но
по­вто­рить ко­ман­ду, най­дя ее за­пись в ис­то­рии
и вве­дя ее но­мер с пре­фик­сом ‘!’.
Кирилл Степанов
Главный редактор
» info@linuxformat.ru
Ма­янк Шар­ма
Во­об­ще-то это не сек­рет, но ма­гия кла­ви­ши SysRq,
ве­ро­ят­но, ут­ра­че­на для мно­гих но­вых поль­зо­ва­те­
лей Linux, тем бо­лее что са­ма кла­ви­ша из мно­гих
но­у т­бу­ков ис­чез­ла. По кла­ви­ше SysRq/PrtSc мож­но
пе­ре­дать ко­ман­ду пря­мо в яд­ро Linux, что обыч­но
при­ме­ня­ет­ся для ак­к у­рат­но­го пе­ре­за­пус­ка за­вис­
шей ма­ши­ны.
Ва­лен­тин Си­ни­цын
Enter, тиль­да, точ­ка пре­ры­ва­ет за­вис­шую на­мерт­во
сес­сию SSH. Этот про­стой трюк сэ­ко­но­мил мне
уй­му вре­ме­ни. Уз­най­те боль­ше в Enter, тиль­да,
знак во­про­са.
Как с нами связаться
Письма для публикации: letters@linuxformat.ru
Подписка и предыдущие номера: subscribe@linuxformat.ru
Техническая поддержка: answers@linuxformat.ru
Общие вопросы: info@linuxformat.ru
Проблемы с дисками: disks@linuxformat.ru
Вопросы распространения: sales@linuxformat.ru
Сайт: www.linuxformat.ru, группа «ВКонтакте»: vk.com/linuxform
> Адрес редакции: Россия, Санкт-Петербург, пр. Медиков, 5, корп. 7
> Телефон редакции: (812) 309-0686. Дополнительная информация на с. 112
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 1
Содержание
«Это не я не умею хранить секреты, а те, кому я их доверяю.» Авраам Линкольн
Обзоры
Deepin 15 ������������������������� 14
Дистрибутив на базе Ubuntu перекочевал
на Debian и на этом как минимум не проиг­
рал. Удобен в использовании и не запутает
новичков.
Защититесь онлайн
и научитесь прикрывать
свои сервера от атак с. 30
> Отход от эстетики Ubuntu явно
не повредил рабочему столу Deepin.
Solus 1.0 �������������������������� 15
Новичкам в этом месяце повезло — вот
им еще один впечатляющий дистрибутив.
Даже мы его зауважали.
Срав­не­ние:
Видеотранскодеры с. 24
Da Vinci 1.0 Jr. ������������������� 16
Невероятно дешевый 3D-принтер вполне
может поспорить по каче­ству даже с глав­
ными игроками на этом поле.
Acer R11 �������������������������� 17
Легким движением руки вы сможете прев­
ратить этот хромбук в планшет, благодаря
шарниру на 360.
> Крутится во все стороны! И не впервой,
а все-таки круто.
Lenovo Chromebox Tiny �������� 18
Все помешались на хромбуках, и Lenovo
решила тоже установить ChromeOS. И полу­
чился отличный миниатюрный ПК, впору хоть
и для офиса.
Football Manager 2016 ��������� 19
Время заняться футбольным менеджмен­
том! Не так чтобы глобальным, но хотя бы
в микроварианте...
4 | LXF208 Апрель 2016
Интервью
Процесс, запущенный
обычным пользователем, вдруг получит
права root.
Мэтью Гэрретт — об ужасах эксплойтов в прошивках c. 38
www.linuxformat.ru/subscribe
6
минимальный
ed —
диска
копируйте
брелок.
роки
атов
ание на обороте »
На ва­шем бес­плат­ном DVD
Fedora
Security Suite
Fedora Security 32-битный,
Kali 2.0 Light 64-битный,
Manjaro 15 64-битный
32-битный
С такой обороной вы будете в безопасности
» Сканирование сети
» Тесты на вторжение
» Взлом сайтов
» Атаки грубой силы
Плюс!
Kali Light 2.0
Инструмент крутого хакера
Manjaro 15
НОВЫЙ
РЕЛИЗ
Мощный дистрибутив со скользящими
обновлениями, любому по силам
LIVE-ДИСК: ГОТОВ К РАБОТЕ
ВСЕ НЕОБХОДИМОЕ ДЛЯ СТАРТА В LINUX
По­ба­луй­те се­бя и лю­би­мых
под­пис­кой на LXF!
о
Доступнre!
o
в AppSt
»»Ка­ж­дый ме­сяц — толь­ко луч­шие ди­ст­ри­бу­ти­вы
64-битный
ПЛЮС: GParted и многое другое! с. 106
Поль­зо­ва­те­лям Raspberry Pi
www.linuxformat.ru/subscribe
Ищи­те в номере
Новости Pi ���������������������������� 88
Загружаем всё! ���������������������� 42
Двойная загрузка? Фи, отстой из 2015 года. Модный
тренд — мультизагрузка! Ставим столько ОС,
сколько душе угодно.
Помогите детям в Mali и оцените ситуацию с Pi
во Франции, а также мощь кластера Pi Zero.
Explorer Pi HAT ���������������������� 89
Мы порезвились с замечательной новейшей приставкой
к Pi Zero — отличная штука!
Ruby и Sonic Pi ���������������������� 90
В этом Sonic Pi скрывается Ruby; ну как не поэксплуати­
ровать подобный факт?
OwnCloud 8.0 ������������������������ 92
Изучаем новые свойства облачного сервера ownCloud
и настраиваем на Pi свой собственный.
> Запихиваем дистрибутивы пачками.
Академия кодинга
Учебники
Букварь по Swift ������������������������������� 80
Ключевые утилиты
Apple всех удивила: создала свой язык Swift и выдала его
в открытый доступ. Поговаривают, что языку PHP после
этого остается только нервно курить в сторонке, горюя
о невостребованности.
Это нам запросто — хоть по алфавиту, хоть
по возрастанию.
Сортируем ����������������������� 52
Рабочий стол Unity
Управляем иконками ���������� 56
MongoDB для админов ����������������������� 84
Приведем в порядок иконки на рабочем столе,
чтобы они радовали глаз и концентрировали
вас на главном.
Ваш личный сервер NoSQL с точки зрения администрирования:
приобщаемся к основам. Запросы, индексы, репликация...
и загадочное шардирование.
Поиск неисправностей
Запуск Ubuntu ������������������� 58
Разберемся с неприятностями при загрузке
системы и истребляем их.
Постоянные рубрики
Gentoo
Portage — это просто ���������� 62
Новости �������������������� 6
Интервью LXF ����������� 38
HotPicks ����������������� 100
Samsung братает Android и Windows,
Linux шагает на ноутбуки, атаки
посредника блокированы, WD купила
SanDisk, Ubuntu скрестили с BSD
и засунули в Windows, Intel выдала
новые SSD-накопители, а супер­
крмпьютеры специализируются.
Мэтью Гэрретт предупредил: пока
не открыты драйверы и прошивки
устройств, безопасности не будет.
Отведайте горяченького! Лучшие
в мире новинки свободного ПО:
Biniax, Boxes, Let’s Encrypt, Mixxx,
MP3fs, Mumble, PeaZip, Qemu, Sprut.io,
SuperTux, Zeal.
Мобильные новости ��� 20
Samsung возражает против фрагмен­
тации и выпускает SSD-накопители
для смартфонов, Android пришел
на ПК, а BlackBerry отменяет або­
нентскую плату.
Сравнение ��������������� 24
Вам надо перекодировать виде­
офайлы? Мы припасли для вас
кое-что: FF Multi Converter, Handbrake,
IFME, QwinFF, VLC Media Player.
Рубрика сисадмина ���� 46
М-р Джолион Браун демонстрирует,
что настройка контейнерной инфра­
структуры — это вовсе не больно,
и сообщает, что сертификация
Let’Encrypt вошла в полную силу.
А также про ошибку OpenSSH.
Ответы ������������������� 96
ВАШИ ПРОБЛЕМЫ РЕШЕНЫ!
Нейл Ботвик — про установку ремикса
Ubuntu, начало работы с Tails Linux,
обновление с Ubuntu LTS, перенос
Grub из MBR в загрузочный раздел,
подключение Android к Linux, выбор
между метками разделов и UUID.
Диск Linux Format ����� 106
Содержимое двустороннего DVD
этого месяца.
Пропустили номер? ��� 108
Ну вот, вы не узнали, как избавиться
от Windows 10... но это пока еще
поправимо.
Отметем обвинения в том, что мы пишем
руководства только для Ubuntu.
Отладка среды
Procenv ��������������������������� 64
Изучим удобнейший инструмент отладки,
который помогает привести в чувство среду
разработчика.
Облачное хранение
Hadoop ���������������������������� 68
Перекидываем свои вычисления по Большим
Данным в облако и обратно.
My SQL Fabric
Работа с шардами �������������� 72
Принимаемся за ферму серверов не подетски — создаем схему шардирования.
Через месяц ������������ 112
IP-телефония
Linux повсюду — от дронов до теле­
фонов и светофоров. Посмотрим,
что за интересные устройства на нем
работают.
Изящно завершаем серию статей набором
номеров и настройкой автоответчика.
www.linuxformat.ru/subscribe
Диалплан и диалог ������������� 76
Апрель 2016 LXF208 | 5
Новости
Новости
В ЭТОМ НОМЕРЕ: Связь смарт­фо­нов » Linux на но­ут­бу­ках » Про­слуш­ка за­труд­ня­ет­ся » Удач­ное
по­гло­ще­ние » Ubuntu с ядром BSD » Ubuntu... в Windows! » Су­пер-дис­ки » HP спе­циа­ли­зи­ру­ет­ся
НАВОДИМ МОСТЫ
План­шет с функ­ци­ей Flow
Samsung пы­та­ет­ся пре­одо­леть сте­ну ме­ж­ду Android и Windows.
F
low — но­в ая функ­ц ия Galaxy Tab­
Pro S — по­зво­лит входить в сис­те­му
на этом план­ше­те с по­мо­щью смарт­
фо­на. Samsung, вслед за Apple, хочет уст­
ра­н ить раз­р ыв ме­ж ­д у свои­м и Androidсмарт­ф о­н а­м и и уст­р ой­с т­в а­м и Windows.
Благодаря Flow план­ш ет с Windows 10
сможет эф­фек ­т ив­но ра­бо­т ать с Androidсмарт­фо­на­ми Galaxy. Ис­поль­зуя ска­нер от­
пе­чат­ков паль­цев сво­его смарт­фо­на, поль­
зо­ва­тель смо­жет вой­ти в сис­те­му TabPro S,
где та­кого ска­нера нет. Войти в TabPro S мо­
жно будет и с по­мо­щью ком­би­на­ции зна­ков
для ау­тен­ти­фи­ка­ции на смарт­фо­не. При­ло­
же­ние Flow, ус­та­нов­лен­ное на смарт­фоне,
по про­т о­ко­л у NFC пе­р е­д а­е т на TabPro S
ин­фор­ма­цию об ау­тен­ти­фи­ка­ции; Flow по­
зво­ля­ет уве­дом­ле­ни­ям о те­ле­фон­ных звон­
ках и тек­с то­в ым со­о б­щ е­н и­я м, по­л у­ч ен­
ным смарт­ф о­н ом Galaxy, ото­б ра ­ж ать­с я
так­же и на TabPro S — как у «ум­ных» ча­
сов Samsung Gear; на­ко­нец, Flow свя­зы­ва­ет
TabPro S с мо­биль­ной точ­кой дос­т у­па Wi-Fi
на смарт­фо­не Galaxy.
Дис­плей TabPro S мо­жет ото­бра­жать­ся
на эк­ра­не Samsung TV — смарт­фо­ны Sam­
sung дав­но на­у чи­лись управ­лять те­ле­ви­
зо­ра­ми, а так ­же «ум­ны­ми» хо­ло­диль­ни­ка­
ми и сти­р аль­ны­ми ма­ши­н а­ми ком­п а­нии.
Но по­пыт ­к а со­вме­с т ­ной ра­бо­т ы Windows
и Android соз­да­ет про­блемы, из-за раз­ли­
чий в ко­дах и про­то­ко­лах. «С Flow свя­зана
масса воз­мож­но­с тей, но Samsung не оп­
ре­де­лил, ка­кие до­бавоч­ные функ­ции в не­
го встроят», ска­зал пресс-сек­ре­тарь ком­
па­нии на пресс-кон­фе­рен­ции в Нью-Йор­ке.
TabPro S — пер­в ый план­ш ет Galaxy
на Windows. В США по­с тав­к и на­ч а­л ись
17 мар­та, це­на мо­де­ли на­чаль­но­го уров­ня,
$ 899, та­к ая же, как у ба­з о­в ой Microsoft
»»Рубрику готовил
АНДРЕЙ
ГОНДАРЕНКОВ
Surface Pro 4 с ана ­л о­г ич­н ой кон­ф и­г у ­р а­
цией, с чи­п ом Intel Core M3 и на­ко­п и­т е­
лем 128 ГБ. Тол­щ и­н а план­ш е­т а 6,35 мм,
вес 680 г. Изю­мин­ка план­ше­та — дис­плей
Super AMOLED с раз­ре­ше­ни­ем 2160 × 1440
пикс. У OLED-эк­ра­нов бо­лее «соч­ные» цве­
та и луч­ше энер­го­эф­фек­тив­но­сть, так как
у них от­сут­ст­ву­ет под­свет­ка.
> Galaxy Tab Pro S:
от­вет Samsung
на тренд two-in-one,
на­ча­тый Microsoft
Surface Pro.
НОУТБУК ДЛЯ LINUX
Стра­те­гия Dell по Linux-ПК
И
зящ­ный ди­зайн ново­го но­у т­бу­ка
от Project Sputnik, Dell XPS 13
Developer Edition, за­став­ля­ет пе­
ре­смот­реть мне­ние о не­в зрач­но­с ти но­у т­
бу­ков с Linux. За­дей­с т­во­ван­ные в XPS 13
DE тех­но­ло­гии — эк­ра­ны 4K, про­цес­со­ры
Intel Skylake, вы­со­ко­ско­ро­ст­ной ин­тер­фейс
Thunderbolt 3 — уже при­выч­ны в Mac OS
и Windows, но на но­у т­бу­к ах с Linux по­к а
еще в но­вин­к у. XPS 13 с Ubuntu 14.04 LTS —
ку­зен вы­шед­ше­го ра­нее в этом го­д у та­ко­
го же но­у т­бу­к а с Windows 10. Вы­п ус­т ить
обе мо­де­ли од­но­вре­мен­но не уда ­лось из-за
6 | LXF208 Апрель 2016
не­го­тов­но­сти драй­ве­ров для Linux; отста­ла
также под­держ­ка чи­пов Skylake в Ubuntu,
за­яв­лен­ная толь­ко 18 фев­ра­ля. При этом
XPS 13 DE не ог­ра­ни­чи­ва­ет­ся лишь Ubuntu,
Dell мо­жет сер­т и­ф и­ц и­р о­в ать его ра­б о­т у
и с дру­ги­ми ди­ст­ри­бу­ти­ва­ми Linux.
Сей­час Dell ра­бо­т а­е т над под ­держ ­кой
док-стан­ции для Linux-вер­сии XPS 13 DE,
что обес­пе­чит до­пол­ни­тель­ные пор­ты рас­
ши­р е­н ия (у Windows-вер­с ии под­д ерж­к а
док-стан­ции уже есть). А вот та­к ую отлич­
ную функ­ц ию, как Windows Hello в Win­
dows 10, для вхо­да в сис­те­му по­сред­ст­вом
www.linuxformat.ru/subscribe
био­мет­ри­че­­ской ау ­тен­ти­фи­ка­ции, Dell смо­
жет реа­ли­зо­вать в Linux-вер­сии толь­ко ког­
да ее встроят в ОС раз­ра­бот­чи­ки.
Project Sputnik, за­д у­ман­ный 4 го­д а на­
зад ве­д у­щим ин­же­не­ром CTO Dell и эн­т у­
зиа­стом Linux Бар­то­ном Джорд­жем [Barton
George], при­зван ус­ко­рить адап­та­цию но­
вых ап­п а­р ат ­н ых тех ­н о­л о­г ий в но­у т ­б у ­к и
с Linux. Dell — круп­нейший про­из­во­ди­тель
ПК с та­кой мас­штаб­ной под­держ­кой Linux.
Но­у т­бу­ки с Linux пред­ла­га­ют и дру­гие про­
из­во­ди­те­ли, скажем, System76, но самый
ши­ро­кий ох­ват обес­пе­чи­ва­ет имен­но Dell.
Ис­точ­ники: www.computerworld.com
Но­ут­бу­ки Project Sputnik сти­му­ли­ру­ют к пе­ре­хо­ду на Linux c Mac и Windows.
Новости
ПОД ПРОТОКОЛ
Ме­ха­низм SMTP Strict
Transport Security
Тра­фик элек­трон­ной поч­ты по­лу­чил шиф­ро­ва­ние, не­уяз­ви­мое
для атак «по­сред­ни­ка».
С
о­труд­ни­ки ря­д а круп­ней­ших ми­
ро­вых про­вай­де­ров элек ­трон­ной
поч­т ы объ­е­д и­н и­л ись в по­п ыт­ке
улуч­шить безо­пас­ность поч­то­во­го тра­фи­
ка, про­хо­д я­щ е­г о че­р ез Ин­т ер­н ет. Раз­р а­
бо­т ан­ный ин­же­не­ра­ми Google, Microsoft,
Yahoo, Comcast, LinkedIn и 1&1 Mail & Media
Development & Technology ме­ха­низм SMTP
Strict Transport Security, по­зво­ляю­щий по­
став­щи­кам ус­луг элек­трон­ной поч­ты оп­ре­
де­лять по­ли­ти­к у и пра­ви­ла для соз­д а­ния
за­шиф­ро­ван­ных со­об­ще­ний email, сфор­
му­л и­р о­в ан в про­е к ­т е, опуб­л и­к о­в ан­н ом
в сре­д и­не мар­т а для рас­с мот ­ре­ния в ка­
че­­с т­ве стан­д ар­та Internet Engineering Task
Force (IETF).
Ны­не дей­ст­вую­щий про­то­кол SMTP вос­
хо­дит к 1982 г. При его соз­д а­нии ни­ка­кие
оп­ции шиф­ро­ва­ния не пре­ду­смат­ри­ва­лись,
по­это­му в 2002 г., как спо­соб вклю­чить TLS
(Transport Layer Security) для SMTP-со­еди­
не­ний, в про­то­кол до­бав­и ли рас­ши­ре­ние
STARTTLS. В те­че­ние сле­д ую­ще­го де­ся­ти­
ле­т ия это рас­ши­ре­ние ши­ро­ко­го рас­про­
стра­не­ния не по­лу­чи­ло, и тра­фик email ос­
та­вал­ся в ос­нов­ном не­за­шиф­ро­ван­ным.
Си­т уа­ция на­ча ­ла ме­нять­ся по­сле 2013 г.,
ко­гда че­рез быв­ше­го кон­трак­то­ра АНБ США
Эд­вар­д а Сно­уде­на [Edward Snowden] про­
со­ч и­л ись сек­р ет­н ые до­к у­м ен­т ы, сви­д е­
тель­ст­во­вав­шие о ши­ро­ко­мас­штаб­ном на­
блю­д е­н ии за ин­т ер­н ет-ком­м у­н и­к а­ц ия­м и
спец­служ­ба­ми США, Ве­ли­ко­бри­та­нии и ря­
да дру­гих стран. Тес­ти­ро­ва­ние, про­ве­ден­
ное в мае 2014 г. Facebook, где еже­днев­но
от­прав­ля­ют­ся мил­ли­ар­ды email, по­ка­за ­ло,
что толь­ко 58 % этих пи­сем про­шли че­рез
со­еди­не­ние, шиф­руе­мое STARTTLS. За­то
в ав­г у­сте эта ве­ли­чи­на со­ста­ви­ла уже 95 %.
Од­на­ко, в от­ли­чие от HTTPS (HTTP Se­
cu­r e), STARTTLS до­п ус­к а­е т так на­з ы­в ае­
мое «оп­пор­т у­ни­с ти­ч е­­с кое» шиф­р о­в а­ние
(OE): дос­то­вер­ность циф­ро­вых сер­т и­фи­
ка­тов сер­ве­ров email не про­ве­ря­ет­ся, т. е.
> По данным Google,
шифруются 83 %
исходящих сообщений от пользователей Gmail к другим
провайдерам email,
но только 69 %
входящих сообщений извне поступают по зашифро­
ванному каналу.
та­кие со­еди­не­ния уяз­ви­мы к ата­кам manin-the-middle [че­л о­в ек-по­с ред­н ик]. Кро­
ме то­г о, со­е ди­н е­н ия STARTTLS уяз­в и­м ы
к ата­кам “encryption downgrade [де­гра­д а­
ция шиф­ро­ва­ния]”.
SMTP STS ре­ша­ет обе про­бле­мы. По­ли­
ти­ки SMTP STS оп­ре­де­ля­ют­ся с по­мо­щью
спе­ц и­а ль­ных DNS за­пи­с ей, до­бав­ляе­мых
к до­мен­но­му име­ни сер­ве­ра email. Для кли­
ен­тов про­то­кол пре­ду­смат­ри­ва­ет ме­ха­низ­
мы ав­то­ма­т и­че­­с кой про­вер­к и этих по­ли­
тик и пре­дос­тав­ле­ние ин­фор­ма­ции о сбо­ях.
СДЕЛКИ
WD при­об­ре­ла SanDisk
Ожи­да­ем ин­но­ва­ци­он­ных ре­ше­ний по хра­не­нию дан­ных.
Ис­точ­ни­ки: www.pcworld.com; www.computerworld.com
W
estern Digital Corp. (WD) объ­я­
ви­ла, что ее ак­цио­не­ры одоб­
ри­л и при­о б­р е­т е­н ие SanDisk
Corp за $ 19 млрд: бо­лее 90 % ак­цио­не­ров
компании го­ло­со­ва ­ли за раз­ме­ще­ние про­
стых ак­ций. Слия­ние одоб­ри­ли 98 % ак­цио­
не­ров SanDisk, и этот про­цесс, как ожи­да­
ет­ся, бу­дет за­вер­шен во вто­ром квар­та­ле
те­к у­ще­го го­да.
SanDisk оце­ни­ва­ет­ся в $ 17 млрд, и яв­
ля­е т­с я ос­н ов­н ым по­с тав­щ и­ком про­д ук­
тов NAND flash memory, та­ких как кар­ты SD
и твер­до­тель­ные на­ко­пи­те­ли (SSD). В ок­
тяб­ре ми­нув­ше­го го­да Western Digital пер­
вой объ­я­ви­ла о сво­ем на­ме­ре­нии приоб­­
ре­сти ком­па­нию SanDisk, предупредив, что
вы­пла­ты бу­д ут осу­ще­с т­в­ляться на ­лич­ны­
ми и ак­ция­ми.
Western Digital тоже по­с тав­л я­е т про­
дукты NAND flash, од­на­ко в пер­вую оче­редь
это про­из­во­ди­тель жестких дисков (HDD)
и ПО для управ­ле­ния. По мне­нию ви­це-пре­
зи­д ен ­т а IDC по ис­с ле­д о­в а­ни­ям Джеф­ф а
Яну­ко­ви­ча [Jeff Janukowicz], по­гло­щ е­ние
SanDisk по­з во­л я­е т Western Digital мгно­
венно за­нять проч­ное по­ло­же­ние на ми­ро­
вом рын­ке па­мя­ти NAND flash.
Ком­п а­н ии ИТ-ин­д у­с т­р ии изыскивают
спо­собы ох­ва­тить сфе­ры Ин­тер­не­та ве­щей,
но­си­мых уст­ройств и «об­ла­ков», и в ре­зуль­
та­те в по­след­нее вре­мя на­блю­да­ет­ся вол­на
слия­ний, по­гло­щ е­ний и ин­в е­с ти­ц и­о н­н ой
ак ­тив­но­сти на рын­ке сис­тем хра­не­ния дан­
ных. Со­г ла­ш е­н ие WD и SanDisk сле­д у­е т
вплот­ную за са­мой крупной из ко­гда-либо
за­к лю­ч ен­ных сде­л ок на рын­ке хра­н е­н ия
дан­н ых — по­к уп­кой Dell ком­п а­н ии EMC
за $ 67 млрд. Кро­ме то­го, ком­па­ния-про­
из­во­ди­тель по­лу­про­вод­ни­ко­вых уст­ройств
хра­н е­н ия PMC-Sierra так ­ж е по­л у­ч ила
> Ак­цио­не­ры WD и SanDisk одоб­ри­ли слия­ние двух ком­па­ний:
сум­ма сдел­ки со­ста­ви­ла $ 19 млрд в цен­ных бу­ма­гах и на­лич­ны­ми.
www.linuxformat.ru/subscribe
мно­же­с т­в о пред ­л о­же­н ий о по­гло­щ е­н ии,
а ком­па­ния Unisplendour (Синьхуа, Ки­тай)
со­глас­на приобрести 15 % Western Digital
за $ 3,78 млрд.
Апрель 2016 LXF208 | 7
Новости
ГИБРИДНЫЕ ОС
Сим­би­оз Ubuntu Linux и яд­ра BSD
«В од­ну те­ле­гу впрячь не мож­но ко­ня и тре­пет­ную лань...»?
U
buntuBSD — но­вая опе­ра­ци­он­ная
сис­те­ма с от­кры­тым ис­ход­ным ко­
дом, объ­е­ди­няю­щ ая Ubuntu Linux
с ядром FreeBSD и ин­тер­фей­сом Xfce.
BSD — от­к ры ­т ая Unix-по­д об­н ая ОС,
дол­гое вре­мя ос­таю­щ ая­ся в те­ни Linux —
во­ш ла в мир Ubuntu бла­г о­д а­р я но­в о­м у
open-source про­е к ­т у UbuntuBSD. На­п ом­
ним, что соз­д а­ние BSD на­ча­лось в кон­це
1970‑х гг. (пер­во­на­чаль­но в ка­че­­с т­ве рас­
ши­рен­ной вер­сии ОС Unix от AT&T, а за­тем
и пол­ной ее за­ме­ны) в Уни­вер­си­те­те Ка­ли­
фор­нии (Берк­ли); это бы­ла од­на из пер­вых
сво­бод­но рас­про­стра­няе­мых ОС. В 1990‑х,
по раз­н ым слож­н ым при­ч и­н ам — в ос­
нов­ном, но не ис­к лю­чи­тель­но, свя­зан­ных
с юри­д и­че­­с ки­­ми про­б ле­ма­ми — BSD ос­
та­ва­лась по­за­ди дру­гих сво­бод­ных ОС, по­
стро­ен­ных на ПО GNU и но­вом то­гда яд­ре
Linux. Не­с коль­ко BSD-based ОС со­х ра­ни­
лись и в на­стоя­щее вре­мя: FreeBSD, NetBSD
и OpenBSD, но они ни­ко­гда не име­ли та­ко­го
влия­ния на рын­ке сер­вер­ных и на­столь­ных
сис­тем, как сис­те­мы GNU/Linux.
Те­перь же груп­па про­грам­ми­стов на­ме­
ре­на объ­е­ди­нить один из са­мых по­пу­ляр­ных
ди­с т­ри­бу ­ти­вов GNU/Linux, Ubuntu от ком­
па­нии Canonical, с BSD в но­вой ОС под до­
ста­точ­но внят­ным на­зва­ни­ем UbuntuBSD.
Идея про­е к ­т а — «реа­л и­з о­в ать удоб­с т­в о
и дру ­же ­лю­бие Ubuntu с не ­зыб­ле­мой ста­
биль­н о­с тью и про­и з­в о­д и­т ель­н о­с тью яд­
ра FreeBSD». UbuntuBSD вряд ли ста­нет для
боль­шин­с т­в а та­кой же при­в ле­к а­тель­ной,
как Ubuntu — хо­тя бы по­то­му, что сре­дой
по умол­ча­нию слу­жит Xfce, а не Unity (т. е.
UbuntuBSD бо­лее по­хо­д ит на объ­е­д и­нен­
ный с ядром BSD движок Ubuntu с аль­тер­на­
тив­ным ин­тер­фей­сом). Но тем, кому нужна
на­с толь­ная сре­д а, ме­нее тре­бо­ва­тель­ная
к ре­сур­сам, чем Unity и Gnome, но сим­па­
тич­но вы­гля­дя­щая и обес­пе­чи­ваю­щая ши­
ро­к ую функ­цио­наль­ность, но­вая ОС при­
дет­ся по ду­ше.
В сере­ди­не мар­та UbuntuBSD на­счи­ты­
ва­ла уже поч­ти 5 тыс. за­гру­зок, хо­тя ос­та­
ва­лась в ви­де бе­та-вер­сии, еще не го­то­вой
к про­д ук ­тив­но­му ис­поль­зо­ва­нию. Про­ект
> UbuntuBSD:
ра­бо­чий стол —
Xfce, фай­ло­вая
сис­те­ма — ZFS.
ин­те­ре­сен уже тем, что обес­пе­чи­ва­ет но­
вые воз­мож­но­сти для ин­тег­ри­ро­ва­ния об­
шир­ной эко­си­сте­мы ПО, сло­жив­шей­ся во­
круг Ubuntu, с ядром, пред­ла­гаю­щим ряд
от­сут­ст­вую­щих в Linux воз­мож­но­стей. Это
не го­во­ря о бо­лее ли­бе­раль­ных ус­ло­ви­я х
ли­цен­зи­ро­ва­ния, т. к. яд­ро FreeBSD не ис­
поль­зу­ет ли­цен­зии GNU GPL. Все это мо­жет
по­ро­дить в даль­ней­шем не толь­ко но­вый
тип на­столь­ных ОС, но так­же но­вые сер­вер­
ные или об­лач­ные ре­ше­ния.
НЕ МОЖЕТ БЫТЬ!
WSL: Ubuntu в Windows
В
оче­р ед­н ом круп­н ом об­н ов­л е­н ии
Windows 10, Redstone, Microsoft
пре­д ос­т а­в ит поль­з о­в а­т е­л ям воз­
мож­ность за­пус­кать в род­ном фор­ма­те ко­
манд­ную обо­лоч­к у Bash и дво­ич­ные фай­лы
Ubuntu. При­чем не в кон­тей­не­ре или вир­
ту­а ль­н ой ма­ш и­н е, но с по­м о­щ ью на­т ив­
ных биб­лио­т ек и про­г рамм Windows но­
вой ин­фра­с трук ­т у­ры Windows Subsystem
for Linux (WSL).
WSL бы­ла по­ме­ще­на в код Windows 10
(build 14251) еще в кон­це ян­ва­ря. Не­сколь­
ко дней спус­тя бы­ли до­бав­ле­ны две но­вые
под­сис­те­мы, lxcore.sys и lxss.sys, ори­ен­ти­
ро­ван­ные на Windows-про­грам­ми­стов, раз­
ра­ба­ты­ваю­щих при­ло­же­ния для Linux. Но
ос­нов­ное пред­на­зна­че­ние WSL — под­держ­
ка об­раза Ubuntu в ре­жи­ме поль­зо­ва­те­ля.
Пред­с та­в и­т ель от Canonical Дас­т ин
Керк ­л енд [Dustin Kirkland] под­ч ер­к и­в а­
ет, что речь идет не о пе­ре­ком­пи­ли­ро­ван­
ных от­кры­тых ути­ли­тах Cygwin, а о за­пус­ке
8 | LXF208 Апрель 2016
дво­ич­ных ELF-фай­лов Ubuntu прямо в Win­
dows, bit-for-bit и checksum-for-checksum.
Ос­нов­ной труд­ность был пе­ре­вод в ре­жи­
ме ре­а ль­но­го вре­ме­ни сис­тем­ных вы­зо­вов
Linux в сис­тем­ные вы­зо­вы Windows. Ум­ни­
ки Linux мо­г ут пред­став­лять это как «WINE
на­обо­рот» (нет, WSL еще не open source).
Ути­ли­та sysbench по­ка­зы­ва­ет прак ­ти­че­­ски
эк­ви­ва ­лент­ную про­из­во­ди­тель­ность CPU,
па­мя­т и и I/O. Тем не ме­нее, Canonical ха­
рак ­те­ри­зу­ет ны­неш­нее со­стоя­ние WSL как
бе­т а-ре­л из: «не­д ос­т ат­к и ка­с а­ю т­с я в ос­
нов­ном tty и vt100. Не пол­но­стью функ­цио­
наль­ны по­ка так­же screen и tmux».
Керк­л енд на­п ом­н ил, что Ubuntu —
наи­бо­лее по­п у­ляр­ный ди­с т­ри­бу ­т ив Linux
в Azure и дру­гих «об­лач­ных» сер­ви­сах. На­
тив­ная обо­лоч­ка Ubuntu, встро­ен­ная в ра­
бо­ч ий стол Windows, по­з во­л я­е т сильно
уп­ро­с тить за­пись ко­д а с по­мо­щ ью Visual
Studio, vim или emacs, по­с ле­д ую­щ ее пе­
ре­ме­ще­ние его в «об­лач­ные» реа ­ли­за­ции
> Ко­манд­ная
обо­лоч­ка Bash,
рабо­таю­щая
в Windows 10.
www.linuxformat.ru/subscribe
че­рез git, scp или rsync и об­рат­но. Мно­гие
из этих реа ­л и­з а­ц ий бу­д ут имен­н о Azure
Ubuntu. Ско­р о появится пер­в ый об­р аз
Ubuntu для Windows 10 — Ubuntu 14.04 LTS.
Сменяющий его Ubuntu 16.04 LTS по­падет
в Win­dows Store вско­ре по­сле ре­ли­за 21 ап­
ре­ля (об­раз за­ви­сит от ко­да Redstone, и ему
нужна сбор­ка Windows Build 14251 или но­
вее). Microsoft уже анон­с и­р о­в а­л а ре­л из
Win­dows 10 Redstone 1 (“Anniversary Update”
или Windows 10 SP1) на ны­неш­нее ле­то.
Ис­точ­ники: thevarguy.com; www.zdnet.com
Об­нов­ле­ние Windows 10 по­зво­лит поль­зо­ва­те­лям за­пус­кать внут­ри се­бя Ubuntu.
Новости
ДЛЯ ХРАНЕНИЯ ДАННЫХ
Новости
короткой строкой
SSD-дис­ки Intel
с чи­па­ми 3D NAND
I
> Intel SSD DC
P3320 — пер­вый
SSD ком­па­нии
с чипа­ми 3D NAND.
ст­рее обыч­ных SATA (про­то­кол хра­не­ния
PCIe фор­маль­ное име­нуется NVMe — NonVolatile Memory Express). Ско­ро­сть чте­ния
при про­и з­воль­ном дос­т у­п е [random read
speed] мо­д е­л и DC P3320 — 365K IOps,
а random write speed 22K IOps. Ско­р ость
по­сле­до­ва­тель­но­го чте­ния [sequential read
speed] — до 1600 MБ/с, ско­рость за­пи­си —
1400 MБ/с. Це­на на­ко­пи­те­ля по­ка не на­зва­
на, а по­став­ки нач­нут­ся во II квар­та­ле.
ОТ ОБЩЕГО К ЧАСТНОМУ
В об­нов­ле­ние Android Auto 1.6 до­
бав­ле­на под­держ­ка 18 но­вых стран,
вклю­чая Рос­сию.
Ис­точ­ник: twitter.com
»
В рам­ках про­ек­та Tofino соз­да­ет­
ся но­вый ин­тер­фейс поль­зо­ва­
теля для web-брау­зе­ров; вме­сто Gecko
ис­поль­зу­ет­ся ос­но­ван­ная на движ­ке
Chromium плат­фор­ма Electron, а вме­сто
XUL — web-фрейм­ворк React.
Ис­точ­ник: www.theregister.co.uk
»
Но­вый про­ект Civil Infrastructure
Platform (CIP) от Linux Foundation —
от­кры­тая плат­фор­ма обес­пе­че­ния функ­
цио­ни­ро­ва­ния кри­ти­че­­ских эле­мен­тов
гра ­ж ­дан­ской ин­фра­струк ­т у­ры.
Ис­точ­ник: www.linuxfoundation.org
»
В пер­вый по­сле от­кры­тия ис­ход­ных
тек­стов про­ек ­та офи­ци­а ль­ный вы­
пуск язы­ка про­грам­ми­ро­ва­ния Swift 2.2
от Apple до­бав­ле­на под­держ­ка Linux.
Ис­точ­ник: swift.org
»
Лау­реа­та­ми уч­ре­ж ­ден­ной FSF
еже­год­ной пре­мии “Free Software
Awards 2015” ста­ли соз­да­тель и ос­нов­ной
раз­ра­бот­чик GnuPG Вер­нер Кох и до­би­
ваю­щий­ся пре­вра­ще­ния биб­лио­тек в цен­
тры ин­тел­лек ­т у­а ль­ной сво­бо­ды про­ект
Library Freedom Project.
Ис­точ­ник: www.fsf.org
Спе­циа­ли­зи­ро­ван­ные
сис­те­мы HPE
»
Эра су­пер­ком­пь­ю­те­ров «на все слу­чаи жиз­ни» про­шла.
»
В
»
ап­р е­л е Hewlett-Packard Enterprise
(HPE) анон­с и­ро­в а ­ла се­рию но­вых
сис ­т ем для кон­к рет ­н ых про­ц ес­
сов, та­ких как «глу­бин­ное обу­че­ние [deep
learning]». Ре­ш е­н ие HPE о соз­д а­н ии вы­
со­ко­э ф­ф ек ­т ив­ных специализированных
ком­пь­ю­тер­ных сис­тем вы­зва­но в т. ч. рос­
том по­треб­но­с тей сис­тем об­ра­бот­ки дан­
ных. У но­вого сер­вера Apollo 6500 от HPE,
ко­то­рый пред­ставят в III квар­та­ле, два со­
ке­та CPU и под­дер­жка до 8 вы­со­ко­про­из­
во­ди­тель­ных карт с GPU Nvidia. В «глу­бин­
ном обу­че­нии» поч­ти всю ра­бо­т у вы­пол­ня­ет
GPU, и в но­вой сис­т е­ме HPE с це­лью по­
вы­ш е­н ия эф­ф ек ­т ив­н о­с ти их со­о т­н о­ш е­
ние с CPU со­став­ля­ет 4:1 (стан­дарт — 1:1).
HPE так ­же соз ­д а­е т HPC — спе­ц сис ­т е­м ы
для ком­мер­че­­с ких при­ло­же­ний. Ис­т о­ри­
че­­ски вы­со­ко­эф­фек ­тив­ные сис­те­мы ори­
ен­т и­р о­в ались не на об­р а­б от­к у дан­н ых,
10 | LXF208 Апрель 2016
а на вы­чис­ле­ния: CPU был са­мой бы­ст­рой
ча­с тью сис­т е­м ы, об­щ ая эф­ф ек ­т ив­н ость
ко­т о­р ой за­ви­с е­л а от то­г о, на­с коль­ко ос­
таль­ные со­став­ляю­щие мог­ли не от­ста­вать
от про­цес­со­ра. При об­ра­бот­ке ма­те­ма­ти­че­
­ских и ком­мер­че­­ских про­цес­сов при­ме­ня­
ет­ся од­но­по­точ­ный ал­го­рит­ми­че­­ский код,
и на­ли­чие не­сколь­ких про­цес­сор­ных ядер,
боль­ш ин­с т­в о ко­т о­р ых не бу­д ет ис­п оль­
зо­в ать­с я, из­л иш­н е. Trading-про­ц есс эф­
фек ­т ив­н ее вы­п ол­н ять на од­н о­с о­кет­н ом
сер­ве­ре, при 8 ядрах CPU вме­с то 20. Это
умень­ша­ет на­к лад­ные рас­хо­ды и по­зво­ля­
ет по­вы­сить так­то­вую час­то­т у.
HPE — круп­ней­ший вен­дор HPC, и его
дей­с т­вия не­из­беж­но бу­д ут вли­ять на ры­
нок. В по­с лед­нем Top-500 сис­т е­мам HPE
при­над­ле­жит 31 %, наи­боль­шая часть гло­
баль­но­го сек ­то­ра. Вто­рую по­зи­цию за­ни­
ма­ет Lenovo с 13,8 %. |
www.linuxformat.ru/subscribe
Про­ект Tor уве­ли­чил число аль­
тер­на­тив­ных ме­то­дов за­груз­ки
Tor Browser.
Ис­точ­ник: blog.torproject.org
Пе­ре­ведено на рус­ский язык ру­ко­
во­дство поль­зо­ва­те­ля LibreOffice
Math (ис­ход­ный анг­ло­языч­ный ва­ри­ант
ос­но­ван на LibreOffice 4.4, пе­ре­вод учи­ты­
ва­ет осо­бен­но­сти LibreOffice 5.0).
Ис­точ­ник: forumooo.ru
Ссы­ла­ясь на «рав­но­д у­шие поль­
зо­ва­те­лей», Google до ию­ля убе­рет
App Launcher из брау­зе­ра Chrome в вер­
си­ях для Windows, OS X и Linux, ос­та­вив
его толь­ко в вер­сии для Chrome OS.
Ис­точ­ник: blog.chromium.org
»
Toshiba от­зы­ва­ет 100 тыс. ба­та­рей
для но­у т­бу­ков в свя­зи с «рис­ком
их пе­ре­гре­ва и рас­плав­ле­ния».
Ис­точ­ник: www.zdnet.com
»
Источники: www.computerworld.com
Бы­ст­рые, жи­ву­чие и на­деж­ные на­ко­пи­те­ли по­ра­ду­ют
пред­при­ятия и да­та-цен­тры.
ntel 31 мар­т а объ­я­ви­л а о го­т ов­н о­с ти
пер­во­го cверх­бы­с т­рого SSD-на­ко­пи­
те­ля боль­шой ем­ко­сти (до 2 ТБ) с чи­
пом 3D NAND. По ем­ко­сти Intel по­ка от­ста­ет
от Samsung, ко­то­рый в мар­те уже пред­ста­
вил SSD-на­ко­пи­тель PM1633a на 15,36 ТБ,
то­же на чи­пах 3D NAND. Но­вая ли­ней­ка на­
ко­пи­те­лей Intel вклю­ча­ет мо­де­ли SSD DC
P3320, SSD DC 3520, SSD DC D3700 и D3600,
и ори­ен­ти­ро­ва­на на ра­бо­т у в да­та­-цен­трах,
ра­бо­чих стан­ци­ях и мас­си­вах хра­не­ния дан­
ных. 3D NAND flash от­ли­ч а­е т­с я боль­ш ей
плот­но­стью за­пи­си: ячей­ки па­мя­ти раз­ме­
ще­ны слоя­ми друг над дру­гом — в от­ли­чие
от тра­ди­ци­он­ных SSD, в ко­то­рых flash-чи­
пы раз­ме­щ е­ны ря­дом. Чи­пы па­мя ­т и так­
же плот­нее ском­по­но­ва­ны, отчего SSD-на­
ко­п и­т е­л и бы­с т­р ее. И под­к лю­ч а­ю т­с я эти
SSD к сло­там PCI-Express 3.0, ко­то­рые бы­
В Еди­ный ре­естр рос­сий­ских
про­грамм для ЭВМ и баз дан­ных
вклю­че­ны ди­ст­ри­бу ­тив Альт Ли­нукс
Школь­ный и Astra Linux Special Edition.
Ис­точ­ни­ки: www.altlinux.ru
и www.astralinux.com
»
Обзоры
Новинки программного и аппаратного обеспечения в описании наших экспертов
АЛЕКСЕЙ ФЕДОРЧУК
Тэг <сар­казм>
по умол­ча­нию,
смай­ли­ки по вку­су.
Сегодня мы рассматриваем:
Deepin 15 ����������������� 14
Linux, ZFS и здра­
вый смысл
В
ко­ло­нке LXF205‑206 го­во­­ри­­
лось, что раз­ра­бот­чи­ки Ubuntu
обе­щали под­дер­жи­вать в сво­
ем ди­ст­ри­бу­ти­ве ZFS. И вско­ре в тес­
ти­руе­мые сбор­ки 16.04 вошли со­от­
вет­ст­вую­щие мо­ду­ли. Но это — лишь
час­тич­ное вы­пол­не­­ние обе­ща­ния:
ZFS не под­дер­жи­ва­ет­ся ин­стал­ля­то­
ром, и штат­но­го спо­со­ба ус­та­но­вить
кор­не­вую фай­ло­вую сис­те­му Ubuntu
на пул ZFS по-преж­не­му нет.
Зато поч­ти од­но­вре­мен­но вы­
шел ди­ст­ри­бу­тив, где ZFS взаправ­
ду под­дер­жи­ва­ет­ся «из ко­роб­ки». Это
Antergos вер­сии 2016.02.21. В его ин­
стал­ля­то­ре Chchi, после вер­сии 0.14,
ZFS мож­но вы­брать на­ря­ду с лю­
бой дру­гой на­тив­ной ФС — прав­да,
толь­ко при ус­та­нов­ке с пол­но­го об­
раза и в ре­жи­ме ав­то­ма­ти­че­­ской раз­
мет­ки це­ле­во­го но­си­те­ля.
Но и это не пре­дел же­ла­ний и воз­
мож­но­стей. В ди­ст­ри­бу ­ти­ве Proxmox
ZFS под­дер­жи­ва­ет­ся с са­мой страш­
ной си­лой: она мо­жет не толь­ко не­
сти кор­не­вую ФС, но и, в от­ли­чие
от Antergos’а, не тре­бу­ет спе­ци­а ль­
но­го за­гру­зоч­но­го раз­де­ла с ФС тра­
ди­ци­он­ной. Прав­да, сам по се­бе
Proxmox не очень под­хо­дит «для
де­ск­топ­ных для це­лЕй», од­на­ко, бу­
ду­чи кло­ном Debian’а, мо­жет при­
менять­ся в этом ка­че­­ст­ве по под­к лю­
че­нии должных ре­по­зи­то­ри­ев.
А тем вре­ме­нем во­круг под­держ­
ки ZFS в Ubuntu, да­же и столь ог­ра­
ни­чен­ной, на­чи­на­ет­ся ли­цен­зи­он­
ная скло­ка. Ин­спи­ри­ро­ван­ная, как
ни па­ра­док­саль­но, не злоб­ны­ми ко­
пи­ра­ста­ми, а од­ним из оп­ло­тов сво­
бод­но­го соф­та, Software Freedom
Conservancy (SFC). Как бу­дут раз­ви­
вать­ся со­бы­тия — по­ка­жет вре­мя.
alv@posix.ru
Ди­ст­ри­бу­тив с ак­цен­том на ди­зайн
и эс­те­ти­к у, раз­ра­бо­тан­ный в КНР,
от­ли­ча­ет­ся пре­вос­ход­ной под­держ­
кой ап­па­ра­т у­ры. Правда, требует,
чтобы его не запускали в виртуаль­
ной среде.
Solus 1.0 ������������������� 15
Ред­кий ди­ст­ри­бу­тив мо­жет по­хва­
стать­ся пол­ной не­за­ви­си­мо­стью
от ка­ких-ли­бо пред­ше­ст­вен­ни­ков,
и Solus — один из та­ких. Посмотрим,
стоило ли выпендриваться...
получив приемлемое качество
за вменяемые деньги.
Acer R11 ������������������� 17
Этот пер­вый скла­ды­ваю­щий­ся хром­
бук ком­па­нии Acer (он способен раз­
ворачиваться на 360°!) по про­из­во­
ди­тель­но­сти опе­ре­дил кон­к у­рен­тов,
да и внеш­но­стью не оби­жен.
Chromebox Tiny �������� 18
При­ло­жи­те к это­му хром­бу­к у
от Lenovo мо­ни­тор, то­же от Lenovo —
и по­лу­чит­ся от­лич­ный ком­пакт­ный
мо­но­блок.
Da Vinci 1.0 Jr ����������� 16
Ли­ней­ка не­до­ро­гих прин­те­ров
Da Vinci пре­дос­тав­ля­ет тех­ни­че­­ски
не­под­ко­ван­ным поль­зо­ва­те­лям воз­
мож­ность за­нять­ся 3D-пе­ча­тью,
Football
Manager 2016 ������������ 19
Ле­ген­дар­ный си­му­ля­тор фут­бо­
ла — при­чем не про­сто мат­ча,
> Будь это монитор от Lenovo, Tiny
сел бы в док его тыльной стороны.
а и все­го то­го, что за мат­ча­ми сто­ит:
вы­бор коман­ды, по­ис­ки иг­ро­ков,
транс­фе­ры...
Solus
Football Manager 2016
> Внутренний голос шепчет, что пейзажик навеян
зеленой Ирландией, хотя это вовсе не факт.
> Мячик круглый, а поле ровное — но за кулисами
идет напряженная организационная работа.
Сравнение: Ви­део­транс­ко­де­ры с. 24
FF Multi Converter
Handbrake
QWinFF
VLC Media Player
IFME
Си­т уа­ции, ко­гда тре­бу­ет­ся пе­ре­
ко­ди­ро­ва­ние ви­део, весь­ма не­ред­
ки — и из-за зоо­пар­ка ко­де­ков,
и из-за зоо­пар­ка уст­ройств. Неред­
ки и инструменты для этой цели.
Который же из них лучше?
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 13
Обзоры Ди­ст­ри­бу­тив Linux
Deepin 15
Мы не час­то стал­ки­ва­ем­ся с вол­ную­щи­ми и удив­ляю­щи­ми ди­ст­ри­бу­ти­ва­ми Linux,
но Ша­шанк Шар­ма от­крыл Deepin и на­шел его ос­ве­жаю­ще не­по­хо­жим.
Вкратце
» В по­след­
ней вер­сии ди­
ст­ри­бу­тив пе­ре­
шел на Debian
в ка­че­­ст­ве ос­но­
вы. Deepin име­
ет не­сколь­ко
соб­ст­вен­ных при­
ло­же­ний, вклю­
чая са­мый про­
стой ус­та­нов­щик
всех вре­мен. Ди­
ст­ри­бу­тив серь­
ез­но сфо­к у­си­ро­
ван на про­сто­т у
в ис­поль­зо­ва­
нии и пред­ла­га­
ет не­сколь­ко уни­
каль­ных функ­ций.
См. так­же: Ubuntu,
Netrunner.
П
ер­во­на­чаль­но ос­но­ван­ный на Ubun­
tu, в по­след­ней вер­сии Deepin пе­
ре­к лю­чил­ся на Debian в ка­че­­ст­ве
сво­ей ба­зы. Не­смот­ря на про­ис­хо­ж ­де­ние,
от дру­гих про­из­вод­ных Ubuntu/Debian ди­ст­
ри­бу­тив от­ли­ча­ет соб­ст­вен­ный ра­бо­чий стол
под на­зва­ни­ем Deepin Desktop Environment
и са­мая про­с тая ус­та­нов­ка, ка­к ую мы ко­
гда-ли­бо ви­де­ли в ди­ст­ри­бу­ти­ве Linux. Ма­
ло то­го, ди­ст­ри­бу­тив за­хо­дит даль­ше, пред­
став­ляя се­бя не­ор­ди­нар­ным ди­ст­ри­бу­ти­вом
с ре­ше­ни­ем толь­ко для ус­та­нов­ки, для 32‑
и 64‑бит­ных ма­шин. Он так ­же на­с таи­ва­ет
на том, что­бы его не за­пус­ка­ли в вир­ту­аль­
ной сре­де и на­сла­ж­да­лись его мно­го­чис­лен­
ны­ми ви­зу­а ль­но при­ят­ны­ми пред­ло­же­ния­
ми в пол­ной ме­ре.
Раз­р а­б о­т ан­ный в Ки­т ае, ди­с т­ри­бу­т ив
очень за­бо­тит­ся об ин­тер­на­цио­на ­ли­за­ции,
и по­это­му ус­та­нов­ка на­чи­на­ет­ся с прось­
бы вы­брать язык; за­тем сле­д у­ют обыч­ные
де­та­ли, за­тем ус­та­нов­щик ав­то­ма­ти­че­­ски
оп­ре­де­лит ваш ча­со­вой по­яс и рас­к лад­к у
кла­виа­т у ­ры, но вы мо­же­т е за ­д ать их са­
мо­с тоя ­тель­но. Сле­д ую­щ ий шаг — вы­бор
дис­ка для ус­та­нов­ки. По умол­ча­нию ди­ст­
ри­бу ­т ив зай­мет все про­с тран­с т ­во на вы­
бран­ном дис­ке, но вы мо­же­те вруч­ную на­
стро­ить раз­мет­к у, на­жав Expert Mode. Это
сте­п ень уча­с тия поль­зо­в а­т е­л я в про­ц ес­
се ус­та­нов­ки. Хо­т я ин­с тал­ля­тор по­зво­ля­
ет вы­пол­нять все обыч­ные опе­ра­ции с раз­
де ­л а­м и, Deepin не под ­д ер­ж и­в а­е т LVM,
и вы не мо­же­те соз ­д ать за­шиф­ро­ван­н ую
до­м аш­н юю пап­к у, что под ­д ер­ж и­в а­е тся
в боль­шин­ст­ве ди­ст­ри­бу­ти­вов.
Три ос­н ов­н ых ком­п о­н ен­т а ди­с т­р и­бу­
ти­в а — Dock, Launcher и Control Center.
Свойства навскидку
Свои при­ло­же­ния
Ум­ные функ­ции
Соб­ст­вен­ные при­ло­же­ния,
та­кие как ма­га­зин при­ло­
же­ний, в даль­ней­шем да­ют
поль­зо­ва­те­лю ди­ст­ри­бу­ти­
ва при­ят­ные пре­фе­рен­ции.
Ин­тег­ри­ру­ет функ­цию уда­
ле­ния программ в Launcher
и пред­ла­га­ет Control Center
как неотъемлемую часть
ра­бо­че­го сто­ла.
14 | LXF208 Апрель 2016
> Deepin пер­вым пред­ла­га­ет весь­ма утон­чен­ный ди­зайн, и ди­ст­ри­бу­тив не раз­оча­ро­вы­
вает, дос­тав­ляя по­тря­саю­щее ви­зу­аль­ное удо­воль­ст­вие.
Launcher хо­тя и по­хож на та­кие ана­ло­ги, как
Unity и Gnome Shell, но его уст­рой­ст­во упо­
ря­до­че­но, и он не­ве­ро­ят­но быстр. При по­
ис­ке при­ло­же­ний вам сто­ит толь­ко на­чать
вво­дить бу­к­вы — и он пред­ло­жит все под­
хо­дя­щие ре­зуль­та­ты.
Плоды усилий лю­бви
По­ми­мо ин­стал­ля­то­ра, ди­ст­ри­бу ­тив име­ет
не­сколь­ко соб­ст­вен­ных при­ло­же­ний, та­ких
как Deepin Music и Deepin Store и т. д. Ма­га­
зин при­ло­же­ний на пер­вый взгляд вы­гля­
дит как клон Цен­тра при­ло­же­ний Ubuntu,
но пред ­ла­га­ет го­раз­до бо­лее изящ­ный ва­
ри­ант. Он так ­же пред ­ла­г а­ет для ус ­т а­нов­
ки не­сколь­ко web-при­ло­же­ний, та­ких как
Google Drive, лю­б ез­н о пре­д ос­т ав­л ен­н ые
Intel Crosswalk Project. Ди­с т ­р и­б у ­т ив ис­
поль­зу­ет ре­по­зи­то­рии Ubuntu в до­пол­не­
ние к соб­ст­вен­ным и со­дер­жит ты­ся­чи по­
лез­ных па­ке­тов.
В по­след­ней вер­сии функ­ция уда ­ле­ния
бы­л а объ­е­д и­н е­н а с ла­у н­ч е­р ом, а зна­чит,
вам не на­до за­пус­кать ма­га­зин или тер­ми­
нал для уда ­ле­ния при­ло­же­ний. Вы мо­же­
те про­сто щелк­нуть пра­вой кноп­кой мы­ши
на при­ло­же­нии и вы­брать Uninstall.
Весь ди­ст­ри­бу­тив раз­ра­бо­тан с при­це­
лом на про­сто­т у ис­поль­зо­ва­ния и хо­ро­шо
под ­хо­дит для сен­сор­ных уст­ройств. Дру­
гое от­ли­чие от об­ще­при­ня­то­го в том, что
Control Center ин­тег­ри­ро­ван в ра­бо­чий стол,
www.linuxformat.ru/subscribe
а не пред ­ла­г а­е т­с я в качестве от­дель­ного
при­ло­же­ни­я.
Deepin 15 мо­жет по­хва­с тать­ся пре­вос­
ход­н ой ап­п а­р ат­н ой под ­д ерж­к ой, вклю­
чаю­щей Bluetooth, ви­део­к ар­т ы и драй­ве­
ры прин­те­ров. Control Center обес­пе­чи­ва­ет
дос­т уп к Deepin Manual и Remote Assistance,
ко­то­рый по­зво­ля­ет на­пря­мую об­ра­тить­ся
за по­мо­щью к ко­ман­де раз­ра­бот­чи­ков. Бла­
го­да­ря ак­цен­т у на ди­зайн и эс­те­ти­к у, Deepin
яв­ля­ет­с я действительно но­вым ори­ен­т и­
ром для ди­ст­ри­бу ­ти­вов, ори­ен­ти­ро­ван­ных
на на­чи­наю­щ их поль­зо­в а­т е­лей: ему есть
чем привлечь взгляд. |
Вер­дикт
Deepin 15
Раз­ра­бот­чик: Wuhan Deepin Technology
Сайт: www.deepin.org
Ли­цен­зия: GPL и дру­гие
Функ­цио­наль­ность8/10
Бы­ст­ро­дей­ст­вие9/10
Удоб­ст­во в ра­бо­те10/10
До­ку­мен­та­ция7/10
» Соз­дан­ный удоб­ным для поль­зо­ва­
те­ля, ди­ст­ри­бу­тив иде­аль­но под­хо­дит
на­чи­наю­щим, но про­дви­ну­тым поль­зо­
ва­те­лям пред­ла­га­ет немного.
Рей­тинг 8/10
Ди­ст­ри­бу­тив Linux Обзоры
Solus 1.0
Ша­шанк Шар­ма тес­ти­ру­ет еще один пер­вый ре­лиз ди­ст­ри­бу­ти­ва, ко­то­рый
не хочет уми­рать, и на­хо­дит, что про­ект име­ет проч­ную ос­но­ву на бу­ду­щее.
Вкратце
» Но­вое до­пол­не­
ние к рас­т у­ще­му
спи­ску ди­ст­ри­
бу­ти­вов, пред­на­
зна­чен­ных об­лег­
чить не­опыт­ным
поль­зо­ва­те­лям
ис­поль­зо­ва­ние
на­столь­но­го
Linux. Ди­ст­ри­
бу­тив ис­поль­
зу­ет соб­ст­вен­
ный ра­бо­чий стол
и ути­ли­ты, на­пи­
сан­ные с ну­ля,
что­бы пре­дос­та­
вить зна­ко­мую
и про­стую в ис­
поль­зо­ва­нии ОС
для но­вых поль­
зо­ва­те­лей. См.
так­же: Pinguy OS,
elementary OS.
П
о­сто­ян­ные чи­та­те­ли Linux Format
уже чи­та­ли о ди­с т­ри­бу­ти­вах для
на­ч и­н аю­щ их от ко­м ан­д ы, ко­т о­
рая уже вы­пус­ти­ла Solus 1.0. Ве­ду­щим раз­
ра­бот­чи­ком про­ек ­та яв­ля­ет­ся Ай­ки До­эр­
ти [Ikey Doherty], ко­то­рый ра­нее ра­бо­т ал
в Linux Mint Debian Edition. Он уже пы­тал­ся
соз­д а­вать на­с толь­ные ди­с т­ри­бу ­ти­вы для
на­чи­наю­щих. Как и в его пре­ды­д у­щих по­
пыт ­к ах, Solus сфо­к у­с и­р о­в ан на ра­б о­чем
сто­ле и удоб­ст­ве ис­поль­зо­ва­ния. Solus так­
же не ос­но­ван на дру­гом ди­ст­ри­бу­ти­ве, что
да­е т его раз­р а­б от­ч и­к ам ма­н ев­р ен­н ость
в фор­ми­ро­ва­нии всех ас­пек ­тов ди­ст­ри­бу­
ти­ва по сво­ему ви­де­нию, вклю­чая поль­зо­
ва­тель­ский опыт.
Solus дос­т у­п ен толь­к о для 64‑бит­
ных ма­шин и за­г ру ­ж а­е т­с я в live-сес­с ию.
Как и боль­шин­с т­во ос­н ов­ных ком­п о­н ен­
тов, ус­т а­нов­щ ик то­же соб­с т­вен­ный. Хо­т я
ус­та­нов­ка до­воль­но ин­т уи­тив­на и про­с та,
от­с ут­с т­вие ав­т о­м а­т и­ч е­­с ко­­г о ус­т а­н ов­щ и­
ка раз­ра­бот­чи­ки долж­ны бу­д ут ис­пра­вить
как мож­но рань­ше, по­сколь­к у прось­ба к но­
вич­кам за­пус­тить GParted и вруч­ную соз­
дать раз­де­лы, без вся­кой по­мо­щи, вряд ли
их впе­чат­лит.
Соз­д а­н ие поль­з о­в а­т е­л я вы­п ол­н я­е т­
ся с по­м о­щ ью мас ­т е­р а пер­в ой за­г руз­к и,
ко­то­рый по­мо­га­ет на­с тро­ить и дру­гие ас­
пек ­ты ус­та­нов­ки, вклю­чая язык, на­с трой­
ки кла­виа­т у ­ры и се­т и. Мас ­т ер так ­же по­
мо­ж ет под­к лю­ч ить­с я к Ин­т ер­н е­т у; ес­л и
это зву­чит до жу­ти по­хо­же на при­ло­же­ние
gnome-initial-setup, то по­то­му, что раз­лич­
ные ас­пек­ты ра­бо­че­го сто­ла ди­ст­ри­бу­ти­ва
ос­но­ва­ны на тех­но­ло­ги­ях Gnome, вклю­чая
ра­бо­чий стол Budgie.
Свойства навскидку
Ра­бо­чий стол Budgie
Соб­ст­вен­ный ра­бо­чий
стол ди­ст­ри­бу­ти­ва на ба­зе
Gnome — хо­ро­шая по­пыт­ка
скре­стить ста­рую и но­вую
функ­цио­наль­ность.
Соб­ст­вен­ные ос­нов­ные
ути­ли­ты
Все, от ме­нед­же­ра па­ке­
тов до ути­ли­ты управ­ле­ния
драй­ве­ра­ми, в этом ди­ст­ри­
бу­ти­ве на­пи­са­но с ну­ля.
> Хо­тя Solus в на­стоя­щее вре­мя ба­зи­ру­ет­ся на Gnome, в бли­жай­шем бу­ду­щем про­ект
пла­ни­ру­ет отой­ти от на­столь­но­го ок­ру­же­ния.
Ос­но­ван­ный на GTK, ра­бо­чий стол Budgie
стре­м ит­с я вос­п ро­и з­в е­с ти внеш­н ий вид
клас­с и­че­­с ко­­го Gnome, за­од­но пред ­ла­г ая
не­ко­то­рые удоб­ст­ва со­вре­мен­но­го ра­бо­че­го
сто­ла Gnome. В ме­ню при­ло­же­ний ото­бра­
жа­ет­ся их спи­сок, раз­би­тый по ка­те­го­ри­ям,
и есть по­ле по­ис­ка при­ло­же­ний без на­ви­га­
ции по ме­ню. Один стран­ный ас­пект ме­ню
за­к лю­ча­ет­ся в том, что оно ре­ор­г а­ни­зу­ет
при­ло­же­ния внут­ри ка­те­го­рий в за­ви­си­мо­
сти от час­то­ты их ис­поль­зо­ва­ния. Это га­
ран­ти­ру­ет, что час­то ис­поль­зуе­мые бу­д ут
все­гда ввер­х у ка­ж ­до­го ме­ню, но нуж­но не­
ко­то­рое вре­мя, что­бы к это­му при­вык­нуть.
Так­же нет воз­мож­но­сти при­кре­пить при­ло­
же­ния не­по­сред­ст­вен­но из ме­ню при­ло­же­
ния. Тем не ме­нее, мож­но при­кре­пить на па­
нель от­кры­тые при­ло­же­ния и ок­на.
Solus на­бит при­ло­же­ния­ми, и за ис­к лю­
че­ни­е м офис­н о­г о па­ке­т а в ос­н ов­н ом ох­
ва­ты­ва­ет все не­об­хо­ди­мое. Ес­ли что-либо
от­сут­ст­ву­ет, соб­ст­вен­ный гра­фи­че­­ский ме­
нед ­жер па­ке­тов и об­нов­ле­ний Solus по­зво­
ля­е т обо­г а­т ить вашу ус­т а­н ов­к у, добавив
недостающее.
Solus — не про­с то оче­ред­ной дру­же­
люб­ный к но­вич­кам ди­ст­ри­бу ­тив. Это про­
ект с проч­н ой ос­н о­в ой и ру­ковод­с твом,
ко­то­рое обладает чет­к им ви­де­нием и до­
статочным опытом, что­бы его реа­ли­зо­вать.
Пер­вый ре­лиз де­ла­ет хо­ро­ший шаг, и мы по­
лагаем, что че­рез па­ру ре­ли­зов ди­ст­ри­бу ­тив
дол­жен стать го­товым к кон­к у­рен­ции с при­
знан­ны­ми иг­ро­ка­ми на равных. |
Вер­дикт
Не­обыч­ные на­строй­ки
Дру­гим уни­каль­ным ас­пек­том ди­ст­ри­бу­ти­
ва яв­ля­ет­ся ап­плет все-в-од­ном, центр уве­
дом­ле­ний и на­стро­ек под на­зва­ни­ем Raven.
Он со­д ер­ж ит всю ин­ф ор­м а­ц ию в двух
вклад­ках: в од­ной вклад­ке от­сле­жи­ва­ют­ся
все уве­дом­ле­ния, а вклад­ка ап­пле­тов ото­
бра­жа­ет ка­лен­дарь, гром­кость зву­ка и зву­
ко­вые уст­рой­ст­ва. Лег­ко на­стро­ить ра­бо­чий
стол с но­вой те­мой, как и все ас­пек­ты па­не­
ли. Все эле­мен­ты на па­не­ли, вклю­чая ме­ню
при­ло­же­ний, ча­сы и т. д., мож­но раз­ме­щать
и пе­ре­ме­щать. По существу, до­пол­ни­тель­
ные ас­п ек ­т ы Solus прив­н о­с ят KDE’шные
ощу­ще­ния на ра­бо­чий стол.
www.linuxformat.ru/subscribe
Solus 1.0
Раз­ра­бот­чик: Solus Project
Сайт: https://solus-project.com
Ли­цен­зия: GPL и др.
Функ­цио­наль­ность8/10
Бы­ст­ро­дей­ст­вие8/10
Удоб­ст­во в ра­бо­те8/10
До­ку­мен­та­ция8/10
» Раз­ра­бо­тан­ный с ну­ля, Solus упор­но
тру­дит­ся, что­бы впе­чат­лить не толь­
ко но­вых поль­зо­ва­те­лей, но и во­об­
ще всех.
Рей­тинг 8/10
Апрель 2016 LXF208 | 15
Обзоры 3D-прин­тер
Da Vinci 1.0 Jr.
Ала­стер Джен­нингс очень воз­бу­дил­ся, по­лу­чив не­ве­ро­ят­но де­ше­вый 3D-прин­тер,
и при­нял­ся пе­ча­тать вер­сию се­бя — с низ­ким раз­ре­ше­ни­ем.
Спе­ци­фи­ка­ции
» Тех­но­ло­гия
Ме­тод на­плав­ле­
ния ни­тей
» Мак­си­маль­ная
об­ласть пе­ча­ти
15 × 15 × 15 см
» Тол­щи­на слоя
пе­ча­ти
Тон­кий 0,1 мм
Стан­дарт­ный
0,2 мм
Бы­ст­рый 0,3 мм
Ско­ро­ст­ной
0,4 мм
» Пе­ча­таю­щая
го­лов­ка Один
экс­тру­дер
» Ма­те­ри­ал ни­ти
PLA
» Па­нель
дис­плея 2,6" FSTN
LCM
» Ап­па­рат­ное
обес­пе­че­ние
X86 32/64-бит
совмес­ти­мый ПК
с 4 ГБ + DRAM
» ПО XYZware
» Тип фай­ла STL,
XYZ (3w)
» Связь USB 2.0,
SD-кар­та
» Га­ба­ри­ты
(Ш × Д × В)
42 × 43 × 38 см
» Вес 15 кг
Л
и­ней­ка прин­те­ров Da Vinci пред­
на­з на­ч е­н а дать тех­н и­ч е­­с ки не­
под­к о­в ан­н ым поль­з о­в а­т е­л ям
не­д о­р о­г ой спо­с об за­н ять­с я 3D-пе­ч а­т ью.
Прин ­т е­р ы от XYZprinting все­г да име ­л и
ис­к лю­чи­тель­но хо­ро­шо вы­пол­нен­ные пол­
но­стью за­кры­тые кор­пу­са про­фес­сио­наль­
но­го ви­д а, что рез­ко кон­тра­с ти­ру­ет да­же
с бо­л ее до­р о­г и­м и 3D-прин­т е­р а­м и вро­д е
Lulzbot Mini [см. Об­зо­ры, с.18, LXF201], ко­
то­рый вы­гля­дит как со­б­ран­ный в га­ра­же.
XYZprinting ста­вит очень яс­н ую цель:
по­стро­ить луч­шую ма­ши­ну за са­мую низ­
кую це­ну, что­бы ох­ва­тить наи­боль­шее ко­
ли­ч е­­с т ­в о лю­д ей. Это оз­н а­ч а­е т, что ком­
по­н ен­т ы, та­к ие как под­ш ип­н и­к и, бу­д ут
сде­ла­ны из ла­т у­ни или ней­ло­на, а не ша­ри­
ков или по­ли­ме­ра.
Jr. — са­мый ма­лень­кий и лег­кий пред­
ставитель XYZ-прин­т е­р ов, но по­с коль­к у
про­д ук­т ы XYZ от­нюдь не ма­лы, ему дей­
ст­ви­тель­но мож­но на­зы­вать­ся «юнио­ром»
толь­ко в срав­не­нии с ос­таль­ной ли­ней­кой
XYZ. По срав­не­нию с Ultimaker 2 он вы­гля­
дит боль­шим, а по срав­не­нию с Ultimaker 2
Go — ог­ром­ным.
Хо­тя и не ма­лень­кий, он име­ет раз­ме­ры
42 × 43 × 38 см, то есть го­раз­до мень­ше, чем
пер­вый XYZ-прин­тер Da Vinci, ко­то­рый имел
ко­лос­саль­ные раз­ме­ры 46,8 × 51 × 55,8 см.
Ка­че­­ст­во сбор­ки для XYZ яв­ля­ет­ся ос­
нов­н ым фак ­т о­р ом, не­с мот­р я на то, что
прин­тер на ­хо­дит­ся в бюд ­жет­ном це­но­вом
диа­па­зо­не. Фор­мо­ван­ный из пла­сти­ка кор­
пус и труб­ча­тый внут­рен­ний кар­кас с Т-об­
раз­ны­ми па­за­ми соз­д а­ют ульт­ра­проч­ную
плат­фор­му для дви­ж у­щих­ся час­тей. Весь
прин­тер пол­но­стью за­крыт свер­х у, с бо­ков
Свойства навскидку
Про­стое управ­ле­ние
Нить
Бла­го­да­ря вы­бо­ру пе­ча­ти
пря­мо с SD-кар­ты или ПК
и про­сто­му в ис­поль­зо­ва­
нии ПО это иде­аль­ный пер­
вый прин­тер.
Junior ог­ра­ни­чен в вы­
боре ма­те­риа­лов, кото­
ры­ми он спо­со­бен вы­
полнять печать, ка­ко­вое
ог­ра­ни­че­ние — нить PLA.
16 | LXF208 Апрель 2016
и сни­з у так, что во вре­м я пе­ч а­т и, по­к а
двер­ц а за­кры­та, ша ­лов­ли­вые паль­чи­
ки не мо­г ут об­жечь­ся.
Junior пред­на­зна­чен толь­ко для
пе­ч а­т и из пла­с ти­к а PLA, ко­т о­р ый
по­став­ля­ет­ся XYZprinting по кон­к у­
рент­ной це­не, хо­тя в на­стоя­щее вре­
мя ас­сор­ти­мент цве­тов и фак­т ур ни­
тей ог­ра­ни­чен. Имен­но из-за пе­ча­ти
PLA пе­чат­ный сто­лик не име­е т по­
дог­ре­в а и дос­т и­г а­е т вну­ши­тель­ных
раз­ме­ров 15 × 15 × 15 см.
По­с ле то­г о, как ма­ш и­н у дос­т а­
ли из ко­р об­к и, все, что тре­б у­е т­с я
для пер­в ой пе­ч а­т и — это уда ­л е­н ие
упа­ков­ки и ус­та­нов­ка ка­т уш­ки ни­ти.
Все это зай­мет все­го око­ло пя­ти ми­ > Мы не уве­ре­ны, что 3D-прин­тер Da Vinci
нут до за­в ер­ш е­н ия про­ц ес­с а вво­д а вы­гля­дит имен­но так.
в экс­плуа­та­цию.
Низ­кое раз­ре­ше­ние прин­те­ра оз­на­ча­
ет, что края сло­ев за­мет­ны, но про­стим это,
Junior име­ет хо­лод­ный сто­лик пе­ча­ти, что а фак­ти­че­­ски экс­тру­зия да­ет точ­ные хо­ро­
ог­ра­ни­чи­ва­ет вы­бор ма­те­риа ­ла для пе­ча­ шие чис­тые мо­де­ли с не­боль­ши­ми при­зна­
ти до PLA. Пе­чать ос­но­ва­ния тре­бу­ет под­ ка­ми обыч­ных про­блем (та­ких как про­пус­ки,
го­тов­ки, что­бы убе­дить­ся, что слои ос­но­ва­ на­плы­вы или де­фор­ма­ции). Мы так ­же об­
ния мо­де­ли в про­цес­се пе­ча­ти склеи­ва­ют­ся. на­ру­жи­ли, что за­во­дская ка­либ­ров­ка Junior
В ко­роб­ке мы на­шли не­сколь­ко лис­тов тек­ не тре­бу­ет ни­ка­кой пе­ре­на­строй­ки.
сту­ри­ро­ван­ной лен­ты для сто­ли­ка, при­к ле­
Ес­л и вы ище­т е ма ­л о­б юд ­жет­н ый бес­
ен­ной к стек ­лян­ной пла­сти­не, ко­то­рая соз­ про­блем­ный 3D-прин­тер, ко­то­рый да­ет хо­
да­ет до­пол­ни­тель­ную лип­кость, что за­тем ро­шие точ­ные от­пе­чат­ки, хоть и в низ­ком
по­мо­га­ет PLA удер­жи­вать­ся на плат­фор­ме раз­ре­ше­нии, то сей­час дей­ст­ви­тель­но нет
в про­цес­се пе­ча­ти.
вы­бо­ра луч­ше, чем Da Vinci 1.0 Jr. Про­сто­та
Об­р аз­ц ы мо­д е­л ей мож­н о ска­ч ать в ис­поль­зо­ва­нии и за­кры­тая кон­с т­рук­ция
с сай­та XYZprinting, за­гру­зить на SD-кар­ прин ­те­ра кор­п у­с а де ­ла­ют его иде­а ль­ным
ту с по­мо­щью про­грамм­но­го обес­пе­че­ния и де­ш е­вым вы­б о­р ом для ис­п оль ­зо­в а­ния
XYZprinting и ис­поль­зо­вать про­грам­му XYZ в учеб­ных це­лях, но ес­ли вы хо­ти­те бо­лее
Printing, что­бы ак­ти­ви­ро­вать пе­чать.
изы­скан­ные от­пе­чат­ки, про­дол­жай­те эко­
Управ­л е­н ие про­г рам­м ой не­в е­р о­я т­н о но­мить гро­ши­ки. |
про­стое: обыч­ные пол­зун­ки по­зво­ля­ют пе­
ре­ме­щ ать мо­д ель от­но­с и­т ель­но об­лас­т и
сбор­ки пе­ред со­хра­не­ни­ем мо­де­ли на SDкар­т у или пря­м ой пе­ч а­т и, ес­л и вы под­
клю­ч и­л и ка­б ель USB ме­ж ­д у прин­т е­р ом
XYZprinting Da Vinci 1.0 Jr.
и ком­пь­ю­те­ром.
Про­из­во­ди­тель: XYZprinting
Па­н ель управ­л е­н ия мо­жет ис­п оль­з о­ Сайт: http://us.xyzprinting.com
вать­с я для на­ви­г а­ц ии по ме­ню прин ­т е­р а Це­на: Ј 300
для пе­ча­ти с SD-кар­ты. По­сле это­го на не­ Функ­цио­наль­ность7/10
боль­ш ом ЖК-эк­р а­н е поя­в ит­с я спи­с ок Про­из­во­ди­тель­ность6/10
Удоб­ст­во в ра­бо­те9/10
3D-мо­де­лей, для вы­бо­ра подходящей.
Оп­рав­дан­ность це­ны9/10
По­сле пя­ти ми­нут про­гре­ва, не­об­хо­ди­
мо­го для ра­зо­г ре­в а ра­бо­че­го кон­ц а ни­т и » Его ди­зайн и про­сто­та ис­поль­зо­ва­
ния оз­на­ча­ет, что это од­но из самых
до нуж­ной тем­пе­р а­т у­ры, на­чи­на­е т­с я вы­ серь­ез­ных вве­де­ний в 3D-пе­чать
бран­ная тес­то­вая пе­чать. На пе­чать по­тре­ на рын­ке.
бо­ва ­лось чуть мень­ше ча­са, а по­лу­чен­ная
мо­д ель по­к а­з а­л а, что это очень спо­с об­
ный прин­тер.
3D — это про­сто
Вер­дикт
Рей­тинг 8/10
www.linuxformat.ru/subscribe
Хром­бук Обзоры
Acer R11
Дэн­ни Торп дня­ми на­про­лет де­ла­ет 360‑гра­дус­ное саль­то но­вей­шим
бле­стя­щим хромбуком.
Спе­ци­фи­ка­ции
» ЦПУ 1,6 ГГц
че­ты­рехъ­ядер­
ный Intel Celeron
N3150
» Гра­фи­ка Встро­
ен­ная Intel HD
Graphics
» ОЗУ 2 ГБ (4 ГБ
опц.) DDR3L
» Диск 16 ГБ
(32 ГБ опц.)
» Дис­плей 11,6
HD, 1366 × 768
LED-IPS
сен­сор­ный
» Ка­ме­ра 720p
webcam
» Связь
802.11ac (B/G/N)
dual-band Wi-Fi,
Bluetooth 4.0
» Пор­ты 1 × USB
2.0, 1 × USB 3.0,
1 × HDMI с HDCP,
1 × на­уш­ни­ки,
1 × SD-кар­та
» Га­ба­ри­ты
29 × 20,3 × 1,9 см
» Вес 1,25 кг
> Эк­ран IPS и шар­
нир на 360 гра­
ду­сов от­лич­но
со­че­та­ют­ся.
В
ы­д е­л я­я сь из груп­пы, Chromebook
R11 име­ет честь быть пер­вым скла­
ды­ваю­щим­ся хром­бу­ком ком­па­нии
Acer бла­го­д а­ря 360‑гра­д ус­но­му шар­ни­ру.
С при­вле­ка­тель­ным, ес­ли не бро­ским ди­
зай­ном, R11 вхо­дит на кон­к у­рент­ную аре­ну
бюд ­жет­ных но­у т­бу­ков.
Кор­пус Acer сде­лан по боль­шей час­ти
из тон­ко­го, бе­ло­го пла­сти­ка с ма­то­вой от­
дел­кой. Од­на­ко на крыш­ке ма­ши­ны ди­зайн
от­ли­ча­е т­с я: она пред­с тав­ля­е т со­бой тек­
сту­ри­ро­ван­ную бе­лую ме­тал­ли­че­скую па­
нель, ко­то­рая вы­гля­дит пре­крас­но. Не­смот­
ря на то, что R11 по боль­шей час­ти сде­лан
из пла­сти­ка, в ру­ках он ощу­ща­ет­ся на удив­
ле­ние проч­ным.
11,6‑дюй­м о­в ый дис­п лей име­
ет раз­р е­ш е­ние 1366 × 768 и под­
держ­к у сен­сор­но­го вво­да. На ба­зе
R11 си­дит слег­ка уто­п­лен­ная ост­
ров­ко­вая кла­виа­т у­ра с на­бо­ром слег­ка тек­
сту­ри­ро­в ан­ных кла­виш. Ни­же на ­хо­д ит­с я
от­но­си­тель­но ши­ро­кий трек­пад, дос­та­точ­
ный для ла­до­ни.
Что ка­са­ет­ся пор­тов, то R11 име­ет один
порт USB 2.0 и один — USB 3.0, ка­ж ­д ый
на сво­е й сто­р о­н е. Есть так ­же пол­н о­р аз­
мер­ный порт HDMI, разъ­ем для на­уш­ни­ков
и слот для SD-кар­ты, чтобы обеспечить пе­
ре­но­с фай­лов.
Ма­ши­на ос­на­ще­на 1,6‑ГГц че­ты­рехъ­я­
дер­ным про­цес­с о­ром Intel Celeron N3150
и 2 ли­бо 4 ГБ опе­ра­тив­ной па­мя­ти. Внут­ри
толь­ко 16 ГБ па­мя­ти, но вы вряд ли бу­де­те
хра­нить мно­го фай­лов на са­мой ма­ши­не.
Как и мно­г ие хром­бу ­к и, он по­с тав ­ля­ет­с я
с 100 ГБ про­стран­ст­ва Google Drive на срок
два го­да.
> Трек­пад —
сла­бое ме­сто R11.
В тес­т ах Acer R11 по­к а­з ал се­б я бле­
стя­ще, пусть и с не­боль­ши­ми за­мин­ка­ми.
Со­че­та­ние про­цес­со­ра Intel Celeron N3150
и 4 ГБ опе­ра­тив­ной па­мя­ти удив­ля­ет про­из­
во­ди­тель­но­стью да ­же при од­но­вре­мен­ном
вво­де тек­с та в Google Doc, вос­про­из­ве­де­
нии без зву­ка па­ры ви­део с YouTube и ска­чи­
ва­нии дже­мов с Google Play Music.
Чер­тов­ски хо­рош
В тес­те Octane Acer вы­д ал ре­зуль­тат 8113,
опе­ре­див Asus Chromebook Flip, у ко­то­ро­
го — 6795 (чем вы­ше, тем луч­ше). Ана­ло­
гич­но, в Mozilla Kraken Acer R11 опе­ре­дил
Flip, с ре­зуль­та­та­ми 4789 и 5447. Дис­плей
впол­не под ­хо­дит для ре­дак ­ти­ро­ва­ния до­к у­
мен­тов и про­смот­ра web-стра­ниц. Яр­кость
не со­став­ля­ет ни ма ­лей­шей про­бле­мы, и уг­
лы об­зо­ра пре­вос­ход­ны бла­го­да­ря тех­но­ло­
гии пло­ско­ст­но­го пе­ре­к лю­че­ния (IPS). Кро­
ме то­го, изо­бра­же­ния хо­ро­шо вы­гля­де­ли,
и дви­же­ние в не­сколь­ких оп­ро­бо­ван­ных на­
ми трей­ле­рах филь­мов бы­ло до­воль­но чет­
ким. Яр­кой звез­дой муль­ти­ме­диа-ха­рак ­те­
ри­стик R11 яв­ля­ет­ся его ди­на­ми­ки. Про­ще
го­во­ря, звук на R11 чис­тый и яс­ный, и эта
крош­ка уме­ет быть гром­кой.
Acer за­яв­ля­ет срок служ­бы ба­та­реи око­
ло де­ся­ти ча­сов для R11, и мы убе­ди­лись,
что это до­воль­но близ­ко к ис­ти­не. Мы про­
во­д и ­л и боль­ш ин­с т ­в о тес ­т ов с яр­ко­с тью
www.linuxformat.ru/subscribe
эк­ра­на око­ло 50 – 60 % и на­шли, что R11 ра­
бо­т а­ет чуть бо­лее де­вя­т и ча­сов, вклю­чая
web-сер­финг, про­смотр от­дель­ных ви­део
и из­ред­ка де­лая за­пи­си.
Од­н ой из глав­ных бо­л е­вых то­ч ек R11
яв­л я­е т­с я трек­п ад. Мы про­с то не в си­л ах
при­ми­рить­с я с не­оп­ре­де­лен­но­с тью ощу­
ще­ний и не­а де­к­ват­но­стью на ­жа­тия, не­об­
хо­д и­м о­г о для со­в ер­ш е­н ия щелч­к а. Acer
Chromebook R11 — хо­ро­шая по­к уп­ка, ес­ли
вы ище­те на рын­ке не­что спо­соб­ное ра­бо­
тать нор­маль­но под дав­ле­ни­ем и пре­дос­та­
вить удоб­ст­во про­смот­ра web-стра­ниц. |
Вер­дикт
Acer Chromebook R11
Раз­ра­бот­чик: Acer
Сайт: www.acer.co.uk
Це­на: Ј 230 (16 ГБ / 2 ГБ)
Функ­цио­наль­ность7/10
Про­из­во­ди­тель­ность7/10
Удоб­ст­во в ра­бо­те9/10
Оп­рав­дан­ность це­ны8/10
» Ми­ни­ма­ли­ст­ский внеш­ний вид,
об­ман­чи­во скры­ваю­щий хо­ро­шую
маши­ну. О, и она мо­жет свер­нуть­ся
на 360 гра­ду­сов в план­шет.
Рей­тинг 8/10
Апрель 2016 LXF208 | 17
Обзоры ПК с Chrome OS
Lenovo Chromebox Tiny
Мо­дуль­ный ПК с Chrome OS, как ре­шил Чу­онг Нгу­ен,
понра­вит­ся и до­маш­ним поль­зо­ва­те­лям, и ком­па­ни­ям.
Спе­ци­фи­ка­ции
» Про­цес­сор
Дву­ядер­ный Intel
Celeron 3205U,
1,5 ГГц (дву­ядер­
ный IntelCore i3
5005U, 2 ГГц)
» Ви­део­кар­та
IntelHD Graphics
5500
» ОЗУ 2 ГБ
(4 ГБ опц.)
» Же­ст­кий диск
16 ГБ
» Пор­ты 4 × USB
3.0, Ethernet,
HDMI, DisplayPort,
ком­би­ни­ро­
ван­ный разъ­ем
для мик­ро­фо­на
и на­уш­ни­ков
» Связь
Wi-Fi 802.11n,
Bluetooth 4.0
» Га­ба­ри­ты
17,8 × 18,3 × 3,6 см
» Вес 1 кг
С
по­яв­ле­ни­ем пер­во­го форм-фак­
то­р а мик­р о-де­с к ­т о­п а Chrome­
box Lenovo пре­д ос­т ав­л я­е т сфе­
рам биз­не­с а и об­ра­зо­ва­ния воз­мож­ность
соз­д ать мо­д уль­ный ПК все-в-од­ном (AIO)
с Chrome OS.
Уст ­рой­с т ­во пред ­ла­г а­ет та­кой же ком­
пакт­ный пло­ский форм-фак­тор, как Think­
Centre M Series Tiny от Lenovo, с Windows,
уп­ро­щ ая про­цесс сме­ны ста­рых офис­ных
Tiny-in-One на но­вые Chromebox Tiny. Leno­
vo так ­же от­дель­но про­д а­ет 23‑дюй­мо­вый
мо­ни­тор ThinkVision Tiny-in-One, иду­щ ий
с 1080p изо­гну ­той не­ма­ти­че­­ской па­не­лью
со ско­ро­с тью об­нов­ле­ния 5 мс со сло­том
сза­ди, ку­д а мож­но по­мес­т ить Chromebox
Tiny. В дан­ной кон­фи­г у ­р а­ц ии вы по су ­т и
соз­да ­ли бы свой соб­ст­вен­ный мо­д уль­ный
мо­но­блок.
ThinkCentre — это ком­пакт­ный на­столь­
ный ПК, да­же бо­лее ком­пакт­ный, чем эта­
лон­ный Apple Mac Mini. Он об­ла­чен в пря­
мо­уголь­ный чер­ный алю­ми­ние­вый кор­пус
с пла­с ти­ко­в ой пе­р ед­н ей па­н е ­лью. Сни­з у
у не­го ре­зи­но­вые нож­ки для ис­поль­зо­ва­ния
в го­ри­зон­таль­ном по­ло­же­нии, од­на­ко мож­
но так­же по­ста­вить Chromebox Tiny вер­ти­
каль­но в пла­сти­ко­вый дер­жа­тель.
Tiny дос­т у­пен в двух кон­фи­г у­ра­ци­ях. Ба­
зо­вая кон­фи­г у­ра­ция вклю­ча­ет дву­ядер­ный
про­цес­сор 1,5‑ГГц Intel Celeron 3205U, то­
гда как бо­лее про­дви­ну­тая — по­пу­ляр­ный
про­цес­сор Intel Core i3 Broadwell. Для ка­ж­
дой мо­де­ли вы мо­же­те вы­брать 2‑ или 4‑ГБ
ОЗУ. Tiny по­ка­зал 1683 мс в тес­те про­из­во­
ди­тель­но­сти Mozilla Kraken и 18586 в тес­те
Google Octane 2.0. То есть это один из са­
мых бы­ст­рых имею­щих­ся на­столь­ных ПК.
Свойства навскидку
Core i3
Разъ­ем мо­ни­то­ра
В со­че­та­нии с оп­ти­ми­зи­ро­
ван­ной Chrome OS про­цес­
сор Intel Broadwell ра­бо­та­ет
весь­ма бой­ко.
Lenovo пред­ла­га­ет еще
и на­столь­ный мо­ни­тор, по­
зво­ляю­щий за­кре­пить ваш
Tiny на его зад­ней па­не­ли.
18 | LXF208 Апрель 2016
Для срав­не­ния, бо­лее мощ­ный про­цес­сор
Intel Core i5 на но­у т­бу­ке Google Chromebook
Pixel по­мог ему вы­д ать не­мно­го луч­ший
ре­зуль­тат, 23910, в Octane (чем вы­ше ре­
зуль­тат, тем луч­ше) и 1430 в Kraken (чем
ни­же, тем луч­ше).
Про­из­во­ди­тель­ность Chromebox
бы­ла от­лич­ной. Мы не за­ме­ти­ли ни­
ка­ких за­дер­жек при вы­пол­не­нии
не­сколь­ких за­дач. Ско­рость за­груз­
ки то­же бы­ла вы­со­кой: Tiny го­тов
к ра­бо­те че­рез пять-де­сять се­к унд
по­сле на ­жа­тия кноп­ки пи­та­
ния. Впе­чат­ля­ет,
что Tiny пред­ла­
га­ет под­держ­
ку 4K, и во вре­мя
тес­тов он ра­бо­тал без­уко­риз­ненно.
Внут­ри есть ку­лер, но мы его во­об­ще
не слы­ша­ли.
Lenovo ком­п лек ­т у­е т Chromebox Tiny
про­вод­ны­ми USB-мы­шью и кла­виа­т у­рой.
Мы на­шли кла­виа­т у­ру дос­та­точ­но удоб­ной,
с хо­ро­шим хо­дом, и един­с т­вен­ной на­шей
пре­тен­зи­ей бы­ло то, что она мяг­ко­ва­та.
Мо­дуль­ный ди­зайн
Lenovo уп­ро­сти­ли про­цесс соз­да­ния де­ск­
то­п а AIO Chrome, прив­н е­с я Chrome OS
в эко­си­с те­му Tiny-in-One. Мо­д уль­ный ди­
зайн пред ­ла­га­ет поль­зо­ва­те­лям ряд раз­
ных пре­иму­ществ.
Во-пер­вых, Chromebox Tiny лег­ко об­но­
вить. В бу­ду­щем, ес­ли вы за­хо­ти­те при сво­
ем эк­ра­не ThinkVision улуч­шить про­из­во­ди­
тель­ность са­мо­го ком­пь­ю­те­ра, вы про­с то
ку­пи­те но­вый Chromebox от Lenovo и при­
строи­те его к зад­ней час­ти мо­ни­то­ра.
Во-вто­рых, ес­ли вы за­хо­т и­те пе­ре­хо­
дить от дру­гой ОС к Chrome OS, вы смо­
же­те сде­лать это, от­к лю­чив Chromebox Ti­
ny от сис­те­мы ThinkCentre M Series Tiny. И,
на­ко­нец, в от­ли­чие от мо­но­лит­но­го де­ск ­то­
па все-в-од­ном, ес­ли вы по­вре­ди­те ваш эк­
ран или Lenovo в бу­ду­щем соз­даст мо­ни­тор
ThinkVision с бо­лее вы­со­к им раз­ре­ше­ни­
ем, вы про­сто смо­же­те по­ме­нять мо­ни­тор
и про­д ол­ж ить ис­п оль­зо­в ать Chromebox.
Эко­но­мя­щий ме­сто ди­зайн Chromebox де­
ла­ет его удоб­ным для ис­поль­зо­ва­ния до­ма
или в офи­се, и притом вам не обязательно
вкла­ды­вать­ся в мо­ни­тор ThinkVision, ес­ли
у вас уже имеется дру­гой, при­год­ный для
ис­поль­зо­ва­ния.
В связке с вы­со­ко­тех­но­ло­гич­ным обо­
ру­до­ва­ни­ем Chromebox Tiny обес­пе­чи­ва­ет
www.linuxformat.ru/subscribe
> Бла­го­да­ря про­цес­со­ру Intel Core i3,
Chromebox Tiny обес­пе­чи­ва­ет от­лич­ную
про­из­во­ди­тель­ность.
от­лич­н ую про­из­во­д и­тель­ность. Это один
из са­м ых де­ш е­в ых спо­с о­б ов по­л у­ч ить
про­ц ес­с ор Intel Core i3 в на­с толь­ном ПК;
но ес­л и вы пой­д е­т е по пу­т и Chromebox
Tiny, вам приде­тся ог­ра­ни­читься только ОС
от Google.
Вос­п ро­и з­в о­д и ­т е ли вы пес­н и в Pan­
dora или просмат­ривае­те фильм с Netflix,
бо­р оз­д и­т е про­с то­р ы Се­т и или про­в е­р я­
ете ва­ш у поч ­т у, Chromebox Tiny спосо­
бен справляться с не­с коль­к и­м и ок­н а­м и
и вклад­ка­ми брау­зе­ра Chrome без за­мед­
ле­ния ра­боты. Офис­ные поль­зо­ва­те­ли, вы­
пол­н яю­щ ие не­с коль­ко за­д ач и поль­зую­
щие­ся об­ла­ком, най­д ут в Chromebox Tiny
мно­го при­вле­ка­тель­но­го. |
Вер­дикт
Lenovo Chromebox Tiny
Раз­ра­бот­чик: Lenovo
Сайт: www.lenovo.co.uk
Це­на: от Ј160 (2 ГБ)
Функ­цио­наль­ность8/10
Про­из­во­ди­тель­ность9/10
Удоб­ст­во в ра­бо­те9/10
Оп­рав­дан­ность це­ны9/10
» При­но­сит Chrome OS на де­ск­то­пы
в ком­пакт­ном форм-фак­то­ре, по­зво­ляя
поль­зо­ва­те­лям соз­дать мо­дуль­ный ПК
все-в-од­ном.
Рей­тинг 9/10
Игра Обзоры
Football Manager 2016
Одев­шись по­те­п­лее, Бен Уил­сон го­то­вит­ся за­ки­дать бра­нью и фут­боль­ны­ми
бутса­ми яко­бы до­ро­го­стоя­щих при­ма­донн, при­тво­рив­ших­ся спорт­сме­на­ми.
Вкратце
» По­пу­ляр­ный
си­му­ля­то­р фут­
боль­но­го ме­нед­
же­ра на сей раз
занялся микроме­недж­мен­том.
3D-дви­жок все
еще плоховат,
а ос­нов­ной ин­
тер­фейс с точ­ки
зре­ния но­вич­ков
пе­ре­гру ­жен. FM
вклю­чил со­мни­
тель­ную воз­мож­
ность соз­дать
свою аватарку,
а так ­же от­лич­ный
ана­ли­ти­че­­ский
ин­ст­ру­мент, хо­
тя и без воз­мож­
но­сти пе­ре­но­
сить со­хра­не­ния
из пре­ды­ду­щих
ре­ли­зов.
Спе­ци­фи­ка­ции
Ми­ни­маль­ные:
» ОС Steam OS,
Ubuntu 12.04 LTS,
» Про­цес­сор Intel
Pentium 4, AMD
Athlon 1.8GHz
» ОЗУ 2 ГБ
» GPU Nvidia
GeForce 7300 GT,
AMD Radeon HD
2400, Intel HD
3000, OpenGL 2.0,
256 МБ VRAM
» HDD 3 ГБ
Л
е­ген­дар­ный си­му­ля­тор от Sports
Interactive пе­р е­ж ил не­с коль­к о
про­т и­в о­р е­ч и­в ых се­з о­н ов. Кри­
ти­ки брюзжат, что он, в сво­ем ны­неш­нем
ви­д е, слиш­ком сло­ж ен и не­п о­в о­р от­л ив.
Фа­н а­т ы же го­в о­р ят — а это по­т о­м у, что
он ра­бо­та­ет, как на­стоя­щий ме­нед­жер. Кри­
ти­ка­ны за­к лей­ми­ли его UI как не­по­зна­вае­
мый. Но­во­об­ра­щен­ные на­стаи­ва­ют, что все
не­об­хо­ди­мое — под ру­кой, ес­ли знать, ку­
да смот­реть. Но, по край­ней ме­ре, все со­
глас­ны с тем, что Роб­би Сэ­видж [Robbie
Savage] — ла­ко­мый ку­со­чек.
Да­вай­те раз­бе­рем­ся с этой по­вто­ряю­
щей­ся кри­ти­кой. Ос­нов­ной ин­тер­фейс яв­но
пе­ре­гру­жен для но­вых или дав­но не прак­
ти­ко­в ав­ш их­с я иг ­р о­ков. Там где не­ко­гда
по­иск иг ­ро­к а, вы­бор ко­ман­ды и ха­рак ­те­
ри­с ти­к и бы­ли все­г о лишь на рас­с тоя­нии
од­но­го щелч­ка, те­перь ка ­ж ­дый эк­ран яв­ля­
ет со­бой не­пре­рыв­ные столб­цы слов, цифр
и кру­го­вых диа­грамм, соз­дан­ных на ос­но­
ва­нии пред­по­ло­же­ний, ис­хо­дя из ко­то­рых,
су­д я по все­м у, все до­ро­г и ве­д ут в ту­пик.
Един­ст­вен­ный спо­соб для но­вич­ка въе­хать
в иг­ру — взять­ся за ос­нов­ные за­д а­чи, та­
кие как тре­ни­ров­ка и обу­че­ние управ­ляе­
мо­го ИИ пер­со­на ­ла.
В бо­л ее ста­р ых вер­с и­я х транс­ф е­р ы
и мат­чи тре­бо­ва­ли мас­сы вре­ме­ни; те­перь
это кро­хот­ные ре­ше­ния, при­ни­мае­мые ка­
ж­дые не­сколь­ко се­к унд, и это очень силь­но
на­гру­жа­ет се­рое ве­ще­ст­во и мо­жет по­гло­
тить все вы­ход­ные це­ли­ком. Вы­пус­ти­те ли
вы на по­ле звезд­но­го иг­ро­ка, вер­нув­ше­го­
ся по­сле трав­мы, хо­тя врач пре­д у­пре­ж ­да­
ет, что его хва­тит не боль­ше чем на 30 ми­­
нут? По­са­ди­те ли по­сре­ди мат­ча иг­раю­ще­го
впол­си­лы за­щ ит­ни­к а на ска­мей­к у за­пас­
ных? Ко­г о вы пред­с ка ­же­т е по­б е­д и ­т е ­лем
на пресс-кон­ф е­р ен­ц ии — QPR или Car­
diff — и бу­дет ли дру­гой ис­поль­зо­вать это
как те­му для стен­га­зе­ты в раз­де­вал­ке в сле­
дую­щую ва­шу встре­чу?
> Ос­нов­ной ин­тер­фейс для но­вых или дав­но не прак­ти­ко­вав­ших­ся
иг­ро­ков пе­ре­гру­жен, разве что вы сотрудник Цен­тра по­ле­тов НАСА.
> 3D-дви­жок иг­ры име­ет при­выч­ку раз­ру­шать ил­лю­зию ре­аль­но­сти FM.
На са­мом де­ле, на­зва­ние Football Ma­na­
ger вво­дит в за­блу­ж ­де­ние; сей­час это боль­
ше по­хо­же на Football Micro-Manager. И хо­
тя про­ду­ман­ная до ме­ло­чей тре­ни­ро­воч­ная
жизнь яв­ля­ет­ся от­но­си­тель­но но­вой впе­
чат­ляю­щей функ­ци­ей, раз­ра­бот­чик ни­ко­им
об­ра­зом не ут­ра­тил по­ни­ма­ния, что вы­ве­ло
иг­ру на ее ны­неш­ние по­зи­ции.
Пе­ре­го­во­ры о транс­фе­рах дья­воль­ски
за­б ав­ны. Со­гла­с и­т есь на це­н у на иг­ро­к а,
и вам пред­ло­жат при­сесть и об­су­дить с его
аген­том не толь­ко его зар­пла­т у, но и до­пол­
ни­тель­ные ус­ло­вия, ти­па рос­та рек ­лам­ных
вы­п лат и да ­же ком­п ен­с а­ц ии за про­с той.
Дни мат­чей то­же уди­ви­тель­но про­ду­ма­ны,
с пресс-кон­фе­рен­ция­ми, раз­го­во­ра­ми ме­
ж ­ду иг­ро­ка­ми и хит­ро­ум­ны­ми так ­ти­че­­ски­­
ми хо­да­ми, соз­даю­щи­ми ощу­ще­ние, что ка­
ж­дый из них — уни­каль­ный слу­чай.
Football Micro-manager
Спус­т я семь лет по­с ле его по­я в­л е­н ия,
3D-дви­жок все еще не соз­да­ет на­стоя­ще­го
пред­став­ле­ния о фут­бо­ле вы­со­ко­го уров­
ня. Он, ко­неч­но, впол­не при­ем­лем, но для
се­рии, из­вест­ной сво­им пре­вос­ход­с т­вом
во всем, что она де­ла­ет, «при­ем­ле­мый» рав­
но­з нач­н о «раз­о ча­р о­в ы­в аю­щ е­м у». Ни­к то
не ждет, что он бу­дет вы­гля­деть как FIFA;
про­бле­ма в том, что хо­тя бы один раз за иг­
ру ка­кой-ни­будь иг­рок да вы­ки­нет не­что со­
вер­шен­но аб­сурд­ное, раз­ру­шив ил­лю­зию
ре­а ль­но­сти.
Вот то, что ста­ло для нас по­след­ней ка­
п­лей: за­пла­ни­ро­ван­ная иг­ра на сво­ем по­ле
с MK Dons. При сче­те 0:1 мо­ей ко­ман­де бы­
ла да­на ин­с т­рук­ция при­дер­ж и­вать­ся рас­
ста­нов­ки 3‑1‑3‑1‑2 и за­го­нять мя­чи в во­ро­та.
На по­след­них се­кун­дах цен­траль­ный за­щит­
ник Джо­на­тан Вуд­гейт [Jonathan Wo­od­gate]
ока­зал­ся на пра­вом флан­ге на­рав­не с зо­
ной пе­наль­ти. У не­го бы­ло вре­мя пе­ре­сечь
www.linuxformat.ru/subscribe
ли­нию, но он ре­шил от­сту­пить. Аж до сред­
ней ли­нии. Где и ос­та­но­вил­ся. Тут MK про­
рва­лись к во­ро­там и за­би­ли за­вер­шаю­щий
иг­ру вто­рой гол. По­сле­до­ва­ли ру­га­тель­ст­ва
и пин­ки в сте­ну. И мышь шварк­ну­ла об пол.
Чем же FM 2016 хо­ч ет зав ­л ечь иг ­р о­
ков об­р ат­н о? Во-пер­вых, воз­м ож­н о­с тью
соз­д ать свой виртуальный образ-ава­тар­
ку, что­бы бро­д ить по 3D-ста­д ио­нам. Она
ужас­на. Плав­ная ин­те­гра­ция ана ­ли­ти­че­­ско­­
го ин­ст­ру­мен­та Prozone на­мно­го луч­ше. Его
вклю­ч е­н ие улуч­ш а­е т про­и с­хо­д я­щ ее, как
на по­верх­но­ст­ном уров­не — ото­бра ­же­ние
ста­ти­сти­че­­ских дан­ных из лю­бой точ­ки ми­
ра в бе­г у­щей стро­ке на эк­ра­не за­груз­ки —
так и на прак­т и­че­­ском, по­зво­ляя изу­чить
лю­бую иг­ру с хи­рур­ги­че­­ской точ­но­стью.
Иг­ра все еще стра­д а­ет от упор­но­го от­
сут­ст­вия двух ин­но­ва­ций, соз­дан­ных ее со­
вре­мен­ни­ком. Out Of The Park Baseball дав­но
по­зво­лил поль­зо­ва­те­лям не толь­ко иг­рать
в клас­си­че­­ских ли­гах, но и — что край­не
важ­н о — пе­р е­н о­с ить свои со­х ра­н е­н ия
из од­но­го ре­ли­за в по­сле­дую­щие. |
Вер­дикт
Football Manager 2016
Раз­ра­бот­чик: Sports Interactive
Сайт: www.footballmanager.com
Це­на: Ј35
Сю­жет9/10
Гра­фи­ка6/10
Реи­гра­бель­ность10/10
Оп­рав­дан­ность це­ны7/10
» От­нюдь не иг­ра для маль­чу­га­нов,
ко­то­рые за­го­ня­ют мя­чи в са­мо­дель­
ные во­ро­та: ее глу­би­ну оце­нят да­же
опыт­ные иг­ро­ки.
Рей­тинг 8/10
Апрель 2016 LXF208 | 19
Мобильные
новости
ФРАГМЕНТАЦИИ — НЕТ!
Samsung для IoT
Юж­но­ко­рей­ская ком­па­ния про­тив фраг­мен­та­ции ОС в ми­ре Ин­тер­не­та ве­щей.
К
ор­по­ра­ц ия Samsung соз­д а­ет встраи­в ае­
мую опе­ра­ци­он­ную сис­те­му, на­де­ясь иг­
рать боль­шую роль в функ­цио­ни­ро­ва­нии
мил­л ио­н ов ум­н ых бы­т о­в ых при­б о­р ов, но­с и­м ых
уст­р ойств и про­мыш­л ен­н о­г о обо­ру­д о­в а­ния, со­
став­ляю­щих мир IoT. ОС ре­а ль­но­го вре­ме­ни (RTOS)
с от­кры­тым ко­дом, имя ко­то­рой по­ка не на­зы­ва­
ет­с я, по­м о­ж ет уст­р ой­с т­в ам бы­с т­р о вы­п ол­н ять
про­с тые за­д а­ч и без вме­ш а­т ель­с т­в а поль­з о­в а­
те­ля (на­при­мер, ПО по­д аст ко­ман­д у на от­кры­тие
двер­но­го зам­ка и вклю­че­ние ос­ве­ще­ния при при­
бли­же­нии че­ло­ве­ка к до­му). Бо­лее под­роб­ная ин­
фор­м а­ц ия долж­н а быть об­н а­р о­д о­в а­н а в ап­р е­
ле, в хо­де Кон­фе­рен­ции раз­ра­бот­чи­ков Samsung
в Сан-Фран­ци­ско.
Для RTOS ха­р ак ­т ер­н а бы­с т ­р ая, прак ­т и­ч е­­с ки
ли­ш ен­н ая за­д ер­жек об­р а­б от­к а дан­н ых. При­м е­
ром та­кой ОС мо­жет послу­ж ить VxWorks от Intel,
за­дей­ст­во­ван­ная в Mars Rover. А от­кры­тый ис­ход­
ный код но­вой ОС уве­ли­чи­ва­ет шан­сы на ее вне­
дре­ние и по­зво­лит до­бить­ся боль­шей со­вмес­т и­
мо­сти ме­ж ­ду уст­рой­ст­ва­ми IoT. Samsung пы­та­ет­ся
пре­дот­вра­т ить по­яв­ле­ние в этом сег­мен­те фраг­
мен­та­ции опе­ра­ци­он­ных сис­тем, на ­ли­чие ко­то­рой
сре­ди мо­биль­ных уст­ройств соз­да­ет, осо­бен­но для
Android, про­бле­мы ин­те­ро­пе­ра­бель­но­сти, со­вмес­
ти­мо­с ти чи­пов и раз­вер­т ы­ва­ния об­нов­ле­ний ПО.
Не ис­к лю­че­но, что но­вая ОС мо­жет ока­зать­ся уре­
зан­ной вер­си­ей Tizen, уже при­ме­няе­мой Samsung
в сво­их «ум­ных» ча­сах и TV.
Samsung так ­ж е пред ­л а­г а­е т пла­т ы Artik для
«ум­ных» уст ­ройств. ОС мо­жет по ­зво­лить раз­ра­
бот­ч и­к ам со­е ди­н ять­с я с об­л ач­н ой плат­ф ор­м ой
Samsung SAMI, пре­дос­тав­ляю­щей сред­ст­ва ана­ли­
ти­ки, безо­пас­но­сти и дру­гие сер­ви­сы. Воз­мож­но,
ОС так­же долж­на быть со­вмес­ти­ма с плат­фор­ма­ми
> Стенд на Mobile World Congress, ил­лю­ст­ри­рую­
щий кон­цеп­цию Ин­тер­не­та ве­щей.
раз­р а­б от­к и для IoT, типа Google Brillo или ARM
mbed. Brillo уже под­дер­жи­ва­ет­ся пла­та­ми для раз­
ра­бот­чи­ков, в ча­ст­но­сти, Intel Edison.
РАСШИРЯЕМ ГОРИЗОНТЫ
SSD на 512 ГБ от Samsung
S
amsung де­мон­с т­ри­ру­ет свою точ­к у зре­ния
на то, как вы­жать мак­си­мум воз­мож­но­стей
из уст­р ойств форм-фак ­т о­р а «смарт­ф он»
и «план­шет», и с ар­г у­мен­том в ви­де мол­ние­нос­
ных ско­ро­стей 1500 MБ/c по­спо­рить труд­но. На со­
сто­яв­шем­ся в мар­те в Япо­нии Samsung SSD Forum
ком­па­ния пред­с та­ви­л а PM971 свой пер­вый SSD
с чи­пом Ball Grid Array (BGA). В от­ли­чие от боль­
шин­ст­ва SSD с PGA (Pin Grid Array), кон­такт­ные вы­
во­ды BGA пред­став­ля­ют со­бой ша­ри­ки из при­поя,
что уве­ли­чи­ва­ет плот­ность со­еди­не­ний в од­но­кри­
сталь­ном чи­пе.
По­ми­мо пер­спек ­ти­вы ско­ро­го по­яв­ле­ния бо­лее
ем­ких и бы­ст­рых на­ко­пи­те­лей, кро­шеч­ные раз­ме­ры
форм-фак­то­ра BGA по­зво­ля­ют вы­сво­бо­дить в кор­
пу­се уст­рой­ст­ва ме­сто для бо­лее круп­ной ба­та­реи
или до­пол­ни­тель­ных ком­по­нен­тов. С BGA для чип­
се­тов уже ра­бо­та­ет Intel.
Де­т аль­н ой ин­ф ор­м а­ц ии о PM971 ма ­ло: по­к а
Samsung про­сто де­мон­ст­ри­ру­ет свои воз­мож­но­сти.
Од­на­ко из­вест­но (дан­ные PC Watch), что раз­ме­ра­ми
20 | LXF208 Апрель 2016
PM971 мень­ш е кар­т ы SD, т. е. его форм-фак­т ор
мень­ше M.2 (в на­стоя­щее вре­мя име­ют­ся пла­ны от­
но­си­тель­но стан­д ар­т а, ох­ва­т ы­ваю­ще­го SSD M.2,
и неяс­но, бу­дет ли ему со­от­вет­ст­во­вать пред­ло­жен­
ная тех­но­ло­гия, или она но­вей­шая на­столь­ко, что
про­сто иг­но­ри­ру­ет все стан­дар­ты). Ра­бо­та­ет PM971
с но­вым кон­трол­ле­ром Samsung Photon и Flash-па­
мя­тью MLC V-NAND, и име­ет, пред­по­ло­жи­тель­но,
ин­тер­фейс PCIe 3.0.
Samsung пла­ни­ру­ет вы­пус­тить три вер­сии, ем­
ко­стью 128, 256 и 512 ГБ, ус­та­нав­ли­вая но­вый стан­
дарт для то­по­вых мо­де­лей те­ле­фо­нов, план­ше­тов
и гиб­рид­ных уст­ройств. Об­ла­д ая по­с ле­до­ва­тель­
ной ско­ро­стью чте­ния 1500 MБ/c, PM971 спо­со­бен
пред ­ло­ж ить по­с ле­до­ва­тель­ную за­пись на ко­лос­
саль­ной ско­ро­сти 600 MБ/c, что со­от­вет­ст­ву­ет чте­
нию с произвольным доступом [random read] 190K
IOps и записи с произвольным доступом [random
write] 150K IOps.
По­ми­мо PM971, на SSD Forum был по­ка­зан це­
лый ряд но­вых раз­ра­бо­ток, вклю­чая диск ем­ко­стью
www.linuxformat.ru/subscribe
> Раз­ме­ры SSD фор­ма­та BGA по­зво­ля­ют ос­во­бо­
дить до 10 % до­пол­ни­тель­но­го про­стран­ст­ва для
ба­та­реи и умень­шить тол­щи­ну кор­пу­са мо­биль­но­
го уст­рой­ст­ва.
4 ТБ для но­у т­бу­ков. По­хо­же, что стаг­на­ция в ми­ре
мобильных на­ко­пи­те­лей на­ко­нец-то за­кан­чи­ва­ет­
ся и мы увидим дальнейший прогресс смартфонов.
Ис­точ­ни­ки: www.computerworld.com; www.theinquirer.net
PM971: за­гля­ды­ва­ем в бу­ду­щее мо­биль­ных на­ко­пи­те­лей.
Мобильные новости
ANDROID ДЛЯ РАБОТЫ
XT2: ПК на Android
За­щи­щен­ный ПК от Janam вы­пол­нен в ви­де смарт­фо­на для мо­биль­ных ра­бот­ни­ков.
П
ро­и з­в о­д и­т ель за­щ и­щ ен­н ых ком­п ь­ю­т е­
ров Janam Technologies пред­с та­вил XT2,
уст­рой­с т­во ве­с ом 280 грам­мов и с сен­
сор­ным эк­ра­ном 5''. Ра­бо­таю­щее под управ­ле­ни­
ем Android 5.0 (Lollipop) уст­рой­с т­во впол­не мож­
но на­звать за­щи­щен­ным смарт­фо­ном, по­сколь­к у
оно об­л а­д а­е т мно­г и­м и функ­ц ия­м и по­с лед­н е­г о,
вклю­чая под ­держ­к у дву­сто­рон­ней го­ло­со­вой свя­
зи; пре­дус­та­нов­лен брау­зер Chrome, под­дер­жи­ва­
ют­ся GSM, GPRS, 4G LTE для пе­ре­да­чи дан­ных. Од­
на­ко про­из­во­ди­тель на­зы­ва­ет XT2 не смарт­фо­ном,
а «за­щи­щен­ным сен­сор­ным ком­пь­ю­те­ром».
Из про­ф ес­с ио­н аль­н ых воз­м ож ­н о­с тей в нем
реа­ли­зо­ва­ны ска­нер Zebra SE4710 1D / 2D Imager
и счи­т ы­в а­т ель маг­н ит­н ых карт ANSI / ISO-7813.
XT2 со­от­вет­с т­ву­ет тре­бо­ва­ни­ям за­щи­ты MIL-STD
810G и элек ­тро­тех­ни­че­­ской нор­ме IP67, спо­со­бен
успешно про­ти­во­сто­ять мно­же­ст­вен­ным па­де­ни­ям
с вы­со­ты до 1,5 м и по­гру­же­нию в во­д у на глу­би­
ну до 0,9 м.
CEO Janam Гар­ри Лер­нер [Harry Lerner] уве­рен,
что XT2 «столь же изя­щен как смарт­фон... с наи­бо­
лее пе­ре­до­вы­ми тех­но­ло­гия­ми, удов­ле­тво­ряю­щи­
ми раз­но­об­раз­ные по­т реб­но­с ти фак ­т и­че­­ски лю­
бо­го мо­биль­но­го ра­бот­ни­ка». Уст­рой­с т­во мож­но
ис­поль­зо­вать в ка­че­­ст­ве счи­ты­ва­те­ля RFID и NFC,
что, на­ря­д у с на­ли­чи­ем Wi-Fi, Bluetooth 4.0 и GPS,
де­ла­ет его пол­но­стью при­год­ным для ло­ги­сти­че­
­ских опе­ра­ций. XT2 по­с тав­ля­ет­ся с ак­к у­му­ля­тор­
ной ба­т а­ре­ей ем­ко­с тью 3000 мА·ч, фрон­т аль­ной
ка­ме­рой 8 Мп и зад­ней ка­ме­рой 2 Мп, ком­плек­т у­
ет­ся 4‑ядер­ным про­цес­со­ром Qualcomm MSM8916
час­то­той 1,2 ГГц, 2 ГБ ОЗУ и 16 ГБ внут­рен­ней па­мя­
ти, а так­же сло­том micro SD.
Це­н а за­в и­с ит от кон­ф и­г у ­р а­ц ии уст ­р ой­с т ­в а
и мо­жет варь­и­ро­вать­ся от $ 1K до $ 2K; при этом,
> Janam, пред­ста­вив­шая XT2, ут­вер­жда­ет, что это
са­мый лег­кий, же­ст­кий и сверх­проч­ный сен­сор­ный
ком­пь­ю­тер на рын­ке.
под­чер­ки­ва­ют пред­ста­ви­те­ли Janam, бо­лее вы­со­
кие объ­е­мы сде­лок зна­чи­тель­но сни­жа­ют це­ну ка­
ж­дой еди­ни­цы.
О ПОЛЬЗЕ КОНКУРЕНЦИИ
Сек­ре­тим за так
BlackBerry об­но­ви­ла вер­сию кросс-плат­фор­мен­но­го мес­сенд­же­ра BBM.
Ис­точ­ни­ки: www.computerworld.com
Р
еа ­л и­з а­ц ия кон­к у­р и­р ую­щ и­м и сис­т е­м а­м и
для об­м е­н а мгно­в ен­н ы­м и со­о б­щ е­н ия­м и
функ­цио­на ­ла кон­фи­ден­ци­а ль­но­сти и сек­
рет­но­сти вы­ну­ж ­да­ет BlackBerry от­ка­зать­ся от або­
нент­ской пла­ты за оп­ции “retract” и “timer” в сво­ем
кросс-плат­фор­мен­ном при­ло­же­нии BBM.
Ко­гда до­л я BlackBerry на рын­ке смарт­ф о­н ов
сни­зи­лась, с це­лью при­в ле­че­ния но­вых поль­зо­
ва­т е­л ей ка­н ад­с кая ком­п а­н ия вы­п ус­т и­л а вер­с ии
сво­его мес­сенд­же­ра BBM для iOS и Android, пре­
дос ­т ав ­л яя, од­н а­ко, ряд функ ­ц ий толь­ко в ка­ч е­
­ст­ве плат­ных до­пол­не­ний. В на­стоя­щее вре­мя не­
ко­то­рые из этих функ­ций реа­ли­зо­ва­ны ос­нов­ны­ми
кон­к у­ри­рую­щ и­ми сер­ви­с а­ми от­прав­к и мгно­вен­
ных со­об­ще­ний (на­при­мер, у Snapchat со­дер­жа­щие
изо­бра­же­ния со­об­ще­ния ис­че­за­ют че­рез оп­ре­де­
лен­ное вре­мя), и, что­бы из­бе­жать по­те­ри поль­зо­
ва­те­лей, BlackBerry вы­пус­ти­ла об­нов­ле­ние, уб­рав
абон­пла­т у за оп­ции “retract” и “timer”, со­став­ляв­
шую $ 0,99 в ме­сяц (это по­зво­ля­ет уда­лить со­об­
ще­ние или кар­тин­к у, от­прав­лен­ные из при­ло­же­ния
BBM на те­ле­фо­ны дру­гих поль­зо­ва­те­лей (что ни­как
не влия­ет на уже, воз­мож­но, сде­лан­ный по­лу­ча­те­
лем скрин­шот с этим со­об­ще­ни­ем), а так­же по­зво­
ля­ет ус­та­нав­ли­вать вре­мен­ную за­держ­к у, по­сле ко­
то­рой со­об­ще­ние ав­то­ма­ти­че­­ски ис­чез­нет).
В но­вой вер­сии BBM до­бав­ле­на воз­мож­ность
со­хра­не­ния изо­бра ­же­ний, по­лу­чен­ных с ус­та­нов­
лен­ных на уст­рой­с т­ве при­ло­же­ний. Дру­гие из­ме­
не­ния за­ви­с ят от плат­ф ор­мы. Так, в вер­с ии для
Android от­к лю­ча­ет­ся звук уве­дом­ле­ний для груп­
по­вых ча­тов, реа­ли­зо­ван про­смотр всех опуб­ли­ко­
ван­ных в ча­те изо­бра­же­ний, до­бав­ле­на под­держ­
ка Marshmallow (Android 6.0). Вер­сия для iOS те­перь
по­зво­ля­ет за­пи­сы­вать и де­лить­ся ви­део боль­шо­
го раз­ме­ра, а так­же вы­би­рать не­сколь­ко со­об­ще­
ний для од­но­вре­мен­ной пе­ре­д а­чи, ре­д ак ­т и­ро­ва­
ния или уда ­ле­ния.
Ряд функ­ций все еще ос­та­ет­ся плат­ным, вклю­
чая по­лу­че­ние custom PIN или user ID ($ 0,99) и уда­
ле­ния рек­ла­мы из при­ло­же­ний ($ 0,99). BlackBerry
пред ­ла­г а­е т ши­ро­к ий вы­бор “stickers” —па­ке­тов
www.linuxformat.ru/subscribe
> BlackBerry боль­ше не взи­ма­ет до­пол­ни­тель­ную
пла­ту за функ­ции retract и time-delay сво­его при­ло­
же­ния для об­ме­на со­об­ще­ния­ми.
для от­прав­ки со­об­ще­ний с изо­бра­же­ния­ми, по це­
не $ 0,99 или $ 1,99 (при­чем по­доб­ные до­пол­не­ния
пре­дос­тав­ля­ет за пла­т у не толь­ко BlackBerry: с кон­
ца 2013 г. Snapchat по­зво­ля­ет по­лу­ча­те­лям его са­
мо­ли­к­ви­ди­рую­щ их­с я со­об­ще­ний про­смат­ри­вать
их во вто­рой раз, а с про­шло­го го­да сде­лал плат­
ным по­втор­ные вос­про­из­ве­де­ния). |
Апрель 2016 LXF208 | 21
СравнениеВи­део­транс­ко­де­ры
Сравнение
Ка­ж­дый ме­сяц мы срав­ни­ва­ем тон­ны
про­грамм – а вы можете отдыхать!
Ви­део­транс­ко­де­ры
Ма­янк Шар­ма c бе­ше­ной энергией выискивает луч­шую ути­ли­ту пе­ре­ко­ди­ро­ва­ния,
чтобы смот­реть свои муль­ти­ме­диа на всех уст­рой­ст­вах.
Про наш тест...
Ви­део­транс­ко­де­ры пред ­ла­га­ют мно­
же­ст­во функ­ций; обыч­но они мо­г ут
кон­вер­ти­ро­вать ви­део из од­них фор­ма­
тов в дру­гие с по­мо­щью ря­да че­ре­
дуе­мых оп­ций. Мы от­сле­дим их и со­
ста­вим их рей­тинг в со­от­вет­ст­вии
с гиб­ко­стью, ко­то­рые они пред ­ла­га­ют
в ра­бо­те. Опыт­ные поль­зо­ва­те­ли це­нят
мно­же­ст­вен­ность на­страи­вае­мых
па­ра­мет­ров, и боль­шин­ст­во при­ло­же­
ний пред ­ла­га­ет ряд пред­на­стро­ен­ных
оп­ций для бы­ст­ро­го пе­ре­ко­ди­ро­ва­ния
ви­део из од­но­го по­пу­ляр­но­го фор­ма­та
в дру­гой для раз­ных уст­ройств, та­ких,
как план­ше­ты Android и iPad, и т. д.
Эти ути­ли­ты ос­но­ва­ны на мощ­ных
муль­ти­ме­диа-биб­лио­те­ках ко­манд­ной
стро­ки, а имен­но FFmpeg и Mencoder,
и мы рас­смот­рим, как ка­ж ­дая ути­
лита де­мон­ст­ри­ру­ет функ­ции движ­ка
в гра­фи­че­­ской обо­лоч­ке: ес­ли су­ме­ет
при этом не утом­лять поль­зо­ва­те­ля —
ей фиш­ка. Транс­ко­де­ры, спо­соб­ные
об­ра­ба­ты­вать дру­гие ис­точ­ни­ки ви­део,
на­при­мер, DVD, то­же зай­мут бо­лее
вы­со­кие мес­та.
На­ша
под­бор­ка
» FF Multi
Converter
» Handbrake
» IFME
» QWinFF
» VLC Media
Player
В
се мы таскаем в своих кар­ма­нах
ка­кое-ни­будь муль­ти­медиа-уст­
рой­ст­во. Таковым мо­жет являть­
ся смарт­­фон, план­шет или даже
Psion 3. Факт, что сей­час все боль­ше пор­та­
тив­ных уст­ройств получа­ют дос­той­ный эк­
ран, и по раз­ме­ру, и по ка­че­­ст­ву, и их впол­не
мож­но ис­поль­зо­вать как раз­вле­ка­тель­ные
уст­рой­с т­ва — пря­мо на хо­д у. Но тут есть
за­г возд­к а. Му­з ы­к аль­н ые фай­л ы вы мо­
жете за­ка­зать пря­миком в свое уст­­­рой­ст­во
без осо­бых про­блем, а вот пе­ре­да­ча ви­део
24 | LXF208 Апрель 2016
с вы­с о­к им раз­р е­ш е­н и­е м бу­д ет по­с лож­
нее — в пер­вую оче­редь по­то­му, что у пор­
та­тив­ных уст­ройств от­но­си­тель­но невелик
дис­п лей. И хо­т я про­н ик­н о­в е­н ие мно­­г о­­
ядер­ных про­цес­со­ров на пор­та­тив­ные уст­
рой­ст­ва рас­тет и ши­рит­ся, боль­шин­ст­ву та­
ких уст­ройств все же ма­ло­ва­то мощ­но­сти
для нор­маль­но­го рен­де­рин­га ви­део с вы­со­
ким раз­ре­ше­ни­ем.
В по­доб­ных си­т уа­ци­ях на­до пе­ре­ко­ди­
ро­вать ви­део из ис­ход­ной фор­мы в такой
фор­мат и с таким раз­ре­ше­нием, с ко­то­ры­ми
www.linuxformat.ru/subscribe
смо­жет аде­к­в ат­но ра­бо­т ать пор­т а­т ив­ное
уст­рой­с т­во. Еще од­но по­пу­ляр­ное при­ме­
не­ние ути ­ли ­т ы пе­ре­ко­д и­ро­в а­ния — кон­
вер­ти­ро­ва­ние ви­део в фор­ма­ты, под­хо­д я­
щие для ча­с т­ных слу­ча­ев, на­при­мер, для
по­то­ко­во­го ве­ща­ния че­рез сеть или дол­го­
сроч­но­го хра­не­ния в NAS. В на­шем Срав­не­
нии мы рас­смот­рим са­мые по­пу­ляр­ные ути­
литы пе­ре­ко­ди­ро­ва­ния ви­део и по­мо­жем
вам вы­брать ту, что пред­ла­га­ет наи­боль­
шее ко­ли­че­­ст­во функ­ций в про­стом для ра­
бо­ты ин­тер­фей­се.
Ви­део­транс­ко­де­ры Сравнение
Оп­ции на­строй­ки
На ка­кую гиб­кость они спо­соб­ны?
Э
то од­на из не­зна­чи­тель­но­го чис­ла
об­лас­тей, где ни од­но из тес­ти­руе­
мых при ­ло­же­ний нас не раз­оча­
ру­ет. Все вы­бран­ные при­ло­же­ния бо­г а­т ы
на­с траи­в ае­мы­ми оп­ц ия­м и и пред ­л а­г а­ю т
дос­та­точ­но ши­ро­кие воз­мож­но­сти по­вли­
ять на пе­ре­ко­ди­руе­мое ви­део. На­при­мер,
все они по­зво­ля­ют вы­брать лю­бой из под­
дер­жи­вае­мых кон­тей­не­ров, ви­део- и ау­дио­
ко­де­ков для пе­ре­ко­ди­руе­мо­го ви­део. Бо­лее
то­г о, ис­поль­зуя лю­б ой из транс­ко­д е­ров,
лег­ко по­вли­ять на от­но­ше­ние сто­рон кад­ра,
от­дель­но ука­зать час­то­т у кад­ров и бит­рейт
и да­же встро­ить фай­лы суб­тит­ров.
FF Multi Converter за­од­но по­мо­га­ет бы­
ст­ро на­с тро­и ть за­д а­ч у пе­ре­ко­ди­ро­ва­ния,
пре­дос­тав­ляя оп­цию со­хра­не­ния пе­ре­ко­ди­
ро­ван­но­го фай­ла в той же пап­ке, что и ис­
ход­ный файл, и уда­лить ори­ги­нал по­сле пе­
ре­ко­ди­ро­ва­ния. Мож­но так ­же ве­леть это­му
при­ло­же­нию по­де­лить по­лу­чен­ное ви­део
на час­ти за­дан­ной дли­тель­но­сти.
По­доб­но FF Multi Converter, Handbrake
име­е т от­д ель­н ые вклад­к и для ука­з а­н ия
на­стро­ек Picture, Video и Audio. Handbrake
вдобавок пред ­л а­г а­е т вы­п а­д аю­щ ий спи­
сок оп­ти­ми­зи­ро­ван­ных на­стро­ек для обыч­
ных ти­пов ис­ход­ных ма­те­риа ­лов, а именно
фильмов, ани­ма­ц ии и изо­бра ­же­ний. Как
и с ви­део, Handbrake уме­ет ме­нять бит­рейт
и час­то­т у сэм­пли­ро­ва­ния для про­грам­мы
ко­ди­ро­ва­ния ау­дио.
QWinFF еще бо­га­че оп­ция­ми для ра­бо­ты
с ау­дио. Мож­но вруч­ную на­с тро­ить гром­
кость и да­же из­ме­нять ско­рость. Транс­ко­
дер уме­ет кон­вер­ти­ро­вать все ви­део- и ау­
дио­ф ор­м а­т ы, под ­д ер­ж и­в ае­м ые FFmpeg.
Бо­лее то­го, QWinFF по­зво­ля­ет пе­ре­ко­ди­ро­
вать толь­ко фраг­мент ви­део, ука­зав вре­
мя на­ч а ­л а и окон­ч а­н ия, кон­в ер­т и­р о­в ать
не­сколь­ко фай­лов в один фор­мат вы­во­да
од­но­вре­мен­но или вы­брать раз­ные фор­ма­
ты вы­во­да для ка­ж ­до­го фай­ла вво­да.
Да­же VLC, ко­то­рый во­обще не являет­
ся спе­циа­ли­зи­ро­ван­ным транс­ко­дером, как
все ос­таль­ные в на­шем Срав­не­нии, пред­
ла­г а­е т впе­чат­ляю­щ ий на­бор на­с траи­в ае­
мых па­ра­мет­ров. К то­му же в ме­диа-плей­
е­ре вы смож­ете до­ба­вить до­пол­ни­тель­ный
ау­дио­трек в ви­део. Вы­даю­щ ая­ся функ­ция
> На­бор ви­део­фильт­ров VLC по­зво­ля­ет
пре­об­ра­зо­вать ви­део совер­шен­но но­вым
спо­со­бом.
VLC — уме­ние при­ла­гать к ви­део все ви­ды
фильт­ров: на­при­мер, при­да­вать ви­део вид
ста­ро­го филь­ма; бо­лее те­п­лый тон с эф­
фек­том се­пии; уве­ли­чить кон­т раст че­рез
уве­ли­че­ние рез­ко­сти ви­део; и бо­лее де­сят­
ка дру­гих эф­фек ­тов.
Ана ­ло­гич­но, мож­но ис­поль­зо­вать VLC
для на­с трой­к и па­р а­м ет­р ов ко­д и­р о­в а­н ия
для ау­дио и вы­брать из это­го де­сят­ка эф­
фек­тов, на­при­мер, за­держ­к у зву­ка, нор­ма­
ли­за­тор гром­ко­сти, и т. д. Наимень­ший выбор предлагает IFME.
Он под­дер­жи­ва­ет толь­ко ко­дек H.265 и уме­
ет пе­ре­ко­ди­ро­вать ви­део толь­ко в форматы
MKV или MP4.
Вер­дикт
FF Multi Converter
★★★★★
Handbrake
★★★★★
QWinFF
★★★★★
VLC
★★★★★
IFME
★★★★★
» IFME ли­шил­ся
бал­ла за огра­
ни­чен­ие коли­
чества поддер­
живаемых
форматов
всего двумя.
Го­то­вые про­фи­ли
Пе­ре­ко­ди­ро­ва­ние для но­вич­ков.
В
се при­ло­же­ния пред­ла­га­ют не­сколь­
ко пред­в а­р и­т ель­н о за­д ан­н ых на­
стро­е к, оп­т и­м и­з и­р о­в ан­н ых для
оп­ре­де­лен­ных уст­ройств или слу­ча­ев при­
ме­не­ния, и ско­рень­ко пе­ре­ко­ди­ро­вать ви­
део с ни­ми очень удоб­но.
У IFME шесть пред­н а­с тро­е к-пре­с е­т ов
для со­хра­не­ния пе­ре­ко­ди­ро­ван­но­го ви­део
для вос­про­из­ве­де­ния на Android, Windows
и в Ин ­тер­не­те с раз­ной час ­то­той кад ­ров,
плюс пять пре­се­тов оп­ре­де­ля­ет­ся поль­зо­
ва­т е­лем. Од­на­ко при­ло­же­ние не пред ­ла­
га­е т оп­ц ии со­х ра­н е­н ия ин­д и­в и­д у­а ль­н ых
на­стро­ек.
QWinFF то­же не по­з во­л я­е т соз­д а­в ать
и со­х ра­нять ин­д и­ви­д у­а ль­ные на­с трой­к и.
При­ло­же­ние бе­рет на­бор сво­и х на­с тро­ек
в про­ек­те WinFF, и они ото­бра­жа­ют­ся в за­
ви­си­мо­сти от вы­бран­но­го фор­ма­та кон­тей­
не­ра. Так, ес­ли вы хо­ти­те кон­вер­ти­ро­вать
ви­део в AVI, QWinFF пе­ре­чис­лит на­с трой­
ки для соз­да­ния ви­део, ко­то­рое бу­дет, сре­
ди про­ч их плат­ф орм, вос­п ро­и з­в о­д ить­
ся на Nokia N810 или Creative Zen, а вы­бор
MP4 ото­бра­зит на­строй­ки для раз­ных уст­
ройств, та­ких, как iPod, SanDisk Sansa и т. д.
> FF Multi Converter
по­зво­ля­ет про­
смат­ри­вать и ре­
дак­ти­ро­вать па­ра­
мет­ры ко­манд­ной
стро­ки всех сво­их
на­стро­ек.
Вер­дикт
FF Multi Converter
★★★★★
VLC
★★★★★
При­ло­же­ние FF Multi Converter то­же бе­
рет на­с трой­к и в про­ек ­те WinFF, но име­е т
и не­сколь­ко своих, при­чем по­зво­ля­ет их ре­
дак­ти­ро­вать и соз­д а­вать ва­ши соб­с т­вен­
ные. Точ­но так же Handbrake и VLC по­зво­ля­т
вам ре­дак­ти­ро­вать и соз­да­вать соб­ст­вен­
ные но­в ые ин­д и­в и­д у­а ль­н ые на­с трой­к и.
Прав ­д а, с по­м о­щ ью пред­н а­с тро­е к Handbrake вы не смо­же­те оп­ре­де­лить на­строй­
ки суб­тит­ров.
VLC предусматривает бо­л ее дю­ж и­н ы
пред­н а­с тро­ек, вклю­ч ая ряд пред­н а­с тро­
ек для по­п у­л яр­н ых ау­д ио- и ви­д ео­ко­д е­
ков для раз­н ых кон­т ей­н е­р ов, та­к их, как
H.264 + MP3 в фай­ле MP4, или Theora + Vor­
bis в Ogg, или VP80 + Vorbis в WebM. Кро­
ме то­го, в нем име­ют­ся пред­на­строй­ки для
различных уст­ройств, та­к их, как Android,
iPhone, HD-Ready TV и да­же SD- и HD-вер­
сий для YouTube.
www.linuxformat.ru/subscribe
Handbrake
★★★★★
QWinFF
★★★★★
IFME
★★★★★
» Спи­сок пред­
на­стро­ек
Handbrake дли­
нен, но по­ко­ро­че
спи­ска, пред­ла­
гае­мо­го FF Multi
Converter.
Апрель 2016 LXF208 | 25
СравнениеВи­део­транс­ко­де­ры
Дай­те по­ру­лить
Труд­но ли управ­лять­ся с ка­ж­дым из ви­део­транс­ко­де­ров?
Э
ти гра­ф и­ч е­­с кие ин­с т­р у­м ен­т ы по­л у­ч а­
ют всю свою мощь и функ­ц ии от бо­г а­
тых функ­ция­ми и мощ­ных ути­лит ко­манд­
ной стро­к и, но раз­ра­бот­чи­к ам на­до по­с та­рать­ся
не про­с то впих­н уть в них до­б а­воч­ные функ­ц ии,
чтобы утереть нос кон­к у­рентам. По­доб­ная так ­ти­ка,
разумеется, по­зво­ля­ет опередить их по от­дель­но
оце­ни­вае­мым па­ра­мет­рам в конкретной номина­
ции, но в ко­неч­ном ито­ге при­ве­дет к про­иг­ры­ш у
луч­ше ор­га­ни­зо­ван­но­му инструмен­т у.
Учи­ты­вая при­ро­ду на­шей за­да­чи, мы не рас­счи­
ты­ва­ем отыскать транс­ко­дер с ми­ни­маль­ным ин­
тер­фей­сом, но по­пы­та­ем­ся обнаружить транс­ко­дер
с ин­тер­фей­сом по­нят­ным. Мы бу­дем вы­смат­ри­вать
ин­т уи­тив­ные при­ло­же­ния, пред­ла­гаю­щие не толь­
ко дос­та­точ­ный объ­ем кон­тро­ля, ко­то­рый окажется
ра­зу­мен и посилен для неопыт­ных поль­зо­ва­те­лей,
но и рас­ши­рен­ные воз­мож­но­сти для тех, кто глубо­
ко разбирается в процессе перекодирования и спо­
собен самостоятельно выбирать параметры для
желаемых файлов.
FF Multi Converter ★★★★★
У это­го при­ло­же­ния про­стой ин­тер­фейс с боль­шой об­ла­стью ввер­х у, ку­да до­
бав­ля­ют­ся фай­лов для пе­ре­ко­ди­ров­ки. Ниж­няя часть ин­тер­фей­с а со­с то­ит
из трех вкла­док: Audio/Video, Images и Documents; все три пред­ла­га­ют чет­кие
оп­ции для ка­ж ­дой за­да­чи. Про­цесс пе­ре­ко­ди­ро­ва­ния вклю­ча­ет вы­бор ви­део­
фай­ла и за­тем вы­бор но­во­го фор­ма­та фай­лов. Для вы­бран­но­го фор­ма­та фай­
ла ав­то­ма­ти­че­­ски вы­би­ра­ет­ся ви­део- и ау­дио­ко­дек по умол­ча­нию, но у вас есть
и оп­ция вы­брать лю­бой дру­гой из имею­щих­ся. Но­вые поль­зо­ва­те­ли мо­г ут на­
жать на кноп­к у Preset [Пред­на­строй­ка] и вы­брать од­ну из пе­ре­чис­лен­ных оп­
ций пе­ре­ко­ди­ро­ва­ния ви­део. Но в ос­нов­ном FF Multi Converter яв­ля­ет­ся гра­фи­
че­­ской обо­лоч­кой для FFmpeg, а зна­чит, опыт­ные поль­зо­ва­те­ли мо­г ут сде­лать
ку­да боль­ше. Кноп­ка с над­пи­сью More [Еще] пре­дос­та­вит им дос­т уп к та­ким
продвинутым оп­ци­ям, как из­ме­не­ние объема файла, бит­рейт и встро­ен­ные
суб­тит­ры, и т. д.
Handbrake ★★★★★
По срав­не­нию с дру­ги­ми, ин­тер­фейс у Handbrake весь­ма за­гру­жен­ный, и на пер­
вый взгляд спо­со­бен за­пу ­тать. Да, здесь мно­же­с т­во кно­пок и пе­ре­чис­ле­но
не­сколь­ко на­стро­ек, но те, ко­то­рые в дан­ный мо­мент не ис­поль­зу­ют­ся, ок­ра­
ше­ны се­рым. Как и в дру­гих при­ло­же­ни­ях, про­цесс пе­ре­ко­ди­ро­ва­ния на­чи­на­ет­
ся с ука­за­ния Handbrake на ви­део, ко­то­рое на­до кон­вер­ти­ро­вать. Но, в от­ли­чие
от дру­гих, вы так­же мо­же­те ус­та­но­вить диск DVD или Blu-ray и пе­ре­ко­ди­ро­вать
его со­дер­жи­мое. Ука­зав ис­ход­ное ви­део, вы мо­же­те за­дать кон­вер­ти­ро­ва­ние
под кон­крет­ное уст­рой­ст­во, вы­брав его сре­ди пред­ва­ри­тель­ных на­стро­ек. Ес­ли
вы не ис­поль­зуе­те пред­на­стро­ек, ви­део- и ау­дио­ко­де­ки мож­но за­дать вруч­ную.
Опыт­ные поль­зо­ва­те­ли так­же мо­г ут са­ми под­пра­вить рас­ши­рен­ные на­строй­ки.
Ин­тер­фейс Handbrake пред ­ла­га­ет удоб­ные под­сказ­ки по ин­ст­ру­мен­там, по­яв­
ляю­щие­ся при на­ве­де­нии на них мы­ши, бла­го­да­ря че­му его рас­ши­рен­ные на­
строй­ки бо­лее дос­т уп­ны­ми да­же для не­опыт­ных поль­зо­ва­те­лей.
До­ку­мен­та­ция и под­держ­ка
Ру­ка по­мо­щи для но­вич­ков.
Х
о­тя все ви­део транс­ко­де­ры в на­
шем Срав­не­нии бо­лее или ме­нее
про­сты в ис­поль­зо­ва­нии, вам, ве­
ро­ят­но, по­на­до­бит­ся за­гля­нуть в их до­к у­
мен­та­цию, пре­ж ­де чем про­бо­вать их рас­
ши­рен­ные функ­ции. У VLC ми­ни­маль­ный
ин­тер­фейс для функ­ции пе­ре­ко­ди­ро­ва­ния,
и до­к у ­м ен ­т а­ц ия та­к ая же. Этой те­м е по­
свя­ще­на все­го од­на стра­ни­ц а на wiki про­
ек ­т а, и она ско­р ее про пе­р е­ко­д и­р о­в а­ние
из ко­манд­ной стро­ки, чем про на­ви­га­цию
по гра­фи­че­­ско­­м у ин ­тер­фей­с у. VLC час­то
от­сы­ла­ет поль­зо­ва­те­лей к сво­ей функ­ции
26 | LXF208 Апрель 2016
Вер­дикт
по­то­ко­во­го ве­ща­ния, ко­то­рая по­доб­на пе­
ре­ко­ди­ро­ва­нию, и эта тен­ден­ция от­ме­ча­ет­
ся так­же и на офи­ци­а ль­ных фо­ру­мах.
FF Multi Converter у­шел не­д алеко: его
ас­ке­т ич­ная wiki пе­ре­чис­ля­е т имею­щ ие­с я
пред­на­с трой­к и и пред ­ла­г а­е т крат­кое ру­
ко­во­дство по ус­та­нов­ке приложения из ис­
ход­ни­ка и на Ubuntu. Да и IFME пред­ла­га­ет
в сво­ей wiki лишь ми­ни­мум ин­фор­ма­ции:
7 стра­ни­ц по­ ус­та­нов­ке, соз­д а­нию пла­ги­
нов и вве­де­нию в пе­ре­ко­ди­ров­щи­ки AAC.
Аналогичный шаб­лон рас­про­стра­ня­ет­
ся на QwinFF; его до­к у­мен­та­ция пред ­ла­га­ет
бег­лое вве­де­ние в при­ме­не­ние ин­ст­ру­мента
с крат ­к и­ми дан­ны­ми по его ис­поль ­зо­в а­
нию, и име­ет­ся в раз­ных фор­ма­тах для он­
лайн- и оф­ф лайн-по­т реб­л е­н ия. При­т ом
у QWinFF нет фо­ру­мов, wiki, IRC или спи­ска
рас­сыл­ки.
Ин­фра­струк ­т у­ра под­держ­ки Handbrake,
в пол­ную про­ти­во­по­лож­ность ос­таль­ным,
вклю­ча­е т очень ак ­т ив­ные фо­ру­мы со­об­
ще­с т ­в а, ка­н ал IRC и wiki с по­л ез­н ей­шим
раз­де­лом Ча­Во. Име­ет­ся так­же очень под­
роб­ное ру­ко­во­дство поль­зо­ва­те­ля, ко­то­рое
объ­яс­ня­ет все ас­пек ­ты при­ло­же­ния.
www.linuxformat.ru/subscribe
Handbrake
★★★★★
FF Multi Converter
★★★★★
IFME
★★★★★
QWinFF
★★★★★
VLC
★★★★★
» Handbrake
вы­иг­ры­вает
бла­го­да­ря
сво­ему со­об­
ще­ст­ву — са­мо­
му за­бот­ли­во­му
из всех.
Ви­део­транс­ко­де­ры Сравнение
IFME ★★★★★
IFME — од­но из бо­лее ре­сур­со­ем­ких при­ло­же­ний, и тре­бу­ет Mono. Про­стой
ин­тер­фейс IFME не слишком ин­т уи­ти­вен: вы на­чи­нае­те с раз­ме­ще­ния ви­део
в верх­ней час­ти при­ло­же­ния, но за­тем пред­по­ла­га­ет­ся, что вы пе­ре­мес­ти­тесь
в сред­нюю часть ин­тер­фей­са и за­тем пе­рей­де­те вниз, что­бы вы­брать пред­на­
строй­к у для ра­бо­ты с на­строй­ка­ми в сред­ней час­ти. Вы мо­же­те или на­чать пе­
ре­ко­ди­ро­вать фай­лы пря­мо из ин­тер­фей­са, или со­хра­нить оче­редь и вы­звать
IFME из ко­манд­ной стро­ки, что­бы за­дей­ст­во­вать для про­цес­са пе­ре­ко­ди­ро­ва­
ния мак­си­мум ре­сур­сов.
Опыт­ные поль­зо­ва­те­ли мо­г ут пре­зреть пред­на­строй­ки и вно­сить из­ме­не­
ния в раз­ные ас­пек ­ты про­цес­са пе­ре­ко­ди­ро­ва­ния, та­кие, как ау­дио и ви­део; это
делается че­рез раз­ные вклад­ки. В от­ли­чие от ря­да дру­гих при­ло­же­ний, IFME
не пре­дос­тав­ля­ет пред­про­смот­ра ви­део пе­ред его пе­ре­ко­ди­ро­ва­ни­ем со встро­
ен­ны­ми на­строй­ка­ми.
QWinFF ★★★★★
Ин­тер­фейс QWinFF ми­ни­ма­лен, но ин­т уи­ти­вен и при­ятен в ра­бо­те. Вме­сто де­
мон­ст­ра­ции всех имею­щих­ся оп­ций, QwinFF ис­поль­зу­ет двух­сту­пен­ча­тый мас­
тер. Вы на­чи­нае­те с до­бав­ле­ния фай­лов и вы­бо­ра фор­ма­та фай­лов, по­сле че­
го ото­бра­зит­ся спи­сок по­до­дя­щих пред­на­стро­ек. Для бо­лее тон­кой на­строй­ки
на­жми­те на кноп­к у Edit [Ре­дак­ти­ро­вать]. Пе­ред ва­ми поя­вит­ся еще од­но ок­
но, где вы смо­же­те из­ме­нить раз­лич­ные па­ра­мет­ры кон­вер­ти­ро­ва­ния. По­ми­
мо оче­вид­ных вкла­док Audio и Video, име­ет­ся еще вклад­ка Time [Вре­мя], ко­
то­рая по­зво­ля­ет гра­фи­че­­ски вы­де­лить и осу­ще­с т­вить пред­про­смотр час­ти
ви­део, ко­то­рую вы хо­ти­те пе­ре­ко­ди­ро­вать. И, на­ко­нец, есть вклад­ка Advanced,
где пе­ре­чис­ле­ны оп­ции ко­манд­ной стро­ки FFmpeg, со­от­вет­ст­вую­щие вы­бран­
ным ва­ми на­строй­кам.
Опыт­ные поль­зо­ва­те­ли мо­г ут из­ме­нить их вруч­ную и пе­ре­дать в на­стоя­
щую ко­ман­ду, ко­то­рая и вы­пол­ня­ет пе­ре­ко­ди­ро­ва­ние.
VLC ★★★★★
По­п у­л яр­н ый плей­е р, как и QWinFF, ис­п оль­з у­е т для пе­р е­ко­д и­р о­в а­н ия по­
сред­ст­вен­ный мас­тер. Од­на­ко его под ­ход не столь ак­к у­ра­тен или ло­ги­чен, как
у QWinFF. Про­цесс на­чи­на­ет­ся с за­кач­ки фай­лов для пе­ре­ко­ди­ро­ва­ния, и за­
тем при же­ла­нии за­ки­ды­ва­ет­ся фай­ла с суб­тит­ра­ми. Ис­поль­зо­ва­ние кноп­
ки More [Боль­ше оп­ций] по­зво­ля­ет про­смот­реть оп­ции для до­бав­ле­ния к пе­
ре­ко­ди­руе­мо­му ви­део ау­дио­тре­ка. За­тем вы на ­жи­мае­те на кноп­к у Convert/
Save [Кон­вер­ти­ро­вать/Со­хра­нить], что­бы пе­рей­ти в сле­д ую­щее ме­ню. Од­на­
ко в от­ли­чие от тра­ди­ци­он­но­го мас­те­ра на­зад вер­нуть­ся нель­зя, и ес­ли вы по­
за­бы­ли до­ба­вить му­зы­каль­ный трек и захо­ти­те сде­лать это позд­нее, при­дет­ся
вый­ти из мас­те­ра и на­чать про­цесс за­но­во. На сле­дую­щем эк­ра­не вы­би­ра­ет­
ся один из го­то­вых про­фи­лей. Здесь опыт­ные поль­зо­ва­те­ли мо­г ут ис­поль­зо­
вать кноп­к у Edit для вы­бо­ра ау­дио- и ви­део­ко­де­ков и из­ме­не­ния па­ра­мет­ров
пе­ре­ко­ди­ро­ва­ния.
Под­дер­жи­вае­мые фор­ма­ты
И что они тут пе­ре­ко­ди­ру­ют?
К
ак и слвдовало ожи­д­ать, по­сколь­
ку IFME способен пе­ре­ко­ди­ро­вать
толь­ко ви­део с по­мо­щ ью ко­де­к а
H.265, в дан­н ом тес­т е он пле­т ет­с я по­з а­
ди всех. У этого при­ло­же­ния так­же име­ет­
ся ог­ра­ни­чен­ная под­держ­ка кон­тей­не­ров
все­го с дву­мя оп­ция­ми — MKV (по умол­
ча­нию) и MP4.
И QWinff, и VLC под­д ер­ж и­в а­ю т мно­
же­ст­во всяких фор­ма­тов бла­го­да­ря сво­ему
движ­к у FFmpeg. Он под­дер­жи­ва­ет много­
численные ко­де­ки и ши­ро­кий диа­па­зон ви­
део- (MPEG1/2/4, DivX, WMV, Theora и т. д.)
Вер­дикт
и ау­дио­фор­ма­тов (AC3, AAC, FLAC, MP2/3
и т. д.). Тем не менее, и QWinFF, и VLC ог­
ра­ни­чи­ва­ют­ свои задачи кон­вер­ти­ро­ва­ни­
ем ви­део.
Следующим будет Handbrake, с под­
держ­к ой ви­д ео­к о­д е­к ов H.264, MPEG-4,
MPEG-2, VP8 и Theora. В от­ли­чие от дру­
гих наших при­ло­же­ний, Handbrake спосо­
бен пе­р е­ко­д и­р о­в ать муль­т и­м е­д иа, полу­
ченные из раз­ных ис­точ­ни­ков, на­при­мер,
с DVD и дис­ков Blu-ray, ес­ли у них не пред­
усмотрено за­щи­ты от ко­пи­ро­ва­ния, и это
важное преимущество.
В пи­к у дру ­г им ин­с т ­ру ­м ен ­т ам на­ш е­г о
Срав­не­ния, FF Multi Converter, оп­рав­ды­вая
свое на­зва­ние, по­ми­мо ау­дио и ви­део, ли­хо
кон­вер­ти­ру­ет до­к у­мен­ты в раз­но­об­раз­ных
по­пу­ляр­ных фор­ма­тах [Ред.: — А это у нас
по те­ме?], вклю­чая DOC в ODT, XLS в ODS,
ODT в PDF и т. д. Бо­лее то­го, FF Multi Converter
справляется даже с кон­вер­ти­ро­ванием изо­
бра­же­ний, за­од­но вы­пол­няя ог­ра­ни­чен­ные
за­да­чи по их ре­дак­ти­ро­ва­нию — на­при­мер,
об­ре­зать, по­вер­нуть, пе­ре­вер­нуть, и справ­
ля­ет­ся со мно­ги­ми фор­ма­та­ми, на­при­мер,
BMP, PNG, JPG и не толь­ко.
www.linuxformat.ru/subscribe
FF Multi Converter
★★★★★
VLC
★★★★★
Handbrake
★★★★★
QwinFF
★★★★★
IFME
★★★★★
» FF Multi
Converter так­же
справляется
с кон­вер­ти­
ро­ванием
изо­бра­же­ний
и до­ку­мен­тов.
Апрель 2016 LXF208 | 27
СравнениеВи­део­транс­ко­де­ры
Под­держ­ка ко­манд­ной стро­ки
Для убе­лен­ных виртуальными се­ди­на­ми.
К
ак и с ос­таль­ны­ми за­да­ча­ми, прой­
дя дос­т а­точ­но дол­г ий путь в пе­
ре­к о­д и­р о­в а­н ии, вы, воз­м ож­н о,
за­хо­ти­те не­мно­го сэ­ко­но­мить вре­мя и кон­
вер­ти­ро­вать ви­део че­рез ко­манд­ную стро­ку.
Не­ко­то­рые при­ло­же­ния, на­при­мер, QWinFF
и FF Multi Converter, по су­ти яв­ля­ют­ся все­
го лишь гра­фи­че­­ски­­ми обо­лоч­ка­ми мощ­
ных биб­лио­тек ко­манд­ной стро­ки, ко­то­рые
не пред­ла­га­ют соб­ст­вен­но­го ин­тер­фей­са.
IFME на­зы­ва­ет се­бя «гиб­ри­дом GUI-CLI»,
и вы мо­же­т е ис­п оль ­зо­в ать гра­ф и­ч е­­с кий
ин ­т ер­фейс для на­с трой­к и за ­д ач пе­ре­ко­
ди­ро­в а­ния и со­х ра­нить оче­редь в фай ­ле
XML. За­тем мож­но вый­ти из при­ло­же­ния
и по­про­сить его об­ра­бо­тать со­хра­нен­ную
оче­редь из ко­манд­ной стро­ки, не вы­зы­вая
гра­фи­че­­ско­­го ин­тер­фей­са и эко­но­мя тем
са­мым цен­ные сис­тем­ные ре­сур­сы. Уч­тите,
од­на­ко, что об этом нет прак­ти­че­­ски ника­
кой ин­фор­ма­ции на сай­те про­ек­та, и оп­ция
--help в ин­тер­фей­се ко­манд­ной стро­ки вас
то­же особенно не порадует: ин­фор­ма­ции
она дает ма­ло.
> HandbrakeCLI —
это от­дель­ная
от гра­фи­че­ско­
го при­ло­же­ния
ути­ли­та.
За­то у VLC в его wiki мас­са ин­фор­ма­ции
по пе­ре­ко­ди­ро­ва­нию из ко­манд­ной стро­ки.
Прак ­ти­че­­ски все за­да­чи по пе­ре­ко­ди­ро­ва­
нию, вы­пол­няе­мые че­рез гра­фи­че­­ский ин­
тер­фейс, мож­но вы­пол­нить из ин­тер­фей­са
ко­манд­ной стро­ки VLC: на­при­мер, сме­нить
ау­дио- и ви­део­ко­де­ки, бит­рейт, раз­ре­ше­
ние ви­део, об­ре­зать ви­део с лю­бой сто­ро­
ны или при­ме­нить фильт­ры из CLI. Оп­ция
-H по­зна­ко­мит вас со все­ми под­роб­но­стя­
ми ис­поль­зо­ва­ния.
Handbrake лю­б ез­н о пред ­л а­г а­е т пол­
но­функ­ц ио­наль­ный ин­с т­ру­мент ко­манд­
ной стро­к и, име­н уе­м ый HandBrakeCLI,
ко­то­рый мож­но ис­поль­зо­вать для вы­пол­
не­ния все­го, что де­ла­ет­ся в гра­фи­че­­ском
ин­тер­фей­се. Он при­го­ден для всех ви­дов
пе­ре­ко­ди­ро­ва­ния, от реа ­ли­за­ции пред­на­
стро­ек до рас­ши­рен­ных за­д ач пе­ре­ко­д и­
ро­в а­ния, на­при­мер, вклю­че­ния двух­про­
ход­н о­г о ко­д и­р о­в а­н ия. На wiki про­е к ­т а
име­ет­ся под­роб­ное ру­ко­во­дство, ко­то­рое
по­мо­жет оз­на­ко­мить­ся с оп­ция­ми ути­ли­ты
ко­манд­ной стро­ки.
Вер­дикт
FF Multi Converter
★★★★★
Handbrake
★★★★★
QWinFF
★★★★★
VLC
★★★★★
IFME
★★★★★
» Же­лая рабо­
тать с команд­
ной строкой,
не пожа­лейте
вре­ме­ни
на освое­ние
FFmpeg.
Рас­ши­рен­ные функ­ции управ­ле­ния
Что пред­ла­га­ет­ся ис­ку­шен­ным поль­зо­ва­те­лям?
Х
о­тя на­ши при­ло­же­ния мож­но ис­
поль­зо­в ать и не имея опы­т а ко­
ди­р о­в а­н ия ви­д ео, прак ­т и­ч е­­с ки
во всех есть не­ко­то­рые функ­ции управ­ле­
ния для ве­те­ра­нов в этой об­лас ­т и. Не­ко­
то­рые при­ло­же­ния ос­но­в а­ны на мощ­ных
биб­лио­те­ках ко­манд­ной стро­ки, и у опыт­
ных поль­зо­ва­те­лей есть шан­сы по­во­зить­
ся с до­ба­воч­ны­ми функ­ция­ми управ­ле­ния,
по­рой спо­соб­ны­ми рас­ши­рить пол­но­мо­чия
гра­фи­че­­ско­­го ин­тер­фей­са.
QWinFF пред ­ла­га­ет меньше воз­мож­но­
стей по рас­ши­рен­ным оп­ци­ям, чем неко­
то­рые дру­гие, но по­зво­ля­ет вве­сти до­пол­
ни­тель­ные па­ра­мет­ры во все ин­ст­ру­мен­ты
ко­манд­ной стро­ки, уча­ст­вую­щие в про­цес­
се пе­ре­ко­ди­ро­ва­ния, в т. ч. FFmpeg, ffplay,
SoX и т. д. VLC то­же не отлича­ется боль­шим
объ­е­мом кон­тро­ля над ис­поль­зо­ва­ни­ем ре­
сур­сов. Его рас­ши­рен­ные оп­ции ог­ра­ни­чи­
ва­ют­ся окош­ком для уст­ра­не­ния че­рес­с т­
роч­ной раз­верт­ки ви­део и воз­мож­но­с тью
соз­д а­вать ин­ди­ви­д у­а ль­ные про­фи­ли, вы­
брав фор­мат кон­тей­не­ра со­от­вет­ст­вую­щих
ау­дио- и ви­део­ко­де­ков.
Они вдво­е м яв ­л я­ю т со­б ой кон ­т раст
IFME, ко­то­рый пред­ла­га­ет не­сколь­ко оп­ций
28 | LXF208 Апрель 2016
для опыт­ных поль­зо­ва­те­лей, а так­же впе­
чат­л яю­щ ий кон­т роль за по­т реб­л е­н и­е м
ре­с ур­с ов. По умол­ч а­нию он за ­д ей­с т ­ву­е т
при пе­ре­ко­ди­ро­ва­нии все на ­лич­ные яд­ра
CPU, но вы мо­же­те оп­цио­наль­но по­про­сить
его ог­ра­ни­чить­ся толь­ко ча­стью из них, ос­
та­вив дру­гие для вы­пол­не­ния про­чих за­дач.
IFME уме­ет не толь­ко вли­ять на ви­део
са­мы­ми раз­ны­ми спо­со­ба­ми, но и ко­ди­ро­
вать ви­део в не­сколь­ко про­хо­док, что­бы со­
хра­нить наи­луч­шее ка­че­­с т­во. IFME так­же
спо­со­бен ко­ди­ро­вать и сжи­мать ау­дио без
по­терь, применяя ус­ко­ре­ние OpenCL; прав­
да, под­роб­ная ин­фор­ма­ция о том, как это
де­ла­е т­с я, от­с ут­с т­ву­е т. Кро­ме то­г о, IFME,
один из не­мно­гих, по­зво­ля­ет вы­брать ко­
ди­ров­щи­ки ау­дио и за­да­вать их на­строй­ки,
на­при­мер, бит­рейт, час­то­т у и ко­ли­че­­с т­во
ка­на ­лов для ко­ди­ро­ва­ния.
И еще есть FF Multi Converter, ко­то­рый
по­зво­ля­ет вво­дить до­пол­ни­тель­ные па­ра­
мет­ры ко­манд­ной стро­ки при вы­пол­не­нии
функ­ций ре­дак­ти­ро­ва­ния ви­део и да­же оп­
ре­де­лять ин­ди­ви­д у­а ль­ные ко­ман­ды FFm­
peg. В Handbrake есть от­дель­ная вклад­к а
для ре­дак­ти­ро­ва­ния изо­бра­же­ний и ау­дио,
и он по­зво­ля­ет при­сое­ди­нять к ви­део тэ­ги
> Мож­но кон­тро­ли­ро­вать, как IFME по­треб­
ля­ет CPU, вы­брав од­ну из шес­ти пред­на­
стро­ен­ных уров­ней CPU Priority: от Realtime [В ре­аль­ном вре­ме­ни ] и High [Вы­со­ко­
го] до Normal [Обыч­но­го] и Low [Низ­ко­го].
Вер­дикт
IFME
★★★★★
FF Multi Converter
ме­т а ­д ан­ных, на­при­м ер, Title [На­з ва­ние],
Actors [Ак ­т е ­р ы], Directors [Ре­ж ис­с е­р ы],
Plot [Сю­жет], Release Date [Да­та Вы­хо­д а],
Genre [Жанр] и т. д. Ин­тер­фейс Handbrake
вклю­ч а­е т не­с коль­ко на­с тро­е к, имею­щ их
смысл для опыт­ных поль­зо­ва­те­лей: на­при­
мер, оп­цию варь­и­ро­ва­ния час­то­ты кад­ров
или двух­про­ход­но­го ко­ди­ро­ва­ния. Вы мо­
же­те так ­же ис­поль ­зо­в ать вклад­к у Video,
что­бы пе­р е­д ать в эн­ко­д ер до­п ол­ни­т ель­
ные на­строй­ки.
www.linuxformat.ru/subscribe
★★★★★
Handbrake
★★★★★
QWinFF
★★★★★
VLC
★★★★★
» Стра­те­гия
Handbrake при­
во­дить рас­ши­
рен­ные оп­ции
в глав­ном интер­
фей­се мо­жет пу­
тать но­вич­ков.
Ви­део­транс­ко­де­ры Сравнение
Луч­шие транс­ко­де­ры
Вердикт
Э
то од­но из тех Срав­не­ний, где вы­
брать по­бе­ди­те­ля до­воль­но труд­
но. Де­ло в том, что най­дет­ся об­
ласть при­м е­н е­н ия для ка ­ж ­д о­г о из них.
Од­на­ко на­шим по­бе­ди­те­лем бу­дет тот, что
по­ле­зен боль­шин­ст­ву поль­зо­ва­те­лей. Под­
черк­нем, что у ка­ж ­до­го из при­ло­же­ний есть
свой ко­нек. На­при­мер, IFME под­дер­жи­ва­
ет мень­ше всех ко­де­ков — за­то яв­ля­ет­ся,
ве­р о­я т­но, наи­л уч­ш ей оп­ц и­е й для соз­д а­
ния оп­т и­ми­зи­ро­в ан­но­го ви­део для по­то­
ко­во­г о ве­щ а­ния. Гиб­рид­н ое ис­п оль­зо­в а­
ние им GUI и ко­манд­ной стро­к и оз­на­ча­ет
удоб­ст­во груп­по­во­го пе­ре­ко­ди­ро­ва­ния ви­
део с оди­на­ко­вы­ми на­с трой­ка­ми, и бы­с т­
рее, чем дру­гие при­ло­же­ния.
По­доб­ным же об­ра­зом FF Multi Conver­
ter яв­л я­е т­с я хо­р о­ш ей гра­ф и­ч е­­с кой обо­
лоч­кой для FFmpeg. Это при­ло­же­ние пред­
ла­г а­е т мно­ж е­с т­в о функ­ц ий управ­л е­н ия
и под ­д ер­ж и­в а­е т мас­с у фор­м а­т ов. Увы,
в нем нет оп­ц ии, по­зво­ляю­щей про­с мат­
ри­в ать файл пе­ред его пе­ре­ко­д и­ро­в а­ни­
ем, и хо­тя он уме­ет де­лить фай­лы на час­ти,
I
но не пре­ду­смат­ри­ва­ет ме­ха­низ­ма сде­лать
эти из­м е­н е­н ия ви­д и­м ы­м и. Од­н а­ко ес­л и
вы хо­ти­те кон­вер­ти­ро­вать не толь­ко ви­део,
то это при­л о­же­ние от­лич­н о справ­л я­е т­с я
с кон­вер­ти­ро­ва­ни­ем изо­бра ­же­ний и до­к у­
мен­тов в раз­ные по­пу­ляр­ные фор­ма­ты.
У нас был боль­шой со­блазн объ­­я­вить
по­б е­д и­т е­л ем данно­г о Срав­н е­н ия VLC.
В кон­це кон­цов, это один из луч­ших муль­
ти­ме­диа-плей­е­ров, и функ­ции пе­ре­ко­ди­
ро­ва­ния, пред ­ла­г ае­мые VLC, впол­не кон­
ку­рен­то­спо­с об­ны. Нас так ­же впе­чат­ли­ло
на ­ли­чие ви­део- и ау­дио­фильт­ров, ко­то­рые
по­зво­ля­ют вне­с ти свое­об­раз­ные штри­х и
в ко­ди­руе­мое ви­део. Но хо­тя у нас не вы­зы­
ва­ет на­ре­ка­ний его упот­реб­ле­ние в ка­че­­ст­ве
мно­го­це­ле­во­го ме­диа-плей­е­ра, ему не хва­
та­ет не­ко­то­рых функ­ций, обя­зан­ных быть
в спе­ц иа ­ли­зи­р о­в ан­н ом транс­ко­д е­р е: на­
при­мер, пред­про­смот­ра фай­лов и ви­зу­а ль­
но­го ото­бра ­же­ния вно­си­мых из­ме­не­ний.
Един­ст­вен­ная при­чи­на, по ко­то­рой в по­
бе­ди­те­ли не вышел Handbrake — его ог­ра­ни­
че­ния в под­держ­ке кон­тей­не­ров и ко­де­ков.
IV
QWinFF ★★★★★
Вер­сия: 0.2.1 Сайт: http://qwinff.github.io Ли­цен­зия: GPL v3
» Удо­бен для но­вич­ков и име­ет дос­та­точ­но оп­ций
для опыт­ных поль­зо­ва­те­лей.
II
> QWinFF — бо­лее
при­вле­ка­тель­ный
эс­те­ти­че­ски и обер­
ну­тый в Qt ро­дич
WinFF, от ко­то­ро­го
и бе­рет спи­сок сво­
их пред­на­стро­ек.
QWinFF прост
и с лег­костью справ­ля­
ет­ся с ра­бо­той.
FF Multi Converter ★★★
★★
Вер­сия: 1.7.2 Сайт: http://bit.ly/FFMultiConverter Ли­цен­зия: GPL v3
» Вер­ное сво­ему име­ни, при­ло­же­ние кон­вер­ти­ру­ет так­же
изо­бра­же­ния и до­ку­мен­ты.
V
Handbrake ★★★★
★
Вер­сия: 0.10.2 Сайт: https://handbrake.fr Ли­цен­зия: GPL v2
» Луч­шая оп­ция пе­ре­ко­ди­ро­ва­ния ви­део для лю­бо­го
оф­флайн-ис­поль­зо­ва­ния.
III
Ес­ли вам на­до пе­ре­ко­ди­ро­вать ви­део для
оф­флайн-вос­про­из­ве­де­ния на сво­их уст­
рой­ст­вах, вы мо­же­те дать Handbrake шанс,
и его удоб­ные под­сказ­ки по­мо­г ут вам осу­
ще­ст­в­лять на­ви­га­цию по его до­воль­но за­
гру­жен­но­му ин­тер­фей­су.
Но ес­ли вам ну­жен транс­ко­дер ви­део,
ко­то­рый бу­дет про­стым и с лег­ко­стью спра­
вит­ся с ра­бо­той, возь­ми­те QWinFF. У не­го
мощ­ная серд­це­ви­на и сим­па­тич­ные до­пол­
не­ния — на­при­мер, пред­про­смотр и оп­ция
ви­зу­а ль­но на­с траи­в ать ви­део, что­бы по­
мочь вам с удоб­ст­вом вы­пол­нять ра­бо­т у.
IFME ★★★
★★
Вер­сия: 5.1 Сайт: https://x265.github.io Ли­цен­зия: GPL v2
» Од­на из луч­ших оп­ций для оп­ти­ми­зи­ро­ван­но­го ви­део
при он­лайн-стри­мин­ге.
VLC ★★★★
★
Обратная связь
Вер­сия: 2.2.1 Сайт: www.videolan.org/vlc Ли­цен­зия: GPL v2
» Идеа­лен для всех, ко­му нуж­но уре­зать ко­ли­че­­ст­во
ис­поль­зуе­мых при­ло­же­ний.
Ре­г у­ляр­но пе­ре­ко­ди­руе­те ви­део? Со­глас­ны с на­ми или, по-вашему, Handbrake
лучше? Или при­ме­няе­те не­что иное? Пиши­те нам: lxf.letters@futurenet.com.
Рас­смот­ри­те так­же...
В
ас не уст­ро­ил наш спи­сок? В ре­по­зи­то­ри­ях
ва­ше­го ди­ст­ри­бу­ти­ва есть мно­же­ст­во иных
оп­ций. Од­на из пер­вых, на ко­то­рую сто­ит
взгля­нуть — WinFF, с очень про­стым ин­тер­фей­сом.
Еще один транс­ко­дер на ба­зе FFmpeg — FFmpeg
YAG. Этот про­ект до сих пор име­ет от­мет­к у аль­фа,
и его един­ст­вен­ный ре­лиз, по­хо­же, не пред ­ла­га­ет
ни­ч е­г о вы­д аю­щ е­г о­с я и от­л ич­н о­г о от кон­к у­р ен­
тов, но на не­го сто­и т взгля­нуть. Транс­ко­дер Curlew так ­же ос­н о­в ан на FFmpeg и до­в оль­н о по­п у­
ля­рен. Од­на­ко его по­с лед­ний ста­биль­ный ре­лиз
был в 2014 г., а по­с лед­няя вер­сия 2.0 на­хо­д ит­с я
в ста­дии бе­та с се­ре­ди­ны про­шло­го го­да. Есть еще
MakeMKV — в ос­нов­ном это при­ло­же­ние Windows,
www.linuxformat.ru/subscribe
но со­о б­щ е­с т­в о поль­з о­в а­т е­л ей пор­т и­р о­в а ­л о его
и соз­да­ло вер­сию Linux. Ес­ли вам нуж­но на­ре­зать
DVD, мо­жет так­же по­про­бо­вать OGMRip в ка­че­­ст­ве
аль­т ер­на­т и­вы Handbrake. И, на­ко­нец, есть та­к ие
при­ло­же­ния, как Avidemux, умею­щие пе­ре­ко­ди­ро­
вать ви­део в по­ряд­ке до­пол­не­ния к их ос­нов­ной ра­
бо­те ви­део­ре­дак ­то­ра. |
Апрель 2016 LXF208 | 29
Тай­ны ха­ке­ров
ел­лом
в
­
д
и
Б
и
н
­
н
о
ж
Д
с
м
Пу­те­ше­ст­ву­е
­не
по рас­ту­щей стра изу­ча­ем
ви
о
к
­
и
н
­
н
е
л
­
ш
ы
м
у
­
о
л
з
­ты.
и
щ
­
а
з
­
о
м
­
а
с
ю
ь
л
­
е
ц
их ата­ки — с К
ак бы нам ни хо­те­лось ве­рить в об­рат­
ное, но Ин­тер­нет — это не од­но сплош­
ное бла­го­ле­пие, ра­ду­га и еди­но­ро­ги.
И не то что со­об­ще­с т­ва ра­дуг и еди­
но­ро­гов он­лайн не про­цве­та­ют — они-то про­цве­та­
ют, но за­од­но не бед­ст­ву­ют и под­лые ха­ке­ры, жа­
ж­ду­щие по­хи­тить, вы­пы­тать, ис­пор­тить, за­ра­зить
или по­вре­дить лю­бые циф­ро­
вые цен­но­сти, до ко­то­рых способны до­тя­нуть­ся их за­гре­бу­
щие ла­пы.
В а­ш и в ы­ч и с­л и­т е л ь­н ы е
мощ­н о­с ти, сай­т ы, па­р о­л и,
спи­с ки кон­т ак ­т ов и, ко­н еч­
но, ин­ф ор­м а­ц ия о кре­д ит­н ых кар­т ах — всё это
пред­ме­ты алч­но­с ти ин­тер­нет-мер­зав­цев, стре­мя­
щих­ся лю­бы­ми сред­с т­ва­ми за­по­лу­чить та­кие ре­
сурсы. Ино­гда это бы­ва­ют про­стые прие­мы со­ци­
аль­н ой ин­ж е­н е­р ии — фи­ш ин­г о­в ые со­о б­щ е­н ия
по элек ­трон­ной поч­те, за­мас­ки­ро­ван­ные под со­
об­ще­ния от ва­ше­го бан­ка; или не­что бо­лее тон­кое,
на­при­мер, вре­до­нос­ный код Java­Script, встро­ен­
ный в сто­рон­нее рек ­лам­ное объ­яв­ле­ние на ва­шем
лю­б и­м ом сай ­т е. Ре ­з уль­т а­т ы мо­г ут быть лю­б ы­
ми — от не­удоб­с т ­в а (на­при­м ер, не­о б­хо­д и­м ости
про­хо­д ить че­рез раз­д ра ­ж аю­ще длин­н ую про­це­
ду­ру ре­ги­с т­ра­ции па­ро­ля) до не­при­ят­но­с тей (по­
те­ри пер­со­наль­ных дан­ных, на­при­мер, фо­то­г ра­
И сно­в а, мо­т и­в а­ц ия в ос­н ов­н ом корыстная,
но мо­г ут быть и иные це­ли: на­при­мер, про­мыш­
лен­ный шпио­наж или ис­ка­же­ние ви­д а сай­та. Все
ста­но­вит­ся ку­да серь­ез­нее, ес­ли во­вле­ка­ет­ся го­су­
дар­с т­во. При по­доб­ном сце­на­рии по­тен­ци­а ль­ные
жерт­вы мо­г ут об­на­ру ­ж ить, что их обо­ру­до­ва­ние
по­вре­ж ­де­но еще до то­го, как оно ус­пе­ло по­ки­нуть
про­из­вод­с т­во, или что мно­гие
уз­лы Tor на­с трое­ны та­к им об­
ра ­з ом, что про­и с­хо­д ит ата­к а,
на­п рав­л ен­н ая на уст­р а­н е­н ие
ано­ним­но­с ти, или что они пе­
ре­на­прав­ле­ны на под­дель­н ую
вер­сию их лю­би­мо­го про­ве­рен­
но­го сай­та, ко­то­рая те­перь бу­дет со­би­рать иден­
ти­фи­к а­ц и­он­н ую ин­фор­ма­ц ию. Ра­бот­ни­к и Belga­
com па ­ли жерт­ва­ми по­след­ней — так на­зы­вае­мой
ата­ки Watering Hole — яв­ля­ясь ча­стью про­грам­мы
Quantum Insert от GCHQ, ко­то­рая пе­ре­на­прав­ля­ла
их на со­дер­жа­щие вре­до­нос­ное ПО вер­сии Linked­
In и Slashdot.
Ата­ки ред­ко на­прав­ле­ны
про­тив кон­крет­но­го поль­зо­ва­
те­ля: обычно «ничего лич­но­го».
30 | LXF208 Апрель 2016
фий) и пол­ной ка­та­ст­ро­фы (опус­то­ше­ния ва­ше­го
бан­ков­с ко­г о сче­т а или кра ­ж и ва­ш ей иден­т и­ф и­
ка­ци­он­ной ин­фор­ма­ции). Од­на­ко хакерские ата­ки
довольно ред­ко на­прав­лены на кон­крет­но­го поль­
зо­ва­те­ля, то есть обыч­но, как говорится, «ничего
лич­но­го»: они, ско­рее, целятся на оп­ре­де­лен­ные
сай­ты или некоторую ин­фра­струк­т у­ру.
www.linuxformat.ru/subscribe
Тай­ны ха­ке­ров
За­щи­та на­столь­ных ПК
Сле­дуй­те этим со­ве­там до­ма — и вы не угоди­те в печаль­ную ста­ти­сти­ку
облапошенных.
Б
ез­ус­лов­но, есть ви­ру­сы Linux, и без­ус­лов­но, есть ан­ти­ви­
рус­ные про­грам­мы для Linux, но в це­лом в них нет осо­бой
ну ­ж­ды, раз­ве что для при­ме­не­ния са­мы­ми па­ра­нои­даль­
ны­ми до­маш­ни­ми поль­зо­ва­те­ля­ми — в ос­нов­ном бла­го­да­ря то­
му, что к ска­чи­ва­нию не­же­ла­тель­ных про­грамм в ми­ре Linux от­но­
сят­ся не­одоб­ри­тель­но. Пред­поч­ти­тель­ный спо­соб ра­бо­ты — че­рез
ваш ме­нед­жер па­ке­тов для ска­чи­ва­ния про­грамм; он про­ве­ря­ет це­
ло­ст­ность и ау­тен­тич­ность все­го ска­чи­вае­мо­го, и вам не­че­го вол­
но­вать­ся при ус­та­нов­ке Ask Toolbar [Ред.: — Од­на­ко!]. Фак­ти­че­­ски,
ме­нед­жер па­ке­тов, или, вер­нее, его час­тое при­ме­не­ние (вме­с те
с ра­зум­ной по­ли­ти­кой ре­зерв­но­го ко­пи­ро­ва­ния) — это луч­ший спо­
соб ох­ра­ны здо­ро­вья ва­ше­го Linux.
Ос­н ов­ные ди­с т ­ри­бу ­т и­вы бы­с т ­р о вы­п ус­к а­ю т за­п лат ­к и к об­
на­ру ­жен­ным уяз­ви­мо­с тям сис­те­мы безо­пас­но­с ти, и вы долж­ны
сразу их применять. Ес­ли вы не ис­поль­зуе­те ди­ст­ри­бу­тив на ис­
ход­ни­ках, ти­па Gentoo, об­нов­ле­ние па­ке­тов зай­мет счи­тан­ные се­
кун­ды (ну, мо­жет, не­сколь­ко се­к унд, ес­ли вы дав­но это­го не де­ла­
ли), так что у вас нет при­чин отнекиваться. Бо­лее ори­ен­ти­ро­ван­ные
на поль­зо­ва­те­ля ди­ст­ри­бу­ти­вы да­же на­пом­нят вам об этом сами,
из сво­его гра­фи­че­­ско­­го ин­тер­фей­са. Ес­ли у вас или у ва­шей те­
туш­ки Этель сто­ит дои­сто­ри­че­­ская ус­та­нов­ка сис­те­мы, по­ба­луй­те
се­бя и об­но­ви­те эту систему. Ве­ли­ки шан­сы, что ес­ли обо­ру­до­ва­
ние ра­бо­та­ло со ста­рой Ubuntu, оно ни­чуть не ху­же — а воз­мож­но,
да­же луч­ше — сра­бо­тается и с но­вой. А ес­ли у те­т уш­ки Этель —
один из мил­лио­на ком­пь­ю­те­ров, на ко­то­рых по-преж­не­му ра­бо­та­ет
Windows XP, то со­вер­ши­те ра­зум­ный по­сту­пок и ус­та­но­ви­те Linux.
Вследствие стан­дар­тов Ин­тер­не­та (а в слу­чае Flash их склон­ны
иг­но­ри­ро­вать), мно­гие ата­ки яв­ля­ют­ся кросс-плат­фор­мен­ны­ми.
По­это­му уяз­ви­мость в Chrome (или Chromium) мож­но об­на­ру­жить
и ис­поль­зо­вать так, что в рав­ной ме­ре по­стра­да­ют поль­зо­ва­те­ли
Windows, OS X и Linux. По­доб­ным же об­ра­зом сле­д ую­щая уяз­ви­
мость Flash (ве­ро­ят­но, она поя­вит­ся че­рез не­де­лю по­сле то­го, как
вы это про­чи­тае­те) мо­жет за­тро­нуть всех поль­зо­ва­те­лей. Лег­ко
на­сме­хать­ся над Flash и вы­смеи­вать ужас­ный вы­бор его ав­то­ров
в пла­не про­грам­ми­ро­ва­ния, од­на­ко прав­да в том, что не­га­тив­ные
от­зы­вы о нем объ­яс­ня­ют­ся его бы­лой по­пу­ляр­но­стью. К сча­стью,
Ин­тер­нет не­мно­го по­взрос­лел, и мы осоз­на­ли, что в ко­неч­ном ито­
ге про­прие­тар­ные пла­ги­ны — не са­мая удач­ная идея. Да­же Adobe
и Microsoft со­гла­си­лись с этим, ре­ко­мен­дуя сво­им поль­зо­ва­те­лям
от­ка­зать­ся от Flash и Silverlight. И кто мы та­кие, что­бы спо­рить?
Есть еще не­сколь­ко чу­да­ко­ва­тых сай­тов, ко­то­рые ис­поль­зу­ют Flash,
но боль­шин­ст­во (вклю­чая YouTube) для всех сво­их вид­же­тов пе­ре­
шло на HTML5.
Так по­че­му бы не по­смот­реть, про­жи­ве­те ли вы без Flash? Для
на­ча­ла от­к лю­чи­те его в брау­зе­ре, и ес­ли спус­тя не­сколь­ко дней
блу ­ж ­д а­ния по Ин ­т ер­н е­т у вы ров­н о ни­ч е­г о не за­м е­т и ­т е (кро­м е
от­сут­с т­вия раз­д ра ­ж аю­щей рек ­ла­мы), то мо­же­те сме­ло уда ­лить
не­год­ни­ка. А ес­ли вы за­хо­ди­те на сай­ты, где он по-преж­не­му ну­
жен, об­ду­май­те ус­та­нов­к у пла­ги­на вро­де flashblock, что­бы ап­пле­
ты Flash вос­про­из­во­ди­лись только при на ­жа­тии.
Не­м а­л о так ­же и вре­д о­н ос­н о­г о JavaScript, так что, блу­ж ­д ая
по тем­ным за­ко­ул­кам Се­ти, не за­будь­те ис­поль­зо­вать пла­гин вро­
де NoScript, что­бы его ос­та­но­вить. Ве­ро­ят­но, вам при­дет­ся вне­сти
не­ко­то­рые на­деж­ные сай­ты в бе­лый спи­сок, по­то­му что боль­шая
часть Се­ти без JavaScript не ра­бо­та­ет. Все боль­ше сай­тов гром­ко
осу­ж ­да­ют бло­ки­ров­щи­ки рек­ла­мы. А мы за­яв­ля­ем, что по­ка рек­
лам­ные се­ти уяз­ви­мы для зло­умыш­лен­ни­ков, а сай­ты ис­поль­зу­ют
на­зой­ли­вую и вред­ную рек­ла­му, поль­зо­ва­тель дол­жен иметь пра­
во на спо­кой­ную жизнь в Се­ти.
И, на­ко­нец, пом­ни­те о не­об­хо­ди­мо­сти об­нов­лять про­шив­к у сво­
его ро­у те­ра: ин­фи­ци­ро­ван­но­му ро­у те­ру лег­ко на­нес­ти ущерб хо­ро­
шо на­стро­ен­но­му ком­пь­ю­те­ру, со­еди­нен­но­му с ним, и мно­гие се­
те­вые ата­ки на­це­ле­ны как раз на эти уст­рой­ст­ва. Ино­гда об этом
за­бо­тит­ся ваш ин­тер­нет-про­вай­дер, но вы, воз­мож­но, ре­ши­те за­
ме­нить обо­ру­до­ва­ние сво­его про­вай­де­ра на ро­у тер с чу­дес­ным
DD-WRT [см. стр. 72, LXF198).
> Flash, ах, а-ах…
Да­же Adobe пы­та­
ет­ся дис­тан­ци­ро­
вать­ся от сво­его
кросс-плат­фор­мен­
но­го пла­ги­на с по­
мо­щью хит­ро­ум­но­
го реб­рен­дин­га.
Ин­тер­нет (пло­хих) Ве­щей
Оче­вид­но, что бу­д у­щее на­сту­па­ет — и не менее
оче­вид­но, что оно под­ра­зу­ме­ва­ет под­к лю­че­ние
ва­ше­го хо­ло­диль­ни­ка или утюга к Ин­тер­не­т у.
У нас нет ни малейших со­мне­ний в том, что весь­ма
удоб­но, ко­гда ваш хо­ло­диль­ник сам за­ка­зы­ва­ет
в магазине мо­ло­ко, ре­шив, что его за­пас вы­шел,
или ко­гда ото­пле­ние вклю­ча­ет­ся са­мо, узнав
о вашем выхо­де с ра­бо­ты, или ко­гда мож­но ав­то­ма­
ти­зи­ро­вать не­ко­то­рые за­да­чи — на­при­мер, по­лить
со­ба­к у или по­кор­мить цве­ты. К со­жа­ле­нию, тех­но­
ло­гия, вы­звав­шая всё это к жиз­ни, в то же вре­мя
яв­ля­ет­ся ка­та­ст­ро­фой, ко­то­рая за­таи­лась в ожи­да­
нии сво­его звездного ча­са.
Все это бу­дет ос­но­вы­вать­ся на объ­е­ди­нен­ных
в сеть встро­ен­ных сис­те­мах, ко­то­рые по боль­шей
час­ти не да­ют воз­мож­но­сти по­ста­вить за­плат­ки: да,
на боль­шин­ст­ве из них ока­жет­ся Linux для ARM или
MIPS, но боль­шин­ст­во обо­ру­до­ва­ния бу­дет при­ме­
нять дво­ич­ные драй­ве­ры. И по­это­му при об­на­ру­
же­нии уяз­ви­мо­стей в сис­те­ме безо­пас­но­сти (а они
бу­д ут об­на­ру­же­ны) вы не смо­же­те про­пат­чить эти
уст­рой­ст­ва. Поль­зо­ва­те­ли, же­лаю­щие из­бе­жать
www.linuxformat.ru/subscribe
ин­фи­ци­ро­ва­ния, долж­ны бу­д ут их от­к лю­чить
(сде­лать свой дом ме­нее ум­ным) или при­об­ре­сти
мо­дель по­но­вее. От­час­ти спа­са­ет Raspberry Pi,
где есть та­кая за­ме­ча­тель­ная шту­ка, как GPIO для
со­еди­не­ния со все­ми Ве­ща­ми (сен­со­ра­ми, ка­ме­
ра­ми, ва­шим серд­цем), и уж это-то уст­рой­ст­во
вы пол­но­стью кон­тро­ли­руе­те. Обыч­но до­пол­не­ния
к Raspberry Pi идут с драй­ве­ра­ми с от­кры­тым ко­
дом, и от­кры­тая при­ро­да со­об­ще­ст­ва оз­на­ча­ет, что
драй­ве­ры долж­ны со­дер­жать­ся в пол­ном по­ряд­ке
до да ­ле­ко­го бу­д у­ще­го.
Апрель 2016 LXF208 | 31
Тай­ны ха­ке­ров
Ме­то­ды ха­кин­га
Уз­нав о трю­ках зло­умыш­лен­ни­ков, незамедлительно спла­ни­руй­те
свою за­щи­ту.
П
ре­ж­де чем ще­бе­тать обо всех чуд­ных и за­га­доч­ных спо­
со­бах ком­про­ме­та­ции дан­ных, мы нач­нем с са­мо­го об­ще­
го: со­ци­аль­ной ин­же­не­рии. Од­но­знач­но, са­мый про­стой
спо­соб для зло­умыш­лен­ни­ка уз­нать ваш па­роль — про­сто спро­
сить его, или за­ста­вить вас вве­сти его на сай­те, ко­то­рый на­хо­дит­
ся под чу­жим кон­тро­лем. Урок, ко­то­рый вы долж­ны из­влечь из это­
го, за­клю­ча­ет­ся в обыч­ной ос­то­рож­но­сти: то, что с ви­ду со­об­ще­ние
при­шло от ва­ше­го зна­ко­мо­го, во­все не оз­на­ча­ет, что так оно и есть.
Та­кие со­об­ще­ния да­же бывают от­прав­ле­ны с той са­мой учет­ной
за­пи­си, но это мо­жет оказаться все­го лишь след­ст­ви­ем взло­ма.
Ес­ли оно все­го лишь со­дер­жит ссыл­к у на не­кий мут­ный до­мен
с не от­но­ся­щим­ся к де­лу тек­стом, то поч­ти на­вер­ня­ка не яв­ля­ет­ся
под­лин­ным, и вам не сто­ит на­жи­мать на эту ссыл­ку. По­доб­ным же об­
ра­зом мо­шен­ни­ки мо­гут от­прав­лять со­об­ще­ния элек­трон­ной поч­ты,
ими­ти­рую­щие со­об­ще­ния ва­ше­го бан­ка. Они час­то пред­ла­га­ют «об­
но­вить на­строй­ки безо­пас­но­сти», пред ­ла­гая ссыл­к у на сайт, очень
по­хо­жий на сайт ва­ше­го бан­ка. Они час­то ре­ги­ст­ри­ру­ют по­хо­же­го
ви­да до­мен­ные име­на, на­при­мер, за­ме­няя 1s на ls (по­смот­ри­те, как
здо­ро­во это ра­бо­та­ет со шриф­том LXF). К сча­стью, в по­след­ние
го­ды все боль­ше при­ме­ня­ют­ся так на­зы­вае­мые сер­ти­фи­ка­ты Ex­
tended Validation (EV) SSL. Они под­вер­га­ют­ся тща­тель­ней­ше­му изу­
че­нию Certificate Authority, и ес­ли они под­твер­ж де­ны, то ваш брау­
зер ото­бра­зит на­зва­ние ком­па­нии в ве­се­лой зе­ле­ной стро­ке ря­дом
с ве­се­лым зе­ле­ным за­моч­ком. Ваш банк поч­ти на­вер­ня­ка ис­поль­
зу­ет сер­ти­фи­ка­ты EV, по­это­му убе­ди­тесь, что сер­ти­фи­кат про­ве­рен
в ва­шем брау­зе­ре, пре­ж ­де чем вво­дить лю­бые све­де­ния. Вы­яс­ни­те
так ­же по­ли­ти­к у сво­его бан­ка на­счет об­ще­ния по элек ­трон­ной поч­
те; мно­гие бан­ки ука­зы­ва­ют в со­об­ще­ни­ях по­след­ние че­ты­ре циф­
ры но­ме­ра ва­ше­го сче­та, и при по­лу­че­нии со­об­ще­ния яко­бы от сво­
его бан­ка без этой ин­фор­ма­ции вам сто­ит на­сто­ро­жить­ся.
С кон­ц а 1990‑х су­ще­с т­ву­ют ата­ки SQL-инъ­ек­ций, и, как мно­
гое из то­го вре­ме­ни [Ред.: — На­при­мер, чув­ст­во сти­ля на­ше­го на­
уч­но­го ре­д ак ­то­ра], они не­объ­яс­ни­мым об­ра­зом про­дол­жа­ют су­
ще­с т ­во­в ать, ни­ч уть не ин ­т е­р е­с у­я сь раз­ви ­т и­е м. На са­м ом де ­л е
> Тем, кто не ве­рит, что DDoS-ата­ки ре­аль­ны, www.digitalattackmap.com до­ка­жет в ре­аль­ном вре­ме­ни, что они не пра­вы.
DDoS — ку­вал­да се­те­вых атак
Distributed Denial of Service (DDoS, рас­пре­де­лен­ный
от­каз в об­слу ­жи­ва­нии) — это, ве­ро­ят­но, наи­ме­нее
изящ­ный ме­тод вы­шибить сер­вис из Се­ти. И один
из по­пу­ляр­ней­ших. По су­ти это бом­бар­ди­ров­ка
сай­та тра­фи­ком со мно­же­ст­ва раз­ных хос­тов
(от­сю­да — рас­пре­де­лен­ный), что­бы он ока­зал­ся
не в си­лах об­слу­жи­вать за­кон­ные за­про­сы или
вообще рух­нул.
Есть ин­ст­ру­мен­ты, на­при­мер, Slow Loris и Low
Orbit Ion Cannon (LOIC), ко­то­рые мож­но у­потребить,
32 | LXF208 Апрель 2016
что­бы на­пра­вить всю мощь сво­его ка­на­ла на вы­
бран­ные ва­ми хос­ты, воз­мож­но, объ­е­ди­нив свои
уси­лия с еди­но­мыш­лен­ни­ка­ми; од­на­ко мы на­стоя­
тель­но не ре­ко­мен­д у­ем так де­лать, по­то­му что это
про­ти­во­за­кон­но. Боль­шин­ст­во DDoS-атак сей­час
про­во­д ят­ся ор­да­ми ском­про­ме­ти­ро­ван­ных ком­пь­ю­
те­ров, ко­то­рые име­ну­ют­ся botnet.
DDoS-ата­ки ру­ко­во­дству­ют­ся про­стой ма­те­ма­
ти­кой: за­про­сы нуж­ны ко­рот­кие (что­бы от­прав­лять
их в боль­шом ко­ли­че­­ст­ве), но спо­соб­ные ока­зать
www.linuxformat.ru/subscribe
мощ­ное воз­дей­ст­вие на сер­вер — или в си­лу ре­сур­
со­ем­ко­сти их об­ра­бот­ки (на­при­мер, за ­х ле­бы­ва­ния
CPU и па­мя­ти жерт­вы), или по­то­му, что от­ве­ты
на них тре­бу­ют боль­шой про­пу­ск­ной спо­соб­но­сти
ка­на­ла (за­ни­мая ис­хо­д я­щ ую сеть хос­та). Пе­ред са­
мым Ро­ж ­де­ст­вом 2015 г. BBC вы­шиб­ли в оф­флайн
ре­корд­ной ата­кой на 602 ГБ/с. Бес­по­кой­ст­во вы­
зы­ва­ет то, что груп­па, взяв­шая на се­бя от­вет­ст­вен­
ность за эту ата­к у, зая­ви­ла, что они «про­сто про­ве­
ря­ли свои воз­мож­но­сти».
Тай­ны ха­ке­ров
это не со­всем так, есть не­ко­то­рые ва­риа­ции во­круг ос­нов­ной те­
мы; но глав­ная идея в том, что код SQL так или ина­че вти­ски­ва­ет­
ся на ком­пь­ю­тер и ли­бо вы­да­ет ин­фор­ма­цию о ба­зе дан­ных, ли­бо
за­став­ля­ет эту ба­зу дан­ных пля­сать под дуд­к у зло­умыш­лен­ни­ка.
Клас­си­че­­ские при­ме­ры обыч­но свя­за­ны с тща­тель­но ото­бран­ной
поль­зо­ва­тель­ской ин­фор­ма­ци­ей из web-фор­мы. На­при­мер, не­ред­
ко в ка­че­­ст­ве ин­тер­фей­са к ба­зе дан­ных ис­поль­зу­ет­ся PHP. Пред­
по­ло­жим, у нас есть про­стая фор­ма, ко­то­рая про­сит поль­зо­ва­те­
ля вве­сти имя поль­зо­ва­те­ля и па­роль и ис­поль­зу­ет та­кой фраг­мент
PHP для про­вер­ки этой ин­фор­ма­ции (че­рез стан­д арт­ный за­прос
HTTP POST) в ба­зе дан­ных MySQL:
$query = “SELECT * FROM users WHERE username = ‘” + $user­
name + “’ AND password = ‘” + $password + ‘”;
На вид — ра­зум­но: мы ста­ра­тель­но вло­жи­ли оди­ноч­ные ка­выч­
ки, что­бы пе­ре­мен­ные PHP нор­маль­но пе­ре­д а ­лись ба­зе дан­ных.
И бы­ло бы ра­зум­ным, ка­бы мы под­чи­ща­ли вве­ден­ную поль­зо­ва­
те­лем ин­фор­ма­цию. (Пред­по­ло­жим, что пе­ре­мен­ные $username
и $password пе­ре­д а­ны из на­шей фор­мы в пер­во­з дан­ном ви­де).
Про­бле­ма — в на­шем убе­ж ­де­нии, что на­ши поль­зо­ва­те­ли не бу­дут
пе­ре­да­вать че­рез на­шу фор­му не­обыч­ную ин­фор­ма­цию. А вдруг
в по­ле па­ро­ля вве­ли zelda’ OR 1=1? Об­ра­ти­те вни­ма­ние на не­замк­
ну­т ую ка­выч­к у: она за­пу­ты­ва­ет за­прос SQL, за­став­ляя его счи­тать,
что всё по­сле ка­выч­ки — часть са­мо­го за­про­са. Итак, да­же ес­ли
мы вве­дем не­дей­ст­ви­тель­ное имя поль­зо­ва­те­ля или имя на­стоя­ще­
го поль­зо­ва­те­ля, чьим па­ро­лем не яв­ля­ет­ся Zelda, за­прос всё рав­но
бу­дет со­от­вет­с т­во­вать всем поль­зо­ва­те­лям бла­го­д а­ря трю­из­му
1 = 1. В не­ко­то­рых движ­ках SQL в сис­те­му в ре­зуль­та­те входит пер­
вый поль­зо­ва­тель из спи­ска, а обыч­но это ад­ми­ни­ст­ра­тор. Ино­гда
тре­бу­ет­ся при­ло­жить чуть боль­ше уси­лий, что­бы этот трюк сра­бо­
тал — по­лу­чен­ный в ре­зуль­та­те за­прос не яв­ля­ет­ся дей­ст­вую­щим
SQL из-за не­сов­па­даю­щих ка­вы­чек, од­на­ко это мож­но обой­ти, на­
при­мер, до­ба­вив в кон­це вре­до­нос­но­го фраг­мен­та ком­мен­та­рии.
SQL-инъ­е к­ц ии бы­в а­ю т и бо­л ее про­д ви­н у ­т ые/раз­ру­ш и­т ель­
ные, чем вы­ше­опи­сан­ная: на­при­мер, мож­но вве­сти ко­ман­ду (DROP
TABLES), ко­то­рая ско­рень­ко всё уда­лит из ак­тив­ной ба­зы дан­ных,
или до­ба­вить в ба­зу дан­ных сво­его соб­с т­вен­но­го поль­зо­ва­те­ля,
обес­пе­чив се­бе чер­ный ход на сайт. Для вво­д а вре­до­нос­ной ин­
фор­ма­ции нам да­же не нуж­на фор­ма: мы мо­жем сде­лать это, ма­
ни­пу­ли­руя URL или да­же соз­дав соб­ст­вен­ный за­прос HTTP POST.
Обоб­щен­но это пе­ре­ход из кон­тек­ста дан­ных (ко­то­рый мы в ка­че­
­ст­ве поль­зо­ва­те­ля кон­тро­ли­ру­ем) в кон­текст за­про­са (где на­ше­го
при­сут­ст­вия во­об­ще не пред­по­ла­га­ет­ся).
Ата­ки SQL-инъ­ек­ций про­ис­хо­дят что ни день, но с ни­ми про­ще
все­го спра­вить­ся, как мы уви­дим да­лее. Как ни уди­ви­тель­но, жерт­
вой по­доб­ной ата­ки в 2015 г. па­ла TalkTalk (бри­тан­ская те­ле­ком­
му­ни­ка­ци­он­ная ком­па­ния). Из­на­чаль­но их пресс-ре­ли­з со­об­щил
о не­кой «по­сле­до­ва­тель­но­ст­ной ата­ке», од­на­ко в кон­це кон­цов ком­
мен­та­то­ры вы­яс­ни­ли, что ком­па­ния па­ла жерт­вой этой са­мой три­
ви­а ль­ной из всех ти­пов атак. Пер­со­наль­ная ин­фор­ма­ция со­тен ты­
сяч поль­зо­ва­те­лей уго­ди­ла в ру­ки зло­умыш­лен­ни­ков, и на дан­ный
мо­мент аре­сто­ва­ны и вы­пу­ще­ны под за­лог пя­те­ро под­ро­ст­ков. Пост
Троя Хан­та [Troy Hunt] «Все, что вы хо­те­ли уз­нать о вне­дре­нии SQL
(но боя­лись спро­сить)» (http://bit.ly/TroyHuntUOnSQLInjections) оп­
ре­де­лен­но сто­ит про­чи­тать, ес­ли вы хо­ти­те уз­нать боль­ше о SQLI.
Меж­сай­то­вый скрип­тинг [Cross-site Scripting] (XSS) — на­зва­
ние, дан­ное клас­су бре­шей, ха­рак­тер­ных тем, что поль­зо­ва­тель мо­
жет вне­дрить соб­ст­вен­ные фраг­мен­ты ко­да или скрип­ты на сер­вер,
при не­спо­соб­но­сти сер­ве­ра их рас­по­знать. Вне­дрен­ный код обычно
на­пи­сан на JavaScript, по­это­му вы­пол­ня­ет­ся на сто­ро­не кли­ен­та.
На са­мом де­ле это не пря­мая ата­ка на сер­вер, а ско­рее ата­ка на дру­
гих поль­зо­ва­те­лей на нем.
> Скрипт Python sqlmap уме­ет ска­ни­ро­вать на пред­мет лю­бых уяз­ви­мо­стей
к SQL-инъ­ек­ци­ям, но обя­за­тель­но про­чти­те пре­ду­пре­ж­де­ние и сле­дуй­те ему.
INXS(S)
Эти ти­пы атак иг­ра­ют на том до­ве­рии, ко­то­рое лю­ди ис­пы­ты­ва­ют
к сай­там син­ди­ка­ции (XSS), по­сколь­к у ред­ко склон­ны пи­тать по­
доз­ре­ние к зна­ко­мо­му до­мен­но­му име­ни, ко­то­ро­му они уже, ве­
ро­я т ­но, раз­ре­ши ­ли (ес ­ли они ис­поль ­зу ­ют NoScript или Adblock
или не­ч то по­д об­ное) ис­пол­нять скрип­т ы. Код мож­но вне­д рить
в URL, или че­рез ком­мен­та­рий ли­бо пост на фо­ру­ме. Ран­ним при­
ме­ром яв­ля­ет­ся червь Samy, ко­то­рый в 2005 г. рас­про­с тра­нил­ся
по Myspace (то­гдаш­ней ос­нов­ной со­ци­а ль­ной се­ти). Сам по се­бе
червь был до­воль­но без­оби­ден — он про­сто до­бав­лял в про­фи­ли
не­кий текст, вы­ну­ж ­дая сво­их жертв стать друзь­я­ми ав­то­ра, Са­ми
Ата­ки SQL-инъ­ек­ций про­ис­
хо­дят что ни день, но с ни­ми
про­ще все­го спра­вить­ся.
Кам­ка­ра [Samy Kamkar]. Увы, все про­фи­ли, ко­то­рые он за­тра­ги­
вал, ока­зы­ва­лись за­ра­жен­ны­ми, так что за счи­т ан­ные ча­сы Са­
ми об­за­вел­ся бо­лее чем мил­лио­ном дру­зей. Myspace поч­ти сра­
зу при­крыл его учет­ную за­пись и ра­зо­брал­ся с про­бле­мой, од­на­ко
сви­де­тель­с т­ва то­го про­ис­ше­с т­вия до сих пор мож­но най­ти сре­
ди ре­лик­тов Myspace. Сна­ча­ла для Са­ми все бы­ло до­воль­но гру­
ст­но — до не­го до­б­ра­лись аген­ты сек­рет­ных служб и на три го­да
за­пре­ти­ли ему поль­зо­вать­ся ком­пь­ю­те­ром, од­на­ко он не сдал­ся
и стал ве­д у­щим ис­с ле­до­ва­те­лем про­блем безо­пас­но­с ти (за­гля­
ните на его сайт: http://samy.pl).
Мы мно­го слы­шим в прес­се о по­хи­щении ба­з дан­ных в ре­зуль­
та­те взло­ма сер­ве­ра. Зло­у мыш­лен­ни­к у, ко­то­рый так или ина­че
умуд­рил­ся спе­реть ба­зу дан­ных, еще при­дет­ся по­тру­дить­ся, что­бы
извлечь из нее ­поль­зу. По­ми­мо ин­фор­ма­ции по кре­дит­ным кар­там
(ко­то­рая, на­до на­де­ять­ся, всё же не хра­нит­ся в пол­ном объ­е­ме),
есть еще од­на вещь, чрез­вы­чай­но ин­те­рес­ная для зло­умыш­лен­ни­
ков, и это — па­ро­ли. К сча­стью, лю­бое при­ло­же­ние, ко­то­рое не зря
ест свой хлеб с со­лью (син­так­си­че­­ской), хра­нит хэш с син­так­си­че­
­ской со­лью, а не са­ми па­ро­ли в ви­де про­сто­го тек­ста. Ес­ли у двух
поль­зо­в а­те­лей оди­на­ко­вый па­роль, син­т ак­си­че­­ская соль обес­
пе­чи­ва­ет на ­ли­чие раз­ных со­хра­нен­ных хэ­шей. Об­на­ру ­жить хэшкон­фликт (для безо­пас­ных функ­ций хэ­ши­ро­ва­ния, ти­па SHA256)
труд­но, но та­к ие ин­с т­ру­мен­т ы для ата­к и гру­бой си­лы, как John
the Ripper, мо­г ут ав­то­ма­ти­зи­ро­вать этот про­цесс.
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 33
Тай­ны ха­ке­ров
За­щи­щать и ох­ра­нять
Под­клю­чен­ный к Се­ти (или просто сети) ком­пь­ю­тер с Linux не­сет
особую от­вет­ст­вен­ность.
Б
оль­шин­с т­во ди­с т­р и­б у­т и­вов пред­ла­г а­ю т по умол­ча­нию
весь­ма ра­зум­ные на­строй­ки безо­пас­но­сти, од­на­ко про­стор
для улуч­ше­ний все­гда есть. По ме­ре вклю­че­ния но­вых сер­
ви­сов по­яв­ля­ют­ся и но­вые век­то­ры для ата­ки, и по­это­му вам сто­
ит про­ве­рять, ка­кие сер­ви­сы вы ис­поль­зуе­те — или че­рез top, или
за­пус­кая $ systemctl status на сис­те­мах c Systemd. От­клю­чи­те все,
что вам не нуж­но, и изу­чай­те то, че­го не по­ни­мае­те.
Са­мая по­пу­ляр­ная кон­фи­г у­ра­ция — па­кет LAMP (или его эк­ви­
ва­лент), ко­то­рый тре­бу­ет толь­ко за­пус­ка Apache и MySQL. Ко­нечно,
вам на­до бу­дет так­же за­пус­тить SSH, ина­че вы не смо­же­те за­ни­
мать­ся ад­ми­ни­ст­ри­ро­ва­ни­ем.
И вот что го­раз­до важ­нее для си­сад­ми­нов: об­нов­ляй­те свои па­
ке­ты! Лю­ди ки­да­ют­ся на но­вые уяз­ви­мо­сти, как толь­ко о них со­об­
ща­ют, а на­гра­ды за пер­вен­ст­во сре­ди жертв но­во­го вре­до­нос­но­го
ко­да нет. Ес­ли вы на са­мом де­ле хо­ти­те обезо­па­сить се­бя, сле­ди­те
за но­вы­ми уяз­ви­мо­стя­ми (на­при­мер, на сай­те Common Vulnerabil­
ities and Exposures details, http://www.cvedetails.com). Ес­ли по­я­вит­ся
не­что спо­соб­ное за­тро­нуть вас, а ваш ди­ст­ри­бу­тив еще не об­но­вил­
ся до про­п ат ­ч ен­н ой вер­с ии, вам, ве­р о­я т ­н о, на ­д о бу­д ет от ­к лю­
чить со­от­вет­ст­вую­щий сер­вис, по­ка не подго­то­вят но­вые па­ке­ты.
Не­ред­ко крайности в этом нет — от­чет об уяз­ви­мо­сти мо­жет со­дер­
жать вре­мен­ные об­ход­ные пу ­ти (на­при­мер, из­ме­не­ния на­строй­ки),
ко­то­рые мож­но упот­ре­бить, что­бы сер­вис про­дол­жал ра­бо­тать.
> Metasploit Framework (есть на нашем дис­ке) — цен­ный ре­сурс для тех, кто за­ни­ма­ет­ся
тес­ти­ро­ва­ни­ем на втор­же­ния, с чем да­же эта ASCII-ко­ро­ва со­глас­на.
Обезо­па­сим Secure Shell
Есть па­ра ве­щей, ко­то­рые на­страи­ва­ют­ся лег­ко, а ва­шу безо­пас­
ность уве­ли­чат очень рез­ко. Нач­нем с бло­ки­ров­ки сер­ви­са SSH.
Не­пло­хая идея — не раз­ре­шать уда­лен­ный вход в учет­ную за­пись
root; ес­ли ну­жен дос­т уп root, мож­но спер­ва вой­ти как не­при­ви­ле­
ги­ро­ван­ный поль­зо­ва­тель и ис­поль­зо­вать sudo или su. Убе­ди­тесь,
что ва­ше­му поль­зо­ва­те­лю раз­ре­ше­ны эти ко­ман­ды, ина­че при до­
бав­ле­нии ва­ми стро­ки
PermitRootLogin no
к /etc/ssh/sshd_config и пе­ре­за­пус­ке сер­ви­са прав root вы не по­
лу­чи­те. Но за­то и ни­к то дру­гой не по­лу­чит. Сто­ит так­же от­к лю­
чить па­роли ло­ги­нов, ис­поль­зуя вме­сто них для ау­тен­ти­фи­ка­ции
клю­чи SSH. Вы мо­же­те сге­не­ри­ро­вать па­ру клю­чей на сво­ей ло­
каль­ной ма­ши­не и за­тем за­гру­зить публичный ключ на свой сер­
вер, сде­лав так (со­от­вет­ст­вую­щим об­ра­зом за­ме­нив поль­зо­ва­те­
ля и хост на свои и на­жав Enter, что­бы при­нять раз­ме­ще­ние клю­ча
по умол­ча­нию):
$ ssh-keygen
$ ssh-copy-id user@host
Пер­вая ко­ман­д а сге­не­ри­ру­ет па­ру 2048‑бит­ных RSA клю­чей,
а вто­рая при­ло­жит пуб­лич­ный ключ к фай­лу ~/.ssh/authorized_keys
на ва­шем сер­ве­ре. Те­перь вы долж­ны быть в со­стоя­нии вой­ти че­рез
SSH, ука­зав свой при­ват­ный ключ:
$ ssh -i ~/.ssh/id_rsa user@host
По­за­боть­тесь о фай­ле, со­дер­жа­щем ваш при­ват­ный ключ; не­ко­
то­рые лю­бят хра­нить его на USB-флеш­ке. Ес­те­ст­вен­но, вам нель­зя
ее те­рять или ос­тав­лять ва­лять­ся где-ни­будь в об­ще­ст­вен­ном мес­
те. Убе­див­шись, что всё это ра­бо­та­ет, и об­ре­тя уве­рен­ность в сво­их
спо­соб­но­стях управ­лять клю­ча­ми, мо­же­те от­к лю­чить ло­гин и па­
роль, до­ба­вив
PasswordAuthenticaion no
к /etc/ssh/sshd_config на сер­ве­ре. Па­ро­ли ло­ги­нов по оп­ре­де­ле­
нию не­безо­пас­ны, лю­ди ис­поль­зу­ют их не­од­но­крат­но, они слиш­
ком ко­рот­ки и очень час­то ос­но­ва­ны на сло­вар­ных сло­вах. Лю­бая
учет­ная за­пись поль­зо­ва­те­ля на ва­шем сер­ве­ре, имею­ще­го дос­т уп
су­пер­поль­зо­ва­те­ля, долж­на быть за­щи­ще­на клю­чом. Сто­ит на­стро­
ить fail2Ban, что­бы кли­ен­ты, пред­при­няв­шие не­сколь­ко не­удач­
ных по­пы­ток вхо­да в сис­те­му, вре­мен­но бло­ки­ро­ва ­лись. На http://
bit.ly/Fail2BanOnDebian7 есть от­лич­ное ру­ко­во­дство на эту те­му —
оно на­пи­са­но для Debian 7, од­на­ко пре­крас­но под ­хо­дит прак ­ти­че­
­ски для лю­бо­го Linux.
С ве­те­ра­ном та­ко­го быть не долж­но
К со­жа­ле­нию, как бы тща­тель­но вы ни пла­ни­ро­ва­ли
свою за­щи­т у, ве­ро­ят­ность пасть жерт­вой ха­ке­ров
все рав­но присутствует. Воз­мож­но, вы по­чуе­те
не­лад­ное из-за то­го, что исказил­ся внеш­ний вид
вашего сай­та, или из-за то­го, что вам боль­ше
на него не вой­ти (че­рез SSH или лю­бую па­нель
се­те­во­го управ­ле­ния). Воз­мож­но, вам по­зво­нит обо­
з­лен­ный хо­зя­ин сер­ве­ра, об­ви­няя вас в соуча­стии
по DDoS-ата­кам. Ес­ли вы объ­яс­ни­те ему си­т уа­
цию, воз­мож­но, он про­явит по­ни­ма­ние и по­мо­жет.
А ес­ли вам всё-таки уда­ет­ся вой­ти, то вы долж­ны,
34 | LXF208 Апрель 2016
в по­ряд­ке обязательной ме­ры пре­дос­то­рож­но­сти,
от­к лю­чить все сер­ви­сы.
Да­лее вам нуж­но бу­дет ска­чать жур­на­лы ва­шей
сис­те­мы, web-сер­ве­ра и ба­зы дан­ных и извести
немало ча­шек чая, зна­ко­мясь с ни­ми. При из­вест­
ном ве­зе­нии вы смо­же­те вы­яс­нить точ­ное вре­мя
взло­ма. Воз­мож­но, у вас есть ре­зерв­ные ко­пии,
но ес­ли вы не уве­ре­ны в том, что они бы­ли сде­ла­ны
до ата­ки, не сто­ит их ис­поль­зо­вать для вос­ста­
нов­ле­ния. Ес­ли вы пре­дос­тав­ляе­те VPS, то пе­ре­
ус­та­нов­ка — де­ло нехитрое, по­это­му по­д у­май­те
www.linuxformat.ru/subscribe
о вос­ста­нов­ле­нии сво­его сай­та имен­но та­ким
об­ра­зом. Ста­рые ба­зы дан­ных и фай­лы на­строй­ки
мож­но с ус­пе­хом вос­ста­но­вить, од­на­ко сна­ча­ла
про­верь­те их. И, на­ко­нец, пре­д у­пре­ди­те всех поль­
зо­ва­те­лей ва­ше­го сай­та о втор­же­нии в сис­те­му. Ве­
ро­ят­но, эта но­вость их не об­ра­д у­ет, но они долж­ны
быть в кур­се. Ес­ли у вас хра­нят­ся важ­ные дан­ные,
то по бри­тан­ско­му за­ко­но­да­тель­ст­ву вы так­же обя­
за­ны уве­до­мить о про­ник­но­ве­нии в вашу сис­те­му
еще и Управ­ле­ние ко­мис­са­риа­та по ин­фор­ма­ции
[Information Commissioners Office].
Тай­ны ха­ке­ров
Ук­ре­п­ляй­те свой web-сер­вер
Об­с лу ­жи­ва­ние ста­ти­че­­ских web-стра­ниц, на­при­
мер, из Apache, ус­та­нов­лен­но­го на Debian с на­
строй­ка­ми по умол­ча­нию, вряд ли при­чи­нит вам
ка­кие-то не­при­ят­но­с ти. Но все­гда есть ме­с то для
улуч­ше­ний. Let’s Encrypt (https://letsencrypt.org)
отныне пред ­ла­га­ет бес­плат­ные и про­с тые в ис­
поль­зо­ва­нии сер­ти­фи­ка­ты SSL, и поль­зо­ва­те­ли
те­перь мо­г ут пре­спо­кой­но бро­дить по ва­ше­му
сай­т у, зная, что это и вправ­д у ваш сайт и что тра­
фик шиф­ру­ет­ся. Ес­ли на сво­ем сай­те вы ра­бо­тае­те
с важ­ны­ми дан­ны­ми (на­при­мер, лич­ной или фи­
нан­со­вой ин­фор­ма­ци­ей), вам, ве­ро­ят­но, на­до бу­дет
оп­ла­тить как ми­ни­мум про­ве­рен­ный на до­мен­ном
уровне сер­ти­фи­кат.
Од­на­ко мы не ре­ша­ем про­бле­мы, на­ля­пы­вая
на них сер­ти­фи­ка­ты: мы мо­жем так­же на­стро­ить
шифр, что­бы не при­ме­нять уяз­ви­мые или ус­та­
рев­шие ме­то­ды шиф­ро­ва­ния. Сле­д ую­щие стро­ки
сде­ла­ют это для Apache:
SSLCompression off
SSLProtocol All -SSLv2 -SSLv3
SSLCipherSuite EECDH+AESGCM:EDH+AES
GCM:AES256+EECDH:AES256+EDH
Это пре­дот­вра­тит ата­ки ти­па BEAST, LOGJAM
и CRIME, а так­же от­к лю­чит ус­та­рев­шие SSL v2 и 3.
То есть вла­дель­цы до­по­топ­но­го Internet Explorer 6
не смо­г ут про­смат­ри­вать ваш безо­пас­ный сайт,
од­на­ко это, ве­ро­ят­но, не са­мое боль­шое горе.
Бо­лее под­роб­но про на­строй­к у — на http://bit.ly/
StrongSSLSecurityOnApache.
Есть так ­же не­ко­то­рые за­го­лов­ки безо­пас­но­сти,
при­ни­мае­мые со­вре­мен­ны­ми брау­зе­ра­ми и спо­
соб­ные спра­вить­ся с не­ко­то­ры­ми ата­ка­ми на ваш
сайт — на­при­мер, вы мо­же­те за­дать
Header set X-Frame-Options: sameorigin
Header set X-XSS-Protection: 1;mode=block
Header set X-Content-Type-Options: nosniff
Это пре­дот­вра­тит хи­ще­ние на ­жа­тий кно­пок
[clickjacking] и ата­ки XSS на ваш сайт, а заодно
не по­зво­лит брау­зе­ру пы­тать­ся оп­ре­де­лить тип
MIME ска­чан­ных фай­лов, до­ве­ряя вме­сто это­го
пре­дос­тав­лен­ной сер­ве­ром ин­фор­ма­ции.
Fail2Ban мо­жет за­щи­тить не толь­ко SSH, но и лю­бой сер­вис: на­
при­мер, вы мо­же­те ис­поль­зо­вать его, что­бы бо­ты пере­ста­­ли лезть
на ваш web-сер­вер. Про­с то со­об­щ и­те ему, на ка­к ие лог-фай­лы
смот­реть, ка­кое ко­ли­че­­ст­во по­пы­ток счи­тать чрез­мер­ным и ка­кой
про­дол­жи­тель­но­стью бло­ки­ров­ки на­гра ­ж ­дать осо­бо рья­ных. Fail2Ban внут­ри ис­поль­зу­ет iptables, и тра­фик с бло­ки­ро­ван­ных хос­тов
ти­хо пре­кра­ща­ет­ся, так что их сверх­за­про­сы не бу­дут пе­ре­гру­жать
ваш ком­пь­ю­тер. За­гля­ни­те во врез­к у ввер­х у (Ук­ре­пляйте свой webсер­вер), там вы най­де­те со­ве­ты по за­щи­те web-сер­ве­ра.
Тест Kali на втор­же­ние
У­п­роче­ние сер­ве­ра ста­но­вит­ся со­всем дру­гой иг­рой, ко­гда вы ра­бо­
тае­те с ба­за­ми дан­ных и web-при­ло­же­ния­ми. Та­кие ве­щи со­лид­но
расширя­ют об­ласть ата­ки, и обес­пе­че­ние безо­пас­но­сти ва­ших на­
стро­ек ста­но­вит­с я слож­нее. По­ми­мо со­ц и­а ль­но­го ин­ж и­ни­рин­
га, дру­го­му по­пу­ляр­но­му спо­со­бу за ­хва­та сер­ве­ров спо­соб­ст­ву­ет
непра­виль­ная на­строй­ка. Бы­ва­ет со­блаз­ни­тель­но вклю­чить в ди­
рек ­то­рии по­ли­ти­к у дос­т у­па с ши­ро­чай­ши­ми раз­ре­ше­ния­ми, что­бы
ра­бо­тал ка­кой-ни­будь эк­зо­ти­че­­ский PHP, од­на­ко вы­да­ча поль­зо­ва­
те­лю web-сер­ве­ра дос­т у­па на за­пись не в те фай­лы (на­при­мер, wwwdata в Debian) мо­жет при­вес­ти к Очень Пло­хо­му Дню для си­сад­ми­на.
На LXFDVD вы най­де­те Kali Linux — ди­ст­ри­бу ­тив, раз­ра­бо­тан­
ный для тес­ти­ро­ва­ния на втор­же­ния и оцен­ки безо­пас­но­сти. Все
пред­ла­гае­мые им ин­ст­ру­мен­ты мож­но до­ба­вить и в ваш ди­ст­ри­бу­
тив, од­на­ко при­ят­но иметь их все в од­ной по­су­де. Вы най­де­те вез­
де­су­щий nmap (и его гра­фи­че­­ский кли­ент, zenmap) для про­смот­ра
за­пу­щен­ных на ма­ши­не сер­ви­сов, Aircrack-ng для взло­ма бес­про­
вод­ных се­тей, Burp Suite для ис­пы­та­ния на проч­ность web-при­ло­
же­ний, Metasploit Framework для тес­ти­ро­ва­ния, хм, прак­ти­че­­ски
всех из­вест­ных экс­плой­тов, и мно­гое дру­гое. Все ин­ст­ру­мен­ты раз­
не­се­ны по ка­те­го­ри­ям в ме­ню Kali, и этой стра­ни­цы не хва­тит, что­бы
дос­той­но о них рас­ска­зать, так что обя­за­тель­но за­гля­ни­те на http://
kalitutorials.net, там най­дет­ся це­лая се­рия ру­ко­водств по Kali.
Мо­жет по­к а­з ать­с я за­б ав­ным про­т ес­т и­р о­в ать воз­м ож­н ость
втор­же­ния на ваш лю­би­мый (или, на­обо­рот, не­на­ви­ст­ный) сайт, од­
на­ко на это нуж­но яв­но вы­ра­жен­ное со­гла­сие опе­ра­то­ра сер­ве­ра;
ес­ли его у вас нет, воз­дер­жи­тесь от по­доб­ных раз­вле­че­ний. У вас
мо­г ут появиться серьезные про­бле­мы, да­же ес­ли вы не при­чи­ни­те
ни­ка­ко­го ущер­ба. Свои соб­ст­вен­ные сер­ве­ры тес­ти­руйте сколь­ко
угод­но, но ес­ли они раз­ме­ща­ют­ся на обо­ру­до­ва­нии, при­над ­ле­жа­
щем дру­гим лю­дям, вла­дель­цы обо­ру­до­ва­ния долж­ны знать о том,
что вы на­ме­ре­ны де­лать. Ес­ли вы про­сто хо­ти­те по­иг­рать с уяз­ви­
мы­ми сис­те­ма­ми, оп­ций имеется не­сколь­ко. Од­на из них — ска­чать
> Ис­поль­зуй­те на сво­их сер­ве­рах ин­ст­ру­мен­ты мо­ни­то­рин­га, по­доб­ные Munin,
что­бы вы­яв­лять вспле­ски по­треб­ле­ния ре­сур­сов — или соз­да­вать кра­соч­ные гра­фи­ки.
очень уяз­ви­мое web-при­ло­же­ние Mutillidae из про­ек ­т а OWASP.
Вы най­де­те его на https://sourceforge.net/projects/mutillidae/, где есть
так­же ссыл­ки на ви­део с ин­ст­рук­ция­ми. Дру­гая оп­ция — по­иг­рать
с пе­соч­ни­цей Acutenix (http://testphp.vulnweb.com), и по­смот­реть,
что слу­чит­ся, ес­ли вы пе­рей­де­те на сле­д ую­щий фаль­си­фи­ци­ро­
ван­ный URL (про­бе­лы про­став­ле­ны умыш­лен­но):
Дру­го­му по­пу­ляр­но­му спо­со­бу
за­хва­та сер­ве­ров спо­соб­ст­ву­
ет не­пра­виль­ная на­строй­ка.
http://testphp.vulnweb.com/artists.php?artist=-1 UNION SELECT
1,pass,cc FROM users
У нас не долж­но по­лу­чать­ся такое вытворять, и имен­но по­это­
му так важ­но вы­чи­щать лю­бую вве­ден­ную поль­зо­ва­те­лем ин­фор­
ма­цию, как толь­ко она про­ник­ла в ва­ше при­ло­же­ние. Вам следует
ис­поль­зо­вать та­кие тех­но­ло­гии, как
var_dump(filter_var($artist,FILTER_SANITIZE_SPECIAL_CHARS));
И вся си­т уа­ция в це­лом на­мно­го улуч­шит­ся.
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 35
Тай­ны ха­ке­ров
Ха­кер­ские вой­ны
Бу­ду­щая пра­ви­тель­ст­вен­ная ин­тер­вен­ция реально страш­нее
бу­ду­щих взло­мов.
И
с­то­рия про­грам­ми­ро­ва­ния долж­ны бы­ла дать нам цен­
ный урок: про­г рам­м и­с ты оши­б а­ю т­с я (как, впро­ч ем,
и во­об­ще лю­ди). Пе­ре­пол­не­ние стро­ки, или ди­на­ми­че­
­ской об­лас ­т и па­м я ­т и, или бу­фе­ра су­щ е­с т­в у­ю т дав­ным-дав­но,
и по­ка во всем этом уча­ст­ву­ют лю­ди, не сто­ит ждать осо­бых из­ме­
не­ний. Разумеется, мы мо­жем хва­тать­ся за вновь соз­дан­ные, безо­
пас­ные для вво­да, для па­мя­ти и для по­то­ка язы­ки ти­па Go, Rust
и Swift, но это лишь по­ро­дит но­вые клас­сы оши­бок. А пло­хие пар­ни
немедленно най­дут но­вые и ори­ги­наль­ные спо­со­бы их экс­плуа­та­
ции. Например, в то самое
время, когда мы на­н о­
си­ли по­с лед­н ие штри­х и
на эту ста­тью, в OpenSSH
бы­ла об­на­ру ­же­на но­вая
ошиб­ка (да ­же две: CVE2016‑0777 и -8).
В на­ча­ле XX ве­ка Ни­ко­ла Тес­ла на­пи­сал, что вой­ны бу­ду­ще­го бу­
дут вес­ти ма­ши­ны и ро­бо­ты. Ес­ли мы при­зна­ем за ним здесь не­кое
пра­во на про­ро­че­­ст­во, то он прав — по­д у­май­те о дро­нах и ро­бо­
тах-бом­бар­д и­ров­щ и­к ах. Ес­ли пред­по­ло­ж ить, что со­вре­мен­ные
тен­ден­ции бу­дут про­дол­жать­ся, то бу­ду­щее по­ле бит­вы пе­ре­мес­
тит­ся в Сеть. Го­су­д ар­с т­ва раз­ра­бо­та­ли «ки­бер-ар­мии», а на раз­
ра­бот­к у во­ен­ных «ки­бер-стра­те­гий» тра­тят­ся ог­ром­ные сум­мы.
Мы ви­де­ли, что мо­жет быть раз­ру­шена важ­ней­шая ин­фра­струк­
ту­ра: в де­каб­ре 2015 г. ока­за ­лось, что ава­рий­ное от­к лю­че­ние элек­
тро­энер­гии в за­пад­ной Ук­раи­не бы­ло ре­зуль­та­том ха­кер­ской ата­ки
по по­ли­ти­че­­ским мо­ти­вам. За­чем бом­бить го­род, ес­ли мож­но про­
сто от­к лю­чить ему во­ду и элек ­три­че­­ст­во?
Злые и до­б­рые ха­ке­ры еже­днев­но об­на­ру­ж и­ва­ют все но­вые
и но­вые воз­мож­но­сти взло­ма. Они мо­г ут вклю­чать на­бо­ры ин­ст­
ру­мен­тов для ата­к и на BIOS/UEFI или да­же ма­ни­пу­ли­ро­вать па­
мя­тью ва­ше­го но­у т­бу­ка, поль­зу­ясь элек ­тро­маг­нит­ны­ми эф­фек­
та­ми ме­ж ­д у смеж­ны­ми ячей­ка­ми (как в ата­ке Rowhammer). Ес­ли
дос­та­точ­но мо­ти­ви­ро­ван­ный ата­к ую­щий (на­при­мер, го­су­дар­ст­во)
осо­бо за­ин­те­ре­со­ван в том, что­бы пре­сечь он­лайн-дея­тель­ность
че­л о­в е­к а, он мо­ж ет ис­
поль­з о­в ать ата­к у ну­л е­
во­го дня. Ноль здесь оз­
на­ч а­е т ко­л и­ч е­­с т­в о дней
по­с ле об­на­ру ­же­ния экс­
плой­та, и ес­ли вы уяз­ви­
мы, вы ни­че­го не смо­же­те
с этим сде­лать. Од­на­ко, при всех их тех­ни­че­­ских воз­мож­но­стях, по­
доб­но­го ро­да ата­ки срав­ни­тель­но ред­ки, как мы уже го­во­ри­ли вы­
ше. Не­смот­ря на то, что ук­ра­ин­ская ата­ка ис­поль­зо­ва ­ла пе­ре­до­вое
вре­до­нос­ное ПО, из­вест­ное как BlackEnergy, глав­ной при­чи­ной бы­
ло це­ле­вое фи­шинг-мо­шен­ни­че­­ст­во с ис­поль­зо­ва­ни­ем ин­фи­ци­ро­
ван­но­го до­к у­мен­та Microsoft Word.
Шиф­ро­ва­ние с пуб­лич­ным
клю­чом взъе­ро­ши­ло обе
сто­ро­ны Ат­лан­ти­ки.
Про­бле­мы шиф­ро­ва­ния
Тем не ме­нее, пра­ви­тель­ст­ва все боль­ше ин­те­ре­су­ют­ся дея­тель­
но­стью ис­сле­до­ва­те­лей безо­пас­но­сти, а пред ­ло­жен­ные по­прав­ки
Взло­мы и ста­ти­сти­ка — круп­ней­шие ата­ки
Anthem
Аме­ри­кан­ский ги­гант в об­лас­ти здра­во­охра­не­ния
был за­ра­жен вре­до­нос­ным ПО Mivast от груп­пы
Black Vine в мае 2014 г., но эта ата­ка об­на­ру­жи­лась
толь­ко в фев­ра­ле 2015 г. В ре­зуль­та­те этой ата­ки
бы­ло по­хи­ще­но ре­корд­ное ко­ли­че­­ст­во ме­ди­цин­ских
карт — 80 мил­лио­нов, хо­тя ана­лиз под­ска­зы­ва­ет,
что эти дан­ные не бы­ли пер­во­оче­ред­ным ин­те­ре­
сом груп­пы. Со­глас­но Symantec, груп­па вы­ка­за­ла
зна­чи­тель­ный ин­те­рес к под­ряд­чи­кам в об­лас­ти
обо­рон­ной про­мыш­лен­но­сти и энер­ге­ти­ки, и пы­та­
лась най­ти ин­фор­ма­цию об этих лю­д ях в их ме­ди­
цин­ских кар­тах. Од­на­ко с учетом объ­ема пер­со­наль­
ных дан­ных, по­лу­чен­ных в ре­зуль­та­те ата­ки, впол­не
ве­ро­ят­но, что по край­ней ме­ре часть из них всё же
ока ­жет­ся на чер­ном рын­ке и дос­та­вит ог­ром­ные
не­удоб­ст­ва жерт­вам.
OPM
Управ­ле­ние кад­ра­ми [Office of Personnel Manage­
ment] в США ве­дет учет всех гос­с лу­жа­щих. В ию­не
2015 г. они объ­я­ви­ли об утеч­ке дан­ных, ко­то­рая
на­ча­лась не позд­нее мар­та пре­ды­д у­ще­го го­д а. Со­
глас­но оцен­кам, об­щее чис­ло слу ­жа­щих, под­верг­
нув­ших­ся рис­к у, со­ста­ви­ло око­ло 21,5 мил­лио­на.
По­хи­щен­ные све­де­ния вклю­ча ­ли дан­ные о лич­ном
со­ста­ве, за­ру­беж­ных ре­зи­ден­тах и их семь­ях,
а так­же 5 мил­лио­нов на­бо­ров от­пе­чат­ков паль­цев.
36 | LXF208 Апрель 2016
За­тра­ты на ли­к­ви­д а­цию по­с лед­ст­вий (вклю­чая
вы­пла­ты над ­ле­жа­щих стра ­хо­вок по­стра­д ав­шим
сто­ро­нам и от­зыв ском­про­ме­ти­ро­ван­ных сек­
рет­ных аген­тов) пред­по­ло­жи­тель­но со­ста­вят
мил­ли­ар­ды дол­ла­ров.
Аме­ри­кан­ские офи­ци­а ль­ные ли­ца со­об­щи­ли,
что ата­ка ве­лась из Ки­тая, од­на­ко ос­то­рож­ненько
уточ­ни­ли, что нет ни­ка­ких сви­де­тельств уча­ст­ия
в ней ки­тай­ского пра­ви­тель­ст­ва. На са­мом де­ле
у зло­умыш­лен­ни­ков бы­ли под ­лин­ные ре­к­ви­зи­ты
дос­т у­па, по­лу­чен­ные, ве­ро­ят­но, бла­го­да­ря ме­то­дам
со­ци­а ль­ной ин­же­не­рии. Вы­яс­ни­лось, что боль­шая
часть дан­ных Управ­ле­ния кад­ра­ми хра­ни­лась на ар­
ха­ич­ных мейн­фрей­мо­вых сис­те­мах под управ­ле­ни­
ем ус­та­рев­ше­го ко­да COBOL. Это го­во­рит о со­вер­
шен­но дру­гой про­бле­ме в ИТ: ко­гда раз­би­раю­щие­ся
во всем этом лю­ди уй­д ут на пен­сию (и в ко­неч­ном
ито­ге — из жиз­ни), об­ласть ИТ за­по­ло­нят самоуве­
ренные мил­ле­ни­ты, ко­то­рые по­ня­тия не име­ют, как
ра­бо­тать с эти­ми сис­те­ма­ми.
Hacking Team
Труд­но не ух­мыль­нуть­ся над судь­бой ком­па­нии,
про­дав­шей ин­ст­ру­мен­ты пе­ре­хва­та дан­ных то­та­
ли­тар­ным ре­жи­мам в та­ких стра­нах, как Су­дан,
Рос­сия и Сау­дов­ская Ара­вия. Нам-то, ко­неч­но, ста­ло
об этом из­вест­но по един­ст­вен­ной при­чи­не: кто-то
ук­рал у них 400 ГБ до­к у­мен­тов и за­тем пе­ре­хва­тил
www.linuxformat.ru/subscribe
их учет­ную за­пись в Твит­те­ре, что­бы поведать
об этом ми­ру. Hacking Team по­зи­цио­ни­ру­ют се­бя по­
став­щи­ка­ми средств на­блю­де­ния для пра­во­ох­ра­ни­
тель­ных ор­га­нов, хо­тя они мно­го­крат­но по­вто­ря­ли,
что не ра­бо­та­ли со стра­на­ми, по­пав­ши­ми в чер­
ный спи­сок. По­ми­мо яв­но­го оп­ро­вер­же­ния это­го
заявления, по­хи­щен­ные дан­ные под­твер­ж да­ют,
что Team ис­поль­зо­ва ­ли ата­к у ну­ле­во­го дня для за­
ра­же­ния це­лей сво­им вре­до­нос­ным ПО RTS. Когда
о них со­об­щи­ли от­кры­то, со­от­вет­ст­вую­щие ды­ры
в за­тро­ну­том ПО (Adobe Flash Player...) бы­ли бы­ст­ро
под­ла­та­ны, так что уяз­ви­мо­сти спа­лились. Hacking
Team про­дол­жа­ет за­ни­мать­ся биз­не­сом, од­на­ко
не впол­не по­нят­но, в ка­ких мас­шта­бах.
Fiat Chrysler
В прин­ци­пе, не сто­ит удив­лять­ся, что под­к лю­чен­
ный к Ин­тер­не­т у ав­то­мо­биль мож­но хак­нуть точ­но
так же, как и ком­пь­ю­тер. Од­на­ко тот факт, что
по­доб­ный взлом по­зво­ли­л Чар­ли Мил­ле­ру [Charlie
Miller] и Кри­су Ва­ла­се­к у [Chris Valasek] дис­тан­ци­
он­но ос­та­но­вить на шос­се джип, от­к лю­чить его
тор­мо­за и за­пу­тать пе­ре­да­чи, при­влек при­сталь­
ное вни­ма­ние СМИ и да­же обес­пе­чил ха­кер­ско­му
ду­эту ка­мео в се­риа­ле CSI:Cyber. К сча­стью, ни­к то
не по­стра­дал, кро­ме, по­жа­луй, Chrysler, ко­то­ро­му
при­шлось ото­звать 1,4 мил­лио­на ма­шин, что­бы
за­ла­тать ды­ры.
Тай­ны ха­ке­ров
к Вас­се­на­ар­ско­му со­гла­ше­нию (Wassenaar Arrangement — на­бо­р
пра­вил, ко­то­рые под­пи­сан­ты со­гла­си­лись вы­пол­нять) ус­лож­нят ис­
сле­до­ва­те­лям воз­мож­ность де­лить­ся свои­ми дос­ти­же­ния­ми с дру­
ги­ми стра­на­ми. Соз­д а­ние труд­но­с тей в этом ис­с ле­до­ва­нии или,
что еще ху ­же, вме­не­ние в обя­зан­ность со­об­щать об уяз­ви­мо­стях
пра­ви­тель­ст­вен­ным ор­га­нам, а не ав­то­рам со­от­вет­ст­вую­щих про­
грамм, соз­даст весь­ма опас­ный пре­це­дент.
В про­шлом го­ду Дэ­вид Кэ­ме­рон [David Cameron] вы­ска­зал мне­
ние, ко­то­рое пред­по­ла­га­ло же­ла­ние за­пре­тить шиф­ро­ва­ние. По­том
его пред­ста­ви­те­ли зая­ви­ли, что это не яв­ля­ет­ся его по­зи­ци­ей, од­
на­ко пред ­ло­жен­ный За­кон о след­ст­вен­ных пол­но­мо­чи­ях [Investiga­
tory Powers Bill] (в чер­но­вом ва­ри­ан­те он со­став­ля­ет 300 стра­ниц,
на слу­чай, ес­ли хо­ти­те по­чи­тать что-ни­будь ле­гонь­кое) со­дер­жит
по­ло­же­ния, обя­зы­ваю­щие ин­тер­нет-про­вай­де­ров по по­ста­нов­ле­
нию су­да пре­дос­тав­лять дан­ные кли­ен­та. Фор­му­ли­ров­ка ту­ман­ная,
од­на­ко за­ко­но­про­ект ссы­ла­ет­ся на то, что ми­нистр внут­рен­них дел
мо­жет по­тре­бо­вать «сня­тия элек ­трон­ной за­щи­ты» с про­вай­де­ров
те­ле­ком­му­ни­ка­ци­он­ных ус­луг. Ко­гда гра ­ж ­да­не ис­поль­зу­ют ме­ж­­
або­нент­ское шиф­ро­ва­ние (GPG-поч­т у, на­при­мер, WhatsApp), толь­
ко они са­ми мо­г у рас­шиф­ро­вать свою бе­се­ду, и ни од­на тре­тья сто­
ро­на не мо­жет ни­че­го сде­лать [Ред.: — По за­ко­ну вы уже обя­за­ны
со­об­щать все из­вест­ные клю­чи го­су­дар­ст­вен­ным ор­га­нам Ве­ли­ко­
бри­та­нии] с лю­бой «элек­трон­ной за­щи­той».
Так на­зы­в ае­мое силь­ное шиф­р о­в а­ние (раз­д ел ма­т е­м а­т и­к и,
име­н уе­м ый шиф­р о­в а­н и­е м с пуб­л ич­н ым клю­ч ом) взъе­р о­ш и­л о
обе сто­ро­ны Ат­лан­т и­к и. Мно­г ие по­ли ­т и­к и под ­дер­ж и­ва­ют «тре­
тей­скую» сис­те­му с клю­ча­ми, ко­гда гра­ж ­да­не мо­г ут сво­бод­но об­
щать­ся кон­фи­ден­ци­а ль­но, од­на­ко у пра­ви­тель­ст­ва име­ет­ся «мас­
тер-ключ» (или иной об­ход­ной путь), по­зво­ляю­щий по­дор­вать всю
эту кон­фи­ден­ци­а ль­ность. Тех­но­ло­ги­че­­ские фир­мы объ­е­ди­ни­ло
чет­кое не­при­ятие этой идеи — не по­то­му, что они сим­па­ти­зи­ру­ют
че­ты­рем всад­ни­кам ки­бер-апо­ка ­лип­си­са (тер­ро­ри­стам, пи­ра­там,
JuniperOS
Juniper пред ­ла­га­ет пред­при­яти­ям, оза­боченным
ас­пектом безо­пас­но­сти, уст­рой­ст­ва бранд­мау­эра,
ра­бо­таю­щие на ее соб­ст­вен­ной спе­циа ­ли­зи­ро­ван­
ной ScreenOS. В де­каб­ре компания зая­ви­ла, что
в их про­шив­ке об­на­ру ­жил­ся «не­санк­цио­ни­ро­ван­
ный код». Это ис­то­рия двух уяз­ви­мо­стей.
Пер­вая бы­ла же­ст­ко ко­ди­ро­ван­ным ад­ми­ни­
ст­ра­тор­ским па­ро­лем (<<< %s(un=’ %s’) = %u,
вы­бран­ным, ви­ди­мо, для ми­мик­рии с ди­зас­семб­
ли­ро­ван­ным шу­мом), ко­то­рый, по­хо­же, до­ба­вил­ся
к кон­ц у 2013 г.
Вто­рой бы­ло ис­поль­зо­ва­ние одоб­рен­но­го АНБ
ге­не­ра­то­ра псев­до­слу­чай­ных чи­сел Dual_EC_DBRG,
точ­нее, его ис­поль­зо­ва­ние с пред­ва­ри­тель­но вы­
чис­лен­ны­ми па­ра­мет­ра­ми P и Q. Не­по­нят­но, ко­гда
(и за­чем) вве­ли этот ге­не­ра­тор, од­на­ко пред­по­
ла­га­ет­ся, что это бы­ло где-то в 2008 г.: по­сле его
стан­дар­ти­за­ции NIST и по­сле то­го, как со­об­ще­ст­во
безо­пас­но­сти пре­д у­пре­ди­ло, что в нем скры­та по­
тен­ци­а ль­ная ла­зей­ка.
В тео­рии сис­те­ма пред­на­зна­ча­лась для то­го,
что­бы сме­шать ре­зуль­тат от Dual_EC c дру­гим
ге­не­ра­то­ром, ANSI X.9.31; к со­жа­ле­нию, кто-то до­
пус­тил в ко­де ляп (уве­ли­чен­ный раз­мер слу­чай­но­го
чис­ла в DUAL_EC), и это­го не про­изо­ш­ло. В кон­це
2012 г. зло­умыш­лен­ни­кам каким-то образом уда­
лось из­ме­нить зна­че­ние Q про­грам­мы на то, ко­то­рое
> Сайт https://apt.securelist.com со­дер­жит под­роб­ную ин­фор­ма­цию
о вы­со­ко­по­став­лен­ном вре­до­нос­ном ПО.
нар­ко­тор­гов­цам и пе­до­фи­лам), а по­то­му, что зна­ют: лю­бой ла­зей­
кой с тем же ус­пе­хом вос­поль­зу­ют­ся и пло­хие пар­ни.
Пред­ставь­те, что про­изой­дет, ес­ли пре­ступ­ное го­су­дар­ст­во по­
лу­чит ключ от аб­со­лют­но всех ча­ст­ных раз­го­во­ров. Не­дав­няя ис­
то­рия по­ка­зы­ва­ет, что сек­ре­ты, да ­же пра­ви­тель­ст­вен­ные, име­ют
сквер­ную при­выч­к у ста­но­вить­ся дос­тоя­ни­ем об­ще­ст­вен­но­сти. Да,
пре­ступ­ни­ки ис­поль­зу­ют и бу­д ут все боль­ше ис­поль­зо­вать силь­
ное шиф­ро­ва­ние, но они так­же со­вер­ша­ют ошиб­ки, ко­то­рые де­
ла­ют их уяз­ви­мы­ми для впол­не тра­ди­ци­он­ных ме­то­дов рас­сле­до­
ва­ния. А еще они ак­тив­но ис­поль­зу­ют по­ез­да [Ред.: — И пуш­ки],
од­на­ко по­че­му-то ни­к то не за­ик­нул­ся о том, что­бы по­ста­вить и по­
ез­да вне за­ко­на. |
по­зво­ли­ло им пас­сив­но рас­шиф­ро­вать весь тра­фик
VPN. Од­на­ко сто­ит от­ме­тить, что из­на­чаль­ная
по­сто­ян­ная Juniper мог­ла бы по­зво­лить Juniper сде­
лать то же са­мое.
> Ут­вер­жда­ют, что Hacking Team про­да­ла шпи­он­ское ПО пра­ви­тель­ст­вам из чер­но­го спи­ска.
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 37
Мэ­тью Гэр­ретт
Ос­то­рож­но,
про­шив­ка!
Джон­ни Бид­велл встре­тил­ся с уче­ным и джент­ль­ме­ном
Мэ­тью Гэр­рет­том, что­бы по­го­во­рить о на­деж­но­сти вы­чис­ле­ний
в пост-Сно­уде­нов­скую эру.
38 | LXF208 Апрель 2016
www.linuxformat.ru/subscribe
Мэ­тью Гэр­ретт
МГ: Безо­п ас­н ость кон­т ей­н е­р ов — это ин­т е­р ес­
ный во­прос: здесь все за­ви­сит от то­го, как взгля­
нуть. Ес­ли вы их ис­поль­зуе­те так же, как вир­т у­
аль­ные ма­ши­ны, то кон­тей­не­ры да­ют вам мень­ше
ло­ка­ли­за­ции. Но ес­ли вы имее­те де­ло с сис­те­мой,
где ра­нее все при­ло­же­ния ра­бо­та­ли в од­ной сре­
де, то раз­н е­с я их по кон ­т ей­н е­р ам, вы по­в ы­с и ­т е
их безо­пас­ность. Так что кон­тей­не­ры мо­г ут быть
как на бла­го, так и во вред безо­пас­но­сти — то есть
«как взгля­нуть».
LXF: Но это все еще не­из­ве­дан­ная тер­ри­то­рия?
То есть кон­тей­не­ры, в фор­ме chroot’ов и все­го та­
ко­го су­ще­ст­ву­ют с не­за­па­мят­ных вре­мен, но с та­
ки­ми ве­ща­ми, как Docker, все это вы­шло на со­вер­
шен­но но­вый уро­вень.
МГ: До­п ол­ни­т ель­ные функ­ц ии яд­р а, свя­з ан­ные
с кон­тей­не­ра­ми, раз­ра­ба­ты­ва ­лись до­воль­но дав­но
и дол­го. Не­лег­ко бы­ло до­бить­ся то­го, что мы име­
ем сей­час. В не­сколь­ких вер­си­ях яд­ра боль­шин­ст­во
про­б лем с безо­п ас­н о­с тью ка­с а ­л ись ко­д а про­
стран­с т­ва имен, слу ­жа­ще­го ос­но­вой для кон­тей­
не­ров. Но сей­час все на­чи­на­ет ста­би­ли­зи­ро­вать­ся,
вско­ре мы смо­жем го­во­рить о том, что они дос­та­
точ­но на­деж­ны.
LXF: То есть вы счи­тае­те, что мы до­рос­ли
до кон­тей­не­ров?
МГ: Да, ду­маю, про­шел тот мо­мент, ко­гда это бы­
ло не­ким раз­вле­че­ни­ем. До­воль­но мно­гие сей­час
все­рь­ез при­смат­ри­ва­ют­ся к ним, что­бы ис­поль­зо­
вать их для де­ла.
Мэ­тью Гэр­ретт [Matthew
Garret] — глав­ный спе­циа­
лист по за­щи­те ин­фор­ма­ции
в CoreOS. Как раз­ра­бот­чик
яд­ра, он за­ин­те­ре­со­ван в на­
деж­но­сти вы­чис­ле­ний, и ре­
ша­ет про­бле­мы, за ко­то­рые дру­гие да­же не бе­
рут­ся. Кро­ме то­го, у не­го сте­пень PhD в об­лас­ти
ком­пь­ю­тер­ной ге­не­ти­ки, и он лю­без­но со­гла­сил­ся
по­де­лить­ся с на­ми час­тич­кой сво­ей муд­ро­сти
в этом ин­тер­вью.
Linux Format: Чем вы за­ни­мае­тесь в CoreOS?
Мэ­тью Гэр­ретт: В ос­нов­ном, ин­фра­струк ­т ур­ной
безо­п ас­н о­с тью: ра­б о­т аю над низ­ко­у ров­н е­в ы­м и
тех­но­ло­гия­ми и сред­ст­ва­ми обес­пе­че­ния безо­пас­
но­сти как от­дель­ных кон­тей­не­ров, так и плат­фор­
мы в це­лом.
LXF: Кон­тей­не­ры сей­час на пи­ке по­пу­ляр­но­сти —
как по-ва­ше­му, уро­вень безо­пас­но­сти уже то­же
со­от­вет­ст­ву­ет, или по­яв­ля­ют­ся лишь но­вые клас­
сы пе­ре­про­ши­вок и спо­со­бов за­ра­же­ния?
ОЗУ. Это бы­ло не раз до­ка­за­но в хо­де ис­пы­та­ний,
ко­гда раз­ные PCI-уст­рой­ст­ва вно­си­ли в яд­ро ди­на­
ми­че­­ские из­ме­не­ния. Про­ти­во­сто­ять это­му мож­но,
ука­з ав сис­тем­но­м у IOMMU (I/O Memory Manage­
ment Unit), ка­кие имен­но уст­рой­ст­ва об­ла­да­ют пра­
вом за­пи­си и ку­да. Но IOMMU есть не во всех уст­
рой­ст­вах, а да­же ес­ли есть, то ди­ст­ри­бу­ти­вы Linux
за­час­т ую не по­зво­ля­ют его ис­поль­зо­вать.
В ито­ге, при оп­ре­де­лен­ном сте­че­нии об­с тоя­
тельств, риск за­ка­чать на свое уст­рой­с т­во из­ме­
нен­н ую про­ш ив­к у ос­т а­е т­с я все рав­н о, да ­же ес­
ли у вас под­лин­ная ОС и офи­ци­а ль­ные драй­ве­ры,
и она смо­жет по­в ер­н уть что-ни­будь в яд­р е так,
что про­цесс, за­п у­щен­ный обыч­ным поль­зо­в а­те­
лем, вдруг по­л у ­ч ит пра­в а root и смо­жет де­л ать
все, что угод­но.
LXF: Ни­че­го се­бе. К на­ше­му пре­крас­но­му жур­на­лу
вы­хо­дит еже­ме­сяч­ное при­ло­же­ние в ви­де дис­ка,
и еже­ме­сяч­но же по­сту­па­ют жа­ло­бы от чи­та­те­лей
на UEFI. Мы ста­ра­ем­ся объ­яс­нить им, что про­бле­
ма не в са­мом UEFI и не в Secure Boot, а в том, что
про­из­во­ди­те­ли ре­ши­ли сде­лать их за­кры­ты­ми.
Рас­ска­жи­те что-ни­будь об их по­ло­жи­тель­ных
сто­ро­нах.
МГ: В по­с лед­н ее вре­м я мы немало пора­б о­т а ­л и
над тем, что­бы под­твер­дить под ­лин­ность ис­поль­
зуе­мой ОС сдела­лось про­ще. UEFI Secure Boot, ес­
те­с т­вен­н о, бы­л а для нас про­б ле­м ой, ведь из­н а­
чаль­но риск был в том, что поль­зо­ва­тель во­об­ще
не смо­жет кон­тро­ли­ро­вать до­ве­ри­тель­ность сис­
те­м ы. Бы­л а опас­н ость улуч­ш ить безо­п ас­н ость
це­ной ущем­ле­ния прав поль­зо­ва­те­лей. К при­ме­
ру, сис­те­ма Secure Boot, раз­ре­шаю­щая за­гру­жать
толь­ко под­пи­сан­ные об­ра­зы Ubuntu и Fedora, воз­
мож­но, бы­ла бы безо­пас­нее, но при этом не да­ва­
ла бы поль­зо­ва­те­лю реа­ли­зо­вать его пра­во соз­да­
вать и вы­пол­нять соб­ст­вен­ный код и ра­бо­тать с ОС
по сво­ему вы­бо­ру.
LXF: Рас­ска­жи­те нам о сво­ем док­ла­де на OSCON.
МГ: Я рас­ска­зы­вал о том, что нуж­но для соз­да­ния
на­деж­но­го ком­пь­ю­те­ра. На­деж­но­го — зна­чит, та­
ко­го, что­бы его вла­де­лец или поль­зо­ва­тель бы­ли
уве­ре­ны, что он дей­ст­ву­ет в их ин­те­ре­сах, а не чь­
их-то еще. Ведь из све­де­ний, раз­гла­шен­ных Сно­
уде­ном, мы уз­на­ли, в ча­
ст­но­сти, и о том, что ЦРУ
ОБ ОПАСНОСТЯХ ИЗМЕНЕННОЙ ПРОШИВКИ
пред­при­ни­ма ­ло раз­лич­
ные ата­ки на встро­ен­ное
ПО. На­при­мер, перехва­
тывая сис ­т е­мы на пу ­т и
к по­к у­п а­т е­л ям и ме­н яя
про­шив­к у, что­бы иметь
возможность управ­лять
ее со­стоя­ни­ем. То есть ес­ли ЦРУ уда­ва­лось по­лу­
В ито­ге мы при­ш ли к то­м у, что поль ­зо­ва­те ­ли
чить дос­т уп к сис­те­ме, они мог­ли и мо­ди­фи­ци­ро­ те­перь в состоянии ис­поль­зо­вать свои соб­с т­вен­
вать встро­ен­ные про­грам­мы, что­бы по­лу­чить до­ ные клю­чи и са­ми ре­ша­ют, что им ус­та­нав­ли­вать.
пол­ни­тель­ный кон­троль. Или же сде­лать так, что­бы Хо­ти­те — мо­же­те взять сис­те­му Secure Boot и на­
эти про­г рам­мы ко­пи­ро­в а ­ли дан­ные из сис­те­мы, стро­и ть ее так, что­б ы она не да­в а­л а за­г ру­ж ать
за­пи­сы­ва ­ли па­ро­ли в энер­го­за­ви­си­мую па­мять — Windows, а толь­ко, ска­жем, Fedora и Ubuntu, и лю­
и то­му по­доб­ное. За­по­лу­чив та­к ую сис­те­му, Управ­ бой дру­г ой ваш лю­б и­м ый ди­с т­р и­бу ­т ив. Мож­н о
ле­ние мог­ло вы­удить из нее все сек­ре­ты, да­же с за­ и так; и по-мо­ему, в том и состоит суть сво­бо­ды:
шиф­ро­ван­ных дис­ков.
сво­бо­д а да­ет ре­шать не толь­ко что мож­но за­гру­
жать, но и что нель­зя. Так мы дош­ли до уров­ня ОС.
LXF: Ком­мер­че­­ские про­шив­ки — в осо­бен­но­сти
Те­перь по­л у ­чить дос ­т уп низ­ко­го уров­ня к ва­шей
ко­гда бес­про­вод­ной адап­тер не ра­бо­та­ет пря­мо
ОС, тем са­мым на­ру­шив ее безо­пас­ность в це­лом,
из ко­роб­ки — са­мый раз­дра­жаю­щий фак­тор для
ста­ло го­раз­до труд­нее. Но мы долж­ны про­дол­жать
поль­зо­ва­те­лей Linux. Но ведь это и од­на из глав­
ра­бо­тать над этим.
ных про­блем безо­пас­но­сти?
МГ: Уст­рой­с т­ва PCI по оп­ре­де­ле­нию име­ют пря­ LXF: А бы­ва­ли слу­чаи, ко­гда ко­му-то уда­ва­лось
мой дос­т уп к па­мя­ти, что­бы из­ме­нять со­дер­жи­мое обой­ти UEFI?
Про­цесс, за­пу­щен­ный
обыч­ным поль­зо­ва­те­лем,
вдруг по­лу­чит пра­ва root.
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 39
Мэ­тью Гэр­ретт
МГ: Не знаю, до­хо­ди­ли ли до вас ка­кие-то де­та­ли
из то­го, что про­са­чи­ва­ет­ся от Hacker Team, но у них
был один спо­с об из­ме­не­ния про­шив­к и сис­т е­мы
с по­мо­щью их вре­до­нос­но­го ПО. Они при­ме­ня­ли
тех­н о­л о­г ию до­в оль­н о низ­ко­г о уров­н я, не осо­б о
муд ­р е­н ую — им ну ­жен был фи­зи­че­­с кий дос ­т уп
к сис­те­ме; но ес­ли им уда­ва­лось за­по­лу­чить про­
шив­к у, то они мог­л и до­б а­в лять ту­д а свой код.
И при ка­ж ­дой за­груз­ке этой сис­те­мы он дей­ст­ви­
тель­но вы­с траи­в ал же­с т ­к ий диск с ис­поль ­зо­в а­
ни­е м NTFS (код ра­б о­т ал толь­к о под Windows).
Он за­гру­жал сис­тем­ный раз­дел, за­тем ко­пи­ро­вал
вре­д о­н ос­н ое ПО в фай ­л о­в ую сис ­т е­м у Windows,
за­тем раз­мон­ти­ро­вал ее, и при по­с ле­д ую­щей за­
груз­ке ав­то­ма­ти­че­­ски это ПО за­пус­кал. Ни очи­ст­ка
дис­ка, ни его уда ­ле­ние и за­ме­на про­тив за­ра ­же­ния
не по­мо­га­ли. Сей­час у нас есть ин­ст­ру­мен­ты, что­бы
сде­лать это бы­ло труд­нее — в но­вых сис­те­мах об­
но­вить про­шив­к у мож­но, ес­ли она под­пи­са­на клю­
чом безо­п ас­н о­с ти. Но это по-преж­н е­м у мож­н о
обой­ти, если иметь пря­мой дос­т уп к флеш-па­мя­ти,
то есть или по­лу­чить дос­т уп к ва­шей ма­ши­не и из­
влечь флеш-чип, или на­пря­мую пе­ре­про­грам­ми­
ро­вать про­шив­к у.
LXF: Но раз­ве чи­пы Trusted Platform Module (TPM)
не пре­ду­пре­ж­да­ют вас об этом?
МГ: Есть тех­но­ло­г ии, спо­с об­ные это про­ве­рить:
с по­м о­щ ью TPM-чи­п а мож­н о из­м е­р ить объ­
ем встро­ен­ных про­г рамм при ини­циа ­ли­за­ции —
при вне­се­нии из­ме­не­ний в про­шив­к у, он из­ме­нит­
ся. То­гда, ес­ли у вас есть ба­за пра­виль­ных зна­че­ний
и вы ви­д и­т е, что они не сов­п а­д а­ю т, это тре­вож­
ный знак. Про­бле­ма в том, что ес­ли вы не до­ве­ряе­
те сво­ей про­шив­ке, то от­к у­да вам знать, не за­ста­
ви­ла ли она ва­шу ОС пре­ж ­де вы­да­вать вам вер­ные
зна­че­ния, да­же ес­ли это не так? То­гда вам по­на­до­
бят­ся два уст­рой­с т­ва, два не­за­ви­си­мых ис­точ­ни­
ка ин­фор­ма­ции.
Я за­ни­мал­ся од­ной тех­но­ло­ги­ей ис­поль­зо­ва­ния
TPM’ов для соз­да­ния шиф­ро­ва­ния с при­ме­не­ни­ем
двух­фак ­тор­ной ау ­тен­ти­фи­ка­ции уст­рой­ст­ва (2FA).
Та­ким об­ра­зом, при ка­ж ­дой за­груз­ке ва­ше­го но­у т­
бу­ка TPM бу­дет де­шиф­ро­вать па­роль при сов­па­де­
нии зна­че­ний, и этот па­роль, а так­же вре­мя вхо­да
в сис­те­му, мо­г ут со­с та­вить ал­го­ритм Time-based
One Time Password (TOTP) . Это бу­дет шес­ти­знач­
ное чис­ло, ко­т о­р ое вы по­т ом мо­же­т е про­ве­рить
с те­ле­фо­на; ес­ли всё сов­па­да­ет, зна­чит, ва­ша про­
шив­ка на­деж­на. Ес­ли чис­ло не сов­па­да­ет или сис­
те­ма не мо­жет его вос­про­из­ве­сти, то это по­вод для
бес­по­кой­ст­ва.
Но да­же ес­ли вы уве­ре­ны, что ва­шу про­шив­к у
не ме­ня­ли, всё еще ос­та­ет­ся про­бле­ма: сам про­
из­во­ди­тель мог на­ме­рен­но ос­та­вить ла­зей­к у или
про­сто не за­ме­тил уяз­ви­мо­сти, ко­то­рой зло­умыш­
лен­ник мо­жет вос­поль­зо­вать­ся, что­бы обой­ти за­
щи­т у. И эту про­бле­м у нам не ре­шить без ис­ход­
но­го ко­д а про­шив­к и — нам нуж ­но дос­ко­наль­но
знать, что ту­да включено, нуж­но изу­чить этот код.
И что еще важ­нее, нам нуж­но его вос­про­из­ве­с ти
и про­ве­рить, на­сколь­ко он со­от­вет­ст­ву­ет то­му, что
в про­шив­ке. Бу­дет труд­но убе­дить в этом про­из­во­
ди­те­лей, но в ито­ге, это един­ст­вен­ный спо­соб ут­
вер­ж дать «Я уве­рен, что этот ком­пь­ю­тер ра­бо­та­ет
на ме­ня». По­нят­но, что это толь­ко на­ча ­ло про­блем.
До­п ус ­т им, мы убе­ди ­лись в на ­деж ­но­с ти про­шив­
ки ОС. Пре­крас­но, но как на­счет про­шив­ки же­с т­
ко­го дис­ка?
LXF: Или USB-фле­шек?
МГ: Вер­но — во мно­гих уст­рой­ст­вах есть соб­ст­вен­
ные встраи­вае­мые про­грам­мы. А ес­ли кто-ни­будь
смо­жет вос­про­из­ве­сти про­шив­к у ва­ше­го же­ст­ко­го
дис­ка, в хо­де его ра­бо­ты, и под­ме­нить не­ко­то­рые
дво­и ч­н ые фай ­л ы — на­п ри­м ер, за­п ус ­т ить SSH,
и при пер­в ом за­п ус­ке диск вы­д аст пра­в иль­н ую
вер­сию, вы вве­де­те свой па­роль, и с виду всё бу­
дет пре­к рас­н о. В яд ­р е то­же мож ­н о из­м е­р ить ее
объ­ем че­рез TPM, так что вы мо­же­те про­ве­рить,
не из­ме­нил ли кто-то ваш SSH. Но яд­ро де­ла­ет это
толь­ко при пер­вом за­пус­ке SSH, ли­бо толь­ко зная
о вне­с ен­ных из­ме­не­ни­я х. Что ес­ли при сле­д ую­
щем за­пус­ке SSH ваш же­ст­кий диск вы­даст дру­г ую
вер­сию, где уже за­пи­сан ваш па­роль? А вы и не уз­
нае­т е — это бу­дет ни­к ак не про­ве­рить. И вновь,
не имея ис­ход­но­го ко­да про­шив­ки же­ст­ких дис­ков
и воз­мож­но­сти про­ве­рить ее на вне­се­ния из­ме­не­
ний, мы от этих рис­ков не уй­дем. И это ра­зум­но,
ведь чем боль­ше открытого ко­д а мы име­ем, тем
боль­ше мы мо­жем его усо­вер­шен­ст­во­вать и га­ран­
ти­ро­вать его на­деж­ность, и тем труд­нее бу­дет зло­
умыш­лен­ни­кам что-то про­тив не­го пред­при­нять.
LXF: Но раз­ве са­ми эти сис­те­мы ве­ри­фи­ка­ции
нель­зя взло­мать — на­сколь­ко на них во­об­ще
мож­но по­ло­жить­ся?
МГ: Это то­же од­н а из про­б лем — в са­м их TPM
ис­п оль­з у­е т­с я про­п рие­т ар­н ая про­ш ив­к а, и по­к а
вы можете толь­ко уповать на то, что TPM на­деж­ны.
Для га­ран­тии пол­ной уве­рен­но­сти на­до сде­лать от­
кры­ты­ми мно­же­ст­во ком­по­нен­тов.
LXF: Учи­ты­вая, что для не­ко­то­рых час­тей ко­да
про­шив­ки такое про­изой­дет до­воль­но-таки неско­
ро, не де­ла­ет ли это ва­ши уси­лия на­прас­ны­м
трудом?
40 | LXF208 Апрель 2016
www.linuxformat.ru/subscribe
Мэ­тью Гэр­ретт
МГ: Да­же ес­ли мы го­во­рим: «Ес­ли мы не мо­жем
про­ве­рить под ­лин­ность про­шив­ки же­ст­ко­го дис­ка,
за­чем то­гда все это нуж­но?» — ну, хо­тя бы за­тем,
что те­перь им не­об­хо­ди­мо знать, ка­кой у ме­ня тип
же­ст­ко­го дис­ка; нуж­но най­ти уяз­ви­мость, ко­то­рой
мож­н о бы­л о бы вос­п оль­з о­в ать­с я. Осу­щ е­с т­в ить
ата­к у те­перь ку­да труд­нее, чем рань­ше. И чем труд­
нее это ста­но­вит­ся, тем боль­ше ве­ро­ят­ность, что
взлом­щи­ки ста­нут при­бе­гать вме­с то это­го к дру­
гим ста­ро­мод­ным спо­со­бам. Ра­зу­ме­ет­ся, ес­ли АНБ
или Центр пра­ви­т ель­с т­вен­ной свя­зи за ­хо­т ят уз­
нать, что вы де­лае­те со сво­им ком­пь­ю­те­ром, то они
на­вер­ня­ка смо­г ут это сде­лать. Но на ка­ком-то эта­
пе, ка­ж ­дый раз, ко­гда они поль­зу­ют­ся эти­ми уяз­
ви­м о­с тя­ми, они рис­к у­ю т быть об­н а­ру ­жен­ны­ми.
В са­мом край­нем слу­чае, да­же ес­ли АНБ смо­жет
за­ста­вить Intel вне­дрить уяз­ви­мость в их про­цес­со­
ры, ка­ж ­дый раз, как они бу­дут ею поль­зо­вать­ся —
а им при­дет­ся это де­лать, по­сколь­к у она про­пи­са­на
в ко­де — есть шанс, что кто-ни­будь до­га­да­ет­ся, что
де­ло имен­но в про­цес­со­ре. Най­дет­ся кто-ни­будь
осо­бо до­тош­ный, нач­нет за­пи­сы­вать ко­ман­ды, от­
прав­ляе­мые про­цес­со­ру, и за­ме­тит, что тот вы­да­
ет не­вер­ный ре­зуль­тат. Или что слу­чай­ные чис­ла,
так или ина­че, де­тер­ми­ни­ро­ва­ны. Ес­ли это вскро­
ет­ся и бу­дет до­ка­за­но, про­д а­ж и Intel за ру­бе­жом
упа­д ут в ра­зы, при­не­ся пра­ви­тель­ст­ву США боль­
шие про­бле­мы.
LXF: За­то в AMD, при та­ком рас­кла­де, по­ра­ду­ют­ся.
МГ: Да, в AMD по­ра­ду­ют­ся, ес­ли до­жи­вут до это­го
мо­мен­та, но это был бы силь­ней­ший удар по имид­
жу аме­р и­к ан­с кой ин­д у­с т ­р ии тех ­н о­л о­г ии. В ре­
аль­но­с ти, это все рав­но, что пред­с тав­лять не­по­
сред­ст­вен­ную уг­ро­зу су­ще­ст­во­ва­нию го­су­дар­ст­ва.
В та­ком мас­шта­бе, это долж­но вол­но­вать не мень­
ше, чем ка­кой-ни­будь гла­варь тер­ро­ри­стов. Чем ак­
тив­нее мы бу­дем с этим бо­роть­ся, тем за­щи­щен­нее
лю­ди бу­дут се­бя чув­ст­во­вать, да­же про­тив над­зо­ра
со сто­ро­ны го­су­дар­ст­ва, так что на­ше де­ло пра­вое.
LXF: Оче­вид­но, что от­кры­то­го ПО се­го­дня
мо­ре, но с ап­па­рат­ны­ми сред­ст­ва­ми — да­же
О БОРЬБЕ С ЗАКРЫТЫМИ ПРОШИВКАМИ
со встраи­вае­мы­ми про­
грам­ма­ми, на них ра­бо­
таю­щи­ми — всё со­всем
ина­че?
МГ: Да. В этом пла­не все
да­ле­ко не так, как бы мне
хо­т е­л о с ь. Пр о­г р а м­мы
труд­но пи­сать, но в го­то­вом ви­де их лег­ко ско­пи­ро­ в ре­аль­но­сти. Но, по­хо­же, и там есть свои кир­пич­
вать или вос­про­из­ве­сти. Сам по се­бе про­цесс соз­ ные сте­ны...
да­ния ПО не яв­ля­ет­ся сек­ре­том. А ес­ли вы за­хо­ти­те МГ: Я об­щал­ся с людь­ми из обо­их про­ек­тов, с этим
соз­да­вать про­цес­со­ры, спо­соб­ные кон­к у­ри­ро­вать до сих пор есть про­бле­мы. В Novena сис­тем­ная про­
с Intel’овскими, то да­же ес­ли вы смо­же­т е та­кой шив­ка от­кры­та и пол­но­стью дос­т уп­на, кро­ме сис­те­
спро­ек­ти­ро­вать, для про­из­вод­ст­ва вам все рав­но мы-на-чи­пе (SoC), на ко­то­ром она ра­бо­та­ет. Се­го­дня
не обой­тись без при­вле­че­ния ре­сур­сов дру­гих ком­ в SoC ARM есть яд­ра ARM, на ко­то­рых вы впол­не
па­ний. И как убе­дить­ся в том, что они под­лин­ные?
мо­же­те за­пус­тить свою ОС, но есть и дру­гие, го­
Здесь есть мас­с а уров­ней, где ве­ро­я т­но вме­ раз­до бо­лее мел­к ие, от­ве­чаю­щ ие за управ­ле­ние
ша­тель­с т­во, и мас­са спо­со­бов для его осу­ще­с т­в­ пи­т а­ни­е м, под ­д ерж­к у вспо­м о­г а­т ель­н о­г о обо­ру­
ле­ния. По­стро­ить дос­та­точ­но от­кры­т ую схе­му про­ до­ва­ния — к при­ме­ру, у SATA-кон­трол­ле­ра мо­жет
из­вод­с т­в а и ска­з ать «Я на 100 % уве­рен, что это быть свое яд­ро. И во мно­гих из них бу­дет за­кры­тая
то са­мое обо­ру­до­ва­ние, ко­то­рое хо­тел соз­д ать», про­шив­ка, встро­ен­ная в сам чип — код, ко­то­рый
очень и очень труд­но.
не пред­по­ла­г а­ет­с я ме­нять в те­че­ние всей жиз­ни
уст­рой­с т­ва. Да ­же ес­ли мы со­сре­до­то­чим­ся толь­
LXF: Мы ин­те­ре­со­ва­лись но­у т­бу­ка­ми вро­де Noко на сис­тем­ной про­шив­ке, ос­та­нут­ся еще и про­чие
vena и Purina, ко­то­рые стре­мят­ся быть на­столь­
ком­по­нен­ты, ко­то­рым мы вы­ну ­ж ­де­ны до­ве­рить­ся.
ко от­кры­ты­ми, на­сколь­ко мож­но рас­счи­ты­вать
И с этим ни­че­го не по­де­ла­ешь. |
Для пол­ной уве­рен­но­сти
на­до сде­лать от­кры­ты­ми
мно­же­ст­во ком­по­нен­тов.
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 41
Муль­ти­загруз­ка
МУЛЬТИЗАГРУЗКА
С GRUB
Ши­ро­кий вы­бор по­зво­ля­ет по­ка­приз­ни­чать.
Нейл Бот­вик по­ка­зы­ва­ет, как за­по­лу­чить
на ком­пь­ю­тер не­сколь­ко ди­ст­ри­бу­ти­вов.
Д
и­ст­ри­бу­ти­вов Linux пол­ным-пол­но, и ка­
ж­дый име­ет свои силь­ные и сла­бые сто­
ро­ны. Ко­гда вы хо­ти­те по­про­бо­вать дру­
гой ди­с т­р и­б у­т ив, обыч­н о вы мо­ж ете
по­лу­чить live-вер­сию или ус­та­но­вить его на вир­
ту­аль­ной ма­ши­не для бег­ло­го тес­та. Оба ва­ри­ан­та
про­стые и бы­ст­рые, но это не то же са­мое, что на­
пря­мую ус­та­нов­лен­ный ди­ст­ри­бу­тив.
Но, воз­м ож ­н о, вы не намерены от ­к а ­з ы­в ать­
ся от сво­его при­выч­но­го ди­с т­ри­бу­т и­ва; или, мо­
жет, де­лите с кем-то ком­пь­ю­тер, и вы пред­по­чи­
тае­те Mint, а этот кто-то — Fedora; бы­ло бы
от­лич­но иметь ус­та­нов­лен­ны­ми оба. Итак,
что же де­лать? Обыч­но тер­мин «двой­ная
за­груз­ка» от­но­сит­ся к си­т уа­ции, ко­гда у вас
на од­ном ком­пь­ю­те­ре ус­т а­нов­ле­ны ди­с т­
ри­бу­тив Linux и Windows, и вы вы­би­рае­те
ме­ж ­д у ни­м и во вре­м я за­г руз­к и; но то же са­
мое воз­мож ­но и с дву ­мя ди­с т ­ри­бу ­т и­в а­ми Linux.
На не­сколь­ких сле­дую­щих стра­ни­цах мы рас­смот­
рим, как на­стро­ить ком­пь­ю­тер, что­бы за­гру­жать­ся
с вы­бо­ром не­сколь­ких ОС, од­ной из ко­то­рых мо­жет
быть Windows, и что­бы вам бы­ло дос­т уп­но боль­ше
од­но­го ди­ст­ри­бу ­ти­ва Linux. Вы да­же мо­же­те пой­
ти даль­ше и вклю­чить од­ну или не­сколь­ко ОС BSD.
Мы так­же рас­смот­рим, как рас­пре­де­лить ва­ши до­
ку­мен­ты и фо­то­гра­фии ме­ж ­ду раз­ны­ми ис­поль­зуе­
мы­ми ва­ми ди­ст­ри­бу­ти­ва­ми.
Grub 2 про­тив ста­ро­го Grub
Муль­ти­загруз­ка Linux уп­ро­сти­лась бла­го­да­ря поч­ти
по­все­ме­ст­но­му вне­дре­нию за­груз­чи­ка Grub 2. До­­
ступ­но две ос­нов­ных вер­сии Grub. Ста­рую вер­сию,
так и не дос­тигнув­шую но­ме­ра 1.0, час­то на­зы­ва­ют
«унас­ле­до­ван­ным [legacy]» Grub, а по­д ав­ляю­щее
боль­шин­ст­во ди­ст­ри­бу ­ти­вов сей­час ис­поль­зу­ет бо­
лее но­вый Grub 2. Grub 2 очень силь­но от­ли­ча­ет­ся
от ста­рой про­грам­мы и по­лу­чил ре­пу­та­цию слож­
но­го. На са­мом де­ле, его мо­д уль­ный прин­цип оз­
на­ча­ет, что он мо­жет спра­вить­ся с ку­д а боль­шим
чис­лом си­т уа­ций при за­груз­ке и ча­ще все­го
спо­со­бен ав­то­ма­ти­че­­ски на­стро­ить­ся са­мо­
стоя­тель­но. Да­лее мы бу­дем рас­смат­ри­вать
толь­ко Grub 2, на­зы­вая его про­сто Grub.
У Grub есть три ос­н ов­н ые час­т и. Код
на­чаль­ной за­г руз­к и обыч­но за­г ру ­ж а­е т­с я
Муль­ти­загруз­ка Linux
ста­ла про­ще бла­го­да­
ря вне­дре­нию Grub 2.
42 | LXF208 Апрель 2016
www.linuxformat.ru/subscribe
Муль­ти­загруз­ка
Ко­гда ус­та­нов­щик за­вер­шит свою ра­бо­т у, пе­
ре ­з а­г ру ­зи ­т е ком­пь­ю­т ер, и вы уви­д и ­т е за­г ру ­зоч­
ное ме­ню пер­во­го ди­с т­ри­бу ­т и­в а, где ото­бра­зит­
ся Windows, ес­ли она ус­та­нов­ле­на, однако но­во­го
ди­ст­ри­бу­ти­ва не бу­дет и сле­да. Причина в том, что
вы не тро­га ­ли на­строй­ки Grub. Од­ной из при­ят­ных
осо­бен­но­стей Grub 2 яв­ля­ет­ся его спо­соб­ность ге­
не­ри­ро­вать свои соб­ст­вен­ные фай­лы кон­фи­г у­ра­
ции, так что от­крой­те тер­ми­нал и за­пус­ти­те
$ sudo grub-mkconfig -o /boot/grub/grub.cfg
Ваш же­ст­кий диск про­ска­ни­ру­ет­ся на пред­мет
на ­ли­чия ОС, и для ка ­ж ­дой най­ден­ной соз ­д а­с т­с я
пункт ме­ню. Те­перь по­сле пе­ре­за­груз­ки вы долж­ны
уви­деть оба ди­ст­ри­бу­ти­ва и, мо­жет быть, Windows
в ва­шем за­гру­зоч­ном ме­ню. В Ubuntu и его про­из­
вод­ных есть ко­ман­да update-grub — это од­но­строч­
ный скрипт обо­лоч­ки, за­пус­каю­щий grub-mkconfig,
как и при­ве­ден­ная вы­ше ко­ман­да; вы­би­рай­те лю­
бой из этих ва­ри­ан­тов. Од­ним из пре­иму­ществ от­
ка­за от ис­поль­зо­ва­ния скрип­та яв­ля­ет­ся воз­мож­
ность пред­про­смот­ра ме­ню по $ sudo grub-mkconfig
| less — вы уви­ди­те, что бу­дет вы­бра­но и на­пи­са­но
в ме­ню. Вы долж­ны по­ни­мать «гру­бо­яз», что­бы ра­
зо­брать­ся в этом.
> GParted — про­стей­ший спо­соб управ­лять раз­де­ла­ми, соз­да­вая про­стран­ст­во для дру­го­го ди­ст­ри­бу­ти­ва.
в Глав­ную За­гру­зоч­ную За­пись (MBR) дис­ка. Это
не­боль­шое про­стран­ст­во, 446 байт, то есть этот код
ми­ни­ма­лен, и его хва­та­ет лишь для за­груз­ки вто­рой
час­ти, на­хо­д я­щей­ся в ва­шей ди­рек­то­рии boot или
раз­де­ле в ди­рек­то­рии под на­зва­ни­ем grub. Здесь
вы обнаружите раз­лич­ные мо­ду­ли фай­ло­вой сис­
те­мы вме­сте с те­ма­ми и шриф­та­ми, ис­поль­зуе­мы­
ми в слу­чае, ес­ли ваш ди­ст­ри­бу ­тив ин­ди­ви­д уа ­ли­
зи­ро­вал вид за­гру­зоч­но­го ме­ню. Вы так­же най­де­те
наи­бо­лее важ­ный для дан­ной ста­тьи файл: grub.cfg.
Этот файл со­дер­жит опи­са­ния ме­ню, оп­ций, ко­то­
рые по­яв­ля­ют­ся в за­гру­зоч­ном ме­ню, и то­го, что
про­ис­хо­дит при вы­бо­ре ка ­ж ­дой из них.
Пер­вый шаг — ус­та­но­вить не­сколь­ко ОС. Ес­ли
вы хо­ти­те вклю­чить Windows в ваш спи­сок ОС, она
долж­на быть ус­т а­нов­ле­на пер­вой — обыч­но это
не яв­ля­ет­ся про­бле­мой, по­сколь­к у весьма вероят­
но, что на ком­пь­ю­те­ре она уже бы­ла предустанов­
лена. Ус­та­нов­щи­ки Linux хо­ро­шо оп­ре­де­ля­ют су­
ще­ст­вую­щую ус­та­нов­к у Windows и ра­бо­та­ют с ней.
За­тем ус­та­но­ви­те пред­по­чи­тае­мый ва­ми ди­с т­ри­
бу­т ив обыч­ным спо­с о­б ом. Это предоставит вам
стан­дарт­ную двой­ную за­груз­к у; ес­ли она у вас уже
имеется, мо­же­т е про­п ус­т ить пре­д ы­д у­щ ий па­р а­
граф и сра­зу пе­рей­ти к ин­те­рес­ной час­ти до­бав­
ле­ния до­пол­ни­тель­ных ди­ст­ри­бу ­ти­вов Linux к ва­
ше­му рас­к ла­ду.
До­бав­ле­ние ди­ст­ри­бу­ти­ва
Ус­т а­нов­щи­к и ди­с т­ри­бу ­т и­вов пе­ре­раз­би­ва­ют же­
ст­кий диск с раз­ной сте­пе­нью ус­пе­ха, так что луч­
ше бу­дет под­го­то­вить свой же­ст­кий диск за­ра­нее.
Луч­ший ин­ст­ру­мент для это­й цели — GParted, при­
чем — ка­кое сов­п а­д е­ние! — его све­ж ая вер­с ия
по­па­ла на LXFDVD дан­но­го но­ме­ра. За­гру­зи­тесь
в GParted Live и из­ме­ни­те объем ва­ше­го раз­де­ла root
на под ­хо­дя­щий. GParted подска­жет вам, как да­ле­ко
вы мо­же­те зай­ти, но по воз­мож­но­сти сде­лай­те его
как ми­ни­мум на 50 % боль­ше, чем нуж­но сей­час.
Не соз­д а­вай­те раз­дел в вы­сво­бо­ж ­ден­ном мес­те,
ос­тавь­те его не­рас­пре­де­лен­ным, за­тем ус­та­но­ви­те
вто­рой ди­ст­ри­бу ­тив обыч­ным спо­со­бом, велев ему
ис­поль­зо­вать не­рас­пре­де­лен­ное ме­с то на дис­ке.
Ус­та­нов­ка про­хо­дит в обыч­ном ре­жи­ме, но с од­ним
ис­к лю­че­ни­ем — вам не на­до ус­та­нав­ли­вать Grub
на MBR. В боль­шин­ст­ве ус­та­нов­щи­ков есть воз­мож­
ность вы­брать рас­по­ло­же­ние Grub, иногда уп­ря­та­н­
ная за кноп­кой Advanced. Ес­ли это не так, по­поз­же
мы нау­чим вас пе­ре­ме­щать его. Вы­бе­ри­те ли­бо его
ус­та­нов­к у в раз­дел root, ли­бо во­об­ще не ус­та­нав­ли­
вай­те его. Это за­тро­нет толь­ко пер­вую часть ко­да
Grub, фай­лы в boot и дру­гих мес­тах все рав­но бу­дут
ус­та­нов­ле­ны. Ес­ли вам пред­ла­га­ет­ся вы­брать раз­
дел swap, вы­бе­ри­те его из дру­го­го ди­ст­ри­бу ­ти­ва,
и они смо­г ут ис­поль­зо­вать его вдво­ем.
Пе­ре­ме­ще­ние Grub
Ес­ли ва­ша но­вая ус­та­нов­ка не пред­лагала вам пе­
ре­мес­тить Grub, вы, воз­мож­но, по­лу­чи­те за­гру­зоч­
ное ме­ню, где уже бу­дет все не­об­хо­ди­мое, по­сколь­
ку grub-mkconfig за­пус­ка­ет­ся как часть про­цес­са.
И по­че­му бы не дать это­му воз­мож­ность слу­чать­ся
ка ­ж ­дый раз? Про­бле­му соз­да­ют об­нов­ле­ния: ко­гда
ме­нед ­жер па­ке­тов ди­ст­ри­бу ­ти­ва ус­та­нав­ли­ва­ет об­
нов­ле­ние в яд­ро Linux, он сно­ва вклю­ча­ет вер­сию
Grub это­го ди­ст­ри­бу­ти­ва, так что вы най­де­те ме­ню
пе­ре­к лю­чаю­щим­ся с од­но­го ди­ст­ри­бу ­ти­ва на дру­
гой. Что­бы пе­ре­мес­тить Grub в раз­дел ди­с т­ри­бу­
ти­в а, вна­ча ­ле за­г ру ­зи ­те ди­с т ­ри­бу ­т ив, в ко­то­ром
вы хо­ти­те управ­лять Grub, и убе­ди­тесь, что он ра­бо­
та­ет, с по­мо­щью та­кой ко­ман­ды тер­ми­на­ла (при ус­
ло­вии, что вы ис­поль­зуе­те диск на /dev/sda):
$ grub-install /dev/sda
За­тем за­гру­зи­тесь в дру­гой ди­ст­ри­бу­тив и оп­
ре­де­ли­те раз­дел, хра­ня­щий ва­шу фай­ло­вую сис­
те­му root, ко­мандо­й $ findmnt / -o SOURCE, и ве­ли­те
Grub хра­нить за­груз­чик там с по­мо­щью $ grub-install
--force /dev/sdaN, где sdaN — раз­дел дис­ка sda, воз­
вра­щен­ный findmnt. --force встав­лен по­то­м у, что
Кто в до­ме хо­зя­ин
Пер­вый ус­та­нов­лен­ный ва­ми ди­ст­ри­бу ­тив дол­жен
счи­тать­ся ва­шим глав­ным ди­ст­ри­бу ­ти­вом; это
он бу­дет управ­лять за­груз­кой, по край­ней ме­ре,
на дан­ный мо­мент. Имен­но по­это­му глав­ный ди­ст­
ри­бу­тив ка­те­го­ри­че­­ски нель­зя уда­лять, ина­че ваш
ком­пь­ю­тер мо­жет сде­лать­ся не­за­гру­жае­мым —
по край­ней ме­ре, по­ка вы не за­гру­зи­тесь с вос­
ста­но­ви­тель­но­го дис­ка, что­бы ис­пра­вить дело.
При уда­ле­нии ос­таль­ных ди­ст­ри­бу­ти­вов раз­ве что
ста­нут лиш­ни­ми их пунк­ты за­гру­зоч­но­го ме­ню,
ве­д у­щие в ни­к у­да (изле­чивает­ся но­вым за­пус­ком
update-grub).
www.linuxformat.ru/subscribe
> Не­ко­то­рые ди­ст­ри­бу­ти­вы по­зво­ля­ют дер­жать
Grub по­даль­ше от MBR, ко­гда вы их ус­та­нав­ли­ва­
е­те, но мо­гут пре­ду­пре­дить вас, что это не луч­шая
идея!
Апрель 2016 LXF208 | 43
Муль­ти­загруз­ка
ус­та­нов­ка Grub в раз­дел в на­ше вре­мя счи­та­ет­ся
да­ле­кой от идеа­ла, но по су­ти нам про­сто на­до дер­
жать Grub в сто­рон­ке: то­гда об­нов­ле­ние яд­ра для
это­го ди­ст­ри­бу ­ти­ва не ис­пор­тит за­гру­зоч­ное ме­ню.
Grub при этом во­об­ще не за­тро­нет­ся, так что вам
по­на­до­бит­ся за­гру­зить­ся в ваш ос­нов­ной ди­ст­ри­
бу­тив и сно­ва за­пус­тить grub-mkconfig или updategrub, что­бы учесть из­ме­не­ния.
На­строй­ка Grub
Од­но из убой­ных пре­иму ­щ еств Grub — его спо­
соб­ность ге­не­ри­ро­вать соб­с т­вен­ное ме­ню, ос­но­
вы­ва­ясь на со­дер­жи­мом ва­ше­го же­с т­ко­го дис­ка;
но про­цесс соз­д а­ния этих ме­ню мож­но и на­с тро­
ить, ис­поль­зуя скрип­ты в /etc/grub.d и на­с трой­ки
в /etc/default/grub. Этот файл со­дер­жит ряд оп­ре­
де­л е­ний пе­р е­м ен­ных, ко­т о­рые мож­н о из­м е­нить
с целью пе­ре­дел­ки ме­ню. На­при­мер, ес­ли вы ни­че­
го не вы­бра­ли, сам Grub обыч­но за­гру­жа­ет пер­вую
оп­ц ию — най­д и ­т е строч­к у, со­д ер­ж а­щ ую GRUB_
DEFAULT=0, и из­ме­ни­т е 0 на но­мер, ко­то­рый хо­
ти­те ви­деть по умол­ча­нию. (Grub счи­та­ет от ну­ля,
так что стан­д арт­ная на­строй­ка за­гру ­жа­ет пер­вый
эле­мент). Вы так ­же мо­же­те из­ме­нить вре­мя ожи­
да­ния, в стро­ке GRUB_TIMEOUT, и на­строй­ки яд­ра
по умол­ча­нию, в GRUB_LINUX_DEFAULT. Файл со­
дер­жит ком­мен­та­рии-по­яс­не­ния для оп­ций; ли­бо
по­чи­тай­те info-стра­ни­цу Grub, где все оп­ции пе­ре­
чис­ле­ны со все­ми под­роб­но­стя­ми.
Фай­лы /etc/grub.d — это скрип­ты обо­лоч­ки, за­
пус­кае­мые по grub-mkconfig. При же­ла­нии пе­ре­на­
стро­ить свое за­гру­зоч­ное ме­ню вы мо­же­те до­ба­
вить свои соб­ст­вен­ные скрип­ты: все, что им на­до
де­лать — это вы­во­дить дей­ст­вую­щие пунк­ты ме­
ню. Скрип­ты в /etc/grub.d за­пус­ка­ют­ся по по­ряд­
ку, имен­но по­это­му их име­на на­чи­на­ют­ся с чи­сел.
00_header пи­шет стан­дарт­ные на­строй­ки в верх­ней
час­ти фай­ла ме­ню, а 10_linux соз­да­ет пунк­ты ме­
ню для за­пу­щен­но­го ди­ст­ри­бу­ти­ва, то­гда как 30_
os-prober ска­ни­ру­ет ваш же­ст­кий диск на на­ли­чие
дру­гих ОС, Linux или дру­гих, и до­бав­ля­ет их в ме­
ню. Что и да­ет спо­соб со­дер­жать в ва­шем ме­ню все
ва­ши ди­ст­ри­бу­ти­вы.
Це­по­чеч­ная за­груз­ка
Есть еще один спо­соб управ­ле­ния мно­же­ст­вен­ной
за­груз­кой, под на­зва­ни­ем «це­по­чеч­ная (по­с ле­до­
ва­тель­ная) за­груз­ка». Это тот спо­соб, ко­то­рым Grub
за­гру­жа­ет Windows, по­сколь­к у сам он Windows за­
гру­зить не мо­жет. Вме­сто это­го он пе­ре­да­ет управ­
ле­ние за­г руз­чи­к у Windows, как буд­то бы он был
за­гру­жен на­пря­мую BIOS. Мы мо­жем вос­поль­зо­
вать­ся этим, что­бы вы­би­рать ди­ст­ри­бу­ти­вы из из­
на­чаль­но­го ме­ню Grub, и у ка­ж ­до­го ди­ст­ри­бу­ти­ва
будет свое соб­ст­вен­ное за­гру­зоч­ное ме­ню.
Это оз­на­ча­ет, что вам требуется спо­соб соз­да­
вать свои пунк­т ы ме­ню. Их нель­зя про­с то до­ба­
вить в файл grub.cfg, по­сколь­к у
он бу­дет пе­реза­пи­сан при сле­
дую­щем за­пус­ке grub-mkconfig;
но в /etc/grub.d имеется файл
с име­нем 40_custom, при­год­
ный для до­бав­ле­ния сво­их лич­
ных пунк ­т ов ме­н ю. Сде­л айте
его ко­пию, дав ей ос­мыс­лен­ное имя, и, воз­можно,
из­ме­ни­те но­мер, что­бы он вклю­чил­ся в ме­ню по­
рань­ше. От­ре­д ак ­ти­руй­те этот файл и при­пи­ши­те
дей­ст­вую­щие пунк­ты ме­ню к ни­зу фай­ла. Не тро­
гай­те су­ще­ст­вую­щее со­дер­жи­мое — хо­тя его сто­ит
про­честь! Желая за­гру­зить ме­ню для openSUSE, ус­
та­нов­лен­ном на /dev/sda7, при ус­ло­вии, что вы ус­
та­но­ви­ли Grub в sda7 или пе­ре­мес­ти­ли его, как по­
ка­зы­ва­лось вы­ше, до­бавь­те в файл вот что:
menuentry “Load openSUSE boot menu” {
set root=(hd0,7)
chainloader +1
}
Пом­ни­те, что Grub ну­ме­ру­ет дис­ки с ну­ля, а раз­
де­лы с еди­ни­цы, так что sda7 ста­но­вит­ся hd0,8. Это
даст вам собственное за­г ру­зоч­ное ме­ню для ка­
ж­до­го ди­с т­ри­бу­ти­ва, так что не на­до бу­дет пе­ре­
за­г ру ­ж ать­с я в глав­ный ди­с т ­ри­бу ­т ив для об­нов­
ле­ния за­гру­зоч­но­го ме­ню; но то­гда для за­груз­ки
лю­бо­го ди­ст­ри­бу ­ти­ва, кро­ме глав­но­го, вам при­дет­
ся про­хо­дить че­рез два ме­ню. Ес­ли вы ис­поль­зу­
ете этот спо­соб, то уви­ди­те, что у вас по-преж­не­му
есть пунк­ты ме­ню, сге­не­ри­ро­ван­ные grub-mkconfig.
При от­сут­ст­вии у вас Windows мо­же­те из­ба­вить­ся
При це­по­чеч­ной за­груз­
ке у ка­ж­до­го ди­ст­ри­бу­
ти­ва будет свое ме­ню.
> Ага! Че­ты­ре ди­ст­ри­бу­ти­ва, Windows и пункт за­груз­ки с ISO-об­раза спа­са­тель­но­го CD — все в од­ном
меню, и мож­но вой­ти в лич­ные за­гру­зоч­ные ме­ню ди­ст­ри­бу­ти­вов.
Сис­те­мы вос­ста­нов­ле­ния
Од­ной из за­ме­ча­тель­ных функ­ций Grub 2 яв­ля­ет­ся
воз­мож­ность за­груз­ки пря­мо с ISO-об­раза. Бла­го­
да­ря это­му не­ко­то­рые жур­на ­лы мо­г ут вы­пус­кать
от­лич­ные муль­ти­загрузоч­ные дис­ки, а вы мо­же­те
по­лу­чить спа­са­тель­ный диск или live CD, все­гда
го­то­вый к за­груз­ке. Ма­ло то­го, что это бы­ст­рее, чем
за­груз­ка с на­стоя­ще­го CD/DVD (или да­же флеш­
ки) — за­од­но эко­но­мит­ся вре­мя, ко­то­рое вы по­тра­
ти­ли бы на ры­тье в сто­ле в по­ис­ке нуж­но­го CD.
Для это­го тре­бу­ет­ся, что­бы ди­ст­ри­бу ­тив под­дер­
жи­вал за­груз­к у с ISO. Боль­шин­ст­во ее под­дер­жи­ва­
ют, хо­тя син­так­сис мо­жет варь­и­ро­вать­ся. Всё, что
44 | LXF208 Апрель 2016
вам на­до сде­лать — это соз­дать ко­пию 40_custom
и до­ба­вить со­от­вет­ст­вую­щее оп­ре­де­ле­ние ме­ню.
Вот при­мер спа­са­тель­но­го дис­ка (я все­гда дер­ж у
его ISO в boot):
set root=’(hd0,1)’
menuentry “System Rescue CD 4.7.0” {
loopback loop /systemrescuecd-x86-4.7.0.iso
linux (loop)/isolinux/altker64 rootpass=something
setkmap=uk isoloop=systemrescuecd-x86-4.7.0.iso
initrd (loop)/isolinux/initram.igz
}
А вот при­мер об­раза live CD для Ubuntu
www.linuxformat.ru/subscribe
set root=’(hd0,1)’
isofile=/Ubuntu/ubuntu-15.10-desktop-amd64.iso
loopback loop $isofile
menuentry “Ubuntu 15.10” {
linux (loop)/casper/vmlinuz.efi file=/cdrom/preseed/
ubuntu.seed boot=casper isoscan/filename=$isofile
quiet splash --initrd (loop)/casper/initrd.lz
}
Об­ра­ти­те вни­ма­ние на ис­поль­зо­ва­ние пе­ре­мен­
ной isofile: ра­бо­та­ют оба ме­то­да, но этот про­ще
в об­слу ­жи­ва­нии.
Муль­ти­загруз­ка
от этих пунк­тов с по­мо­щью сле­дую­щей на­строй­ки
в /etc/default/grub:
GRUB_DISABLE_OS_PROBER=true
По­сколь­к у функ­ц ия os-prober до­бав­ля­ет еще
и Windows, вы не мо­же­те сде­лать это­го, ес­ли со­
би­рае­тесь за­гру ­жать Windows, так что ли­бо пе­ре­
име­нуй­те файл, со­дер­жа­щий пунк ­ты це­по­чеч­ной
за­г руз­к и, что­бы они по­яв ­ля ­лись рань­ше дру ­г их,
не­что вро­де 20_chainload, ли­бо ско­пи­руй­те пунк­ты
Windows из уже су ­щ е­с т ­вую­щ е­г о grub.cfg в свой
файл це­п о­ч еч­н ой за­г руз­к и и за­т ем от­к лю­ч и­т е
os-prober.
Де­леж­ка про­стран­ст­ва
Итак, у нас есть не­сколь­ко мир­но со­с у ­ще­с т ­вую­
щих ди­с т­ри­бу­ти­вов; а как на­счет на­ших дан­ных?
Нуж­на ли нам от­дель­ная ди­рек­то­рия home для ка­
ж ­до­го ди­с т­ри­бу ­ти­ва? Ко­рот­кий от­вет на этот во­
прос — да. Мож­но, ко­неч­но, иметь от­дель­ную фай­
ло­в ую сис­т е­м у для home и ис­п оль­з о­в ать од­н о
и то же имя поль ­з о­в а­т е ­л я и ди­р ек ­т о­р ию home,
но это чревато кон­флик­тами. В ди­рек­то­рии home
про­грам­мы хра­нят свои фай­лы на­строй­ки, и ес­ли
два ва­ших ди­ст­ри­бу­ти­ва име­ют раз­ные вер­сии од­
ной и той же про­грам­мы, у вас нач­нут­ся про­бле­
мы. Боль­шин­с т­во про­грамм ра­до­с т­но про­чи­та­ют
на­строй­ки от ста­рой вер­сии и об­но­вят их, но ко­гда
вы пе­ре­к лю­чи­тесь об­рат­но на ди­ст­ри­бу ­тив с бо­лее
ста­рой вер­си­ей, про­грам­ма сло­ма­ет­ся.
Од­но из ре­ше­ний — иметь от­дель­ную фай­ло­
вую сис­те­му для ва­ших фай­лов дан­ных, т. е. того,
что за­ни­ма­ет ме­с то и яв­ля­ет­ся фай­ла­ми, к ко­то­
рым вы хо­ти­те иметь дос­т уп во всех ди­ст­ри­бу­ти­
вах. Это мо­жет быть пол­но­с тью от­дель­ная фай­
ло­вая сис­те­ма, но мо­жет быть и ва­ша ди­рек­то­рия
home в ва­шем ос­нов­ном ди­с т­ри­бу­ти­ва — про­с то
пом­ни­те, что в этом слу­чае при­дет­ся не­ма ­ло по­
во­зить­с я с фай ­л а­ми, пре­ж ­д е чем уда ­л ять ди­с т­
ри­бу­тив, вы­шед­ший у вас из ми­ло­с ти. Для это­го
> Мо­жет ока­зать­ся, что ваш ус­та­нов­щик по­зво­ля­ет ис­поль­зо­вать не всё дос­туп­ное ме­сто, из­бав­ляя вас
от даль­ней­шей пе­ре­на­строй­ки объ­е­мов раз­де­лов в GParted.
на­до вер­н уть­ся в GParted и из­ме­нить раз­мер ва­
ших раз­де­лов, соз­д ав про­стран­ст­во для боль­шо­
го раз­де­ла с дан­ны­ми. За­тем от­ре­дак­ти­руй­те /etc/
fstab в ка­ж­дом ди­ст­ри­бу ­ти­ве, что­бы мон­ти­ро­вать
эту фай­ло­вую сис­те­му во вре­мя за­груз­ки. Кста­ти,
сто­ит до­ба­вить пунк­ты fstab, что­бы смон­ти­ро­вать
дру ­г ие ди­с т ­ри­бу ­т и­вы в ка ­ж ­дом из них, ска ­жем,
в /mnt/distroname — это уп­ро­с тит по­доб­ные шту­
ки, по­сколь­к у вы смо­же­те про­де­лать всю ра­бо­т у
в од­ном ди­ст­ри­бу­ти­ве. Это так­же уп­ро­ща­ет дос­т уп
к фай­лам из дру­гих ди­ст­ри­бу­ти­вов. Так что смон­
ти­руй­те эту но­вую фай­ло­вую сис­те­му, например,
в /mnt/common и соз­дай­те там по ди­рек­то­рии на ка­
ж­до­го поль­зо­ва­те­ля. По­том в дру­гих ва­ших ди­ст­ри­
бу­ти­вах мож­но бу­дет соз­дать сю­да сим­во­ли­че­­ские
ссыл­ки, на­при­мер:
$ ln -s /mnt/common/user/Documents /home/user/
Documents
$ ln -s /mnt/common/user/Music /home/user/Music
> Уп­ро­сти­те управ­ле­ние: до­бавь­те в /etc/fstab пунк­ты мон­ти­ро­ва­ния раз­де­лов root ва­ших ди­ст­ри­бу­ти­вов.
www.linuxformat.ru/subscribe
и т. д. Те­перь, ко­гда вы со­хра­ни­те файл в Documents,
он пе­ре­мес­тит­ся в /mnt/common/Documents и бу­
дет дос­т у­пен всем ди­с т­ри­бу­ти­вам. Уч­ти­те: здесь
пред­по­ла­га­ет­ся, что вы един­с т­вен­ный поль­зо­ва­
тель ком­пь­ю­те­ра!
Кто чем вла­де­ет?
Те­перь вам надо ре­шить ще­кот­ли­вый во­прос о соб­
­ст­вен­но­сти и пра­вах дос­т у­па к фай­лам. Пер­вым де­
лом убе­ди­тесь, что у ди­рек­то­рий в /mnt/common
пра­виль­ные вла­дель­цы, ис­поль­зуя
$ sudo chown -R username: /mnt/common/User
Вы мо­же­те ожи­дать, что это сра­бо­та­ет на всех
ди­ст­ри­бу­ти­вах, ес­ли в ка­ж ­дом из них соз­дать поль­
зо­ва­те­лей с та­ки­ми же име­на­ми; а вот и нет. Де­ло
в том, что фай­ло­вые сис­те­мы Linux не вол­ну­ет имя
поль­зо­ва­те­ля — их вол­ну­ют чи­сло­вые ID поль­зо­ва­
те­лей (UID). Боль­шин­ст­во ди­ст­ри­бу­ти­вов да­ют пер­
во­му поль­зо­ва­те­лю UID 1000, но па­роч­ка все еще
на­чи­на­ет с 500, так что про­верь­те свой UID в ка­ж­
дом ди­с т­ри­бу ­т и­ве ко­ман­дой id — про­с то за­п ус­
ти­те ее в тер­ми­на­ле без ар­г у­мен­тов. Ес­ли все UID
сов­па­да­ют, то и от­лич­но; ина­че по­на­до­бит­ся из­ме­
нить все не­со­от­вет­ст­вую­щие UID, ре­дак­ти­руя /etc/
passwd. Ни­ко­гда не ре­д ак ­т и­руй ­те этот файл на­
пря­м ую: ошиб­ка мо­жет при­вес­т и к не­воз­мож­но­
сти вхо­да в сис­те­му. Ис­поль­зуй­те для это­го ко­ман­
ду $ sudo vipw.
Най­ди­те стро­к у для сво­его поль­зо­ва­те­ля, ко­то­
рая бу­дет вы­гля­деть при­мер­но так:
user:x:500:100::/home/user:/bin/bash
Пер­в ое чис ­л о — UID; из­м е­н и­т е его, при­в е­д я
в со­от­вет­с т­вие с дру­ги­ми ди­с т­ри­бу­ти­ва­ми, и со­
хра­ни­те файл. За­тем на­до бу­дет сме­нить вла­дель­
ца всех фай ­л ов, при­н ад ­л е­ж а­щ их ста­р о­м у UID,
на но­­вого. По­с коль­к у в ва­шей ди­рек ­то­рии home
всё долж­но при­над­ле­жать вам, сме­ло иди­те в ло­
бо­вую ата­к у и сме­ни­те во­об­ще всех поль­зо­ва­те­лей:
$ cd
$ sudo chown -R username: .
Те­перь вы мо­же­те пе­ре­к лю­чать­ся ме­ж ­ду ди­ст­
ри­бу­ти­ва­ми при ка­ж ­дой пе­ре­за­груз­ке, при­чем ка­ж­
дый ди­ст­ри­бу­тив бу­дет ра­бо­тать в сво­ем фор­ма­те,
на пол­ной ско­ро­сти и с пол­ным дос­т у­пом ко всем
ва­шим дан­ным. |
Апрель 2016 LXF208 | 45
Со­ве­ты мис­те­ра Брау­на
По со­ве­там
м-ра Брау­на
Джо­ли­он Бра­ун
В сво­бод­ное от кон­суль­та­ций по Linux/DevOps вре­мя
Джо­ли­он обуз­ды­ва­ет стар­тап. Его са­мая боль­шая
ам­би­ция — най­ти при­чи­ну поль­зо­вать­ся Emacs.
Эзо­те­ри­че­ское сис­тем­ное ад­ми­ни­ст­ри­ро­ва­ние
из та­ин­ст­вен­ных за­ко­ул­ков сер­вер­ной.
Дан­ные как ис­кус­
ст­во, и на­обо­рот
П
о час­ти изящных ис­к ус­ств и ли­те­
ра­т у­ры, лог-фай­лы мое­го web-сер­
ве­ра — не то ме­сто, ку­да я в пер­
вую оче­редь от­прав­люсь за вдох­но­ве­ни­ем.
Но в са­мом кон­це про­шло­го го­да на же­ст­
ких дис­ках мо­их (и мил­лио­нов дру­гих) сер­
ве­ров поя­вил­ся за­га­доч­ный текст такого
содержания:
«УДАЛИТЕ свои лог-фай­лы. Уда­ли­
те свои сис­те­мы. Со­три­те все на­чис­то. Вый­
дите на тро­пин­к у меж цве­т у­щих виш­не­вых
де­ревь­ев, и пусть ва­ши ма­те­рин­ские пла­ты
ощу­тят поч­ву. Пусть во­да за­стру­ит­ся по кор­
пу­су. Вы знае­те, что хо­ти­те че­го-то боль­ше­го,
и я го­во­рю вам: мы лю­бим вас. У нас есть не­
что боль­шее. Мы зна­ем, что вы там, в пус­той
сер­вер­ной ком­на­те, по­пис­ки­вае­те и ми­гае­те
огонь­ка­ми и ни­ко­гда не спи­те. Мы зна­ем, что
вы го­то­вы и жде­те. Иди­те к нам. <3»
Этим уди­ви­тель­ным фраг­мен­том по­
эзии мы обя­за­ны груп­пе, на­зы­ваю­щей се­
бя masspoem4u, по­се­тив­шей еже­год­ный
Кон­гресс по хао­су в ком­му­ни­ка­ци­ях (Cha­
os Communication Congress) в Гам­бур­ге, Гер­
ма­ния. Они ис­поль­зо­ва­ли ути­ли­т у massscan
(она дос­т уп­на в Github, но об­ра­щай­тесь с ней
ос­то­рож­но — http://bit.ly/Masscan) для рас­
про­стра­не­ния свое­го ма­лень­ко­го об­раз­чика
творче­ст­ва по все­му ми­ру.
Эта идея (столь не­по­хо­жая на обыч­ных
ро­бо­тов и ав­то­ма­ти­зи­ро­ван­ных по­пы­ток
взло­ма, ко­то­рые я обыч­но ви­ж у в лог-фай­
лах) мне по-на­стоя­ще­му по­нра­ви­лась и на­
пом­ни­ла о том, что не­пло­хо бы­ло бы по­пасть
на од­ну та­к ую кон­фе­рен­цию (C3, DEFCON,
HOPE) в бли­жай­шие год-два (увы, C3 про­во­
дит­ся сра­зу по­сле Ро­ж ­де­ст­ва, и се­мья, есте­
ственно, в восторг не придет).
Ин­те­рес­но, мно­го ли дру­гих со­об­ще­ний
в лог-фай­лах или в ис­ход­ном ко­де го­да­ми
ос­та­ют­ся не­за­ме­чен­ны­ми и жа­ж ­дут уви­деть
свет? И сколь­ко еще мел­ких сер­ви­сов спят,
ожи­дая, по­ка кто-то их об­на­ру­жит (со­ве­т ую
пря­мо сей­час на­брать ко­ман­ду telnet towel.
blinkenlights.nl)?
jolyon.brown@gmail.com
46 | LXF208 Апрель 2016
Го­ре­сти SSH
для ад­ми­нов
В кли­ен­тах SSH об­на­ру­жен код «ро­­умин­га»,
ко­то­рый от­прав­ля­ет за­кры­тые клю­чи
на вре­до­нос­ные сер­ве­ры.
В
ян­ва­ре 2016 го­да в ко­де OpenSSH бы­ла вы­
яв­ле­на до­воль­но ту­ман­ная, но не­при­ят­ная
ошиб­ка — из сер­вер­ной час­ти ПО ее дав­но
уда­ли­ли, но она ос­та­лась в кли­ент­ской. Код, об­на­
ру ­жен­ный ком­па­ни­ей Qualys, в не­ко­то­рых слу­ча­ях
по­зво­лял SSH-сер­ве­ру зло­умыш­лен­ни­ка по­хи­щать
за­кры­тые клю­чи кли­ен­та. Это бы­ло воз­мож­но бла­
го­да­ря не­до­ку­мен­ти­ро­ван­ной воз­мож­но­сти SSH —
«ро­умин­г у [Roaming]», ко­то­рая долж­на бы­ла уп­ро­
щать во­зоб­нов­ле­ние вре­мен­но пре­рван­ных се­ан­сов,
ес­ли обе сто­ро­ны это под­дер­жи­ва­ют. Эта ошиб­ка
за­тро­ну­ла все вер­сии кли­ен­та OpenSSH, на­чи­ная
с 5.4, но по­сле об­на­ру­же­ния для нее бы­ст­ро вы­пус­
ти­ли ис­прав­ле­ние. При от­к лю­че­нии не­до­к у­мен­ти­
ро­ван­но­го па­ра­мет­ра UseRoaming no в фай­ле кон­
фи­г у­ра­ции SSH на кли­ен­те (/etc/ssh/ssh_config или
~/.ssh/config) вре­до­нос­ный код от­к лю­ча­ет­ся (Под­
роб­но­сти см. в CVE 2016‑0777 и 2016‑0778). Так­же
не­пло­хо раз­де­лить клю­чи и ис­поль­зо­вать раз­лич­
ные па­р ы для раз­лич­ных хос­т ов (или, на ху­д ой
> OpenSSH — одно из основных средств,
используемых сисадминами, но при этом не стоит
пренебрегать регулярным обновлением (а зато
стоит подкинуть проекту деньжат).
www.linuxformat.ru/subscribe
ко­нец, для раз­лич­ных групп хос­тов). Так­же сто­ит
ис­поль­зо­вать ssh-agent, ус­та­но­вить па­ра­метр Iden­
tityFile для ка­ж ­до­го це­ле­во­го хос­та и до­ба­вить ди­
рек­тив­ный па­ра­метр IdentitiesOnly yes (два по­след­
них па­ра­мет­ра мож­но най­ти в фай­ле .ssh/config).
Дру­гая по­доб­ная ис­то­рия кос­ну­лась уст­ройств
для про­м ыш­л ен­н ой безо­п ас­н о­с ти от ком­п а­н ии
Fortinet — в ста­рых вер­с и­я х про­ши­вок для этих
уст­р ойств бы­л и об­н а­р у ­же­н ы же­с т­ко за­ко­д и­р о­
ван­ные ло­ги­ны SSH. Сис­те­мы, не по­лу­чив­шие ис­
прав­ле­ний, мо­г ут пасть жерт­вой уяз­ви­мо­с ти, об­
на­ро­до­ван­ной не­из­вест­ны­ми ли­ца­ми, ко­то­рых изо
всех сил вы­ша­ри­ва­ют раз­лич­ные ав­то­ма­т и­зи­ро­
ван­ные скрип­т ы. Эти ло­г и­ны, по­хо­же, ос­т а ­лись
от ка­ко­го-то ме­ха­низ­ма управ­ле­ния ау ­тен­ти­фи­ка­
ци­ей и бы­ли уда­ле­ны в бо­лее но­вых вер­си­ях про­
ши­в ок. Эта про­б ле­м а дос­т а­в и­л а не­п ри­я т­н о­с ти
Juniper, ко­то­рый пре­тер­пел не­ав­то­ри­зо­ван­ные из­
ме­не­ния в ко­де, от­крыв­шие не­сколь­ко ла­зе­ек: од­на
из них — это же­ст­ко за­ко­ди­ро­ван­ный па­роль, дру­
гая — бо­лее тон­кая про­бле­ма, ко­то­рая вклю­ча­ет
ис­поль­зо­ва­ние Dual EC DRBG (крип­то­гра­фи­че­­ски
стой­ко­го ге­не­ра­то­ра слу­чай­ных чи­сел) АНБ. Ис­сле­
до­ва­те­ли об­ви­ни­ли этот ал­го­ритм в том, что он раз­
ре­шал дос­та­точ­но ум­но­му зло­умыш­лен­ни­к у про­
слу­ши­вать за­шиф­ро­ван­ный се­те­вой тра­фик. LXF,
как все­гда, со­ве­т у­ет опе­ра­тив­но ус­та­нав­ли­вать ис­
прав­ле­ния и поль­зо­вать­ся прин­ци­пом наи­мень­ших
при­ви­ле­гий, ко­гда де­ло ка­са­ет­ся от­кры­ва­ния пор­
тов для се­те­во­го тра­фи­ка.
Со­ве­ты мис­те­ра Брауна
Rancher: Ваш лич­ный сер­вис
контей­не­ров
Сле­ду­ет при­знать: при­ме­не­ние ин­фра­струк­тур с кон­тей­не­ра­ми ско­ро бу­дет
повсе­ме­ст­ным. Ва­ше бре­мя об­лег­чит Rancher.
Я
пе­рио­ди­че­­ски пи­сал о кон­тей­не­рах (в CoreOS с Kubernetes)
на свя­щен­ных стра­ни­ц ах это­го жур­на ­ла, од­но­вре­мен­но
сле­дя за тем, не уто­ми­ли ли кон­тей­не­ры вас, до­ро­гие чи­
та­те­ли (вас обо­их). Но я не бу­ду из­ви­нять­ся за то, что в этом го­ду
кон­тей­не­ров на этих стра­ни­цах ста­нет еще боль­ше. В этой руб­ри­ке
я в ос­нов­ном пи­шу про то, с чем я сам стал­ки­ва­юсь в сво­ей ра­бо­те
кон­суль­тан­та по­след­ние ме­ся­цев шесть — а ста ­ло быть, это по­пу­
ляр­но на рын­ке, и ин­фор­ма­ция о вос­тре­бо­ван­ных зна­ни­ях долж­на
быть по­лез­ной. На дан­ный мо­мент ра­бо­та с кон­тей­не­ра­ми за­ни­ма­ет
не ме­нее 50 % мо­их оп­ла­чи­вае­мых ра­бо­чих ча­сов в ме­сяц.
Эта сфе­ра ин­те­рес­на боль­шим чис­лом про­ис­хо­дя­щих в ней из­
ме­не­ний, и боль­шой влия­тель­но­стью в ней от­кры­то­го ПО. В на­ча­ле
мо­ей карь­е­ры слож­но бы­ло бы пред­ста­вить се­бе ту сво­бо­ду и воз­
мож­но­сти, ко­то­рые сей­час есть у ад­ми­ни­ст­ра­то­ров, ко­гда де­ло ка­
са­ет­ся соз­да­ния ин­фра­струк­т у­ры. В этой сфе­ре есть боль­шая кон­
ку­рен­ция, и по-мо­ему, это хо­ро­шо, осо­бен­но по­то­му, что боль­шая
ее часть про­ис­хо­дит от­кры­то и в ре­зуль­та­те ис­ход­ный код ста­но­вит­
ся дос­т у­пен всем нам. Бу­дет ин­те­рес­но взгля­нуть, смо­жет ли ка­който по­став­щик ПО с за­кры­тым ис­ход­ным ко­дом во­об­ще вой­ти на этот
ры­нок. Од­на из ком­па­ний и групп в этой сфе­ре — Rancher, и их про­
грамм­но­му обес­пе­че­нию я по­свя­щу не­сколь­ко сле­дую­щих ста­тей.
На ран­чо
Rancher — про­грамм­ная плат­фор­ма с от­кры­тым ко­дом, ко­то­рая
реа­ли­зу­ет спе­циа­ли­зи­ро­ван­ную ин­фра­струк­т у­ру для за­пус­ка кон­
тей­не­ров в ра­бо­чей сре­де. Кон­тей­не­ры пре­крас­но под­хо­дят для бы­
ст­ро­го и вос­про­из­во­ди­мо­го раз­вер­ты­ва­ния служб, но не за­щи­ще­ны
от тех же ог­ра­ни­че­ний пла­ни­ро­ва­ния, ко­то­рые свой­ст­вен­ны бо­лее
тра­ди­ци­он­ным мо­де­лям. Ко­неч­но, вы­бро­сить «чис­тые» эк­зем­п­ля­ры
Docker из об­ла­ка, не за­бо­тясь о том, где они ока­ж ут­ся, весь­ма при­
вле­ка­тель­но, но над лю­бой ин­фра­струк­т у­ра дол­жен быть кон­троль,
хо­тя бы для то­го, что­бы со­хра­нить рас­су­док бе­до­ла­... в смыс­ле, сис­
тем­но­го ад­ми­ни­ст­ра­то­ра, ко­то­рый за ней при­смат­ри­ва­ет.
Как и ряд ана­ло­гов, Rancher це­лит­ся на этот ры­нок, по­вы­шая
цен­ность кон­тей­не­ров Docker. Про­ект со­сто­ит из двух эле­мен­тов/
про­д ук ­тов: Rancher, ко­то­рый от­ве­ча­ет за ор­ке­ст­ра­цию ком­по­нен­
тов (это глав­ная часть пред­ло­же­ния), и RancherOS, мак­си­маль­но
уре­зан­но­го ди­с т­ри­бу­ти­ва Linux, чис­то для за­пус­ка кон­тей­не­ров
Docker (от­сю­да очень боль­шое сход­ст­во, на­при­мер, с CoreOS). Од­
на­ко Rancher мо­жет и сам ра­бо­тать на лю­бой це­ле­вой плат­фор­мой
с Linux (ес­ли она по­тя­нет Docker). Эти два эле­мен­та су­ще­ст­ву­ют от­
дель­но друг от дру­га, но ре­ко­мен­д у­ет­ся, ко­неч­но за­пус­кать Ran­
cherOS как часть раз­вер­ты­ва­ния Rancher. Сам Rancher мож­но за­
пус­кать в RancherOS.
RancherOS «ве­сит» око­ло 30 МБ. Этот кро­шеч­ный раз­мер объ­яс­
ня­ет­ся тем, что из сис­те­мы уда­ли­ли всё, кро­ме ос­нов, но ос­та­ви­ли
воз­мож­ность за­пус­ка Docker. Мне нра­вит­ся, ко­гда ус­та­нов­ка сер­ве­
ра име­ет ми­ни­мум воз­мож­но­стей для ата­ки лю­бы­ми по­тен­ци­а ль­
ны­ми зло­умыш­лен­ни­ка­ми, и этот ва­ри­ант я на­хо­ж у до­воль­но при­
вле­ка­тель­ным. На са­мом де­ле, сто­ит вы­пол­нить ко­ман­ду ls -l для
ка­та­ло­га /usr/bin, и мы уви­дим ос­но­ву RancherOS — Busybox. Все
в RancherOS пред­став­ля­ет со­бой кон­тей­не­ры Docker, вклю­чая все
из­вест­ные про­цес­сы, ко­то­рые вы ожи­дае­те най­ти в Linux. При этом
в сис­те­ме нет init или Systemd — их за­ме­ни­ли на то, что в Rancher
на­зы­ва­ет­ся «сис­тем­ным Docker», де­мо­ном docker, за­пу­щен­ным
с иден­ти­фи­ка­то­ром про­цес­са 1. Он, в свою оче­редь, за­пус­ка­ет спе­
ци­а ль­ный кон­тей­нер под на­зва­ни­ем user-docker, с ко­то­рым мы бу­
дем со­труд­ни­чать при за­пус­ке соб­ст­вен­ных кон­тей­не­ров. Он так­же
соз­да­ет хо­ро­ший уро­вень изо­ля­ции и по­зво­ля­ет из­бе­жать влия­ния
на сис­тем­ные сер­ви­сы слиш­ком ак­тив­но­го поль­зо­ва­те­ля.
Rancher — са­мая ве­со­мая и са­мая яр­кая часть па­ке­та, ко­то­рая
де­ла­ет эту сис­те­му дос­той­ной вни­ма­ния. Обе­ща­но, что Rancher мо­
жет управ­лять хос­та­ми кон­тей­не­ров и сле­дить за ни­ми, где бы они
ни на­хо­ди­лись. Rancher ис­поль­зу­ет при­ват­ную сеть, за­пус­кае­мую
> Начальное окно
Rancher — обратите
внимание на то, что
при первом входе
пользователи
должны настроить
защиту системы.
Как на­стро­ить RancherOS?
RancherOS ис­поль­зу­ет для на­строй­ки cloud-config,
ути­ли­т у, ко­то­рая яв­ля­ет­ся до­воль­но рас­про­стра­
нен­ным стан­дар­том в Linux и обыч­но рас­по­зна­ет­ся
при за­пус­ке под ­дер­жи­ваю­щим ди­ст­ри­бу ­ти­вом.
Ее фай­лы на­хо­д ят­ся в ка­та­ло­ге /var/lib/rancher/
conf/. Но для из­ме­не­ния этой кон­фи­г у­ра­ции ре­ко­
мен­д у­ет­ся за­пус­тить ко­ман­д у ros: на­при­мер, $ sudo
ros config export вы­ве­дет те­к у­щ ую кон­фи­г у­ра­цию
в ко­манд­ную стро­к у. Ес­ли до­ба­вить к этой ко­ман­
де флаг --full, вы­ве­дет­ся еще боль­ше ин­фор­ма­ции
(внеш­ние и внут­рен­ние на­строй­ки), на­при­мер,
на­строй­ки system-docker и т. п. Фор­мат кон­фи­г у­ра­
ции cloud-config — YAML, и по­это­му он до­воль­но
лег­ко вос­при­ни­ма­ет­ся че­ло­ве­ком. Все па­ра­мет­ры
име­ют ключ ‘rancher’, ко­то­рый ros мо­жет на­страи­
вать с по­мо­щью под­ко­манд set и get. На­при­мер,
про­смот­реть DNS для хос­та мож­но ко­ман­дой
$ sudo ros config get rancher.network.dns.
nameservers
А на­зна­чить дру­гой — ко­ман­дой
$ sudo ros config set rancher.network.dns.
nameservers [8.8.4.4, 8.8.8.8]
www.linuxformat.ru/subscribe
Ко­ман­да ros так ­же мо­жет ис­поль­зо­вать­ся
для об­нов­ле­ний RancherOS с по­мо­щью ко­манд
$ sudo ros os list, ко­то­рая вы­во­дит дос­т уп­ные
вер­сии, и $ sudo ros os upgrade, ко­то­рая об­нов­
ля­ет ее до но­вой вер­сии. Это до­воль­но удоб­но
при вы­хо­де но­вых об­нов­ле­ний!
Но обыч­но фай­лы cloud-config бу­д ут соз­да­вать­ся
ав­то­ма­ти­че­­ски, ко­гда вы ос­вои­тесь с RancherOS, по­
сле че­го их нуж­но за­гру­зить в ros (для им­пор­та ис­
поль­зу­ет­ся па­ра­метр -i). На­страи­вае­мых па­ра­мет­ров
мно­го; все они опи­са­ны на http://docs.rancher.com.
Апрель 2016 LXF208 | 47
Со­ве­ты мис­те­ра Брау­на
> К сча­стью, до­ба­
вить поль­зо­ва­те­лей
в Rancher про­ще
про­сто­го. Дос­туп­ны
не­сколь­ко ви­дов
ау­тен­ти­фи­ка­ции,
вклю­чая лю­би­мый
кор­по­ра­тив­ны­ми
поль­зо­ва­те­ля­ми
Active Directory.
ме­ж ­ду кон­тей­не­ра­ми ло­каль­но (ме­ж ­ду раз­лич­ны­ми хос­та­ми) или,
при не­об­хо­ди­мо­сти, в дру­гой об­лач­ной ин­фра­струк ­т у­ре (для чего
применя­ют­ся тун­не­ли IPsec). Rancher пре­дос­тав­ля­ет об­на­ру­же­ние
сер­ви­сов че­рез DNS, бла­го­да­ря ко­то­ро­му кон­тей­не­ры мо­г ут со­об­
щить о сво­ей дос­т уп­но­сти при за­пус­ке сис­те­мы. Встрое­на так­же
функ­ция ба­лан­си­ров­ки на­груз­ки на ба­зе HAproxy (од­ной из мо­их
лю­би­мых от­кры­тых про­грамм), ко­то­рая своей про­сто­той на­строй­ки
и ис­поль­зо­ва­ния очень на­по­ми­на­ет мне эла­стич­ный ба­лан­си­ров­щик
на­груз­ки от Amazon. Тот, в свою оче­редь, ис­поль­зу­ет сред­ст­ва мо­ни­
то­рин­га ра­бо­то­спо­соб­но­сти кон­тей­не­ров, спо­соб­ные вы­пол­нять за­
да­чи по об­слу­жи­ва­нию в сти­ле Kubernetes, га­ран­ти­руя, что в лю­бой
мо­мент за­пу­ще­но нуж­ное ко­ли­че­­ст­во ра­бо­то­спо­соб­ных сер­ви­сов.
Это вклю­ча­ет обыч­ные пра­ви­ла по­до­бия и раз­ли­чия (не за­пус­кайте
все сер­ви­с ы од­но­го ти­па на од­ном хос ­те!). А са ­м ое глав­н ое —
в плат­фор­му встрое­ны пла­ваю­щие ре­ли­зы, и Rancher сам раз­во­
ра­чи­ва­ет но­вые ре­ли­зы про­грамм­но­го обес­пе­че­ния и пе­ре­на­прав­
ля­ет тра­фик на них. Он так ­же от­ка­ты­ва­ет из­ме­не­ния, ес­ли в но­вых
ре­ли­зах об­на­ру ­жи­ва­ют­ся ошиб­ки. За по­след­нее де­ся­ти­ле­тие я по­
тра­тил уй­му вре­ме­ни на та­кие ве­щи с раз­ной сте­пе­нью ав­то­ма­ти­за­
ции (а по­рой и без нее), и эта функ­ция для ме­ня — про­сто бом­ба!
На­ко­нец, Rancher пред ­ла­га­ет воз­мож­ность управ­ле­ния хра­ни­ли­
щем, вклю­чая соз­да­ние сним­ков то­мов. По мо­ему опы­т у, с управ­ле­
ни­ем то­ма­ми в Docker у ко­манд раз­ра­бот­чи­ков час­то быва­ют слож­
но­сти из-за тре­бо­ва­ния пер­си­стент­но­сти дан­ных, то есть это шту­ка
по­лез­ная. И всё это мож­но де­лать че­рез web-ин­тер­фейс или в ко­
манд­ной стро­ке! По­ра за­пус­тить всё это и по­про­бо­вать.
Rancher в Vagrant и в RancherOS...
В та­кие вре­ме­на я по­ни­маю, что опе­ра­ци­он­ные сис­те­мы ста ­ли по­
хо­ж и на «пло­ский мир» ве ­ли­ко­го Тер­ри Прат ­чет ­т а, увы, не­д ав­
но умер­ше­го. Вме­с то дис­ка, рас­по­ло­жен­но­го на спи­не у сло­нов,
стоя­щих на че­ре­па ­хе, мы вос­поль­зу­ем­ся Vagrant для за­пус­ка Ran­
cherOS, а за­тем вос­поль­зу­ем­ся его служ­ба­ми Docker для за­пус­ка
Rancher. На­де­юсь, ана ­ло­гия бы­ла бо­лее-ме­нее удач­ной. Ес­ли нет,
бо­ять­ся не­че­го: мы кло­ни­ру­ем ре­по­зи­то­рий (ре­по­зи­то­рии) Vagrant,
пре­дос­тав­лен­ные раз­ра­бот­чи­ка­ми (что­бы это ра­бо­та ­ло, Vagrant
нуж­но ус­та­нав­ли­вать, на­при­мер, вме­сте с VirtualBox. Ин­ст­рук­ции
см. на www.vagrantup.com).
$ git clone https://github.com/rancher/os-vagrant.git
$ cd os-vagrant
$ vagrant up
$ vagrant ssh
По­сле это­го мы под­к лю­чим­ся к но­вой вир­т у­а ль­ной ма­ши­не ran­
cheros. RancherOS под­дер­жи­ва­ет толь­ко поль­зо­ва­те­ля с име­нем
rancher. Мы мо­жем взгля­нуть на вы­ше­упо­мя­ну ­тые сис­тем­ные про­
цес­сы Docker, вы­пол­нив ко­ман­ды
$ sudo system-docker ps
$ sudo system-docker images
$ ps aux | grep docker
Они по­ка ­ж ут за­пу­щен­ные по умол­ча­нию кон­тей­не­ры (на­при­
мер, ntp, syslog) и вы­ве­дут спи­сок всех об­ра­зов, дос­т уп­ных для ис­
поль­зо­ва­ния ОС при не­об­хо­ди­мо­сти (во вре­мя за­груз­ки). Ко­ман­да
ps по­ка­жет три про­цес­са, имею­щие от­но­ше­ние к Docker, хо­тя они
мо­г ут не­мно­го оза­да­чить. Но не вол­нуй­тесь, user-docker — это про­
сто ро­ди­тель­ский про­цесс де­мо­на none system-docker docker (по­
про­буй­те про­из­не­сти это по­сле не­сколь­ких кру ­жек пи­ва).
За­пус­тить Rancher на на­шей вир­т у­а ль­ной ма­ши­не RancherOS
не­труд­но (хо­тя и за­груз­ка, ини­ции­ро­ван­ная сле­дую­щей ко­ман­дой,
зай­мет не­ко­то­рое вре­мя):
$ sudo docker run -d --restart=always -p 8080:8080 rancher/server
Оп­ре­де­ли­те IP-ад­рес, на­зна­чен­ный ва­шей вир­т у­а ль­ной ма­ши­не
Vagrant (ко­ман­дой $ ip addr show), и за­тем от­крой­те его в брау­зе­ре
с пор­том 8080. Вы уви­ди­те на­чаль­ное ок­но Rancher. Об­ра­ти­те вни­
ма­ние на вос­к ли­ца­тель­ный знак над ме­ню ау­ди­та. Он ука­зы­ва­ет,
что по умол­ча­нию в сис­те­ме раз­ре­шен дос­т уп без ау ­тен­ти­фи­ка­ции.
По­это­му пер­вым де­лом я ус­та­нов­лю же­лае­мые па­ра­мет­ры ау ­тен­
ти­фи­ка­ции. К сча­стью (этот во­прос все­гда за­да­ют кор­по­ра­тив­ные
поль­зо­ва­те­ли), Rancher под­дер­жи­ва­ет Active Directory и OpenLDAP
в ка­че­­с т­ве внеш­них оп­ций кон­тро­ля дос­т у­па. Так­же мож­но вос­
поль­зо­вать­ся GitHub, что для не­ко­то­рых групп раз­ра­бот­чи­ков бу­дет
бо­лее ес­те­ст­вен­ным вы­бо­ром. Мож­но на­стро­ить и ста­рый до­б­рый
ло­каль­ный дос­т уп, что я и сде­лаю. На вы­бор это­го ва­ри­ан­та и до­
бав­ле­ние поль­зо­ва­те­ля (пер­вый поль­зо­ва­тель по умол­ча­нию ста­
но­вит­ся ад­ми­ни­ст­ра­то­ром) долж­на уй­ти па­ра се­к унд.
В ниж­ней пра­вой час­ти ок­на есть ме­ню Download CLI [За­гру­зить
кли­ент для ко­манд­ной стро­ки]. Это удоб­но, и при вы­бо­ре это­го ме­
ню от­кры­ва­ют­ся ва­ри­ан­ты для Linux, Windows и OS X. При ис­к лю­
че­нии двух не­дос­той­ных и вы­бо­ре един­ст­вен­но пра­виль­ной опе­
ра­ци­он­ной сис­те­мы на мой ло­каль­ный ра­бо­чий стол за­гру­жа­ет­ся
ути­ли­та rancher-compose. Я вос­поль­зу­юсь ею че­рез ме­сяц, ко­гда
по­ка­ж у вам ин­фра­струк­т у­ру на ос­но­ве Rancher, об­нов­ле­ния служб
в ре­а ль­ном вре­ме­ни и мно­гое дру­гое!
Как до­ба­вить свой пер­вый хост?
Пред­варяя сле­д ую­щий урок, я хо­чу бы­ст­ро до­ба­
вить в мою ин­фра­струк­т у­ру хост с са­мим Rancher.
По на­жа­тию кноп­ки Add Host [До­ба­вить хост] от­
кро­ет­ся спи­сок дос­т уп­ных об­лач­ных про­вай­де­ров,
но для этой ло­каль­ной кон­фи­г у­ра­ции я вы­бе­ру
Custom [Поль­зо­ва­тель­ский]. Ес­ли, на­строив дос­
ту­п, я не вый­д у из сис­те­мы и вер­нусь в ин­тер­фейс
поль­зо­ва­те­ля, мо­жет поя­вить­ся пре­д у­пре­ж ­де­ние
о дос­тижимости IP-ад­реса; здесь его мож­но про­
иг­но­ри­ро­вать. На хос­те, ко­то­рый я хо­чу до­ба­вить
к сво­ей ин­фра­струк­т у­ре Rancher, на­до из ин­тер­фей­
са поль­зо­ва­те­ля ско­ман­довать... в мо­ем слу­чае —
48 | LXF208 Апрель 2016
sudo docker run -d --privileged -v /var/run/docker.sock:
/var/run/docker.sock rancher/agent:v0.8.2 http://
172.19.8.101:8080/v1/scripts/<extremely long string>
Од­на­ко в до­к у­мен­та­ции к Rancher ука­за­но,
что мне следует до­ба­вить к этой ко­ман­де
-e CATTLE_AGENT_IP=<server_ip> — то есть
для ко­ман­ды вы­ше строка бу­дет такой:
-e CATTLE_AGENT_IP=172.19.8.101.
Я за­пус­тил эту ко­ман­д у в сво­ем се­ан­се SSH
Vagrant, и по­сле ее вы­пол­не­ния ком­пь­ю­тер из­влек
кон­тей­нер Docker с име­нем rancher/agent. По­сле
че­го я на­жал Close [За­крыть] в web-ин­тер­фей­се,
www.linuxformat.ru/subscribe
са­мую ма­лость по­до­ж ­дал, и хост поя­вил­ся
в мо­ем спи­ске.
‘Cattle [Скот]’ — это от­сыл­ка к тер­ми­ну «До­маш­
ние жи­вот­ные и скот [Pets and Cattle]» из эпо­хи
об­лач­ных вы­чис­ле­ний, ко­то­рый раз­де­ля­ет сис­те­мы
на две ка­те­го­рии. Pets — это сис­те­мы, ко­то­рые
при их «за­бо­ле­ва­нии» вы «ле­чи­те». Cattle — сис­
те­мы, ко­то­рые про­ще убить и за­ме­нить но­вы­ми
(и в эту ка­те­го­рию по­па­да­ют боль­шин­ст­во кон­тей­
не­ров). Rancher [хо­зя­ин ран­чо] — не­пло­хое имя для
сис­те­мы, управ­ляю­щей ог­ром­ным ко­ли­че­­ст­вом
од­но­ра­зо­вых кон­тей­не­ров.
Со­ве­ты мис­те­ра Брауна
Let’s Encrypt — SSL для всех
За­шиф­ру­ем всё под­ряд! За­щи­ти­те тра­фик на свой сайт бес­плат­ным
SSL-сер­ти­фи­ка­том и сде­лай­те это из ко­манд­ной стро­ки!
А
нон­си­ро­ван­ный в кон­це 2014 г. про­ект Let’s Encrypt в де­
каб­ре 2015 г. на­ко­нец пе­ре­шел в ста­дию бе­та, и это оз­на­
ча­ет, что для его ис­поль­зо­ва­ния боль­ше не нуж­ны при­
гла­ше­ния. Это «бес­п лат­ный, ав­то­ма­т и­зи­ро­в ан­ный и от­к ры­т ый
центр сер­ти­фи­ка­ции (CA)», ко­то­рый за­пус­ка­ет­ся ис­к лю­чи­тель­но
для поль­зы об­ще­ст­ва.
Под ­дер­жи­вае­мый сре­ди про­чих Linux Foundation, дан­ный про­
ект ка­жет­ся фан­та­сти­че­­ским пред­ло­же­ни­ем — ведь это бес­плат­
ные до­в е­р ен­н ые сер­т и­ф и­к а­т ы (все, кто рань­ш е пла­т ил за них
сот­ни фун­тов, по­мор­щат­ся). А глав­ное, про­ект обе­ща­ет из­бав­ле­
ние от бю­ро­кра­тии при по­лу­че­нии сер­ти­фи­ка­та — вы ко­гда-ни­
будь про­бо­ва­ли по­л у­чить сер­т и­фи­к ат, ра­бо­т ая в боль­шой ком­
па­нии? Идея со­сто­ит в том, что та­кой центр сер­ти­фи­ка­ции бу­дет
со­вме­с т­ной ини­ц иа­т и­вой, от ко­т о­рой вы­иг­р а­е т бо­лее ши­ро­кое
ин ­т ер­н ет-со­о б­щ е­с т ­в о и ко­т о­р ая при этом не по­п а ­д ет под кон­
троль ни од­ной ор­га­ни­за­ции (по ана­ло­гии с ин­тер­нет-про­то­ко­ла­
ми ниж­не­го уров­ня).
Сле­ду­ет при­знать, что се­го­дня от­сут­ст­вие SSL на сай­те вы­гля­
дит ди­ле­тант­ски — по­это­му вас мо­жет не­мно­го уди­вить то, что
у ме­ня есть не­сколь­ко та­ких сай­тов. Не­ко­то­рые из них — не­боль­
шие пер­со­наль­ные сай­ты, ко­то­рые я со­дер­ж у для дру­гих за так,
дру­гие — сай­ты со­об­ществ, ко­то­рые я со­дер­ж у за так (по­ра за­ду­
мать­ся, не мно­говато ли я де­лаю за так). Но как это ра­бо­та­ет?
Хо­тя ус­та­нов­ка сер­ти­фи­ка­та для web-сер­ве­ра ни­ко­гда не бы­ла
слиш­ком слож­ной за­да­чей, она вклю­ча­ет, на­при­мер, из­ме­не­ние ди­
рек­тив Apache. Ока­зы­ва­ет­ся, не всем нра­вит­ся ре­дак­ти­ро­вать тек­
сто­вые фай­лы с дан­ной це­лью (эта­кое ко­щун­ст­во!). Боль­шин­ст­во
лю­дей про­сто хо­чет, что­бы что-то ра­бо­та­ло. В про­ек ­те этот про­цесс
уп­ро­ща­ет­ся до за­пус­ка не­сколь­ких ко­манд; кро­ме то­го, воз­мож­но
ав­то­ма­ти­че­­ски об­нов­лять сер­ти­фи­ка­ты та­ким же об­ра­зом. (До­ро­
гие си­сад­ми­ны, по­жа­луй­ста, под­ни­ми­те ру­ки те из вас, ко­го ни­ко­
гда не за­ста­ва ­ло врас­плох со­об­ще­ние об ис­те­че­нии сро­ка дей­ст­вия
сер­ти­фи­ка­та? Ах, вы? Вре­те.)
> Не­сколь­ко па­ра­мет­ров Curses — всё, что вам нуж­но, что­бы за­щи­тить тра­фик сво­их
по­се­ти­те­лей от пе­ре­хва­та.
сер­ти­фи­ка­ции с по­мо­щью крип­то­гра­фии с от­кры­тым клю­чом. По­
сле это­го центр сер­ти­фи­ка­ции про­сит аген­та, на­при­мер, по­мес­тить
файл ту­да, где он бу­дет дос­т у­пен цен­тру сер­ти­фи­ка­ции, и вы­пол­
няет не­сколь­ко за­про­сов под­пи­си. По­сле их под­твер­ж де­ния агент
мо­жет за­про­сить сер­ти­фи­кат и ус­та­но­вить его.
В бу­ду­щем ожи­да­ет­ся вы­пуск па­ке­тов для раз­лич­ных ди­ст­ри­
бу ­ти­вов, а сей­час дос­т у­пен ре­по­зи­то­рий letsencrypt. Пер­вый шаг —
кло­ни­ро­вать ре­по­зи­то­рий git и за­пус­тить ко­ман­ду letsencrypt-auto:
$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto --apache -d <your domain name>
Эта ко­ман­да на­строи­ла для ме­ня раз­лич­ные за­ви­си­мо­сти (за­
про­сив па­роль sudo), что за­ня­ло не­ко­то­рое вре­мя. Бы­ло ус­та­нов­
ле­но до­воль­но мно­го па­ке­тов (openssl и ему по­доб­ные), по­это­му
про­тес­ти­руй­те это, ес­ли ра­бо­тае­те в сре­де, где до­бав­ле­ние па­ке­
В об­щих чер­тах, за­да­ча со­сто­ит в том, что­бы web-сер­вер до­ка­зал тов мо­жет вы­звать про­бле­мы. На эта­пе на­строй­ки я так­же по­лу­чил
цен­тру сер­ти­фи­ка­ции Let’s Encrypt, что на нем на­хо­дит­ся тот сайт не­сколь­ко пре­ду­пре­ж ­де­ний (из-за от­сут­ст­вия не­ко­то­рых биб­лио­
и на том до­ме­не, для ко­то­ро­го был на­прав­лен за­прос. Для это­го тек, ко­то­рые бы сде­ла­ли TLS бо­лее безо­пас­ным).
на web-сер­ве­ре за­пус­ка­ет­ся агент, ко­то­рый свя­зы­ва­ет­ся с цен­тром
За­тем на­до на­стро­ить не­сколь­ко па­ра­мет­ров че­рез ин­тер­фейс
Curses (кон­такт­ный ад­рес элек­трон­ной поч­ты и вклю­
че­ние обо­их про­то­ко­лов HTTP и HTTPS), и скрипт за­
вер­шит­ся, за­пи­с ав не­сколь­ко клю­чей в ло­каль­ный
ка­та­лог (их оп­ре­де­лен­но сто­ит со­хра­нить, так как они
по­т ре­бу­ют­с я для об­нов­ле­ний). Моя кон­фи­г у­ра­ц ия
Apache об­но­ви­ла пу­ти к но­вым сер­ти­фи­ка­там, и ко­
гда я от­крыл свой тес­то­вый сайт, в ад­рес­ной стро­ке
брау­зе­ра поя­вил­ся за­мок. По­лу­чи­лось!
Ис­пор­тив фай­лы кон­фи­г у­ра­ции (во мно­гом из-за
сквер­но­го зна­ния Apache), я ухит­рил­ся сло­мать свой
сайт, но по­втор­но за­пус­тил ко­ман­д у letsencrypt-auto
и смог вос­ста­но­вить свои на­строй­ки (та­ким же об­ра­
зом мож­но вос­ста­но­вить сер­ти­фи­кат, при­чем ко­ли­
че­­ст­во вос­ста­нов­ле­ний в не­де­лю ог­ра­ни­че­но). Те­перь
я со­би­ра­юсь за­щ и ­т ить все свои сай ­т ы. Воз­мож ­но,
всем это де­лать со свои­ми сай­та­ми не обя­за­тель­но,
> Let’s Encrypt — про­ект, мис­си­ей ко­то­ро­го яв­ля­ет­ся за­щи­та тра­фи­ка по все­му
Ин­тер­не­ту с сер­ти­фи­ка­та­ми, дос­туп­ны­ми по ко­ро­лев­ской це­не в £ 0,00.
но Let’s Encrypt — под ­лин­ное дос­ти­же­ние. |
Как это ра­бо­та­ет
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 49
Учебники
Наши эксперты помогут вам с любым приложением Linux!
ЕВГЕНИЙ БАЛДИН
Подтвердивший
свою квалификацию
физик.
В этом ме­ся­це вы на­у­чи­тесь…
ПК вам
в по­мощь
Я мо­г у ри­со­вать, как Ра­фа­эль,
но мне по­на­до­бит­ся вся жизнь,
что­бы нау­чить­ся ри­со­вать так,
как ри­су­ет ре­бе­нок
Паб­ло Пи­кас­со
М
а­ло кто из лю­дей уме­
ет хо­ро­шо ри­со­вать.
В смыс­ле — ри­со­вать
так, чтобы на это смот­рели с уми­ле­
ни­ем от­нюдь не толь­ко близ­кие и од­
но­вре­мен­но лю­бя­щие род­ст­вен­ни­ки.
По­хо­же, у кри­во­ру­ко­го большин­ст­ва
на ули­це празд­ник — или хотя бы по­
тен­ци­а ль­ный по­вод по­меч­тать.
Алекс Шам­пан­дар [Alex Cham­
pandard] вы­ло­жил на Github все­го-то
500-­ст­роч­ный скрипт doodle.py (па­
кет neural-doodle, ли­цен­зия ти­па
BSD). Те­перь лю­бой уме­ющий ри­со­
вать в гра­фи­че­­ском ре­дак­то­ре «ка­
ра­к у­ли», применяя три-че­ты­ре цве­та,
мо­жет пре­об­ра­зо­вать их во впол­не
се­бе ху­до­же­ст­вен­ные про­из­ве­де­ния.
Осо­бен­но не­пло­хо получается прики­
нуть­ся им­прес­сио­ни­стом. Ал­го­ритм
из­ло­жен в ста­тье Semantic Style
Trans­fer and Turning Two-Bit Doodles
into Fine Artwork, вы­ложен­ной в до­с­
туп на arxiv.org под № 1603.01768.
Ес­те­ст­вен­но, это не зна­чит, что
ху­дож­ни­кам нуж­но сроч­но ме­нять
про­фес­сию. За­то по­яв­ля­ет­ся новая
воз­мож­ность соз­дать при­ят­ные для
гла­за цве­то­вые пя­тна, те­перь дос­т уп­
ная бо­лее ши­ро­ко­му чис­лу лю­дей,
вклю­чая и ху­дож­ни­ков. Со вре­ме­нем
чис­ло по­доб­ных ин­ст­ру­мен­тов бу­
дет рас­ти, но это не зна­чит, что ком­
пь­ю­тер мо­жет за­ме­нить че­ло­ве­ка
аб­со­лют­но, хоть в го он его уже
и обы­грал. Дол­жен же кто-ни­будь
ри­со­вать «ка­ра­к у­ли».
E.m.Baldin@inp.nsk.su
Сор­ти­ро­вать
стро­ки ����������� 52
При­кла­ды­вать­ся
к икон­кам ������ 56
За­гру­жать
ком­пь­ю­тер ����� 58
Ста­вить
па­ке­ты ���������� 62
По­ря­док дол­жен быть
во всем! Но то­гда на­до это
всё рас­сор­ти­ро­вать, чем
и за­нял­ся Дмит­рий Пан­те­
леи­чев с помощью ключе­
вых утилит.
Ник Пирс пе­ре­ме­ща­ет
и мас­шта­би­ру­ет икон­ки
всяческими способами,
что­бы взгляд на эк­ран
сра­зу вы­хва­ты­вал самое
глав­ное.
Вы на­жа­ли кноп­к у Пуск,
со­би­ра­ясь по­ра­бо­тать, и...
ни­че­го не про­ис­хо­дит. Ско­
рее обращайтесь к Ни­к у
Пир­су! Он разберется
с этой неприятностью.
Ди­ст­ри­бу ­тив со сколь­зя­
щи­ми ре­ли­за­ми, ко­неч­но,
об­нов­ля­ет сам се­бя,
но Ней­лу Бот­ви­к у это­
го ма­ло — он до­бы­ва­ет
па­ке­ты че­рез Portage.
Уз­на­вать
под­роб­но­сти �� 64
Ана­ли­зи­ро­вать
дан­ные ���������� 68
Ра­бо­тать
с шар­да­ми ����� 72
На­би­рать
но­ме­ра ���������� 76
Как по­лу­чить дан­ные
о не­ис­прав­ной сис­те­ме,
ес­ли она за­щи­ще­на па­ро­
лем? Ути­ли­та Джейм­са
Хан­та так­тич­но обо всем
повыс­про­сит.
Мы го­во­рим — Боль­
шие Дан­ные, под­ра­
зу­ме­ва­ем — Hadoop.
Ра­фик Рех­ман зна­ко­мит
вас с этой зна­ме­ни­той
сис­те­мой.
Что та­кое «шард», вам
по­ра знать из пре­ды­д у­щих
но­ме­ров жур­на ­ла (и в этом
номере тоже есть поясне­
ние), а Ла­да Ше­ры­шо­ва
рас­ска ­жет даль­ней­шее.
Мак­сим Че­ре­па­нов за­вер­
ша­ет се­рию своих ста­
тей по IP-те­ле­фо­нии под­
го­тов­кой ди­а л­пла­на
и тренингом веж ­ли­во­го
ав­то­от­вет­чи­ка.
И новичкам, и гуру!
Всегда полезно будет познать
нечто доселе неведомое
Ско­рень­ко о Swift ��������������������� 80
Управ­ля­ем MongoDB ����������������� 84
Крат­кое вве­де­ние в Swift и его воз­мож­но­сти от Ми­ха­
ли­са Цу­ка­ло­са даст вам пред­став­ле­ние об этом
от­кры­том язы­ке про­грам­ми­ро­ва­ния.
Ми­ха­лис Цу­ка­лос обу­ча­ет ад­ми­ни­ст­ри­ро­ва­нию
рас­пре­де­лен­ных баз дан­ных, по­пут­но соз­да­вая
их ре­п­ли­ки.
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 51
Азы сис­те­мы Ос­ваи­ва­ем ути­ли­ты, не­об­хо­ди­
мые вам для пол­но­цен­ной ра­бо­ты на Linux-ПК
ЧАСТЬ 5
GNU Core Utilities
Дмит­рий Пан­те­леи­чев про­дол­жа­ет по­сти­гать ос­но­вы сис­те­мы GNU/Linux че­рез ее
ос­но­во­по­ла­гаю­щий па­кет про­грамм.
С
е­го­дня мы рас­смот­рим про­грам­мы, от­ве­чаю­щие за сор­
ти­ров­к у строк — это ути­ли­ты sort, shuf, uniq, comm, ptx,
tsort; а так­же про­грам­му tee, которая вы­во­дит по­сту­пив­
шую ин­фор­ма­цию в не­сколь­ко по­то­ков.
sort
Наш
эксперт
Дмит­рий Пан­те­
леи­чев счи­та­ет,
что лю­бую тех­но­
ло­гию на­до изу­
чать от про­сто­го
к слож­но­му, и ка­
ж­дый шаг за­кре­п­
лять прак­ти­че­­ски­­
ми при­ме­ра­ми.
Са­мо сло­во sort ин­т уи­тив­но на­во­дит на мысль о сор­ти­ров­ке —
в данном случае, тек­сто­вых строк. Ес­ли мы вы­зо­вем эту ко­ман­ду,
под­ста­вив ей мно­го­строч­ный текст, то стро­ки это­го тек­ста бу­д ут
от­сор­­ти­ро­ва­ны по ал­фа­ви­т у. Да­вай­те под­ста­вим перечень содер­
жимого столового набора. На­пом­ню: опе­ра­тор << оз­на­ча­ет, что чте­
ние пре­кра­ща­ет­ся при вво­де сим­во­лов, ука­зан­ных по­сле <<.
sort << EOF
Ложка
Вилка
Нож
EOF
По­сле вво­да этой ко­ман­ды на эк­ра­не дол­жна поя­вить­ся «серви­
ровка», от­сор­ти­ро­ван­ная по ал­фа­ви­т у.
Вилка
Ложка
Нож
Как и лю­бая дру­гая ко­манда, вы­во­д я­щая ка­к ую-ли­бо ин­фор­
ма­цию, sort вы­пол­ня­ет вы­вод в стан­дарт­ный по­ток stdout, ко­то­рый
по умол­ча­нию под­к лю­чен к эму­ля­то­ру тер­ми­на ­ла; но вы­вод мож­но
направить и на дру­го­е уст­рой­ст­во. На­при­мер, в файл:
sort > tableset << EOF
Ложка
Вилка
Нож
EOF
В ва­шем ра­бо­чем ка­та­ло­ге поя­вит­ся новый файл — tableset,
что покажут ко­манды ls или dir. Ес­ли вывести со­дер­жи­мое это­го
фай­ла ко­ман­дой cat tableset, оно поя­вит­ся на эк­ра­не по ал­фа­ви­т у.
От­к у­да же сис­те­ма зна­ет ал­фа­вит­ный по­ря­док сим­во­лов?
Ал­фа­вит­ный по­ря­док сим­во­лов оп­ре­де­ля­ет­ся че­рез на­бор па­
ра­мет­ров под об­щим на­зва­ни­ем «ло­каль». Ло­каль, или куль­т ур­ная
> Рис. 1. Ин­фор­ма­
ция о ло­ка­ли.
52 | LXF208 Апрель 2016
сре­д а — это со­во­к уп­ность па­ра­мет­ров, ха­рак­те­ри­зую­щих куль­
тур­ное и гео­гра­фи­че­­ское ок­ру ­же­ние поль­зо­ва­те­ля: на­цио­наль­ный
ал­фа­вит, фор­мат ото­бра ­же­ния да­ты и вре­ме­ни, на­зва­ния ме­ся­цев
и мно­гое дру­гое. Ло­каль ва­шей сис­те­мы покажет ути­ли­та locale
(она не вхо­дит в coreutils и ус­та­нав­ли­ва­ет­ся с па­ке­том glibc). Ре­
зуль­тат ко­ман­ды locale дол­жен вы­гля­деть как на рис. 1.
В этом спи­ске пер­вой ото­бра ­ж а­ет­с я пе­ре­мен­ная ок­ру ­же­ния
LANG, со­дер­жа­щая иден­ти­фи­ка­тор те­к у­щей ло­ка ­ли сис­те­мы. Сле­
дую­щ ая пе­ре­мен­ная, LANGUAGE, не­обя­за­тель­на. Она ис­поль­зу­
ет­ся, если поль­зо­ва­тель хо­чет ука­зать, на ка­ком язы­ке по­лу­чать
со­об­ще­ния, не пе­ре­ве­де­нные на язык ло­ка ­ли. В LANGUAGE ука­
зы­ва­ет­ся при­ори­тет язы­ков. Так, ес­ли швед­ский поль­зо­ва­тель хо­
чет по­лу­чать со­об­ще­ния на не­мец­ком язы­ке, ес­ли они не­дос­т уп­ны
на швед­ском, он за­да­ет LANGUAGE зна­че­ние: 'sv:de'. Это оз­на­ча­ет
«сна­ча ­ла, ес­ли ­мож­но, швед­ский; за­тем не­мец­кий».
Ос­таль­ные пе­ре­мен­ные — ка­те­го­рии ло­ка ­ли. Зна­че­ни­е ка ­ж ­дой
из этих пе­ре­мен­ных — на­зва­ние ло­ка ­ли. Раз­ные ка­те­го­рии мо­г ут
ис­поль­зо­вать раз­ные ло­ка ­ли. Ка­те­го­рии име­ют такие зна­че­ния:
» LC_IDENTIFICATION — уни­каль­ный иден­ти­фи­ка­тор ло­ка­ли.
» LC_CTYPE — ин­фор­ма­ция о на­бо­ре сим­во­лов на­цио­наль­но­го
язы­ка, их клас­си­фи­ка­ция и пра­ви­ла пре­об­ра­зо­ва­ний.
» LC_COLLATE — ал­фа­вит­ный по­ря­док букв для сор­ти­ров­ки строк.
» LC_TIME — фор­мат да­ты и вре­ме­ни.
» LC_NUMERIC — фор­мат чи­сел (на­при­мер, ото­бра­же­ние де­ся­
тич­ной дро­би).
» LC_MONETARY — фор­мат де­неж­ных ве­ли­чин.
» LC_MESSAGES — со­об­ще­ния поль­зо­ва­тель­ско­го ин­тер­фей­с а
на на­цио­наль­ном язы­ке.
» LC_PAPER — ин­фор­ма­ция о стан­дарт­ном раз­ме­ре бу­ма­ги для
пе­ча­ти до­к у­мен­тов (на­при­мер, А4).
» LC_MEASUREMENT — стан­дарт­ная сис­те­ма из­ме­ре­ний, при­ня­
тая в куль­т у­ре поль­зо­ва­те­ля (на­при­мер, мет­ри­че­­ская).
» LC_NAME — фор­мат лич­но­го име­ни че­ло­ве­ка (на­при­мер, имя/
от­че­­ст­во/фа­ми­лия).
» LC_ADDRESS — фор­мат поч­то­во­го ад­ре­са.
» LC_TELEPHONE — фор­мат те­ле­фон­но­го но­ме­ра.
» LC_ALL — бу­д у­чи за­дан­ным, зна­че­ние этой пе­ре­мен­ной пе­ре­
кры­ва­ет зна­че­ния всех вы­ше­ука­зан­ных ка­те­го­рий, при­во­дя их все
к еди­ной ло­ка­ли. Она ис­поль­зу­ет­ся в скрип­тах, для ко­то­рых важ­но,
что­бы их вы­пол­не­ние не за­ви­се­ло от куль­т у­ры сис­те­мы.
Ко­ман­да sort с клю­чом -c (пол­ная вер­сия — --check) по­зво­ля­ет
про­ве­рить, пра­виль­но ли от­сор­ти­ро­ван спи­сок строк. Да­вай­те соз­
да­дим но­вый файл, со спи­ском времен года. Вве­дем их на­зва­ния
в порядке следования:
cat > seasons << EOF
Зима
Весна
Лето
Осень
EOF
А как на это посмотрит ко­ман­да sort? Да­вай­те про­ве­рим:
sort -c seasons
sort: seasons:2: не­пра­виль­ный по­ря­док: Весна
www.linuxformat.ru/subscribe
Ба­зо­вые ути­ли­ты GNU Учебник
Ошиб­очка вышла: ведь по алфавиту Весна рань­ше Зимы.
Во­об­ще ко­ман­да sort име­ет не­обы­чай­но мно­го клю­чей, о ко­то­
рых мож­но про­чи­тать, об­ра­тив­шись к спра­воч­ным сис­те­мам по ко­
ман­де man sort или info sort. Мож­но ука­зать, при­ни­мать во вни­ма­
ние или нет на­чаль­ные про­бе­лы (-b), раз­ли­чать бу­к­вы по ре­ги­ст­рам
или нет (-f), иг­но­ри­ро­вать не­пе­ча­тае­мые сим­во­лы или нет (-i), и др.
На­при­мер, как от­сор­ти­ро­вать стро­ки, на­чи­наю­щие­ся с “1” , “2”
и “10” ? Ес­ли сор­ти­ро­вать стро­го по сим­во­лам, то “10” идет рань­
ше, чем “2” , а “10.” рань­ше, чем “1.”. Но час­то быва­ет нужно выде­
лить чи­сло­вую часть строк и от­сор­ти­ро­вать их в чи­сло­вом по­ряд­ке.
Про­грам­ма мо­жет реа­ли­зо­вать оба ва­ри­ан­та сор­ти­ров­ки. Соз­да­
дим файл book-index.
cat > book-index << EOF
10. За­к лю­че­ние
2. Об­зор ли­те­ра­т у­ры
1. Вве­де­ние
EOF
Сор­т и­ров­к а по умол­ча­нию не учи­т ы­ва­ет чи­с ло­вые зна­че­ния
сим­во­лов, по­это­му даст не­же­ла­тель­ный ре­зуль­тат:
sort book-index
10. За­к лю­че­ние
1. Вве­де­ние
2. Об­зор ли­те­ра­т у­ры
Но до­бав­ле­ние клю­ча -n (или --numeric-sort, или --sort=numeric)
по­мо­жет от­сор­ти­ро­вать эти стро­ки пра­виль­но:
sort -n book-index
1. Вве­де­ние
2. Об­зор ли­те­ра­т у­ры
10. За­к лю­че­ние
shuf
Те­перь займемся ути­ли­той shuf. Ее роль со­вер­шен­но про­ти­во­по­
лож­ная: она пе­ре­ме­ши­ва­ет стро­ки в слу­чай­ном по­ряд­ке. По­смот­
ри­те, на­при­мер, как она вы­во­дит спи­сок вре­мен го­да, ко­то­рый на­
хо­дит­ся в соз­дан­ном на­ми фай­ле seasons.
shuf seasons
Вве­д я эту ко­ман­д у неоднократно, вы ка­ж ­дый раз уви­ди­те новый
ре­зуль­тат.
Ключ -n по­зво­ля­ет за­дать ко­ли­че­­ст­во строк, ко­то­рое надо вы­
вес­ти (без него по умол­ча­нию вы­во­д ят­ся все стро­ки). Это бы­ва­ет
удоб­но, ко­гда ис­ход­ный спи­сок очень боль­шо­го раз­ме­ра.
shuf -n 2 seasons
Или да ­же мож­но вы­вес­ти один слу­чай­ный эле­мент из спи­ска.
echo Се­го­дня мы ри­су­ем пей­заж на те­му `shuf -n 1 seasons`
Се­го­дня мы ри­су­ем пей­заж на те­му Осень
Здесь мы за­бе­жа­ли впе­ред, употребив пока не знакомую ути­ли­
ту — echo. Но пусть сим­во­лы ` вас не пу­га­ют. По­том уз­нае­те, что
они оз­на­ча­ют.
Кста­ти, на­счет echo. Ключ -e (--echo) по­зво­ля­ет за­д а­вать ис­
ход­ный спи­сок сра­зу по­сле ко­ман­ды в ви­де спи­ска па­ра­мет­ров че­
рез про­бе­лы. Па­ра­мет­ры из не­сколь­ких слов вво­дят­ся в ка­выч­ках:
shuf -e Ко­ля “Са­ша Ива­нов” “Са­ша За­ха­ров”
Ко­ля
Са­ша За ­ха­ров
Са­ша Ива­нов
Ключ -i по­зво­ля­ет вы­вес­ти в слу­чай­ном по­ряд­ке на­бор це­лых
чи­сел. Наи­мень­шее и наи­боль­шее из этих чи­сел долж­ны быть ука­
за­ны по­сле клю­ча.
shuf -i 15-20
16
17
18
20
19
15
uniq
Ути­ли­та uniq пре­об­ра­зу­ет по­вто­ряю­щие­ся со­сед­ние строч­ки в од­ну
строч­к у. Соз­да­дим файл month с по­вто­ряю­щей­ся строч­кой:
cat > months << EOF
Ян­варь
Фев­раль
Фев­раль
Март
Ап­рель
EOF
От­кро­ем его про­грам­мой uniq. По­вто­ряю­щие­ся стро­ки объ­­­еди­
нят­ся в од­ну:
uniq months
Ян­варь
Фев­раль
Март
Ап­рель
До­ба­вим ключ -c, мы уз­на­ем число повторов ка­ж ­дой строки:
uniq -c months
1 Ян­варь
2 Фев­раль
1 Март
1 Ап­рель
Ключ -d ис­к лю­ча­ет из ре­зуль­та­та уникальные стро­ки:
uniq -d months
Фев­раль
А ключ -f ука­зы­ва­ет, сколь­ко по­лей сле­д у­ет про­пус­тить, пре­
ж­де чем ос­тав­шая­ся часть стро­ки бу­дет срав­ни­вать­ся с ана­ло­гич­
ны­ми ос­тав­ши­ми­ся час­тя­ми дру­гих строк. По­ле — это часть стро­
ки, от­де­лен­ная про­бе­ла­ми или та­бу­ля­ци­ей.
Да­вай­те для ил­лю­ст­ра­ции при­д у­ма­ем слож­ный при­мер, в ко­
то­ром бу­д ут за ­дей­с т ­во­ва­ны сра ­зу три ути ­ли ­т ы: sort, uniq и cut.
Пе­ре­чис ­лим не­сколь­ко го­ро­дов ми­ра с ука ­за­ни­ем стра­ны и ко­
ли­че­­ст­ва жи­те­лей. За­тем вы­ве­дем толь­ко спи­сок стран, ко­то­рые
при­сут­ст­во­ва ­ли в ис­ход­ном спи­ске.
Для на­ча­ла соз­да­дим файл с ис­ход­ным спи­ском.
cat > cities << EOF
Шан­хай Ки­тай 17836133
Мум­баи Ин­дия 12478447
Ка­ра­чи Па­ки­с тан 13205339
Пе­кин Ки­тай 11716620
Гу­ан­ч жоу Ки­тай 11070654
Де­ли Ин­дия 11007835
Ла ­хор Па­ки­с тан 10520000
Шэнь­ч жэнь Ки­тай 10467400
EOF
Те­перь вы­ве­дем уни­каль­ный спи­сок толь­ко стран:
sort -k 2.1 cities | uniq -f 1 -w 5 | cut -f 2 -d “ “
Про­ве­дем раз­бор этой ко­ман­ды. Ключ -k со зна­че­ни­ем 2.1 оз­
на­ча­ет, что сор­ти­ро­вать стро­ки на­до не с на­ча­ла стро­ки, а по пер­
во­му сим­во­лу вто­ро­го по­ля. По­сколь­к у в ка­ж ­дой стро­ке на­зва­ние
стра­ны сто­ит по­сле на­зва­ния го­ро­да и от­де­ле­но от не­го про­бе­лом,
то на­зва­ние стра­ны и есть по­ле но­мер два, и по не­му идет сор­ти­
ров­ка. Да ­лее идет па­ра­метр, ука­зы­ваю­щий ис­точ­ник вхо­д я­ще­го
тек­ста. В дан­ном слу­чае ука­за­но имя фай­ла, со­дер­жи­мое ко­то­ро­
го сор­ти­ру­ет­ся. Но мож­но по­лу­чить ис­ход­ные дан­ные и из дру­
го­го мес­та. На­при­мер, ес­ли вме­с то име­ни фай­ла вве­с ти << EOF,
то в­ход­ные дан­ные бу­д ут вво­дить­ся в про­грам­му с кла­виа­т у­ры,
по­ка не встре­тит­ся со­че­та­ние EOF, по­с ле че­го ре­зуль­тат ра­бо­ты
про­граммы сра­зу бу­дет вы­ве­ден на эк­ран.
Вто­рая ко­ман­да uniq от­де­ле­на от пер­вой зна­ком |. Это хо­ро­шо
нам из­вест­ный кон­вей­ер: ре­зуль­тат ра­бо­ты пер­вой про­грам­мы по­
сту­па­ет в ка­че­­ст­ве ис­ход­ных дан­ных во вто­рую про­грам­му. Об­ра­
ти­те вни­ма­ние, что ко­ман­да uniq здесь не име­ет па­ра­мет­ра, ука­зы­
ваю­ще­го на вхо­дя­щие дан­ные, а име­ет толь­ко клю­чи. Это по­то­му,
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 53
Учебник Ба­зо­вые ути­ли­ты GNU
Скорая
помощь
Тех­но­ло­гия «под­
ста­нов­ки про­цес­
са» по­зво­ля­ет
на ме­сто лю­бо­го
вхо­д я­ще­го па­ра­
мет­ра под­ста­вить
вы­зов про­грам­мы,
вы­во­д я­щей дан­
ные. А так­же, на­
обо­рот, ис­хо­д я­щий
по­ток на­пра­вить
на вход лю­бой
про­грам­мы.
что на вхо­д я­щие дан­ные ука­зы­ва­ет сим­вол кон­вей­е­ра |, стоя­щий
пе­ред ней.
Ключ -f ко­ман­ды uniq по­ка­зы­ва­ет, сколь­ко по­лей на­до про­пус­
тить, пре­ж ­де, чем про­ве­рять стро­ки на дуб­ли­ро­ва­ние. По­сколь­к у
мы про­ве­ря­ем стра­ны, то надо про­пус­тить на­зва­ние го­ро­д а, т. е.
од­н о по­л е. Ключ -w ука­зы­в а­е т, сколь­ко сим­во­л ов надо про­ве­
рять на дуб­ли­ро­ва­ние, чтобы не про­сматривать всю стро­к у до кон­
ца. Для на­ше­го при­ме­ра дос­та­точ­но бу­дет срав­ни­вать пять пер­
вых сим­во­лов.
Ути­ли­та cut осу­ще­с т­в­ля­ет час­тич­ный вы­вод ис­ход­ных строк.
По­сколь­к у мы вы­во­дим толь­ко стра­ны, т. е. толь­ко вто­рое по­ле,
на что ука­зы­ва­ет ключ -f со зна­че­ни­ем 2. По умол­ча­нию ути­ли­та
cut счи­та­ет по­ля­ми толь­ко час­ти строк, раз­де­лен­ные та­бу­ля­ци­ей.
Но здесь у нас по­ля раз­де­ля­ют­ся про­бе­ла­ми, и ­это­надо особо ука­
зать с по­мо­щью клю­ча -d со зна­че­ни­ем “ ”.
Ре­зуль­тат дол­жен по­лу­чить­ся та­ким:
Ин­дия
Ки­тай
Па­ки­с тан
comm
Ути­ли­т а comm срав­ни­в а­е т два от­с ор­т и­ро­в ан­ных на­бо­р а строк.
Но да­вай­те для экс­пе­ри­мен­та под­ста­вим ей два не­от­сор­ти­ро­ван­
ных фай­ла, что­бы по­смот­реть, что по­лу­чит­ся. Соз­да­дим два фай­
ла — digits1 и digits2, с на­борами чи­сел в произволь­ном по­ряд­ке:
cat > digits1 << EOF
4
2
1
3
EOF
cat > digits2 << EOF
3
0
2
1
EOF
По­про­бу­ем срав­нить эти два фай­ла с по­мо­щью ко­ман­ды comm:
comm digits1 digits2
Про­грам­ма, ес­те­ст­вен­но, от­ру­га­ет нас, вы­дав два со­об­ще­ния:
«дан­ные фай­ла 1 не от­сор­ти­ро­ва­ны» и «дан­ные фай­ла 2 не от­сор­
ти­ро­ва­ны». Ко­неч­но, мы бы мог­ли от­сор­ти­ро­вать эти на­бо­ры цифр,
за­пи­с ать ре­зуль­та­ты в дру­гие фай­лы и но­вые фай­лы срав­нить.
Но нель­зя ли как-ни­будь обой­тись без лиш­них фай­лов?
Вам уже зна­ко­ма тех ­но­ло­г ия кон­вей­е­ра, ко­гда вы ­ход од­ной
про­грам­мы по­сту­па­ет на вход дру­гой про­грам­мы. Но в дан­ном слу­
чае на­ша про­грам­ма име­ет два вхо­да, по­это­му тех­но­ло­гию кон­вей­
е­ра при­ме­нить не по­лу­чит­ся.
К сча­с тью, мы мо­жем вос­поль­зо­вать­ся дру­гой тех­но­ло­ги­ей:
под­с та­нов­кой про­цес­с а [process substitution]. Суть ее в том, что
на ме­с то па­ра­мет­ра, где дол­жен быть ука­зан файл, под­с тав­ля­
ет­ся вы­зов ко­ман­ды, за­к лю­чен­ный в скоб­ки с до­бав­ле­ни­ем зна­
ка на­прав­ле­ния по­то­ка. Ме­ж ­ду этим зна­ком и скоб­кой не долж­но
быть про­бе­ла. В дан­ном слу­чае мы вы­зо­вем про­грам­му sort, ре­
зуль­тат ра­бо­ты ко­то­рой и под­ста­вит­ся в ка­че­­ст­ве па­ра­мет­ра в про­
грам­му comm:
comm <(sort digits1) <(sort digits2)
Вот те­перь ви­дно, что циф­ра 4 есть толь­ко в пер­вом на­бо­ре,
циф­ра 0 — толь­ко во вто­ром, а циф­ры 1, 2, 3 — в обо­их на­бо­рах.
> Рис. 2. Ре­зуль­тат
ра­бо­ты ко­ман­ды
comm.
54 | LXF208 Апрель 2016
> Рис. 3. Ин­декс слов с кон­тек­стом.
ptx
ptx фор­ми­ру­ет упо­ря­до­чен­ный спи­сок слов, вхо­д я­щих в ка­койнибудь текст, и ото­бра­жа­ет вме­сте с их кон­тек­стом. Увы, пока она
уме­ет ра­бо­тать толь­ко с сим­во­ла­ми из ко­до­вой таб­ли­цы ISO 8859‑1
(то есть из пер­вых 256 ко­до­вых по­зи­ций Unicode). Сю­д а вхо­д ят
толь­ко сим­во­лы за­пад­но­ев­ро­пей­ских язы­ков, и ра­бо­тать с рус­ским
язы­ком про­грам­ма не смо­жет.
Соз­да­дим файл love-story с на­чаль­ны­ми стро­ка­ми тек­ста од­
ной по­пу­ляр­ной и очень кра­си­вой анг­лий­ской пес­ни:
cat > love-story << EOF
Where do I begin
To tell the story of how great a love can be
The sweet love story that is older than the sea
The simple truth about the love she brings to me
Where should I start?
EOF
Да­вай­те по­смот­рим, как про­грам­ма ptx это об­ра­бо­та­ет.
ptx love-story
На рис. 3 мы мо­жем ви­деть, что сло­ва из ин­дек­са рас­по­ло­же­ны
свер­х у вниз, ок­ру ­же­ны кон­тек­стом (т. е. те­ми сло­ва­ми, ко­то­ры­ми
они ок­ру­же­ны в ис­ход­ном тек­сте), и от­сор­ти­ро­ва­ны по ал­фа­ви­т у
с уче­том ре­ги­ст­ра: сна­ча ­ла идут сло­ва, на­чи­наю­щие­ся с за­глав­ных
бу­к­в, а за­тем сло­ва, на­чи­наю­щие­ся со строч­ных.
До­ба­вим к этой ко­ман­де два клю­ча:
ptx -fA love-story
Ключ -f ука ­жет, что сор­т и­р ов­к а ин­д екс­н ых слов долж ­н а быть
без уче­та ре­ги­ст­ра. Ключ -A по­тре­бу­ет в на­ча ­ло ка ­ж ­дой стро­ки до­
бав­лять имя фай­ла и но­мер стро­ки, где это сло­во с та­ким кон­тек­
стом встре­ча­ет­ся. Ре­зуль­тат — на рис. 4. Как обыч­но, ре­зуль­тат
мож­но вы­во­дить не толь­ко на эк­ран, но и в файл:
ptx -fA love-story > love-story-index
По умол­ча­нию ptx ин­дек­си­ру­ет ка­ж ­дое сло­во. Но мож­но ве­
леть ей ин­дек­си­ро­вать толь­ко сло­ва, со­от­вет­ст­вую­щие ка­ко­му-ли­
бо ре­г у­ляр­но­му вы­ра ­же­нию. Для этой це­ли ис­поль­зу­ет­ся ключ -W.
Соз­да­дим но­вый файл и по­ме­тим в нем звез­доч­ка­ми сло­ва, ко­
то­рые хо­тим про­ин­дек­си­ро­вать:
cat > love-story-reg << EOF
Where do I begin
To tell the *story* of how great a *love* can be
The *sweet* love story that is older than the sea
The simple *truth* about the love she brings to me
Where should I start?
EOF
Те­перь сно­ва вве­дем ко­ман­д у, до­ба­вив в нее ключ -W, и в ка­
че­­ст­ве его зна­че­ния ука ­жем ре­г у­ляр­ное вы­ра ­же­ние, по ко­то­ро­му
клю­че­вые сло­ва бу­дут вы­де­ле­ны из всех про­чих.
ptx -W ‘\*\w+\*’ -fA love-story-reg
В ре­зуль­та­те бу­д ут вы­ве­де­ны толь­ко по­ме­чен­ные на­ми сло­ва
love, story, sweet и truth вме­сте с их кон­тек­стом.
www.linuxformat.ru/subscribe
Ба­зо­вые ути­ли­ты GNU Учебник
Во­об­ще про­грам­ма эта до­воль­но слож­ная и име­ет мно­го клю­
чей. По­чи­тай­те про них в спра­воч­ной сис­те­ме.
> Рис. 4. Ин­декс
слов с кон­тек­стом,
име­нем фай­ла
и но­ме­ром стро­ки.
tsort
Ути­ли­та tsort вовлекает но­вый тер­ми­н: «то­по­ло­г и­че­­ская сор­т и­
ров­ка» слов. Для такой сор­ти­ров­ки про­грам­ма долж­на по­лу­чить
не­сколь­ко па­ра­мет­ров в ви­де пар слов, раз­де­лен­ных про­бе­лом.
Причем пер­вое сло­во из ка­ж ­дой па­ры яв­ля­ет­ся ие­рар­хи­че­­ски вы­
ше­стоя­щим по от­но­ше­нию ко вто­ро­му. Но вто­рое сло­во в дру­гой
па­ре мо­жет са­мо быть вы­ше­стоя­щим и иметь сво­его «под­чи­нен­
но­го». На­при­мер, по­ня­тие software — бо­лее вы­со­ко­го уров­ня, чем
os, office, game, browser, по­то­му что эти по­след­ние яв­ля­ют­ся ча­ст­
ны­ми слу­чая­ми по­ня­тия software. А по­ня­тия windows, linux, freebsd,
reactos — ча­ст­ны­е слу­чаи по­ня­тия os. Ду­маю, прин­цип ясен.
Про­грам­ма tsort рас­по­зна­ет всю эту «ие­рар­хию» и сор­ти­ру­ет
сло­ва от выс­ше­го уров­ня к низ­ше­му. Это бывает нужно, на­при­мер,
что­бы оп­ре­де­лить по­ряд­ок ус­та­новки про­грамм­ных па­ке­тов, для
уве­рен­ности, что в сис­те­ме уже есть все па­ке­ты, от ко­то­рых дан­
ный па­кет за­ви­сит.
tsort << EOF
linux ubuntu
os windows
linux debian
os freebsd
software office
os linux
software os
office libreoffice
EOF
Ре­зуль­тат дол­жен по­лу­чить­ся та­кой:
software
os
office
linux
freebsd
windows
libreoffice
debian
ubuntu
Как ви­ди­те, ие­рар­хич­ность стро­го со­блю­д а­ет­ся: по­ня­тие бо­
лее низ­ко­го уров­ня ни­ко­гда не сто­ит рань­ше по­ня­тия бо­лее вы­со­
ко­го уров­ня.
tee
Вер­нем­ся сно­ва к по­ня­тию «стан­д арт­ный вы­вод». Как мы зна­ем,
это за­ре­зер­ви­ро­ван­ный по­ток для вы­во­д а дан­ных. За­д а­ча про­
грам­мы tee в том, что­бы, по­ми­мо стан­д арт­но­го вы­во­д а, вы­вес­ти
по­сту­пив­шую ин­фор­ма­цию и в дру­гие по­то­ки. По­смот­рим, как это
вы­гля­дит:
tee << EOF helloworld1 helloworld2
Здрав­с т­вуй, мир, здрав­с т­вуй, друг,
Здрав­с т­вуй, пе­сен щед­рый круг!
EOF
В этой ко­ман­де пер­вый па­ра­метр оз­на­ча­ет вхо­дя­щие дан­ные, а все
по­сле­дую­щие па­ра­мет­ры — име­на ис­хо­дя­щих фай­лов (их мож­но
ука­зать сколь­ко угод­но). Вхо­д я­щие дан­ные здесь бе­рут­ся с кон­
соли (по­ка не бу­дет вве­де­но EOF), а ис­хо­д я­щие дан­ные, во-пер­
вых, от­пра­вят­ся в стан­дарт­ный вы­вод (на кон­соль), во-вто­рых, за­
пи­шут­ся в фай­лы, ука­зан­ные в па­ра­мет­рах. Сра­зу по­сле вво­да EOF
в кон­со­ли долж­ны поя­вить­ся две введенные строч­ки пес­ни, а в те­
ку ­щем ка­т а ­ло­ге — фай ­лы helloworld1 и helloworld2. Про­верь­те
их со­дер­жи­мое с по­мо­щью ко­манд cat helloworld1 и cat helloworld2.
В этих фай­лах долж­ны быть те же са­мые две строч­ки.
Что де­лать, ес­ли мы на эк­ран не хо­тим вы­во­дить ни­че­го, а хо­
тим ре­зуль­та­ты вы­во­дить толь­ко в фай­лы? Для это­го, сра­зу же
по­сле ука­за­ния ис­точ­ни­ка ин­фор­ма­ции, мы долж­ны ука­зать имя
еще од­но­го фай­ла, по­ста­вив пе­ред ним сим­вол > (пе­ре­на­прав­ле­
ние стан­дарт­но­го вы­во­да). То­гда то, что пред­на­зна­ча­лось для кон­
со­ли, уй­дет в файл helloworld3.
tee << EOF > helloworld3 helloworld1 helloworld2
Здрав­с т­вуй, мир, здрав­с т­вуй, друг,
Здрав­с т­вуй, пе­сен щед­рый круг!
EOF
Те­перь у нас поя­ви­лось же­ла­ние в ка­ж ­дом из этих фай­лов до­
ба­вить две но­вых строч­ки, со­хра­нив и те, ко­то­рые уже име­ют­ся.
Мы зна­ем, что пе­ре­на­прав­ле­ние стан­дарт­но­го по­то­ка в файл с со­
хра­не­ни­ем ста­ро­го со­дер­жи­мо­го фай­ла осу­ще­ст­в­ля­ет­ся с по­мо­
щью опе­ра­то­ра >>. По­это­му пер­вая мысль воз­ни­ка­ет сде­лать так.
tee << EOF >> helloworld1 helloworld2 helloworld3
Здрав­с т­вуй, миг, здрав­с т­вуй, век,
Здрав­с т­вуй, до­б­рый че­ло­век!
EOF
Не спе­ши­те это вво­дить! Строч­ки до­ба­вят­ся к ста­ро­му со­дер­
жи­мо­му толь­ко в фай­ле helloworld1. А в двух дру­гих фай­лах они
пол­но­с тью за­ме­нят ста­рое со­дер­жи­мое. Ведь опе­ра­тор >> от­но­
сит­ся толь­ко к стан­дарт­но­му вы­во­ду, ко­то­рый без не­го вы­во­дил бы
ин­фор­ма­цию в кон­соль. Ос­таль­ные па­ра­мет­ры про­сто обыч­ным
об­ра­зом соз­да­ют но­вый файл или пе­ре­за­пи­сы­ва­ют имею­щий­ся.
Но на са­мом де­ле ре­ше­ние есть. Де­ло в том, что про­грам­мы вы­
во­дят ин­фор­ма­цию, стро­го го­во­ря, не в фай­лы, а в по­то­ки. Про­сто
эти по­то­ки по умол­ча­нию на­прав­ля­ют­ся в фай­лы. Но их мож­но на­
пра­вить и в дру­гое ме­сто.
В этом уро­ке уже шла речь о тех­но­ло­гии «под­ста­нов­ки про­цес­
са». Мы рас­смот­ре­ли си­т уа­цию, ко­гда ко­ман­да ожи­да­ет два вхо­дя­
щих по­то­ка, и на ме­сто этих двух вхо­дя­щих по­то­ков, вме­сто имен
фай­лов, мож­но под­ста­вить ис­хо­дя­щие дан­ные дру­гих про­грамм:
comm <(sort digits1) <(sort digits2)
Точ­но так­же мож­но по­сту­пить и с ис­хо­дя­щи­ми по­то­ка­ми. Вме­
сто фай ­лов мож ­но вы­вес ­т и по­то­к и на вхо­д ы дру ­г их про­г рамм,
в данном случае — на вход про­грам­мы cat. Син­так­сис ко­ман­ды
бу­дет та­кой же, толь­ко опе­ра­тор на­прав­ле­ния смот­рит в дру­г ую
сто­ро­ну:
tee << EOF >> helloworld1 >(cat >> helloworld2) >(cat >>
helloworld3)
Здрав­с т­вуй, миг, здрав­с т­вуй, век,
Здрав­с т­вуй, до­б­рый че­ло­век!
EOF
Про­верь­те. Во всех трех фай­лах но­вые строч­ки долж­ны при­пи­
сать­ся к ста­рым строч­кам.
До встре­чи на сле­дую­щем уро­ке! |
www.linuxformat.ru/subscribe
> Рис. 5. Ин­дек­са­ция
клю­че­вых слов.
Апрель 2016 LXF208 | 55
Ubuntu У
прав­ляй­те и соз­да­вай­те яр­лы­ки
рабо­че­го сто­ла с ин­ди­ви­ду­аль­ны­ми знач­ка­ми
Ubuntu: Фай­лы,
пап­ки & икон­ки
Ник Пирс изу­ча­ет, как удоб­но раз­мес­тить яр­лы­ки при­ло­же­ния, фай­ла и пап­ки
на ра­бо­чем сто­ле Unity.
Р
Наш
экс­перт
Ник Пирс во­зит­
ся с ком­пь­ю­те­ра­
ми бо­лее 30 лет,
со вре­мен BBC
Micro и Dragon
32. Но его на­вы­
ки про­грам­ми­ро­
ва­ния ос­та­ют­ся
не­до­раз­ви­ты­ми.
а­бо­чий стол — под­хо­дя­щее ме­сто для яр­лы­ков к лю­би­мым
при­ло­же­ни­ям (из­вест­ных как сред­ст­ва за­пус­ка — launcher),
сис­тем­ных ин­ст­ру­мен­тов и да­же па­пок и фай­лов. При же­
ла­нии вы да­же мо­же­те хра­нить пря­мо на ра­бо­чем сто­ле фай­лы
и пап­ки, хо­тя обыч­но это не са­мая хо­ро­шая прак­ти­ка — раз­ве что
как крат­ко­вре­мен­ная ме­ра.
На этом уро­ке мы пла­ни­ру­ем под­роб­но ра­зо­брать, как ра­бо­
та­ют икон­ки ра­бо­че­го сто­ла, и вы­яс­нить, как до­бав­лять, уда­лять
и управ­лять икон­ка­ми, ко­то­рые вы ту­да по­мес­ти­ли. Мы так­же по­
ка­жем вам, как ин­ди­ви­дуа­ли­зи­ро­вать ва­ши икон­ки, сде­лав их бо­
лее (или ме­нее) за­мет­ны­ми, вклю­чая за­ме­ну или ре­дак ­ти­ро­ва­ние
са­мой икон­ки. В дан­ном ру­ко­во­дстве мы бу­дем ори­ен­ти­ро­вать­ся
на ра­бо­чий стол Unity (см. врез­к у «На дру­гих ра­бо­чих сто­лах» ввер­
ху на со­сед­ней стра­ни­це для со­ве­тов по ра­бо­те с дру­ги­ми сре­да­ми).
Ана­то­мия фай­ла ра­бо­че­го сто­ла
У ка­ж ­до­го поль­зо­ва­те­ля есть свой соб­ст­вен­ный ра­бо­чий стол, со­
дер­жи­мое ко­то­ро­го хра­нит­ся в пап­ке /home/Desktop. Ско­пи­руй­те
в нее файл или пап­к у, и они так­же поя­вят­ся на ра­бо­чем сто­ле —
щел­чок по фай­лу от­кро­ет его, а щел­чок по пап­ке от­кро­ет ее со­
дер­жи­мое в ме­нед­же­ре фай­лов, как обыч­но. Все то, что хра­нит­
ся на ва­шем ра­бо­чем сто­ле, яв­ля­ет­ся лич­ным и ча­с т­ным — оно
не поя­вит­ся на чьем-ли­бо еще ра­бо­чем сто­ле.
Яр­лы­к и ра­бо­че­го сто­ла — это не­сколь­ко иное. Они по­яв ­ля­
ют­ся с та­кой же икон­кой, как и ро­ди­тель­ский эле­мент — файл,
пап­ка или при­ло­же­ние — с ко­то­рым они свя­за­ны. Яр­лы­ки фай­ла
и пап­ки оп­ре­де­ля­ют­ся по ма ­лень­кой стрел­ке вверх, по­яв­ляю­щей­
ся в ниж­нем пра­вом уг­лу. Так­же они по умол­ча­нию по­лу­ча­ют имя
«Ссыл­ка на <имя фай­ла>», хо­тя вы лег­ко мо­же­те пе­ре­име­но­вать их
Из­ме­ни­те на­бор ико­нок
Ес­ли вы ище­те про­стой и бы­ст­рый спо­соб
из­ме­нить ва­ши икон­ки, рас­смот­ри­те ва­
ри­ант пе­ре­хо­да на дру­гой на­бор ико­нок,
ко­то­рый за­ме­нит мно­гие — ес­ли не все —
ва­ши су­ще­ст­вую­щие икон­ки на но­вые,
причем раз­ра­бо­тан­ные в еди­ном сти­ле.
Ус­та­но­ви­те Unity Tweak Tool че­рез Software
Center, за­тем про­ве­ди­те по­иск по се­ти
по за­про­су ‘icon set ubuntu’, что­бы най­ти
под ­хо­д я­щий для ус­та­нов­ки, симпатичный
вам на­бор ико­нок.
На­при­мер, что­бы ус­та­но­вить на­бор ико­
нок Moka, сде­лай­те сле­д ую­щее:
56 | LXF208 Апрель 2016
$ sudo add-apt-repository ppa:moka/stable
$ sudo apt-get update
$ sudo apt-get install moka-icon-theme
По­сле ус­та­нов­ки от­крой­те Unity Tweak
Tool и вы­бе­ри­те Icons [Знач­ки]. Вам
пред ­ло­жат мно­же­ст­во раз­лич­ных на­бо­
ров — уже имею­щие­ся на­бо­ры не вно­сят
ра­ди­каль­ных из­ме­не­ний во внеш­ний вид,
но вы­бе­ри­те Moka, и вы тут же по­чув­ст­ву­
е­те раз­ни­ц у. Вы так­же за­ме­ти­те, что из­
ме­не­ние за­тро­ну­ло все яр­лы­ки ра­бо­че­го
сто­ла, ко­то­рые вы соз­да­ли с икон­кой при­
ло­же­ния по умол­ча­нию.
> Соз­да­вай­те но­вые яр­лы­ки с ну­ля с по­мо­щью ин­ст­ру­мен­та
изготовления яр­лы­ков при­ло­же­ний Main Menu.
по сво­ему вку­с у, че­рез ме­ню Properties [Свой­с т­в а]. А вот икон­
ки при­ло­же­ний не име­ют по­доб­но­го зна­ка от­ли­чия — вме­сто это­
го они при­ни­ма­ют внеш­ний вид ро­ди­тель­ско­го эле­мен­та вме­с те
с икон­кой, при­сво­ен­ной то­му.
По су­ти, эти фай­лы — это про­стые тек­сто­вые фай­лы, ко­то­рым
да­но рас­ши­ре­ние фай­ла .desktop (оно не ото­бра­жа­ет­ся на ра­бо­
чем сто­ле или в ва­шем ме­нед­же­ре фай­лов — пе­рей­ди­те в /home/
Desktop в ок­не тер­ми­на­ла и ис­поль­зуй­те ls, что­бы про­смот­реть их).
Они оп­ре­де­ля­ют раз­лич­ные ат­ри­бу ­ты яр­лы­ка с по­мо­щью сле­дую­
ще­го син­так­си­са:
[Desktop Entry]
Version=x.y
Name=Имя­Про­грам­мы
Comment=Мой ком­мен­та­рий
Exec=/home/alex/Documents/exec.sh
Icon=/home/alex/Pictures/icon.png
Terminal=false
Type=Application
Categories=Utility;Application;
Ка ­ж ­дый ат­ри­бут са­мо­оче­ви­ден, но их соз­д а­ние в тек­с то­вом
ре­дак ­то­ре — весь­ма слож­ная за­да­ча (и по боль­шей час­ти не­нуж­
ная). Для пол­но­го ру­ко­во­дства по­се­ти­те http://bit.ly/UnityLauncher­
sAndDesktopFiles, но обыч­но это про­цесс нуд­ный и не­обя­за­тель­
ный. Впер­вые ус­т а­но­вив Ubuntu, вы най­де­те свой ра­бо­чий стол
аб­со­лют­но пус­тым, но так­же об­на­ру­жи­те мно­же­ст­во уже соз­дан­
ных яр­лы­ков — пе­рей­дя в /usr/share/applications, най­де­те яр­лы­ки,
ука­зы­ваю­щие на боль­шую часть при­ло­же­ний и сис­тем­ных ин­ст­
ру­мен­тов, уже ус­та­нов­лен­ных на ва­шем ПК. Щелк­ни­те по од­но­
му из них пра­вой кноп­кой мы­ши и вы­бе­ри­те Properties, что­бы уви­
деть, ку­д а он ука­зы­ва­ет. Ес­ли вы по­пы­тае­тесь пе­ре­та­щить один
из яр­лы­ков этих при­ло­же­ний на ра­бо­чий стол, вы по­лу­чи­те ошиб­к у
www.linuxformat.ru/subscribe
Настройка Ubuntu Учебник
Дру­гие ра­бо­чие сто­лы
Ес­ли ваш ра­бо­чий стол — не Unity, вы об­на­ру­жи­те,
что ра­бо­та с икон­ка­ми на нем не­сколь­ко от­ли­ча­ет­
ся. Для на­чи­наю­щих, боль­шин­ст­во дру­гих ра­бо­чих
сто­лов вклю­ча­ют удоб­ный ин­ст­ру­мент соз­да­ния
яр­лы­ков пря­мо из кон­тек­ст­но­го ме­ню ра­бо­че­го сто­
ла — про­сто щелк­ни­те пра­вой кноп­кой мы­ши и вы­
бе­ри­те Create Launcher [Соз­дать за­пуск], если вы ис­
поль­зуе­те Cinnamon/Xfce, или Create New Shortcut
[Соз­дать яр­лык] в LXDE.
KDE Plasma тре­бу­ет, что­бы вы на­строи­ли всё
че­рез ее соб­ст­вен­ную про­грам­му за­пус­ка. На­жмите
кноп­к у KDE в ниж­нем ле­вом уг­лу эк­ра­на, за­тем
вы­яс­ни­те рас­по­ло­же­ние нуж­но­го при­ло­же­ния че­
рез всплы­ваю­щее ме­ню. Щелк­ни­те по не­му пра­вой
кноп­кой мы­ши и вы­бе­ри­те Add to Desktop [До­ба­вить
на ра­бо­чий стол]. Соз­да­ст­ся икон­ка вид ­же­та, ко­то­
рый ра­бо­та­ет иным об­ра­зом — но ес­ли вы зна­ко­мы
с дру­ги­ми вид ­же­та­ми Plasma, у вас не бу­дет
про­блем с пе­ре­ме­ще­ни­ем, из­ме­не­ни­ем раз­ме­ра
и да­же вра­ще­ни­ем икон­ки с по­мо­щью па­не­ли ин­ст­
ру­мен­тов вид ­же­та.
Ес­ли вы поль­зо­ва­тель Gnome 3, икон­ки на ра­
бо­чем сто­ле не вклю­че­ны по умол­ча­нию. Вам
по­на­до­бит­ся ус­та­но­вить Gnome Tweak Tool
че­рез ме­нед ­жер па­ке­тов, за­тем за­пус­тить его
из Utilities [Ути­ли­ты] и перещелк­нуть пе­ре­к лю­ча­
тель Icons on Desktop [Знач­ки на ра­бо­чем сто­ле]
на On [Вкл]. По­с ле это­го вы смо­же­те вруч­ную
пе­ре­тас­ки­вать яр­лы­ки из пап­ки usr/share/applications на ра­бо­чий стол. Вы уви­ди­те ошиб­к у
на­счет прав дос­т у­па к фай­лу — щелк­ни­те пра­вой
кноп­кой по но­во­му яр­лы­к у и вы­бе­ри­те вклад­к у
Properties > Permissions [Раз­ре­ше­ния]. От­меть­
те Allow executing file as Program [Раз­ре­шить
прав дос­т у­па, а ес­ли вы очень по­ста­рае­тесь — не­что вро­де яр­лы­
ка все же поя­вит­ся, но с не­вер­ной икон­кой, и ра­бо­тать он не бу­дет.
Есть три про­стых и бы­ст­рых спо­со­ба соз­да­вать яр­лы­ки. Ес­ли
вы хо­т и ­т е по­м ес ­т ить яр­л ык в су ­щ е­с т ­в ую­щ ую пап­к у или файл
(но не при­ло­же­ние), пе­рей­ди­те в его рас­по­ло­же­ние с по­мо­щью ме­
нед­же­ра фай­лов Nautilus, на­жми­те на нем пра­вой кноп­кой мы­ши
и вы­бе­ри­те Make Link [Сде­лать ссыл­к у]. Поя­вит­ся яр­лык — про­сто
пе­ре­та­щи­те его на ра­бо­чий стол, за­тем щелк­ни­те по не­му пра­вой
кноп­кой мы­ши и вы­бе­ри­те Properties, что­бы пе­ре­име­но­вать его.
Про­с тей­ший спо­соб соз­д ать яр­лык для ус­та­нов­лен­но­го при­
ло­же­ния — в со­че­та­нии с Dash. От­крой­те его из Launcher, за­тем
на­жми­те бе­лую кноп­к у Maximise ввер­х у сле­ва, что­бы умень­шить
раз­мер. На­пи­ши­те на­зва­ние при­ло­же­ния, ко­то­рое вы ище­те; про­
сто пе­ре­та­щи­те его из Dash на ра­бо­чий стол ту­да, где вы хо­ти­те,
что­бы он поя­вил­ся. За­меть­те, что в не­ко­то­рых ис­к лю­чи­тель­ных
слу­ча­ях — од­ним из ко­то­рых яв­ля­ет­ся Start Center в LibreOffice —
вы мо­же­те об­на­ру­жить, что яр­лык не поя­вил­ся кор­рект­но и вы­
да­ет ошиб­к у Untrusted application launcher [Не­до­ве­рен­ный за­пуск
при­ло­же­ния]. Обыч­но это про­ис­хо­дит из-за то­го, что файл в /usr/
share/applications сам по се­бе яв­ля­ет­ся ссыл­кой на дру­гой файл
.desktop — вам на­до най­ти исход­ную ссыл­к у (/usr/lib/libreoffice/
share/xdg в слу­чае с LibreOffice) и пе­ре­та­щить ее от­т у­да. Со­об­ще­
ния об ошиб­ке дос­т у­па иг­но­ри­руй­те — вы най­де­те ко­пии яр­лы­ка
в пол­ном по­ряд­ке.
Ес­ли вы пред­по­чли бы соз­да­вать яр­лы­ки ра­бо­че­го сто­ла с ну­ля
без при­вле­че­ния тек­сто­во­го ре­дак ­то­ра, от­крой­те Dash и за­пус­ти­те
по­иск по за­про­су ‘alacarte’, за­тем на­жми­те на поя­вив­шую­ся икон­
ку Main Menu [Глав­ное ме­ню]. По­сле это­го на­жми­те на New [Соз­
дать]. От­кро­ет­ся но­вое диа­ло­го­вое ок­но, по­зво­ляю­щее соз­д ать
ваш яр­лык с ну­ля: вве­ди­те его имя, за­тем тип вы­бран­ной ко­ман­
ды (от­меть­те Launch in Terminal? [За­пуск в тер­ми­на­ле?], ес­ли это
воз­можно) или на­жми­те Browse [Про­смотр], что­бы вы­брать при­
ло­же­ние с по­мо­щью диа ­ло­го­во­го ок­на File Open [От­крыть файл].
Вы так­же мо­же­те вы­брать дру­г ую икон­к у, на­жав на те­к у­щую икон­
ку (изо­бра ­же­ние кли­ка­бель­но [spring-loaded]) — см. да­лее бо­лее
под­роб­ную ин­фор­ма­цию. На ­ж ми­те OK. Об­ра­ти­те вни­ма­ние, что
ваш яр­лык не поя­вит­ся на ра­бо­чем сто­ле... по­ка. По су­ти, он до­бав­
ля­ет­ся в то же ме­сто, что и дру­гие яр­лы­ки — /usr/share/applications,
так что вам по­на­до­бит­ся до­ба­вить его че­рез Dash с по­мо­щью вы­
ше­опи­сан­ной про­це­ду­ры. Сто­ит про­ве­рить ваш но­вый яр­лык ра­бо­
че­го сто­ла и убе­дить­ся, что он ра­бо­та­ет, как вы и на­дея­лись — в ча­
ст­но­сти, ес­ли вы соз­да­ли его с по­мо­щью ре­дак­то­ра ме­ню Alacarte,
от­крой­те тер­ми­нал и на­пе­ча­тай­те сле­дую­щие ко­ман­ды:
> KDE Plasma рас­смат­ри­ва­ет икон­ки ра­бо­че­го
стола как вид­же­ты, ко­то­рые мож­но пе­ре­ме­щать,
ме­нять их раз­мер и вра­щать.
ис­поль­зо­вать как при­ло­же­ние], и вы уви­ди­те по­
явив­шую­ся икон­к у, а яр­лык те­перь бу­дет ра­бо­тать
как по­ло­же­но.
cd Desktop
desktop-file-validate <filename>.desktop
Ес­ли не вы­ве­дет­ся ни­ка­ких оши­бок, все долж­но быть в по­ряд­ке.
Ре­дак­ти­ро­ва­ние яр­лы­ков
Яр­лы­ки лег­ко пе­ре­ме­щать, пе­ре­та­щив и бро­сив их в же­лае­мое ме­
сто. Вы мо­же­те бы­ст­ро упо­ря­до­чить их, на­жав пра­вой кноп­кой мы­
ши на пус­том про­стран­ст­ве и вы­брав Sort Desktop icons by Name
[Сор­т и­ро­вать яр­лы­к и ра­бо­че­го сто­ла по име­ни]. По умол­ча­нию
икон­ки рас­по­ло­же­ны в од­ну ли­нию, что­бы обес­пе­чить ак­к у­рат­ную
рав­но­мер­ную сет­к у, но ес­ли вы пред­по­чи­тае­те не­ко­то­рую хао­тич­
ность, про­сто щелк­ни­те пра­вой кноп­кой мы­ши по ра­бо­че­му сто­
лу и убе­ри­те от­мет­к у с Align Desktop icons [Вы­рав­ни­вать яр­лы­ки].
Вы так­же уви­ди­те поя­вив­шую­ся оп­цию Resize Icon [Из­ме­нить
раз­мер икон­ки] — вы­брав ее, мож­но с по­мо­щью ру­ко­яток, поя­вив­
ших­ся во­круг икон­ки, сде­лать ее боль­ше или мень­ше, что­бы от­
дель­ные икон­ки лег­че при­вле­ка ­ли ва­ше вни­ма­ние. Ис­поль­зуйте
оп­цию Restore Icon Original Size [Вер­нуть к ис­ход­но­му раз­ме­ру],
что­бы бы­ст­ро вер­нуть икон­к у к ее раз­ме­ру по умол­ча­нию. Рас­тя­
жи­мость икон­ки, ко­неч­но, в немалой ме­ре за­ви­сит от ее мак­си­
маль­но­го раз­ме­ра, но в боль­шин­ст­ве слу­ча­ев вы об­на­ру­жи­те, что
впол­не мо­же­те уве­ли­чить раз­мер икон­ки вдвое, а то и вчет­ве­ро,
без по­терь де­та­ли­за­ции.
Ес­ли вам не по душе вид икон­ки по умол­ча­нию, его то­же можно
из­ме­нить; вы, ко­неч­но, мо­же­те от ­ре­д ак ­т и­ро­в ать файл .desktop
в тек­с то­вом ре­д ак ­то­ре вро­де nano, но ку­д а удоб­нее бу­дет про­
сто щелк­нуть пра­вой кноп­кой мы­ши по яр­лы­к у и вы­брать Prop­
erties, а за­тем по са­мой икон­ке. От­кро­ет­ся диа­ло­го­вое ок­но, при­
гла­шаю­щее вас вы­брать дру­г ую икон­к у (в фор­ма­те PNG или SVG).
Вы мо­же­те вы­брать го­то­вую икон­к у — за­гля­ни­те в /usr/share/icons
на пред­мет раз­граб­ле­ния су­ще­ст­вую­щих на­бо­ров ико­нок, или ска­
чай­те ин­ди­ви­ду­а ль­ные икон­ки с сай­та на­по­до­бие www.iconarchive.
com; ли­бо соз­дай­те свою соб­ст­вен­ную с ну­ля.
Что­бы соз­д ать свою соб­с т­вен­ную икон­к у, мож­но в GIMP, по­
пу­л яр­н ом при­л о­же­нии ре­д ак ­т и­р о­в а­ния при­л о­же­ний, об­р е­з ать
и из­ме­нить раз­мер су­ще­ст­вую­ще­го изо­бра ­же­ния нуж­но­го раз­ме­
ра — 192 × 192 долж­но быть дос­та­точ­но для ико­нок ра­бо­че­го сто­
ла при их мак­си­маль­ном уров­не уве­ли­че­ния 400 %. Убе­ди­тесь, что
все со­хра­не­но в фор­ма­те PNG. Или мож­но ус­та­но­вить спе­ци­а ль­
ный ин­ст­ру­мент для ре­дак­ти­ро­ва­ния ико­нок — по­про­буй­те ус­та­
но­вить KIconEdit из Software Center. Вы уви­ди­те, что он пред­ла­га­ет
вам сет­ко­об­раз­ный дис­плей для соз­да­ния ико­нок с ну­ля и под­дер­
жи­ва­ет икон­ки раз­ме­ром до 200 × 200 пик­се­лей. |
www.linuxformat.ru/subscribe
Скорая
помощь
Хо­ти­те, что­бы
на ва­шем ра­бо­
чем сто­ле ото­
бра ­жа ­лись клю­
че­вые сис­тем­ные
яр­лы­ки, та­кие как
ва­ша до­маш­няя
пап­ка, сеть и кор­
зи­на? Ус­та­но­ви­те
Unity Tweak Tool
и вы­бе­ри­те Desk­
top Icons под Sys­
tem. Про­сто щелк­
ни­те по яр­лы­кам,
ко­то­рые вы хо­ти­те
раз­мес­тить на ра­
бо­чем сто­ле —
и, о чу­до, они по­
я­ят­ся. Вы мо­жете
пе­ре­ме­щ ать их,
как и лю­бые дру­
гие, пе­ре­тас­ки­вая
и бро­сая.
Апрель 2016 LXF208 | 57
Ubuntu Р
е­ша­ем про­бле­мы с за­груз­кой
с по­мо­щью Boot-Repair
Ubuntu: Чи­ним
хро­мую за­груз­ку
Ник Пирс уз­на­ет, как ре­шить про­бле­мы с не­за­гру­жаю­щим­ся ком­пь­ю­те­ром,
не при­бе­гая к кноп­ке «Па­ни­ка» (или ку­вал­де).
Наш
эксперт
Ник Пирс про­вел
уже столь­ко жут­
ких ча­сов в борь­
бе с про­бле­ма­
ми с за­груз­кой,
и в та­ком ко­ли­че­
­ст­ве опе­ра­ци­он­ных
сис­тем, что все
и не упом­нить.
Скорая
помощь
Мно­гие про­бле­мы
c Grub воз­ни­ка­ют
при на­строй­ке
двой­ной за­груз­
ки с Windows.
Если ва­ша сис­те­
ма не рас­по­зна­
ет Linux по­сле его
на­строй­ки, сверь­
тесь с на­шей стать­
ей о мульти­за­груз­
ке (см. стр. 42).
Там вы най­де­те
помощь и со­ве­ты
по раз­ре­ше­нию
таких про­блем.
> Ес­ли диск Boot-Repair не за­гру­жа­ет­ся, по­экс­пе­ри­мен­ти­руй­те
с ва­ри­ан­та­ми безо­пас­ной за­груз­ки.
П
ро­бле­мы с за­груз­кой... Тот мо­мент, ко­гда — при­ни­ма­ясь
за свою ра­бо­т у ли­бо раз­вле­че­ние — вы вдруг ви­дите за­
га­доч­ное со­об­ще­ние об ошиб­ке или, что еще ху­же, пус­
той эк­ран. И сколь­ко бы вы ни пе­ре­за­гру­жа­ли и ни сбра­сы­ва­ли
ком­пь­ю­тер, это не­пре­одо­ли­мое пре­пят­ст­вие сто­ит у вас на пу ­ти.
Так что же де­лать?
Про­бле­мы с за­груз­кой от­ли­ча­ют­ся боль­шим раз­но­об­ра­зи­ем,
и их бы­ва­ет труд­но от­сле­дить. Од­на­ко су­ще­ст­ву­ет здра­вые прин­ци­
пы, по­зво­ляю­щие ре­шить мно­гие ошиб­ки, и на этом уро­ке мы рас­
смот ­рим сред­с т ­в а и ме­т о­д ы, при­г од­ные для уст­р а­н е­ния боль­
шин­ст­ва про­блем с за­груз­кой. Нач­ни­те с то­го, как уст­ро­ен про­цесс
за­груз­ки (см. врез­к у «Про­цесс за­груз­ки», стр. 59). Вы уз­нае­те, что
этот про­цесс мож­но раз­де­лить на три боль­ших эта­па, свя­зан­ных
с за­груз­чи­ком Grub 2: до Grub, соб­ст­вен­но Grub и по­сле Grub. Это
по­зво­лит со­сре­до­то­чить свои уси­лия имен­но на том уча­ст­ке, где
про­ис­хо­дит ошиб­ка или за­ви­са­ние про­цес­са за­груз­ки.
Нач­нем с на­ча­ла. Вы вклю­чае­те ком­пь­ю­тер. Ес­ли пи­та­ние по­
сту­па­ет, но боль­ше ни­че­го не про­ис­хо­дит, воз­мож­но, у вас есть ка­
кая-то ап­па­рат­ная про­бле­ма. Ес­ли вы не­дав­но ко­па­лись во внут­
рен­но­с тях сво­его ком­пь­ю­т е­р а, про­верь­т е, что все под­к лю­че­но
58 | LXF208 Апрель 2016
пра­виль­но. Ес­ли нет, от­к лю­чи­те все уст­рой­ст­ва, кро­ме кла­виа­т у­
ры, и по­про­буй­те еще раз. Ес­ли это не по­мог­ло, ак­к у­рат­но от­крой­те
кор­пус и от­к лю­чи­те внут­рен­ние дис­ки. Ес­ли ком­пь­ю­тер стал за­гру­
жать­ся до эк­ра­на за­став­ки, мо­же­те сно­ва под­к лю­чить внут­рен­ние
дис­ки и по­про­бо­вать еще раз; ес­ли те­перь вы мо­же­те за­гру­зить­ся
до эк­ра­на вхо­да в сис­те­му, вы­к лю­чи­те ком­пь­ю­тер и нач­ни­те под­
клю­чать внеш­ние уст­рой­ст­ва, что­бы по­смот­реть, со­хра­ни­лась ли
про­бле­ма и свя­за­на ли она с кон­крет­ны уст­рой­ст­вом. Ес­ли это так,
по­про­буй­те дру­гой ка­бель или зай­ди­те в Google из­вест­ные про­бле­
мы, свя­зан­ные с этим уст­рой­ст­вом.
Ес­ли вам по­ве­зет, то ма­те­рин­ская пла­та из­даст се­рию зву­ко­вых
сиг­на­лов или ми­га­ний све­то­дио­да­ми — и это при­го­дит­ся для иден­
ти­фи­ка­ции про­бле­мы, опять же с по­мо­щью Ин­тер­не­та. Мо­жет по­
тре­бо­вать­ся за­ме­на ком­по­нен­та или не­что по­серь­ез­нее.
Ес­ли вы до­би­рае­тесь до эк­ра­на за­став­ки, но по­том ком­пь­ю­тер
за­ви­са­ет или по­яв­ля­ет­ся со­об­ще­ние «опе­ра­ци­он­ная сис­те­ма от­
сут­ст­ву­ет», пре­ж ­де все­го при­пом­ни­те лю­бые по­след­ние из­ме­не­
ния. На­при­мер, ес­ли вы раз­го­ня­ли про­цес­сор, вой­ди­те в EFI или
BIOS и за­гру­зи­те безо­пас­ные на­строй­ки по умол­ча­нию. По­сле это­
го сно­ва по­про­буй­те пе­ре­за­гру­зить­ся.
Ес­ли не по­лу­чит­ся, то про­бле­ма ско­рее все­го свя­за­на с же­ст­ким
дис­ком, и по­это­му пер­вым де­лом на­до за­гля­нуть в глав­ную за­гру­
зоч­ную за­пись и Grub.
Ес ­ли ме­ню Grub не по­яв­л я­е т­с я ав­т о­м а­т и­ч е­­с ки при вклю­ч е­
нии ком­пь­ю­те­ра, по­про­буй­те пе­ре­за­гру­зить его, удер­жи­вая Shift,
или на­жать Esc, что­бы от­крыть ме­ню за­груз­ки Grub и убе­дить­ся,
что оно во­об­ще мо­жет за­гру­зить­ся. Ес­ли его ни­где нет, пе­рей­ди­те
к раз­де­лу про ин­ст­ру­мент Boot-Repair.
Ес­ли Grub за­гру­жа­ет­ся, но вы не находите ни од­ной за­гру­жае­
мой ОС, есть не­сколь­ко сце­на­ри­ев: мо­жет поя­вить­ся ба­зо­вая ко­
манд­ная стро­ка grub> или grub rescue>, это оз­на­ча­ет, что один или
не­сколь­ко фай­лов Grub от­сут­ст­ву­ют или по­вре­ж ­де­ны. Вы мо­же­те
www.linuxformat.ru/subscribe
Проблемы с загрузкой Учебник
Про­цесс за­груз­ки
По на ­жа­тию кноп­ки вклю­че­ния пи­та­ния
управ­ле­ние пе­ре­да­ет­ся EFI или BIOS ва­ше­го
ком­пь­ю­те­ра, ко­то­рые за­пус­ка­ют раз­лич­ные
ком­по­нен­ты, вы­пол­ня­ют ба­зо­вые ди­аг­
но­сти­че­­ские про­вер­ки и пы­та­ют­ся най­ти
за­гру­зоч­ное уст­рой­ст­во, ко­то­рым обыч­но
яв­ля­ет­ся пер­вый же­ст­кий диск. По­сле его
об­на­ру­же­ния BIOS или EFI ищут глав­ную за­
гру­зоч­ную за­пись (Master Boot Record, MBR)
в са­мом на­ча­ле дис­ка. В MBR со­дер­жит­ся
кро­шеч­ная про­грам­ма, ко­то­рая за­гру ­жа­ет
сле­д ую­щ ую часть за­груз­чи­ка, счи­ты­вая
файл (на­при­мер, e2fs_stage_1_5), ко­то­рый,
в свою оче­редь, мо­жет вы­звать за­груз­чик
Grub. Со­об­ще­ние об «от­сут­ст­вую­щей опе­ра­
ци­он­ной сис­те­ме» в этот мо­мент оз­на­ча­ет,
что че­го-то не хва­та­ет — ли­бо Grub, ли­бо
MBR, ли­бо са­мо­го дис­ка.
Ус­пеш­но за­гру­зив­шись, Grub счи­ты­ва­
ет файл menu.lst, со­дер­жа­щий тот вы­бор,
ко­то­рый вы ви­ди­те в ме­ню. Ка­ж ­дая за­пись
в menu.lst по су­ти оп­ре­де­ля­ет диск, раз­
дел и файл, ко­то­рый со­дер­жит яд­ро Linux,
а так ­же файл RAM-дис­ка, ис­поль­зуе­мый
ядром при за­груз­ке. За­пись так­же со­дер­
жит лю­бые до­пол­ни­тель­ные па­ра­мет­ры,
пе­ре­да­вае­мые яд­ру.
За­тем управ­ле­ние пе­ре­да­ет­ся яд­ру, ко­
то­рое пы­та­ет­ся смон­ти­ро­вать кор­не­вую
фай­ло­вую сис­те­му. Это клю­че­вой мо­мент,
и ес­ли по­пыт­ка за­вер­шит­ся не­удач­но, вы мо­
же­те по­лу­чить па­ни­к у яд­ра или сис­те­ма
мо­жет за­вис­нуть.При ус­пе­хе по­пыт­ки сис­
те­ма соз­да­ет один про­цесс из фай­ла /sbin/
upstart (в дру­гих ди­ст­ри­бу­ти­вах ис­поль­
зу­ет­ся init) — а ес­ли что-то пой­дет не так,
вы по­лу­чи­те па­ни­к у яд­ра, и сис­те­ма мо­жет
сно­ва за­вис­нуть или пе­ре­бро­сить вас в обо­
лоч­к у root. В этот мо­мент upstart на­чи­нать
за­пус­кать скрип­ты и со­бы­тия upstart для
за­пус­ка дру­гих сер­ви­сов, и в ко­неч­ном ито­ге
на эк­ра­не по­яв­ля­ет­ся ок­но вхо­да в сис­те­му.
по­л у­чить кон­к рет­ное со­об­ще­ние об ошиб­ке или про­с то ви­деть
толь­ко Grub и ни­че­го дру­го­го — то есть за­груз­чик не мо­жет най­ти
да ­же са­мой не­об­хо­ди­мой ин­фор­ма­ции для про­дол­же­ния за­груз­ки.
На­жав c, вы смо­же­те вой­ти в ре­жим тер­ми­на­ла Grub и вы­пол­
нить про­с тые про­вер­к и или что-то ис­пра­вить — на­при­мер, за­
пус­тить за­груз­к у вруч­ную, на ­жав Ctrl + X или F10, или вы­пол­нить
на­бор ко­манд для про­смот­ра те­к у­щих на­стро­ек и из­ме­не­ний ба­
зо­вых на­с тро­ек, на­при­мер, гра­фи­че­­ско­­го ре­жи­ма. Пол­ное ру­ко­
вод­с тво по ин­с т­ру­мен­там для уст­ра­не­ния не­по­ла­док в Grub до­
ступ­но по ссыл­ке http://bit.ly/Grub2Troubleshooting, но пом­ни­те, что
в боль­шин­ст­ве слу­ча­ев про­ще вос­поль­зо­вать­ся Boot-Repair.
Ес­ли ме­ню Grub по­яв­ля­ет­ся и при вы­бо­ре од­но­го из пунк ­тов
ме­ню сис­те­ма за­ви­са­ет, то про­бле­ма мо­жет быть свя­за­на с фай­
лом на­строй­ки Grub. Но ес­ли Linux на­чи­на­ет за­гру­жать­ся и за­ви­
са­ет толь­ко по­том, то про­бле­ма свя­за­на с опе­ра­ци­он­ной сис­те­
мой; в этом слу­чае пе­рей­ди­те к раз­де­лу «Не­по­ла­дки вслед за Grub»
(см. стр. 60).
Ин­ст­ру­мент Boot-Repair
Ес­ли вам не уда­ет­ся ис­пра­вить про­бле­мы с Grub вруч­ную или ес­ли
в сис­те­ме во­об­ще нет сле­дов Grub, на­до вос­поль­зо­вать­ся ус­лу­га­ми
дис­ка ава­рий­но­го вос­ста­нов­ле­ния и ин­ст­ру­мен­та Boot-Repair, ко­
то­рый ра­бо­та­ет со все­ми ди­ст­ри­бу­ти­ва­ми на ба­зе Debian, вклю­чая
Ubuntu. Ин­ст­ру­мент Boot-Repair за­пус­тит­ся ав­то­ма­ти­че­­ски при за­
груз­ке с дис­ка Boot-Repair, а ес­ли вы не смо­же­те соз­дать этот диск,
> По­яв­ле­ние ме­ню Grub — важ­ный мо­мент про­цес­са за­груз­ки.
Ес­ли за­груз­ка за­шла так да­ле­ко, шан­сов вос­ста­но­вить сис­те­му
го­раз­до боль­ше.
но у вас есть ус­та­но­воч­ный диск Linux, за­гру­зи­те Live-сре­ду, а за­
тем и ин­ст­ру­мент Boot-Repair, сле­дую­щи­ми ко­ман­да­ми:
$ sudo add-apt-repository ppa:yannubuntu/boot-repair
$ sudo apt-get update
$ sudo apt-get install boot-repair
$ boot-repair
Ин­с т­ру­мент Boot-Repair по­зво­ля­ет ре­шить про­бле­мы ран­ней
ста­д ии за­г руз­к и, вы­з ван­н ые за­г ру­з оч­н ым сек ­т о­р ом же­с т­ко­г о
дис­ка, глав­ной за­гру­зоч­ной за­пи­сью и Grub. По су­ти это удоб­ная
и дру­же­люб­ная к поль­зо­ва­те­лю гра­фи­че­­ская обо­лоч­ка для ути­
лит ко­манд­ной стро­ки, тре­буе­мых для ре­ше­ния мно­гих про­блем.
В Boot-Repair есть опция Recommended repair [Ре­ко­мен­дуе­мое вос­
ста­нов­ле­ние], ко­то­рая обе­ща­ет ре­шить боль­шин­ст­во рас­про­стра­
нен­ных про­блем. Или мож­но вы­брать Advanced options [До­пол­ни­
тель­ные па­ра­мет­ры], что­бы уви­деть, на что спо­соб­но сред­с т­во,
и вы­п ол­н ить не­о б­хо­д и­м ые ис­п рав­л е­н ия вруч­н ую, не пач­к а­я сь
с тер­ми­на ­лом. В по­ша­го­вом ру­ко­во­дстве (см. «Из­ме­не­ние на­стро­ек
ин­ст­ру­мен­та Boot-Repair», стр. 61) опи­са­ны воз­мож­ные ва­ри­ан­ты
вос­ста­нов­ле­ния и на­строй­ки, но уч­ти­те, что ра­бо­та сред­ст­ва за­ви­
сит от кон­тек­ста, и мно­гие па­ра­мет­ры мо­г ут быть не­дос­т уп­ны или
от­сут­ст­во­вать, в за­ви­си­мо­сти от ва­шей сис­те­мы.
Ин­с т ­ру ­м ент ав­т о­м а­т и­ч е­­с ки соз ­д а­е т лог-файл дей­с т ­вий ва­
шей сис­те­мы, ко­то­рый за­тем мож­но опуб­ли­ко­вать на поль­зо­ва­
тель­ских фо­ру­мах Ubuntu, что­бы спро­сить со­ве­т а. Пре­ж ­де чем
пред­при­ни­мать лю­бые пе­ре­на­строй­ки, сто­ит сна­ча­ла по­про­бо­вать
ре­ко­мен­дуе­мое вос­ста­нов­ле­ние, а за­тем по­про­сить по­мо­щи на фо­
ру­ме с по­мо­щью лог-фай­лов — это под­кре­пит ваш вы­бор пра­виль­
ных дей­ст­вий и не ухуд­шит ва­шу си­т уа­цию.
Скорая
помощь
При за­груз­ке
с дис­ка ава­рий­но­
го вос­ста­нов­ле­ния
ком­пь­ю­тер ав­то­
ма­ти­че­­ски оп­ре­
де­лит его и за­гру­
зит­ся с не­го. Ес­ли
это­го не про­изош­
ло, от­крой­те ме­ню
за­груз­ки при за­
пус­ке ком­пь­ю­те­ра
(обыч­но кла­ви­шей
F11). Ес­ли не по­
лу­чи­лось, вой­ди­те
в EFI или BIOS и вы­
бе­ри­те диск в ка­че­
­ст­ве пер­во­го уст­
рой­ст­ва за­груз­ки.
Про­бле­мы с за­груз­кой не из-за Grub
> При за­груз­ке с дис­ка ава­рий­но­го вос­ста­нов­ле­ния сра­зу же
про­верь­те, ра­бо­та­ет ли ваш же­ст­кий диск.
Ес­ли вы не дош­ли да­же до за­груз­ки Grub, при­го­дит­ся диск ава­
рий­но­го вос­с та­нов­ле­ния. За­г ру­зив­шись с дис­к а, про­верь­те на­
ли­чие и со­с тоя­ние ва­ше­го же­с т­ко­го дис­ка. От­крой­те фай­ло­вый
ме­нед­жер и убе­ди­тесь, что дос­т уп­ны раз­де­лы и фай­лы на них —
тут са­м ое вре­м я сде ­л ать ко­п ии всех цен­н ых фай ­л ов, пре­ж ­д е
чем про­дол­жить.
Ес­ли ни­че­го не по­яв­ля­ет­ся, про­верь­те, оп­ре­де­ля­ет ли сис­те­
ма ваш же­ст­кий диск, за­пус­тив ути­ли­т у Disks с Ubuntu Live CD —
ес­ли вы поль­зуе­тесь дис­ком Boot-Repair, то по­тре­бу­ет­ся ус­та­но­
вить gnome-disk-utility с по­мо­щ ью ме­нед ­же­ра па­ке­тов Synaptic
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 59
Учебник Проблемы с загрузкой
Скорая
помощь
Сис­тем­ные жур­на­
лы — цен­ный ис­
точ­ник ин­фор­ма­
ции для ре­ше­ния
про­блем. Их мож­но
от­крыть из ка­та­
ло­га /var/log с по­
мо­щью фай­ло­во­го
ме­нед ­же­ра ва­ше­
го дис­ка ава­рий­
но­го вос­ста­нов­ле­
ния или ре­дак ­то­ра
nano в обо­лоч­ке.
В ча­ст­но­сти, об­
ра­ти­те вни­ма­ние
на syslog и ко­ман­д у
обо­лоч­ки dmesg.
в раз­де­ле System Tools [Сис­тем­ные ин­ст­ру­мен­ты]. По­сле ус­та­нов­ки
от­крой­те его из ме­ню Accessibility [Дос­т уп­ность]. Ути­ли­та Disks вы­
во­дит спи­сок всех фи­зи­че­­ски под­к лю­чен­ных дис­ков — ес­ли ва­ше­
го нет, мо­жет ока­зать­ся, что он вы­шел из строя; то­гда рас­ко­ше­ли­
вай­тесь на но­вый диск и дос­та­вай­те по­след­нюю ре­зерв­ную ко­пию,
или на­чи­най­те с ну­ля со све­жей ус­та­нов­кой Ubuntu, за­од­но об­за­ве­
дясь при­выч­кой де­лать ре­зерв­ные ко­пии сис­те­мы. Ес­ли диск поя­
вил­ся, вы­бе­ри­те его из ме­ню сле­ва, где мож­но про­смот­реть его
таб­ли­ц у раз ­де ­лов и фи­зи­че­­ское со­с тоя­ние с по­мо­щ ью ат ­ри­бу­
тов SMART [Ред.: — Не та­кие уж они и ум­ные.]. Не па­ни­к уй­те, ес­ли
диск не при по­след­нем из­ды­ха­нии, но об­ра­ти­те вни­ма­ние на са­ми
раз­де­лы. Ес­ли вы за­пус­ти­ли сред­ст­во Boot-Repair, его ре­ко­мен­до­
ван­ные на­строй­ки вклю­ча­ют пол­ную про­вер­к у дис­ка, но ее мож­но
вы­пол­нить и вруч­ную с по­мо­щью GParted, ко­то­рая есть на обо­их
дис­ках ава­рий­но­го вос­ста­нов­ле­ния.
GParted по­зво­ля­ет уз­нать, как ор­га­ни­зо­ва­ны раз­де­лы, и оп­ре­
де­лить, ко­то­рый из них за­гру­зоч­ный. Щелк­ни­те по не­му пра­вой
кноп­кой мы­ши и убе­ди­тесь, что пункт Mount [Мон­ти­ро­вать] не­до­
с­т у­пен, за­тем вы­бе­ри­те Check to schedule a disk check using the fsck
tool [За­пла­ни­ро­вать про­вер­к у дис­ка с по­мо­щью ути­ли­ты fsck]. По­
сле на­жа­тия кноп­ки Apply [При­ме­нить] эта ути­ли­та про­ве­рит диск
на на­ли­чие оши­бок и по­пы­та­ет­ся их ис­пра­вить, но важ­но, что­бы
диск не был смон­ти­ро­ван пе­ред на­ча ­лом про­вер­ки. Обя­за­тель­но
дай­те про­вер­ке за­вер­шить­ся — она мо­жет за­нять не­сколь­ко ча­
сов или да­же не­сколь­ко дней, но ее от­ме­на поч­ти на­вер­ня­ка при­
ве­дет к по­вре­ж ­де­нию раз­де­ла. Убе­ди­тесь, что про­вер­ка вы­пол­ня­
ет­ся на всех раз­де­лах за­гру­зоч­но­го дис­ка.
В боль­шин­ст­ве слу­ча­ев по­сле вы­пол­не­ния этих про­ве­рок у вас
по край­нем ме­ре сно­ва за­пус­тит­ся Grub, ес­ли диск не по­вре­ж ­ден
фи­зи­че­­ски или раз­дел не ис­пор­чен не­по­пра­ви­мо.
Не­по­лад­ки вслед за Grub
Ес­ли ока­жет­ся, что Grub ра­бо­та­ет вро­де нор­маль­но и про­бле­мы на­
чи­на­ют­ся при за­груз­ке са­мо­го Linux, по­про­буй­те во вре­мя за­груз­
ки пе­ре­к лю­чить­ся в под­роб­ный ре­жим, на­жав кла­ви­шу Esc, что­
бы по­смот­реть, нет ли ка­ких-то за­це­пок в от­ла­доч­ных со­об­ще­ни­ях
(или — не вис­нет ли сис­те­ма в не­кий кон­крет­ный мо­мент). За­пи­
ши­те эти со­об­ще­ния и по­про­буй­те ско­пи­ро­вать их в свой лю­би­мый
по­ис­ко­вик, что­бы най­ти ка­кие-то со­ве­ты в Ин­тер­не­те. Ес­ли не по­
лу­чи­лось, удер­жи­вай­те Shift во вре­мя за­груз­ки, что­бы от­крыть ме­
ню Grub, за­тем вы­бе­ри­те Advanced options [Рас­ши­рен­ные па­ра­мет­
ры] и ‘(recovery mode)’ [ре­жим вос­ста­нов­ле­ния]. При этом Ubuntu
бу­дет за­пу­щен в ми­ни­маль­ном со­стоя­нии, а фай­ло­вая сис­те­ма бу­
дет смон­ти­ро­ва­на в ре­жи­ме толь­ко для чте­ния. Ес­ли это по­лу­чи­
лось, то про­кру­тив со­об­ще­ния, вы долж­ны уви­деть ме­ню вос­ста­
нов­ле­ния с 9 пунк ­та­ми.
> Ре­жим вос­ста­нов­ле­ния Ubuntu по­зво­ля­ет про­ве­рить ва­ри­ан­ты
ре­ше­ния про­бле­мы, ко­гда Grub ра­бо­та­ет, а Ubuntu — нет.
Эти пунк­ты не тре­бу­ют по­яс­не­ний — на­при­мер, clean [Очи­ст­ка]
при­го­дит­ся, ес­ли же­ст­кий диск пе­ре­пол­нен, что и вы­зы­ва­ет про­
бле­мы с за­груз­кой. Ес­ли про­бле­мы на­ча ­лись из-за не­кор­рект­ной
ус­та­нов­ки ка­ко­го-то па­ке­та, dpkg его под ­ле­чит, по­сле че­го сис­те­ма
мо­жет вер­нуть­ся в ра­бо­чее со­стоя­ние.
Пункт failsafeX [Безо­пас­ный ре­жим X] по­ле­зен, ес­ли при за­груз­
ке вы ви­ди­те чер­ный эк­ран или не ра­бо­та­ет гра­фи­че­­ский ра­бо­чий
стол — фак ­ти­че­­ски при вы­бо­ре это­го пунк ­та об­хо­д ят­ся про­бле­
мы с гра­фи­че­­ски­­ми драй­ве­ра­ми или X-сер­ве­ром, и вы по­лу­чае­те
безо­пас­ный гра­фи­че­­ский ре­жим, в ко­то­ром мо­же­те ре­шать про­
бле­мы даль­ше.
Мы уже ка­са­лись ути­ли­ты fsck — она про­ве­рит диск на на­ли­
чие по­вре­ж ­ден­ных фай­лов, что мо­жет из­ба­вить от мно­гих оши­бок,
осо­бен­но ес­ли сис­те­ма «упа ­ла» и по­с ле это­го пе­ре­с та ­ла за­гру­
жать­ся. Пункт grub не ну­жен, ес­ли вы не ис­поль­зо­ва­ли соб­ст­вен­
ные ин­ст­ру­мен­ты вос­ста­нов­ле­ния Grub вме­сто Boot-Repair при вос­
ста­нов­ле­нии за­груз­ки — вы­бор это­го пунк ­та сде­ла­ет из­ме­не­ния
в Grub по­сто­ян­ны­ми.
Вы­бе­ри­те пункт network [Сеть], что­бы вклю­чить сеть, и пункт
root, что­бы пе­ре­к лю­чить­ся в обо­лоч­к у и уст­ра­нять не­по­лад­ки от­т у­
да. При этом обя­за­тель­но смон­ти­руй­те фай­ло­вую сис­те­му в ре­жи­
ме для чте­ния и за­пи­си ко­ман­дой mount -o remount,rw /.
При за­груз­ке так­же мож­но пе­ре­дать Ubuntu вре́менные па­ра­
мет­ры яд­ра, в не­ко­то­рых си­т уа­ци­я х это по­мо­га­ет. Вы­брав свою
опе­ра­ци­он­ную сис­те­му в ме­ню Grub, на­жми­те кла­ви­шу e, что­бы
из­ме­нить файл яд­ра. Про­кру­ти­те вниз до стро­ки, на­чи­наю­щей­ся
с linux — па­ра­мет­ры на­до до­ба­вить в ко­нец этой стро­ки по­сле quiet
splash. Обя­за­тель­но раз­де­ляй­те па­ра­мет­ры про­бе­ла­ми. Сде­лав это,
на­жми­те Ctrl + x для за­груз­ки с эти­ми па­ра­мет­ра­ми.
Уч­ти­те, что все до­бав­ляе­мые здесь па­ра­мет­ры вре́менные —
то есть уда ­л я­ю т­с я при сле­д ую­щ ей за­г руз­ке, по­э то­м у мо­ж е­т е
экс­пе­ри­мен­ти­ро­вать с ни­ми, по­ка не най­де­те ра­бо­чее ре­ше­ние,
Соз­да­ние ре­зерв­ной ко­пии на слу­чай не­уда­чи
Не со­чти­те за при­чу­д у, но при ре­ше­нии про­блем
с за­груз­кой по­ста­рай­тесь пре­ж ­де все­го сде­лать
ре­зерв­ную ко­пию же­ст­ко­го дис­ка — она все­гда
по­зво­лит от­ка­тить сис­те­му до то­го со­стоя­ния,
в ко­то­ром она на ­хо­ди­лась при пер­вом воз­ник­но­
ве­нии про­бле­мы. Ко­неч­но, ес­ли вы дос­та­точ­но
при­леж­ны и ре­г у­ляр­но де­лае­те ре­зерв­ную ко­пию
сис­те­мы, то про­сто смо­же­те все­гда от­ка­тить
ее в ра­бо­чее со­стоя­ние, но пом­ни­те, что это мо­
жет при­вес­ти к по­те­ре дан­ных, ес­ли ваш ка­та­лог
home и ус­та­нов­ка Linux на­хо­д ят­ся на од­ном раз­
де­ле (как по умол­ча­нию и при­ня­то в Ubuntu).
Вам по­на­до­бит­ся под ­хо­д я­щее уст­рой­ст­во
для ре­зерв­но­го ко­пи­ро­ва­ния — обыч­но это
60 | LXF208 Апрель 2016
USB-диск — и сред­ст­во соз­да­ния об­раза все­го
сис­тем­но­го дис­ка. В Live-сре­дах Ubuntu и BootRepair мож­но обой­тись ути­ли­той dd, но диск
для ре­зерв­но­го ко­пи­ро­ва­ния по объему дол­
жен быть не мень­ше, а луч­ше — боль­ше, чем
диск, который вы ко­пи­руе­те.
На дру­гом кон­це диа­па­зо­на слож­но­сти — ин­
струмент Redo Backup & Recovery. Для за­пи­си его
ISO-об­раза раз­ме­ром 261 МБ вам по­на­до­бит­ся
чис­тый CD или DVD, но за­то вы по­лу­чи­те удоб­ный
гра­фи­че­­ский ин­тер­фейс. Об­раз мож­но ска­зать
с сай­та www.redobackup.org — ру­ко­во­дство
по его ис­поль­зо­ва­нию см. в ста­тье «Сбе­жать
с Windows 10», стр. 26 LXF207.
www.linuxformat.ru/subscribe
> Redo Backup & Recovery пре­дос­тав­ля­ет в об­щем
про­стей­ший спо­соб сде­лать без­от­каз­ную ко­пию
все­го же­ст­ко­го дис­ка.
Проблемы с загрузкой Учебник
а за­тем — при не­об­хо­ди­мо­с ти — сде­лай­те из­ме­не­ния по­с то­ян­
ны­ми, из­ме­нив файл на­строй­ки Grub (sudo nano /etc/default/grub).
Па­ра­мет­ры из Live-сре­ды так­же мож­но пе­ре­дать, вы­брав Add
a kernel option [До­ба­вить па­ра­метр яд­ра] в инструменте Boot-Repair.
Спи­сок вклю­ча­ет 15 рас­про­стра­нен­ных па­ра­мет­ров, спо­соб­ных по­
мочь в уст­ра­не­нии не­по­ла­док. При­ме­ры вклю­ча­ют acpi=off, ко­то­
рый от­к лю­ча­ет сис­те­му ACPI, из­вест­ную как при­чи­ну слу­чай­ных
пе­ре­за­гру­зок или за­ви­са­ний сис­те­мы на оп­ре­де­лен­ных ком­пь­ю­
те­рах, и nomodeset, ко­то­рый ве­лит Ubuntu за­гру ­жать гра­фи­че­­ские
драй­ве­ра толь­ко по­с ле за­груз­ки X, но не до нее. Эти вре́менные
па­р а­мет ­ры так ­же мож ­но пе­ре­д ать и дис­к у ава­рий­но­го вос­с та­
нов­ле­ния, ес­ли он не ра­бо­та­ет. На­жми­те F6 на на­чаль­ном эк­ра­не
за­груз­ки, что­бы вы­брать па­ра­метр. Что­бы под­роб­нее уз­нать о па­
ра­мет­рах, вве­ди­те их в по­ис­ко­вую сис­те­му или зай­ди­те на http://bit.
ly/KernelParametersList, там есть пол­ный спи­сок.
Вос­ста­нов­ле­ние ус­та­нов­ки
И по­след­нее, что мож­но сде­лать из за­гру­зоч­но­го ме­ню Grub. Ес­ли
ва­ше яд­ро об­нов­ля­лось, мож­но по­про­бо­в ать за­г ру­зить ста­рую
вер­сию яд­ра в раз­де­ле Grub Advanced options [Рас­ши­рен­ные па­ра­
мет­ры]. Вы уви­ди­те в спи­ске все дос­т уп­ные вер­сии яд­ра и смо­же­те
вер­нуть за­груз­к у пре­ды­ду­щей вер­сии, ес­ли счи­тае­те, что про­бле­му
вы­зва­ло по­с лед­нее яд­ро. Ес­ли это сра­бо­т а­ет, мож­но за­к ре­пить
дан­ную вер­сию, от­ре­д ак ­ти­ро­вав файл на­строй­ки Grub — про­ще
все­го это сде­лать че­рез ин­ст­ру­мент Boot-Repair.
Ес­ли всё осо­бен­но без­ра­до­ст­но, мо­же­те по­пы­тать сча­стья, пе­
ре­ус ­т а­но­вив Ubuntu по­верх се­бя. За­г ру ­зи ­т есь с Ubuntu Live CD
и в от­вет на за­прос вы­бе­ри­те Install Ubuntu [Ус­та­но­вить Ubuntu]. Ко­
гда поя­вит­ся ок­но Installation type [Тип ус­та­нов­ки], в нем воз­ник­нет
но­вый ва­ри­ант, по умол­ча­нию уже вы­бран­ный — Reinstall Ubuntu...
[Пе­ре­ус­та­но­вить Ubuntu...].
В этом ва­ри­ан ­те по су ­т и про­ис­хо­д ит пе­ре­ус ­т а­нов­к а Ubuntu,
не за­тра­ги­ваю­щ ая ка­та­лог или раз­дел home; а зна­чит, со­хра­нят­
ся не толь­ко ва­ши до­к у­мен­ты и дру­гие фай­лы, но и клю­че­вые на­
строй­ки и мно­гие про­грам­мы. Так­же со­хра­нят­ся пунк­ты в ме­ню за­
груз­ки, и вы не по­те­ряе­те дос­т уп к дру­гим опе­ра­ци­он­ным сис­те­мам.
При пе­ре­ус­та­нов­ке за­ме­ня­ют­ся сис­тем­ные фай­лы, что долж­но
ис­ко­ре­нить все по­вре­ж ­ден­ные фай­лы и ожи­вить ваш ком­пь­ю­тер.
Хо­тя ва­ши поль­зо­ва­тель­ские фай­лы за­тро­ну­ты не бу­д ут, со­ве­т у­
ем пе­ред на­ча­лом ра­бо­ты сде­лать ре­зерв­ную ко­пию дис­ка — или
по край­ней ме­ре раз­де­ла или ка­та­ло­га home.
Для га­ран­тии от­сут­ст­вия по­терь обя­за­тель­но за­но­во соз­дай­те
во вре­мя ус­та­нов­ки все учет­ные за­пи­си поль­зо­ва­те­лей с те­ми же
ло­ги­на­ми и па­ро­ля­ми, вклю­чая, ра­зу­ме­ет­ся, ва­шу соб­ст­вен­ную. |
Из­ме­не­ние на­стро­ек ин­ст­ру­мен­та Boot-Repair
1 Ос­нов­ные па­ра­мет­ры
2 Рас­по­ло­же­ние Grub
3 Па­ра­мет­ры Grub
4 Дру­гие на­строй­ки
На пер­вой вклад­ке есть удоб­ная кноп­ка для ре­зерв­но­го ко­пи­ро­ва­ния те­к у­щей таб­
ли­цы раз­де­лов, за­гру­зоч­но­го сек­то­ра и лог-фай­ла — на­жми­те ее, что­бы ско­пи­ро­
вать эту важ­ную ин­фор­ма­цию. Здесь так­же мож­но пе­ре­ус­та­но­вить Grub, вос­ста­но­
вить MBR и вклю­чить или от­к лю­чить ото­бра­же­ние ме­ню Grub. Ес­ли вы ду­мае­те, что
фай­ло­вая сис­те­ма по­вре­ж ­де­на, по­ставь­те га­лоч­к у Repair file systems [Вос­ста­но­вить
фай­ло­вые сис­те­мы], что­бы про­ве­рить ее и ис­пра­вить ошиб­ки.
Этот раз­дел на­чи­на­ет­ся с па­ра­мет­ров, га­ран­ти­рую­щих об­нов­ле­ние Grub до по­след­
ней вер­сии. Так­же пред­ла­га­ют­ся ис­прав­ле­ния трех спе­ци­фи­че­­ских оши­бок. Здесь
так­же мож­но до­ба­вить но­вые па­ра­мет­ры яд­ра в ме­ню Grub или уда­лить все пре­ды­
ду­щие яд­ра пе­ред ус­та­нов­кой по­след­ней вер­сии. Так­же есть па­ра­метр, по­зво­ляю­
щий ре­дак­ти­ро­вать файл на­строй­ки Grub на­пря­мую.
На этой вклад­ке вы можете вы­брать, ка­к ую именно ОС за­гру­жать по умол­ча­нию
в муль­ти­загрузоч­ной кон­фи­г у­ра­ции. Вы так­же мо­же­те раз­мес­тить Grub на от­дель­
ном раз­де­ле /boot — обыч­но это бывает не­об­хо­ди­мо в случае за­шиф­ро­ван­ных
дис­ков, дис­ков с LVM или не­ко­то­рых ста­рых ком­пь­ю­те­ров. По­след­ний па­ра­метр
ука­зы­ва­ет тот диск, на ко­то­ром рас­по­лагается сам загрузчик Grub (по умол­ча­нию
это sda).
Ес­ли вклад­ка с па­ра­мет­ра­ми MBR дос­т уп­на, ис­поль­зуй­те ее, что­бы вос­ста­но­вить
MBR из ре­зерв­ной ко­пии и вы­брать раз­де­лы, ко­то­рые бу­дут за­гру­жать­ся из нее.
На по­след­ней вклад­ке, Other options [Дру­гие па­ра­мет­ры], мож­но вос­ста­но­вить фай­
лы Windows (в боль­шин­ст­ве слу­ча­ев это не нуж­но) и ско­пи­ро­вать ин­фор­ма­цию
о ва­ших на­строй­ках в тек­сто­вом ви­де для удоб­но­го по­ис­ка в Ин­тер­не­те.
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 61
Gentoo Вы­ход за пре­де­лы ус­та­нов­ки
и ос­вое­ние управ­ле­ния па­ке­та­ми
Gentoo: Ста­вим
че­рез Portage
Нейл Бот­вик вы­хо­дит за рам­ки обыч­но­го ру­ко­во­дства по обу­че­нию ус­та­нов­ке
Gentoo, что­бы по­ка­зать, как на­до ис­поль­зо­вать гиб­кий ди­ст­ри­бу­тив.
Наш
экс­перт
Нейл Бот­вик име­ет
боль­шой опыт ра­
бо­ты с за­груз­кой,
ведь у не­го по ком­
пь­ю­те­ру в ка­ж ­дой
ком­на­те, и го­раз­
до мень­ший —
с пе­ре­за­груз­кой,
по­сколь­к у он пе­ре­
шел на Linux.
> Ис­поль­зо­ва­ние
-uaN @world для
ус­та­нов­ки па­ке­тов
с об­нов­ле­ния­ми или
от­ме­чен­ных фла­
гом USE.
В
ре­мя от вре­ме­ни мы пи­шем ру­ко­во­дство для на­чи­наю­щих
для на­ча­ла ра­бо­ты с Gentoo — я это знаю, по­то­му что как
ми­ни­мум од­но на­пи­сал сам. Они, как пра­ви­ло, ос­но­ва­ны
на пер­вой час­ти пре­вос­ход­ной Gentoo Handbook по соз­да­нию ра­
бо­чей сис­те­мы. А по­том поль­зо­ва­те­лю ос­та­ет­ся чи­тать ин­ст­рук­цию
и на­де­ять­ся на се­бя, так что здесь мы рас­смот­рим ос­нов­ной эле­
мент Portage и как его ис­поль­зо­вать для под­дер­жа­ния сис­те­мы
Gentoo по­сле ус­та­нов­ки.
На­зва­ние ‘Portage’ на са­мом де­ле обо­зна­ча­ет два от­дель­ных,
но взаи­мо­свя­зан­ных объ­ек­та. В пер­вую оче­редь это са­ма сис­те­ма
управ­ле­ния па­ке­та­ми, ис­поль­зуе­мая для ус­та­нов­ки, об­нов­ле­ния
и уда­ле­ния па­ке­тов. Кро­ме то­го, есть де­ре­во пор­те­жей, т. е. кол­лек­
ция сбо­роч­ных фай­лов [ebuild], ис­поль­зуе­мых Portage для управ­
ле­ния ус­та­нов­лен­ным про­грамм­ным обес­пе­че­ни­ем. Это раз­ли­чие
бы­ло не столь важ­но, но сей­час есть аль­тер­на­тив­ные ме­нед ­же­
ры па­ке­тов для Gentoo, ко­то­рый по-преж­не­му ис­поль­зу­ют де­ре­во
пор­те­жей. Здесь мы рас­смот­рим толь­ко ме­нед­жер па­ке­тов Portage,
а при ссыл­ке на кол­лек­цию ebuild бу­дем ис­поль­зо­вать тер­мин «де­
ре­во пор­те­жей», во из­бе­жа­ние пу­та­ни­цы.
В Gentoo поч­ти все па­ке­ты со­би­ра­ют­ся из ис­ход­ни­ков. Пе­дан­ты
сре­ди вас мо­г ут ут­вер­ж дать, что то же са­мое вер­но для па­ке­тов
Debian или Fedora, и бу­д ут пра­вы (а кое-ко­го лю­ди на ве­че­рин­ках
из­бе­га­ют). Раз­ни­ц а в том, что в этих ди­ст­ри­бу­ти­вах раз­ра­бот­чи­
ки ком­пи­ли­ру­ют про­грам­мы и соз­да­ют хра­ни­ли­ща (ре­по­зи­то­рии)
дво­ич­ных па­ке­тов, эф­фек ­тив­но ар­хи­ви­ро­ван­ные; они рас­па­ко­вы­
ва­ют­ся на же­ст­кий диск (с не­ко­то­ры­ми дей­ст­вия­ми по на­строй­ке).
А в Gentoo ком­пи­ля­ция вы­пол­ня­ет­ся поль­зо­ва­те­лем при ус­та­нов­ке
па­ке­та. Вме­сто ре­по­зи­то­ри­ев дво­ич­ных па­ке­тов де­ре­во пор­те­жей
в Gentoo со­дер­жит ebuild’ы, ко­то­рые пред­став­ля­ют со­бой ко­рот­кие
сце­на­рии обо­лоч­ки, опи­сы­ваю­щие, как за­гру­зить ис­ход­ный код,
ском­пи­ли­ро­вать и ус­та­но­вить его. В об­щей слож­но­сти это все­го
не­сколь­ко со­тен ме­га­байт, так что хра­нит­ся ло­каль­но. Оно син­хро­
ни­зи­ру­ет­ся с глав­ным де­ре­вом, что нуж­но де­лать как ми­ни­мум раз
в па­ру не­дель, но не ча­ще раза в день (ко­ман­дой $ emerge --sync).
Ес­ли у вас есть по­след­няя ко­пия де­ре­ва пор­те­жей, вы, ве­ро­ят­но,
за ­хо­ти­те убе­дить­ся, что ус­та­нов­лен­ное про­грамм­ное обес­пе­че­
ние в ак­т у­а ль­ном со­стоя­нии: $ emerge --update --deep --ask @world.
Имя па­ке­та, ко­то­ро­му пред­ше­с т­ву­ет @, оз­на­ча­ет на­бор, кол­
лек­цию па­ке­тов. Есть два на­бо­ра, оп­ре­де­лен­ные по умол­ча­нию:
@world со­дер­жит все про­грамм­ное обес­пе­че­ние, ко­то­рое вы ус­
та­но­ви­ли, а @system — ос­нов­ные па­ке­т ы. Для этих двух на­бо­
ров на­чаль­ный @ не обя­за­те­лен в си­лу ис­то­ри­че­­ских при­чин, так
что мож ­но встре­т ить на­пи­с а­ние $ emerge -uDa world. Зна­че­ние
--update долж­но быть оче­вид­но; --ask пе­ре­чис­ля­ет, что он бу­дет
де­лать, и ждет под­твер­ж де­ния (есть так­же --pretend), а --deep вы­
пол­н я­е т бо­л ее глу­б о­к ий ана ­лиз за­ви­с и­м о­с тей (что уве­ли­чи­в а­
ет вре­мя на соз­да­ние спи­ска па­ке­тов для ус­та­нов­ки и со­вер­шен­
но не обя­за­тель­но).
Ус­та­нов­ка и уда­ле­ние
А ес­ли вы что-то ус­та­но­ви­ли, но ре­ши­ли, что вам это­го не на­до?
Мож­но ис­поль­зо­вать $ emerge -Ca sys-apps/foo apps-misc/bar как
62 | LXF208 Апрель 2016
www.linuxformat.ru/subscribe
Gentoo Учебник
Атом­ные чис­ла
По всей до­к у­мен­та­ции Gentoo вы уви­ди­те ссыл­ки на ато­мы. Атом — это спе­ци­фи­ка­
ция па­ке­та, как ‘gimp’ или ‘media-gfx/gimp’. При ус­та­нов­ке фай­лов часть с ка­те­го­ри­ей
яв­ля­ет­ся обя­за­тель­ной, лишь ес­ли есть па­ке­ты с оди­на­ко­вы­ми на­зва­ния­ми в раз­ных
ка­те­го­ри­ях. В ато­ме мож­но так­же ука­зать вер­сии, что мо­жет быть по­лез­но, на­при­мер,
в package.use:
sys-apps/foo
=sys-apps/foo-1.2.3
~sys-apps/foo-1.2.3
<sys-apps/foo-1.2.4
Пер­вое со­от­вет­ст­ву­ет лю­бой вер­сии foo, вто­рое — толь­ко вер­сии 1.2.3, третье со­от­
вет­ст­ву­ет вер­сии плюс лю­бые не­зна­чи­тель­ные пе­ре­смот­ры, как foo-1.2.3‑r1, а по­след­нее
со­от­вет­ст­ву­ет лю­бой вер­сии стар­ше 1.2.4.
> Файл в /etc/portage/package.use по­ка­зы­ва­ет из­ме­не­ния фла­га
USE для оп­ре­де­лен­ных па­ке­тов. Об­ра­ти­те вни­ма­ние, что ком­мен­та­
рии здесь раз­ре­ше­ны и очень да­же по­ощ­ря­ют­ся.
-C или --unmerge, что при­ну­ди­тель­но уда­ля­ет ука­зан­ные па­ке­ты.
Хо­ро­шая идея взять в при­выч­к у с ко­ман­дой emerge ис­поль­зо­вать
-a (--ask), это да­ет вам шанс вер­нуть­ся, ес­ли вы сде­лае­те ошиб­
ку. Это уда­ля­ет па­ке­ты foo и bar, но при их ус­та­нов­ке Portage мо­
жет так­же ус­та­но­вить за­ви­си­мо­сти, на­при­мер, libfoo и libbar. На­
до ли их то­же уда­лять? Мо­жете ли вы хо­тя бы вспом­нить, ка­кие они
бы­ли? Не по­тре­бу­ют­ся ли они для че­го-то еще? Пол­ные от­ве­ты да­
ют ко­ман­да --depclean или оп­ция -c.
По ко­м ан­д е без ука ­з а­ния па­ке­т ов, ти­п а $ emerge -ca (об­р а­
тите вни­ма­ние на ис­поль­зо­ва­ние -c в про­ти­во­по­лож­ность -C вы­
ше), Portage про­ска­ни­ру­ет сис­те­му на пред­мет лю­бых па­ке­тов, ко­
то­рые не яв­ля­ют­ся за­ви­си­мо­стя­ми че­го-ни­будь в @world, и уда­лит
их. Эта ко­ман­д а ко­гда-то счи­та ­лись по­тен­ци­а ль­но рис­ко­ван­ной,
но уже не первый год она со­вер­шен­но безо­пас­на в ис­поль­зо­ва­нии.
Пре­ж ­де чем про­дол­жить, про­верь­те спи­сок па­ке­тов. Как поч­ти все­
гда в Gentoo: ес­ли вы хо­ти­те вы­стре­лить се­бе в но­г у, он бу­дет сча­
ст­лив пре­дос­та­вить за­ря­жен­ный пис­то­лет.
Вме­с то --unmerge мож­но так­же ис­поль­зо­вать --depclean (те­
перь это ре­ко­мен­д уе­мый спо­соб уда ­ле­ния па­ке­та). Так ­же мож­но
ис­поль­зо­вать $ emerge -cav sys-apps/foo. Эта ко­ман­д а про­ве­рит,
что foo не тре­бу­ет­ся для че­го-то еще, пре­ж ­де чем уда­лить его.
Как пре­кра­сен этот @world
От­к у­да Portage зна­ет, что есть в @world? От­к у­да он зна­ет, ка­кие па­
ке­ты вам нуж­ны, а ка­кие там про­сто в ка­че­­ст­ве за­ви­си­мо­стей? От­
вет на­хо­дит­ся в фай­ле /var/lib/portage/world. Это про­сто спи­сок ус­
та­нов­лен­ных ва­ми па­ке­тов, так что ес­ли вы ус­та­но­ви­ли sys-apps/
foo, а Portage до­ба­вил sys-libs/libfoo, в фай­ле world поя­вит­ся толь­
ко foo. При уда­ле­нии foo Portage зна­ет, что ес­ли libfoo ни­че­му боль­
ше не тре­бу­ет­ся, depclean мо­жет уда­лить libfoo. Это при­во­дит нас
к клас­си­че­­ской ошиб­ке но­вых поль­зо­ва­те­лей, за­гряз­няю­щих файл
world ус­та­нов­кой па­ке­тов, ко­то­рые долж­ны быть там толь­ко в ка­че­
­ст­ве за­ви­си­мо­стей, ча­ще все­го биб­лио­тек. На­бор @world дол­жен
со­дер­жать толь­ко ис­поль­зуе­мые про­грам­мы, но не па­ке­ты, ко­то­
рые они ис­поль­зу­ют. Ес­ли вы про­сто хо­ти­те что-то на­скоро по­про­
бо­вать, ис­поль­зуй­те оп­цию --oneshot (-1), что­бы не вно­сить это
в @world, на­при­мер: $ emerge -1a libfoo.
Фла­ги USE при­над­ле­жат к од­ним из са­мых по­лез­ных и са­мых
не­по­ня­тых функ­ций Portage. При соз­д а­нии па­ке­та они управ­ля­
ют до­ба­воч­ны­ми воз­мож­но­с тя­ми: на­при­мер, ес­ли до­ба­вить ска­
нер в USE при ус­та­нов­ке Wine, он бу­дет по­стро­ен с под­держ­кой ис­
поль­зо­ва­ния ска­не­ра в про­грам­мах Windows. Вклю­че­ние -scanner
в USE при ус­та­нов­ке XSane не бу­дет иметь смыс­ла, по­сколь­к у Xsane
и са­ма тре­бу­ет ска­нер. Фла­ги USE мо­г ут быть за­да­ны тре­мя спо­
со­ба­ми. Для гло­баль­но­го ис­поль­зо­в а­ния они ус­т а­нав­ли­в а­ют­с я
в /etc/portage/make.conf, ко­то­рый вы соз­д а­ли во вре­мя ус­та­нов­
ки. Для от­дель­но­го па­ке­та их мож­но за­дать в ко­манд­ной стро­ке:
$ USE=“foo” emerge -1a bar.
Хо­тя это по­лез­но для тес­ти­ро­ва­ния, та­кой па­ра­метр бу­дет пере­
оп­р е­д е­лен при сле­д ую­щ ем по­яв­ле­нии дан­но­г о па­ке­т а. Portage
обес­пе­чи­ва­ет ме­ха­низм из­ме­не­ния фла­гов USE для от­дель­ных па­
ке­тов пу­тем пе­ре­чис­ле­ния их в /etc/portage/package.use. Это мо­жет
быть файл или ка­та­лог. Ес­ли это ка­та­лог, учи­ты­ва­ют­ся со­дер­жи­
мое всех фай­лов в нем. По ме­ре до­бав­ле­ния ис­к лю­че­ний вы мо­
жете об­на­ру­жить, что это упро­щает ор­га­ни­за­цию. Ка­ж ­дая стро­ка
пред­с тав­ля­ет со­бой атом па­ке­та и спи­сок фла­гов USE, ко­то­рые
к не­му при­ме­ня­ют­ся, на­при­мер, sys-app.foo bar -baz.
Ко­ман­да emerge име­ет па­ру клю­чей для дей­ст­вий с из­ме­не­ния­
ми фла­гов USE, ли­бо ре­дак­ти­ро­ва­ни­ем этих фай­лов, ли­бо из­ме­
не­ния­ми в ebuild:
$ emerge -a --newuse @world
$ emerge -a --changed-use @world
С --newuse (или -N) все па­ке­ты, для ко­то­рых из­ме­ни­лись фла­
ги USE, пе­р е­с о­б и­р а­ю т­с я. Вто­р ой ва­р и­а нт толь­ко пе­р е­у с­т а­н ав­
ли­ва­ет па­ке­ты, у ко­то­рых ис­поль­зу­ют­ся из­ме­нен­ные фла­ги, что
по­зво­ля­ет из­бе­жать не­нуж­ных пе­ре­сбо­рок. Ко­гда вы emerge ка­
кой-ли­бо па­кет с -a или -p, Portage по­ка­зы­ва­ет ва­ши фла­ги USE
для па­кета и их со­стоя­ние, но не го­во­рит вам, что они оз­на­ча­ют.
Ус­та­но­вив app-portage/euses, вы мо­же­те уви­деть опи­са­ние ка­ж­
до­го фла­га USE:
$ euses scanner
scanner - Add support for scanner hardware (e.g. build the sane
frontend in kdegraphics)
net-print/hplip:scanner - Enable scanner on multifunction devices
which support it
Ес­ли вы ду­мае­те о сме­не фла­га USE гло­баль­но и хо­ти­те знать,
ка­кие из па­ке­тов бу­дут за­тро­ну­ты, equery hasuse scanner по­ка ­жет
вам все ус­та­нов­лен­ные па­ке­ты, учи­ты­ваю­щие этот флаг. Equery
яв ­ля­е т­с я ча­с тью app-portage/gentoolkit, ко­то­рый сто­и т ус ­т а­но­
вить сра­зу.
Есть и дру­гие па­ке­ты, ко­то­рые сто­ит ус­та­но­вить:
» app-portage/eix Соз­да­ет ба­зу дан­ных для по­ис­ка дос­т уп­ных и ус­
та­нов­лен­ных па­ке­тов; так ­же вклю­ча­ет про­грам­му eix-sync, ко­то­рая
об­нов­ля­ет де­ре­во пор­те­жей и ба­зу дан­ных од­ной ко­ман­дой.
» app-portage/genlop Ра­бо­та­ет с фай­ла­ми жур­на ­ла emerge и мо­жет
дать по­лез­ную ин­фор­ма­цию, вклю­чая про­гно­зы про­дол­жи­тель­но­
сти те­к у­щей опе­ра­ции.
» app-portage/portage-utils Со­дер­жит ути­ли­ты Q: qlist по­ка­зы­ва­
ет фай­лы, ус­та­нов­лен­ные па­ке­том; qfile рас­ска­жет, ка­кой па­кет ус­
та­но­вил кон­крет­ный файл; а qlop вы­пол­ня­ет функ­цию, ана ­ло­гич­
ную genlop.
Мно­го че­го еще есть в Portage; здесь мы рас­смот­ре­ли не­ко­то­
рые ос­но­вы, в сле­дую­щем ме­ся­це ох­ва­тим боль­ше. |
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 63
ProcenvПо­ни­ма­ние ок­ру­же­ния про­цес­са
для тес­ти­ро­ва­ния сис­те­мы
Procenv: Тест
ок­ру­же­ния
Джеймс Хант, соз­да­тель procenv, опи­сы­ва­ет свою мощ­ную ути­ли­ту,
по­ка­зы­ваю­щую все воз­мож­ные ас­пек­ты сре­ды, в ко­то­рой она ра­бо­та­ет.
Н
Наш
эксперт
Джеймс Хант яв­
ля­ет­ся раз­ра­бот­
чи­ком СПО и тру­
дит­ся в Intel Open
Source Technology
Center над ди­ст­
ри­бу ­ти­вом Clear
Linux.
Скорая
помощь
Ес­ли вы пред­по­чи­
тае­те бо­лее дру­
же­люб­ный ин­
ст­ру­мент, чем
спар­тан­ский diff(1),
есть по­пу­ляр­ные
гра­фи­че­­ские ин­
тер­фей­сы к diff —
meld и kdiff3. Ко­му
нуж­ны от­лич­ные
ха­рак­те­ри­сти­ки,
под­держ­ка очень
боль­ших фай­лов
из­ме­не­ний и не­ве­
ро­ят­ная ско­рость,
тем сле­д у­ет рас­
смот­реть xxdiff.
а этом уро­ке мы рас­смот­рим ин­ст­ру­мент ко­манд­ной стро­
ки procenv. Он был на­пи­сан для ре­ше­ния кон­крет­ных ре­
аль­ных про­блем, но по­ле­зен во мно­гих си­т уа­ци­ях. Вопер­вых, ли­ри­че­­ское от­с ту­п­ле­ние. Пред­с тавь­те се­бе сле­д ую­щий
сце­на­рий: 7 ве­че­ра, и у про­грам­ми­ста-аса Али­сы воз­ник­ла про­бле­
ма — она ис­пра­ви­ла кри­ти­че­скую ошиб­к у кли­ен­та, но от­дел ис­пы­
та­ний со­об­щил, что те­перь при­ло­же­ние па­да­ет при за­пус­ке на тес­
то­вом сер­ве­ре.
Али­са удив­ля­ет­ся, как это воз­мож­но — ведь обе сис­те­мы ис­
поль­зу­ют од­ну вер­сию ОС, а в ее сис­те­ме при­ло­же­ние от­лич­но ра­
бо­та­ет. Ес­ли она не­мед­ля не вы­яс­нит, чем ее сис­те­ма от­ли­ча­ет­ся
от тес­то­вой, ее ждет дол­гая ночь в офи­се. Не­дол­го ду­мая, она пи­
шет сце­на­рий обо­лоч­ки, что­бы по­пы­тать­ся вы­явить раз­ли­чия ме­
ж ­ду дву­мя сис­те­ма­ми:
#!/bin/bash
echo -n “user: “; whoami
echo -n “directory: “; pwd
echo “environment variables:”; env
echo “ulimit:”; ulimit -a
echo “file descriptors:”; ls -l /proc/self/fd/
Для тех из вас, ко­му еще не при­хо­ди­лось пи­сать та­кой скрипт
(или кто про­сто от­ка­зы­ва­ет­ся это при­знать), скрипт этот пред­на­
зна­чен для за­пус­ка в двух мес­тах:
» В сре­де, где ва­ша про­грам­ма ра­бо­та­ет (воз­мож­но, на ва­шем ра­
бо­чем ком­пь­ю­те­ре или в сис­те­ме раз­ра­бот­ки).
» В сре­де, где ва­ша про­грам­ма упор­но от­ка­зы­ва­ет­ся ра­бо­тать (ско­
рее все­го, в тес­то­вой или про­из­вод­ст­вен­ной сис­те­ме).
Али­са на­де­ет­ся: срав­нив вы­вод скрип­та в обе­их сис­те­мах, она
су­ме­ет вы­явить раз­ли­чия, ко­то­рые да­дут ключ к по­ни­ма­нию, по­че­
му ра­бо­чее при­ло­же­ние па­да­ет. К со­жа­ле­нию, ночь у Али­сы бу­дет
длин­ной, по­то­му что скрипт про­сто не да­ет дос­та­точ­но под­роб­но­
стей. Эх, знай она толь­ко про ин­ст­ру­мент, ко­то­рый обес­пе­чи­ва­ет
иде­а ль­ное ре­ше­ние: procenv...
(Ого­вор­ка: Джеймс Хант на­пи­сал procenv, что­бы ре­шить па­ру
ин­те­рес­ных за­дач — см. врез­к у об истории procenv на с. 65) Это
очень про­с той ин­с т­ру­мент, ко­то­рый по умол­ча­нию вы­во­дит все
воз­мож­ные ас­пек­ты сре­ды, в ко­то­рой он ра­бо­та­ет. Тер­мин «сре­
да» ну­ж ­да­ет­ся в не­ко­то­ром уточ­не­нии; procenv ис­поль­зу­ет тер­мин
«сре­д а» в до­воль­но ли­бе­раль­ном смыс­ле, сти­рая гра­ни­цы ме­ж­
ду «про­цесс» и «сис­те­ма». По су­ти, он за­пра­ши­ва­ет все воз­мож­
ные ас­пек ­ты сре­ды, в ко­то­рой ра­бо­та­ет, с точ­ки зре­ния про­цес­са.
Ес­ли у вас есть не­ко­то­рый опыт про­грам­ми­ро­ва­ния на язы­ке
обо­лоч­ки, вы мо­же­те по­ла­гать, что про­цесс сре­ды — это про­сто
на­бор пар пе­ре­мен­ных имя/зна­че­ние, ко­то­ры­ми мож­но управ­лять
с по­мо­щью кон­со­ли:
$ var=foo
$ echo $var
64 | LXF208 Апрель 2016
> У procenv боль­ше опций, чем у аген­та по не­дви­жи­мо­сти!
foo
Лад­но, те­перь спро­сим procenv:
$ procenv --environment | wc -l
105
Здесь я по­про­сил procenv ог­ра­ни­чить ото­бра ­ж ае­мый вы­вод
толь­ко пе­ре­мен­ны­ми сре­ды и по­счи­тал стро­ки вы­во­да ко­ман­дой
wc. Те­перь да­вай­те сно­ва за­пус­тим procenv, но на сей раз без ог­ра­
ни­че­ний, что­бы вы­всти об ок­ру­же­нии всё, что ни есть:
$ procenv | wc -l
4238
Итак, вы ви­ди­те: ок­ру ­же­ние — от­нюдь не од­ни пе­ре­мен­ные.
На са­мом де­ле, procenv вы­да­ет на­столь­ко боль­шой вы­вод, что пол­
ный дамп здесь по­ка­зы­вать не­прак­тич­но.
Изо­би­лие PID
По­сле пе­ре­мен­ных ок­ру ­же­ния, сле­д ую­щим наи­бо­лее оче­вид­ным
ат­ри­бу ­том сре­ды яв­ля­ет­ся его иден­ти­фи­ка­тор про­цес­са или PID.
При за­пус­ке ps или top мож­но уви­деть, что ка­ж ­дый про­цесс име­
ет уни­каль­ный но­мер:
$ echo “current PID=$$”
current PID=1234
Ес­ли вы соз­дае­те но­вый про­цесс, за­пус­кая Bash еще раз (что­бы
соз­дать по­до­бо­лоч­к у), вы по­лу­чи­те но­вый PID, со­от­вет­ст­вую­щий
но­вой обо­лоч­ке:
$ bash -c ‘echo “sub-shell PID=$$”’
sub-shell PID=1235
Что­бы по­дог­реть ап­пе­тит, да­вай­те рас­смот­рим, как procenv по­
ка­зы­ва­ет это, за­пус­тив его два­ж ­ды в Ubuntu и срав­ни­вая ре­зуль­
таты, в од­ном за­тей­ли­вом од­но­строч­ни­ке:
$ diff -u <(procenv --process) <(procenv --process)
--- /proc/self/fd/11 2015-10-14 20:17:03.147630023 +0100
www.linuxformat.ru/subscribe
Procenv Учебник
+++ /proc/self/fd/12 2015-10-14 20:17:03.147630023 +0100
@@ -1,10 +1,10 @@
process:
- process id (pid): 23893
+ process id (pid): 23894
parent process id (ppid): 23320
session id (sid): 23320 (leader=no)
name: ‘procenv’
- ancestry: 23893 (‘procenv’), 23320 (‘zsh’), 23308 (‘gnometerminal-’), 16776 (‘upstart’), 16660 (‘lightdm’), 16597(‘lightdm’),
1 (‘systemd’)
- process group id: 23893 (leader=yes)
+ ancestry: 23894 (‘procenv’), 23320 (‘zsh’), 23308 (‘gnometerminal-’), 16776 (‘upstart’), 16660 (‘lightdm’), 16597 (‘lightdm’),
1 (‘systemd’)
+ process group id: 23894 (leader=yes)
foreground process group: 23895
terminal: ‘/dev/tty’
has controlling terminal: yes
Здесь мы ви­дим до­воль­но мно­го PID. В этом при­ме­ре вы­пол­ня­
ет­ся два эк­зем­п­ля­ра procenv --process, ко­то­рые ве­лят procenv по­
ка­зать толь­ко де­та­ли про­цес­са. Как мож­но ви­деть, PID из­ме­нил­ся
с 23893 на 23894.
По­сколь­к у ко­ман­ды procenv в ко­ман­де diff за­к лю­че­ны в скоб­
ки, они бу­дут вы­пол­нять­ся в от­дель­ных по­до­бо­лоч­ках, а по­сколь­
ку сим­в ол < ука ­з ан пе­р ед по­д о­б о­л оч­кой, вы­в од ка ­ж ­д ой по­д­­
обо­лоч­ки бу­дет пе­ре­д а­вать­ся в diff (ни­ка­ких вре́менных фай­лов
не тре­бу­ет­ся). Мы ис­поль­зу­ем фор­мат ‘unified diff’ (-u), по­сколь­к у
его лег­че чи­тать (плюс + в пер­вой ко­лон­ке обо­зна­ча­ет до­бав­ле­ние,
а ми­нус — уда­ле­ние).
За­пи­си ро­до­с лов­ной весь­ма ин­те­рес­ны: они демонстриру­ют
PID procenv, его ро­ди­тель­ский PID и PID’ы всех дру­гих «пред­ков»
вплоть до PID 1, де­мо­на init. Они, по су­ще­ст­ву, прослежи­ва­ют од­ну
из «вет­вей» всех PID в сис­те­ме.
На­ко­нец, лю­бо­пыт­ная осо­бен­ность этой ро­до­слов­ной за­к лю­
ча­ет­ся в том, что она по­ка­зы­ва­ет и Upstart, и Systemd. Это по­то­му,
что Systemd те­перь ис­поль­зу­ет­ся в Ubuntu как де­мон init, а Upstart
до сих пор ис­поль­зу­ет­ся для управ­ле­ния гра­фи­че­­ским се­ан­сом
поль­зо­ва­те­ля.
Ну, а что имеется в ок­ру­же­нии, по­ми­мо пе­ре­мен­ных и PID?
Да не­ма­ло — фак­ти­че­­ски так мно­го, что procenv дол­жна груп­пи­
ро­вать вы­вод по ка­те­го­ри­ям: по­след­няя вер­сия procenv (на мо­мент
на­пи­са­ния, 0.42) ото­бра ­жа­ет ин­фор­ма­цию в 36 раз­ных ка­те­го­ри­
ях. Ис­чер­пы­ваю­щий пе­ре­чень все­го, что по­ка­зы­ва­ет procenv, да­
вать не слиш­ком прак­тич­но, но име­на па­ра­мет­ров ко­манд­ной стро­
ки да­ют под­сказ­к у о том, что они уме­ют ото­бра­жать: на­при­мер,
--arguments, --compiler и --libc. В ка­че­­ст­ве при­ме­ра, --libc по­ка­зы­
ва­ет де­та ­ли из стан­дарт­ной биб­лио­те­ки. Для под­роб­ной ин­фор­ма­
ции см. procenv --help или man-стра­ни­цу (procenv(1)).
Да­в ай­те нач­нем с про­с то­го при­ме­ра. При­ме­ча­ние: функ­ц ия
--file= по­лез­на для за­пи­си вы­во­да procenv без воз­мож­но­го ис­ка­
же­ния этих ре­зуль­т а­тов из-за ис­поль­зо­ва­ния пе­ре­на­прав­ле­ния
кон­со­ли. Сна­ча­ла за­пус­ти­те procenv как обыч­ный поль­зо­ва­тель
и за­пи­ши­те вы­вод ко­ман­дой $ procenv file=/tmp/procenv.log. За­тем
за­пус­ти­те procenv как дру­гой поль­зо­ва­тель (здесь — поль­зо­ва­тель
foo) и за­пи­ши­те вы­вод ко­ман­дой $ sudo -u foo procenv --file=/tmp/
procenv-foo.log. И, на­ко­нец, срав­ни­те ре­зуль­та­ты ко­ман­дой $ diff
/tmp/procenv.log /tmp/procenv-foo.log.
Скорая
помощь
Ес­ли вы со­би­рае­
тесь ис­поль­зо­вать
фор­мат вы­во­да
JSON, ре­ко­мен­д у­
ет­ся ус­та­но­вить
от­лич­ную ути­ли­
ту jq, ко­то­рая по­
зво­ля­ет с лег­ко­
стью из­вле­кать
эле­мен­ты. Все пе­
ре­мен­ные procenv
опи­са­ны на его
man-стра­ни­це.
Рас­пи­са­ние про­цес­со­ра
Боль­шин­ст­во со­вре­мен­ных сис­тем име­ют бо­лее од­но­го (вир­т у­а ль­
но­го или фи­зи­че­­ско­­го) про­цес­со­ра. Про­ве­ди­те та­кой экс­пе­ри­мент:
$ diff <(procenv --cpu) <(procenv --cpu). В этом при­ме­ре вы­пол­ня­
ют­ся два эк­зем­п­ля­ра procenv --cpu. По­сколь­к у ко­ман­ды за­к лю­че­
ны в скоб­ки, они бу­д ут вы­пол­нять­ся в от­дель­ных по­до­бо­лоч­ках,
а по­сколь­к у сим­вол < ука­зан пе­ред по­до­бо­лоч­кой, вы­вод ка ­ж ­дой
по­до­бо­лоч­ки бу­дет по­да­вать­ся в diff. Во­прос на за­сып­к у: по­че­му
ко­ман­да вы­ше ино­гда не да­ет вы­вод?
Али­са мог­ла бы ис­поль­зо­вать это для срав­не­ния двух сис­тем,
за­пус­тив procenv на обе­их и срав­нив ре­зуль­та­ты:
# На ма­ши­не Али­сы
$ procenv --file=/tmp/procenv-alice-workstation.log
# На тес­то­вой сис­те­ме
$ procenv --file=/tmp/procenv-test-env.log
А что еще мож­но сде­лать? Вот не­сколь­ко идей. Не­ко­то­рые ре­
зуль­та­ты мо­г ут вас уди­вить. Не вы­яс­нить ли, что на са­мом де­ле
де­ла­ет nohup cmd &, за­пус­тив procenv обыч­ным об­ра­зом и за­пи­
сав вы­вод:
$ procenv --file=/tmp/procenv.log
На­зо­вем это «ба­зо­вым» вы­во­дом. Те­перь за­пус­тим его с nohup,
от­пра­вим в фон с по­мо­щью & и срав­ним два по­лу­чен­ных фай­ла:
$ nohup procenv --file=/tmp/procenv-nohup.log &
Срав­ним его с
$ procenv --file=/tmp/procenv-foreground.log &
Хан­то­ва ис­то­рия procenv
Идею procenv породи­ли два же­ла­ния, ко­торые
грыз­ли ме­ня по­сто­ян­но, и оба ка­са­ют­ся сис­те­мы
ини­циа ­ли­за­ции Upstart, ра­нее ис­поль­зуе­мой
в Ubuntu.
Во-пер­вых, мне был ну ­жен под­твер­ж даю­щий
ин­с т­ру­мент для сце­нар­но­го тес­ти­ро­ва­ния. Upstart
име­ет от­лич­ные мо­д уль­ные тес­ты, но я хо­тел соз­
дать на­бор «за­д а­ний» Upstart для за­пус­ка на ре­
аль­ной сис­те­ме. Эти за­д а­ния бу­д ут под­твер­ж дать
ка­ж ­дый ат­ри­бут сво­его ок­ру­же­ния, ожи­д ае­мый
при вы­пол­не­нии (ок­ру ­же­ние ра­бо­ты Upstart
долж­но со­от­вет­с т­во­вать очень стро­гим оп­ре­де­
ле­ни­ям, как опи­с а­но в man-стра­ни­це upstart(5)).
Мо­ей пер­во­на­чаль­ной мыс­лью бы­ло на­пи­с ать
ин­с т­ру­мент, спо­соб­ный вы­д а­вать со­об­ще­ние;
ес­ли ут­вер­ж де­ние лож­но, то ин­с т­ру­мент вы­во­дит
ошиб­к у и за­вер­ша­ет­ся. Од­на­ко мне не нра­ви­лась
идея пе­ре­д а­чи та­ко­го ут­вер­ж де­ния ин­с т­ру­мен­т у.
Бо­лее яс­ная кон­с т­рук­ция долж­на иметь ин­с т­ру­
мент, про­с то ото­бра ­ж аю­щий пол­ное ок­ру ­же­ние,
по­зво­ляя за­д а­нию про­ве­рить вы­вод ин­с т­ру­мен­та
с по­мо­щью grep(1).
Вто­рым же­ла­ни­ем бы­ло най­ти спо­соб от­лад­
ки уда­лен­но­го тес­ти­ро­ва­ния сбо­ев. Тес­ты Upstart
име­ют ре­шаю­щее зна­че­ние для обес­пе­че­ния ожи­
дае­мо­го по­ве­де­ния сис­те­мы и за­щи­ты от рег­рес­
сий: ес­ли PID 1 не вы­пол­ня­ет­ся, сис­те­ма па­да­ет!
Од­на­ко тес­ты, ко­то­рые от­лич­но делали свое дело
в сис­те­ме раз­ра­бот­ки, ино­гда по за­га­доч­ным при­
чи­нам про­ва­ли­ва­ют­ся в раз­ных дру­гих сис­те­мах.
Я об­на­ру ­жил, что ре­ше­ние этих про­блем край­не
слож­но, по­сколь­к у сис­те­мы за­щи­ще­ны па­ро­ля­ми.
Это оз­на­ча ­ло, что от­лад­ка за­час­т ую ог­ра­ни­чи­ва­ет­ся
чте­ни­ем жур­на ­лов сбор­ки!
По­сколь­к у я не мог вой­ти, сле­д ую­щим ва­ри­ан­том
бы­ло точ­но уз­нать, чем ра­бо­чая сре­да от­ли­ча­ет­ся
от сис­тем раз­ра­бот­ки.
Соз­да­ние инструмента procenv ре­ши­ло обе эти
про­бле­мы, по­сколь­к у он не толь­ко по­ка­зы­ва­ет всё
ок­ру ­же­ние при за­пус­ке, но так ­же за­пус­ка­ет­ся са­м,
ко­гда со­би­ра­ет­ся на уда ­лен­ных сер­ве­рах, ко­то­рые
я упо­мя­нул. Это пре­дос­тав­ля­ет про­стую от­лад­к у
пу ­тем срав­не­ния жур­на ­лов сбор­ки procenv (со­дер­
жа­щих весь вы­вод procenv) с вы­во­дом procenv, ра­
бо­таю­щего на ло­каль­ной сис­те­ме.
»»Подпишитесь на печатную или электронную версиина www.linuxformat.ru/subscribe!
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 65
Учебник Procenv
Скорая
помощь
Ес­ли вы хо­ти­те по­
нять, что имен­но
procenv де­ла­ет, за­
пус­ти­те его че­рез
strace — $ strace
-o /tmp/strace.log
procenv. На manстра­ни­це procenv
пе­ре­чис­ле­ны manстра­ни­цы кон­суль­
та­ций по ка­ж ­дой
функ­ции, что­бы
уз­нать боль­ше:
на­при­мер, раз­дел
--clocks на­пра­вит
вас на man-стра­ни­
цу clock_getres(2).
> Procenv рас­кры­
вает де­та­ли се­те­
во­го ин­тер­фей­са.
$ $SHELL -c ‘procenv --file=/tmp/procenv-background-subshell.
log &’
Мож­но уз­нать, что де­ла­ет пе­ре­на­прав­ле­ние обо­лоч­ки, срав­нив
с ба­зо­вым вы­во­дом сле­дую­щее:
$ procenv --file=/tmp/procenv-redirect.log </dev/null >/dev/null
Что­бы оп­ре­де­лить, что де­ла­ет script(1), срав­ни­те с ба­зо­вым вы­
во­дом сле­дую­щее:
$ script -c ‘procenv --file=/tmp/procenv-script.log’
Мы так­же мо­жем опре­делить, от­ли­ча­ет­ся ли за­пуск ко­ман­ды
в гра­фи­че­­­ской сре­де от за­пус­­ка ее в кон­со­ли, за­пус­тив procenv
--file=/tmp/procenv-emulator.log в gnome-terminal (или в ва­ш ем
лю­би­мом эму­ля­то­ре тер­ми­на ­ла). За­тем за­пус­­ка­ем procenv в на­
стоя­щем тер­ми­на­ле с по­мо­щью Ctrl + Alt + F1, вхо­дим и за­пус­­ка­ем
procenv --file=/tmp/procenv-console.log.
Мож­но так ­же по­про­бо­вать выполнить срав­не­ние раз­лич­ных
обо­ло­чек, ско­ман­довав
$ sh -c ‘procenv --file=/tmp/procenv-sh.log’
$ bash -c ‘procenv --file=/tmp/procenv-bash.log’
$ zsh -c ‘procenv --file=/tmp/procenv-zsh.log’
Сре­да ини­циа­ли­за­ции сис­те­мы
Очень час­то раз­ра­бот­чи­кам и сис­тем­ным ад­ми­ни­ст­ра­то­рам тре­бу­
ет­ся пол­ное по­ни­ма­ние, ка­к ую сре­ду обес­пе­чи­ва­ет ини­циа ­ли­за­ция
сис­те­мы. Вот как мож­но это сде­лать для сис­тем на ба­зе Upstart: вопер­вых, соз­дай­те файл /etc/init/procenv.conf:
description “Display Upstart process environment”
task
exec procenv --file=/tmp/procenv-main.log
pre-start exec procenv --file=/tmp/procenv-pre-start.log
post-start exec procenv --file=/tmp/procenv-post-start.log
post-stop exec procenv --file=/tmp/procenv-post-stop.log
Да­лее за­пус­ти­те за­да­чу $ sudo start procenv. После этого про­
верь­те лог-фай­лы в /tmp.
Аль­т ер­н а­т ив­н о, в ди­с т­р и­б у ­т и­в е Ubuntu мож­н о вы­п ол­н ить
тот же тест, соз­дав файл $HOME/.config/upstart/procenv.conf и сге­
не­ри­ро­вав жур­нал, за­пус­тив (без sudo) $ start procenv. Ес­ли вы ис­
поль­зуе­те сис­те­мы на ба­зе Systemd, вам по­тре­бу­ет­ся соз­дать файл
/lib/systemd/system/procenv.service, со­дер­жа­щий
[Unit]
Description=Display systemd process environment
[Service]
Type=oneshot
ExecStart=/usr/bin/procenv --file=/tmp/procenv-main.log
И сге­не­ри­ро­вать жур­нал:
$ sudo systemctl enable procenv.service
$ sudo systemctl start procenv.service
Про­ве­рить лог-фай­лы мож­но опять-та­ки в /tmp.
Ино­гда вы желаете знать о сре­де то, что из­на­чаль­но ка­жет­ся
не­воз­мож­ным на­блю­дать. Фо­к ус в том, что­бы ис­поль­зо­вать функ­
цию procenv --exec, ис­поль­зую­щ ую один из сис­тем­ных вы­зо­вов
‘exec’, ко­то­рый за­ме­нит те­к у­щий про­цесс дру­гим.
Пред­ставь­те, что вам нуж­но уви­деть точ­ное ок­ру­же­ние, в ко­
то­ром за­пу­ще­на кон­крет­ная про­грам­ма. Воз­мож­но, что эта про­
грам­ма вы­зы­ва­ет­ся дру­гой про­грам­мой в слож­ной це­пи скрип­тов
и дру­гих про­грамм. Как это мож­но сде­лать? Да лег­ко! Пред­ставьте,
что мы хо­тим ви­деть сре­ду, в ко­то­рой вы­зы­ва­ет­ся awk. Во-пер­вых,
мы пе­ре­ме­ща­ем ре­а ль­ный би­нар­ник awk:
$ sudo mv /usr/bin/awk /usr/bin/awk.real
За­тем соз­д а­ем скрипт — под на­з­ванием, допустим, procenv.
sh — со­дер­жа­щий
#!/bin/sh
cmd=$(basename “$0”)
exec /usr/bin/procenv --file=/tmp/procenv-${cmd}.log --exec
-- /usr/bin/${cmd}.real “$*”
Да ­лее мы ус­т а­нав­ли­в а­ем про­г рам­м у как /usr/bin/procenv.sh
ко­м ан­д ой $ sudo install procenv.sh /usr/bin и соз­д а­ем сим­во­ли­
че­скую ссыл­к у из /usr/bin/awk на procenv.sh ко­ман­дой $ sudo ln -s
/usr/bin/procenv.sh /usr/bin/awk.
По­сле это­го фо­к у­са, вся­кий раз, ко­гда вы­пол­ня­ет­ся сим­во­ли­
че­­ская ссыл­ка /usr/bin/awk, на са­мом-то де­ле за­пус­ка­ет­ся скрипт
/usr/bin/procenv.sh, оп­ре­де­ляю­щий имя ко­ман­ды, ко­то­рым она на­
зы­ва ­лась (в дан­ном слу­чае, awk). За­тем скрипт пе­ре­за­пус­тит­ся,
за­пус­тив procenv с тем же PID, что и у скрип­та, а procenv за­пи­шет
свой вы­вод, в дан­ном слу­чае в /tmp/procenv-awk.log. По­с ле это­
го procenv лич­но пе­ре­за­пус­тит ука­зан­ную ко­ман­ду, в дан­ном слу­
чае — /usr/bin/awk.real. Важ­но под­черк­нуть, что всё ука­зан­ное бу­
дет ра­бо­т ать с од­ним и тем же PID: procenv.sh, /usr/bin/procenv
и /usr/bin/awk.real.
Ок­ру­же­ние PID 1
Что, ес­ли бы вы хо­те­ли уз­нать об ок­ру­же­нии, соз­да­вае­мо­го ядром
для де­мо­на init, ко­то­рый за­пус­ка­ет­ся с PID 1? По­сколь­к у де­мон init
дол­жен быть пер­вым про­цес­сом, за­пу­щен­ным в сис­те­ме (и, та­ким
об­ра­зом, по­лу­чить себе PID 1), уже по его оп­ре­де­ле­нию procenv
нель­зя за­пус­тить рань­ше де­мо­на init, вер­но? Не­вер­но.
Мож­но сно­в а ис­поль­зо­в ать трюк с ‘exec’, по­сколь­к у это по­
зво­лит procenv ра­бо­тать как PID 1 и за­тем, за­кон­чив ра­бо­т у, пе­ре­
дать тот же «иден­ти­фи­ка­тор» PID 1 де­мо­ну init. Син­так­сис тре­бу­ет
вы­пол­нять этот трюк не­сколь­ко бо­лее за­п у ­т ан­но, чем в при­ме­
ре вы­ше. Это обу­слов­ле­но тем, что у яд­ра нет уни­вер­саль­но­го ме­
ха­низ­ма пе­ре­да­чи па­ра­мет­ров де­мо­ну init. Сле­до­ва­тель­но, мы за­
ста­в им яд­р о за­д ать две вол­ш еб­н ые пе­р е­м ен­н ые для procenv,
что­бы ска­зать ему, ку­д а пи­сать вы­вод и ко­му пе­ре­д ать ко­ман­д у
по за­вер­ше­нии:
init=/usr/bin/procenv PROCENV_FILE=/dev/
ttyS0PROCENV_EXEC=”/lib/systemd/systemd”
Уч­ти­те, что вам тре­бу­ет­ся яд­ро, спо­соб­ное пре­об­ра­зо­вы­вать
«не­и з­в ест­ные» па­р а­м ет­р ы ко­м анд­н ой стро­к и яд­р а в пе­р е­м ен­
ные сре­ды. Ubuntu де­ла­ет это, но яд­ра дру­гих ди­ст­ри­бу­ти­вов, воз­
мож­но, не мо­г ут. Пол­ный спи­сок пе­ре­мен­ных, под ­дер­жи­вае­мых
procenv, см. на man-стра­ни­це procenv(1).
Фор­ма­ты вы­во­да
Со вре­ме­нем procenv по­лу­чил не­сколь­ко раз­ных фор­ма­тов вы­во­да.
В на­стоя­щее вре­мя он под­дер­жи­ва­ет: струк ­т у­ри­ро­ван­ный про­стой
»»Пропустили номер?Узнайте на с. 108, как получить его прямо сейчас.
66 | LXF208 Апрель 2016
www.linuxformat.ru/subscribe
Procenv Учебник
текст (по умол­ча­нию), XML, JSON и crumb. Фор­мат вы­во­да по умол­
ча­нию про­ще все­го для вос­при­ятия че­ло­ве­ком. XML и JSON де­ла­ют
вы­вод procenv бес­ко­неч­но бо­лее под ­хо­дя­щим для дру­гих ин­ст­ру­
мен­тов. За­га­доч­ный crumb тре­бу­ет не­боль­шо­го по­яс­не­ния. Это со­
кра­ще­ние от «хлеб­ных кро­шек», и он пред­на­зна­чен для удоб­но­го
пар­син­га: дан­ные ото­бра­жа­ются в плос­ком фор­ма­те, где ка ­ж ­дое
зна­че­ние — в от­дель­ной стро­ке, а пе­ред ним — все не­об­хо­ди­мые
за­го­лов­ки, че­рез те­к у­щий раз­де­ли­тель. Ве­ро­ят­но, здесь по­мо­жет
при­мер. По­сколь­к у весь вы­вод procenv ис­поль­зу­ет внут­ри тот же
на­бор про­це­дур, да­же флаг --version мо­жет да­вать вы­вод в лю­бом
из под­дер­жи­вае­мых фор­ма­тов (на рис. спра­ва).
Как мож­но ви­деть, в вы­во­де по умол­ча­нию ото­бра­жа­ет­ся блок
од­ной «вер­сии». Этот блок со­дер­жит три зна­че­ния: на­зва­ние, вер­
сию и ав­то­ра. В фор­ма­те crumb от­но­ше­ние ро­ди­тель/по­то­мок яв­
ля­ет­ся в не­ко­то­ром смыс­ле бо­лее яв­ным, по­сколь­к у ка ­ж ­дая стро­ка
на­чи­на­ет­ся с вер­сии: т. е. все эти стро­ки ото­бра­ж а­ют ин­фор­ма­
цию из бло­ка «вер­сии». Это мо­жет по­ка­зать­ся оче­вид­ным, но ес­ли
вы за­пус­ти­те procenv --format=crumb, вы уви­ди­те, что есть мно­го
раз­ных пре­фик­сов бло­ков и по­ми­мо вер­сии. Мож­но слегка улуч­
шить вы­вод, до­ба­вив оп­цию --separator:
$ procenv --format=crumb --separator=: --version
version:name:procenv
version:version:0.42
version:author:James Hunt <jamesodhunt@ubuntu.com>
За­меть­те, что раз­дра ­жаю­щий про­бел пе­ред зна­че­ни­ем те­перь
ис­чез. Мож­но улуч­шить еще не­мно­го:
$ procenv --format=crumb --crumb-separator=’,’ --separator=’,’
--limits
limits,RLIMIT_AS,soft,current,18446744073709551615
limits,RLIMIT_AS,soft,max,18446744073709551615
limits,RLIMIT_AS,hard,current,18446744073709551615
limits,RLIMIT_AS,hard,max,18446744073709551615
Я при­вел толь­ко не­сколь­ко пер­вых строк вы­во­д а, но те­перь
у нас есть procenv, что­бы пе­ре­чис­лить не­сколь­ко ог­ра­ни­че­ний ре­
сур­сов в фор­ма­те CSV (зна­че­ния че­рез за­пя­т ую). Это оз­на­ча­ет, что
мож­но взять вы­вод и за­гру­зить его пря­мо в при­ло­же­ние элек ­трон­
ных таб­лиц.
И по­след­ний при­мер — вер­сия 0.42 procenv в пол­ной ме­ре мо­
жет вос­поль­зо­вать­ся пре­иму­ще­с т­ва­ми UTF-8. Это оз­на­ча­ет, что
вы мо­же­те де­лать су­ма­сшед­шие ве­щи (см. ни­же), что­бы по­ка­зать
де­та­ли всех су­ще­ст­вую­щих так­тов в ва­шей сис­те­ме, не без «ши­ка»
ука­зав поль­зо­ва­тель­ские раз­де­ли­те­ли в юни­ко­де:
$ procenv --format=crumb --separator=”-> “ --crumb-separator=”
>> “ --clock
clocks >> CLOCK_REALTIME >> resolution -> 0.000000001s
clocks >> CLOCK_MONOTONIC >> resolution -> 0.000000001s
clocks >> CLOCK_MONOTONIC_RAW >> resolution ->
0.000000001s
clocks >> CLOCK_PROCESS_CPUTIME_ID >> resolution ->
0.000000001s
clocks >> CLOCK_THREAD_CPUTIME_ID >> resolution ->
0.000000001s
Ме­сто­по­ло­же­ние вы­во­да
Ино­гда пи­с ать в стан­д арт ­н ый вы­в од недос ­т а­т оч­н о, по­с коль­к у
stdout мо­жет быть пе­ре­на­прав­лен, на­при­мер, в /dev/null, вот по­че­
му procenv под­дер­жи­ва­ет раз­лич­ные мес­та для вы­во­да: стан­дарт­
ный вы­вод (по умол­ча­нию), стан­д арт­ная ошиб­ка, файл, сис­тем­
ный жур­нал (управ­ля­ет­ся Syslogd или journald из Systemd) и пря­мо
в тер­ми­нал. Об­ра­т и­те вни­ма­ние, что пе­ре­на­прав­ле­ния кон­с о­ли
не тре­бу­ет­ся — про­сто пе­ре­к лю­чи­те рас­по­ло­же­ние за­пи­си вы­во­да.
Ес­ли у вас ус­та­нов­ле­на Ubuntu 14.04 (Trusty) или бо­лее но­вая
(или по­с лед­ний Debian), ус­та­но­ви­те procenv обыч­ным спо­со­бом:
$ sudo apt-get install procenv. Инструмент рас­про­стра­ня­ет­ся под ли­
цен­зи­ей GPLv3, а ис­ход­ный код на ­хо­дит­ся в сво­бод­ном дос­т у­пе
на GitHub (https://github.com/jamesodhunt/procenv). Ес­ли у вас воз­
ник­нут про­бле­мы или есть идеи по его улуч­ше­нию, про­шу за­вес­ти
ошиб­к у на GitHub. По­смот­ри­те, дос­т у­пен ли procenv для ва­шей сис­
те­мы. Ес­ли нет, то па­ке­ты для боль­шин­с т­ва ди­с т­ри­бу­ти­вов есть
на http://bit.ly/ProcenvPackages. А ес­ли вы хо­ти­те со­брать его из ис­
ход­ни­ков, сле­дуй­те обыч­но­му про­сто­му шаб­ло­ну:
$ git clone https://github.com/jamesodhunt/procenv
$ cd procenv
$ ./configure && make && sudo make install
> Ка­ж­дая оп­ция
спо­соб­на да­вать
вы­вод в раз­лич­ные
фор­ма­ты.
Ре­аль­ные дан­ные
Хо­ти­те уз­нать, на что по­хо­жа сре­д а сбор­ки Travis-CI? Или сре­ды
сбор­ки, ис­поль­зуе­мые для сбор­ки па­ке­тов Debian или Ubuntu? Про­
сто зай­ди­те в раз­дел Results на стра­ни­це GitHub, где есть ссыл­ки
на все пуб­лич­но дос­т уп­ные жур­на­лы сбор­ки procenv.
Так что, ес­ли вы пы­тае­тесь от­ла­дить про­бле­му, из-за ко­то­рой
ва­ше при ­ло­же­ние не вы­пол­ня­ет­с я в, на­при­мер, сре­де Travis-CI,
про­сто об­ра­ти­тесь на https://travis-ci.org/jamesodhunt/procenv, по­
смот­ри­те ло­ги и срав­ни­те их с вы­во­дом procenv при за­пус­ке в «ра­
бо­чей» сре­де.
Чем боль­ше плат­форм, на ко­то­рых дос­т у­пен procenv, тем он по­
лез­ней. В на­стоя­щее вре­мя он ра­бо­та­ет на Linux, FreeBSD, GNU Hurd
и Android. Ес­ли вы мо­же­те по­мочь пор­ти­ро­вать его на дру­гие сис­
те­мы (на­при­мер, AIX, HP-UX, Solaris, Minix или OpenVMS), по­жа­луй­
ста, свя­жи­тесь с ав­то­ром. На дан­ный мо­мент долж­но быть яс­но,
что ок­ру ­же­ние про­цес­са со­дер­жит мно­го боль­ше, чем про­сто пе­ре­
мен­ные ок­ру­же­ния. Вы так­же ви­де­ли, как лег­ко за­пус­тить procenv
и ис­сле­до­вать скры­тые об­лас­ти про­цес­са, и сколь­ко он мо­жет по­
ка­зать о ва­шей сре­де.
От­лич­ный, хо­тя и ла­ко­нич­ный об­зор про­цес­сов и групп мож­
но уви­деть на man-стра­ни­це credentials(7). Это од­на из тех жем­чу­
жин, ко­то­рые ши­ро­ко не рек­ла­ми­ру­ют­ся, и без со­дей­ст­вия най­ти
их не­про­сто. Man-стра­ни­ца procenv со­дер­жит ука­за­те­ли на все ко­
ман­ды, по­хо­жие на не­го. Эти ко­ман­ды по от­дель­но­сти спо­соб­ны
пре­дос­та­вить часть ин­фор­ма­ции, пре­дос­тав­ляе­мой procenv. Manстра­ни­ца так­же да­ет ссыл­ки на все не­об­хо­ди­мые сис­тем­ные и биб­
лио­теч­ные вы­зо­вы для ка­ж ­дой оп­ции, ес­ли вы хо­ти­те уз­нать боль­
ше о ка­те­го­рии.
Ес­ли вы пред­п о­чи­т ае­т е ме­н ее ла­ко­нич­н ое объ­я с­н е­ние, чем
ску­пые man-стра­ни­цы, взгля­ни­те на сле­дую­щие две кни­ги: Advanc­
ed Programming in the Unix Environment (2‑е из­д а­ние) У. Ри­чар­д а
Сти­вен­са и Сти­ве­на А. Па­го [W. Richard Stevens, Stephen A. Pago]
и Advanced Unix Programming (2‑е из­д а­ние) Мар­ка Дж. Роч­кин­д а
[Marc J. Rochkind]. Не пу­гай­тесь сло­ва «про­дви­ну­тый» в на­зва­ни­
ях — обе впол­не по­нят­ны и из­ло­же­ны в мед­лен­ном тем­пе, они ис­
чер­пы­ваю­щие и изо­би­лу­ют не­боль­ши­ми при­ме­ра­ми, за­кре­п­ляю­
щи­ми прой­ден­ный ма­те­ри­а л. |
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 67
Hadoop Вник­ни­те в тех­но­ло­гии Боль­ших
Дан­ных и Hadoop с по­мо­щью Cloudera
Hadoop: Для
Боль­ших Дан­ных
Дан­ные — это ва­лю­та бу­ду­ще­го. Ра­фик Рех­ман пред­став­ля­ет на­вы­ки об­ра­бот­ки
и ана­ли­за дан­ных, на ко­то­рые есть спрос.
Наш
эксперт
Ра­фик Рех­ман —
ав­тор и кон­суль­
тант, ин­те­ре­сую­
щий­ся но­вы­ми
тех­но­ло­гия­ми,
обра­бот­кой и ана­
ли­зом дан­ных,
IoT и за­щи­той
ин­фор­ма­ции.
> Им­порт ВМ Cloudera QuickStart в VirtualBox очень прост.
При им­пор­те фай­ла OVF на­жми­те на икон­ку фай­ла, что­бы вы­брать
рас­по­ло­же­ние фай­ла, ко­то­рый вы из­влек­ли из ZIP.
И
Скорая
помощь
Вам по­на­до­бят­ся
имя поль­зо­ва­те­ля
и па­роль, что­бы
вой­ти в при­ло­же­
ния, объ­е­ди­нен­
ные с ВМ Cloudera.
При не­об­хо­ди­мо­
сти ис­поль­зуй­те
cloudera как имя
поль­зо­ва­те­ля
и па­роль.
з-за ог­р ом­н о­г о ко­л и­ч е­­с т­в а на­б о­р ов дан­н ых, по­р о­ж­
ден­ных элек ­трон­ной ком­мер­ци­ей, про­из­вод­ст­вен­ны­ми
про­цес­са­ми, ис­то­ри­ей по­се­ще­ния сай­тов, IoT и дру­гих
ис­точ­ни­ка­ми, все раз­но­вид­но­сти биз­не­са ищут спо­со­бы ка­пи­та­
ли­зи­ро­вать эти дан­ные. Эта раз­ра­бот­ка соз­да ­ла ог­ром­ную по­треб­
ность в на­бо­ре на­вы­ков об­ра­бот­ки и ана­ли­за Боль­ших Дан­ных,
и по­это­му все боль­ше лю­дей пы­та­ет­ся ос­во­ить Hadoop и дру­гие
тех­но­ло­гии Боль­ших Дан­ных.
Од­н а­ко соз ­д а­н ие ра­б о­ч ей сре­д ы Hadoop — не­т ри­ви­а ль­н ая
за­д а­ча, тре­бую­щ ая зна­чи­тель­ных уси­лий, осо­бен­но для но­вич­
ков. Для ре­ше­ния этой про­бле­мы Cloudera, яв­ляю­щ ая­ся ос­нов­
ным иг­ро­ком в тех­но­ло­ги­ях Боль­ших Дан­ных, соз­да­ла на ба­зе ди­
ст­ри­бу­ти­ва CentOS вир­т у­а ль­ную ма­ши­ну (ВМ) QuickStart. Эта ВМ
вклю­ча­е т пре­ком­пи­ли­ро­в ан­ный стек Hadoop и от­лич­ный на­бор
при­ло­же­ний Hadoop, и на на­шем уро­ке мы по­мо­жем вам ска­чать
эту ВМ, ус­та­но­вить ее и на­чать ис­поль­зо­вать.
ВМ Cloudera QuickStart стро­ит­ся на 64‑бит­ном ди­с т­ри­бу­ти­ве
Linux CentOS 6.4. Она бес­плат­на, и ее мож­но ска­чать в ви­де сжа­то­
го ZIP-фай­ла, со­дер­жа­ще­го фай­лы OVF (Open Virtualization Format)
и VMDK. Вы мо­же­те ис­поль ­зо­в ать VMware, KVM или VirtualBox,
68 | LXF208 Апрель 2016
что­бы им­пор­ти­ро­вать ска­чан­ные фай­лы и за­пус­тить ВМ. Мы ис­
поль­зу­ем VirtualBox, но вы мо­же­те вы­брать лю­бую дру­г ую про­
грам­му вир­т уа­ли­за­ции, на свой вкус. Уч­ти­те, что для за­пус­ка ВМ
Cloudera по­тре­бу­ет­ся VirtualBox вер­сии 4 или но­вее. Скрин­шо­ты
в дан­ном ру­ко­во­дстве сде­ла­ны в VirtualBox 5.0.8. А ес­ли вы хо­ти­те
за­пус­тить Cloudera Manager, го­товь­те ми­ни­мум 8 ГБ ОЗУ.
Пре­ж ­де все­го, ска­чай­те и ус­та­но­ви­те VirtualBox (www.virtual­
box.org) для Linux с по­мо­щью ко­манд YUM, APT или RPM, в за­ви­
си­мо­с ти от ва­ше­го ди­с т­ри­бу­т и­ва. Ус­т а­нов­к а на ваш ком­пь­ю­тер
VirtualBox не от­ли­ча­ет­ся от ус­та­нов­ки лю­бо­го дру­го­го ПО. Так ­же
убе­ди­тесь, что вы ис­поль­зуе­те 64‑бит­ную вер­сию ОС хос­та, и что
под ВМ Cloudera QuickStart мож­но от­вес­ти как ми­ни­мум 4 ГБ ОЗУ.
За­тем за­гру­зи­те ВМ (http://bit.ly/ClouderaDownloads), вы­брав ссыл­
ку QuickStart VM. По на­жа­тию на ссыл­к у ска­чи­ва­ния у вас поя­вит­
ся воз­мож­ность вы­брать вир­т у­а ль­ную сре­д у (VMware, KVM или
VirtualBox). Вы­бе­ри­те файл ZIP для VirtualBox; это мо­жет за­нять
не­ко­то­рое вре­мя, в за­ви­си­мо­с ти от про­пу­ск­ной спо­соб­но­с ти ва­
ше­го ин­тер­нет-со­еди­не­ния, по­сколь­к у он ве­сит бо­лее 4 ГБ. Ко­гда
ска­чи­ва­ние за­вер­шит­ся, рас­па­к уй­те файл, что­бы из­в лечь фай­
лы VMDK и OVF. Те­перь за­пус­ти­те VirtualBox и ис­поль­зуй­те оп­цию
Import Appliance [Им­порт уст­рой­ст­ва] в ме­ню File, что­бы им­пор­ти­
ро­вать ВМ в VirtualBox (как на рис. ввер­х у). В в про­цес­се им­пор­ти­
ро­ва­ния вам при­дет­ся ука­зать путь к фай­лу OVF.
Ука ­з ав его, на ­ж ми ­т е кноп­к у Continue [Про­д ол ­ж ить]. Ос ­т ав­
шая­с я часть ус ­т а­нов­к и пред­с тав ­ля­ет со­бой сплош­ные на ­ж а­т ия
на кноп­к и Next [Да­лее] или Continue. Вам не на­до ме­нять ни­к а­
кие па­ра­мет­ры по умол­ча­нию или соз­да­вать/из­ме­нять ка­к ую-ли­
бо на­строй­к у. Все уже бы­ло пред­на­строе­но для вас. По умол­ча­нию
вир­т у­а ль­ной ма­ши­не бу­дет вы­де­ле­но 4 МБ ОЗУ и один вир­т у­а ль­
ный CPU. Ко­гда ус­та­нов­ка за­вер­шит­ся, вы смо­же­те за­пус­тить ВМ
www.linuxformat.ru/subscribe
Hadoop Учебник
Что та­кое Боль­шие Дан­ные?
Для мно­гих ком­па­ний дан­ные — это «ва­лю­та бу­д у­
ще­го» и су­ще­ст­вен­ный эле­мент, обес­пе­чи­ваю­щий
кон­к у­рен­то­спо­соб­ность, воз­мож­ность рас­ши­рить
биз­нес и стать ли­де­ром в сво­ей от­рас­ли.
Хра­не­ние, об­ра­бот­ка и при­ня­тие ре­ше­ний, ос­
но­ван­ные на боль­ших мас­си­вах дан­ных, тре­бу­ют
сдви­га па­ра­диг­мы в об­лас­ти тех­но­ло­гий. Мы боль­
ше не мо­жем по­ла­гать­ся на цен­тра ­ли­зо­ван­ные
ре­ля­ци­он­ные ба­зы дан­ных, где дан­ные хра­нят­ся
и об­ра­ба­ты­ва­ют­ся в од­ном мес­те. Дан­ные ста­ли
слиш­ком объ­ем­ны для то­го, что­бы со­би­рать и хра­
нить их в од­ном мес­те. Так что вме­сто сбо­ра дан­ных
в не­ком цен­тре мы рас­пре­де­ля­ем их и пе­ре­но­сим
об­ра­бот­к у ту­да, где дан­ные хра­нят­ся. Тех­но­ло­гии
Боль­ших Дан­ных раз­ра­бо­та­ны для управ­ле­ния и об­
ра­бот­ки боль­ших по объ­е­му и рас­пре­де­лен­ных дан­
ных с по­мо­щью стан­дарт­но­го обо­ру­до­ва­ния и се­тей.
Тех­но­ло­гии Боль­ших Дан­ных — серд­це­ви­на
всех круп­ных ин­тер­нет-ком­па­ний, вклю­чая Google,
Facebook, Twitter, Yahoo, LinkedIn и дру­гие. Но­вые
тех­но­ло­гии, на­при­мер, Ин­тер­нет Ве­щей (IoT), по­
тре­бу­ют от при­ло­же­ний Боль­ших Дан­ных ана ­ли­за
боль­ших объ­е­мов информации, со­б­ран­ной с раз­ных
ти­пов уст­ройств.
Hadoop — это ве­д у­щая и очень по­пу­ляр­ная тех­
но­ло­гия Боль­ших Дан­ных. Ее по­пу­ляр­ность при­ве­ла
из VirtualBox. Ко­гда ма­ши­на за­пус­тит­ся, вы пе­рей­де­те к Cloudera
Desktop (как изо­бра­же­но на рис. внизу слева). Ес­ли web-брау­зер
Firefox ус­та­нов­лен в ка­че­­ст­ве брау­зе­ра по умол­ча­нию, вы, воз­мож­
но, так­же уви­ди­те ок­но Firefox.
к взаи­мо­за­ме­няе­мо­сти тер­ми­нов Боль­шие Дан­ные
и Hadoop в кон­тек­сте рас­пре­де­лен­но­го хра­не­ния
и об­ра­бот­ки боль­ших объ­е­мов дан­ных.
У Hadoop имеются два ос­нов­ных ком­по­нен­та:
MapReduce Framework и Hadoop File System (HDFS).
На этих ос­нов­ных ком­по­нен­тах соз­да­но мно­же­ст­во
при­ло­же­ний и рас­пре­де­лен­ных баз дан­ных. Глав­
ное — пом­нить, что Боль­шие Дан­ные яв­ля­ют­ся
не еди­ной тех­но­ло­ги­ей, а ско­рее эко­си­сте­мой,
со­стоя­щей из нескольких тех­но­ло­гий, объ­е­ди­
нен­ных с це­лью хра­не­ния, ана ­ли­за и опо­ве­ще­ния
об ис­к лю­чи­тель­но боль­ших объ­е­мах рас­пре­де­лен­
ных дан­ных.
При ос­вое­нии но­вой сис­те­мы мы все­гда первым делом ин­те­ре­
су­ем­с я, где на ­хо­д ят­с я фай ­лы на­с трой­к и. Это по­мо­г а­е т уз­нать,
ку­д а следует на­прав­лять­ся для ре­ше­ния про­блем или при же­ла­
нии пой­ти даль­ше и уз­нать что-то но­вое. В фай­лах на­строй­ки так­
же со­дер­ж атся важ­ные под­сказ­к и по па­ра­мет­рам оп­т и­ми­за­ции
про­из­во­ди­тель­но­сти.
Пре­ж ­де все­го рас­смот­рим, как вир­т у­а ль­ная ма­ши­на ини­ции­
ру­ет сер­ви­сы Hadoop при за­пус­ке. За­пус­тив сле­дую­щую ко­ман­ду,
вы уви­ди­те ряд скрип­тов за­пус­ка в ди­рек­то­рии /etc/init.d. Об­су­ж­
де­ние ка­ж ­до­го из этих скрип­тов за­пус­ка на­хо­дит­ся за рам­ка­ми на­
ше­го уро­ка, но оно мо­жет дать вам идею, где мож­но най­ти боль­
ше ин­фор­ма­ции, ес­ли у вас про­бле­мы с за­пус­ком сер­ви­сов Hadoop
или вы хо­ти­те уз­нать боль­ше о за­пус­ке Hadoop:
$ ls -l /etc/init.d/hadoop*
-rwxr-xr-x 1 root root 4551 May 19 17:24 /etc/init.d/
hadoophdfs-datanode
-rwxr-xr-x 1 root root 4336 May 19 17:24 /etc/init.d/
hadoophdfs-journalnode
-rwxr-xr-x 1 root root 5065 May 19 17:24 /etc/init.d/
hadoophdfs-namenode
-rwxr-xr-x 1 root root 4402 May 19 17:24 /etc/init.d/
hadoophdfs-secondarynamenode
-rwxr-xr-x 1 root root 4886 May 19 17:24 /etc/init.d/hadoophttpfs
-rwxr-xr-x 1 root root 4423 May 19 17:24 /etc/init.d/
hadoopmapreduce-historyserver
-rwxr-xr-x 1 root root 4421 May 19 17:24 /etc/init.d/
hadoopyarn-nodemanager
-rwxr-xr-x 1 root root 4337 May 19 17:24 /etc/init.d/
hadoopyarn-proxyserver
-rwxr-xr-x 1 root root 4381 May 19 17:24 /etc/init.d/
hadoopyarn-Resourcemanager
Вам не­за­чем вно­сить ка­кие-ли­бо из­ме­не­ния в эти фай­лы или
вклю­чать/вы­к лю­чать ка­кие-ли­бо из этих сер­ви­сов: все они пред­
на­строе­ны за вас. Есть ряд дру­гих скрип­тов за­пус­ка в /etc/init.d для
дру­гих при­ло­же­ний Hadoop. Вдо­ба­вок к скрип­там за­пус­ка мож­
но най­ти фай­лы на­с трой­ки для ком­по­нен­тов Hadoop в ди­рек ­то­
рии /etc.
Cloudera при­ла­га­ет к ВМ QuickStart ряд ру­ко­водств, с по­ша­го­
вы­ми при­ме­ра­ми для ос­вое­ния Hadoop. До­маш­няя стра­ни­ца webбрау­зе­ра Firefox со­дер­жит ссыл­ки на эти ру­ко­во­дства (см. рис. вни­
зу спра­ва). Ру­ко­во­дства Cloudera на­чи­на­ют­ся с биз­нес-сце­на­ри­ев
и ис­поль­зу­ют ути­ли­ты Hadoop, дос­т уп­ные на вир­т у­а ль­ной ма­шине,
что­бы во­пло­тить их.
Пер­вое ру­ко­во­дство с при­ме­ра­ми пред­по­ла­га­ет, что мы возь­
мем дан­ные из ре­л я­ц и­он­н ой ба­зы дан­ных и за­к и­н ем их в рас­
пре­де­лен­ную фай­ло­вую сис­те­му Hadoop (Hadoop Distributed File
> За­пус­тив ВМ Cloudera QuickStart, вы уви­ди­те ра­бо­чий стол
по умол­ча­нию. Но­вей­шая вер­сия ВМ за­од­но ав­то­ма­ти­че­ски
за­пус­тит брау­зер Firefox.
> До­маш­няя стра­ни­ца web-брау­зе­ра Firefox со­дер­жит ссыл­ки на ру­ко­во­дства Cloudera,
кото­рые да­ют от­лич­ный спо­соб ос­во­ить ком­плект при­ло­же­ний.
Фай­лы на­строй­ки Hadoop
Скорая
помощь
Ес­ли вы фа­нат
команд­ной строки,
спи­сок ко­манд
Hadoop дос­т у­
пен на http://bit.ly/
HadoopCmdsGuide.
»»Подпишитесь на печатную или электронную версиина www.linuxformat.ru/subscribe!
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 69
Учебник Hadoop
про­даж, на­при­мер, оцен­ка со­от­но­ше­ния ме­ж ­ду ко­ли­че­­ст­вом про­
смот­ров и дан­ных по про­да­же про­дук­та.
> Как ана­ли­зи­ро­вать с по­мо­щью Spark.
Есть и дру­г ие при­м е­ры, дос­т уп­ные в вир­т у­а ль­н ой ма­ши­н е,
и вы мо­же­те изу­чить их во всех под­роб­но­стях по ме­ре улуч­ше­ния
на­вы­ков ра­бо­ты с тех­но­ло­гия­ми Hadoop, и мы на­стоя­тель­но ре­ко­
мен­ду­ем вам изу­чить их все.
Соз­да­ние про­грам­мы-счет­чи­ка слов
> Для за­про­са и ото­бра­же­ния дан­ных в раз­лич­ных фор­ма­тах, вклю­чая лег­кие
в по­строе­нии диа­грам­мы, мож­но ис­поль­зо­вать web-ин­тер­фейс Hue и за­про­сы Impala.
Скорая
помощь
Функ­ции Mapper
и Reducer. Типич­
ное при­ло­же­
ние Hadoop бу­дет
вклю­чать и функ­
цию mapper,
и функ­цию reducer.
Вы мо­же­те на­пи­
сать обе функ­ции
на мно­же­ст­ве язы­
ков, вклю­чая Java
и Python.
System, HDFS). У ти­пич­но­го кла­сте­ра Hadoop бу­дет мно­же­ст­во уз­
лов для хра­не­ния про­гло­чен­ных дан­ных. Од­на­ко в этом сце­на­
рии вы за­пус­кае­те толь­ко од­ну вир­т у­а ль­ную ма­ши­ну, так что ваш
«кла­с тер» со­дер­жит толь­ко один узел дан­ных. Об­ра­ти­те вни­ма­
ние, что не­за­ви­си­мо от ко­ли­че­­ст­ва ин­фор­ма­ци­он­ных уз­лов в кла­
сте­ре, про­цесс бу­дет один и тот же. Hadoop по­за­бо­т ит­с я о рас­
пре­д е­ле­нии дан­ных по не­с коль­к им уз­лам, так что вам не на­д о
бес­по­ко­ить­ся об этом.
Цель на­ше­го уро­ка — не пе­ре­сказ при­ме­ров, пред ­ла­гае­мых
Cloudera, а соз­д а­ние пред­с тав­ле­ния о том, че­го ожи­д ать от вир­
ту­а ль­ной ма­ши­ны. Не вда­ва­ясь в под­роб­но­с ти ка­ж ­до­го при­ме­
ра, крат­ко пе­ре­чис­лим имею­щие­ся при­ме­ры и их це­ли. Вы най­де­
те под­роб­ное опи­са­ние ка­ж ­до­го из них по сле­дую­щим ссыл­кам:
> Ис­поль­зо­ва­ние имею­щих­ся дан­ных, что­бы вы­яс­нить, ка­кие про­
дук­ты нра­вит­ся по­к у­пать кли­ен­там.
> Как ис­поль­зо­вать Impala для за­про­са дан­ных с по­мо­щью webин­тер­фей­са и как бы­с т­ро соз­д а­вать гра­фи­ки для ви­зуа­ли­за­ции
ре­зуль­та­тов (см. на рис. ввер­х у по­лос­ко­вую диа­грам­му, ко­то­рую
лег­ко соз­дать с по­мо­щью Impala). Мож­но вы­брать и дру­гие ви­ды
диа­грамм, под свои по­треб­но­сти.
> Объ­е­ди­не­ние ло­гов web-дос­т у­па для оцен­ки то­го, ве­дет ли са­мое
боль­шое чис­ло про­смот­ров про­д ук ­та к са­мо­му боль­шо­му чис­лу
Те­п ерь да­в ай ­т е на­пи­ш ем про­с тую функ ­ц ию Hadoop — mapper
и reducer, ко­то­рая бу­дет счи­тать сло­ва в боль­шом тек­сто­вом фай­
ле. В ти­пич­ном сце­на­рии мы бы рас­счи­ты­ва­ли на то, что файл бу­дет
рас­пре­де­лен по мно­гим ин­фор­ма­ци­он­ным уз­лам. И Hadoop HDFS,
и MapReduce framework бу­д ут управ­лять про­зрач­ным за­п ус­ком
функ­ций mapper и reducer во всех уз­лах. В на­шем слу­чае есть толь­
ко один узел, так что вся об­ра­бот­ка бу­дет про­ис­хо­дить в нем.
Вот спи­сок вы­со­ко­у ров­не­вых ша­гов, пред­при­ня­тых для это­
го при­ме­ра:
1 Мы ска­ча­ли боль­шой тек­сто­вый файл (2city10.txt), яв­ляю­щий­
ся тек­стом «По­вес­ти о двух го­ро­дах» Чарль­за Дик­кен­са (этот файл
дос­т у­пен на http://bit.ly/2city10).
2 Мы соз­да­ли ди­рек­то­рию HDFS (LXF_input), ко­ман­дой
hdfs dfs -mkdir /user/cloudera/LXF_input
3 Мы ско­п и­р о­в а ­л и файл 2city10.txt в ди­р ек ­т о­р ию LXF_input
с по­мо­щью
hdfs dfs -put 2city10.txt /user/cloudera/LXF_input
Уч­ти­те, что ес­ли у нас не­сколь­ко ин­фор­ма­ци­он­ных уз­лов в кла­
сте­ре Hadoop, а это обыч­ное яв­ле­ние, HDFS ав­то­ма­ти­че­­ски раз­де­
лит и ско­пи­ру­ет раз­ные час­ти фай­ла в не­сколь­ко уз­лов. Все это бу­
дет по­ка­за­но поль­зо­ва­те­лю. В том и пре­лесть Hadoop, по­сколь­к у
он ав­то­ма­ти­че­­ски управ­ля­ет хра­не­ни­ем дан­ных на не­сколь­ких ин­
фор­ма­ци­он­ных уз­лах, соз­да­ет не­сколь­ко ко­пий дан­ных для ре­зер­
ва и от­сле­жи­ва­ет, где хра­нят­ся дан­ные.
4 Мы за­п ус­к а­е м про­г рам­м ы mapper и reducer для об­р а­б от­к и
дан­ных с по­мо­щью по­то­ко­во­го API Hadoop. И сно­ва, ес­ли у нас
не­сколь­ко ин­фор­ма­ци­он­ных уз­лов, Hadoop по­за­бо­тит­ся о за­пус­ке
про­грам­мы mapper на всех ин­фор­ма­ци­он­ных уз­лах, где дан­ные
раз­ме­щ а­ют­с я, пе­ре­ме­ша­ет и рас­с ор­т и­ру­ет про­ме­ж у ­точ­ные ре­
зуль­та­ты и за­тем за­пус­тит про­грам­му reducer для соз­да­ния ко­неч­
но­го вы­во­да. Ко­неч­ные ре­зуль­та­ты хра­нят­ся в ди­рек ­то­рии вы­во­да,
ука­зан­ной в ко­манд­ной стро­ке. Для этой це­ли ис­поль­зу­ет­ся сле­
дую­щая ко­ман­да:
Что вхо­дит в ВМ QuickStart?
Вир­т у­а ль­ная ма­ши­на QuickStart соз­да­на на ди­ст­
ри­бу ­ти­ве Linux CentOS 6.4. ВМ вклю­ча­ет ос­нов­ные
ком­по­нен­ты Hadoop (Hadoop Distributed File System,
HDFS) и MapReduce Framework) и ряд вспо­мо­га­
тель­ных при­ло­же­ний от Apache Foundation, а так­же
от Cloudera. На вир­т у­а ль­ной ма­ши­не уже пре­д ус­та­
нов­ле­ны и на­строе­ны все не­об­хо­ди­мые ком­по­нен­
ты, так что вы мо­же­те вклю­чить ВМ и сра­зу на­чать
ра­бо­тать, не про­хо­д я че­рез про­цесс на­строй­ки. По­
след­няя вер­сия ВМ QuickStart так ­же ав­то­ма­ти­че­­ски
за­пус­ка­ет Firefox, это по­мо­жет вам ис­поль­зо­вать
мно­же­ст­во ин­ст­ру­мен­тов пря­мо из web-брау­зе­ра.
В брау­зе­ре пред­ва­ри­тель­но на­строе­на па­нель Favor­
ites со все­ми ссыл­ка­ми, ко­то­рые по­на­до­бят­ся вам
для обу­че­ния.
Как упо­ми­на­лось ра­нее, ос­но­ву Hadoop со­став­ля­
ет сре­да HDFS и MapReduce. По­верх них пре­ком­пи­
ли­ро­ван­ная эко­си­сте­ма Боль­ших Дан­ных со­дер­жит
ряд ком­по­нен­тов, вклю­чая, но не ог­ра­ни­чи­ва­ясь
сле­д ую­щим:
> Сбор дан­ных Hive — ути­ли­та скла­да дан­ных, а Impala — вы­со­ко­про­из­во­ди­тель­ный дви­жок ана ­ли­ти­
ки дан­ных с от­кры­тым ко­дом.
> Рас­пре­де­лен­ная ба­за дан­ных HBase — рас­пре­де­
лен­ная ба­за дан­ных, соз­дан­ная по­верх HDFS.
> Им­порт дан­ных От ре­ля­ци­он­ных баз дан­ных до Ha­
doop — Sqoop яв­ля­ет­ся ути­ли­той, ис­поль­зуе­мой
для им­пор­та дан­ных в HDFS.
> Взаи­мо­дей­ст­вие с поль­зо­ва­те­лем Hadoop ис­
поль­зу­ет язык скрип­тов, а Pig — ути­ли­та, ко­то­рая
по­став­ля­ет­ся с QuickStart для пря­мо­го взаи­мо­
дей­ст­вия поль­зо­ва­те­ля с Hadoop, иду­щая со сво­им
соб­ст­вен­ным язы­ком скрип­тов, из­вест­ным как
PigLatin.
> Web-ин­тер­фейс и ви­зуа­ли­за­ция Hue обес­пе­чи­ва­ет
ин­т уи­тив­ный web-ин­тер­фейс для мно­гих ути­лит,
вклю­чая Hive, Impala, Pig и др.
Вир­т у­а ль­ная ма­ши­на Cloudera QuickStart так­же
вклю­ча­ет ба­зу дан­ных MySQL. Эта ба­за дан­ных по­
став­ля­ет­ся с су­ще­ст­вую­щим хра­ни­ли­щем дан­ных
с об­раз­ца­ми дан­ных, ко­то­рые вы мо­же­те им­пор­
ти­ро­вать в HDFS с по­мо­щью ути­ли­ты Sqoop. К вир­
ту­а ль­ной ма­ши­не при­ла­га­ет­ся ряд ру­ко­водств —
они по­мо­г ут вам при­сту­пить к ра­бо­те с эти­ми
ути­ли­та­ми.
»»Пропустили номер?Узнайте на с. 108, как получить его прямо сейчас.
70 | LXF208 Апрель 2016
www.linuxformat.ru/subscribe
Hadoop Учебник
hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar
-input /user/cloudera/LXF_input -output /user/cloudera/LXF_output
-mapper /home/cloudera/wordcount_mapper.py -reducer /home/
cloudera/wordcount_reducer.py
В этой ко­манд­ной стро­ке мы на­чи­на­ем с ука­за­ния по­то­ко­во­го
API Hadoop; ука­зы­ва­ем ди­рек ­то­рию вво­да, от­к у­да чи­та­ют­ся дан­
ные; ди­рек­то­рию вы­во­да, где долж­ны хра­нить­ся ре­зуль­та­ты; и пу­
ти к функ ­ц и­ям mapper и reducer. Функ ­ц ии mapper и reducer на­
пи­са­ны на Python и пе­ре­чис­ле­ны в ша­ге 5. Вы­пол­не­ние ко­ман­ды
зай­мет око­ло ми­ну­ты, и вы уви­ди­те ста­ти­сти­к у о ра­бо­те и ди­рек­
то­рии вы­во­да.
5 По за­вер­ше­нии пре­д ы­д у­щей ко­ман­д ы мо­же­т е ис­поль­зо­в ать
сле­дую­щую, что­бы уви­деть фай­лы вы­во­да в ди­рек ­то­рии вы­во­да:
$ hdfs dfs -ls /user/cloudera/LXF_output
Found 2 items [Най­де­но 2 объ­ек ­та]
-rw-r--r-- 1 cloudera cloudera 0 2015-11-22 20:37 /user/cloudera/
LXF_output/_SUCCESS
-rw-r--r-- 1 cloudera clouera 203900 2015-11-22 20:37 /user/
cloudera/LXF_output/part-00000
Об­ра­ти­те вни­ма­ние, что файл вы­во­да (part-00000) сдер­жит ре­
зуль­та­ты в ви­де пар ключ – зна­че­ние. Па­ра ключ – зна­че­ние по­ка ­жет
ка­ж ­дое сло­во в ис­ход­ном фай­ле и чис­ло его вхо­ж ­де­ний в файл.
Что­бы по­смот­реть со­дер­жи­мое фай­ла вы­во­да, мы ис­поль­зу­ем
hdfs dfs -cat /user/cloudera/LXF_output/part-00000
По­сколь­к у файл дос­та­точ­но дли­нен, мож­но на­пра­вить вы­вод
на ко­ман­ду more, что­бы про­кру­чи­вать по стра­ни­цам.
Mapper и reducer
Функ­ции mapper и reducer ис­поль­зу­ют сре­ду MapReduce для об­ра­
бот­ки дан­ных. (Под­роб­ное об­су ­ж ­де­ние MapReduce на Apache см.
по ссыл­ке http://bit.ly/HadoopApache). Го­во­ря по-про­сто­му, функ­
ция mapper соз­д а­ет па­ры ключ – зна­че­ние. В ука­зан­ном при­ме­ре
функ­ция mapper чи­та­ет ка­ж ­дую стро­к у, раз­де­ля­ет стро­ки на сло­
ва и за­тем по­ме­ща­ет зна­че­ние под­сче­та по сло­ву, соз­да­вая па­ры
ключ – зна­че­ние.
Hadoop MapReduce «за ка­дром» пе­ре­ме­ши­ва­ет и сор­ти­ру­ет эти
па­ры и от­прав­ля­ет их функ­ции reducer. Функ­ция reducer чи­та­ет ка­
ж­дую па­ру ключ – зна­че­ние и объ­е­ди­ня­ет пары, что­бы по­лу­чить ко­
неч­ный ре­зуль­тат.
Да­вай­те рас­смот­рим код этих функ­ций. Тут для вас бу­дет по­
лез­ным не­ко­то­рое зна­ние язы­ка Python, но ес­ли вам зна­ком хоть
ка­кой-ни­будь дру­гой язык про­грам­ми­ро­ва­ния, вы долж­ны впол­не
по­нять, как эти функ­ции ра­бо­та­ют.
Да­лее идет код про­стой функ­ции wordcount_mapper.py. Функ­
ция mapper чи­та­ет ка­ж ­д ую стро­к у тек­ста, раз­де­ля­ет ее на сло­ва
(клю­чи) и при­сваи­ва­ет зна­че­ние ка ­ж ­до­му клю­чу.
#!/usr/bin/env python
import sys
for text_line in sys.stdin: # чи­та­ем все стро­ки из стан­д арт­ного
вво­д а
text_line = text_line.strip() # уда ­ля­ем пе­ре­во­ды стро­ки
keys = text_line.split() #split line at blanks
for key in keys: # при­сваи­ва­ем ка ­ж ­до­му сло­ву зна­че­ние
в цик­ле for
value = 1
print(‘{0}\t{1}’.format(key, value) )
Reducer чи­та­ет от­сор­ти­ро­ван­ный вы­вод от MapReduce. Он чи­та­
ет па­ру ключ – зна­че­ние в ка­ж ­дой стро­ке и объ­е­ди­ня­ет па­ры с сов­
па­д аю­щи­ми клю­ча­ми, что­бы най­ти сум­мар­ное зна­че­ние по ка ­ж­
до­му клю­чу. По­том он пе­ча­та­ет итог в ка­че­­ст­ве вы­во­да, ко­то­рый
Hadoop со­хра­ня­ет в HDFS-фай­ле.
#!/usr/bin/env python
import sys
old_key = None
total_word_count = 0
> По­ми­мо мно­же­ст­
ва оп­ций, web-ин­
тер­фейс Hue мож­но
ис­поль­зо­вать для
про­смот­ра ди­рек­то­
рий и фай­лов HDFS.
for input_line in sys.stdin: # чи­та­ем все стро­ки из стан­д арт­ного
вво­д а
input_line = input_line.strip() # уда ­ля­ем пе­ре­во­ды стро­ки
new_key, value = input_line.split(“\t”, 1)
value = int(value) # пре­об­ра­зу­ем зна­че­ние в це­лое чис­ло
# ес­ли но­вый ключ ра­вен ста­ро­му, скла­ды­ва­ем зна­че­ния
# ес­ли но­вый ключ дру­гой, пе­ча­та­ем па­ру ключ-зна­че­ние
if old_key == new_key
total_word_count += value
else:
if old_key:
print( “{0}\t{1}”.format(old_key, total_word_count) )
total_word_count = value
old_key = new_key
#print the last key-value pair
if old_key == new_key:
print( “{0}\t{1}”.format(old_key, total_word_count))
Про­смотр фай­лов HDFS
Соз­дав об­ра­зец фай­ла mapper и reducer в HDFS, да­вай­те раз­бе­рем­
ся, как вос­поль­зо­вать­ся web-ин­тер­фей­сом Cloudera для про­смот­ра
фай­лов HDFS. Что­бы про­смат­ри­вать фай­лы и ди­рек ­то­рии в webбрау­зе­ре, ав­то­ри­зи­руй­тесь в Hue (с по­мо­щью username: cloudera
и password: cloudera) и за­тем на ­жми­те на ссыл­к у File Browser [Про­
смотр фай­лов] на го­лу­бой па­не­ли в вер­х у web-стра­ни­цы (рис. ввер­
ху). Вы уви­ди­те не­д ав­но соз­д ан­ную ди­рек­то­рию LXF_input, ку­д а
вы по­ме­ща­ли тек­сто­вый файл для об­ра­бот­ки, и ди­рек­то­рию LXF_
output, соз­дан­ную в ре­зуль­та­те вы­пол­не­ния функ­ций wordcount_
mapper.py и wordcount_reducer.py. На­жи­мая на на­зва­ния этих ди­
рек­то­рий, вы мо­же­те бо­лее под­роб­но изу­чить их из­нут­ри, что­бы
про­смот­реть от­дель­ные фай­лы.
Есть две об­лас ­т и, на ко­то­рые вам сто­и т об­ра­т ить вни­ма­ние
(см. скрин­шот ввер­х у для справ­к и): пер­вая — па­нель Favorites,
где вы уви­ди­те ссыл­ки на Hue, Hadoop, HBase, Impala, Spark и дру­
гие ути­ли­ты. Они обес­пе­чи­ва­ет бы­ст­рый за­пуск этих при­ло­же­ний
Hadoop, и Cloudera про­де­ла ­ла от­лич­ную ра­бо­т у по вклю­че­нию всех
важ­ных ссы­лок в па­нель Favorites для лег­ко­го дос­т у­па.
Вто­рая об­ласть — это го­лу­бая па­нель Hue, по­яв­ляю­щая­ся сра­
зу по­сле вхо­да в Hue. Ссыл­ки на па­не­ли Hue по­зво­ля­ют про­ве­рить
на­строй­к у, управ­лять поль­зо­ва­те­ля­ми Hue, соз­да­вать и ре­дак­ти­
ро­вать по­то­ки дей­ст­вий, за­пус­кать за­про­сы и ис­поль­зо­вать дру­
гие ин­ст­ру­мен­ты, та­кие как Hive, Pig, Impala и пр. Вы так­же мо­же­те
изо­бре­тать за­да­ния и про­смат­ри­вать ста­т ус от­прав­лен­ных за­да­
ний в web-ин­тер­фей­се.
Как вы, не­со­мнен­но, сообрази­ли, соз­д а­ние «ра­бо­чей» сре­ды
Hadoop — это, на са­мом де­ле, очень про­стая за­да­ча, по­ка вы ис­
поль­зуе­те не­что вро­де ВМ Cloudera QuickStart для по­мо­щи. Од­на­
ко это лишь на­ча­ло ва­ше­го пу­те­ше­ст­вия по океа­ну Боль­ших Дан­
ных. Мы бы пред­ло­жи­ли ис­поль­зо­вать ру­ко­во­дство, на­хо­дя­щее­ся
на сай­те Apache Foundation (http://bit.ly/HadoopApache), а так­же ин­
фор­ма­цию на сай­те Cloudera (www.cloudera.com), что­бы по­нять,
как ра­бо­та­ет MapReduce. Кро­ме то­го, при­ме­ры, пред­с тав­лен­ные
в ВМ Cloudera, бу­дут очень по­лез­ны для луч­ше­го по­ни­ма­ния не­ко­
то­рых тех­но­ло­гий. Уда­чи! |
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 71
Ра­бо­та с вы­со­ко­дос­туп­ны­ми ба­за­ми дан­ных
Зна­ко­мим­ся с MySQL Fabric
ЧАСТЬ 3
MySQL Fabric:
Шардинг в деле
Под чут­ким ру­ко­во­дством Ла­ды Ше­ры­шо­вой зай­мем­ся шар­дин­гом дан­ных
и мас­шта­би­ро­ва­ни­ем.
Ш
Наш
эксперт
Ла­да Ше­ры­шо­ва
дол­гие го­ды ра­бо­
та ­ла на ком­мер­че­
­ские кор­по­ра­ции,
соз­да­вая про­мыш­
лен­ные вы­со­ко­на­
деж­ные ин­фор­ма­
ци­он­ные сис­те­мы.
Но при­шло вре­мя
сбро­сить око­вы
и при­ме­нить свои
зна­ния и опыт
в ра­бо­те со сво­
бод­ным ПО.
> Рис. 1. Кон­фи­
гу­ра­ция тес­то­вой
фер­мы.
ар­динг в MySQL Fabric — это го­ри­зон­таль­ное сег­мен­
ти­ро­ва­ние, ко­то­рое по­зво­ля­ет рас­пре­де­лять дан­ные,
раз­би­т ые по не­ко­то­ро­м у прин­ц и­п у, ме­ж ­д у раз­ны­
ми фи­зи­че­­ски­­ми сер­ве­ра­ми для обес­пе­че­ния мас­ш та­би­руе­мо­
сти опе­ра­ций чте­ния/за­пи­си и об­лег­че­ния об­ра­бот­ки дан­ных. Про­
цесс шар­дин­га — раз­не­се­ние дан­ных ме­ж ­ду от­дель­ны­ми шар­да­ми
на ос­но­ве за­дан­но­го клю­ча, по вы­бран­ной стра­те­гии. При­чем ка­ж­
дый шард при­вя­зы­ва­ет­ся к от­дель­ной вы­со­ко­дос­т уп­ной (ВД) груп­
пе сер­ве­ров. MySQL Fabric по­зво­ля­ет пе­ре­ме­щать шар­ды на но­вые
сер­ве­ра и раз­де­лять их на мно­же­ст­во дру­гих шар­дов. Для обес­пе­
че­ния вы­со­кой дос­т уп­но­сти шар­динг в MySQL Fabric при­ме­ня­ет­ся
со­вме­ст­но с ре­п­ли­ка­ци­ей дан­ных.
В ос­н о­в е ме­х а­н из­м а шар­д и­р о­в а­н ия дан­н ых, встро­е н­н о­г о
в MySQL Fabric, ле­жат сле­дую­щие ос­нов­ные по­ня­тия:
» Гло­баль­ная груп­па [global group] ВД-груп­па, ко­то­рая хра­нит все
из­ме­не­ния схе­мы дан­ных и рас­про­стра­ня­ет их на все шар­ды. Са­ма
по се­бе не яв­ля­ет­ся шар­дом.
» Шард [shard] Го­ри­зон­таль­ный сег­мент дан­ных в таб­ли­це, оп­ре­
де­ляе­мый зна­че­ни­ем клю­ча шар­ди­ро­ва­ния и при­над ­ле­жа­щий оп­
ре­де­лен­ной ВД-груп­пе.
» Ключ шар­ди­ро­ва­ния [sharding key] Стол­бец таб­ли­цы, ис­поль­зуе­
мый для раз­бив­ки дан­ных, раз­ме­щен­ных в од­ной или бо­лее таб­ли­
цах в за­дан­ной мо­де­ли дан­ных. Все мно­же­ст­во клю­чей раз­би­ва­
ет­ся на диа­па­зо­ны; для ка ­ж ­до­го диа­па­зо­на на­зна­ча­ет­ся шард, где
бу­дут хра­нить­ся дан­ные из диа­па­зо­на.
» Стра­те­гия шар­ди­ро­ва­ния Оп­ре­де­ля­ет ме­ха­низм фор­ми­ро­ва­ния
шар­дов и за­д а­ет­ся функ­ци­ей HASH (хэш-сек­цио­ни­ро­ва­ние) ли­
бо RANGE (сек­цио­ни­ро­ва­ние по диа­па­зо­нам). HASH пред­по­ла­га­ет
рав­но­мер­ное рас­пре­де­ле­ние строк таб­ли­цы в за­ви­си­мо­сти от клю­
ча шар­ди­ро­ва­ния, к ко­то­ро­му в дан­ном слу­чае при­ме­ня­ет­ся HASHфунк­ция. Эта стра­те­гия удоб­на в слу­чае строк с не­рав­но­мер­ным
или пло­хо груп­пи­руе­мым рас­пре­де­ле­ни­ем клю­ча шар­ди­ро­ва­ния.
72 | LXF208 Апрель 2016
> Рис. 2. Схе­ма тес­то­вой ба­зы дан­ных fabrictest.
RANGE рас­пре­де­ля­ет дан­ные по шар­дам на ос­но­ве зна­че­ний клю­
ча шар­ди­ро­ва­ния, за­д а­вае­мым для ка­ж ­до­го шар­д а. В этом слу­
чае зна­че­ние клю­ча опи­сы­ва­ет­ся па­рой зна­че­ний [min, max], где
<min> — ми­ни­маль­ное зна­че­ние клю­ча в диа­па­зо­не, <max> — пер­
вое зна­че­ние, пре­вы­шаю­щее диа­па­зон. Ка­ж ­до­му диа­па­зо­ну со­от­
вет­ст­ву­ет один шард.
» Кар­та шар­ди­ро­ва­ния [shard mapping] Опи­сы­ва­ет рас­пре­де­ле­
ние дан­ных ме­ж ­ду сер­ве­ра­ми в ВД-груп­пах. Со­дер­жит на­бор таб­
лиц — для ка ­ж ­дой из них ука ­зы­ва­ет­с я стол­бец, ко­то­рый бу­дет
при­ме­нять­ся как ключ шар­ди­ро­ва­ния, и стра­те­гия шар­ди­ро­ва­ния.
Рас­смот­рим ме­ха­низм шар­ди­ро­ва­ния дан­ных в MySQL Fabric
бо­лее под­роб­но, на прак ­ти­ке.
Соз­да­ем и на­страи­ва­ем фер­му
для тес­ти­ро­ва­ния
В кон­фи­г у­ра­цию тес­то­вой фер­мы (рис. 1) вхо­дят:
1 Узел MySQL Fabric, ус­т а­нов­лен­ный и за­п у­щен­ный на ло­к аль­
ной ма­ши­не че­рез порт 3311 (об этом — см. стр. 76 LXF205‑206).
2 Гло­б аль­н ая груп­п а global-group, вклю­ч аю­щ ая сер­ве­р а local­
host:3312, localhost:3313 и localhost:3314 (PRIMARY).
3 ВД-груп­п а group-1, со­с тоя­щ ая из сер­в е­р ов localhost:3315
(PRIMARY) и localhost:3316.
4 ВД-груп­па group-2, вклю­чаю­щая сер­ве­ра localhost:3317 и local­
host:3318 (PRIMARY).
5 ВД-груп­па group-3, вклю­чаю­щая сер­ве­ра localhost:3319 и local­
host:3320 (PRIMARY); она бу­дет ис­поль­зо­ва­на для раз­де­ле­ния шар­
да, при­над­ле­жа­ще­го груп­пе group-1.
6 ВД-груп­па group-4, со­стоя­щая из сер­ве­ров localhost:3321 и loc­
alhost:3322 (PRIMARY); в нее бу­дет пе­ре­ме­щен шард, при­над ­ле­жа­
щий груп­пе group-2.
Все эк­зем­п­ля­ры MySQL-сер­ве­ров ус­та­нав­ли­ва­ют­ся в от­дель­
ные ди­рек­то­рии дан­ных на од­ной и той же ма­ши­не и за­пус­ка­ют­ся
на раз­ных пор­тах че­рез свой со­кет-файл под ОС Linux. Все сер­ве­
ра MySQL долж­ны быть за­пу­ще­ны с па­ра­мет­ра­ми --log_bin, --gtidmode=ON, --enforce-gtid-consistency, --log_slave_updates. Так­же
для ка­ж ­до­го сер­ве­ра на­до ука­зать его уни­каль­ный иден­ти­фи­ка­
тор, в па­ра­мет­ре --server_id.
Для соз­да­ния эк­зем­п­ля­ра сер­ве­ра MySQL вы­пол­ня­ет­ся ко­ман­да
>> bin/mysqld --initialize --datadir=<MYSQL_DATA_DIR>,
где <MYSQL_DATA_DIR> — путь к фай­лам дан­ных.
www.linuxformat.ru/subscribe
MySQL Fabric Учебник
> Рис. 4. Соз­
да­ние кар­ты
шар­ди­ро­ва­ния.
> Рис. 3. То­по­ло­гия тес­то­вой фер­мы по­сле вы­пол­не­ния ша­гов 1 и 2.
> Рис. 5. По­лу­че­ние спи­ска карт шар­ди­ро­ва­ния.
За­пуск MySQL-сер­ве­ра осу­ще­ст­в­ля­ет ко­ман­да
>> bin/mysqld_safe --server_id=<SERVER_ID> --log-bin --logslave-updates --gtid-mode=ON --enforce-gtid-consistency
--datadir=<MYSQL_DATA_DIR> --port=<PORT_NUM>
--socket=<PATH>
где <SERVER_ID> — уни­каль­ный иден­ти­фи­ка­тор сер­ве­ра, ис­поль­
зуе­мый для ре­п ­ли­к а­ции дан­ных; <PORT_NUM> — но­мер пор­т а;
<PATH> — путь к со­кет-фай­лу (на­при­мер, /tmp/mysql1.sock).
Про­цесс ус­та­нов­ки и за­пус­ка MySQL-сер­ве­ров под­роб­но опи­
сан в LXF207 (cтр. 72).
На ка­ж ­дом сер­ве­ре, вхо­д я­щем в ВД-груп­пу, не­об­хо­ди­мо соз­
дать 3‑х поль­зо­ва­те­лей с име­на­ми group (для дос­т у­па к сер­ве­ру),
fabric_backup (для вы­пол­не­ния опе­ра­ций ре­зер­ви­ро­ва­ния) и fab­
ric_restore (для вы­пол­не­ния опе­ра­ций вос­ста­нов­ле­ния) с ука­за­ни­
ем па­ро­лей, на­зна­чить им при­ви­ле­гии су­пер­поль­зо­ва­те­лей (GRANT
ALL) и про­пи­сать их в кон­фи­г у­ра­ци­он­ном фай­ле fabric.cfg. Под­роб­
но про­цесс соз­да­ния поль­зо­ва­те­лей и на­строй­ки кон­фи­г у­ра­ци­он­
но­го фай­ла см. стр. 76 LXF205‑206.
В ка­че­­ст­ве схе­мы дан­ных бу­дет соз­да­на ба­за дан­ных fabrictest
и в ней — 2 таб­ли­цы: employees, со­дер­жа­щая ин­фор­ма­цию о со­
труд­ни­ках, и salaries, со­дер­жа­щая дан­ные об их зар­пла­тах. Таб­ли­
цы бу­дут свя­за­ны по внеш­не­му клю­чу — столб­цу emp_no (рис. 2).
>> mysqlfabric sharding create_definition <TYPE_NAME>
<GROUP_ID>,
где <TYPE_NAME> — стра­те­гия шар­ди­ро­ва­ния (HASH или RANGE);
<GROUP_ID> — имя гло­баль­ной груп­пы.
В на­шем при­ме­ре вы­бе­рем функ­цию RANGE. Раз­де­лим дан­ные
в таб­ли­цах employees и salaries по диа­па­зо­нам зна­че­ний лич­ных но­
ме­ров со­труд­ни­ков: (от 1 до 999) и (от 1000 и вы­ше). Соз­да­дим кар­
ту шар­ди­ро­ва­ния (рис. 4), вы­пол­нив ко­ман­ду
>> mysqlfabric sharding create_definition RANGE global-group
Ко­ман­д а ге­не­ри­ру­ет уни­каль­ный иден­ти­фи­ка­тор кар­ты шар­
ди­ро­ва­ния (shard_mapping_id), и к не­му в даль­ней­шем бу­дут при­
вя­з ы­в ать­с я со­о т­в ет­с т­в ую­щ ие таб­л и­ц ы ба­з ы дан­н ых. По­с мот­
реть спи­сок карт шар­ди­ро­ва­ния мож­но ли­бо вы­пол­нив ко­ман­д у
>> mysqlfabric sharding list_definitions, ли­бо вы­пол­нив за­прос к таб­
ли­це shard_maps хра­ни­ли­щ а со­с тоя­ния fabric, под­к лю­чив­шись
к уз­лу MySQL Fabric:
>> bin/mysql --port=3311 --socket=/tmp/mysql1.sock –u fabric –p
–e “use fabric; select * from shard_maps;”
Ре­зуль­та­ты вы­пол­не­ния этих ко­манд см. на рис. 5.
4 Ре­ги­ст­ри­ру­ем таб­ли­цы в кар­те
Для оп­ре­де­ле­ния со­от­вет­ст­вия ме­ж ­ду кар­той шар­ди­ро­ва­ния и объ­
ек ­та­ми шар­дин­га ре­ги­ст­ри­ру­ем таб­ли­цы ба­зы дан­ных и столб­цы,
со­став­ляю­щие ключ шар­ди­ро­ва­ния. Ка ­ж ­дой шар­ди­руе­мой таб­ли­
це со­пос­тав­ля­ет­ся уни­каль­ный иден­ти­фи­ка­тор кар­ты шар­ди­ро­
ва­ния (shard_mapping_id), соз­д ан­ной на ша­ге 3. В на­шем при­ме­
ре он ра­вен 1. Таб­ли­цу в кар­т у шар­ди­ро­ва­ния добавляет ко­ман­да
>> mysqlfabric sharding add_table <SHARD_MAPPING_ID>
<TABLE_NAME> <COLUMN_NAME>
где <SHARD_MAPPING_ID> — иден­ти­фи­ка­тор кар­ты шар­ди­ро­ва­
ния, в ко­то­рой ре­г и­с т­ри­ру­ет­с я таб­ли­ц а, <TABLE_NAME> — имя
шар­ди­руе­мой таб­ли­цы, <COLUMN_NAME> — на­име­но­ва­ние столб­
ца таб­ли­цы, зна­че­ние ко­то­ро­го бу­дет ис­поль­зо­вать­ся в ка­че­­ст­ве
клю­ча шар­ди­ро­ва­ния.
Соз­да­ем и на­страи­ва­ем
схе­му шар­ди­ро­ва­ния
1 Соз­да­ем гло­баль­ную груп­пу
Гло­баль­ная груп­па бу­дет хра­нить все из­ме­не­ния струк­т у­ры ба­зы
дан­ных и рас­про­стра­нять их на все шар­ды, вхо­дя­щие в схе­му шар­
ди­ро­ва­ния. Со­глас­но тес­то­вой кон­фи­г у­ра­ции, соз­да­дим гло­баль­
ную груп­пу с име­нем global-group и до­ба­вим ту­да 3 сер­ве­ра:
>> mysqlfabric group create global-group --description=’MySQL
Fabric Global Group’
>> mysqlfabric group add global-group localhost:3312
>> mysqlfabric group add global-group localhost:3313
>> mysqlfabric group add global-group localhost:3314
На­зна­чим груп­пе глав­ный сер­вер и под­к лю­чим ре­ги­ст­ра­тор от­ка­
зов для вклю­че­ния ав­то­ма­ти­че­­ско­­го ре­жи­ма об­на­ру ­же­ния сбо­ев:
>> mysqlfabric group promote global-group
>>mysqlfabric group activate global-group
2 Соз­да­ем ВД-груп­пы
Ана ­ло­г ич­ным об­ра­зом соз­д а­д им ВД-груп­пы group-1 и group-2,
до­ба­вим ту­д а по 2 сер­ве­ра в со­от­вет­с т­вии с тес­то­вой кон­фи­г у­
ра­ци­ей, на­зна­чим груп­пам глав­ные сер­ве­ра и вклю­чим ре­ги­ст­ра­
тор от­ка­зов.
Ре­зуль­тат вы­пол­не­ния ша­гов 1 и 2 пред­став­лен на рис. 3.
3 Соз­да­ем кар­т у шар­ди­ро­ва­ния
Оп­ре­де­лим стра­те­гию, при­ме­няемую для шар­дин­га, ко­ман­дой
www.linuxformat.ru/subscribe
> Рис. 6. По­лу­че­ние
ин­фор­ма­ции о таб­
ли­цах, за­ре­ги­ст­ри­
ро­ван­ных в кар­те
шар­ди­ро­ва­ния.
Апрель 2016 LXF208 | 73
Учебник MySQL Fabric
Как ви­дим, в на­шей схе­ме шар­ди­ро­ва­ния соз­д а­но 2 ра­бо­чих
шар­да, рас­по­ло­жен­ных в ВД-груп­пах group-1 и group-2 и имею­щих
иден­ти­фи­ка­то­ры (shard_id) 1 и 2 со­от­вет­ст­вен­но.
6 На­страи­ва­ем файл кон­фи­г у­ра­ции Fabric
Для вы­п ол­н е­н ия опе­р а­ц ий раз­д е­л е­н ия и пе­р е­м е­щ е­н ия шар­
дов не­об­хо­ди­мо в фай ­ле fabric.cfg в раз ­де ­ле [sharding] ука­зать
кор­рект­ные пу ­ти к ути­ли­там mysqldump (па­ра­метр mysqldump_
program) и mysqlclient (па­ра­метр mysqlclient_program).
> Рис. 7. По­лу­че­ние
спи­ска шар­дов.
В на­шем тес­то­вом при­ме­ре бу­дем шар­ди­ро­вать 2 таб­ли­цы —
employees и salaries, по столб­цу emp_no. Для ре­ги­ст­ра­ции этих таб­
лиц в кар­те шар­ди­ро­ва­ния вы­пол­ним такие ко­ман­ды (не за­бы­ва­
ем ука­зы­вать имя ба­зы дан­ных, ко­то­рой таб­ли­цы при­над ­ле­жат!):
>> mysqlfabric sharding add_table 1 fabrictest.employees emp_no
>> mysqlfabric sharding add_table 1 fabrictest.salaries emp_no
Про­ве­рим ре­зуль­т ат ре­г и­с т­ра­ции таб­лиц с по­мо­щью ко­ман­
ды lookup_table:
>> mysqlfabric sharding lookup_table fabrictest.employees
>> mysqlfabric sharding lookup_table fabrictest.salaries
Это так­же мож­но сде­лать, об­ра­тив­шись к таб­ли­це shard_tables
хра­ни­ли­ща со­стоя­ния fabric, вы­пол­нив сле­дую­щий за­прос:
>> bin/mysql --port=3311--socket=/tmp/mysql1.sock –u fabric –p
–e “user fabric; select * from shard_tables;”
Ре­зуль­та­ты вы­пол­не­ния этих ко­манд пред­став­ле­ны на рис. 6.
5 До­бав­ля­ем шар­ды в схе­му шар­ди­ро­ва­ния
Для это­го слу­жит ко­ман­да
>> mysqlfabric sharding <SHARD_MAPPING_ID> <GROUPID_LB_
LIST> [--state=DISABLED]
<SHARD_MAPPING_ID> — иден­т и­ф и­к а­т ор кар­т ы шар­д и­р о­в а­
ния. <GROUPID_LB_LIST> — в слу ­ч ае ис­п оль ­з о­в а­н ия функ­
ции RANGE за ­д а­е т­с я спи­с ок на­и ме­н о­в а­н ий групп <GROUP_ID>
с ука­з а­ни­ем ниж­них гра­ниц зна­че­ний клю­ча <LOWER_BOUND>
в ф о р­м а­т е: “< G RO U P_ I D > /< LOW ER _ B O U N D >, < G RO U P_
ID>/<LOWER_BOUND>… ”. В слу­чае HASH-функ­ции ука­зы­ва­ет­ся
толь­ко на­име­но­ва­ние груп­пы <GROUP_ID>. [--state=STATE] — ука­
зы­ва­ет на то, вклю­чен (ENABLED) или от­к лю­чен (DISABLED) шард.
По умол­ча­нию — DISABLED.
Со­глас­но тес­то­вой кон­фи­г у­ра­ции, до­ба­вим в на­шу схе­му шар­
ди­ро­ва­ния 2 шар­да, вы­пол­нив ко­ман­ду
>> mysqlfabric sharding add_shard 1 “group-1/1, group-2/1000”
--state=ENABLED
Ес­ли бы мы ис­поль­зо­ва­ли функ­цию HASH, ко­ман­да вы­гля­де­
ла бы сле­дую­щим об­ра­зом:
>> mysqlfabric sharding add_shard 1 group-1 --state=ENABLED
Ре­зуль­тат (рис. 7) про­ве­ря­ет­ся за­про­сом к таб­ли­це shards хра­
ни­ли­ща со­стоя­ния Fabric:
>> bin/mysql --port=3311 --socket=/tmp/mysql1.sock –u fabric –p
–e “use fabric; select * from shards;”
> Рис. 8. Про­вер­ка
вы­пол­не­ния гло­
баль­ных из­ме­не­ний
схе­мы дан­ных.
74 | LXF208 Апрель 2016
Соз­да­ем схе­му дан­ных
в гло­баль­ной груп­пе
Все опе­ра­ции над объ­ек­та­ми ба­зы дан­ных и с са­ми­ми дан­ны­ми бу­
дем вы­пол­нять че­рез при­ло­же­ние, ис­поль­зуя кон­нек ­тор Python.
Для это­го соз­да­дим файл setup_table_gl_ha.py и до­ба­вим ту­да код,
при­ве­ден­ный ни­же.
» Соз­да­ем под­клю­че­ние к MySQL Fabric
Им­пор­ти­ру­ем па­кет fabric из биб­лио­те­ки Connector/Python и про­пи­
сы­ва­ем па­ра­мет­ры под­к лю­че­ния к уз­лу Fabric со­от­вет­ст­вен­но его
кон­фи­г у­ра­ци­он­но­му фай­лу:
import mysql.connector from mysql.connector
import fabric from mysql.connector
conn = mysql.connector.connect(
fabric={“host” : “localhost”, “port” : 32274, “username” :
“admin”, “password” : “admin”, “report_errors” : True},
user=”group”, password=”group”, autocommit=True
)
Этот код не­об­хо­ди­мо бу­дет встав­лять в на­ча ­ло ка ­ж ­до­го по­сле­
дую­ще­го скрип­та!
» За­да­ем свой­ст­ва под­клю­че­ния
Для вы­пол­не­ния гло­баль­ных из­ме­не­ний не­об­хо­ди­мо: ука­зать спи­
сок таб­лиц tables, над ко­то­ры­ми бу­д ут вы­пол­нять­ся из­ме­не­ния;
об­ласть ви­д и­мо­с ти scope ус­т а­но­вить в зна­че­ние fabric.SCOPE_
GLOBAL (что­бы опе­ра­ции из­ме­не­ния объ­ек ­тов схе­мы дан­ных вы­
пол­ня­лись на всех шар­дах); ре­жим дос­т у­па mode за­дать как fabric.
MODE_READWRITE (это го­во­рит кон­нек­то­ру о том, что тран­зак­ция
бу­дет от­прав­ле­на на глав­ный сер­вер в груп­пе).
conn.set_property(tables=[“fabrictest.employees”, “fabrictest.
salaries”], scope=fabric.SCOPE_GLOBAL, mode=fabric.
MODE_READWRITE)
» Соз­да­ем объ­ек­ты ба­зы дан­ных
Соз­да­дим ба­зу дан­ных fabrictest и в ней — две свя­зан­ные внеш­ним
клю­чом таб­ли­цы employees и salaries:
cur = conn.cursor()
cur.execute(“CREATE DATABASE IF NOT EXISTS fabrictest
CHARACTER SET utf8”)
cur.execute(“USE fabrictest”)
cur.execute(“DROP TABLE IF EXISTS salaries”)
cur.execute(“DROP TABLE IF EXISTS employees”)
cur.execute(
“CREATE TABLE IF NOT EXISTS employees (“
“ emp_no INT PRIMARY KEY AUTO_INCREMENT, “
“ first_name CHAR(40), “
“ last_name CHAR(40),”
“ birth_date DATE, “
“ hire_date DATE “
“)”
)
cur.execute(
“CREATE TABLE IF NOT EXISTS salaries (“
“ emp_no INT, “
“ salary INT(11), “
“ begin_date DATE, “
“ end_date DATE, “
“ FOREIGN KEY(emp_no) REFERENCES employees(emp_no) “
«)»
www.linuxformat.ru/subscribe
MySQL Fabric Учебник
)
> Рис. 9. Раз­де­
ле­ние дан­ных
на шар­ды при вы­
пол­не­нии опе­ра­ций
об­нов­ле­ния.
За­пус­тим скрипт (>> python setup_table_gl_ha.py) и про­ве­рим,
что таб­ли­цы дей­ст­ви­тель­но соз­да­лись на всех шар­дах. Вы­бе­рем
для про­вер­ки по сер­ве­ру из ка­ж ­дой груп­пы: localhost:3313 (glob­
al-group), localhost:3316 (group-1) и localhost:3317 (group-2). Под­
клю­чим­ся к ка ­ж ­до­му из этих сер­ве­ров и про­ве­рим спи­сок таб­лиц
в ба­зе дан­ных:
>> bin/mysql --port=<PORT_NUM> --socket=<PATH> –u group –p
–e “use fabrictest; show tables;”
Итак (рис. 8), ба­за дан­ных и таб­ли­цы соз­да­лись на всех сер­ве­рах.
Опе­ра­ции об­нов­ле­ния дан­ных
До­ба­вим за­пи­си в таб­ли­цы employees и salaries. Для это­го соз­да­
дим файл add_data_gl_ha.py, с кодом для соз­да­ния под­к лю­че­ния
к уз­лу MySQL Fabric. Оп­ре­де­лим про­це­ду­ру встав­ки дан­ных в таб­
ли­цу employees:
def add_employee(conn, emp_no, first_name, last_name, birth_
date, hire_date):
За­да­дим свой­ст­ва под­к лю­че­ния. Ноб­хо­ди­мо ука­зать: tables —
шар­ди­ро­ван­ную таб­ли­цу или их спи­сок (че­рез за­пя­т ую), уча­ст­вую­
щих в опе­ра­ци­ях об­нов­ле­ния дан­ных; key — ключ шар­ди­ро­ва­ния;
mode — ре­жим об­ра­ще­ния к сер­ве­ру. Т. к. мы вы­пол­ня­ем опе­ра­ции
об­нов­ле­ния дан­ных, па­ра­метр mode д. б. fabric.MODE_READWRITE.
conn.set_property(tables=[“fabrictest.employees”], key=emp_no,
mode=fabric.MODE_READWRITE)
cur = conn.cursor()
cur.execute(
“INSERT INTO employees VALUES (%s, %s, %s, %s, %s)”,
(emp_no, first_name, last_name, birth_date, hire_date)
)
Оп­ре­де­ля­ем про­це­ду­ру встав­ки дан­ных в таб­ли­цу salaries:
def add_salary(conn, emp_no, salary, begin_date, end_date):
Ана ­ло­гич­ным об­ра­зом ус­та­нав­ли­ва­ем свой­ст­ва под­к лю­че­ния
для таб­ли­цы salaries:
conn.set_property(tables=[“fabrictest.salaries”], key=emp_no,
mode=fabric.MODE_READWRITE)
cur = conn.cursor()
cur.execute(
“INSERT INTO salaries VALUES (%s, %s, %s, %s)”, (emp_no,
salary, begin_date, end_date)
)
Вста­вим дан­ные в таб­ли­цу employees, ука­зав в свой­ст­вах под­
клю­че­ния ее имя и об­ласть ви­ди­мо­сти fabric.SCOPE_LOCAL:
conn.set_property(tables=[“fabrictest.employees”], scope=fabric.
SCOPE_LOCAL)
add_employee(conn, 10, “Pavel”, “Ivanov”, “1972-10-01”,
“2005-02-01”)
add_employee(conn, 30, “Elena”, “Orlova”, “1978-03-22”,
“2008-04-15”)
add_employee(conn, 120, "Sergey", "Stepanov", "1982-08-09",
"2010-10-16")
add_employee(conn, 550, "Olga", "Petrova", "1980-01-11",
"2011-11-14")
add_employee(conn, 780, "Alex", "Plotnikov", "1979-05-18",
"2011-11-08")
add_employee(conn, 1100, "Nataly", "Medvedeva", "1983-02-20",
"2012-06-10")
add_employee(conn, 1330, "Egor", "Rogov", "1973-07-24",
"2014-05-17")
add_employee(conn, 2340, "Vera", "Andreeva", "1980-01-29",
"2015-11-19")
Ана ­ло­гич­ным об­ра­зом встав­ля­ем дан­ные в таб­ли­ц у salaries,
ука­зав со­от­вет­ст­вую­щие свой­ст­ва под­к лю­че­ния:
conn.set_property(tables=[“fabrictest.salaries”], scope=fabric.
SCOPE_LOCAL)
add_salary(conn, 10, 12000, “2005-02-01”, None)
add_salary(conn, 30, 24000, “2008-04-15”, None)
add_salary(conn, 10, 12000, "2005-02-01", None)
add_salary(conn, 30, 24000, "2008-04-15", None)
add_salary(conn, 120, 18600, "2010-10-16", None)
add_salary(conn, 550, 35000, "2011-11-14", None)
add_salary(conn, 780, 14500, "2011-11-08", None)
add_salary(conn, 1100, 48000, "2012-06-10", None)
add_salary(conn, 1330, 28000, "2014-05-17", None)
add_salary(conn, 2340, 11000, "2015-11-19", None)
За­пус­тим скрипт — >> python add_data_gl_ha.py — и про­ве­
рим ре­зуль­тат, вы­пол­нив за­про­сы к таб­ли­цам employees и salaries
на сер­ве­рах localhost:3316 груп­пы group-1 и localhost:3317 груп­
пы group-2 (рис. 9). Как ви­дим, шард 1 (рас­по­ло­жен­ный в груп­
пе group-1) со­дер­жит дан­ные со­глас­но ука­зан­но­му в кар­те шар­
ди­ро­ва­ния диа­па­зо­ну лич­ных но­ме­ров со­труд­ни­ков от 1 до 999,
а шард 2 (в груп­пе group-2) — дан­ные в диа­па­зо­не от 1000 и вы­ше.
А как шардированные данные распределяются по серверам
в ВД-группах, можно посмотреть, выполнив команду
>> mysqlfabric sharding lookup_servers <TABLE_NAME>
<KEY_VALUE>
где <TABLE_NAME> — наименование шардированной таблицы,
<KEY_VALUE> — значение ключа шардирования.
Выполним команды, указав таблицу employees и следующие
значения ключа:
>> mysqlfabric sharding lookup_servers fabrictest.employees 230
>> mysqlfabric sharding lookup_servers fabrictest.employees 2000
Как видим (рис. 10), данные со значением ключа 230 будут хра­
ниться на серверах, входящих в группу group-2 и принадлежащих
шарду 1 (диапазон от 1 до 499), а данные со значением ключа 2000
попадут в группу group-2 шарда 2 (диапазон от 500 и выше) в соот­
ветствии с заданной картой шардирования. |
> Рис. 10. Распределение шардированных данных по серверам.
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 75
IP-те­ле­фо­ния Об­ра­бот­ка те­ле­фон­ных звон­ков
IP-те­ле­фония:
За­вер­шаем
наш ди­ал­план
Мак­сим Че­ре­па­нов на­но­сит по­след­ние штри­хи в сво­ей се­рии ста­тей и от­пус­ка­ет
вас в сво­бод­ное пла­ва­ние...
П
ри­вет­ст­вую всех ас­те­ри­скострои­те­лей на оче­ред­ном уро­
ке по VoIP-те­ле­фо­нии! В про­шлый раз мы ос­та­но­ви­лись
на по­лу­че­нии от сер­ве­ра го­ло­со­во­го со­об­ще­ния по элек­
трон­ной поч­те. Про­дол­ж им го­то­вить ку­би­ки для на­ше­го пер­во­
го ди­а л­пла­на.
Наш
эксперт
Мак­сим Че­ре­па­
нов — за­мес­ти­
тель ди­рек ­то­ра
в не­боль­шой ком­
мер­че­ской фир­ме.
По об­ра­зо­ва­нию
же­лез­но­до­рож­
ник-управ­ле­нец.
Linux за­ни­ма­ет­
ся с 2008 г. Чем
доль­ше это де­
ла­ет, тем даль­
ше от Windows.
За эти го­ды ра­зу­
чил­ся чис­тить ре­
естр и за­был сло­во
«ан­ти­ви­рус».
Го­ло­со­вые фай­лы
Пред­по­ло­ж у, что вы вы­бра ­ли спо­с об за­пи­си зву ­к а с мик ­ро­фо­
на. Как вы пом­ни­те, нам на­до иметь не­сколь­ко зву­ко­вых фай­лов:
1 «При­вет! Вы по­зво­ни­ли в жур­нал Ли­нукс Фор­мат».
2 «Ес­ли вы хо­ти­те ос­та­вить го­ло­со­вое со­об­ще­ние, на ­жми­те один.
Ес­ли вы знае­те но­мер або­нен­та, на­бе­ри­те его в то­но­вом ре­жи­ме
или до­ж ­ди­тесь от­ве­та сек­ре­та­ря».
3 «Го­во­ри­те в те­че­ние пятнадцати се­к унд по­сле сиг­на ­ла».
4 «Спа­си­бо. Ва­ше об­ра­ще­ние за­пи­са­но».
5 «До сви­да­ния».
6 «К со­жа ­ле­нию, сек­ре­тарь сей­час не­дос­т у­пен; по­жа ­луй­ста, пе­ре­
зво­ни­те поз­же. До сви­да­ния».
По­че­му имен­но этот на­бор, ста­нет по­нят­но чуть поз­же; про­
сто на­дик­т уй­те эти фра­зы на мик­ро­фон при вклю­чен­ной за­пи­си
в Audacity. Я за­пи­сы­ваю с час­то­той 22 кГц, за­тем по­с ле об­ра­бот­
ки сни­жаю до 8 кГц.
Итак, вы на ­д ик ­т о­в а ­ли фра ­зу и ос ­т а­н о­ви ­ли за­пись. Пре­ж ­д е
все­го об­режь­те не­нуж­ные на­ча­ло и хвост, пе­ред пер­вым зву­ком
и по­сле по­след­не­го. За­тем из­бавь­тесь от шу­ма — для это­го есть
фильтр Эф­фек ­ты > Уда ­ле­ние шу­ма. Де­ла­ет­ся в 2 эта­па: пер­вым
эта­пом вы­де­ляе­те пау­зу ме­ж ­д у сло­ва­ми и соз­д ае­те мо­дель шу­
ма. За­тем при­ме­няе­те мо­дель шу­ма ко все­му фай­лу. По­про­буйте
про­слу­шать — ско­рее все­го, сре­ж ут­ся все ши­пя­щие зву­ки. В этом
нет ни­че­го страш­но­го: они всё рав­но уй­д ут за диа­па­зон, ко­то­рый
под ­дер­ж и­ва­ет Asterisk. Да­лее сде­лай­те там же нор­ми­ров­к у сиг­
на­ла (вы­ров­няй­те мак­си­маль­ный уро­вень до 0 дБ) и ком­прес­сию
с ус ­т а­нов­к а­ми по умолчанию. Та­к им об­ра ­зом вы приве­де­те все
> Рис. 2. Из­ме­не­ние час­то­ты дис­кре­ти­за­ции.
зву­ки к уров­ню и ди­на­ми­че­­ско­­му диа­па­зо­ну, в ко­то­рых наи­бо­лее
чув­ст­ви­тель­но че­ло­ве­че­­ское ухо. Ес­ли вы бу­де­те де­лать мно­го та­
ких фай­лов, то не лиш­нее бу­дет соз­дать це­поч­к у об­ра­бот­ки: Файл
> Из­ме­нить це­поч­ки, до­бавь­те но­вую и вне­си­те в нее нор­ми­ров­к у
и ком­прес­сию (рис. 1).
Об­ра­ти­те вни­ма­ние: шу­мо­по­дав­ле­ние я в це­поч­к у не вклю­чил,
хо­т я оно на­пра­ши­ва­лось са­мо со­бой. Но у ка­ж ­до­го фай­ла своя
мо­дель шу­ма, да ­же с уче­том ис­поль­зо­ва­ния од­но­го мик­ро­фо­на:
вы мо­же­те го­во­рить гром­че или ти­ше, по ули­це мо­жет про­ехать
ав­то­мо­биль, кто-то за сте­ной хлоп­нет две­рью. По­это­му шу­мы уда­
лять на­до из ка ­ж ­до­го фай­ла от­дель­но.
Иное де­ло нор­ма­ли­за­ция и ком­прес­сия — они оди­на­ко­вы для
всех фай­лов, их па­ра­мет­ры вы мо­же­те ви­деть (и да­же вруч­ную из­
ме­нить) в ре­дак ­ти­ро­ва­нии це­поч­ки.
> Рис. 1. Об­ра­бот­ка
зву­ко­во­го фай­ла.
76 | LXF208 Апрель 2016
www.linuxformat.ru/subscribe
IP-телефония Учебник
По­том вы смо­же­те к ка­ж ­до­му фай­лу про­с то при­ме­нять этот
шаб­лон. По­верь­те, вре­ме­ни сэ­ко­но­ми­те уй­му.
Ко­неч­ный штрих: Соз­да­ние > Ти­ши­на, до­бавь­те в на­ча­ло и ко­
нец фай­ла по 1 се­к ун­де. Тогда ваш абонент нор­маль­но расс­лы­шит
все сло­ва, и ни­че­го не смажется при пе­ре­к лю­че­нии ди­а л­пла­на.
И са­мое глав­ное — не за­будь­те по­ме­нять час­то­т у! По­смот­ри­те
на рис. 2, это ар­хи­важ­но сде­лать.
Вы мо­же­те про­пус­тить лю­бой этап об­ра­бот­ки, или их все —
кро­ме при­ве­де­ния час­то­ты к 8000 Гц. Ина­че зву­ка про­сто не бу­дет!
По­с ле это­г о ку­д а-ни­будь экс­п ор­т и­р уй ­т е файл, в фор­м а­т е
16‑бит­но­го WAV.
До­пус­тим, этот этап по­за­ди, и в ка­кой-то пап­ке вы имее­те на­
бор фай­лов от 1.wav до 6.wav. За­гру­зи­те N№ 1, 2 и 6 в Asterisk, как
опи­са­но в пре­ды­ду­щей час­ти (FreePBX в Admin > System Recordings,
ищем над­пись Alternatively, upload a recording in any supported
asterisk format...). Име­на фай­лам внут­ри Asterisk да­ем та­кие же,
как и име­на са­мих фай­лов (1, 2 и 6), да­бы не воз­ник­ло пу­та­ни­цы.
Те­перь по­ра по­зна­ко­мить­ся с по­ня­ти­ем Announcement — при­
вет­с т­вие, объ­яв­ле­ние. Во вре­мя его дей­с т­вия Asterisk про­иг­ры­
вает зву­ко­вой файл, ко­то­рый ли­бо мож­но, ли­бо нель­зя про­пус­тить
(как ре­шит ад­ми­ни­ст­ра­тор), и по­сле не­го осу­ще­ст­в­ля­ет­ся пе­ре­ход
на дру­гое дей­ст­вие ди­а л­пла­на.
Да­вай­те со­тво­рим из на­ших сис­тем­ных за­пи­сей по­треб­ное ко­
ли­че­­ст­во при­вет­ст­вий. В де­ло пой­д ут не все со­об­ще­ния: № 2 ос­
та­вим для IVR-ме­ню, N№ 3, 4 и 5 нам по­т ре­бу­ют­с я для пря­мой
за­ме­ны. Ос­та­лись 1 и 6. Идем в Applications > Announcement и до­
бав­ля­ем но­вое при­вет­ст­вие (рис. 3).
У ме­ня от­ме­чен пункт Allow Skip, это по­зво­лит при не­об­хо­ди­мо­
сти про­ско­чить при­вет­ст­вие. И по окон­ча­нии при­вет­ст­вия на­прав­
ля­ем ди­а л­план на от­к лю­че­ние або­нен­та (по­ка). Де­ла­ем так же для
фай­ла 6, и по­лу­ча­ем две за­го­тов­ки для ди­а л­пла­на.
По­зво­лю вам на­пом­нить ци­та­т у из пре­ды­ду­щей ста­тьи, по­смот­
ри­те на часть лог-фай­ла при на­прав­ле­нии або­нен­та на го­ло­со­вую
поч­т у. Там упо­ми­на­ют­ся фай­лы vm-intro.gsm и auth-thankyou.gsm.
Это ссыл­ки на стан­дарт­ные фай­лы Asterisk, ко­то­рые идут в ком­
плек ­те с ус­та­нов­кой.
Пе­ре­име­нуй­те свои за­го­тов­ки: № 3 — в vm-intro.wav, № 4 —
в auth-thankyou.wav, № 5 в goodbye.wav. И за­ме­ни­те три сис­тем­ные
за­пи­си Asterisk’а свои­ми, они на­хо­дят­ся в пап­ках сер­ве­ра /var/lib/
asterisk/sounds/en и /var/lib/asterisk/sounds/ru.
С это­го мо­мен­та го­ло­со­вая поч­та бу­дет ком­мен­ти­ро­вать­ся порус­ски (в час­ти за­пи­си со­об­ще­ния). За­од­но по­смот­ри­те, на­сколь­
ко бо­гат на­бор уже су­ще­ст­вую­щих слов и фраз в Asterisk’е. Ес­ли
как сле­д у­ет там по­ко­пать­ся, то мож­но со­ста­вить из стан­дарт­ных
средств впол­н е при­лич­н ое IVR-ме­ню вме­с те с при­в ет­с т­вия­ми.
Но ес­ли вам нуж­но не­что не­стан­дарт­ное, то все рав­но при­дет­ся за­
пи­сы­вать са­мо­стоя­тель­но (на­при­мер, на­зва­ние ва­шей фир­мы или
долж­но­с ти ра­бот­ни­ков для пря­мо­го на­бо­ра). А из­ме­не­ние го­ло­
са при пе­ре­хо­дах вы­гля­дит не­про­фес­сио­наль­но и бу­дет от­вле­кать
от со­дер­жа­ния фраз.
Ну вот, всё го­то­во для глав­но­го дей­ст­ва.
> Рис. 3. До­бав­ле­
ние при­вет­ст­вия.
» Invalid Retries — Disabled, от­к лю­чим пе­ре­ход по не­вер­но­му на­
жа­тию кла­виш, хо­тя ино­гда это бывает очень по­лез­но. По­сле от­
клю­че­ния у вас сра­зу умень­шит­ся ко­ли­че­­с т­во за­пол­няе­мых по­
лей, это нор­маль­но.
» Timeout Retries — ста­вим 2, ко­ли­че­­с т ­во по­в то­ров го­ло­с о­вой
за­пи­си.
» Timeout Recording — None.
» Timeout Destination — Extensions — <1002> 1002, ес­ли поль­зо­
ва­тель ни­че­го не на­жал, то на­пра­вим его на но­мер 1002 (от­ра­ба­ты­
ва­ем тех­за­да­ние!).
Функ­цио­наль­но у нас пре­ду­смот­ре­на толь­ко од­на кла­ви­ша —
«1», и на нее на­до по­ве­сить функ­цию за­пи­си го­ло­со­во­го со­об­ще­
ния. Да­вай­те вспо­ми­нать, что за это у нас от­ве­ча­ет но­мер 999.
С уче­том то­го, что мы за­ли­ли свои со­об­ще­ния, впол­не мож­но
дать воз­мож­ность Asterisk’у ими поль­зо­вать­ся. По­это­му там, где
на­чи­на­ет­ся по­ле IVR Entries, вво­дим в ле­вое по­ле (Ext) 1, в сле­дую­
щем (Destination) сна­ча ­ла вы­би­ра­ем Voicemail — у вас сра­зу по­
яв­ля­ет­ся еще од­но окош­ко спра­ва, и там уже сто­ит поль­зо­ва­тель
По­строе­ние IVR-ме­ню
Идем в Applications > IVR; жмем кноп­к у Add a new IVR и на­чи­наем
за­пол­нять окош­ки. Ком­мен­ти­ро­вать бу­ду толь­ко то, что за­пол­няю.
Ес­ли не пи­шу ни­че­го — ос­тав­ля­ем пус­тое или то, что проставлено
по умолчанию.
» IVR Name — про­из­воль­но, я на­пи­сал main.
» Announcement — вы­би­ра­ем свою за­пись 2.
» Direct Dial — по­ме­ня­ем на Extensions, это по­зво­лит, находясь
в ме­ню, на­би­рать сра­зу те но­ме­ра, ко­то­рые есть на Asterisk’е.
» Timeout — ста­вим 4. Это вре­мя ожи­д а­ния, ко­гда Asterisk еще
не пе­ре­хо­дит по­с ле окон­ча­ния го­ло­со­во­го фай­ла на сле­д ую­щее
дей­ст­вие, т. е. вре­мя на раз­ду­мье. Из на­ше­го тех­за­да­ния это 4 се­
кун­ды, пом­ни­те?
www.linuxformat.ru/subscribe
> Рис. 4. Но­вое
IVR-ме­ню.
Апрель 2016 LXF208 | 77
Учебник IP-телефония
> Рис. 5. Вход­ное
при­вет­ст­вие.
> Рис. 7. Окон­ча­ние ра­бо­ты.
от­ве­тить на зво­нок у вас нет — ин­фор­ма­ция все рав­но вас до­го­
нит. И у ва­ше­го або­нен­та не воз­ник­нет ощу­ще­ние за­бро­шен­но­сти
и не­нуж­но­сти: ему ока­за­ли вни­ма­ние и вы­слу­ша­ли.
Ис­хо­дя­щие мар­шру­ты
999. Здо­ро­во, прав­да? Чуть под­пра­вим, вы­бе­рем оп­цию <999> 999
(instructions-only).
Та­ким об­ра­зом, ва­ше IVR-ме­ню долж­но при­нять вид, по­ка­зан­
ный на рис. 4.
На мой взгляд, все очень про­сто и эле­гант­но.
Как все­гда, кно­поч­ка Submit, и крас­ная ввер­х у Apply Config.
Но не рас­слаб­ля­ем­ся: пер­вая пау­тин­ка еще не го­то­ва, это внут­
рен­нее кру ­же­во, на­до его на чем-то под­ве­сить.
Фра­за «При­вет! Вы по­зво­ни­ли в жур­нал Linux Format» за­пи­са­на
у нас в фай­ле № 1, так же мы обоз­ва­ли при­вет­ст­вие. По­сле не­го нам
на­до пе­ре­на­пра­вить на толь­ко что сде­лан­ное ме­ню.
Воз­вра­щ а­ем­ся в Applications > Announcement, вы­би­ра­ем при­
вет­ст­вие № 1, и вни­зу, в окош­ке Destination after playback: вы­би­ра­
ем IVR main (рис. 5).
Со­хра­ня­ем, при­ме­ня­ем.
Да­лее нам на­до на­пра­вить на при­вет­ст­вие № 1 все на­ши вхо­дя­
щие мар­шру­ты. Пе­ре­хо­дим в Connectivity > Inbound Routes, по­оче­
ред­но вы­би­ра­ем все на­ши мар­шру­ты, и вни­зу, в по­ле Set Destination
вы­би­ра­ем на­ше при­вет­ст­вие (рис. 6).
И ос­т а­лось со­всем не­мно­го до реа­ли­за­ции всех тре­бо­ва­ний
тех­за­да­ния, все­го один пункт: «При на­прав­ле­нии на сек­ре­та­ря, ес­
ли опе­ра­тор за­нят или не от­ве­ча­ет, то пе­ред або­нен­том на­до из­ви­
нить­ся: „К со­жа ­ле­нию, сек­ре­тарь сей­час не­дос­т у­пен; по­жа ­луй­ста,
пе­ре­зво­ни­те поз­же. До сви­да­ния!“ — и по­ло­жить труб­к у». За этот
фраг­мент у нас от­ве­ча­ет зву­ко­вой файл № 6, ко­то­рый свя­зан с од­
но­имен­ным при­вет­с т­ви­ем (хо­тя в дан­ном слу­чае его бо­лее пра­
виль­но на­звать «про­ща­ние»).
За ­хо­д им в Applications > Extension, в наш но­м ер сек ­р е­т а­р я
(1002), и в по­след­ней час­ти на­стро­ек на­прав­ля­ем при всех ус­ло­ви­
ях, ко­гда он не от­ве­ча­ет, на «про­ща­ние с из­ви­не­ния­ми», это за­пись
№ 6 (рис. 7).
Submit, Apply Config — и вуа­ля, все го­то­во! Мож­но зво­нить
и про­ве­рять.
Мы с ва­ми сей­час сде­ла­ли са­мое про­с тое, что мож­но при­д у­
мать. Но уже ка­к ая ав­т о­м а­т и­з а­ц ия ра­б о­т ы! Ес ­ли воз­мож ­но­с ти
> Рис. 6. На­прав­ле­
ние мар­шру­та.
78 | LXF208 Апрель 2016
По­ра по­го­во­рить о том, как мож­но осу­ще­ст­в­лять звон­ки не толь­ко
внут­ри Asterisk’а, но и зво­нить на­ру­ж у — на го­род­ские или на со­
то­вые те­ле­фо­ны.
К сча­стью, это про­ще все­го то­го, что мы с ва­ми уже про­де­лали.
И ес­ли бы у вас был все­го один транк, то опи­са­ние все­го про­цес­са
уме­сти­лось бы на не­сколь­ких строч­ках. Но мы же хо­тим сде­лать
ум­ную мар­шру ­ти­за­цию? По­это­му на­бе­рем­ся не­мно­го тер­пе­ния,
и при­сту­пим.
За ис­хо­д я­щие мар­шру­ты от­ве­ча­ет раз­дел Connectivity > Out­
bound Routes. У вас там уже есть два мар­шру­та: один — это ТФОП,
вто­рой — со­то­вый мо­дем. До­ба­вим еще один:
» Connectivity > Outbound routes > ADD route
» Route Name > sip
» Dial Patterns that will use this Route > в 3‑м сле­ва по­ле ста­вим точ­
ку, это зна­чит «лю­бое ко­ли­че­­ст­во сим­во­лов»; для на­ча­ла бу­дем пе­
ре­да­вать в сеть так, как мы на­би­ра­ем на кла­виа­т у­ре,
» Trunk Sequence for Matched Routes > вы­би­ра­ем свой SIP-транк.
При опи­са­нии до­бав­ле­ния ис­хо­д я­щих мар­шру ­тов я не упо­ми­
нал по­ле Route Position, здесь мож­но за­да­вать при­ори­тет ис­поль­
зуе­мых мар­шру­тов. Ес­ли с Asterisk’а пла­ни­ру­ет­ся зво­нить толь­ко
в оп­ре­де­лен­ные на­прав­ле­ния (в го­род, на со­то­вые, по меж­го­ро­ду),
то это­го вам впол­не хва­тит.
В ре­а ль­но­сти та­ко­го не бы­ва­ет, зво­нить на­до на раз­ные но­ме­
ра. Со­от­вет­ст­вен­но, стои­мость звон­ков по раз­ным ка­на­лам бу­дет
раз­ная. На со­то­вые те­ле­фо­ны вы­год­нее зво­нить с со­то­вых (же­ла­
тель­но то­го же опе­ра­то­ра, но это дос­та­точ­но слож­но реа ­ли­зо­вать),
на го­род­ские — с то­го но­ме­ра, где ис­хо­дя­щие уже вклю­че­ны в або­
нент­скую пла­т у, по меж­го­ро­д у — там, где под­к лю­чен наи­бо­лее
пра­виль­ный вы­бор меж­ре­гио­наль­но­го опе­ра­то­ра.
По­л у ­ча­ет­с я, что в дан­ном слу ­чае нам на ­до также со­с та­вить
се­бе крат­кое тех­за­да­ние на ис­хо­д я­щ ую мар­шру­ти­за­цию. Для его
со­став­ле­ния нуж­но знать стои­мость звон­ков. И на этой ос­но­ве со­
ста­вить таб­ли­цу при­ори­те­тов — на­при­мер, та­к ую:
SIP
ТФОП
Со­то­вый
Го­род­ской
2
1
3
Меж­го­род
1
3
2
Со­то­вый
2
3
1
В пер­вой ко­лон­ке — ку­да зво­нить, в пер­вой стро­ке — тран­ки,
в са­мой таб­ли­це — стои­мость звон­ков (чем мень­ше за ми­ну­т у, тем
при­ори­тет вы­ше, а по­ряд­ко­вый но­мер мень­ше)
Т. е. Asterisk дол­жен при на­б о­р е, на­при­м ер, со­т о­во­г о но­м е­
ра ста­рать­ся со­еди­нить­ся че­рез USB-мо­дем. Ес­ли этот транк за­
нят, то по­пы­тать­ся на­брать че­рез SIP-транк, и в по­с лед­нюю оче­
редь — че­рез ТФОП.
Те­перь на­до дать по­нять Asterisk’у, ка­кой из но­ме­ров яв­ля­ет­ся
со­то­вым, ка­кой го­род­ским и ка­кой ме­ж ­ду­го­род­ным.
Со­то­вый но­мер со­с то­ит из 10 цифр, пер­вая на­чи­на­ет­ся на 9;
т. е. лю­бой со­то­вый но­мер мож­но за­пи­сать так: 9ХХХХХХХХХ, где
www.linuxformat.ru/subscribe
IP-телефония Учебник
Х — лю­бая циф­ра от 0 до 9. Тео­ре­ти­че­­ски пер­вые 3 циф­ры, вклю­
чая 9, оп­ре­де­ля­ют опе­ра­то­ра мо­биль­ной свя­зи. К со­жа­ле­нию, так
бывает не все­гда.
Го­род­ской (у ме­ня) со­сто­ит из 6 цифр: ХХХХХХ.
Ме­ж ­ду­го­род­ный со­сто­ит из 10 цифр, и пер­вая из них не 9: [1– 8]
ХХХХХХХХХ; воз­мож­но, к не­му при­дет­ся спе­ре­ди до­бав­лять циф­
ру 8 (вы­ход на меж­го­род). За­пись 1– 8 в квад­рат­ных скоб­ках оз­на­
ча­ет лю­бую циф­ру от 1 до 8.
Я на­ме­ре­но не упо­ми­наю ме­ж ­ду­на­род­ный на­бор, ко­рот­кие но­
ме­ра со­то­вых опе­ра­то­ров, бес­плат­ные те­ле­фо­ны го­ря­чих ли­ний
(8‑800), те­ле­фо­ны экс­трен­ных служб (01, 02, 03, 112...). Для при­
ме­ра дос­та­точ­но трех ука­зан­ных вы­ше ва­ри­ан­тов, с ос­таль­ны­ми
по ана­ло­гии раз­бе­ре­тесь са­ми.
Те­перь на­до оп­ре­де­лить, как на­би­рать эти но­ме­ра: на­до ли до­
бав­лять спе­ре­ди к со­то­вым но­ме­рам циф­ру 8? На­до ли при звон­
ке че­рез со­то­во­го опе­ра­то­ра в го­род до­бав­лять внут­рен­ний код
го­ро­да?
Для это­го про­с то по­оче­ред­но от­к лю­чай­те все тран­ки, кро­ме
од­но­го, и пы­тай­тесь доз­во­нить­ся раз­ны­ми ва­ри­ан­та­ми — то в го­
род, то на со­то­вые, то на меж­го­род. Смот­ри­те при этом в кон­соль
Asterisk’а и де­лай­те вы­во­ды. На­при­мер, я пы­та­юсь доз­во­нить­ся
на свой со­то­вый с внут­рен­не­го но­ме­ра 1002 че­рез SIP-транк:
-- Executing [s@macro-dialout-trunk:22]
Dial(“SIP/1002-00000015”, “SIP/786344311ХХ/90343544ХХ,300,
Tt”) in new stack
Но не ука­зал cпе­ре­ди 8, по­это­му в ито­ге опе­ра­тор со­об­щил мне,
что но­мер не об­слу­жи­ва­ет­ся, и ра­зо­рвал ка­нал:
[2016-03-17 13:39:06] WARNING[6810][C-0000000f]:
channel.c:4861 ast_prod: Prodding channel ‘SIP/1002-00000015’
failed
== Spawn extension (macro-dialout-trunk, s-INVALIDNMBR, 4)
exited non-zero on ‘SIP/1002-00000015’ in macro ‘dialout-trunk’
== Spawn extension (from-internal, 90343544ХХ, 5) exited nonzero on ‘SIP/1002-00000015’
-- Executing [h@from-internal:1] Hangup(“SIP/1002-00000015”,
“”) in new stack
То­гда я при­ба­вил вось­мер­к у, и вот что вы­шло:
-- Executing [s@macro-dialout-trunk:22]
Dial(“SIP/1002-00000017”, “SIP/786344311ХХ/890343544ХХ,300
,Tt”) in new stack
И за­тем:
-- Called SIP/786344311ХХ/890343544ХХ
То есть по­нят­но, что для вы­зо­ва со­то­во­го те­ле­фо­на с SIP-тран­ка
на­до при­ба­вить к со­то­во­му но­ме­ру 8, а на­би­рать его че­рез Asterisk
без этой циф­ры. Или на­би­рать с циф­рой, но по вто­рой сор­ти­ро­вать
вы­зо­вы на мо­биль­ные те­ле­фо­ны и на меж­го­род (9 — мо­биль­ный,
1 – 7 — меж­го­род). Ос­та­но­вим­ся по­ка на пер­вом ва­ри­ан­те.
По ито­гам тес­то­вых звон­ков со­став­ля­ем вто­рую таб­лич­к у:
Го­род­ской
Меж­го­род
Со­то­вый
SIP
ТФОП
Со­то­вый
ХХХХХХ
9ХХХХХХ
8ККККХХХХХХ
8[1-8]ХХХХХХХХХ 98[1-8]ХХХХХХХХХ 8[1-8]ХХХХХХХХХ
89ХХХХХХХХХ
89ХХХХХХХХХ
89ХХХХХХХХХ
> Рис. 8. При­ори­
теты в мар­шру­те.
Пер­во-на­пер­во сти­ра­ем все ста­рые ис­хо­дя­щие мар­шру ­ты, они
нам боль­ше не по­на­до­бят­ся.
Соз­д а­е м три но­в ых: city, intercity, mobile. В ка­ж ­д ом из них
в об­лас­ти Dial Patterns that will use this Route про­пи­сы­ва­ем мас­к у,
по ко­то­рой Asterisk бу­дет оп­ре­де­лять, ка­кой из но­ме­ров под ­хо­дит
под этот мар­шрут. По­ля prepend и prefix ос­тав­ля­ем пус­ты­ми, а в по­
ле match pattern вно­сим мас­ки:
» city — XXXXXX
» intercity — [1 – 8]XXXXXXXXX
» mobile — 9XXXXXXXXX
Спус­ка­ем­ся ни­же, и в по­ле Trunk Sequence for Matched Routes
вы­би­ра­ем для ка­ж ­до­го из мар­шру­тов свою це­поч­к у при­ори­те­тов,
ко­то­рую бе­рем из таб­лич­ки; на­при­мер, мас­ка и при­ори­те­ты для
мар­шру­та mobile по­ка­за­ны на рис. 8.
Пе­ре­хо­дим в ре­д ак­т и­ро­ва­ние тран­ков: Connectivity > Trunks,
и про­пи­сы­ва­ем для ка­ж ­до­го тран­ка пра­ви­ла на­бо­ра но­ме­ров, это
де­ла­ет­ся в об­лас­ти Dialed Number Manipulation Rules. До­пус­тим, это
SIP-транк, как на рис. 9.
Пер­вая стро­ка — меж­го­род, вто­рая со­то­вые, тре­тья го­род­ские.
Для ка­на­ла ТФОП всю­ду в по­ле prepend в край­нюю ле­вую по­зи­цию
бу­дут до­бав­ле­ны де­вят­ки (вы­ход в го­род).
Про­буй ­те зво­нить с Asterisk’а на со­то­вые, го­род­ские и меж­
го­р од — он без­о ши­б оч­н о бу­д ет под­с тав ­л ять заданные вами
при­ори­те­ты.
За­клю­че­ние
На этом я за­к ан­чи­в аю се­рию ста­тей, ко­то­рую спра­вед ­ли­во бы­
ло бы на­звать «Asterisk+FreePBX для чай­ни­ков: на­ча­ло». Я уве­рен,
что вы под глу­бо­ким впе­чат­ле­ни­ем от воз­мож­но­стей IP-те­ле­фо­
нии. Ос­та­ет­ся толь­ко на­пра­вить вас на пер­во­ис­точ­ник: «Asterisk:
The Future of Telephony [Ас ­те­риск: Бу­д у ­щее те ­ле­фо­нии]», ав­то­
ры Джим Ван Мег­г е­л ен, Лейф Мад­с ен, Джа­р ед Смит [Jim Van
Meggelen, Leif Madsen, Jared Smith]. В Ин­тер­не­те есть хо­ро­ший пе­
ре­вод на рус­ский язык — на­при­мер, на http://www.e-reading.club/
bookreader.php/138011/Asterisk:_budushchee_telefonii.pdf. Там нет
«род­но­го GUI», но воз­мож­но­с тей на по­ря­док боль­ше. Про­чти­те,
не по­жа ­лее­те. И ус­той­чи­вой вам свя­зи! |
В ко­лон­ке «ТФОП» впе­ре­ди всех но­ме­ров сто­ит 9 — у ме­ня вы­
ход в го­род за пре­де­лы офис­ной же­лез­ной АТС (не Asterisk!) про­
ис­хо­дит че­рез де­вят­к у. В ко­лон­ке «Со­то­вый» КККК — код мое­го
го­ро­да, толь­ко так со­еди­ня­ет­ся че­рез мо­биль­но­го опе­ра­то­ра. Ра­
зу­ме­ет­ся, зво­нок че­рез со­то­вый мо­дем в го­род на­по­ми­на­ет не­что
«по­че­сать ле­вое ухо пра­вой ру­кой», да это еще и до­ро­го. Но за­то
при за­ня­то­сти ос­нов­ных ка­на­лов мы все рав­но смо­жем по­зво­нить
ку­да угод­но. Тем бо­лее, что при­ори­тет со­то­во­го мо­де­ма при звон­
ке в го­род ра­вен 3.
Воо­р у ­ж ив­ш ись эти­м и таб­л ич­к а­м и, при­с ту­п а­е м к вая­н ию
мар­шру ­ти­за­ции.
www.linuxformat.ru/subscribe
> Рис. 9. Пра­ви­ла
на­бо­ра в тран­ке.
Апрель 2016 LXF208 | 79
Swift
Swift: Ба­зо­вое
руко­во­дство
На­бе­ри­те обо­ро­ты с язы­ком про­грам­ми­ро­ва­ния Swift — и нау­чи­тесь про­грам­ми­
ро­вать бы­ст­ро. Ми­ха­лис Цу­ка­лос раз­би­ра­ет­ся в ос­но­вах.
Наш
эксперт
Ми­ха­лис Цу­ка­
лос — ад­ми­ни­ст­
ра­тор баз дан­ных,
про­грам­мист, ма­
те­ма­тик и ад­ми­
ни­ст­ра­тор Unix.
В сво­бод­ное вре­
мя он лю­бит пи­
сать тех­ни­че­­ские
ста­тьи и сра­жать­ся
с пре­ступ­но­стью.
> Содержимое каталога bin в установке Swift.
Г
Скорая
помощь
Скоб­ки в вы­ра ­же­
ни­ях if не обя­за­
тель­ны, так как,
по мне­нию Swift,
ино­гда они не­оп­
рав­дан­но за­гряз­
ня­ют код. В Swift
так­же нет фай­
лов .h: они здесь
не нуж­ны.
лав­н ым сюр­п ри­з ом Все­м ир­н ой кон­ф е­р ен­ц ии раз­р а­б от­
чи­ков на плат­фор­ме Apple (WWDC) 2014 г. бы­ло анон­си­
ро­ва­ние Swift, но­во­го язы­ка про­грам­ми­ро­ва­ния, шед­ше­
го на за­м е­н у Objective-C от Apple. Глав­н ым сюр­п ри­з ом WWDC
2015 бы­ло про­воз­гла­ше­ние Swift от­кры­тым про­ек ­том. На­ше руко­
вод­с тво пред­с тав­ля­ет со­бой крат­кое вве­де­ние в Swift и его воз­
мож­но­с ти с по­мо­щ ью не­сколь­к их не­боль­ших, но пол­но­цен­ных
при­ме­ров ко­да.
Про­цесс ус­та­нов­ки, ско­рее все­го, по­ка ­жет­ся са­мой слож­ной ча­
стью это­го уро­ка. Apple не пре­дос­тав­ля­ет па­ке­тов для всех ди­ст­ри­
бу­ти­вов Linux. По­ка офи­ци­а ль­но под­дер­жи­ва­ют­ся толь­ко Ubuntu
14.04 и 15.10. Ес­ли у вас дру­гой ди­с т­ри­бу­т ив, про­цесс ус­т а­нов­
ки ско­рее все­го ус­лож­нит­ся. Для Ubuntu 14.04 этот про­цесс та­ков:
$ sudo apt-get install clang libicu-dev
$ wget https://swift.org/builds/ubuntu1404/swift-2.2-SNAPSHOT2015-12-18-a/swift-2.2-SNAPSHOT-2015-12-18-a-ubuntu14.04.
tar.gz
$ wget -q -O - https://swift.org/keys/all-keys.asc | gpg --import $ gpg --keyserver hkp://pool.sks-keyservers.net —refresh-keys
Swift
80 | LXF208 Апрель 2016
$ wget https://swift.org/builds/ubuntu1404/swift-2.2-SNAPSHOT2015-12-18-a/swift-2.2-SNAPSHOT-2015-12-18-a-ubuntu14.04.tar.
gz.sig
$ gpg --verify swift-2.2-SNAPSHOT-2015-12-18-aubuntu14.04.tar.gz
Пер­в ая ко­м ан­д а ус­т а­н ав­л и­в а­е т ряд не­о б­хо­д и­м ых па­ке­т ов,
ес­ли они еще не ус­та­нов­ле­ны. Вто­рая за­гру ­жа­ет по­след­ний сни­
мок в вер­сии для раз­ра­бот­чи­ков. Тре­тья им­пор­ти­ру­ет клю­чи PGP
и долж­на вы­пол­нять­ся по ра­зу в ка­ж ­дой сис­те­ме Linux. Чет­вер­
тая ко­ман­д а за­гру­ж а­ет по­с лед­ние клю­чи, а пя­тая — не­об­хо­ди­
мые фай­лы под­пи­си. По­след­няя ко­ман­да про­ве­ря­ет це­ло­ст­ность
за­гру ­жен­но­го ар­хи­ва. Уч­ти­те, что по­след­няя ко­ман­да ино­гда вы­
да­ет без­обид­ное пре­д у­пре­ж ­де­ние, ко­то­рое мож­но иг­но­ри­ро­вать,
ес­ли вы за­гру­зи­ли все фай­лы из до­ве­рен­но­го ис­точ­ни­ка (на­при­
мер, https://swift.org).
Ес­ли все нор­маль­но, рас­па­к уй­те ар­хив ко­ман­дой
tar xzf swift-2.2-SNAPSHOT-2015-12-18-a-ubuntu14.04.tar.gz
Она соз­да­ет но­вый ка­та­лог, ко­то­рый на­до до­ба­вить к сво­ей пе­ре­
мен­ной PATH:
$ export PATH=”/home/mtsouk/swift-2.2SNAPSHOT-2015-12-18-a-ubuntu14.04/usr/
bin”:”${PATH}”
При­ме­ч а­ние: при­ве­д и­т е путь /home/mtsouk/swift-2.2‑SNAP­
SHOT-2015‑12‑18‑a-ubuntu14.04 в со­от ­вет­с т ­вие со сво­ей сис ­т е­
мой, име­нем поль­зо­ва­те­ля и ка­та ­ло­гом Swift. Свою вер­сию Swift
мож­но оп­ре­де­лить, вы­пол­нив ко­ман­д у swift --version. (На эк­ран­
ном сним­ке ввер­х у по­ка­за­но со­дер­жи­мое ка­та­ло­га bin ус­та­нов­
ки Swift.)
www.linuxformat.ru/subscribe
Swift
Дру­гие свой­ст­ва Swift
Зна­че­ния в Swift ни­ко­гда не пре­об­ра­зу­ют­ся в дру­гие
ти­пы не­яв­но, что спо­соб­ст­ву­ет умень­ше­нию чис­ла
оши­бок в ва­шем ко­де. Фи­г ур­ные или круг­лые
скоб­ки ста­вят­ся все­гда, да­же для бло­ков ко­да, со­
стоя­щих все­го из од­ной стро­ки. Как мы упо­ми­на­ли
в ос­нов­ном тек­сте, наи­бо­лее мощ­ная управ­ляю­
щая кон­ст­рук­ция в Swift — это вы­ра­же­ние switch.
По­сколь­к у Swift под ­дер­жи­ва­ет функ­цио­наль­ное
про­грам­ми­ро­ва­ние, функ­ция Swift мо­жет воз­вра­
щать в ка­че­­ст­ве зна­че­ния дру­г ую функ­цию! Кро­ме
то­го, в име­нах пе­ре­мен­ных мож­но ис­поль­зо­вать
лю­бые сим­во­лы Unicode. На­при­мер, мож­но объ­
явить пе­ре­мен­ную так:
let π = 3.14159
Ес­ли пе­ре­мен­ная, объ­яв­лен­ная с по­мо­щью
клю­че­во­го сло­ва var, ни ра­зу не ме­ня­ла сво­его
За­пуск ко­ман­ды swift без ар­г у­мен­тов от­кро­ет ин­те­рак­тив­ную
обо­лоч­к у Swift REPL. Это пре­крас­ное ме­сто для изу­че­ния но­вых ве­
щей, так как в ней вы смо­же­те про­честь, вы­чис­лить и вы­вес­ти ре­
зуль­та­ты для лю­бо­го вве­ден­но­го ко­да Swift. В REPL дос­т уп­ны все
функ­ции Swift. А ес­ли на­жать кла­ви­шу Tab, REPL от­кро­ет спи­сок
всех воз­мож­ных до­пол­не­ний для тек­ста, ко­то­рый вы на­бра­ли. Нач­
нем с пред­став­ле­ния ма­лень­кой про­грам­мы “Hello World!” на Swift:
print(«Hello, World!»)
Ес­ли вы зна­ко­мы с C, C++ или Objective-C, то кое-что от­ме­
тите. Во-пер­вых, здесь нет точ­ки с за­пя­той, оз­на­чаю­щей окон­ча­
ния ко­манд. В Swift точ­ки с за­пя­той ис­поль­зу­ют­ся толь­ко для то­
го, что­бы по­мес­тить две ко­ман­ды в од­ну стро­к у. Во-вто­рых, здесь
нет функ­ции main(), что долж­но быть для вас боль­шим сюр­при­зом.
На­ко­нец, здесь нет вы­ра­же­ний #include или #import; од­на­ко это вы­
зва­но лишь тем, что на­ша про­грам­ма “Hello World” очень ма­лень­
кая и они ей не нуж­ны.
За­пус­тим про­грам­му “Hello World!”:
$ swift hw.swift
Hello, World!
$ swiftc hw.swift
$ ls -l hw
-rwxrwxr-x 1 mtsouk mtsouk 13676 Dec 24 18:19 hw*
$ ./hw
Hello, World!
$ cat hw.script
#!/home/mtsouk/swift-2.2-SNAPSHOT-2015-12-18-aubuntu14.04/
usr/bin/swift
print(“Hello World!”)
$ chmod 755 hw.script
$ ./hw.script
Hello World!
Как ви­ди­те, за­пус­тить код Swift мож­но тре­мя раз­лич­ны­ми спо­
со­б а­м и. Пер­в ый — вы­п ол­нить код Swift из ко­м анд­н ой стро­к и
без соз­д а­ния ис­пол­няе­мо­го фай­ла. Вто­рой спо­с об ис­поль­зу­е т
swiftc для ком­пи­ля­ции hw.swift и соз­да­ния ис­пол­няе­мо­го дво­ич­
но­го фай­ла, ко­то­рый ав­то­ма­ти­че­­ски по­лу­ча­ет имя hw — по име­ни
фай­ла с ко­дом Swift. Тре­тий спо­соб по­ка­зы­ва­ет, как соз­дать и за­
пус­тить скрипт Swift (hw.script) — по ана­ло­гии со скрип­том обо­
лоч­ки Unix. Ес­ли вы ус­пеш­но за­пус­ти­ли про­грам­му “Hello World”,
мож­но дви­гать­ся даль­ше.
Apple вклю­чи­ла в па­кет Swift ме­нед­жер па­ке­тов Swift и сис­те­му
сбор­ки (Build System), что по­зво­ля­ет удоб­но ком­пи­ли­ро­вать про­
ек ­ты Swift. Для при­ме­ра вос­поль­зу­ем­ся фай­лом hw.swift. Сна­ча­
ла на­до соз­дать но­вый ка­та­лог, ко­то­рый бу­дет вклю­чать все фай­
лы про­ек­та — для это­го вы­пол­ни­те ко­ман­ды $ mkdir hw и $ cd hw.
За­т ем на­до соз­д ать файл с име­нем Package.swift, ко­т о­рый
бу­дет ма­ни­фе­с том про­ек­та — это дей­с т­вие обя­за­тель­ное. Ес­ли
файл ма­ни­фе­с та пуст, ме­нед­жер па­ке­тов соз­д аст но­вый про­ект
с па­ра­мет­ра­ми по умол­ча­нию. Так как вы ис­поль­зуе­те па­ра­мет­ры
зна­че­ния, Swift по­ни­ма­ет это и вы­во­дит сле­д ую­щее
пре­д у­пре­ж ­де­ние:
bubbleSort.swift:7:21: warning: variable ‘temp’ was
never mutated; consider changing to ‘let’ constant
[пе­ре­мен­ная ‘temp’ не ме­ня­лась, ее мож­но
объ­я­вить кон­стан­той]
Swift так­же под­дер­жи­ва­ет вы­ра­же­ния while
и repeatwhile. По­след­нее по­хо­же на do-while в C.
по умол­ча­нию, ме­нед­жер па­ке­тов ожи­д а­ет най­ти весь код Swift
в ка­та­ло­ге Sources, ко­то­рый то­же на­до соз­дать:
$ touch Package.swift
$ mkdir Sources
По умол­ча­нию ме­нед­жер па­ке­тов бу­дет ис­кать файл main.swift
и ком­пи­ли­ро­вать его, по­это­му ско­пи­руй­те файл hw.swift в ка­та­лог
Sources, но при этом пе­ре­име­нуй­те этот файл в main.swift и за­тем
со­бе­ри­те про­ект сле­дую­щим об­ра­зом:
$ cp ~/hw.swift Sources/main.swift
$ swift build
Ре ­зуль­т ат сбор­к и бу­дет на ­хо­д ить­с я в ка­т а ­ло­ге .build/debug.
Это вы­зва­но тем, что ме­нед­жер па­ке­тов счи­та­ет, что пер­вый ис­
пол­няе­мый файл бу­дет ис­поль­зо­ван для от­лад­ки. Имя ис­пол­няе­
мо­го фай ­ла сов­па ­д а­ет с име­нем про­ек ­т а. (Пол­ный спи­сок соз­
дан­ных для про­ек ­та фай­лов и ка­та ­ло­гов см. на эк­ран­ном сним­ке
вни­зу.) В ос­тав­шей­ся час­ти ру­ко­во­дства мы про­де­мон­с т­ри­ру­ем
важ­ные воз­мож­но­сти язы­ка, по­это­му го­товь­тесь к на­пи­са­нию ко­
да на Swift!
Кон­стан­ты и пе­ре­мен­ные
В Swift на­до объ­яв­лять и кон­стан­ты, и пе­ре­мен­ные. Вот как объ­яв­
ля­ют­ся пе­ре­мен­ная и кон­стан­та в REPL:
1> var youCanChangeMe = 12
youCanChangeMe: Int = 12
2> let youCannotChangeMe = 12
youCannotChangeMe: Int = 12
Для объ­яв­ле­ния пе­ре­мен­ной сле­д у­ет ис­поль­зо­вать клю­че­вое
сло­во var, для кон­стан­ты — клю­че­вое сло­во let. Ес­ли вы по­про­бу­
е­те из­ме­нить зна­че­ние кон­стан­ты youCannotChangeMe, Swift раз­
ра­зит­ся очень под­роб­ным со­об­ще­ни­ем об ошиб­ке (как вы уви­ди­те
Скорая
помощь
Две хо­ро­шие кни­
ги о Swift — «Про­
грам­ми­ро­ва­ние
на Swift: Ру­ко­во­
дство для чай­ни­
ков» Мэ­тью Ма­
тиа­са [Matthew
Mathias] и Джо­
на Гал­лахе­ра [John
Gallagher] и «Но­ви­
чок в Swift: На­чи­
на­ем про­грам­ми­
ро­вать на Swift 2»
Дже­ни Клей­тон
[Janie Clayton],
Алек­си­са Гал­
лахе­ра [Alexis
Gallagher], Мэт­
та Гел­лоу­эя [Matt
Galloway], Эли Га­
нема [Eli Ganem],
Эри­ка Кер­бе­ра [Erik
Kerber] и Бе­на Мор­
роу [Ben Morrow].
> Ме­нед­жер па­ке­тов Swift, ко­то­рый вхо­дит в со­став па­ке­та Swift, соз­да­ет при сбор­ке
проек­та мас­су фай­лов и ка­та­ло­гов.
»»Подпишитесь на печатную или электронную версиина www.linuxformat.ru/subscribe!
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 81
Swift
цик­ла for в Swift мож­но ис­поль­зо­вать и ста­рый, на­при­мер: for i =
0; i<=15; i++ { }.
Од­на­ко в бу­ду­щих вер­си­ях Swift C-вер­сия цик­ла for мо­жет быть
уда ­ле­на, по­это­му со­ве­т у­ем вам ис­поль­зо­вать но­вую вер­сию. Ес­ли
вы не хо­ти­те вклю­чать в цикл пра­вую гра­ни­цу, его нуж­но за­пи­сать
как for i in 0..<5 { }; а ес­ли хо­ти­те ука­зать осо­бый шаг, то как for i in 2.
stride(to: 10, by: 2) { }.
Пре­ды­ду­щий цикл for с по­мо­щью функ­ции stride() воз­вра­ща­ет
толь­ко 2, 4, 6 и 8. Функ­ция stride() воз­вра­ща­ет по­сле­до­ва­тель­ность
зна­че­ний лю­бо­го «раз­ла­гае­мо­го на ша­ги» ти­па, и ее так­же мож­но
ис­поль­зо­вать для по­лу­че­ния об­рат­но­го диа­па­зо­на. Ес­ли вы хо­тите
по­лу­чить об­рат­ный диа­па­зон без ис­поль­зо­ва­ния stride, ис­поль­
зуйте функ­цию reverse(), сле­дую­щим об­ра­зом:
for i in (1...5).reverse() { }
Пожалуйста, учти­те, что следующий цикл не­пра­ви­лен, и при
по­пыт­ке его вы­пол­нить поя­вит­ся со­об­ще­ние об ошиб­ке:
for i in 5...1 { }
Как по­ка­зы­ва­ет по­след­ний при­мер, stride() под­хо­дит и для об­
работки попарно!
Функ­ции Swift
> Из­ме­нить зна­че­ние кон­стан­ты, объ­яв­лен­ной с по­мо­щью let, нель­зя. Сде­лать это
можно толь­ко с пе­ре­мен­ны­ми, объ­яв­лен­ны­ми с помо­щью var. Так­же нель­зя из­ме­нить
тип пе­ре­мен­ной!
Скорая
помощь
Swift так­же под­
дер­жи­ва­ет струк­
ту­ры (Structures),
клас­сы (Classes),
пе­ре­чис­ле­ния
(Enumerations),
про­то­ко­лы
(Protocols), об­
щие кон­ст­рук­
ции (Generics), об­
ра­бот­к у оши­бок
(Error Handling)
и функ­цио­наль­
ное про­грам­ми­ро­
ва­ние (Functional
Programming) и мо­
жет ис­поль­зо­вать­
ся как скрип­то­вый
язык.
да ­лее). Так ­же нель­зя из­ме­нять тип пе­ре­мен­ной, да ­же ес­ли она бы­
ла объ­яв­ле­на с клю­че­вым сло­вом var. Язык Swift дос­та­точ­но умен,
что­бы оп­ре­де­лить тип пе­ре­мен­ной ав­то­ма­ти­че­­ски. Но его мож­но
объ­я­вить и са­мим, сле­дую­щим об­ра­зом:
var youCanChangeMe: Int = 123
В сле­д ую­щем ко­де Swift оп­ре­де­ля­ет­ся ре­к ур­сив­ная функ­ция,
ко­то­рая по­зво­лит вы­чис­лить це­лые чис­ла, при­над ­ле­жа­щие к по­
сле­до­ва­тель­но­сти Фи­бо­нач­чи:
func fibo(number: Int) -> Int {
if number == 0 {
return number
}
if number == 1 {
return number
}
return (fibo(number - 1) + fibo(number - 2))
}
Объ­яв­ле­ние функ­ции fibo() по­ка­зы­ва­ет, что она при­ни­ма­ет в ка­
че­­ст­ве вход­но­го па­ра­мет­ра це­лое чис­ло, при­сваи­вае­мое пе­ре­мен­
ной number, и воз­вра­ща­ет то­же це­лое чис­ло. Ес­ли вы хо­ти­те вы­
чис­лить пер­вые 15 чле­нов по­с ле­до­ва­тель­но­с ти Фи­бо­нач­чи, вам
не­об­хо­ди­мо ис­поль­зо­вать сле­дую­щий цикл for:
for i in 0...15 {
print(“Fibonacci number \(i) is: \(fibo(i))”)
}
Ис­поль­зо­в а­ние \() в функ­ц ии print() по­зво­ля­е т про­г рам­ми­
сту вклю­чить пе­ре­мен­ную или воз­вра­щае­мое зна­че­ние функ­ции
в стро­к у. Ес­ли вы зна­ко­мы с C, то ви­ди­те, что ука­зы­вать тип вы­во­
ди­мой пе­ре­мен­ной не на­до.
Тот же са­мый цикл for мож­но за­пи­сать и по-дру­го­му:
let loop = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
for i in loop {
print(“Fibonacci number \(i) is: \(fibo(i))”)
}
По­след­ний про­стой при­мер по­ка­зы­ва­ет, что мож­но пе­ре­би­рать
эле­мен­ты мас­си­ва с по­мо­щью цик ­ла for. На­ря­д у с но­вым сти­лем
Функ­ции Swift очень мощ­ные и под ­дер­жи­ва­ют мас­су ин­но­ва­ци­он­
ных ха­рак ­те­ри­стик, вклю­чая пе­ре­мен­ное чис­ло па­ра­мет­ров [vari­
adic], вход­ные-вы­ход­ные па­ра­мет­ры и воз­мож­ность воз­вра­щ ать
кор­те­жи. Пе­ре­мен­ное чис­ло па­ра­мет­ров пред­став­ля­ет ноль или бо­
лее па­ра­мет­ров за­дан­но­го ти­па. Мы про­ил­лю­ст­ри­ру­ем это в сле­
дую­щем при­ме­ре (variadic.swift):
func Sum(integers: Int...) -> Int {
var total = 0
for number in integers {
total += number
}
return total
}
var total = Sum(10, 30, 50, -17, 9, 110, -130, 17, 100)
print(“The total is \(total)”)
Функ­ция Sum пре­об­ра­зу­ет все пе­ре­мен­ные це­ло­чис­лен­ные ар­
гу­мен­ты в мас­сив кон­стант с име­нем integers, со­стоя­щий из эле­
мен­тов Int, дос­т уп к ко­то­рым осу­ще­ст­в­ля­ет­ся с по­мо­щью цик­ла for.
Вход­ные-вы­ход­ные па­ра­мет­ры долж­ны на­пом­нить вам функ­
цию «вы­зо­ва по ссыл­ке» в C. Они ис­поль­зу­ют­ся, ко­гда вы хо­ти­те
со­хра­нить из­ме­не­ния, вы­пол­нен­ные в функ­ции, по за­вер­ше­нии ра­
бо­ты этой функ­ции. Вход­ные-вы­ход­ные па­ра­мет­ры Swift ил­лю­ст­
ри­ру­ют­ся в сле­дую­щем ко­де (inAndOut.swift):
func minMax(inout min: Int, inout max: Int) {
if min > max {
let temp = min
min = max
max = temp
}
}
var myMin = 100
var myMax = -10
print(“(Before) Min: \(myMin) and Max: \(myMax)”)
minMax(&myMin, max: &myMax)
print(“(And After) Min: \(myMin) and Max: \(myMax)”)
Код в фай­ле inAndOut.swift да­ет сле­дую­щий вы­вод:
(Before) Min: 100 and Max: -10
(And After) Min: -10 and Max: 100
Уч­ти­те, что Swift тре­бу­ет, что­бы при вы­зо­ве minMax() для вто­
ро­го ар­г у­мен­та ука­зы­ва­лась толь­ко мет­ка. По­это­му сле­д ую­щие
два вы­зо­ва minMax() бу­дут не­пра­виль­ны­ми:
»»Пропустили номер?Узнайте на с. 108, как получить его прямо сейчас.
82 | LXF208 Апрель 2016
www.linuxformat.ru/subscribe
Swift
minMax(&myMin, &myMax)
minMax(min: &myMin, max: &myMax)
Со­об­ще­ние об ошиб­ке, вы­да­вае­мое пер­вой стро­кой ко­да, бу­
дет та­ким:
inAndOut.swift:13:7: error: missing argument label ‘max:’ in call
minMax(&myMin, &myMax)
^
max:
При вто­ром вы­зо­ве minMax() поя­вит­с я сле­д ую­щее со­об­ще­
ние об ошиб­ке:
inAndOut.swift:13:7: error: extraneous argument label ‘min:’ in call
minMax(min: &myMin, max: &myMax)
Спо­соб вы­зо­ва функ­ции с не­сколь­ки­ми ар­г у­мен­та­ми и фор­ми­
руе­мые со­об­ще­ния об ошиб­ках мо­г ут по­ка­зать­ся стран­но­ва­ты­ми,
но сей­час Swift ра­бо­та­ет именно так.
Кор­те­жи по­зво­ля­ют удоб­но груп­пи­ро­вать зна­че­ния лю­бых ти­
пов, а так­же лег­ко пе­ре­да­вать и при­ни­мать мно­же­ст­во зна­че­ний
без ис­поль­зо­ва­ния струк­т ур или от­дель­ных объ­ек­тов.
import Glibc
func minMax(array: [Int]) -> (min: Int, max: Int) {
...
return (min, max)
}
var randomArray = [Int]()
// По­мес­тить в мас­сив 10 слу­чай­ных чи­сел
for i in 1...10 {
var number = random()
randomArray.append(number)
}
let myMM = minMax(randomArray)
// Аль­тер­на­ти­ва
var (myMin, myMax) = minMax(randomArray)
print(“Мак­си­мум \(myMM.max) а ми­ни­мум \(myMM.min)”)
print(“Мак­си­мум \(myMax) а ми­ни­мум \(myMin)”)
Как ви­ди­те, есть два спо­со­ба по­лу­че­ния и ис­поль­зо­ва­ния кор­
те­ж а: в ви­де од­ной пе­ре­мен­ной (myMM) или не­с коль­к их пе­ре­
мен­н ых (myMin и myMax). Ес­л и вам не из­в ест­н о об­щ ее ко­л и­
че­­с т­в о по­л ей в кор­т е­же, пер­в ый спо­с об удоб­н ее. Объ­я в­л е­н ие
функ ­ц ии minMax() по­к а­зы­в а­е т, что она воз­вра­щ а­е т два зна­че­
ния, а в ка­че­­с т­ве вход­ных зна­че­ний тре­бу­ет­ся мас­сив це­лых чи­
сел без ука­за­ния кон­крет­но­го раз­ме­ра. Ос­нов­ной мо­мент в реа ­ли­
за­ции minMax() — это вы­зов return в кон­це. Ко­ман­да import Glibc
по­зво­ля­ет ис­поль­зо­вать су­ще­с т­вую­щие функ­ции C в ко­де Swift
и эк­ви­ва ­лент­на ко­ман­де import Darwin, ко­то­рая ис­поль­зо­ва ­лась
в Mac OS X. Пол­ную реа­ли­за­цию функ­ции minMax() см. в фай­ле
tuplesRandom.swift.
Са­мое мощ­ное управ­ляю­щее вы­ра­же­ние в Swift — это switch,
так как в его вет­вях при­ме­ни­мы ре­г у­ляр­ные вы­ра­же­ния и да­же
срав­не­ние кор­те­жей, что­бы уп­ро­с тить вам жизнь. Это вы­ра­же­
ние луч­ше под­хо­дит к бо­лее слож­ным ус­ло­ви­ям и вы­пол­ня­ет со­
от­вет­с т­вую­щ ий блок ко­д а на ос­но­ве пер­во­го сов­пав­ше­го со­от­
вет­с т ­в ия. Так как это­м у вы­р а ­же­нию не ну ­жен опе­р а­т ор break,
то оно не мо­жет по ошиб­ке вы­пол­нить не­сколь­ко бло­ков. Про­сто
не за­будь­те, что вы­ра­же­ние switch долж­но ли­бо яв­но по­кры­вать
все воз­мож­ные слу­чаи, ли­бо иметь блок default для всех не пе­ре­
кры­тых слу­ча­ев. Вы так­же по­лу­чае­те сов­пав­шие зна­че­ния и мо­
жете ис­поль­зо­вать их впо­след­ст­вии:
case (let x, let y): print(“You are at \(x) and \(y)”)
Не­обя­за­тель­ные зна­че­ния в Swift
Не­обя­за­тель­ные зна­че­ния [optionals] — еще од­на но­вая функ­ция
Swift, ко­то­рая по­мо­жет умень­шить ко­ли­че­­ст­во оши­бок в ва­шем ко­
де. В сле­дую­щем ко­де (файл optionals.swift) по­ка­за­но, как они ис­
поль­зу­ют­ся со струк­т у­рой сло­ва­ря:
let Contacts = [“George”: “123211212”, “Georgia”: “23211223”]
let isGeorgiaPresent: String? = Contacts[“Georgia”]
if isGeorgiaPresent == nil {
print(“You have no contact named Georgia!”)
}
else {
let contactNumber = isGeorgiaPresent!
print(“The contact number of Georgia is \ (contactNumber)”)
}
Пре­д ы­д у ­щ ий код по­з во­л я­е т оп­р е­д е ­л ить, най­д ен ли со­о т­
вет­с т ­в ую­щ ий ключ в сло­в а­р е, и вы­п ол­н ить со­о т ­в ет­с т ­в ую­щ ие
дей­ст­вия. Знак во­про­са (String?) оз­на­ча­ет не­обя­за­тель­ность зна­
че­ния. Зна­че­ние nil под­хо­дит для лю­бо­го ти­па и оз­на­ча­ет «зна­
че­ние от­сут­ст­ву­ет». Ес­ли вы уве­ре­ны, что у пе­ре­мен­ной есть зна­
че­ния, то мо­же­те при­ну­ди­тель­но по­лу­чить зна­че­ние с по­мощьью
вос­к ли­ца­тель­но­го зна­ка (!), это на­зы­ва­ет­ся «при­ну­ди­тель­ным раз­
вер­ты­ва­ни­ем». Ес­ли вы за­бу­де­те ука­зать ‘!’, вы­вод для пре­ды­д у­
щего ко­да бу­дет та­ким:
The contact number of Georgia is Optional(“23211223”)
По­нят­но, та­кой вы­вод не слиш­ком по­ле­зен. По­это­му пом­ни­те,
что про­цесс раз­вер­ты­ва­ния — ко­то­рый так ­же на­зы­ва­ет­ся «при­ну­
ди­тель­ным из­вле­че­ни­ем зна­че­ния» — обя­за­те­лен.
Те­перь реа ­ли­зу­ем ал­го­ритм пу­зырь­ко­вой сор­ти­ров­ки в Swift.
Ис­ход­ный код фай­ла bubbleSort.swift та­ков:
func bubbleSort(inout array: [Int]) {
let elements = array.count - 1
for var i=elements; i>=1; i-- {
for var j=0; j<=i-1; j++ {
// При не­об­хо­ди­мо­с ти ро­ки­ру­ем
if array[j] > array[j+1] {
let temp = array[j]
array[j] = array[j+1]
array[j+1] = temp
}}}}
Функ­ция bubbleSort ис­поль­зу­ет вход­ной-вы­ход­ной па­ра­метр
в ка­че­­ст­ве вход­но­го мас­си­ва, что­бы из­ме­не­ния в нем со­хра­ни­лись
по за­вер­ше­нии ра­бо­ты функ­ции. Об­ра­ти­те вни­ма­ние, что пе­ре­мен­
ная array.count со­дер­жит об­щее ко­ли­че­­ст­во эле­мен­тов в мас­си­ве,
а не мак­си­маль­ный но­мер эле­мен­та.
И на этом всё. Про­дол­жай­те про­грам­ми­ро­вать на Swift, что­
бы ос­во­ить все его воз­мож­но­сти, по­то­му что за этим языком —
бу­ду­щее! |
Че­рез ме­с
яц:
Про­ек­ты
на Swift
За­мы­ка­ния
За­мы­ка­ния [Closures] по­хо­жи на бло­ки в Objective-C
и на «лям­бды» в дру­гих язы­ках про­грам­ми­ро­
ва­ния. Стро­го го­во­ря, за­мы­ка­ния — не­боль­шие
ав­то­ном­ные бло­ки ко­да, ко­то­рые мож­но пе­ре­да­
вать по ва­шей про­грам­ме и в ней ис­поль­зо­вать.
За­мы­ка­ния очень по­хо­жи на объ­яв­ле­ния функ­ций,
и при­чи­на в том, что функ­ции в Swift как раз
на­зы­ва­ют­ся за­мы­ка­ния­ми!
Важ­ное раз­ли­чие ме­ж ­ду за­мы­ка­ния­ми и функ­ция­
ми — в том, что по­сле оп­ре­де­ле­ния функ­ции ее имя
нель­зя пе­ре­на­зна­чить, а имя за­мы­ка­ния разреше­но
ис­поль­зо­вать по­втор­но, по­это­му вы не мо­же­те быть
www.linuxformat.ru/subscribe
уве­рен­ны­ми в том, что од­но и то же за­мы­ка­ние
де­ла­ет од­но и то же в те­че­ние всей про­грам­мы. За­
мы­ка­ния ис­поль­зу­ют­ся по­то­му, что они ком­пакт­нее
по срав­не­нию с обыч­ны­ми функ­ция­ми, осо­бен­но
ко­гда применяют­ся в со­че­та­нии с дру­ги­ми функ­ция­
ми, та­ки­ми как со­пос­тав­ле­ние [map].
Апрель 2016 LXF208 | 83
MongoDB
MongoDB:
Для ад­ми­нов
Ми­ха­лис Цу­ка­лос опи­сы­ва­ет всю под­но­гот­ную ад­ми­ни­ст­ри­ро­ва­ния ба­зы дан­ных
MongoDB, вклю­чая соз­да­ние на­бо­ра ре­п­лик.
Наш
эксперт
Ми­ха­лис Цу­ка­
лос — ад­ми­ни­
ст­ра­тор баз дан­
ных, про­грам­мист,
ма­те­ма­тик и ад­
ми­ни­ст­ра­тор
Unix. Обыч­но ему
не пла­тят в мон­
голь­ских туг­ри­ках,
но в этом ме­ся­це
всё бу­дет имен­но
так. Да-да.
Скорая
помощь
Что­бы уз­нать
о MongoDB под­
роб­нее, оз­на­комь­
тесь с кни­га­ми
«MongoDB: ис­
чер­пы­ваю­щее ру­
ко­во­дство», 2‑е
из­да­ние, Кри­
сти­ны Чо­до­ров
[Kristina Chodorow]
и «MongoDB
в дей­ст­вии», 2‑е
из­да­ние, Кай­ла
Бан­ке­ра [Kyle
Banker], Пи­те­
ра Бак­ка­ма [Peter
Bakkum], Шо­
на Вер­ча [Shaun
Verch], Ду­гла­са
Гэр­рет ­та [Douglas
Garrett] и Ти­
ма Хо­укин­са [Tim
Hawkins].
Д
а­вай­те по­глуб­же за­бе­рем­ся в MongoDB, ори­ен­ти­ро­ван­ную
на до­к у­мен­ты ба­зу дан­ных NoSQL, ко­то­рая ста­ла очень по­
пу­ляр­ной. Мы по­ка ­жем, как вы­пол­нять вся­кие ад­ми­ни­ст­
ра­тив­ные за­да­чи на при­ме­ре таб­ли­цы, ко­то­рую мы соз­да­дим и за­
пол­ним дан­ны­ми, а так­же по­смот­рим, как соз­дать на­бор ре­п­лик.
С движ­ка­ми баз дан­ных (Storage Engines) мы де­ла иметь не бу­дем,
по­сколь­к у ко­ман­ды ад­ми­ни­с т­ри­ро­ва­ния баз дан­ных не за­ви­сят
от ис­поль­зуе­мо­го движ­ка. Но ес­ли вы ис­поль­зуе­те MongoDB на ра­
бо­чем сер­ве­ре, вам сле­ду­ет изу­чить WiredTiger и MMAPv1. Тем бо­
лее что на­чи­ная с вер­сии 3.2 MongoDB, WiredTiger стал движ­ком
баз дан­ных по умол­ча­нию.
Ин­фор­ма­ц ию по ус­т а­нов­ке све­жей вер­с ии MongoDB мож­но
най­ти на сай­те www.mongodb.org/downloads. На мо­мент на­пи­са­ния
ста­тьи те­к у­щ ая вер­сия — 3.2, и мы ус­та­но­вим ее в Ubuntu 14.04
из сле­дую­ще­го ар­хи­ва:
$ wget https://fastdl.mongodb.org/linux/
mongodb-linuxx86_64-ubuntu1404-3.2.0.tgz
По­сле рас­па­ков­ки за­пус­ти­те та­кие ко­ман­ды, для за­пус­ка сер­
ве­ра MongoDB:
84 | LXF208 Апрель 2016
$ tar zxvf mongodb-linux-x86_64-ubuntu1404-3.2.0.tgz
$ cd mongodb-linux-x86_64-ubuntu1404-3.2.0/
$ cd bin
$ sudo mkdir -p /data/db
$ sudo chown “S(id -u -n)” /data/db
$ sudo ./mongod
По­след­няя ко­ман­да за­пус­тит сер­вер MongoDB, ко­то­рый со­об­щит
об этом в тер­ми­на­ле. Да­лее мы рас­ска­жем, как за­п ус­т ить сер­
вер MongoDB в фо­но­вом ре­ж и­ме без тер­ми­на ­ла, но ес ­ли до­ба­
вить ка­та­лог bin MongoDB в свою пе­ре­мен­ную PATH, это уп­ро­стит
вам жизнь:
$ export PATH=»/home/mtsouk/
mongodb-linux-x86_64-ubuntu1404-3.2.0/bin»:»${PATH}”
За­ме­ни­те /home/mtsouk/mongodb-linux-x86_64‑ubuntu1404‑3.2.0/
bin на свой путь.
За­тем вы смо­же­те оп­ре­де­лить ис­поль­зуе­мую вер­сию Mongo­
DB — дву­мя ко­ман­да­ми:
$ ./mongod --version
db version v3.2.0
git version: 45d947729a0315accb6d4f15a6b06be6d9c19fe7
OpenSSL version: OpenSSL 1.0.1f 6 Jan 2014
allocator: tcmalloc
modules: none
build environment:
distmod: ubuntu1404
distarch: x86_64
target_arch: x86_64
$ ./mongo --version
MongoDB shell version: 3.2.0
mongod — это имя сер­вер­но­го про­цес­са MongoDB, а mongo —
имя обо­лоч­ки MongoDB, ко­то­рая при­ни­ма­ет пре­иму­ще­ст­вен­но ко­
ман­ды JavaScript. Как ви­ди­те, оба ис­пол­няе­мых фай­ла воз­вра­ти­ли
оди­на­ко­вую ин­фор­ма­цию о вер­сии MongoDB. Боль­шин­ст­во за­дач,
пред­с тав­лен­ных в этой ста­тье, вы­пол­ня­ют­ся в обо­лоч­ке Mongo,
для за­пус­ка ко­то­рой на­до вы­пол­нить ко­ман­ду mongo. Ес­ли за­пус­
тить mongo, не ука­зав но­мер пор­та, она ав­то­ма­ти­че­­ски по­про­бу­
ет под­к лю­чить­ся к localhost че­рез порт 27017 — это но­мер пор­
та по умол­ча­нию, ис­поль­зуе­мый сер­вер­ным про­цес­сом MongoDB.
Ес­ли вам тре­бу­ет­ся дру­гой но­мер пор­та, за­пус­ти­те mongo с па­ра­
мет­ром --port, вслед за ко­то­рым ука­жи­те этот но­мер. (Вы мо­жете
под­к лю­чить­с я к сер­ве­ру MongoDB, за­п у­щен­но­м у на ло­к аль­ном
ком­пь­ю­те­ре, че­рез порт по умол­ча­нию.)
Пре­ж ­де чем про­бо­вать дру­гие ко­ман­ды, за­пус­ти­те сле­дую­щий
код JavaScript из обо­лоч­ки MongoDB, что­бы до­ба­вить ка­кие-то дан­
ные в свою ба­зу дан­ных для экс­пе­ри­мен­та:
use LXF
switched to db LXF
www.linuxformat.ru/subscribe
MongoDB
Шар­ди­ро­ва­ние
Шар­ди­ро­ва­ние или шар­динг [shard — англ. «об­ло­
мок»] — ме­тод рас­пре­де­лен­но­го хра­не­ния дан­ных
на не­сколь­ких ком­пь­ю­те­рах. В «шар­дах» хра­нят­ся
дан­ные, а на сер­ве­рах кон­фи­г у­ра­ции — ме­та­дан­
ные кла­сте­ра. Мар­шру ­ти­за­то­ры за­про­сов (Query
Routers), так ­же на­зы­вае­мые эк­зем­п­ля­ра­ми mongos,
взаи­мо­дей­ст­ву­ют с кли­ент­ски­ми при­ло­же­ния­ми
и на­прав­ля­ют опе­ра­ции к со­от­вет­ст­вую­ще­му шар­д у
или шар­дам.
MongoDB раз­де­ля­ет зна­че­ния клю­чей шар­дов
на фраг­мен­ты — они не свя­за­ны с фраг­мен­та­ми
GridFS — и рав­но­мер­но рас­пре­де­ля­ет эти фраг­
менты по раз­лич­ным шар­дам. MongoDB рас­пре­
де­ля­ет дан­ные на уров­не кол­лек­ции. Для шар­ди­
ро­ва­ния кол­лек­ции необходимо оп­ре­де­лить ключ
шар­да, ко­то­рый пред­став­ля­ет со­бой ли­бо ин­дек­
си­руе­мое по­ле, ли­бо рас­ши­рен­ное ин­дек­си­руе­мое
по­ле, ко­то­рое су­ще­ст­ву­ет в ка ­ж ­дом до­к у­мен­те
кол­лек­ции.
MongoDB ис­поль­зу­ет шар­динг на ос­но­ве диа­
па­зо­на, так как с его по­мо­щью удоб­нее от­ве­чать
на за­про­сы, и ино­гда — сор­ти­ро­вать дан­ные.
Шар­динг мож­но со­че­тать с ре­п­ли­ка­ци­ей. Посколь­
ку вы не хо­ти­те, что­бы кли­ен­ты взаи­мо­дей­с т­во­ва­ли
с сер­ве­ром шар­дов на­пря­мую, нуж­но на­с тро­ить
mongos на про­с луш­к у пор­та MongoDB по умол­ча­
нию (27017).
Кро­ме mongos, под­к лю­чать­ся ко все­му на­пря­
мую впра­ве толь­ко ад­ми­ни­с т­ра­тор ба­зы дан­ных.
Уч­ти­те, что три сер­ве­ра кон­фи­г у­ра­ции смо­г ут
об­с лу ­жи­вать кла­с тер MongoDB с ты­ся­чей ком­
пь­ю­те­ров. Все сер­ве­ры кон­фи­г у­ра­ции со­дер­жат
оди­на­ко­вые дан­ные.
for (var i=0; i<100000; i++) { db.myData.insert({x:i, y:i*i}); }
WriteResult({ “nInserted” : 1 })
db.myData.count();
100000
Пер­вая ко­ман­да пе­ре­к лю­ча­ет­ся на ба­зу дан­ных LXF, и ес­ли та­
ко­вой не су­ще­ст­ву­ет, то она соз­да­ст­ся ав­то­ма­ти­че­­ски. За­тем она
ис­поль­зу­ет цикл for в JavaScript для встав­ки 100 000 до­к у­мен­тов
в кол­лек­цию myData ба­зы дан­ных LXF. Опять же, ес­ли кол­лек­ции
myData не су­ще­с т­ву­ет, она соз­д а­с т­ся ав­то­ма­ти­че­­ски. По­с лед­няя
ко­ман­д а по­ка­зы­ва­ет, как оп­ре­де­лить об­щее ко­ли­че­­с т­во за­пи­сей
в кол­лек­ции.
Ко­ман­ды CRUD
В этом раз­д е­л е вы нау­ч и­т есь встав­л ять, уда­л ять, об­н ов­л ять
и вы­б и­р ать до­к у ­м ен ­т ы из кол ­л ек ­ц ии MongoDB (кол­л ек­ц ия­м и
в MongoDB на­зы­ва­ют­ся таб­ли­цы). При по­пыт­ке вста­вить до­к у­мент
с дру­гим на­бо­ром клю­чей в су­ще­ст­вую­щую кол­лек­цию он соз­да­
ст­ся безо вся­к их со­об­ще­ний об ошиб­к ах. А зна­чит, оп­ре­де ­лить
опе­чат­ки в сво­их за­про­сах не так про­сто. При ка­ж ­дой встав­ке до­
ку­мента BSON без ука­за­ния зна­че­ния по­ля _id MongoDB ав­то­ма­ти­
че­­ски соз­да­ет это по­ле, ко­то­рое вы­сту­па­ет в ка­че­­ст­ве пер­вич­но­го
клю­ча для до­к у­мен­та BSON. При ав­то­ма­ти­че­­ском соз­д а­нии по­ле
_id име­ет дли­ну 12 байт и вы­гля­дит так:
“_id” : ObjectId(“55e063b1b1983f50f79646be”)
С по­мо­щью функ­ции findOne() мож­но по­лу­чить слу­чай­ный до­
ку­мент из кол­лек­ции:
db.myData.findOne()
Глав­ное раз­ли­чие ме­ж ­ду find() и findOne() в том, что пер­вая мо­
жет воз­вра­щать не­сколь­ко до­к у­мен­тов с по­мо­щью кур­со­ра, а вто­
рая слу­чай­ным об­ра­зом воз­вра­щ а­ет один до­к у­мент BSON. Вста­
вить до­к у­мент мож­но так:
db.myData.insert( { “x”: 123, “y”:500 } )
WriteResult({ “nInserted” : 1 })
Ана ­ло­гич­но уда ­ля­ет­ся до­к у­мент, со­от­вет­с т­вую­щий за­д ан­но­
му кри­те­рию:
db.myData.remove({“y”: 500})
WriteResult({ “nRemoved” : 1 })
Су­ще­ст­вую­щий до­к у­мент мож­но об­но­вить, вот так:
db.myData.update({“x”: 123}, {$set: { “z”: 123}})
WriteResult({ “nMatched” : 1, “nUpserted” : 0, “nModified” : 1 })
Что­б ы об­н о­в ить сра­з у не­с коль­ко до­к у­м ен­т ов, ус­т а­н о­в и­т е
в update() па­ра­метр multi: в true:
> db.myData.update({“x”: 123}, {$set: { “z”: 123}}, {multi:true})
Хо­т я в обо­л оч­ке Mongo мож ­н о опус ­т ить ка­в ыч­к и в име­н ах
пар “ключ”:зна­че­ние (на­при­мер, “x”:123), они всё же яв­ля­ют­ся ча­
стью спе­ци­фи­ка­ции JSON, по­это­му пом­ни­те, что в JSON ка­выч­ки
> В ле­вом тер­ми­на­ле при­ве­де­но со­дер­жи­мое ка­та­ло­га /data/db, а в пра­вом — лог-фай­лы,
соз­дан­ные за­пу­щен­ным сер­ве­ром MongoDB.
долж ­ны при­с ут­с т ­во­в ать. В со­с та­ве MongoDB так­же есть очень
удоб­ная ути­ли­та под на­зва­ни­ем mongostat. Она ото­бра­жа­ет ба­зо­
вую ста­ти­сти­к у сер­ве­ра и ста­ти­сти­к у сер­ве­ра в ре­а ль­ном вре­ме­ни,
ана­ло­гич­но ути­ли­те vmstat.
Все дос­т уп­ные на­бо­ры дан­ных для те­к у­ще­го сер­ве­ра MongoDB
мож­но най­ти так:
show databases
LXF 0.003GB
local 0.000GB
Ана­ло­гич­но мож­но най­ти все дос­т уп­ные кол­лек­ции для те­к у­
щей ба­зы дан­ных:
> show collections
myData
Же­лая уда­лить всю кол­лек­цию myData, вос­поль­зуй­тесь сле­
дую­щи­ми функ­ция­ми:
db.myData.drop();
true
db.myData.count();
0
Уда­лить ба­зу дан­ных, вклю­чая ее фай­лы дан­ных, мож­но так:
use LXF
switched to db LXF
> db.runCommand( { dropDatabase: 1 } )
{ “dropped” : “myData”, “ok” : 1 }
Эта ко­м ан­д а не уда ­л я­е т поль­з о­в а­т е­л ей, свя­з ан­ных с ба­з ой
дан­н ых. Ре­ш ив уда ­л ить свя­з ан­н ых поль­з о­в а­т е­л ей, за­п ус­т и­т е
dropAllUsersFromDatabase в ба­зе дан­ных, ко­то­рую уда­ляе­те.
Про­цесс сер­ве­ра MongoDB мож­но за­пус­тить вруч­ную с ко­манд­
ной стро­ки сле­дую­щей ко­ман­дой:
Скорая
помощь
Ру­ко­во­дство
по MongoDB до­
с­т уп­но на сай­те
https://docs.
mongodb.org,
а на сай­те Уни­вер­
си­те­та MongoDB
есть и бес­плат­
ные он­лайн-кур­сы
(https://university.
mongodb.com).
»»Не хотите пропустить номер?Подпишитесь на www.linuxformat.ru/subscribe/!
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 85
MongoDB
$ mongod --fork --logpath a.log --smallfiles --oplogSize 50 --port
27101 --dbpath w1 --replSet w --logappend
Здесь па­ра­метр --port за­да­ет порт, ко­то­рый бу­дет слу­шать сер­
вер, --dbpath — ка­та­лог, где бу­дут со­дер­жать­ся фай­лы ба­зы дан­
ных, --logpath ука­зы­ва­ет на лог-файл, а --fork ве­лит ОС за­пус­тить
про­цесс в фо­не без при­вяз­ки тер­ми­на­ла. Па­ра­метр --replset оп­ре­
де­ля­ет на­зва­ние на­бо­ра ре­п­лик и дол­жен ука­зы­вать­ся толь­ко в том
слу­чае, ес­ли вы хо­ти­те за­дать на­бор ре­п­лик. Па­ра­метр --logappend
ве­лит про­цес­су MongoDB до­пи­сы­вать дан­ные в лог-файл, а не за­
ме­щать их. Па­ра­метр --oplogSize оп­ре­де­ля­ет мак­си­маль­ный раз­
мер фай­ла ре­п­ли­ка­ции в МБ и дол­жен ука­зы­вать­ся толь­ко при соз­
да­нии на­бо­ра ре­п­лик.
По­про­бо­вав за­пус­тить сер­вер MongoDB без со­от­вет­ст­вую­ще­го
лог-фай­ла, вы по­лу­чи­те сле­дую­щее со­об­ще­ние об ошиб­ке:
2015-11-29T12:01:54.349+0200 F CONTROL Failed global
initialization:2015-12-29T16:02:25.725+0200 F CONTROL [main]
Failed global initialization: FileNotOpen Failed to open “/a/path/a.log”
За­про­сы и ин­дек­сы
Скорая
помощь
Как все­гда, луч­
ший спо­соб из­
учить MongoDB —
исполь­зо­вать
ее в про­ек­те.
На сле­д ую­щем
уро­ке мы по­ка ­жем,
как соз­дать сайт
бло­га с по­мо­щью
MongoDB, Python
и Bottle.
Ана­лиз за­про­с а — исключительно удоб­ный спо­соб понять, по­
че­му за­прос ра­бо­та­ет мед ­лен­но, а так ­же уз­нать, как вы­пол­ня­ет­
ся за­прос:
> db.myData.find({ “x”: { $gt: 99990} }).
explain(“executionStats”)
В ле­вой час­ти экран­но­го снимка вни­зу по­ка­зан вы­вод ко­ман­ды
explain(“executionStats”) на за­прос ввер­х у.
По пла­ну вы­пол­не­ния за­про­са кол­лек­ция ска­ни­ру­ет­ся (COLL­
SCAN), то есть ана­ли­зи­ру­ют­ся все до­к у­мен­ты кол­лек­ции. И ес­ли
в по­бе­див­шем пла­не есть клю­че­вое сло­во COLLSCAN, зна­чит, ин­
декс не ис­поль­зо­вал­ся; а это, в свою оче­редь, зна­чит, что ад­ми­ни­
ст­ра­тор ба­зы дан­ных дол­жен пе­ре­смот­реть те­к у­щие ин­дек­сы и за­
дать бо­лее под­хо­д я­щие. Пра­виль­но за­д ан­ный ин­декс спо­со­бен
силь­но ус­ко­рить вы­пол­не­ние за­про­сов.
По­ка­жем, как оп­ре­де­лить ин­декс и вы­пол­нить пре­ды­ду­щий за­
прос. Ин­декс для клю­ча “x” соз­да­ет­ся сле­дую­щим об­ра­зом:
> db.myData.createIndex({«x”:1})
{
“createdCollectionAutomatically” : false,
“numIndexesBefore” : 1,
“numIndexesAfter” : 2,
“ok” : 1
}
Те­перь с explain(“executionStats”) мож­но вы­пол­нить пре­ды­д у­
щую ко­ман­ду find(). В пра­вой час­ти скрин­шо­та вни­зу по­ка­зан вы­
вод explain() при ис­поль­зо­ва­нии ин­дек­са. Как ви­ди­те, вы­вод стал
не­мно­го дру­гим: но­вый за­прос воз­вра­ща­ет ре­зуль­та­ты пу­тем ска­
ни­ро­ва­ния клю­чей ин­дек­са (IXSCAN) и по­это­му вы­пол­ня­ет­ся зна­
чи­тель­но бы­ст­рее пре­ды­д у­ще­го. Кро­ме то­го, за­прос те­перь ана­
ли­зи­ру­ет толь­ко де­вять до­к у­мен­тов, то­гда как за­прос без ин­дек­са
ана ­ли­зи­ро­вал все до­к у­мен­ты кол­лек­ции. Это объ­яс­не­ние бо­лее по­
нят­но из сле­дую­ще­го вы­во­да:
“executionTimeMillis” : 0,
“totalKeysExamined” : 9,
“totalDocsExamined” : 9,
Вы­вод по­ка­зы­ва­ет, что при вы­пол­не­нии с по­мо­щью ин­дек­с а
на вы­пол­не­ние ко­ман­ды find() уш­ло 0 мс, поскольку она, что­бы
вер­нуть де­вять до­к у­мен­тов, все­го де­вять до­к у­мен­тов и про­ве­ри­ла
(обо­зна­ча­ет­ся totalDocsExamined).
Функ­ция getIndexes() воз­вра­ща­ет ин­дек­сы кол­лек­ции, то­гда как
функ­ция dropIndex() уда­ля­ет су­ще­ст­вую­щий ин­декс. При этом ин­
декс по­ля _id уда ­лить нель­зя.
> db.myData.getIndexes()
[
{
“v” : 1,
“key” : {
“_id” : 1
},
“name” : “_id_”,
“ns” : “LXF.myData”
},
{
“v” : 1,
“key” : {
“x” : 1
},
“name” : “x_1”,
“ns” : “LXF.myData”
}
]
MongoDB ав­то­ма­ти­че­ски соз­да­ет ин­декс для по­ля _id, ко­то­рое
есть во всех кол­лек­ци­ях. Все ин­дек­сы, при­над­ле­жа­щие ак­тив­ной
ба­зе дан­ных, мож­но най­ти так:
db.getCollectionNames().forEach(function(collection) {
indexes = db[collection].getIndexes();
print(“Indexes for “ + collection + “:”);
printjson(indexes);
});
Хо­тя за­дать ин­дек­сы про­сто, на­до пом­нить, что они за­ни­ма­ют
ме­сто на дис­ке, и поль­зо­вать­ся ими толь­ко при не­об­хо­ди­мо­сти.
Ре­п­ли­ка­ция
> Ин­декс мо­жет су­ще­ст­вен­но со­кра­тить вре­мя вы­пол­не­ния за­про­са. Функ­ция
ex­plain(exe­cu­tionStats) со­об­щит вам, ис­поль­зу­ется ин­декс за­просом или нет.
Ре­п­ли­ка­ция по су­ти оз­на­ча­ет две ве­щи, и пер­вая из них — со­хран­
ность дан­ных. Из­ме­не­ния бу­дут рас­про­стра­нять­ся и не по­те­ря­ют­
ся, ес­ли про­изой­дет что-то пло­хое. Вто­рая — дос­т уп­ность дан­ных;
это оз­на­ча­ет, что сер­ве­ры бу­д ут дос­т уп­ны мак­си­маль­ное вре­мя;
при вы­хо­де из строя од­но­го сер­ве­ра его ме­сто без вся­ко­го вме­ша­
тель­ст­ва поль­зо­ва­те­ля за­ни­ма­ет дру­гой.
Боль­шин­ст­во на­бо­ров ре­п­лик име­ют три уз­ла: глав­ный [prima­
ry], под­чи­нен­ный [secondary] и ар­битр [arbiter]. Ар­битр — это спе­
ци­а ль­ный узел, ко­то­рый не со­хра­ня­ет ни­ка­ких дан­ных и не мо­жет
стать глав­ным; он про­сто уча­ст­ву­ет в го­ло­со­ва­нии за но­вый глав­
ный узел. Ре­п­ли­ки так­же час­то име­ют по од­но­му глав­но­му уз­лу
и по двум под­чи­нен­ным. Так­же на­бор ре­п­лик час­то име­ет один или
»»Пропустили номер?Узнайте на с. 108, как получить его прямо сейчас.
86 | LXF208 Апрель 2016
www.linuxformat.ru/subscribe
MongoDB
не­сколь­ко скры­тых уз­лов, ко­то­рые не ви­ди­мы драй­ве­ру, не от­ве­
ча­ют на за­про­сы поль­зо­ва­те­лей и не мо­г ут стать глав­ны­ми. Од­на­
ко ими мож­но поль­зо­вать­ся для ре­зерв­но­го ко­пи­ро­ва­ния или ана­
ли­ти­ки, и они то­же впра­ве го­ло­со­вать.
Для де­м он­с т­р а­ц ии сце­н а­р ия ре­п­л и­к а­ц ии нуж­н о за­п ус­т ить
не ме­нее трех эк­зем­п­ля­ров MongoDB. Хо­ро­шо, что все их мож­но
за­пус­тить на од­ном ком­пь­ю­те­ре, хо­тя это и не луч­ший ва­ри­ант для
ра­бо­чих сис­тем. Итак, за­пус­ти­те три раз­ных про­цес­с а, сле­д ую­
щим об­ра­зом:
$ mkdir node1; mkdir node2; mkdir arbiter
$ mongod --replSet LXF --dbpath node1 --port 30000 --logappend
--logpath a.log --fork
$ mongod --replSet LXF --dbpath node2 --port 30001 --logappend
--logpath b.log --fork
$ mongod --replSet LXF --dbpath arbiter --port 30002 --logappend
--logpath c.log --fork
За­тем на­до под­к лю­чить­ся к ком­пь­ю­те­ру, ко­то­рый дол­жен вы­
сту­пать в ка­че­ст­ве глав­но­го уз­ла, и ини­циа ­ли­зи­ро­вать на­бор ре­п­
лик сле­дую­щим об­ра­зом:
$ mongo --port 30000
> rs.initiate()
> rs.add(“mtsouk-ubuntu:30001”)
> rs.add(“mtsouk-ubuntu:30002”, {arbiterOnly: true})
Ко­ман­д а rs.status() по­мо­жет вам уз­нать о ста­т у­се на­бо­ра ре­
п­лик. Ес­ли глав­ный узел по ка­кой-то при­чи­не вый­дет из строя,
про­изой­дет сле­д ую­щее: ос­т ав­шие­с я уз­лы об­на­ру ­ж ат сбой, так
как не смо­г ут най­ти от­сут­с т­вую­щий узел. Убе­див­шись, что узел
дей­с т­ви­тель­но не­дос­т у­пен, они про­го­ло­су­ют за но­вый глав­ный
узел. Пре­ус­пев­ший в вы­бо­рах под­чи­нен­ный узел ста­нет но­вым
глав­ным и бу­дет при­ни­мать опе­ра­ции за­пи­си.
Вы­п ол­н е­ние ко­м ан­д ы rs.status() по­с ле ос­т а­н ов­к и глав­н о­г о
уз­ла, ко­то­рую мож­но вы­пол­нить, за­вер­шив про­цесс это­го уз­ла
ко­ман­дой kill, при­ве­дет к не­сколь­ко ино­му ре­зуль­та­т у по срав­не­
нию с при­ве­ден­ным здесь.
Сис­тем­ные таб­ли­цы
MongoDB хра­нит сис­тем­ную ин­фор­ма­цию в кол­лек­ци­ях, ис­поль­
зую­щих про­стран­ст­во имен <database>.system.*, ко­то­рое MongoDB
ре­зер­ви­ру­е т для внут­р ен­не­г о ис­поль­зо­в а­ния. По­э то­м у не соз­
да­в ай ­те кол ­лек ­ц ий с име­на­ми, на­чи­наю­щ и­ми­с я с system. В ба­
зе дан­ных ‘admin’ хра­нят­ся мно­гие сис­тем­ные кол­лек­ции, в том
чис­ле admin.system.roles, со­дер­ж а­щ ая поль­зо­ва­тель­ские ро­ли,
ко­то­рые ад­ми­ни­ст­ра­тор соз­д а­ет и на­зна­ча­ет поль­зо­ва­те­лям для
вы­д а­чи дос­т у­па к за­д ан­ным ре­сур­сам. Имя и па­роль для ау­тен­
ти­фи­ка­ции ка­ж ­до­го поль­зо­ва­те­ля, а так­же все ро­ли, на­зна­чен­
ные поль­зо­ва­те­лю, хра­нят­ся в admin.system.users, а схе­ма для до­
ку­мен­тов с дан­ны­ми ау­тен­ти­фи­ка­ции — в admin.system.version.
В ка­ж ­дой от­дель­ной ба­зе дан­ных есть не­ко­то­рые кол­лек­ции,
ко­то­рые сле­д ят за дан­ны­ми, от­но­ся­щи­ми­ся к этой ба­зе дан­ных.
Кол­лек­ция <db>.system.namespaces со­дер­жит ин­фор­ма­цию о кол­
лек­ци­ях ба­зы дан­ных, <db>.system.indexes — све­де­ния об ин­дек­
сах ба­зы дан­ных. Од­на­ко к кол­лек­ции <db>.system.indexes на­до об­
ра­щать­ся не на­пря­мую, а че­рез функ­цию getIndexes(). Кол­лек­ция
<db>.system.profile со­дер­жит ин­фор­ма­цию о про­фи­ли­ро­ва­нии ба­
зы дан­ных. Про­фи­ли­ро­ва­ние ба­зы дан­ных по­мо­жет оп­ре­де­лить
не­эф­фек ­тив­ные за­про­сы и опе­ра­ции. На­ко­нец, в кол­лек­ции <db>.
system.js хра­нит­ся спе­ци­а ль­ный код JavaScript для ис­поль­зо­ва­ния
в сер­вер­ном JavaScript.
У ка ­ж ­до­го эк­зем­п­ля­ра mongod есть соб­ст­вен­ная «ло­каль­ная»
ба­за дан­ных. В ней хра­нят­ся дан­ные, ис­поль­зуе­мые в про­цес­се ре­
п­ли­ка­ции, и дру­гие дан­ные для кон­крет­но­го эк­зем­п­ля­ра. «Ло­каль­
ная» ба­за дан­ных не ре­п­ли­ци­ру­ет­ся, так как она не­ви­ди­ма для про­
цес­са ре­п­ли­ка­ции.
Сис­т ем­н ые таб­л и­ц ы MongoDB так ­ж е со­д ер­ж ат ин­ф ор­м а­
цию о фай­лах GridFS, хра­ни­мых в ба­зе дан­ных. Су­ще­с т­ву­ет две
> Ути­ли­ты mongodump и mongorestore по­мо­гут вы­пол­нить ре­зерв­ное ко­пи­ро­ва­ние
и вос­ста­нов­ле­ние ба­зы дан­ных MongoDB.
сис­тем­ные таб­ли­цы: од­на для имен фай­лов, а дру­гая — для раз­
лич­ных фраг­мен­тов с фак ­ти­че­­ски­­ми дво­ич­ны­ми дан­ны­ми фай­ла.
По умол­ча­нию GridFS ис­поль­зу­ет две кол­лек­ции с име­на­ми с пре­
фик­сом fs: fs.chunks и fs.files.
Же­лая най­ти все фай­лы GridFS, ко­то­рые хра­нят­ся в ба­зе дан­
ных, вы мо­же­те оп­ро­сить сис­тем­ную таб­ли­цу, со­дер­жа­щую эту ин­
фор­ма­цию. Да­лее при­ве­ден вы­вод за­про­са к таб­ли­це fs.files:
use LXF
switched to db LXF
> db.fs.files.find()
{ “_id” : ObjectId(“5682af61bd65690bcc000001”), “chunkSize” :
261120, “uploadDate” : ISODate(“2015-12-29T16:05:53.642Z”),
“length” : 28549, “md5” : “1494011900cf195d44165191d042a124”,
“filename” : “/home/mtsouk/aFile.zip” }
{ “_id” : ObjectId(“5682af7cbd65690bdb000001”), “chunkSize”
: 261120, “uploadDate” : ISODate(“2015-12-29T16:06:20.882Z”),
“length” : 28549, “md5” : “1494011900cf195d44165191d042a124”,
“filename” : “aBinaryFile.zip” }
{ “_id” : ObjectId(“5682af85bd65690be8000001”), “chunkSize”
: 261120, “uploadDate” : ISODate(“2015-12-29T16:06:29.642Z”),
“length” : 35444349, “md5” : “92c7ae236c2ea6326a603c­
9cffb9437b”, “filename” : “mongosniff” }
Или мож­но вос­поль­зо­вать­ся ути­ли­той mongofiles для вы­во­да
всех фай­лов GridFS, при­сут­ст­вую­щих в ба­зе дан­ных:
$ mongofiles -d LXF list
2015-12-29T18:07:54.895+0200 connected to: localhost
/home/mtsouk/aFile.zip 28549
aBinaryFile.zip 28549
mongosniff 35444349
Ес­ли вам нуж­на до­пол­ни­тель­ная ин­фор­ма­ция о mongofiles, зай­
ди­те на http://bit.ly/MongofilesDocs. |
Ре­зерви­ро­ва­ние и вос­становление
При ра­бо­те с ба­зой дан­ных обя­за­тель­но
нуж­на стра­те­гия ре­зерв­но­го ко­пи­ро­ва­ния,
так как все сис­те­мы в кон­це кон­цов вы­хо­
дят из строя. Хо­тя шар­ди­ро­ва­ние и ре­п­
ли­ка­ция MongoDB сни­жа­ют по­треб­ность
в ре­зерв­ном ко­пи­ро­ва­нии, что-то пло­хое
мо­жет про­изой­ти все­гда. А уж ес­ли у вас
все­го один сер­вер­ный про­цесс, де­лать ре­
зерв­ные ко­пии обя­за­тель­но. Две ос­нов­ные
www.linuxformat.ru/subscribe
ути­ли­ты для этих це­лей — mongodump
и mongorestore, и они по­мо­г ут вам сде­лать
ре­зерв­ную ко­пию ба­зы дан­ных MongoDB
и вос­ста­но­вить ее со­от­вет­ст­вен­но.
На ри­сун­ке вверху по­ка­за­но ис­поль­зо­
ва­ние mongodump и mongorestore. Ко­ман­
да mongorestore бы­ла за­пу­ще­на с па­ра­мет­
ром --quiet, что­бы скрыть все слу­жеб­ные
со­об­ще­ния.
Апрель 2016 LXF208 | 87
Поль­зо­ва­те­лям
Pi
Ва­ша пор­ция смач­ных но­во­стей, об­зо­ров и учеб­ни­ков от Raspberry Pi
АЛ­ЛАН
МАК-КАЛ­ЛАХ
ор­га­ни­за­тор Rhône
Valley Raspberry
Jam
Pi для ре­бен­ка...
При­вет...
По­жерт­вуй­те свой не­ис­поль­зуе­мый Pi де­тям
из Ма­ли, в за­пад­ной Аф­ри­ке.
К
R
ак-то раз у се­бя до­ма,
на юге Фран­ции, я про­снул­
ся очень ра­но. Ре­шил вклю­
чить шоу BBC Click и уви­дел сю­жет
Эл Джей Ри­ча [LJ Rich]: «„Сде­лай
сам“ в тех­но­ло­гии — ре­а ль­но ли
это?» Там го­во­ри­лось о дви­же­нии
Maker, ИТ-мас­тер­ских, Arduino и —
как же без не­го — «улет­ном ус­пе­
хе Raspberry Pi». Ус­пе­хе... че­го? Так
для ме­ня все и на­ча­лось, и се­го­дня
я очень да­же «в те­ме» на­счет то­го,
что про­ис­хо­дит здесь, во Фран­ции,
хо­тя я точ­но не про­фи, про­сто боль­
шой фа­нат Raspberry.
Rhône Valley Raspberry Jam
мы с друзь­я­ми про­во­дим с фев­ра ­ля
про­шло­го го­да, и толь­ко что за­вер­
ши­лось на­ше шес­тое ме­ро­прия­тие.
Так ­же я ак ­тив­но уча­ст­вую в раз­ви­тии
Code Club во Фран­ции (и дру­гих ини­
циа­тив в об­лас­ти ко­дин­га). Raspberry
Pi дал мне шанс пу­те­ше­ст­во­вать
и го­во­рить о «циф­ро­вом об­ра­зо­ва­
нии» плюс мас­су но­вых зна­комств.
По час­ти примене­ния Pi и чис­лен­
но­сти со­об­ще­ст­ва Фран­ция силь­но
от­ста­ет от дру­гих стран. Мы на­де­ем­
ся, что в 2016 г. это из­ме­нит­ся. Са­мое
слож­ное здесь — пре­одо­леть язы­
ко­вой барь­ер. Да­же са­мые «фран­
ко­фон­ные» фа­на­ты за­час­т ую ре­ша­
ют под­тя­нуть анг­лий­ский, бла­го­да­ря
это­му «на­но­ком­пь­ю­те­ру». Для ме­ня
глав­ной фи­г у­рой Pi во Фран­ции яв­
ля­ет­ся Фран­суа Мок [Francois Mocq],
пре­по­да­ва­тель ин­фор­ма­ти­ки, в чьем
бло­ге (www.framboise314.fr) уже бо­
лее 600 по­стов. Он уже стал од­ним
из са­мых про­да­вае­мых ав­то­ров
в сфе­ре ИТ и сей­час по­мо­га­ет мне
пе­ре­во­дить учеб­ные ма­те­риа ­лы
Raspberry Pi Foundation, что­бы они
ста ­ли дос­т уп­ны фран­цуз­ским по­
клон­ни­кам Pi.
aspberry Pi соз­да­вал­ся как по­тря­саю­щий ин­
ст­ру­мент обу­че­ния; и, без­ус­лов­но, стал та­
ко­вым. На чет­вер­том го­ду сво­его су­ще­ст­во­
ва­ния Raspberry Pi от­кры­ва­ет но­вые го­ри­зон­ты
об­ра­зо­ва­ния — од­ним из са­мых даль­них стал Ма­
ли, в За­пад­ной Аф­ри­ке, где фран­цуз­ский бла­го­тво­
ри­тель­ный про­ект Malinux Télé (http://malinuxtele.
tuxfamily.org), ис­поль­зуя Pi, обу­ча­ет ма­лий­ских де­тей.
С по­мо­щью соб­ст­вен­ной вет­ки Raspbian они под­
клю­ча­ют ста­рые (и но­вые) мо­де­ли Pi к ЭЛТ-эк­ра­нам,
ра­бо­таю­щим от сол­неч­ных ба­та­рей, что­бы учить де­
тей про­грам­ми­ро­ва­нию. Что­бы при­нять уча­стие, уз­
най­те под­роб­но­сти на http://bit.ly/MalinuxTelebelow или
от­правь­те свои Pi по ад­ре­су: Association Bilou Toguna,
25 Rue Henri Martin, 31700 Blagnac, Фран­ция.
> Ма­лий­ские де­ти учат­ся на ва­ших ста­рых Pi.
1 × 16 = Pi!
Учи­те Pi
Кла­стер Multi-Pi —
штука ин­те­рес­ная.
Со­стоя­лись
мар­тов­ские кур­сы.
Я
П
пон­ская ком­па­ния под на­зва­ни­ем Idein раз­ра­
бо­та­ла пла­т у муль­ти-Pi, спо­соб­ную под­к лю­
чать и взаи­мо­дей­ст­во­вать с 16‑ю Pi Zero. Есть
ве­ро­ят­ность, что у это­го про­дук ­та, за­ду­ман­но­го из­на­
чаль­но как ос­но­ва для на­уч­ных про­ек­тов на ба­зе GPU,
бу­дет и ком­мер­че­­ский ре­лиз. Не про­пус­ти­те! http://bit.
ly/LXF208cluster
> Pi — это си­ла!
88 | LXF208 Апрель 2016
www.linuxformat.ru/subscribe
е­да­го­ги! На за­висть сво­им мас­те­ро­ви­
тым друзь­ям и кол­ле­гам, за­пи­сы­вай­тесь
на Picademy, про­во­ди­мую @Google. В Ман­
че­сте­ре со­сто­ял­ся бес­плат­ный, двух ­днев­ный Не­пре­
рыв­ный курс по­вы­ше­ния ква ­ли­фи­ка­ции [Continued
Professional Development] для про­фес­сио­наль­ных
пре­по­да­ва­те­лей.
За­ня­тия про­хо­ди­ли в но­вом зда­нии Digital
Garage Google 1‑2 мар­та 2016, 14‑15 мар­та 2016
и 22‑23 мар­та 2016. Под­роб­но­сти — на http://bit.ly/
PicademyGoogleManchester
При­став­ка к Pi Zero Обзор
Explorer pHAT
Лес Па­ун­дер тес­ти­ру­ет све­жую вер­сию мно­го­функ­цио­наль­ной плат­фор­мы
для но­во­го Pi Zero, ко­то­рую впол­не мож­но ку­пить на кар­ман­ные день­ги.
Вкратце
» Pimoroni соз­
дал оче­ред­
ную пла­т у-при­
став­к у в се­рии
плат, на­це­лен­ных
на мыс­ли­те­лей
и са­мо­дел­ки­ных.
Раз­ра­бо­тан­ная
для но­во­го Pi
Zero, но со­вмес­
ти­мая со все­ми
не­дав­ни­ми Raspberry Pi, Explorer
pHAT пред­ла­га­ет
ряд за­щи­щен­ных
кон­так ­тов вхо­дов
и вы­хо­дов, по­
зво­ляю­щих экс­
пе­ри­мен­ти­ро­
вать без вре­да
для ва­ше­го Pi.
pHAT так­же обес­
пе­чи­ва­ет управ­
ле­ние мо­то­ром
для дви­ж у­щих­ся
про­ек ­тов.
R
aspberry Pi Zero толь­ко поя­вил­ся,
а ог­ром­ное со­об­ще­ст­во уже соз­да­
ло пла­т ы-при­с тав­к и к ком­пь­ю­те­
ру-крош­ке. Pimoroni соз­дал но­вую вер­сию
сво­ей по­пу­ляр­ной пла­ты Explorer HAT, рас­
ши­рив свой диа­па­зон до трех плат. Про­из­
вод­ст­во стар­то­ва­ло в на­ча­ле 2014 г. с двух
плат: Explorer HAT, ко­то­рая шла с ем­ко­с т­
ным сен­с ор­н ым вхо­д ом, све­т о­д ио­д а­м и
и на­бо­ром вхо­дов и вы­хо­дов. Но в стан­дарт­
ной вер­сии не хва­та­ло кон­трол­ле­ра дви­га­те­
ля, и он был до­бав­лен во вто­рую, рас­ши­рен­
ную вер­сию — Pro. А в по­с лед­ней вер­сии
Pimoroni мы ви­дим усо­вер­шен­ст­во­ва­ния.
Explorer pHAT от­л ич­н о вста­е т по­в ерх
40‑кон­такт­но­го GPIO из Pi Zero и со­вмес­
тим со все­ми 40‑кон­такт­ны­ми GPIO Rasp­
berry Pi. Пла­т а тре­б у­е т не­б оль­ш ой пай­
ки — соб­ст­вен­но, как и сам Pi Zero. Explorer
pHAT — уре­зан­ная вер­сия Explorer Pro, где
уда ­л е­н ы ем­к о­с т­н ые вхо­д ы и кон­т ак ­т ы
I2C/3 В, но ос ­т ав­шие­с я эле­мен ­т ы весь­ма
впе­чат­ля­ют.
Explorer pHAT идет с дву­мя H-драй­ве­
ра­ми мо­то­ра, спо­соб­ны­ми ме­нять по­ляр­
ность мо­то­ра, по­зво­ляя ему ра­бо­тать в двух
на­прав­ле­ни­ях, что­бы ро­бот мог дви­гать­ся
в лю­бом на­прав­ле­нии с боль­шой точ­но­стью.
Вы­хо­ды дви­га­те­ля пред­ла­га­ют про­грамм­но
управ­ляе­мый ме­тод из­ме­не­ния их мощ­но­
сти, так что ско­рость ва­ших про­ек­тов ста­нет
варь­и­руе­мой. Explorer pHAT так­же име­ет че­
ты­ре ана­ло­го­вых вхо­да (для Pi это не стан­
дарт­но, но пред­став­ле­но на пла­тах Arduino),
по­зво­ляю­щие ис­поль­зо­вать в про­ек­те ана­
ло­го­вые сен­со­ры, та­кие как DHT 11/22.
Пла­та так­же идет с на­бо­ром 5‑В вхо­дов
и вы ­хо­дов для ис­поль ­зо­в а­ния с дру ­г и­ми
Свой­ст­ва на­вскид­ку
Ма­ла, но мощ­ная
Про­стой язык
У платы че­ты­ре вы­хо­да,
по 500 мА на ка­ж­дый, и спе­
циа­ли­зи­ро­ван­ные H-кон­
трол­ле­ры, при­год­ные для
5‑В мо­то­ров.
При­ла­гае­мые биб­лио­те­ки
Python уди­ви­тель­но ин­туи­
тив­ны, и в крат­чай­шие сро­
ки вы бу­де­те соз­да­вать
свои про­ек­ты.
> Explorer pHAT от­лич­но вста­ет по­верх Pi Zero, но он весь­ма ком­фор­та­бель­но чув­ст­ву­ет
себя и на дру­гих мо­де­лях 40-кон­такт­ных GPIO Pi.
ком­по­нен­т а­ми. Управ­ле­ние све­то­д ио­дом
от­но­си­тель­но про­стое и тре­бу­ет ис­поль­зо­
ва­ния ре­зи­сто­ра, что­бы све­то­ди­од не пе­ре­
го­рел. Вме­сто управ­ле­ния то­ком, иду­щим
к све­то­дио­ду, кон­тро­ли­ру­ет­ся за­зем­ле­ние,
яв­ляю­щее­ся вы­ход­ным кон­так ­том пла­ты.
Ка ­ж ­д ый вы ­ход пла­т ы мо­жет обес­п е­чить
мак­си­мум 500 мА че­рез мас­сив Дар­линг­
то­на [Darlington array], вы­со­ко­вольт­ный пе­
ре­к лю­ча­тель. От кон­так ­та по­лу­ча­ет­ся до­
с­та­точ­но боль­шой ток, но мак­си­маль­ный
вы­ход с объ­е­ди­нен­ных кон­так ­тов ог­ра­ни­
чен 1 А. Вход ра­бо­т а­е т с 5‑В ло­г и­че­­с ким
уст­рой­ст­вом, но мо­жет сра­ба­ты­вать от лю­
бо­го на­пря­же­ния от 2 В до 5 В, что очень
удоб­но при ра­бо­те с ульт­ра­зву­ко­вы­ми сен­
со­ра­ми и пас­сив­ным ин­фра­крас­ным дат­
чи­ком (PIR).
при­сут­ст­вую­щие в вер­сии Pro, и све­то­дио­
дов, пред­став­лен­ных в обе­их пре­ды­ду­щих
вер­си­ях, но це­на и на ­ли­чие кон­трол­ле­ров
дви­га­те­ля бо­лее чем ком­пен­си­ру­ют эти упу­
ще­ния. С по­мо­щью Pi Zero и Explorer pHAT
лег­ко соз­д ать мо­то­ри­зи­ро­ван­ный про­ект,
встав­ляе­мый в са­мые ма ­лень­кие кор­пу­са.
Це­на пла­ты и ее воз­мож­но­с ти ис­к лю­
чи­тель­ны и от­лич­но впи­сы­ва­ют­ся в но­вую
эко­си­сте­му Zero. Мы склон­ны со­гла­сить­ся
с Эбе­ном Ап­то­ном [Eben Upton], ос­но­ва­те­
лем Raspberry Pi Foundation, по поводу его
не­дав­него вы­ска­зыва­ния о при­став­ках к Ze­
ro: «Я по­ла­гаю, что при­став­ки стои­мо­стью
от £ 10 до £ 15 бу­дут иметь спрос на рын­ке,
по­сколь­к у лю­ди за­хо­тят ку­пить ак­сес­суа­
ры для этих уст­ройств», и Explorer pHAT —
один из них. |
Ис­клю­чи­тель­ные
функ­ции
Биб­лио­те­ка Python для Explorer pHAT весь­
ма на­деж­на и ох­ва­ты­ва­ет вер­сии 2 и 3. Ис­
поль­з уя очень про­с той для по­н и­м а­н ия
син­т ак­с ис, мож­н о управ­л ять со­с тоя­н и­
ем мно­же­ст­ва вхо­дов и вы­хо­дов на пла­те.
Ре­ж и­мы — та­кие как плав­ное из­ме­не­ние
уров­ня сиг­на ­ла, ми­г а­ние и пе­ре­к лю­ча­те­
ли — об­ра­ба­ты­ва­ют­ся за вас и уп­ро­щ а­ют
но­вич­кам про­цесс при­вы­ка­ния.
Explorer pHAT со­вмес­ти­ма со все­ми не­
дав­ни­ми Pi и от­лич­но впи­сы­ва­ет­ся в се­рию
плат Explorer. Да, нам бу­дет не хва­тать ем­ко­
ст­ных вхо­дов в сти­ле Makey Makey [MaKey
MaKey — при­с тав­к а-тач­пад к пред­ме­т ам
по­все­днев­но­го поль­зо­ва­ния, — прим. пер.],
www.linuxformat.ru/subscribe
Вер­дикт
Explorer pHAT
Раз­ра­бот­чик: Pimoroni
Сайт: https://shop.pimoroni.com
Це­на: Ј 10
Функ­цио­наль­ность8/10
Про­из­во­ди­тель­ность8/10
Удоб­ст­во в ра­бо­те9/10
Оп­рав­дан­ность це­ны9/10
» Снаб­жа­ет долж­ной функ­цио­наль­но­
стью ха­ке­ров ап­па­ра­ту­ры, а биб­лио­
те­ка Python пре­вос­ход­на.
Рей­тинг 8/10
Апрель 2016 LXF208 | 89
Raspberry PiRuby & Sonic Pi
Ruby: Со­чи­ним
слу­чай­ную
му­зы­ку
Лес Па­ун­дер рас­смат­ри­ва­ет, как не­мно­го изу­чить Ruby, про­грам­ми­руя Raspberry
Pi и со­чи­няя фраг­мент слу­чай­ной му­зы­ки с Sonic Pi.
К
Наш
экс­­перт
Лес Па­ун­дер —
уча­ст­ник об­ра­зо­
ва­тель­ной ко­ман­
ды Raspberry Pi
Foundation и пу­те­
ше­ст­ву­ет по стра­
не, за­став­ляя Pi
вы­де­лы­вать вся­
кие шту­ки. Он пи­
шет блог на http://
bigl.es.
СОВМЕСТИМО
СО ВСЕ­МИ
Pi
о­гда мы ду­ма­ем о язы­ках для об­ще­ния с Raspberry Pi, мы,
ес­т е­с т­вен­но, под­р а­зу­ме­в а­ем Scratch и Python. Од­на­ко
Sonic Pi — про­грам­ми­руе­мый в ре­а ль­ном вре­ме­ни син­те­
за­тор — ис­поль­зу­ет Ruby, по­пу­ляр­ный язык, соз­дан­ный Юки­хи­ро
“Matz” Ма­цу­мо­то и то­же дос­той­ный изу­че­ния.
На этом уро­ке мы изу­чим ряд прие­мов ко­ди­ро­ва­ния на Ruby,
ис­поль­зуя при­ло­же­ние Sonic Pi. Мы бу­дем ис­поль­зо­вать пе­ре­мен­
ные для хра­не­ния дан­ных; цик ­лы для по­вто­ре­ния про­ек ­та; мас­си­
вы для хра­не­ния на­бо­ров нот и ус­лов­ные опе­ра­то­ры для из­ме­не­ния
му­зы­ки по­сле тес­ти­ро­ва­ния. К кон­цу это­го про­ек­та вы соз­да­ди­те
не­что уни­каль­ное; это не му­зы­ка в при­выч­ном по­ни­ма­нии, но пер­
вый шаг в ав­то­ма­ти­че­­ском ее соз­да­нии с по­мо­щью ге­не­ра­ции слу­
чай­ных чи­сел.
Для это­го про­ек­та го­дит­ся лю­бая мо­дель Raspberry Pi; вам по­
тре­бу­ет­ся ау­дио на те­ле­ви­зо­ре (или ком­плект 3,5‑мм ди­на­ми­ков)
и по­след­няя вер­сия Raspbian Jessie. Весь код про­ек­та — на http://
bit.ly/LXF208Randomness.
Нач­нем мы с за­груз­ки Pi в ра­бо­чий стол, за­тем от­кро­ем при­ло­
же­ние Sonic Pi, ко­то­рое мож­но най­ти в ме­ню Programming. Че­рез
не­сколь­ко се­к унд Sonic Pi бу­дет го­тов к ра­бо­те. Sonic Pi ис­поль­зу­
ет несколько бу­фе­ров для хра­не­ния ко­да; в бу­фер 0 мы нач­нем пи­
сать на Ruby.
Пер­вая стро­ка ко­да иг­ра­ет но­т у, Sonic Pi ис­поль­зу­ет MIDI (циф­
ро­вой ин­тер­фейс му­зы­каль­ных ин­с т­ру­мен­тов) для пред­с тав­ле­
ния нот чис­ла­ми, так что для но­ты «до» мы ис­поль­зу­ем 60: play 60.
За­тем на­жми­те кноп­к у Run. Ес­ли ни­че­го не слыш­но, на ­жми­те
на ме­ню Prefs и из­ме­ни­те ау­дио­вы­ход в со­от­вет­ст­вии с ва­шим уст­
рой­ст­вом. Вы долж­ны ус­лы­шать звук «бом».
> Sonic Pi име­ет очень по­нят­ный ин­тер­фейс, что спо­соб­ст­ву­ет его
ос­вое­нию. Ему вто­рит и ис­клю­чи­тель­но чис­тый и лег­ко чи­тае­мый
в ре­дак­то­ре код Ruby.
90 | LXF208 Апрель 2016
Да ­лее ис­поль­зу­ем два по­ня­тия ко­ди­ро­ва­ния для этой стро­ки:
цикл по­вто­ра но­ты и пе­ре­мен­ную:
pace = 1
loop do
play 60
sleep pace
end
Пе­ре­мен­ная pace [англ. темп] ис­поль­зу­ет­ся для хра­не­ния чи­
сло­во­го зна­че­ния — це­ло­го или с пла­в аю­щ ей точ­кой. Ис­поль­
зуя этот ме­тод, мож­но соз­дать ме­сто для хра­не­ния зна­че­ния тем­
па про­ек ­та, вме­сто то­го, что­бы же­ст­ко за­ко­ди­ро­вать его для все­го
про­ек­та. Цикл, как ви­ди­те, на­чи­на­ет­ся с do и за­кры­ва­ет­ся с end.
Важ­но пом­нить, что ка­ж ­дый цикл дол­жен быть пра­виль­но от­крыт
и за­крыт. В дан­ном при­ме­ре цикл вы­пол­ня­ет­ся бес­ко­неч­но.
Темп и по­то­ки
Что­бы из­ме­нить темп про­ек­та, мож­но про­сто из­ме­нить зна­че­ние
тем­па, на­при­мер, ес­ли он мень­ше 1, ис­поль­зо­ва­ние чис­ла с пла­
ваю­щей точ­кой, та­ко­го как 0.3, сде­ла­ет это очень бы­ст­ро. В при­
ме­ре ни­же я до­ба­вил еще две стро­ки по­сле стро­ки че­ты­ре, но пе­
ред кон­цом цик ­ла:
play 70
sleep pace
Да­лее мы до­ба­вим не­ко­то­рый код, что­бы со­дер­жать наш цикл
в по­то­ке. В Ruby лег­ко опе­ри­ро­вать с по­то­ка­ми, так что мы мо­жем
за­пус­тить код в не­сколь­ко по­то­ков. В Sonic Pi мы ис­поль­зу­ем это
для соз­да­ния сло­ев соз­да­вае­мой му­зы­ки.
Наш код те­перь бу­дет вы­гля­деть так (пом­ни­те, что на­чав цикл
с do, мы долж­ны зва­ер­шить его с end, тот же прин­цип при­ме­ня­ет­
ся и к по­то­кам):
pace = 0.3
in_thread do
loop do
play 60
sleep pace
play 70
sleep pace
end
end
Те­перь соз­да­дим еще один по­ток, с дру­гим на­бо­ром нот. В этом
слу­чае мы ско­пи­ру­ем и вста­вим ис­ход­ный по­ток и по­ни­зим вы­
соту зву­ка.
in_thread do
loop do
play 50
sleep pace
www.linuxformat.ru/subscribe
Ruby & Sonic Pi R
aspberry Pi
Sonic Pi и Minecraft
Sonic Pi — от­лич­ный спо­соб по­зна­ко­мить
де­тей с Ruby, но, как мы зна­ем, мно­
гие де­ти под­се­ли на Minecraft и тра­тят
мно­го вре­ме­ни на иг­ру. А знае­те ли вы,
что Sonic Pi так ­же мож­но ис­поль­зо­
вать для управ­ле­ния Minecraft по­доб­но
биб­лио­те­ке Python?
Для это­го по­тре­бу­ет­ся от­крыть
Minecraft и Sonic Pi. Это воз­мож­но на всех
Raspberry Pi, но луч­шие ре­зуль­та­ты по­
лу­ча­ют­ся на Pi 2. В Sonic Pi мы мо­жем
ин­тег­ри­ро­вать ко­ман­ды Minecraft в на­шу
ком­по­зи­цию — на­при­мер, те­ле­пор­ти­ро­
вать Сти­ву два бло­ка по воз­д у­х у, и это бу­
дет про­ис­хо­дить в такт му­зы­ке — до­ба­вив
mc_teleport(0,2,0).
Бла­го­да­ря Джейм­су Ро­бин­со­ну [James
Robinson] из Raspberry Pi Foundation, Sonic
Pi мож­но на­стро­ить реа­ги­ро­вать на ввод
в ми­ре Minecraft, так как он на­пи­сал кла­
виа­т ур­ную иг­ру, где иг­рок со­чи­ня­ет му­зы­
ку с по­мо­щью кла­виа­т у­ры Minecraft. Sonic
Pi име­ет раз­дел по­мо­щи, ко­то­рый ох­ва­ты­
ва­ет функ­цио­наль­ность Minecraft.
play 55
sleep pace
end
end
Итак, те­перь у нас од­но­вре­мен­но есть два по­то­ка, соз­даю­щих
ритм. Для сле­дую­ще­го экс­пе­ри­мен­та ис­поль­зу­ем слу­чай­ное чис­
ло, что­бы из­ме­нить вы­со­т у но­ты. С по­мо­щью rand_i(70) вы­бе­рем
слу­чай­ное чис­ло ме­ж ­ду 0 и 70. Так­же ис­поль­зу­ем один из мно­гих
ин­с т­ру­мен­тов, дос­т уп­ных в Sonic Pi, из­вест­ный как син­те­за­тор,
что­бы ме­нять зву­ча­ние на­шей му­зы­ки. В дан­ном слу­чае ис­поль­зу­
ем dsaw — циф­ро­вую пи­лу/гу­дя­щий шум. По­это­му для вто­ро­го по­
то­ка наш код те­перь вы­гля­дит так:
in_thread do
loop do
use_synth :dsaw
play 50
sleep pace
play rand_i(70)
sleep pace
end
end
Соз­д а­с т­ся ед­ва ощу­ти­мое раз­ли­чие в ме­ло­ди­ях при ка­ж ­дом
вос­про­из­ве­де­нии му­зы­ки.
Да­вай­те до­ба­вим еще по­ток в наш про­ект, что до­ба­вит слой
в соз­д а­вае­мую на­ми ка­ко­фо­нию зву­ков. Этот по­ток ис­поль­зу­ет
дру­гой цикл и иг­ра­ет лю­бые но­ты с по­мо­щью син­те­за­то­ра ‘blade’,
ко­то­рый на­по­ми­на­ет ра­бо­т у Ван­ге­ли­са над са­ун­дт­ре­ком к филь­му
Бе­гу­щий по лез­вию. На сей раз вос­про­из­во­дить но­ты бу­дем дру­гим
ме­то­дом. Пре­ж ­де мы про­си­ли Sonic Pi иг­рать но­т у, по­том «ус­нуть»,
и до­воль­но бы­ст­ро это ста­но­вит­ся гро­мозд­ким. По­это­му ис­поль­
зу­ем функ­цию play_pattern_timed, ко­то­рая при­ни­ма­ет два ус­ло­вия:
мас­сив для хра­не­ния нот, ко­то­рые мы хо­тим иг­рать, и управ­ле­
ние вре­ме­нем нот — в дан­ном слу­чае мы ис­поль­зу­ем пе­ре­мен­ную
pace, соз­дан­ную ра­нее. Ваш но­вый по­ток дол­жен вы­гля­деть сле­
дую­щим об­ра­зом:
in_thread do
loop do
use_synth :blade
play_pattern_timed [70,72,74],[pace]
end
end
> Kids Ruby — от­лич­ное при­ло­же­ние и помо­жет лю­бо­му сде­лать
первые шаги с Ruby.
if..elsif..else. Ес­ли зна­че­ние пе­ре­мен­ной удов­ле­тво­ря­ет ус­ло­ви­ям,
то код, со­дер­жа­щий­ся в нем, за­пус­ка­ет­ся:
in_thread do
loop do
with_fx :reverb do
random = rand_i(100)
if random > 75 then
use_synth :dull_bell
play random
sleep 0.2
elsif random > 50 and random < 75 then
use_synth :pulse
play random
sleep 0.2
else
use_synth :piano
play random
sleep 0.2
end
end
end
end
Здесь мы соз­да ­ли но­вую пе­ре­мен­ную с име­нем random и ис­
поль­зо­ва­ли ее для хра­не­ния слу­чай­но­го це­ло­го чис­ла от 0 до 100.
За­тем применяем ус­лов­ные опе­ра­то­ры для про­вер­ки зна­че­ния пе­
ре­мен­ной random, и ес­ли она боль­ше 75, то ин­ст­ру­мент ме­ня­ет­ся
на dull_bell и иг­ра­ет­ся му­зы­каль­ная но­та. Цикл по­вто­ря­ет­ся, и слу­
чай­ное чис­ло срав­ни­ва­ет­ся сно­ва. Ес­ли оно не про­хо­дит две про­
вер­ки, то вклю­ча­ет­ся ус­ло­вие else и для про­иг­ры­ва­ния но­ты вы­би­
ра­ет­ся фор­те­пи­ан­ный син­те­за­тор.
Как-то так. С по­мо­щью про­грамм­ной ло­ги­ки, не­сколь­ких слу­
чай­ных чи­сел и Sonic Pi мы соз­да­ли ме­ло­дию, ко­то­рая бы­ла на­пи­
са­на ком­пь­ю­те­ром с ис­поль­зо­ва­ни­ем слу­чай­ных чи­сел. |
Скорая
помощь
Ruby — от­лич­
ный язык и яв­ля­
ет­ся пре­крас­ным
вве­де­ни­ем в ти­пи­
зи­ро­ван­ные язы­
ки. Ес­ли вам по­на­
до­бит­ся по­мощь
по Sonic Pi, му­зы­
каль­ной или вы­
чис­ли­тель­ной ло­
ги­ке, то Sonic Pi
име­ет от­лич­ную
спра­воч­ную сис­
те­му, рас­по­ло­жен­
ную в ниж­ней ле­
вой час­ти эк­ра­на.
Иг­рать и слу­шать му­зы­ку
И по­с лед­ний, са­мый ам­би­ци­оз­ный по­ток: мы ис­поль­зу­ем цикл,
что­бы по­сто­ян­но про­ве­рять зна­че­ние пе­ре­мен­ной в се­рии ус­ло­вий
> У Sonic Pi пре­крас­ная спра­воч­ная сис­те­ма, ко­то­рая вклю­ча­ет и ко­ди­ро­ва­ние, и му­зы­каль­
ную ком­по­зи­цию про­ек­та. Взгля­ни­те для вдох­но­ве­ния, ес­ли за­стря­не­те.
»»Подпишитесь на печатную или электронную версиина www.linuxformat.ru/subscribe!
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 91
Raspberry PiOwnCloud
OwnCloud 8.0:
Но­вее и луч­ше
Ма­янк Шар­ма по­ка­зы­ва­ет, как взять под кон­троль хра­не­ние сво­их дан­ных
и рас­пре­де­лен­ный дос­туп к ним в све­жем ре­ли­зе об­ла­ка.
Н
Наш
экс­­перт
Ма­янк Шар­ма до­
воль­но час­то ви­
та­ет в об­ла­ках, так
что бы­ло впол­не
ло­гич­но по­про­
сить его на­пи­сать
про его при­к лю­че­
ния в ми­ре об­лач­
ных тех­но­ло­гий.
СОВМЕСТИМО
С ПК И Pi
уж ­но ли вам удоб­с т ­во вез ­де­с у ­ще­го Dropbox-по­доб­но­
го сер­ви­са хра­не­ния без го­ре­чи рас­с та­ва­ния с круп­ной
на ­лич­но­с тью и пре­дос­тав­ле­ния ва­ших дан­ных треть­ей
сто­ро­не? OwnCloud — од­на из луч­ших про­грамм с от­кры­тым ко­
дом, по­мо­гаю­щая соз­дать свой соб­ст­вен­ный ча­ст­ный и за­щи­щен­
ный об­лач­ный сер­вис. С по­мо­щью OwnCloud мож­но син­хро­ни­зи­ро­
вать и де­лить­ся свои­ми лич­ны­ми дан­ны­ми и по­лу­чать к ним дос­т уп
с лю­бо­го уст­рой­ст­ва, под­к лю­чен­но­го к Ин­тер­не­т у. Для боль­шей
безо­пас­но­с ти OwnCloud так ­же мо­жет шиф­ро­вать ва­ши фай­лы.
ПО уме­ет управ­лять фай­ла­ми раз­лич­ных фор­ма­тов, и мож­но улуч­
шить ее прак­тич­ность, до­ба­вив ряд дру­гих при­ло­же­ний.
Как и с дру ­г и­ми об­лач­ны­ми он ­лайн-сер­ви­с а­ми, с OwnCloud
мож­но син­хро­ни­зи­ро­вать фай­лы, ис­поль­зуя web-брау­зер или на­
столь­ный кли­ент в Windows, Mac и Linux, а так­же мо­биль­ные кли­
ен­ты для уст­ройств Android и iOS. Бо­лее то­го, ваш сер­вер OwnCloud
хра­нит ста­рые вер­сии всех из­ме­нен­ных фай­лов и по­зво­ля­ет вер­
нуть­ся к ста­рой вер­сии без осо­бых уси­лий.
В дан­ном ру­ко­во­дстве мы на­с тро­им сер­вер OwnCloud на ди­
ст­ри­бу ­т и­ве Raspbian для Raspberry Pi. ПО сер­ве­р а име­е т весь­
ма скром­ные тре­бо­ва­ния и в не­боль­ших и кон­тро­ли­руе­мых сре­
дах — та­ких, как ваш дом — хо­ро­шо ра­бо­та­ет да­же на Raspberry Pi
Model B. Вам так­же по­на­до­бит­ся USB-диск для хра­не­ния дан­ных,
и для мак­си­маль­ной на­деж­но­сти и про­из­во­ди­тель­но­сти луч­ше все­
го ис­поль­зо­вать диск с ав­то­ном­ным пи­та­ни­ем, не вы­тя­ги­ваю­щий
энер­гию из Raspberry Pi. Пре­ж ­де чем на­чать на­страи­вать сер­вер,
убе­ди­тесь, что у Raspberry Pi есть ста­ти­че­­ский IP-ад­рес. Про­стей­
ший спо­соб сде­лать это — при­вя­зать IP-ад­рес к уни­каль­но­му MACад­ре­су ва­ше­го Pi на стра­ни­це ад­ми­ни­ст­ри­ро­ва­ния ва­ше­го ро­у те­ра.
Мы при­мем ад­рес на­ше­го Pi за 192.168.3.111, но ваш бу­дет дру­гим!
Ус­та­нов­ка OwnCloud
Скорая
помощь
Что­бы про­смот­
реть ста­ти­сти­
ку кэ­ша APC,
ско­пи­руй­те его
скрипт в ваш
DocumentRoot с по­
мо­щью cp /usr/
share/doc/phpapc/
apc.php /var/www/
и за­тем про­смот­
ри­те ста­ти­сти­к у
в web-брау­зе­ре
на http://localhost/
apc.php.
По­сколь­к у Raspbian ос­но­ван на Debian, мож­но за­гру­зить па­ке­ты
OwnCloud из ре­по­зи­то­рия Debian. За­пус­ти­те тер­ми­нал и до­бавь­те
ре­по­зи­то­рии OwnCloud с по­мо­щью
$ echo ‘deb http://download.opensuse.org/repositories/isv:/
ownCloud:community/Debian_7.0/ /’ | sudo tee /etc/apt/sources.
list.d/owncloud.list
$ wget http://download.opensuse.org/repositories/
isv:OwnCloud:community/Debian_7.0/Release.key
$ sudo apt-key add - < Release.key
Ре­по­зи­то­рии мож­но об­но­вить ко­ман­дой $ sudo apt-get update.
Затем ус­т а­но­ви­те сер­вер OwnCloud и все тре­буе­мые за­ви­си­мо­
сти с по­мо­щью $ sudo apt-get install owncloud. Это так­же за­гру­зит
и на­стро­ит ба­зу дан­ных MySQL, и вас по­про­сят за­дать па­роль root.
Вдо­ба­вок к ус­та­нов­ке тре­буе­мых ком­по­нен­тов, вы­ше­при­ве­ден­
ная ко­ман­д а ав­то­ма­ти­че­­ски на­с тро­ит web-сер­вер Apache, что­бы
взаи­мо­дей­с т­во­вать с ус­та­нов­кой OwnCloud. Для кор­рект­ной ра­
боты OwnCloud по­н а­д о­б ит­с я вклю­ч ить оп­р е­д е­л ен­н ые мо­д у­л и
Apache. Вве­ди­те в тер­ми­на­ле
92 | LXF208 Апрель 2016
> У OwnCloud хо­ро­шо про­ду­ман­ная па­нель управ­ле­ния, ос­но­ван­ная
на брау­зе­ре — при мно­же­ст­ве функ­ций, она лег­ка в управ­ле­нии.
$ sudo a2enmod headers rewrite env
За­тем пе­ре­за­пус­ти­те Apache с по­мо­щью $ sudo apachectl restart.
Ес­ли вы хо­ти­те за­гру­жать фай­лы раз­ме­ром бо­лее 2 МБ, вам
при­дет­ся на­стро­ить файл кон­фи­г у­ра­ции PHP. Для это­го от­кройте
в тек­сто­вом ре­д ак­то­ре файл кон­фи­г у­ра­ции PHP, php.ini, на­хо­д я­
щий­с я в /etc/php5/apache2. Най­д и ­т е пе­р е­мен­ные upload_max_
filesize и post_max_size и из­ме­ни­те их зна­че­ния с 2М на что-ни­будь
вро­де 1024М или да­же 2G.
Оп­цио­наль­но, в бо­лее круп­ных ус­та­нов­ках так­же мож­но ус­та­но­
вить ак­се­ле­ра­тор PHP — APC, что­бы ус­ко­рить ус­та­нов­к у OwnCloud.
За­гру­зи­те ком­по­нен­ты с по­мо­щью sudo apt-get install php-apc, за­
тем от­крой­те файл на­строй­ки APC и до­бавь­те
$ sudo mkdir /etc/php5/conf.d
$ sudo nano /etc/php5/conf.d/20-apc.ini
extension=apc.so
apc.enabled=1
apc.shm_size=12M
За­тем вклю­чи­те кэ­ши­ро­ва­ние, пе­ре­за­гру­зив Apache с по­мо­щью
$ sudo apachectl restart
Итак, сер­вер на­стро­ен и скон­фи­г у­ри­ро­ван; по­ра под­го­то­вить
сред­ст­во хра­не­ния. Под­к лю­чи­те USB-диск в Pi и вве­ди­те в тер­ми­на­
ле sudo blkid. Ве­ро­ят­но, USB-диск смон­ти­ро­ван как /dev/sda1, ес­ли
у вас не при­кре­п­ле­но дру­гих USB-дис­ков. Об­ра­ти­те вни­ма­ние на со­
от­вет­ст­вую­щий UUID, ко­то­рый вы­гля­дит на­по­до­бие 6154‑F660. Те­
перь соз­дай­те пап­к у для мон­ти­ро­ва­ния это­го дис­ка, ко­ман­дой
$ sudo mkdir /media/owncloud
За­тем смон­ти­руй­те диск, ис­поль­зуя
$ sudo mount -t vfat -o umask=007,auto,uid=33,gid=33 /dev/sda1
/media/owncloud
Эта ко­ман­да пред­по­ла­га­ет, что у ва­ше­го дис­ка фай­ло­вая сис­те­
ма FAT32 и он мон­ти­ро­ван на /dev/sda1. Ко­гда диск кор­рект­но смон­
ти­ру­ет­ся, вы смо­же­те от­ре­дак­ти­ро­вать файл fstab, что­бы обес­пе­
чить ему ав­то­ма­ти­че­­ское мон­ти­ро­ва­ние:
www.linuxformat.ru/subscribe
OwnCloud Raspberry Pi
$ sudo nano /etc/fstab
UUID=6154-F660 /media/owncloud/ vfat
rw,umask=007,auto,uid=33,gid=33 0 0
На­строй­те об­ла­ко
Всё это бы­л о для ус­т а­н ов­к и ком­п о­н ен­т ов сер­в е­р а. Те­п ерь вам
пред­сто­ит на­стро­ить свое об­ла­ко. За­пус­ти­те web-брау­зер и пе­рей­
дите к эк­зем­п­ля­ру ус­та­нов­ки OwnCloud на 192.168.3.111/owncloud.
По­сколь­к у это но­вая ус­та­нов­ка, вас по­про­сят соз­дать учет­ную за­
пись поль­зо­ва­те­ля для ад­ми­ни­ст­ра­то­ра OwnCloud.
За­тем на­до бу­дет по­про­сить OwnCloud ис­поль­зо­вать ба­зу дан­
ных MySQL и хра­нить фай­лы на мон­ти­ро­ван­ном USB-дис­ке. Для
это­г о на ­ж ми ­т е на вы­па ­д аю­щ ее ме­ню Storage & Database [Хра­
ни­ди­ще и ба­за дан­ных], вве­ди­те /media/owncloud/data в тек­с то­
вом ок­не, со­от­вет­ст­вую­щем пунк­т у Data Folder [Пап­ка с дан­ны­ми],
и вы­бе­рите оп­цию MySQL/MariaDB в раз­де­ле Database. Вас по­про­
сят вве­с ти под­роб­но­с ти под­к лю­че­ния сер­ве­ра ба­зы дан­ных, так
что про­сто вве­ди­те localhost в ка­че­­ст­ве хос­та и root в ка­че­­ст­ве име­
ни поль­зо­ва­те­ля вме­сте с па­ро­лем, ко­то­рый вы за­да­ли, ко­гда ба­за
дан­ных за­гру­жа­лась вме­сте с OwnCloud.
Ну вот — вы на­строи­ли OwnCloud. Те­перь мо­же­те вой­ти в свой
об­лач­ный сер­вер как ад­ми­ни­ст­ра­тор с по­мо­щью ау­тен­ти­фи­ка­ци­
он­ной ин­фор­ма­ции, ко­то­рую вы ус­та­но­ви­ли для OwnCloud. На­чать
ис­поль­зо­вать сер­вер для за­груз­ки и ска­чи­ва­ния фай­лов мо­жно
пря­мо сей­час, но да­вай­те уде­лим не­ко­то­рое вре­мя на при­бор­к у.
Для на­чи­наю­щих, ко­гда вы вхо­ди­те в сер­вер OwnCloud, на­жми­те
на вы­па­даю­щее ме­ню ря­дом с ва­шим име­нем поль­зо­ва­те­ля и на­
жмите на Personal [Лич­ные на­строй­ки]. Здесь вы мо­же­те из­ме­нить
на­строй­ки сво­ей учет­ной за­пи­си, та­кие как па­роль и ото­бра­жае­
мое имя. Так­же, ес­ли ва­ше об­ла­ко бу­дет ис­поль­зо­вать­ся не­сколь­
ки­ми людь­ми, со­ве­т у­ем рас­пре­де­лить поль­зо­ва­те­лей по раз­ным
груп­пам. Что­бы сде­лать это, вы­бе­ри­те оп­цию Users [Поль­зо­ва­те­
ли] в вы­па­даю­щем ме­ню. При до­бав­ле­нии поль­зо­ва­те­лей вы мо­
же­те ог­ра­ни­чить предоставляемое им про­с тран­с т­во для хра­не­
ния, а то и по­де­лить­ся свои­ми пра­ва­ми ад­ми­ни­ст­ра­то­ра с дру­ги­ми
поль­зо­ва­те­ля­ми.
Те­перь вы го­то­вы за­гру­зить дан­ные на ваш сер­вер OwnCloud.
Вой­д я, вы ока ­же­тесь в раз ­де ­ле Files [Фай­лы]. Что­бы за­г ру­зить
файл, на­жми­те на плюс (+) и вы­бе­ри­те Upload [От­гру­зить] в вы­па­
даю­щем ме­ню. Что­бы рас­пре­де­лить фай­лы по пап­кам, на­жми­те
на плюс и вы­бе­ри­те оп­цию Folder [Пап­ка].
Ес­ли вы за­гру­зи­ли файл в по­нят­ном для OwnCloud фор­ма­те, мо­
жно щелк­нуть по его име­ни, что­бы про­смот­реть и от­ре­дак ­ти­ро­вать
его. OwnCloud уме­е т ви­зу­а ль­н о ото­бра ­ж ать хра­ни­мые им дан­
ные в раз­ных ви­д ах: на­при­мер, на ­ж ми ­те на вы­па ­д аю­щее ме­ню
Files в ле­вом верх­нем уг­л у ин­тер­фей­с а и вы­бе­ри­те оп­ц ию Pict­
ures [Изо­бра ­же­ния]. Это ото­бра ­же­ние по­мо­жет вам про­смат­ри­
вать изо­бра­же­ния в ва­шем об­ла­ке, от­фильт­ро­вы­вая все ос­таль­
ные ти­пы со­дер­жи­мо­го.
Иной спо­соб за­гру­зить фай­лы на сер­вер — ис­поль­зо­вать про­
то­кол WebDAV, с ко­то­рым вы мо­же­те по­лу­чить дос­т уп к сво­ему об­
лач­но­му сер­ве­ру из ме­нед ­же­ра фай­лов. На­при­мер, в ме­нед ­же­ре
фай­лов Files на­жми­те Ctrl + l, что­бы вклю­чить об­ласть раз­ме­ще­
ния. Здесь вы мо­же­те ука­зать на свой сер­вер OwnCloud, на­при­мер,
dav://192.168.3.111/owncloud/remote.php/webdav. По­сле ау ­тен­ти­фи­
ка­ции хра­ни­ли­ще OwnCloud смон­ти­ру­ет­ся, и вы смо­же­те взаи­мо­
дей­ст­во­вать с ним, как с обыч­ной пап­кой.
Что­бы по­де­лить­ся за­гру­жен­ны­ми фай­ла­ми, пе­рей­ди­те в раз­
дел Files в web-ин­тер­фей­се и на­жми­те кноп­к у Share [По­де­лить­ся]
сле­ва от име­ни фай­ла, что по­зво­лит вам вы­брать, с ка­ки­ми поль­
зо­ва­те­ля­ми или груп­па­ми вы хо­ти­те по­де­лить­ся и собираетесь ли
вы предоставить им пра­во ре­дак­ти­ро­вать и уда­лять фай­лы. Вы так­
же мо­же­те по­де­лить­ся с кем-ни­будь не за­ре­ги­ст­ри­ро­ван­ным на ва­
шем сер­ве­ре OwnCloud. На ­ж ми ­те на Share with Link [По­де­лить­
ся ссыл­кой], и OwnCloud ото­бра­зит ссыл­к у на эле­мент, ко­то­рым
вы смо­жете по­де­лить­ся с ка­ж ­дым в Ин­тер­не­те. Вы так­же мо­же­те
за­щи­тить ссыл­к у па­ро­лем и ус­та­но­вить срок действия этого паро­
ля — да­т у его ис­те­че­ния.
Хо­тя вы мо­же­те взаи­мо­дей­ст­во­вать с об­ла­ком че­рез web-ин­
тер­фейс, ку­да про­ще ис­поль­зо­вать один из его офи­ци­а ль­ных кли­
ен­тов. У OwnCloud есть кли­ен­ты для всех ос­нов­ных ра­бо­чих сто­лов
и мо­биль­ных плат­форм. Эти кли­ен­ты так­же по­мо­га­ют вам с лег­
ко­стью син­хро­ни­зи­ро­вать пап­ки с ва­ше­го ра­бо­че­го сто­ла с ва­шим
сер­ве­ром OwnCloud.
Скорая
помощь
Ес­ли у ва­ше­го
дис­ка есть раз­дел
NTFS, ус­та­но­ви­те
драй­вер NTFS с по­
мо­щью sudo aptget install ntfs-3g
и ис­поль­зуй­те -t
ntfs-3g в ко­ман­де
mount.
На­строй­те кли­ен­ты
Боль­шин­ст­во на­столь­ных ди­ст­ри­бу­ти­вов раз­ме­ща­ют в сво­их офи­
ци­а ль­ных ре­по­зи­то­ри­ях кли­ент Linux. Мож­но так­же по­лу­чить по­
след­нюю вер­сию кли­ен­та, до­ба­вив со­от­вет­ст­вую­щий ре­по­зи­то­рий
для ва­ше­го ди­ст­ри­бу­ти­ва с http://bit.ly/OwnCloudClients.
Стра­ни­ца со­дер­жит ин­ст­рук­ции для по­пу­ляр­ных ди­ст­ри­бу ­ти­
вов, вклю­чая Debian, Fedora, Ubuntu, openSUSE и т. д. Что­бы ска­
чать кли­ен­ты для дру­гих плат­форм, пе­рей­ди­те на стра­ни­цу Down­
loads на сай­те OwnCloud (https://owncloud.org/install/#install-clients).
Мо­биль­ные кли­ен­ты луч­ше все­го ска­чи­вать с Apple App Store или
Google Play Store.
Го­то­вые ре­ше­ния
Хо­тя ус­та­но­вить и на­стро­ить сер­вер OwnCloud
с ну­ля не так уж слож­но, существует па­ра спо­со­бов
сэ­ко­но­мить вре­мя и си­лы. Пар­ни из PetRockBlog
(http://blog.petrockblock.com) на­пи­са­ли скрипт, ав­
то­ма­ти­зи­рую­щий весь про­цесс ус­та­нов­ки. Скрипт
ска­чи­ва­ет и на­страи­ва­ет ус­та­нов­к у OwnCloud в ди­
ст­ри­бу ­ти­ве Raspbian. Од­на­ко, в от­ли­чие от на­ше­го
уро­ка, скрипт вме­сто web-сер­ве­ра Apache ис­поль­зу­
ет web-сер­вер Nginx.
Что­бы ис­поль­зо­вать скрипт, ус­та­но­ви­те тре­буе­
мые ком­по­нен­ты с по­мо­щью
$ sudo apt-get install git dialog
За­тем ус­та­но­ви­те скрипт с по­мо­щью
$ git clone git://github.com/petrockblog/OwncloudPie.git
Соз­да­ст­ся пап­ка с име­нем OwncloudPie. Пе­рей­ди­те
в эту пап­к у по $ cd OwncloudPie и сде­лай­те скрипт
ис­пол­няе­мым, ис­поль­зуя
$ chmod +x owncloudpie_setup.sh
За­тем вы­пол­ни­те его:
$ sudo ./owncloudpie_setup.sh
Те­перь вам нуж­но лишь дать ему не­мно­го
вре­мени для ска­чи­ва­ния всех ком­по­нен­тов и на­
строй­ки сер­ве­ра для вас. Ус­та­но­вив OwnCloud
из скрип­та, мо­же­те за­пус­кать его сно­ва, что­бы
об­но­вить ус­та­нов­к у, как толь­ко поя­вит­ся но­вая
вер­сия OwnCloud.
Ес­ли вы при­над­ле­жи­те к ти­пу с бо­лее аван­
тюр­ны­ми наклонностями, по­про­буй­те ус­та­но­вить
на свой Raspberry Pi ди­ст­ри­бу ­тив arkOS (https://
arkos.io) . Вдо­ба­вок к OwnCloud, этот ди­ст­ри­бу­тив
име­ет дру­гие при­ло­же­ния, ко­то­рые вы мо­же­те ис­
поль­зо­вать, что­бы и даль­ше кон­тро­ли­ро­вать свои
дан­ные. Пе­рей­ди­те на стра­ни­ц у Downloads [За­
груз­ки], за­тем ска­чай­те и рас­па­к уй­те ус­та­но­вщик
для Raspberry Pi. После этого вставь­те SD-кар­т у
и за­пус­ти­те ус­та­но­вщик arkOS ко­мандо­й $ sudo
./arkos-install.
Сле­д уй­те ша­гам ус­та­нов­щи­ка для ска­чи­ва­ния об­
раза из Ин­тер­не­та и его ус­та­нов­ки на ва­шу SD-кар­
ту. По­сле это­го вам на­до за­гру­зить свой Raspberry
Pi с кар­ты и пе­рей­ти на http://arkos:8000, что­бы
на­стро­ить свой сер­вер.
»»Подпишитесь на печатную или электронную версиина www.linuxformat.ru/subscribe!
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 93
Raspberry PiOwnCloud
Син­хро­ни­зи­руй­те пап­ки и де­ли­тесь ими
> Про­кру­ти­те вниз
до оп­ций Admin,
что­бы при­вя­зать
OwnCloud к сер­ве­ру
элек­трон­ной поч­ты.
Ко­гда кли­ент ус­та­но­вит­ся, он пред­ло­жит вам вве­сти ва­ши ау­тен­ти­
фи­ка­ци­он­ные дан­ные, что­бы под­к лю­чить­ся к OwnCloud. По­сле под­
клю­че­ния кли­ен­ты Linux соз­да­ют ло­каль­ную син­хро­ни­зи­руе­мую
пап­к у с име­нем owncloud в пап­ке home, на­при­мер, /home/bodhi/
owncloud. Лю­бые фай­лы, пе­ре­ме­щен­ные в эту пап­к у, бу­д ут ав­то­
ма­ти­че­­ски син­хро­ни­зи­ро­ва­ны с сер­ве­ром. Мож­но так ­же ука­зать
од­ну или не­сколь­ко па­пок на ло­каль­ном ком­пь­ю­те­ре для син­хро­
ни­за­ции с сер­ве­ром OwnCloud. Ес­ли пап­ка име­ет рас­пре­де­лен­ный
дос­т уп с не­сколь­ки­ми поль­зо­ва­те­ля­ми, из­ме­не­ние фай­ла на од­ном
ком­пь­ю­те­ре, ав­то­ма­ти­че­­ски рас­про­стра­нит­ся на дру­гие.
При взаи­мо­дей­с т­вии с дру­ги­ми поль­зо­ва­те­ля­ми вы оце­ни­те
сис­те­му управ­ле­ния вер­сия­ми OwnCloud, ко­то­рая соз­да­ет ре­зерв­
ные ко­пии фай­лов пе­ред их из­ме­не­ни­ем. Эти ре­зерв­ные ко­пии дос­
туп­ны из вы­па­даю­щей оп­ции Version [Вер­сия], со­от­вет­ст­вую­щей
ка­ж ­до­му фай­лу вме­сте с кноп­кой Restore [Вос­ста­но­вить] для воз­
вра­та к бо­лее ста­рой вер­сии.
Кро­ме фай­лов, с ва­шим сер­ве­ром OwnCloud мож­но син­хро­ни­
зи­ро­вать ваш ка­лен­дарь и ад­рес­ную кни­г у. Сле­дуй­те ру­ко­во­дству
(см. стр. 95 спра­ва), что­бы вклю­чить при­ло­же­ния Calendar и Contacts. По­сле вклю­че­ния обе­их про­грам­мы верх­нее ле­вое вы­па­даю­
щее ме­ню об­з а­ве­дет­с я оп­ц и­ей Calendar [Ка ­лен­д арь] и Contacts
[Кон­так­ты].
За­тем им­пор­ти­руй­те в свой об­лач­ный сер­вер кон­так­ты и ка­
лен­д арь из ва­ших преж­них при­ло­же­ний. OwnCloud под­дер­жи­ва­
ет по­пу­ляр­ный фор­мат фай­ла vCard (с рас­ши­ре­ни­ем фай­ла VCF)
и поч­ти все по­пу­ляр­ные при­ло­же­ния элек ­трон­ной поч­ты, вклю­
чая он­лай­но­вые, та­к ие как Gmail, ес­ли вы экс­пор­ти­руе­те их ад­
рес­ные кни­ги в этот фор­мат. По­хо­жим об­ра­зом, ка­лен­дарь мож­но
им­пор­ти­ро­вать в по­пу­ляр­ный фор­мат ICAL. Пре­ж ­де чем ид­ти даль­
ше, позаботьтесь ска­чать VCF- и ICAL-фай­лы из ва­ших су­ще­ст­вую­
щих при­ло­же­ний ка­лен­да­ря и кон­так­тов.
Те­перь пе­рей­ди­те в Contacts в OwnCloud и на­жми­те на Import
Contacts [Им­п орт кон ­т ак ­т ов]. Во всплы­в аю­щ ем ок ­н е на ­ж ми ­т е
на Upload File [За­гру­зить файл] и ука­жи­те ему на файл VCF. Ко­гда
кон­так­ты бу­дут им­пор­ти­ро­ва­ны, мо­же­те син­хро­ни­зи­ро­вать их с ва­
шим кли­ен­том элек ­трон­ной поч­ты с по­мо­щью ссы­лок CardDAV. Пе­
рей­ди­те в раз­дел Contacts в OwnCloud, на­жми­те на икон­к у с шес­
те­рен­кой вни­зу, на­ве­ди­те мышь на имя ад­рес­ной кни­ги, ко­то­рую
вы им­пор­ти­ро­ва ­ли, и на ­жми­те на икон­к у Chain [Це­поч­ка]. Это вы­
даст CardDAV ссыл­к у для данной ад­рес­ной кни­ги, ко­то­рую вы мо­
жете пе­ре­дать на свой кли­ент ра­бо­че­го сто­ла или мо­биль­ной ад­
рес­ной кни­ги.
Син­хро­ни­зи­руй­те и де­ли­тесь
ка­лен­да­рем
По­хо­жим об­ра­зом OwnCloud управ­ля­ет ва­шим ка ­лен­да­рем и за­да­
ча­ми. Что­бы соз­дать со­бы­тие в ва­шем ка­лен­да­ре, пе­рей­ди­те в при­
ло­же­ние Calendar. Вы мо­же­те про­смот­реть ка­лен­дарь на весь ме­сяц
или на те­к у­щую не­де­лю. Что­бы до­ба­вить но­вое со­бы­тие, на­жми­те
на со­от­вет­ст­вую­щую да­т у в ка­лен­да­ре. Поя­вит­ся ок­но, пред­ла­гаю­
щее вам не­сколь­ко оп­ций для на­строй­ки со­бы­тия. Что­бы им­пор­ти­
ро­вать су­ще­ст­вую­щий кли­ент, про­сто за­гру­зи­те файл ICAL на свой
об­лач­ный сер­вер. Ко­гда вы щелкне­те по файлу в web-ин­тер­фей­
се OwnCloud, сер­вер рас­по­зна­ет файл и пред­ло­ж ит им­пор­ти­ро­
вать его в су­ще­ст­вую­щий ка­лен­дарь или в но­вый. Вы­бе­ри­те под­
хо­дя­щую вам оп­цию.
Им­пор­ти­ро­вав ка­лен­дарь, вы мо­же­те че­рез OwnCloud де­лить­
ся им с дру­ги­ми поль­зо­ва­те­ля­ми. На­жми­те на икон­к у Share Calen­
dar [По­де­лить­ся ка ­лен­д а­рем] для со­от­вет­с т­вую­ще­го ка ­лен­д а­ря.
Рас­кро­ет­ся ме­ню, ко­то­рое по­зво­лит вам вы­брать поль­зо­ва­те­лей
или груп­пу поль­зо­ва­те­лей, с ко­то­ры­ми вы хо­ти­те по­де­лить­ся. Бо­
лее то­го, как и с ад­рес­ной кни­гой, OwnCloud мо­жет так­же син­хро­ни­
зи­ро­вать ва­ши ка­лен­да­ри с на­столь­ным ПК и лю­бы­ми мо­биль­ны­ми
при­ло­же­ния­ми, спо­соб­ны­ми про­чи­тать эту ин­фор­ма­цию со ссы­
лок CalDAV. Что­бы по­лу­чить ссыл­к у CalDAV для ва­ше­го ка ­лен­да­
ря, на­жми­те на кноп­к у с шестеренками и за­тем на икон­к у Chain то­
го ка ­лен­да­ря, ко­то­рый вы хо­ти­те син­хро­ни­зи­ро­вать. Ото­бра­зит­ся
ссыл­ка, ко­то­рую вы мо­же­те пе­ре­дать кли­ен­там, что­бы они бы­ли
син­хро­ни­зи­ро­ва­ны с ка­лен­да­рем OwnCloud. С по­мо­щью OwnCloud
мож­но по­на­де­лать на­мно­го боль­ше. Сле­д уй­те по­ша­го­во­му ру­ко­
во­дству на стр. 95 (спра­ва), что­бы рас­ши­рить ус­та­нов­к у по умол­
ча­нию но­вы­ми при­ло­же­ния­ми, уве­ли­чив функ­цио­наль­ность сво­
его лич­но­го об­ла­ка. |
Уни­вер­саль­ный дос­туп
Ре­а ль­ное пре­иму­ще­ст­во ком­мер­че­­ских об­лач­ных
сер­ви­сов, та­ких как Dropbox, в том, что вы мо­жете
по­лу­чить дос­т уп к дан­ным, хра­ня­щим­ся в них,
с лю­бо­го ком­пь­ю­те­ра, под­к лю­чен­но­го к Ин­тер­не­т у.
Од­на­ко по умол­ча­нию ре­зи­дент­ная ус­та­нов­ка OwnCloud дос­т уп­на толь­ко с ком­пь­ю­те­ров и уст­ройств
внут­ри ло­каль­ной се­ти.
Но это не зна­чит, что вы не мо­же­те по­лу­чить
дос­т уп к ва­ше­му ча­ст­но­му об­ла­к у из Ин­тер­не­та.
Бо­лее хит­ро­ум­ное и до­ро­гое ре­ше­ние — по­лу­чить
ста­ти­че­­ский IP-ад­рес у сво­его ин­тер­нет-про­вай­де­
ра и за­тем про­де­лать ды­ры в бранд­мау­эре сво­его
ро­у те­ра или на­стро­ить Dynamic DNS в ро­у те­ре или
ло­каль­ном ком­пь­ю­те­ре. Впро­чем, ум­нее бу­дет
ис­поль­зо­вать сер­вис тун­не­ли­ро­ва­ния на­по­до­бие
PageKite. Сер­вис ис­поль­зу­ет мо­дель «пла­ти, сколь­
ко хо­чешь». Бу­д у­чи не­ком­мер­че­­ским поль­зо­ва­те­
лем, вы мо­же­те ис­поль­зо­вать сер­вис бес­плат­но, раз
в ме­сяц за­пол­няя фор­му и со­об­щая PageKite, как
вы ис­поль­зуе­те сер­вис. Но он бо­лее чем сто­ит сво­
их $ 3 в ме­сяц — ми­ни­маль­ной пла­ты, взи­мае­мой
с ча­ст­ных лиц.
Вна­ча­ле на­до ус­та­но­вить PageKite. За­пус­ти­те
тер­ми­нал и вве­ди­те:
$ curl -s https://pagekite.net/pk/ | sudo bash
По за­вер­ше­нии сде­лай­те свой ло­каль­ный webсер­вер пуб­лич­ным, ко­ман­дой
$ pagekite.py 80 mycloudserver.pagekite.me
Не за­будь­те за­ме­нить mycloudserver на имя сво­
его сер­ве­ра OwnCloud. Те­перь вы мо­же­те по­лу­чить
дос­т уп к ва­ше­му лич­но­му эк­зем­п­ля­ру OwnCloud,
пе­рей­д я на http://mycloudserver.pagekite.me с лю­
бо­го ком­пь­ю­те­ра в лю­бом точ­ке ми­ра. При пер­вом
за­пус­ке этой ко­ман­ды PageKite про­ве­дет вас по сво­
ему крат­ко­му про­цес­су ре­ги­ст­ра­ции и спро­сит у вас
ваш ад­рес элек ­трон­ной поч­ты.
»»Пропустили номер?Узнайте на с. 108, как получить его прямо сейчас.
94 | LXF208 Апрель 2016
www.linuxformat.ru/subscribe
OwnCloud Raspberry Pi
Ус­та­но­вим и ак­ти­ви­ру­ем при­ло­же­ния
1 Под­клю­чен­ные при­ло­же­ния
2 При­ло­же­ние Documents
Вы мо­же­те рас­ши­рить ва­шу ус­та­нов­к у OwnCloud по умол­ча­нию, до­ба­вив (или уда­
лив) ряд при­ло­же­ний. Вы­ве­ди­те вы­па­даю­щее ме­ню в верх­ней ле­вой час­ти ин­
тер­фей­са и на­жми­те на Apps [При­ло­же­ния]. По умол­ча­нию вам по­ка­ж ут спи­
сок уже под­к лю­чен­но­го к ва­шей ус­та­нов­ке. Про­смот­ри­те этот спи­сок и про­чти­те
опи­са­ния, что­бы луч­ше по­нять их. Из это­го раз­де­ла вы так­же мо­же­те от­к лю­чить
лю­бое при­ло­же­ние.
Это од­но из са­мых по­лез­ных при­ло­же­ний. Оно мо­жет быть уже вклю­че­но в ва­
шу ус­та­нов­к у, а ес­ли нет, его мож­но по­лу­чить из https://apps.owncloud.com (вме­сте
со мно­же­ст­вом дру­гих). При­ло­же­ние Documents [До­к у­мен­ты] по­зво­ля­ет вам ре­
дак­ти­ро­вать и со­вме­ст­но ра­бо­тать над до­к у­мен­та­ми в раз­ных фор­ма­тах (вклю­чая
DOC-фай­лы Word) внут­ри са­мо­го OwnCloud. За ку­ли­са­ми он ис­поль­зу­ет LibreOffice
из ва­ше­го Raspbian.
3 При­ло­же­ние Bookmarks
4 Calendar и Contacts
5 По­про­буй­те еще
6 Но­во­сти и за­ня­тость хра­ни­ли­ща
Дру­гое про­дук ­тив­ное при­ло­же­ние, ко­то­рое сто­ит вклю­чить — Bookmarks [За­к лад­
ки]. Оно по­зво­ля­ет хра­нить и управ­лять за­к лад­ка­ми в ва­шем сер­ве­ре OwnCloud.
За­к лад­ки мож­но до­бав­лять не­по­сред­ст­вен­но или им­пор­ти­руя файл за­к ла­док
из ва­ше­го web-брау­зе­ра. У не­го так­же есть за­к ла­дко­грам­ма, ко­то­рую вы мо­же­те
до­ба­вить в за­к лад­ки ва­ше­го брау­зе­ра. На ­жми­те на за­к ла­дко­грам­му, что­бы до­ба­
вить сайт в спи­сок за­к ла­док OwnCloud.
Вдо­ба­вок к при­ло­же­ни­ям, пе­ре­чис­лен­ным в раз­де­ле Apps в ва­шем OwnCloud, есть
и дру­гие, ко­то­рые вы мо­же­те ус­та­но­вить с сай­та. Про­кру­ти­те раз­дел Apps вниз и на­
жми­те на ссыл­к у More Apps... [Дру­гие при­ло­же­ния] . Она от­пра­вит вас в ма­га­зин
при­ло­же­ний OwnCloud на http://apps.owncloud.com. Вы мо­же­те ска­чать от­т у­да лю­
бое при­ло­же­ние и из­влечь его в пап­к у /var/www/owncloud/apps в Pi.
Так­же к про­дук­тив­ной ка­те­го­рии от­но­сят­ся при­ло­же­ния Calendar и Contacts.
По­сле их вклю­че­ния да­ты и под­роб­но­сти мо­г ут до­бав­лять­ся ин­т уи­тив­но. Это
по­зво­ля­ет за­гру­жать ва­ши су­ще­ст­вую­щие кон­так­ты и ка­лен­да­ри, ко­то­рые
мож­но син­хро­ни­зи­ро­вать с при­ло­же­ния­ми PIM из ва­ше­го OwnCloud (как объ­
яс­ня­лось на уро­ке). Ряд при­ло­же­ний OwnCloud так­же име­ют оп­цию вклю­че­ния
их для оп­ре­де­лен­ных поль­зо­ва­те­лей.
Два дру­гих по­лез­ных при­ло­же­ния — News и Storage Usage. Пер­вое — это про­грам­
ма для чте­ния RSS, а второе ви­зуа ­ли­зи­ру­ет объ­ем хра­не­ния ва­ше­го об­ла­ка в виде
диа­грам­мы. Ко­гда вы ска­чае­те их с сай­та и из­вле­че­те в пап­к у apps, вер­ни­тесь в раз­
дел Apps в ва­шем OwnCloud. Эти и лю­бые дру­гие ска­чан­ные при­ло­же­ния пе­ре­чис­ле­
ны в раз­де­ле Not Enabled [Не ак­тив­ны].
www.linuxformat.ru/subscribe
Апрель 2016 LXF208 | 95
Ответы
Ответы
Есть вопрос по от­кры­то­му ПО? Пишите нам по адресу answers@linuxformat.ru, и мы най­дем от­вет.
В этом месяце мы ответим
на вопросы про...
1 Ус­та­нов­ку нашего
ре­мик­са Ubuntu
2 На­ча­ло ра­бо­ты
с дистрибутивом
Tails Linux
3 Проблемы об­нов­
ле­ния с Ubuntu
LTS 14.04
4 Пе­ре­нос Grub
из MBR в за­гру­зоч­
ный раз­дел
5 Под­клю­че­ние
Android к Linux
6 Вы­бор ме­ж­ду мет­
ка­ми раз­де­лов
и UUID
1 Ус­та­нов­ка ре­мик­са Ubuntu
В
Я по­на­де­ял­ся ус­та­но­вить Ubuntu 15.10
с во­се­мью ра­бо­чи­ми сто­ла­ми, ра­ди
ин­те­ре­са. Од­на­ко сде­лать это уда­лось
толь­ко с ра­бо­чим сто­лом Unity, ко­то­рый я не­на­ви­
жу. С дис­ка LXF205‑206 я за­гру­зил Ubuntu 15.10
Desktop Remix, но во вре­мя ус­та­нов­ки по­лу­чил
сле­дую­щее со­об­ще­ние:
Installation Failed - The installer encountered an error
copying files to the hard disk:
[Errno 2] No such file or directory: ‘/target/boot/vm­
linuz-4.2.0-16-generic This is often due to a faulty
hard disk...
[Ус­та­нов­ка не­удач­на — ин­стал­ля­тор об­на­ру­жил
ошиб­к у ко­пи­ро­ва­ния на же­ст­кий диск:
Нет та­ко­го фай­ла... это бы­ва­ет, ко­гда же­ст­кий
диск не­ис­пра­вен
Я пе­ре­за­гру­зил­ся с дис­ка LXF205‑206
со стан­дарт­ным ра­бо­чим сто­лом Ubuntu 15.10,
и ус­та­нов­ка про­шла без оши­бок. Как ус­та­но­вить
дру­гой ва­ри­ант?
Ixat, С фо­ру­мов
О
Нам боль­ше не раз­ре­ша­ю т де­лать ре­
мик­с ы для ISO-об­р а ­з ов Ubuntu, ес­л и
мы не уда­
л им оттуда все ссыл­
ки
на Ubuntu, а при этом не толь­ко те­ря­ет­ся смысл уп­
раж­не­ния, но и при­хо­дит­ся ком­пи­ли­ро­вать боль­
шую часть про­грамм с са­мо­го на­ча­ла. Это вы­зва­
но из­ме­не­ния­ми в ог­ра­ни­че­ни­ях тор­го­вой мар­ки
Ubuntu и оз­на­ча­ет, что нам нуж­но вы­брать дру­гой
под ­ход и соз­д ать внеш­нюю фай­ло­вую сис­те­м у,
ко­то­рая со­дер­жит до­пол­ни­тель­ное ПО и рас­по­ло­
же­на по­верх фай­ло­вой сис­те­мы ISO-об­раза Ubun­
tu. Эта воз­мож­ность на са­мом де­ле бы­ла пред­
на­зна­че­на для то­го, что­бы Вы мог­ли со­х ра­нять
фай­лы и на­строй­ки на флеш­к у и при этом поль­
зо­вать­ся жи­вой сре­дой; но мы смог­ли при­ме­нить
ее и в на­ших це ­лях. Од­на­ко ус ­т а­нов­щ ик Ubuntu
не подозрева­ет об этой до­пол­ни­тель­ной фай­ло­вой
сис­те­ме — и мы не рассчитывали, что он дол­жен
о ней знать — по­это­му он тер­пит не­уда­чу при ус­та­
нов­ке с это­го дис­ка, и фай­лы ISO-об­раза, ко­то­рые
96 | LXF208 Апрель 2016
он ожи­д ал най­ти, во внеш­ней фай­ло­вой сис­те­ме
фак ­ти­че­­ски бы­ли за­ме­не­ны.
Дру ­г и­ми сло­в а­ми, ре­микс для ра­бо­че­го сто­
ла ну ­жен толь­ко за­тем, что­бы по­про­бо­вать раз­
лич­ные ра­бо­чие сто­лы в жи­вом ок­ру­же­нии. Что­бы
вос­поль­зо­вать­ся ими со сво­его же­с т­ко­го дис­к а,
следует ус­та­но­вить стан­д арт­ную сис­те­му Ubuntu
и за­тем ус­та­но­вить один из ра­бо­чих сто­лов с по­мо­
щью ме­нед­же­ра ус­та­нов­ки ПО. Это фак­ти­че­­ски от­
вет на жа­ло­бу о ре­мик­сах, ко­то­рые мы час­то по­лу­
ча­ем: то, что они ус­та­нав­ли­ва­ют всё, хо­ти­те Вы то­го
или нет, хо­тя это не та при­чи­на, по ко­то­рой мы вы­
пол­ни­ли из­ме­не­ние.
Мы рас­ска­за ­ли об этой про­бле­ме на до­маш­ней
стра­ни­це DVD, на стра­ни­це Ubuntu DVD и на стра­
ни­ц ах DVD жур­н а ­л а. Мы час­т о вклю­ч а­е м важ­
ную ин­ф ор­м а­ц ию в HTML-до­к у­м ен­т а­ц ию дис­к а
или в стра­ни­цы дис­ка в жур­на­ле, или и ту­да, и ту­
да — луч­ш е оз­н а­ко­м ить­с я с ней пе­р ед лю­б ой
ус­та­нов­кой.
2 Tails Linux
В
У ме­ня на но­у т­бу­ке Windows 7 и есть
не­сколь­ко во­про­сов о Tails Linux. Обя­за­
тель­но ли по­сле за­груз­ки по­след­ней вер­
сии ISO-об­раза Tails Linux про­ве­рять его с по­мо­
щью Gpg4win? На­до ли ус­та­нав­ли­вать Tails Linux
с по­мо­щью Tails Installer? Мож­но ли, на­при