книги хакеры / журнал хакер / 183_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
ФОКУС |
|
|
|
|
|
|||||||||||||||
ГРУППА |
! |
|
? Влиять |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
журнала |
! |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
любимого |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.ru |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.xakep |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
в жизнивозможностьgroup |
|
|
||||||
|
|
|
|
|
|
|
|
|
участие |
|
|
|
на |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
? Не |
упускай |
|
|
|
|
|
|
|||
|
|
|
|
активное |
группы |
Хакера |
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
завтра |
- |
|
|
|
|
|
|
|
|
|||||
принимать |
|
|
|
|
|
фокус |
|
|
|
|
|
|
|
|
|
|||||
|
будет |
Хакер |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Хочешь |
|
|
участник |
|
|
|
|
|
|
|
|
|
|
|
||||||
, каким |
|
как |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
на то |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистрируйся |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
возможность |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
уникальная |
|
|
статьях |
|
|
|
|
|||
|
|
|
|
|
появится |
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
опубликованных |
|
|
|
|
|
||||||||||
|
у тебя |
|
|
|
об |
|
|
; |
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
журнала |
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
для |
|
|
|
|
|
|
|
|
|||||||
После этого свое |
мнение |
|
. |
|
|
|
|
|
|
|
|
|
||||||||
|
|
темы |
|
|
|
|
|
|
|
|
|
|
|
|||||||
• высказать |
новые на |
косяки |
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
• предложить |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
внимание |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
• обратить |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
! |
|
! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
СООБЩЕСТВА |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
НЕ |
ТОРМОЗИ |
][! |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ЧАСТЬЮ |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
СТАНЬ |
ЧАСТЬЮ |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
СТАНЬ |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
|
E |
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
||
|
F |
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
|
P |
|
|
|
|
|
NOW! |
o |
||
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|||
|
|
|
|
to |
120m |
||||
w Click |
|
||||||||
|
|
||||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
. |
|
|
|
|
|
.c |
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
df |
|
|
n |
e |
||
|
|
|
|
-xcha |
|
|
|
Unixoid
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
ХАКЕР 04 /183/ 2014 |
|
|
|
|
|
|
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
/usr/bin/tar xf /Users/username/Library/Caches/librsvg-2.32.1.tar.gz
==> ./configure --disable-dependency-tracking --prefix=/usr/local/librsvg/2.32.1 --enable- tools=yes --enable-pixbuf-loader=yes
./configure --disable-dependency-tracking --prefix=/usr/local/librsvg/2.32.1 --enable- tools=yes --enable-pixbuf-loader=yes
checking for a BSD-compatible install |
... /usr/bin/install -c |
||
checking whether build environment is sane... |
yes |
||
checking for a thread-safe mkdir -p... . |
/install-sh -c -d |
||
checking for gawk |
... no |
|
|
checking for mawk... |
no |
|
|
checking for nawk... |
no |
|
|
checking for awk... |
awk |
|
|
checking whether make sets $(MAKE) |
... |
yes |
|
|
|
|
|
yes |
||||
checking whether to disable maintainer-specific portions of Makefiles... |
||||||||||||
checking whether ln -s works... |
yes |
|
GNU |
|
|
|
|
|||||
checking for style of include used by make |
|
|
|
|
||||||||
checking for gcc... |
/usr/bin/cc |
|
yes |
|
|
|
|
|
||||
checking whether the C compiler works... |
|
a.out |
|
|
||||||||
checking for C compiler default output file name... |
|
|
|
|||||||||
checking for suffix of executables... |
|
|
no |
|
|
|
|
|
||||
checking whether we are cross compiling... |
|
|
|
|
|
|||||||
checking for suffix of object files... |
o |
|
|
|
yes |
|
|
|
||||
checking whether we are using the GNU C compiler... |
|
|
|
|||||||||
checking whether /usr/bin/cc accepts -g... |
yes |
|
none needed |
|
||||||||
checking for /usr/bin/cc option to accept ISO C89... |
|
|||||||||||
checking dependency style of /usr/bin/cc... |
none |
|
|
|
|
|||||||
checking for library containing strerror... |
none required |
|
|
|||||||||
checking for gcc... |
(cached) /usr/bin/cc |
|
|
(cached) yes |
|
|||||||
checking whether we are using the GNU C compiler... |
|
|||||||||||
checking whether /usr/bin/cc accepts -g... |
(cached) yes |
|
|
|||||||||
checking for /usr/bin/cc option to accept ISO C89... |
(cached) none needed |
|||||||||||
checking dependency style of /usr/bin/cc... |
(cached) none |
|
|
|||||||||
checking how to run the C preprocessor... |
|
/usr/bin/cc -E |
|
|
||||||||
checking for gawk... |
(cached) awk |
|
|
|
|
|
|
|
|
|||
checking build system type... |
|
x86_64-apple-darwin10.7.0 |
|
|
||||||||
checking host system type... |
|
x86_64-apple-darwin10.7.0 |
|
|
||||||||
checking for a sed that does not truncate output... |
/usr/bin/sed |
|
||||||||||
checking for grep that handles long lines and -e... |
/usr/bin/grep |
|
||||||||||
checking for egrep... |
|
/usr/bin/grep -E |
|
|
|
|
|
|
||||
checking for fgrep... |
|
/usr/bin/grep -F |
|
|
|
|
|
|
||||
checking for ld used by /usr/bin/cc... |
/usr/bin/cc |
|
|
|
||||||||
checking if the linker (/usr/bin/cc) is GNU ld... |
|
no |
/usr/bin/nm |
|
||||||||
checking for BSDor MS-compatible name lister (nm)... |
|
|||||||||||
checking the name lister (/usr/bin/nm) interface... |
BSD nm |
|
|
|||||||||
checking the maximum length of command line arguments... |
196608 |
|
||||||||||
checking whether the shell understands some XSI constructs... |
yes |
|
||||||||||
checking whether the shell understands "+="... |
yes |
-r |
|
|
||||||||
checking for /usr/bin/cc option to reload object files... |
|
|
||||||||||
checking for objdump... |
objdump |
|
|
|
|
pass_all |
|
|
||||
checking how to recognize dependent libraries... |
|
|
|
|||||||||
checking for ar... |
ar |
strip |
|
|
|
|
|
|
|
|
|
|
checking for strip... |
|
|
|
|
|
|
|
|
|
|
|
|
checking for ranlib... |
ranlib |
|
|
|
|
|
|
|
ok |
|||
checking command to parse /usr/bin/nm output from /usr/bin/cc object... |
||||||||||||
checking for dsymutil... |
dsymutil |
|
|
|
|
|
|
|
|
|||
checking for nmedit... |
nmedit |
|
|
|
|
|
|
|
|
|||
checking for lipo... |
lipo |
|
|
|
|
|
|
|
|
|
|
|
checking for otool... |
|
otool |
|
|
|
|
|
|
|
|
|
|
checking for otool64... |
no |
|
|
|
|
yes |
|
|
|
|
|
|
checking for -single_module linker flag... |
|
yes |
|
|
|
|||||||
checking for -exported_symbols_list linker flag... |
|
|
|
|
||||||||
checking for ANSI C header files... |
yes |
|
|
|
|
|
|
|
||||
checking for sys/types.h... |
|
yes |
|
|
|
|
|
|
|
|
||
checking for sys/stat.h... |
yes |
|
|
|
|
|
|
|
|
|||
checking for stdlib.h... |
yes |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
C |
|
E |
|
|
||
X |
|
|
|
|
||
- |
|
|
|
d |
|
|
F |
|
|
|
|
t |
|
D |
|
|
|
|
i |
|
|
|
|
|
r |
||
P |
|
NOW! |
o |
|
||
|
|
|
||||
|
BUY |
|
|
|||
to |
|
|
|
|
|
|
|
ХАКЕР m |
04 /183/ 2014 Жизнь в консоли |
||||
w Click |
|
|||||
w |
|
|
|
|
|
|
w |
|
|
|
|
o |
|
. |
|
|
|
.c |
|
|
p |
|
|
g |
|
|
|
df |
|
n |
e |
|
||
-xcha |
|
|
|
|
||
|
|
Жизнь |
||||
|
в консоли |
Обустраиваем минималистичное рабочее окружение
Итак, в один прекрасный момент ты понял, что окружающий мир угнетает тебя обилием ярких красок и дружественностью предоставляемых интерфейсов. Тебе захотелось чего-то брутального, монохромного и нетривиального. Поздравляем — ты вступил на путь воена красноглазия!
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m |
|
w121Click |
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
а следующее после прозрения утро ты проснулся |
|
Устанавливаем v86d (здесь и далее я буду действовать |
среди разбросанного по квартире хлама и пустых |
|
на примере Arch Linux): |
бутылок из-под «Буратино». Еще не совсем разлепив |
|
# pacman -S v86d |
веки, пошел на кухню готовить традиционную яични- |
|
|
Нцу, и тут тебя атаковал голос из головы: «Откажись от иксов». |
|
Стремительно переходим к настройке uvesafb... Для начала |
«Что за?..» — хотел было ты возразить, но дверной косяк сурово |
|
|
прервал ваш диалог. Голос подытожил: «Только консоль, только |
pikofarad |
удаляем любые параметры ядра, относящиеся к работе фрейм- |
хардкор!» |
pikobox@gmail.com |
буфера: |
Ну что ж, коли дело приняло столь серьезный оборот, ты ре- |
|
• vga=xxx принудительно загружает старый vesafb; |
шил действовать. Но с чего же начать? Спокойствие! Мы дадим |
|
• video=xxx не использует uvesafb, если последний скомпили- |
тебе несколько советов. |
|
рован в качестве модуля (как в стандартном ядре Arch Linux). |
ВВЕДЕНИЕ |
|
Затем отключаем KMS, дабы во время загрузки не пытаться |
Дабы сохранить на первых порах хоть какую-то связь с внеш- |
|
постигнуть дао красноглазия, которое явится в виде абсолютно |
ним миром, в консоли тебе понадобятся аналоги тех программ, |
|
черного экрана (помни: твоя психика еще не настолько окреп- |
к которым ты привык во времена своей беззаботной GUI-шной |
|
ла, чтобы выдержать подобные испытания). Если мы счастли- |
молодости. |
|
вые обладатели видеокарточек от Intel — добавляем в конфиг |
Будем отталкиваться от следующего типичного для боль- |
|
GRUB’а строчки i915.modeset=0. |
шинства людей списка действий: |
Просматриваем сайт |
Комментируем строку GRUB_GFXPAYLOAD_LINUX=keep |
• серфинг в браузере; |
при помощи links |
в конфиге /etc/default/grub. Пересобираем grub.cfg: |
• взаимодействие с почтой; |
|
|
• общение по джабберу/аське; |
|
|
• прослушивание аутентичных аудиокомпозиций с бокалом |
|
|
«Шато Берно» 1789 года; |
|
|
• просмотр классики кинематографа; |
|
|
• просмотр картинок/PDF/DJVU. |
|
|
Перед тем как перейти к описанию нужного для выполнения |
|
|
всех этих действий ПО, заострим свое внимание на подготовке |
|
|
видеоплацдарма. Другими словами, добавим в нашу систему |
|
|
поддержку фреймбуфера. Для осуществления задуманного |
|
|
нам необходимо будет установить и настроить uvesafb. |
|
|
Uvesafb представляет собой framebuffer-драйвер для кон- |
|
|
соли, привнесенный в ядро начиная с версии 2.6.24. От стан- |
|
|
дартного vesafb его отличает поддержка большего количества |
|
|
функций и более высокая карма, чем в системах на базе видео- |
|
|
карт NVIDIA с установленным проприетарным видеодрайвером. |
|
|
При этом требования к поддержке оборудования остались та- |
|
|
кими же, как и для vesafb. |
|
|
Особенность драйвера, о котором идет речь, в том, |
|
|
что для своей пристойной работы он требует демон виртуали- |
|
|
зации v86d, работающий в третьем кольце. Предназначение |
|
|
такого костыля — обеспечить совместимость с архитектурами, |
|
|
отличными от архитектуры x86. Понеслись! |
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
|
E |
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
||
|
F |
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
|
P |
|
|
|
|
|
NOW! |
o |
||
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|||
|
|
|
|
to |
122 m |
||||
w Click |
|
||||||||
|
|
||||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
. |
|
|
|
|
|
.c |
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
df |
|
|
n |
e |
||
|
|
|
|
-xcha |
|
|
|
Unixoid
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
ХАКЕР 04 /183/ 2014 |
|
|
|
|
|
|
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
|
|
|
|
БРАУЗЕР |
|
|
|
|
Выбор наш пал на links, да только не простой, а с поддержкой |
|
|
|
|
вывода через фреймбуфер. Чтобы заполучить это чудо приро- |
|
|
|
|
ды, необходимо сначала скачать его с AUR-репозитория. |
|
|
|
|
# wget -c https://aur.archlinux.org/packages/li/ |
|
|
|
|
links-g-directfb/links-g-directfb.tar.gz |
|
|
|
|
Разархивируем: |
|
|
|
|
# tar xzvf links-g-directfb.tar.gz |
|
|
|
|
# cd links-g-directfb |
|
|
|
|
# makepkg |
|
|
|
|
# pacman -U links-g-directfb-2.8-1-x86_64.pkg. |
|
|
|
|
tar.xz |
|
|
|
|
Пользуемся на здоровье: |
|
|
|
|
$ links -g google.ru |
|
|
|
|
|
# grub-mkconfig -o /boot/grub/grub.cfg |
|
|
ПОЧТА |
|
Налаживаем межлич- |
В роли почтового клиента будем использовать mutt, для полу- |
|||
|
|
ностные связи при |
чения почты воспользуемся getmail, для отправки — msmtp. |
|
Добавляем v86d в секцию HOOKS конфига /etc/mkinitcpio. |
помощи mcabber |
Начнем с получения почты. Устанавливаем getmail: |
||
conf: |
|
|
# pacman -S getmail |
|
|
|
|
|
HOOKS="base udev v86d ..."
Все параметры для драйвера uvesafb задаются в его конфи-
гурационном файле /usr/lib/modprobe.d/uvesafb.conf:
# This file sets the parameters for uvesafb module.
$ mkdir ~/.getmail
$ chmod 700 ~/.getmail
Создаем файл настроек ~/.getmail/getmailrc и пихаем туда следующий текст:
#The following format should be used:
#options uvesafb mode_option=<xres>x<yres> [-<bpp>][@<refresh>] scroll=<ywrap|ypan|redraw>
#
#For more details see:
#http://www.kernel.org/doc/Documentation/fb/ uvesafb.txt
#
options uvesafb mode_option=1280x800-32
scroll=ywrap
[retriever]
type = SimpleIMAPRetriever
server = imap.server.ru
port = 143
username = user@server.ru
password = password
[destination]
type = Maildir
path = ~/.mail/
[options]
delete = true
Документация по установке режимов при помощи опции |
|
message_log = ~/.getmail/getmail-log |
|
mode_option может быть найдена в Git-репозиториях твоего |
|
|
|
ядра по пути tree/Documentation/fb/modedb.txt. Чтобы обезо- |
|
|
В зависимости от настроек сервера в качестве type для сек- |
пасить настройки от перезаписи в процессе обновления пакета |
|
ции retriever можно использовать следующие фразы: |
|
v86d, скопируй эти самые настройки от греха подальше в /etc/ |
|
• |
SimplePOP3Retriever; |
modprobe.d/uvesafb.conf и затем добавь запись, указывающую |
|
• |
BrokenUIDLPOP3Retriever; |
на твои настройки, в секцию FILES конфига /etc/mkinitcpio.conf: |
Получаем электриче- |
• |
SimpleIMAPRetriever; |
|
скую почту через mutt |
• |
SimplePOP3SSLRetriever; |
FILES="/etc/modprobe.d/uvesafb.conf"
Теперь нам необходимо пересобрать образ initramfs для ядра:
# mkinitcpio -p linux
Перегружаем систему и наблюдаем за изменениями...
Список возможных разрешений может быть получен командой
$ cat /sys/bus/platform/drivers/uvesafb/
uvesafb.0/vbe_modes
Собственно, потом эти разрешения можно попробовать подставить в конфиг /etc/modprobe.d/uvesafb.conf. После того как ядрышко загрузилось, при помощи следующей команды (или использовать fbset -i) можно проверить, не обманули ли нас с разрешением:
$ cat /sys/class/graphics/fb0/virtual_size
Теперь можно и заняться непосредственно улучшением своих аскетичных условий существования в консоли.
Начнем с выбора браузера...
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
ХАКЕР m |
04 /183/ 2014 |
|||||||
|
|
|||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
Жизнь в консоли
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m |
|
|
123Click |
|
|
|
|
|
||||
w |
|
|
|
|
|
|
|
o |
|
|
|
w |
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
.c |
|
||
|
. |
|
|
|
|
|
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
•BrokenUIDLPOP3SSLRetriever;
•SimpleIMAPSSLRetriever;
•MultidropPOP3Retriever;
•MultidropPOP3SSLRetriever;
•MultidropSDPSRetriever;
•MultidropIMAPRetriever;
•MultidropIMAPSSLRetriever.
Например, если ты задался целью настроить доступ к почте |
|
|
||
на Gmail, то секция retriever будет выглядеть примерно следую- |
|
|
||
щим образом: |
|
|
|
|
[retriever] |
|
|
|
|
type = SimpleIMAPSSLRetriever |
|
|
|
|
server = imap.gmail.com |
|
|
|
|
mailboxes = ("[Gmail]/All Mail",) |
|
|
||
username = USER |
|
|
|
|
password = PASS |
|
|
|
|
Проверить настройки можно при помощи команды getmail |
|
|
||
без указания параметров. Плавно переходим к процессу от- |
|
|
||
правки почты... Устанавливаем msmtp: |
|
|
||
# pacman -S msmtp |
|
|
Прослушиваем клас- |
set spoolfile=+/ |
|
|
|
сические аудиокомпо- |
set header_cache=~/.hcache |
Создаем конфигурационный файл ~/.msmtprc (в качестве |
зиции |
set sendmail="/usr/bin/msmtp" |
||
примера идет конфиг на несколько аккаунтов) и пишем туда |
|
set from="user@server.ru" |
||
следующее: |
|
|
|
|
# Accounts will inherit settings from this section |
|
В конфиге указываем, что почта будет отправляться при по- |
||
|
мощи msmtp, папкой для почты будет ~/.mail/, а адрес отпра- |
|||
defaults |
|
|
|
вителя будет иметь вид user@server.ru. Далее нам необходимо |
auth |
on |
|
|
создать несколько папок, в которых эта самая почта будет хра- |
tls |
on |
|
|
ниться: |
tls_trust_file /usr/share/ca-certificates/mozilla/ |
|
|
|
|
Thawte_Premium_Server_CA.crt |
|
|
$ mkdir -p ~/mail/{cur,new,tmp} |
|
# A first gmail address |
|
|
|
account |
gmail |
host |
smtp.gmail.com |
port |
587 |
from |
username@gmail.com |
user |
username@gmail.com |
password |
password |
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# A second gmail address
account gmail2 : gmail
from username2@gmail.com
user username2@gmail.com
Пришло время потестить полученную систему. Качаем почту и открываем mutt:
$ getmail
$ mutt
Пред нашими очами предстанут все полученные письма. Для создания и отправки письма жмем m, после чего следуем инструкциям. Для автоматического получения писем добавим соответствующую запись в crontab:
password |
password2 |
|
$ crontab -e |
# A freemail service |
|
|
|
account |
freemail |
|
В возникшем редакторе вставляем следующую строку: |
host |
smtp.freemail.example |
|
*/10 * * * * /usr/bin/getmail |
from |
joe_smith@freemail.example |
|
|
user |
joe.smith |
|
|
password |
secret |
|
С этого момента getmail будет запускаться каждые десять |
# A provider’s service |
|
минут, конечно же, если crond включен. Для включения crond: |
|
account |
provider |
|
|
host |
smtp.provider.example |
|
# Set a default |
account |
|
account default |
: gmail |
Устанавливаем права на вновь созданный конфиг, в противном случае msmtp откажется работать:
$ chmod 600 ~/.msmtprc
Переходим к заключительной стадии настройки почты. Устанавливаем клиент mutt:
# pacman -S mutt
$ vim ./.muttrc
Создаем конфигурационный файл ~/.muttrc и пишем туда следующее:
set mbox_type=maildir
set folder=$HOME/.mail
# systemctl enable cronie.service
ДЖАББЕР
В этом вопросе нам поможет mcabber — текстовый Jabberклиент, включающий в себя такие функции, как поддержка SSL, поддержка UTF8, история переписки (конференции), автодополнение команд и возможность создания собственных команд (триггеров).
Недолго думая вбиваем в консоли:
# pacman -S mcabber
После установки cоздаем папку ~/.mcabber и копируем в нее файл /usr/share/mcabber/example/mcabberrc:
$ mkdir ~/.mcabber
$cp /usr/share/mcabber/example/mcabberrc ~/.mcabber/mcabberrc
Устанавливаем права доступа на вновь созданную папку:
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
|
E |
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
||
|
F |
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
|
P |
|
|
|
|
|
NOW! |
o |
||
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|||
|
|
|
|
to |
124 m |
||||
w Click |
|
||||||||
|
|
||||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
. |
|
|
|
|
|
.c |
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
df |
|
|
n |
e |
||
|
|
|
|
-xcha |
|
|
|
Unixoid
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
ХАКЕР 04 /183/ 2014 |
|
|
|
|
|
|
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
$ chmod 0700 ~/.mcabber
Затем переходим к редактированию конфига (он хорошо документирован, поэтому проблем в настройке возникнуть не должно). Необходимый минимум, который нужно изменить в конфигурационном файле mcabberrc:
set username = ȦȖȢȝ JID
set password = ȦȖȢȝ ȣȔȤȢȟȰ (șȥȟȜ ȡș ȧȞȔțȔȦȰ, ȕȧȘșȦ
țȔȣȤȢȬșȡ ȣȤȜ ȥȢșȘȜȡșȡȜȜ)
set server = ȦȖȢȝ ȥșȤȖșȤ
Если сервер поддерживает SSL, то мы можем воспользоваться этой прекрасной особенностью, прописав в конфиг следующие строчки:
set ssl = 1
set ssl_verify = 0
При этом сертификаты с сервера будут подгружены автоматически. Вкратце опишем интерфейс. Слева — ростер (он же список контактов). Правее — окно чата. Прямо под ним — окно системных сообщений. И в самом низу — строка ввода, в которую мы будем вводить команды и сообщения. Перемещение по ростеру происходит при помощи кнопок Page up / Page down. Enter — переход в состояние чата для текущего JID или конференции.
Чтобы увидеть команды, поддерживаемые mcabber’ом, вбиваем в строку ввода команду /help и медитируем...
АУДИО
В качестве аудиоплеера поставим moc — отличный вариант для тех, кто хочет наслаждаться музыкой из консоли, но при этом не желает заморачиваться с настройкой MPD.
# pacman -S moc
Запускаем:
$mocp
Влевой части данного плеера располагается панель для навигации по файловой системе, в правой — плей-лист, в который можно перекидывать файлы. Основные хоткеи (описание всех хоткеев можно увидеть, нажав <?>):
• a — добавить файл в плей-лист;
• A — рекурсивно добавить директорию в плей-лист;
• Enter — начать воспроизведение музыкальной композиции;
• s — остановить воспроизведение;
• n — перейти к следующей музыкальной композиции;
• b — перейти к предыдущей музыкальной композиции;
• u — передвинуть композицию в плей-листе на строчку вверх;
• j — передвинуть композицию в плей-листе на строчку вниз;
• p — пауза;
• > — увеличить громкость воспроизведения;
• < — уменьшить громкость воспроизведения;
• m — перейти в каталог музыки;
• g — поиск композиции в текущей папке или плей-листе;
• C — очистить плей-лист;
• V — сохранить плей-лист;
• q — перевести программу в фоновый режим (исполнение музыкальных композиций при этом не прекращается);
|
• Q — выйти из программы. |
|
|
Для конфигурирования плеера перекидываем дефолтный |
|
|
конфиг /usr/share/doc/moc/config.example в папку ~/.moc. Об- |
|
|
зываем его просто config. Конфигурационный файл хорошо |
|
|
прокомментирован, поэтому при желании не составит никакого |
|
|
труда разобраться, что к чему. Тем не менее пройдемся по ос- |
|
|
новным пунктам настроек: |
|
|
# ǯȧȦȰ Ȟ ȣȔȣȞș, Ȗ ȞȢȦȢȤȢȝ ȩȤȔȡȜȦȥȳ ȦȖȢȳ |
|
|
# ȠȧțȯȞȔȟȰȡȔȳ ȞȢȟȟșȞȪȜȳ. ǥȥȟȜ Ȗ ȣȟșșȤș ȡȔȚȔȦȰ m, |
|
|
# ȦȢ ȣȢȣȔȘșȬȰ ȜȠșȡȡȢ ȥȲȘȔ |
|
|
MusicDir |
= "/path/to/your/music/dir" |
|
# ǢȞȟȲȫșȡȜș ȔȖȦȢȣȢȖȦȢȤȔ ȣȤȜ țȔȣȧȥȞș ȣȟșșȤȔ |
|
Тешимся просмотром |
Repeat |
= yes |
фильма в ASCII |
# ǢȞȟȲȫșȡȜș shuffle-ȤșȚȜȠȔ |
|
|
Shuffle |
= yes |
|
# ǢȞȟȲȫșȡȜș ȔȖȦȢȣșȤșȞȟȲȫșȡȜȳ ȦȤșȞȢȖ |
|
|
AutoNext |
= yes |
|
# ǭș ȣȢȞȔțȯȖȔȦȰ ȥȞȤȯȦȯș ȨȔȝȟȯ Ȗ ȣȔȡșȟȜ ȡȔȖȜȗȔȪȜȜ |
|
|
# ȣȢ ȨȔȝȟȢȖȢȝ ȥȜȥȦșȠș |
|
|
ShowHiddenFiles = no |
|
|
# ǯȟșșȤ țȔȣȧȥȞȔșȦȥȳ Ȝț ȦȖȢșȝ ȣȔȣȞȜ ȥ ȠȧțȯȞȔȟȰȡȢȝ |
|
|
# ȞȢȟȟșȞȪȜșȝ |
|
|
StartInMusicDir = yes |
|
|
# DZȢȩȤȔȡșȡȜș ȣȟșȝ-ȟȜȥȦȔ ȣȢȥȟș ȖȯȩȢȘȔ Ȝț ȣȟșșȤȔ |
|
|
SavePlaylist |
= yes |
ВИДЕО
Для просмотра произведений кинематографа мы будем использовать всем известный MPlayer. Установка не отличается оригинальностью:
WARNING
В процессе тестирования на подпольных машинах у нас вылезла ошибочка при загрузке uvesafb:
[15.063336] uvesafb: NVIDIA Corporation, G96 Board * 07880500, Chip Rev , OEM: NVIDIA, VBE v3.0
[15.198285] uvesafb: VBIOS/hardware doesn't support DDC transfers
[15.198288] uvesafb: no monitor limits have been set, default refresh rate will be used
[15.198770] uvesafb: scrolling: redraw
[15.198775] uvesafb: request region 0x3c0-0x3e0 failed [15.199764] uvesafb: probe of uvesafb.0 failed with error -5
Исправили ее путем модификации /etc/default/grub строчки
GRUB_CMDLINE_LINUX="video=vesa:off vga=normal"
Не забываем после этого пересобирать конфиг командой
# grub-mkconfig -o /boot/grub/grub.cfg
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
ХАКЕР m |
04 /183/ 2014 |
|||||||
|
|
|||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
Жизнь в консоли
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m |
|
|
125Click |
|
|
|
|
|
||||
w |
|
|
|
|
|
|
|
o |
|
|
|
w |
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
.c |
|
||
|
. |
|
|
|
|
|
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
# pacman -S mplayer
MPlayer поддерживает различные модули вывода. Посмотреть их список можно при помощи следующей команды:
# mpl -vo help
MPlayer SVN-r36498-snapshot-4.8.2 (C) 2000-2013
MPlayer Team
206 audio & 433 video codecs
<...>
Поскольку в данный момент мы находимся в голой консоли, то нас могут заинтересовать, к примеру, fbdev/fbdev2 или же aa/caca, если мы являемся настоящими ценителями прекрасного. В простейшем случае запуск будет выглядеть следующим образом:
$ |
mplayer -vo fbdev2 video.avi |
|
|
|
|
Или так: |
|
|
|
$ |
mplayer -vo caca video.avi |
|
|
|
|
Теперь можно вальяжно развалиться на диване/стуле и на- |
|
|
|
слаждаться кинокартиной. |
|
|
||
ПРОСМОТРЩИКИ |
|
|
||
Оторвемся на минутку от выбранного на предыдущем шаге |
|
|
||
фильма и сосредоточим все свое внимание на проблеме про- |
|
|
||
смотра различных форматов изображений, а также файлов |
Просматриваем кар- |
• h — сместиться по странице влево; |
||
формата PDF и DJVU. |
тинки через fbi |
• l — сместиться по странице вправо; |
||
|
Для начала установим пакет fbida, который разом решит |
|
• k — сместиться по странице вверх; |
|
все наши проблемы с просмотром картинок и чтением DJVU- |
|
• j или пробел — сместиться по странице вниз; |
||
файлов: |
|
• <^ + d> — прыгнуть на самый низ страницы; |
||
# pacman -S fbida |
|
• Backspace — прыгнуть на самый верх страницы; |
||
|
• <[0–9] + G> — переход на страницу с заданным номером; |
|||
|
|
|
|
• <[0–9] + z> — зум в угадай-число раз; |
|
Теперь для того, чтобы почитать интересную DJVU’шку, нам |
|
• q — выйти из программы. |
|
надо будет привести в исполнение следующую команду: |
|
ОСТАЛЬНОЕ |
||
|
|
|
|
$ fbdjvu file.djvu
Чтобы увидеть все изображения (к примеру, формата JPG) в текущей папке, вбиваем в консоли:
$ fbi *.jpg
Остались PDF’ки, но мы и их сейчас одолеем. Качаем пакет fbpdf-git из AUR, распаковываем, собираем, устанавливаем:
#wget -c https://aur.archlinux.org/packages/fb/ fbpdf-git/fbpdf-git.tar.gz
Инициируем процесс разархивирования:
#tar xzvf fbpdf-git.tar.gz
#cd fbpdf-git
Если у тебя нет в наличии установленного пакета openjpeg2, то быстрей исправляй это недоразумение:
# pacman -S openjpeg2
Ну и на десерт... Консольный переводчик sdcv. Для перевода программа использует словари stardict, так что они у тебя уже должны иметься. Если это не так, то надо будет их скачать и поместить в директорию со словарями. Устанавливаем:
# pacman -S sdcv
Если ты пожелаешь сделать снимки экрана в консоли, то мы предложим тебе воспользоваться услугами fbgrab:
#pacman -S fbgrab
Ив конце концов, если тебе потребуются уместные и нужные советы, ты всегда сможешь получить их при помощи небольшого однострочника (скажем спасибо товарищу muhas), который можно оформить и в виде скрипта и запихать на него алиас в .bashrc:
/usr/bin/printf "$(echo -e curl -s http://fucking
-great-advice.ru/api/random | awk -F \" '{print
$8}' | sed 's/\ / /g')"\\n
ЗАКЛЮЧЕНИЕ
Собираем fbpdf-git:
#makepkg
#pacman -U fbpdf-git-0.r75.db5da40-1-x86_64.pkg. tar.xz
Пользуемся на здоровье:
$ fbpdf file.pdf
Сочетания для fbpdf:
•J или <^ + f> — перейти на следующую страницу;
•K или <^ + b> — перейти на предыдущую страницу;
Если ты все-таки немного утомился от столь ярой аскетичности и не можешь себе представить жизнь без иксов, то предлагаем обратить взор на тайловые оконные менеджеры, например на xmonad. Суть подобных программ состоит в стремлении помочь пользователю максимально эффективно управлять окнами без помощи мыши. Так что если ты мышефоб, но голая консоль тебе не пришлась по вкусу, то этот вариант, скорее всего, заставит трепетать твое сознание.
Ну а тем, кого все-таки захватила консоль, хотелось бы пожелать не останавливаться на этом сложном пути истинного воена красноглазия и продолжать избавляться от излишних интерфейсов, мешающих постигнуть дао. Следующий шаг — отказ от монитора, но это уже другая история...
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
t |
|
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
|
r |
|||
P |
|
|
|
|
|
NOW! |
o |
|
P |
|
|
|
|
|
NOW! |
o |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
BUY |
|
|
|
|
|
|
|
BUY |
|
|
||||||||
|
|
|
|
to |
126m |
Unixoid |
|
|
|
|
to |
|
|
|
|
|
|
||||||
w Click |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
ХАКЕР 04 /183/ 2014 |
|
|
|
|
|
|
m |
||||||||||||||
|
|
|
w Click |
|
|
|
|
|
|
|
|||||||||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
df |
|
|
n |
e |
|
|
|
|
df |
|
|
n |
e |
|
||||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
||||
|
|
|
МАТР |
ВИРТУАЛИЗАЦИИ
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
|
r |
|||||
P |
|
|
|
|
|
NOW! |
o |
|
|
P |
|
|
|
|
|
NOW! |
o |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
BUY |
|
|
|
|
|
|
|
|
|
BUY |
|
|
||||||||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
||
w Click |
|
|
|
|
|
|
m |
|
|
|
|
|
|
|
|
|
|
|
|
m |
|||||
|
|
ХАКЕР |
04 /183/ 2014 |
Матрица виртуализации |
|
127Click |
|
|
|
|
|
|
|||||||||||||
w |
|
|
|
|
|
|
|
|
o |
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
||
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
.c |
|
|
|
w |
|
|
|
|
|
|
|
.c |
|
|||
|
. |
|
|
|
|
g |
|
|
|
|
. |
|
|
|
|
g |
|
||||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
df |
|
|
n |
e |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
ИЦА |
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Роман Ярыженко |
|
|
|
|
|
|
|
|
|
|
|
rommanio@yandex.ru
Прошлое, настоящее и будущее виртуализации в *nix-системах
Виртуализация — это не только инструмент администрирования и поддержки хостинга. Все чаще она применяется и для решения обыденных задач. Но в то же время системы виртуализации становятся достаточно многогранными и сложными. Сегодня мы расскажем о четырех основных системах, каждая из которых нашла применение в какойто области.
ВВЕДЕНИЕ
Аппаратная виртуализация в настоящее время перестала быть недостижимой роскошью, доступной только на мейнфреймах, — начиная с 2006 года большинство процессоров средней ценовой категории ее поддерживает. Тем не менее помимо аппаратной поддержки должна быть поддержка программная, которая и обеспечивается гипервизорами. На данный момент существует два основных типа гипервизоров. Они так и именуются: «гипервизор типа 1» и «гипервизор типа 2».
Грань между этими двумя типами достаточно тонка и постепенно стирается. В частности, иногда выделяют третий тип — 1+, который подразумевает сервисную ОС — прослойку между гостевыми ОС и собственно гипервизором, в которой можно эти гостевые ОС запускать и останавливать. В статье будут рассмотрены гипервизоры типа 1 и 1+ — Xen и KVM.
Помимо гипервизоров, существует еще один слой виртуализации — «контейнеры», или, иначе, виртуализация на уровне ОС, хотя виртуализацией это можно назвать лишь с натяжкой. В отличие от «настоящей» виртуализации, контейнеры создают своего рода песочницу со своим пространством имен. Соответственно, накладные расходы на эмуляцию железа попросту отсутствуют. Я рассмотрю две подобные технологии —
OpenVZ и LXC.
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
|
|
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
128 m |
Unixoid |
||||
w Click |
|
|||||||||
|
|
|||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
ВЫБОРОБЛАЧНЫХХОСТИНГОВ
В Xen 4.4 появился новый режим, объединяющий аппаратную и паравиртуализацию, — то есть прослойка эмулируемого железа отсутствует как таковая, в то же время управление памятью и привилегированные инструкции выполняются в самом ядре гостевой ОС. Режим этот сейчас еще недостаточно отработан, некоторые функции не оттестированы (миграция, проброс оборудования), некоторые и вовсе отсутствуют — в частности, поддержка AMD. Так что если у тебя именно этот процессор — попробовать этот режим пока не получится.
Перейдем к практической части и установим самую последнюю версию Xen. Для этого придется компилировать как Xen, так и ядро. Далее предполагается, что все нужные инструменты и библиотеки уже стоят на компьютере. Сперва соберем Xen:
$ git clone git://xenbits.xen.org/xen.git && cd xen
$ export LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 LANGUAGE=en
$ ./configure --libdir=/usr/local/lib64 && make -j9
$sudo checkinstall --pkgname xen --pkgversion 4.5-current- amd64
$ sudo dpkg -i ./xen_4.5-current-amd64-1_amd64.deb
$ sudo update-grub
Затем нужно добавить файл local64.conf в /etc/ld.so.conf.d/ следующего содержания (после чего запустить ldconfig):
/usr/local/lib64
Описывать сборку ядра я особого смысла не вижу, скажу лишь, что для гостевого домена PVH необходимо включить опцию Processor type and features Linux guest support Support for running as a PVH guest (NEW).
Dom0 |
DomU |
DomU |
|
DomU |
Стек управ- |
Гостевая |
Гостевая |
… |
Гостевая |
ляющих |
ОС |
ОС |
|
ОС |
утилит |
|
|
|
|
Гипервизор Xen (vMem, vCPU, EventChannels, SharedMemory)
Аппаратное обеспечение (процессор, память, устройства)
Архитектура Xen
ОС Plan9, запущенная в Xen
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
ХАКЕР 04 /183/ 2014 |
|
|
|
|
|
|
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
XEN
INFO
Существуют версии VirtIO-драйверов (для удобства работы с оборудованием и динамического выделения памяти)
и для Windows.
Кроме того, в случае самосборного Xen надо добавить файловую систему xenfs в /etc/fstab — в современных дистрибутивах подобное делать, конечно, моветон, но так будет проще всего.
Перейдем к созданию гостевых виртуальных машин. Рассматривать будем стандартный сейчас стек утилит XL и сопутствующие конфиги. Файл xl.conf является глобальным файлом для dom0-хоста, и конфигурация по умолчанию, как правило, в изменении не нуждается. Поэтому перейду сразу к конфигурации гостевого домена (HVM). Первым делом нужно создать файл дискового устройства (хотя можно использовать и существующий раздел). Перейдя в каталог, где будут храниться образы, набираем:
$ dd if=/dev/zero of=disk.img bs=1k seek=4096k count=1
$ dd if=/dev/zero of=disk.img bs=1k count=1 conv=notrunc
Затем создаем конфиг /etc/xen/vm.cfg согласно документации. Запускаем и подключаемся к VNC-серверу, а в конце работы останавливаем:
$ sudo xl create /etc/xen/vm.cfg &
$ gvncviewer localhost &
$ sudo xl destroty VM
Для того чтобы попробовать режим PVH, нужно добавить в конфиг /etc/ xen/vm.cfg примерно следующие строчки:
# <...>
pvh=1
extra="console=hvc0 debug kgdboc=hvc0 nokgdbroundup
initcall_debug debug"
kernel=/boot/vmlinuz-3.14.0-rc4-current+"
ramdisk="/boot/initrd.img-3.14.0-rc4-current+"
Xen поддерживает множество интересных возможностей. Его используют многие облачные сервисы, такие как Amazon EC2, Rackspace Cloud и другие. Забегая вперед, скажу, что это самая многофункциональная система виртуализации, рассматриваемая в данной статье. Однако его функциональность порой избыточна и подходит не для всех.