Cобираем звуковую станцию на базе Linux и MPD
В основе референсного аудиопроигрывателя Bryston BDP–2 стоимостью, на минуточку, 156 тысяч рублей лежит стандартная материнка с процессором Intel Atom и звуковой картой ESI [email protected] PCI. В качестве ОС для этого плеера разработчики выбрали Debian Linux. При наличии времени и желания можно собрать аналогичный цифровой источник из имеющегося железа, а с установкой нужного ПО и тонкой настройкой параметров системы тебе поможет эта статья.
Надо сказать, при создании BDP–2 инженеры из Bryston не сильно утруждали себя работой над программной частью: в поставке идет стоковый Debian 6.0.1, ядро версии 2.6.32 без поддержки realtime, предлагаются практически нетронутые настройки MPD, какие-либо оптимизации вовсе отсутствуют. Дело в том, что стандартные ядра имеют довольно большую задержку звука (11–20 мс), и это не позволяет работать со звуком профессионально. В realtime-системе эта задержка составляет ~1 мс, что уже считается отличным результатом. Поэтому первым делом мы скомпилируем ядро и звуковой сервер MPD с RT-патчами, чтобы максимально снизить задержки, затем настроим высокоточный таймер событий, выставим максимальные приоритеты для устройств и процессов, связанных с передачей аудио, а в завершение проведем тюнинг системных параметров. В общем, сделаем то, что должны были сделать hi-end’овцы.
Будем рассматривать на примере древнего компа (материнка VIA Epia-MS, проц VIA C3 800 МГц, 512 Мб ОЗУ, звуковая карта ESI [email protected] PCI) и дистрибутива Debian 7.1, установленного по минимуму, то есть без графики и лишних сервисов. У тебя может быть другая звуковуха, только мы бы рекомендовали именно PCI/PCI-E, поскольку внешние карты USB могут некорректно работать с некоторыми материнскими платами.
Подопытный комп, аналоговая часть ESI [email protected] демонтирована
Для тестов использовался цифро-аналоговый преобразователь Nagra DAC
RT-патч предназначен для поддержки реального времени в ядре, причем не «мягкого», а «жесткого». Разница заключается в том, что системы «мягкого» реального времени допускают небольшое превышение желаемого времени выполнения, в системах же «жесткого» реального времени подобное превышение недопустимо. Патч накладывается на ванильное ядро, поэтому ставим все необходимое для его компиляции и качаем ядро и патч: # apt-get install kernel-package libncurses5-dev fakeroot build-essential pkg-config wget gcc autoconf git # mkdir kernel && cd $_ # wget bit.ly/149djQn # wget bit.ly/14rDBvQ Распаковываем и патчим: # tar xjf linux-3.8.13.tar.bz2 && cd linux-3.8.13 # bzcat ../patch-3.8.13-rt11.patch.bz2 | patch -p1 Затем в menuconfig/nconfig включаем опцию Processor type and features -> Preemption Model -> Fully Preemptible Kernel (RT) и собираем ядро: # CONCURENCY_LEVEL=3 fakeroot make-kpkg —initrd —append-to-version=-rt kernel_image kernel_headers Вместо CONCURENCY_LEVEL=3 можешь поставить свое число, в зависимости от количества ядер процессора + 1. Устанавливаем и перезагружаемся: # dpkg -i ../*.deb # reboot
Выбор нужной опции ядра Для начала — что это такое? Зачем нужен еще один плеер, если их и так предостаточно? Собственно, MPD — демон с клиент-серверной архитектурой, что открывает довольно любопытные возможности, а именно:
- в отличие от множества других графических плееров, он прекрасно обходится без иксов, так что, если они упали или вообще отсутствуют на компе, музыка все равно будет играть;
- это клиент-серверное приложение — при желании им можно управлять из графического интерфейса;
- MPD мало того что клиент-серверный — он еще и сетевой! Следовательно, его можно поставить на безголовый сервер и спокойно рулить им хоть с нетбука, хоть с другого компа, хоть со смартфона или планшета (iOS/Android).
Сам же MPD поддерживает множество возможностей, в том числе поддержку FLAC, ALAC, WAV, MP3, OGG, потокового воспроизведения аудио, gapless playback (воспроизведение без пауз)… всего не перечислишь. Исходники берем с официального cайта (по указанным ниже причинам необходима версия 0.17.1), затем ставим необходимые зависимости для сборки:
# wget bit.ly/14wxPtj # tar xjvf mpd-0.17.1.tar.bz2 # cd mpd-0.17.1 # apt-get build-dep mpd # apt-get install libcdio-paranoia-dev После этого можно, в принципе, заходить в каталог и набирать команду autogen, а затем make… но мы торопиться не будем, поскольку в противном случае MPD будет скомпилирован с опциями по умолчанию, что нам может не подойти. Кроме того, придется применять RT-патч к самому MPD, который предназначен для улучшения качества звука путем управления приоритетами потоков (зря, что ли, RT-ядро компилировали?). Поскольку сам плеер развивается быстрее, чем патч, версия MPD должна быть именно 0.17.1. Скачиваем патч и накладываем его: # wget bit.ly/10kbsHY -O mpd-rtopt.diff.gz # gunzip -c mpd-rtopt.diff.gz | patch -p1 Теперь уже можно выбирать опции сборки. Конечно, это дело вкуса, но мы собирали со следующими опциями: # ./autogen.sh CFLAGS=»-O2 -mtune=`uname -m`» —enable-alsa —enable-rtopt —enable-id3 —enable-sqlite —enable-audiofile —enable-flac —enable-cdio-paranoia —enable-lsr —disable-oss —disable-pulse —disable-jack —disable-ipv6 —disable-inotify # make && make install Рассмотрим некоторые опции подробнее:
- —enable-alsa — включает поддержку ALSA;
- —enable-rtopt — собственно, то, ради чего мы патчили;
- —enable-id3 — поддержка тегов ID3;
- —enable-sqlite — поддержка SQLite для внутренней БД MPD;
- —enable-audiofile — поддержка WAV-файлов;
- —enable-flac — поддержка FLAC — формата сжатия без потери качества;
- —enable-cdio-paranoia — аудиоCD;
- —enable-lsr — поддержка изменения частоты дискретизации на лету;
- —disable-oss — поскольку мы будем использовать ALSA, OSS нам не понадобится;
- —disable-pulse, —disable-jack — обертки вокруг ALSA нам тоже ни к чему;
- —disable-ipv6 — если нет IPv6, зачем его включать?
- —disable-inotify — для меньшего потребления ресурсов.
А теперь, после успешной сборки и установки, давай перейдем к настройке аудиосистемы.
Приведем наиболее важные части файла mpd.conf: # Каталог с музыкой. Вложенные подкаталоги также поддерживаются music_directory «/var/mpd/music» # Плей-листы playlist_directory «/var/mpd/plists» # База данных с тегами db_file «/var/mpd/mpd_db» # Еще одна база данных — на этот раз для пользовательской информации о музыке sticker_file «/var/mpd/sticker_db» log_file «/var/log/mpd.log» # Настройка для ESI [email protected], подключенной по SPDIF (Toslink либо RCA) к внешнему ЦАП # Конфигурация аудиовывода — почти единственный многострочный параметр в `mpd.conf`. Возможно использование одновременно нескольких аудиовыводов audio_output { # Указываем, что будем использовать ALSA type «alsa» # Название конфигурации name «ESI Julia SPDIF» # Используем цифровой выход (для получения информации о звуковой карте смотри вывод команды aplay -L) device «iec958:CARD=Juli,DEV=0» # Чтобы получить bit-perfect playback, запрещаем звуковой подсистеме автоматически выравнивать громкость, изменять частоту дискретизации, изменять количество каналов и выполнять преобразование разрядности аудиопотока replay_gain_handler «none» auto_resample «no» auto_channels «no» auto_format «no» # Поддержка Memory-mapping I/O use_mmap «yes» # Выставляем максимальный приоритет priority «FIFO:99» } … # Размер внутреннего аудиобуфера в килобайтах audio_buffer_size «2048» # Заполнение аудиобуфера перед проигрыванием музыки в процентах buffer_before_play «50%» … # Конфигурация realtime-опций MPD — второй многострочный параметр в данном файле realtime_option { memlock «yes» # Поддержка locks in-memory stack_reserve «1024» # Резервируем стек (в килобайтах) heap_reserve «10240» # и кучу (также в килобайтах) main_priority «OTHER:0» player_priority «FIFO:50» decoder_priority «FIFO:47» update_priority «OTHER:0» # Приоритеты потоков } По желанию (и если MPD был скомпилирован с соответствующей опцией) можно, например, включить потоковое аудио по HTTP — для последнего надо добавить следующие строчки в конфиг: audio_output { type «httpd» name «My HTTP Stream» # Используемый кодек, может быть vorbis или lame encoder «vorbis» port «8000» # quality «5.0» # Параметры quality и bitrate взаимоисключающие bitrate «128» # Формат аудиопотока (44,1 кГц, 16 бит, стерео) format «44100:16:2» }
Конфигурационный файл mpd.conf
Также необходимо произвести тюнинг системы. Первым делом создаем файл /etc/security/limits.d/mpd со следующим содержанием:
@audio — rtprio 99 @audio — memlock unlimited @audio — nice -19 Этот файл практически выключает ограничения приоритетов для демона. Далее необходимо изменить настройку HPET (который является генератором тактовой частоты и на многих довольно старых материнских платах по умолчанию не используется). Для этого правим строку в файле /etc/default/grub — заодно добавим опцию threadirqs, которая имеет отношение к RT-ядру и которая понадобится в дальнейшем: GRUB_CMDLINE_LINUX_DEFAULT=»quiet clocksource=hpet threadirqs» HPET необходим для более точной (по времени) подачи сигнала на ЦАП. Казалось бы, разница в несколько микро- (а то и нано-) секунд при подаче потока битов настолько незначительна, что на нее не стоит обращать внимания… ан нет. Один бит задержался, два пришли раньше времени — и в высококлассной стереосистеме разница может быть ощутима человеческим ухом. С использованием HPET вероятность подобного сценария уменьшается. Давай также настроим некоторые параметры ядра через sysctl. Открой в своем любимом редакторе /etc/sysctl.conf и добавь в него следующие строчки: # Настройки виртуальной памяти, в частности стратегия распределения памяти и коэффициент подкачки vm.overcommit_memory = 2 vm.overcommit_ratio = 50 vm.swappiness = 10 # Настройка максимально допустимой частоты HPET dev.hpet.max-user-freq = 2048 В дополнение к последнему параметру необходимо изменить подобный же для rtc — но, поскольку он находится в sysfs, придется прописывать его в rc.local: echo 2048 > /sys/class/rtc/rtc0/max_user_freq Поставим пакет rtirq-init. Он содержит скрипт, увеличивающий приоритеты IRQ-потоков, связанных со звуковым оборудованием: # apt-get install rtirq-init После установки, возможно, потребуется отредактировать файл /etc/default/rtirq, а именно список IRQ-потоков, которые будут иметь повышенный приоритет: RTIRQ_NAME_LIST=»rtc snd usb i8042″ Ну и напоследок — если у тебя PCI’ная звуковая карта, то надо увеличить до максимума таймер времени ожидания (latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для нее и, соответственно, немного увеличить его для других устройств PCI. Но сперва надо узнать PCI ID карты: # lspci | grep -i audio В моем случае ID был 01:09.0, следовательно, для увеличения latency timer набираем команды # setpci -v -d *:* latency_timer=b0 # setpci -v -s 01:09.0 latency_timer=ff Эти команды ты тоже можешь прописать в rc.local.
Интерфейс QMPDClient
Sonata — еще один клиент для MPD
RT-патч превращает ядро Linux в полностью преемптивное (то есть с вытесняющей многозадачностью)
В общем-то, теперь можно запускать демон MPD. Перед запуском убедись, что музыка в соответствующем каталоге присутствует и создан каталог для плей-листов. Если же она разбросана по разным каталогам, то можно указывать на них симлинками. Команда для ручного запуска выглядит так: # mpd /etc/mpd.conf А как же проверить работоспособность? Дело в том, что даже самый простой консольный клиент в состав исходников MPD не входит, как и библиотека libmpdclient, поэтому можно либо скомпилировать их самостоятельно, либо установить соответствующий пакет. Поскольку клиент не требует наложения патчей, то особого смысла заморачиваться с компиляцией нет, а значит, ставим пакет: # apt-get install mpc Перед запуском рекомендуем посмотреть настройки микшера — в Debian 7.1 звук по умолчанию отключен. Обновляем базу данных MPD, добавляем всю музыку в плей-лист и запускаем воспроизведение: # mpc update —wait # mpc listall | mpc add # mpc play Если все нормально, то должна зазвучать музычка. В случае же потокового воспроизведения тебе надо еще проверить работу этого потока. Указываем адрес и порт, прописанный в конфиге. Для некоторых плееров необходимо также указывать файл mpd.ogg — например 192.168.1.5:8000/mpd.ogg. Ну а теперь необходимо подчистить систему. В общем-то, ты можешь это сделать и сам, но есть некоторые тонкости — к примеру, пакеты, установленные с помощью apt-get build-dep, удалить не совсем просто. Итак, сначала мы отмечаем нужные для MPD пакеты, чтобы они не удалились следующей командой, а уже затем удаляем пакеты, относящиеся к сборке: # apt-mark manual libcdio-paranoia1 libavahi-glib1 libcurl3-gnutls libshout3 # apt-get autoremove kernel-package libncurses5-dev fakeroot build-essential pkg-config wget gcc autoconf git # apt-get remove libcdio-paranoia-dev Затем выполняем следующую трехэтажную команду: # apt-get remove $(apt-cache showsrc «mpd» | grep Build-Depends | perl -p -e ‘s/(?:[\[(].+?[\])]|Build-Depends:|,|\|)//g’) Команда эта выглядит пугающе, но делает вполне безобидную вещь — удаляет все пакеты, которые нужны были для сборки MPD.
Удаляем также MTA — зачем нам почта на аудиостанции?
# apt-get remove exim В общем-то, остальные бесполезные для аудиостанции пакеты ты можешь удалить и сам. Но если ты не уверен, понадобится ли тебе, к примеру, cron или syslog, — лучше их просто отключить из init-скриптов.
Монтирование корневой ФС в режиме RO
Если музыка у тебя будет находиться на ином накопителе, нежели система, имеет смысл при загрузке монтировать корневую ФС в режиме read only. Наиболее простой способ сделать это — прописать соответствующую опцию в /etc/fstab. Однако это потребует размещения всех изменяемых частей на других разделах либо удаления программ, которые эти данные генерируют, что иногда не совсем просто. Еще один способ заключается в использовании unionfs/aufs/overlayfs — эти файловые системы позволяют объединять в одной точке монтирования и RO, и RW — последняя может размещаться в оперативной памяти. Данная техника используется при создании Live-дистрибутивов. Подробнее о том, как это делать, можно узнать на страничке.
Есть ли для MPD другие клиенты? Конечно, есть. Более того, наличие множества клиентов — одна из особенностей этого демона. Некоторые из них опишем чуть подробнее.
- Ncmpc — довольно простой клиент для MPD, основанный на ncurses. К сожалению, не очень удобно работать с плей-листами.
- А вот еще один клиент на ncurses — ncmpcpp в этом смысле куда более приятен. В нем имеется поиск по тегам.
- Клиент для xfce, xfmpc, отличается присущей этой среде минималистичностью и отсутствием лишних функций.
- Еще один графический клиент, Sonata, позволяет, кроме всего прочего, загружать из интернета обложки альбомов и тексты песен и обладает большим количеством настроек. К примеру, он поддерживает работу с несколькими серверами MPD. Правда, вызывается окно настроек не слишком интуитивно.
- QMPDClient, как понятно из названия, является Qt-клиентом и на вид очень мощный плеер — но не особо впечатлил. Тем не менее отметим такую возможность, как автоматическое удаление уже сыгранной композиции из плей-листа.
Отдельно стоит упомянуть клиенты для коммуникаторов. Для Android в Google Play нашлись MPDroid и DroidMPD. Какой из них выбрать — дело вкуса; интерфейс второго показался несколько аляповатым. Для iPhone/iPod пользуется популярностью MPoD, для iPad есть специализированная версия — MPaD.
Интерфейс MPDRoid довольно симпатичен
MPoD: клиент для iPhone
Существует множество дистрибутивов для работы со звуком — от минималистичных, для работы исключительно в качестве аудиоцентра без монитора с управлением по сети, до навороченных, имеющих кучу секвенсоров и VST-плагинов. Все их, конечно, описать невозможно, но небольшой обзор отдельных не помешает. И начнем мы с Voyage MPD.
Voyage MPD — встраиваемый дистрибутив на базе Debian 7.1. Последняя на момент написания статьи версия содержит MPD 0.18, ядро 3.8.13 с последними драйверами ALSA, веб-интерфейс на основе Meshlium, заявлена также поддержка DoP (DSD over PCM, упаковка DSD в фреймы PCM). Имеется Voyage MPD Starter Kit, позволяющий собрать аудиостанцию. Стоимость набора 149 долларов, но звуковая карта в комплект не входит.
64 Studio — дистрибутив (опять же на Debian), позиционируется как заточенный под создание медиаконтента. Имеет следующие особенности: low-latency ядро, секвенсоры, такие как Rosegarden, Ardour — мультитрековый звуковой редактор… Однако дистрибутив не обновлялся с 2008 года.
Ubuntu Studio — как говорится, без комментариев. По сути, тот же Ubuntu с XFCE, заточенный под создание мультимедийного контента. Ничем особенным не выделяется — разве только low-latency ядром да возможностью поставить на обычный Ubuntu метапакет и превратить в данный дистрибутив.
AV Linux, несмотря на название, не антивирус под Linux, а еще один дистрибутив для работы с аудио и видео. Из особенностей можно назвать то, что он включает в себя не только свободное ПО, но и демоверсии проприетарных продуктов, таких как LinuxDSP и Mixbus.
- Множество информации о музыке в Linux
- Подробное описание Bryston BDP–2 от дистрибьютора
Linux вполне может использоваться как в качестве ПО для аудиоцентров, так и в качестве ПО для профессиональной работы со звуком. И если первый аспект еще более-менее обозрим (хотя и тут есть свои тонкости, как можно было увидеть из вышесказанного), то профессиональная работа со звуком настолько разнообразна, что и в рамках книги ее не охватишь. Статья, однако, такую цель не преследовала — мы хотели всего лишь показать, что на основе древнего компа можно собрать систему, качество звучания которой не будет уступать оборудованию стоимостью в тысячи долларов.
Оптимальные настройки BIOS
Приведем некоторые настройки BIOS, которые рекомендуется подправить для улучшения производительности:
- Если имеется HyperThreading, лучше его отключить.
- Video BIOS shadow тоже лучше отключить.
- Для устройств PCI выключи опцию PCI Delay Transaction, поскольку она увеличивает задержки.
- Отключи все ненужные встроенные устройства.
Впервые опубликовано в журнале «Хакер» от 08/2013.
Публикация на Issuu.com
Подпишись на «Хакер»
- Бумажный вариант
- «Хакер» на iOS/iPad
- «Хакер» на Android
Аудиофил на Linux. С чего начать.
В последнее время многих любителей Hi-Fi аудио заинтересовала операционная система Linux. В первую очередь из-за появившихся отзывов в сети о хорошем звучании аудиокомпонентов. Не последнюю роль в этом ажиотаже сыграли и фирмы выпускающие Hi-End устройства и устанавливающие внутрь своих аппаратов в качественно операционной системы именно Linux. К слову сказать, как очень давний пользователь этой операционной системы (еще с 90х), и обладающий определенными навыками в ее использовании могу сказать, что настройка Linux в этих аудиофильских устройствах довольно далека от идеальной, но и это не мешает демонстрировать высокое качество.
Прежде всего отвечу на незаданный вопрос — действительно в ОС Linux очень хорошая звуковая система архитектуры Alsa, которая превосходит то, что есть в популярной Windows и не знаю даже почему, но битперфектное звучание через alsa слышимо лучше битперфектного ASIO в Windows — бред правда? Но факт.
Настоящий Unix
Итак, alsa — главный аудиограаль операционной системы Linux для аудиофила. По просьбам посетителей сайта hifi-audio.ru я расскажу как установить операционную систему, но прежде я хотел бы ввести вас в курс дела, рассказать, что это вообще за операционная система, какие возможности она содержит и стоит ли овчинка выделки. Когда говорят, что Linux — это же Unix (Юникс), то предпологают, что этим все сказано. Но что это значит? Во первых, Linux — это юниксподобная операционная система, а не Юникс, так как Юникс жестко стандартизирован, а Linux разрабатывает большая компания различных компаний и энтузиастов, не боясь внедрять новые идеи и подходы. Вобщем, Linux — это очень близкий, но вольный перессказ Unix. Но все же если вы работали в настоящем Unix, например Solaris, то все вам будет знакомо на 100%, все используемые вами наработки скорее всего будут работать.
Какой-то древний Solaris — настоящий Unix.
Так что такое Unix — для начала это многозадачная и многопользовательская операционная система. Да, вы скажите, знаем-знаем, Windows тоже многозадачная и на ней можно завести много пользователей. Но, в итоге за машиной Windows всегда сидит лишь один человек, а Юникс или юниксподобная операционная система, типа Linux позволяет работать на одной машине множеству пользователей одновременно используя ресурсы этой машины. Да, пользователи будут пользоваться удаленными терминалами для доступа, но таких пользователей может быть очень много. Конечно существуют специальные серверные версии Windows, которые могут похоже на Linux. Но любой Linux может быть многопользовательским в любой момент времени.
Это замечательно, но в принципе в концепции многопользовательности для меня, как домашнего пользователя, нет ничего завораживающего. Мне всегда нравилась другая Юникс-концепция, которая в Linux в последние годы к сожалению начинает сдавать. Эта концепция звучит так: всё файлы. Всё — это файлы. Я понимаю, что вы не понимаете, что я сказал, но это свойство юникса удивительно. Это вероятно одно из волшебств этой операционной системы. Всё — это файлы и еще одна функция называемая «конвейеры» поражает. Начнем с первой возможности — ВСЁ файлы. Представьте, если все — это файлы, то и делать с ними можно все, что и с обычными файлами.
Например, если звуковая карта — это файл (лежит в папке /dev под названием dsp), то проиграть музыку мы сможем просто скопировав звуковой файл в файл dsp. Просто набрав в командной строке cp Yello.wav /dev/dsp
или читая звуковой файл как текст и направляя поток в файл dsp вот так:
cat Yello.wav /dev/dsp
Вы правильно поняли, мне вообще не понадобилось НИКАКИХ программ, чтобы проиграть музыку. А как записать звук? Микрофон это файл, вам просто нужно читать из файла микрофон и копировать в звуковую карту. Представьте два файла — образно перетащили один на другой — и вот уже пишите с микрофона. Без программ. Правда звучит как то невероятно? А где тут индустрия с дорогими программами для записи или воспроизведения? Вот когда я начинал интересоваться Linux все так и было, а эти фокусы со звуком отлично работали на прежней звуковой архитектуре OSS. Сейчас может быть это тоже будет работать, но придется попрыгать с враперами oss (alsa-oss), которые заставят alsa притворится OSS. Я, честно, не пробовал, но думаю можно вникнуть в современные изменения. Да, раньше в Linux была звуковая архитектура OSS. Она очень натурально звучала, по сравнению с тем, что было на тот момент в Linux. Но OSS обладала очень большой задержкой (latency). Пришедшая на смену alsa — еще более совершенное звуковое ядро, к тому же с очень низким latency, заявляется 4 мс. И для этого не нужно никаких ASIO, как в Windows.
Другой простой пример, когда Linux удивляет — виртуальный сдром. Возможно вы пользовались такими программами на Windows, они позволяют подключить образ диска, как будто это диск вставленный в сд/двд-ром. В Linux для этого не понадобится никаких программ, кроме штатных утилит в составе любого Линукс. В Linux любой диск подключается командой mount к дереву директорий. Если вы решили подключить образ диска, как будто это настоящий сд-ром, вы просто даете команду подключить его к определенной папке. Например так mount file.iso /home/Alex/cd/ -t iso9660 -o loop
И в домашней папке внутри папки cd появится содержимое образа диска. Возможно вас напрягло, что я рассказываю о каких то командах из строки терминала. Но поверьте в Linux есть множество тяжелых графических программ с красивым интерфейсом делающие то же самое тыканием мышки.
Но сейчас речь о возможностях — вы можете сделать все вообще без программ, на голом Линуксе. А знаете есть такие программы снимающие образ сд-диска? Вспомните концепцию юникс — всё — файлы. Так как снять образ диска? Нужно содержимое файла сдром скопировать в новый файл. Например так: cp /dev/cdrom /home/Alex/my.iso
/dev — это папка где хранятся файлы устройств, сдрома, жесткого диска, принтера… Да, и с принтером можно вытворять что хочется, и с дисплеем монитора.
Или можно снять образ так: cat /dev/cdrom > /home/Alex/my.iso
Суть от этого не меняется. В первом варианте мы копировали содержимое файла cdrom в файл my.iso, а во втором случае читали его направляя поток (значок >) в файл my.iso А знаете есть такие программы, типа Acronis копирующие образы жестких дисков или разделы? Представьте, что в Linux они не нужны. Раз все файлы, то и наш диск — это просто файл. Если он у вас один в системе, то называется sda, если их два, то второй будет называться sdb и тд. А раз диск разбит на разделы, то каждый раздел будет называться sda1, sda2 и тд. Если я хочу снять образ всего диска, я просто скопирую файл sda, а если только какой то раздел, например второй, то скопирую sda2. cp /dev/sda2 /home/Alex/hdd1.backup Разверунть я его так же смогу легко скопировав назад в /dev/sdb2. Но вы скажите, конечно это круто, но размер такого образа будет = размеру самого диска. Но что нам на лету мешает сжимать файлы? Помните я упоминал некие конвейеры — особую возможность Linux. Конвейры это возможность перенаправлять выводы с одной программы на вход в другую. Например мы читаем побайтово содержимое диска и перенаправляем в новосозданный файл-образ. А теперь усложним цепочку и когда мы считываем содержимое раздела диска sdb2 командой cat направим поток в архиватор, например zip. cat /dev/sdb2 |zip > obraz.zip
Читаем из файла sdb2 и значком | (конвейер) перенаправляем в другую программу, а именно в архиватор. Из архиватора следом отправляем в файл obraz.zip. Т.е. одной строчкой мы сделали то, что делает целая программа Acronis.
Разумеется можно было выбрать любой архиватор, а вместо cat использовать другие программы, например dd (побитовое копирование) и тд. Вобщем то через dd так же копируется и загрузочный сектор жесткого диска, всегда можно сделать его резервную копию. Но фишка в том, что такие конвейеры могут быть любой длины. Можно составить длинющий конвейер, который после клонирования образа диска, отправит вам сообщение на электронную почту о результатах записи, например, и выключит компьютер или запустит клонирование другого диска. Просто поверьте, конвейеры в юниксах — это очень круто. В Windows от них есть только зародыш в виде значка >, когда вы можете распечатать например содержимое директории в файл типа dir > spisok.txt Но это и все, что может Windows. А в Kинукс мы можем сделать так: dir |cat| sort|zip>spisok.zip
Прочитать директорию командой dir, ее вывод направить на вход команды cat, которая начнет ее читать и далее мы перенаправим считываемое на вход команды sort, которая отсортирует по алфавиту названия директорий, после чего мы отправим отсортированный список в архиватор на выходе из которого получим сжатый файл. Если вдуматься, то в этом конвейере команда cat лишняя, ведь можно сразу считывать содержимое директории и сортировать, типа так: dir|sort|zip>spisok.zip
Думаю смысл ясен, как и открывающиеся при этом просто гигантские возможности. Так как команды могут быть не такими простыми, а отсылать электронную почту, печатать на принтере, записывать диски, включать будильник и тд и тп. Приведу пример из недавнего реального случая, мне нужно было определить, кто из пользователей посещал ресурс на определенном адресе. Для этого нужно было просто проанализировать логи. Но логов 4 Гигабайта, и это не 1 файл, а сотни вложенных директорий внутри которых десятки тысяч файлов, внутри которых где то есть нужная мне строчка. Я соорудил такой конвейер grep -Hr «текст_что_я_ искал» /etc/www/lightsquid/report >/home/pk/res.txt И через несколько минут получил результат в текстовом файле res.txt.
То, что в других ОС делается бесконечными программными костылями, где чтобы что то сделать нужно искать всегда какую то программу, то в юниксах вы можете сделать что угодно голыми руками, ведь все файлы. У вас нет текстового редактора — тоже беда. Вместо редактора можно использовать команду cat, которая посимвольно просматривает файлы. Напишем в терминале cat и перенаправим вывод в новый файл, например file.txt вот так: cat > file.txt и вот уже у нас окно простенького редактора — пишите в нем текст. Когда решите завершить написание, нажмите Ctrl+D и все написанное запишется в файл file.txt. Конечно же в любом Линуксе полно графических и текстовых редакторов, но главное возможность. Я уже не говорю, что Линукс и программы в нее входящие бесплатны, а их коды доступны для просмотра и внесения изменений. В Linux есть даже такие чудеса, что вы можете создать ПУСТОЙ файл нужного размера, ну на 1 гигабайт например. А вот так например dd if=/dev/zero of=/home/my.hdd bs=1k count=1000000 Копировать из (if) магического устройства zero, которое всегда дает вечные нули в (of) файл my.hdd. А могли бы использовать старую команду cat, но… Нужно же отсчитать именно гигабайт, а с dd это легко, у нее есть опция — размер и количество. считаем по 1кб bs=1k 1 миллион раз count=1000000 И у нас файл на 1 гб. Затем отформатировать его как жесткий диск в любую файловую систему — о, да Linux использует и поддерживает очень много файловых систем, включая fat и ntfs, но свои у него намного лучше. mkfs.ntfs my.hdd
Осталось подмонтировать файл, как жесткий диск или образ сдрома, что мы делали раньше и mount -o loop /home/Alex/hdd
Теперь ваш диск-файл имеет вход через папку hdd и вы можете хранить в нем свои файлы. Можете подключать этот тайный «диск» когда вздумается и так же отключать. Если вам это стало интересно, то фокусы с Линуксом наподобие можно прочитать на сайте журнала Компьютерра перейдя по этой ссылке. Ну ладно с частью, что касается консоли вроде в общих чертах покончили. Перейдем к графической части, окошкам. В Windows есть окошки, в MacOS есть окошки. А в Linux тоже есть окошки, только их там более 100 разновидностей. Называются они оконные менеджеры и имеют разный вид и функциональность, есть совсем экзотические тайловые, которые используются без мышки, а есть красивые графические Enlightenment, AfterStep, FluxBox, FVWM и тд.
Enlightenment
Оконными менеджерами можно как пользоваться отдельно, например взять менеджер metacity + файловый менеджер Nautilus + какой нибудь красивый бар понизу экрана — и окружение готово. Но есть и уже подобранные окружения со своей экосистемой. Таких суперразвитых окружений не так уж много, но и не мало, самые популярные — KDE, Gnome, XFCE, LXDE, Mate. Какой из них выбрать — дело сугубо ваших предпочтений, можно попробовать и решить, что для вас лучше. Визуально самые роскошные — это KDE4 и Gnome3.
KDE4 идет по своему пути, он обладает простой, но очень красивой и юзабельной внешностью схожей со средой на Макинтошах. KDE очень быстрый и красивый. Сложность на первом этапе представляется в том, что этот стол имеет свою парадигму использования,смысл которой я за несколько лет так и не понял и поэтому в первые 10-20 минут просто перестраиваю стол в настройках под классику, после чего все становится по управлению совсем роскошно.
KDE4
В КДЕ есть совершенно уникальные фичи, сродни взрыву мозга от конвейеров в консоли, возможность управлять любым приложением, привязав к нему пульт дистанционного управления и тд и тп, короче все очень круто. Да и сам стол плазма — это некая концепция, на которую слоями помещаются плазмоиды (подобная фича появилась позже в Windows 7 под видом виджетов).
Короче система очень красивая,продуманная и интересная. Она не хуже рабочего стола от Эйпл, и точно лучше любого рабочего стола Windows. А уж компизовские эффекты в виде вращающегося куба, когда вы меняете рабочий стол (да, в Линуксе всегда доступно несколько рабочих столов много много лет) или сгорающего или «резинового» окошка — это просто стоит посмотреть, хотябы на ютубе.
Второе известное окружение — Gnome3.
Это тоже свое видение — вы взмахиваете мышкой в левый угол окна и вам открывается сервисный экран где вы видите разные приложения и документы, но вернувшись на рабочий стол они вам не мешают, так как исчезают, как если бы вы заглянули в папку лежащую на реальном столе, а потом отодвинули ее.
Gnome3
Разработчики Gnome3 не без странностей, они всеми силами пытаются упростить пользование рабочим столом до идиотизма, додумались удалить кнопку — свернуть окно. Поэтому после установки Gnome3 первым делом приходится в настройках включать эту кнопку на место. Так же разработчики учудили выпилить из файлового менеджера функцию — создать файл.
Да, вы можете его создать в программе, в которой собираетесь работать, но вообще как говориться «не без причуд». Гном красивый рабочий стол со своим шармом.
На третье место можно поставить XFCE4.
XFCE4 со сторонним доком.
Это окружение схоже Windows XP, но является его скорее облезлой по виду копией. Главное достоинство — хорошо работает на слабых компьютерах и прост в понимании и настройке в виду доисторичности парадигмы такого рабочего стола аля Windows95-XP.
XFCE4 как есть
Я очень долго пользовался именно этим рабочим окружением, но сейчас перешел на одной из машин на KDE4, на других так и стоит XFCE.
Еще один претендент — LXDE.
LXDE
Это очень легкий по ресурсам рабочий стол, но кое каких инструментов в нем не хватает. Когда машина совсем древняя — LXDE — хороший выбор. Внешне он напоминает XFCE, но попримитивнее. Так же одним из лидеров является окружение Unity. Вы видите сбоку значки быстрого запуска, и некую свою идею рабочего стола, но в целом, хоть Gnome, хоть XFCE или LXDE — они посути похожие и не заставят вас долго с собой разбираться. Вы просто выбираете понравившийся рабочий стол и на нем работает. Это не навсегда. Вы можете поставить много таких столов и хоть каждый день менять их под настроение. Но я еще не рассказал наверное и 1% о Linux. Ладно, выдыхайте, я и не буду, ведь это краткий экскурс про Линукс вообще, пара слов для понимания. Так вот, когда вы решите установить юникс-подобную операционную систему, а в данном случае мы говорим о Linux (и это далеко не единственная юниксовая система), то окажется что выбор Линуксов огромен. Вообще Linux — это ядро — некая подпрограмма, которая умеет управлять оборудованием вашего компьютера и содержитв себе все драйвера всего на свете. Да, после установки Linux не нужно устанавливать драйверов, они уже есть в ядре системы. Конечно бывают совсем конченные случаи, обычно с какими то зловредными древними сканерами или принтерами, но если драйверы к ним вообще существуют, то это решаемо. Я заставил на своем Линуксе работать древний сканер Мустек, который уже не мог работать на Windows 2000 из за отсутствия драйверов! Так вот, Linux — это ядро. А вот подобрать к этому ядру набор минимально необходимых программ, оконный менеджер, файловый менеджер, все это настроить, выбрать красивые обои — этим занимаются разные команды и компании и свои сборки называют дистрибутивами. Существует очень много дистрибутивов, наверное сотни, но очень известных не больше 50. Хахаха. Ну реально конечно большинством используются такие бесплатные дистрибутивы: Ubuntu OpenSuse Fedora Debian Arch Manjaro Mageia Gentoo и тд. Конечно любой мог бы клепать свои дистрибутивы, но рынку важно не наличие новых обоев,а поддержка. Дистрибутивы в первую очередь ценны тем, что почти каждый дистрибутив имеет свои серверы, на которых лежат подходящие для конкретной сборки разнообразные программы на все случаи жизни. Вы установили Линукс — захотели какую то программу, зашли в программу-специальный менеджер репозитория дистрибутива и выбрали нужную из >20.000 программ — тык мышкой и программа уже установлена. Поэтому каждый дистрибутив характеризуется и таким параметром — сколько программ или пакетов в репозитории. Чем их больше, тем лучше. Чем они новее, тем может лучше, может нет, об этом позже. Сейчас кратко о названных выше дистрибутивах:
Ubuntu — самый популярный дистрибутив, разработчики самые разгильдяи, пихают в дистрибутив иногда неработающие нормально программы, могут заваливать пользователя сообщениями о каких то мифических ошибках,пока руками не отключишь.
Свою коллекцию программ (репозиторий) базируют на репозитории другого дистрибутива Debian. В целом Ubuntu положительный дистрибутив, пользоваться можно. Какой рабочий стол предлагается по умолчанию ясно из названия — Ubuntu — Unity, Xubutu — XFCE4, Kubuntu — KDE, Lubuntu — LXDE. На домашней машине у меня стоит Xubuntu. Пакеты в репозитории имеют расширение deb (от слова debian) и устанавливаются программой apt-get.
В принципе Ubuntu — это такой потерявший железобетонную надежность Debian, который чуть прилизали визуально, и напихали свежих программ, надежность и работоспособность которых никто толком не проверял, так как разработчики были заняты выбором обоев для рабочего стола. На сегодня в мире примерно 20 миллионов пользователей Ubuntu, поэтому найти ответ на вопрос специфический для дистрибутива Ubuntu попроще. Но в целом, несмотря на такую клоунаду, это же Линукс, поэтому стабильность крайне высокая, сильно превосходящая Windows. У меня на одном из серверов стоит обычная десктопная Ubuntu 8 и работает как прокси-сервер, т.е. я ее поставил в 2008 году, а сейчас 2016 — я 8 лет вообще не подхожу к этому компьютеру, он работает как часы вообще без обслуживания уже 8 лет. И это простая редакция для домашнего пользователя, а не настоящий серверный дистрибутив, типа того же Debian.
Ubuntu c Gnome Classic окружением И в Ubuntu настроена самая лучшая в Линукс система отображения шрифтов. Там есть такая заморочка, что на сглаживание шрифтов (субпиксельное), чтобы они были красивыми, имеет патент Microsoft и запрещает без мзды что то сглаживать. Но Ubuntu как то выкрутились и у них шрифты смотрятся лучше, чем в Windows, а вот другие дистрибутивы борятся с этой проблемой с попеременным успехом.
OpenSuse — шикарный дистрибутив, на мой взгляд намного серьезнее, чем Ubuntu.
OpenSuse
Работает так же шустрее. Изначально назывался Suse и был только платным. Позже появилась его версия OpenSuse, но корпоративное качество продукта осталось. Базируется по умолчанию на окружении KDE, но есть выбор и из других при установке. В комплекте специальная сусевская программа позволяющая мышкой настроить все, что угодно в системе от файрвола (который в Линукс промышленного уровня), до принтера или сети. Есть удобная система установки программ одним кликом прямо с сайта дистрибутива.
На одном из файл-серверов OpenSuse в софтовом рейде 5 со столом KDE стоит уже 6 лет — работает как монолит, идеально. за это время вышло из строя в массиве 3 двухтерабайтных диска, их замена была проста, система и не икнула. Скорость чтения на простых дисках 7200 оборотов в сервере 320 мб/сек. И это еще я использую не самую быструю файловую систему ext3.
На других файловых системах было бы еще быстрее. Доступ к компьютеру есть помимо прямого, когда человек стоит перед монитором и компьютером, еще через любой браузер, через ssh, через удаленный рабочий стол. Отображение шрифтов можно подстроить до очень хорошего отображения, но не уровня Ubuntu. Сейчас я пишу из OpenSuse, меня такое отображение устраивает, но я настраивал. В репозитории программы в пакетах rpm. Установка их программой zypper.
Fedora — бесплатный вариант корпоративной версии Red Hat, заслуженно уважаемого дистрибутива.
У Fedora база программ в репозиториях несколько меньше, но это же Linux, всегда можно собрать программу из исходных кодов, есть даже графические программки для этого, если совсем не понимаете, тык и готово. По умолчанию Fedora использует окружение Gnome.
Программы распростраются, как пакеты с расширением rpm и устанавливаются программой rpm. По шрифтам — если это зарубежная Fedora, то ситуация так себе. Если же это российская сборка Russian Fedora, то плевать на американский патент, сглаживание уже включено и показывает отлично.
Debian — один из самых уважаемых, стабильных как скала дистрибутивов. Огромный репозиторий под 30000 программ. Каждая программа проверена на стабильность и соответствие своим функциям.
Из за этого последующий дистрибутив выходит очень долго — 3-5 лет. Поэтому программы в этом дистрибутиве сильно устаревшие. Но все работают, никаких глюков или танцев с бубном, или то, что то что написано в документации не работает, такого с дебианом не будет. Я настраивал NAT для интернета в комьютерной сети из десятка машин на Debian — было легко, как в сказке. Все что должно было работать, как описано, так и работало.
Шрифты — дерьмо, программы старье, но быстрый и стабильный как скала. В репозитариях программы в пакетах deb, программа apt-get.
Gentoo — это особый тип дистрибутива представляющий из себя исходные коды и инструкцию, как это собрать.
Да, там сразу есть срезы, которые вы заливаете себе на диск и загружаетесь с них, после чего компилируете свою личную систему make world. В чем суть. Для любой программы вы сами выбираете, что включить в ее функционал, поддержку каких устройств,протоколов, библиотек и тд. Вы даже устанавливаете ключи оптимизации. Поэтому система на gentoo может быть настолько быстрой, что вам и не снилось. Кроме того — это ролинг система. Если минуту назад изменились исходники программы на сервере разработчика, система скачает их и скомпилирует вам самую свежую из свежайших программ. То, что в других дистрибутивах из новинок появится в других дистрибутивах через полгода-год, в gentoo уже есть сейчас.
Плюсы — вы знаете свою систему как облупленную, вы же сами ее и собрали. Минусы — всетаки компиляция программ и установка готовой программы — это разные затраты по времени. Если вы не готовы подождать пока программа скомпилируется, то будете недовольны. Отличная система, но для гиков само собой. Программа сборки называется emerge. Я пользовался Gentoo.
Arch — это особый тип дистрибутива. Если вам в gentoo понравилось все, кроме долгой компиляции, то выбирайте Arch.
Это по сути аналог Gentoo, но программы уже скомпилированы. Т.е. имеете свежайшие программы уже сегодня, но не имеете возможности выбора начинки программ при компиляции. Я года полтора пользовался Arch Linux. Это очень хорошая система, но ее недостаток в ее достоинствах. Это роллинг релиз, то есть нет новой версии дистрибутива, он обновляется ежедневно, и он всегда самый новый. Но если вы были в заморозке 2-3 месяца и решили обновится, то система может сломаться.
Это роллинг, он должен обновлятся всегда, без перерывов. Иначе прежде чем обновится, придется читать все изменения, что произошли за то время,пока вы не обновляли систему. Установка пакетов программой pacman. Расширешие у программ pkg. Может быть сложен в установке.
Manjaro — это все тот же Arch, но с более удобным установщиком. Но все равно потребует серьезную настройку.
Вы будете руками прописывать в файлах настройку локалей и тд, короче обычный пользователь скорее всего спасует.
Mageia — потомок дистрибутива Mandrake, которым я когда то пользовался.
Все вроде красиво, удобно, но мне кажется пациент скорее мертв, чем жив. Пакеты rpm.
Дистрибутивов конечно намного больше — ZorinOS, Elementary, CentOS, PCLinuxOS, Meppis, Slackware, Sabayon, Vector и тд. Но пакеты обычно либо rpm, либо deb, либо в gentoo-подобных свои.
Но в чем смысл, неужели нельзя было сделать одно единое хранилище пакетов? Разработчики дистрибутивов часто спорят, как они видят дистрибутив и его взаимодействие с пользователем и поэтому каждый пилит свой велосипед, тут не договоришься. Одни хотят использовать только стабильный программный код, а другие новейший. И как собрать программу на новой или старой библиотеке? Поэтому дистрибутивов много и репозиториев много. Но смотрите и Suse использует rpm и Fedora, может взять rpm от Fedora и установить в Suse? Можно,но скорее всего не заработает, так как в rmp указаны какие еще нужны пакеты для работы программы и ссылаются они именно на репозиторий своего дистрибутива. А в разных репозиториях и пакеты зовутся по разному. И тут главное отличие и свойство Linux-программ от Windows-программ. В Windows программа так скомпилирована, что уже в своем теле содержит нужную библиотеку, например проигрыватель содержит библиотеку расшифровки аудио в формате flac. А другой проигрыватель так же в своем теле содержит туже библиотеку и тд. От этого программы в Windows жирные и неповортливые, и конечно не быстрые. В Linux есть только одна допустим библиотека, а в программах лишь ссылка на нее. Программы от этого легкие. Но если мы запустим эту программу, то она обратится к этой библиотеке на жестком диске. А другая программа так же в то же время может к ней обращаться, в Linux библиотеки общие. И одна библиотека может одновременно работать с сонмом разных программ. И вот когда вы устанавливаете программу из пакета rpm например или deb, он вам сообщает, что для работы в систему нужно установить еще такие то и такие библиотеки и сам их скачивает из интернет и устанавливает. Да, Linux очень зависима к интернету, она все программы берет из интернет, поэтому если у вас нет доступа к интернет, то вы не получите всех возможностей Linux.
Linux-у лучше, когда есть интернет
Я чувствую, что в этом предисловии пора закругляться и расскажу напоследок о файловых системах в Linux. Для Linux было создано много файловых великолепных систем. То, что используется в Windows вызывает недоумение — ntfs, не говоря о fat, переодически засыпается ошибками и требует проверки, она сильно фрагментируется и просто ломается. В Linux файловые системы серверного уровня, некоторые очень быстрые, используют сложнейшие математические модели, балансные деревья (ReiserFS), или сродни базам данных (btrfs). Я расскажу о самых популярных: ext3 — система уже устарела и ей на смену пришла боле быстрая ext4. Но на многих компьютерах я использую ext3 из за ее чудовищной прочности. На дисках с ней фактически нет фрагментации, и работает она довольно быстро. Это журналируемая и очень надежная файловая система. Пользовался ей.
ext4 — пришла на смену ext3. Система очень быстрая и надежная, но я по опыту считаю, что ext3 имеет более высокую надежность. Из сотни краштестов, я смог все же завалить ext4, в то время как ext3 было все это до лампочки. Пользуюсь ей на домашнем ПК.
xfs — серверная файловая система, пришла с комерческих серверов. Надежная, очень быстро копирует гигантские по размеру файлы, но медленно маленькие. Пользовался ей.
ReiserFS — очень быстрая файловая система, надежность на среднем уровне. Раньше пользовался только ей. Но так как разработчик этой ФС сидит в тюрьме, то популярность системы планомерно снижается.
btrfs — файловая система разработанная google. Хорошая, быстрая, но я считаю, что еще не готовая к использованию, хотя сама гугль хранит данные поисковиков именно на этой ФС. Но у меня с btrfs возникали несколько раз очень неприятные моменты. Если проследить, и заполнить диск до отказа, то огребете проблем. Хотя может это уже исправили, я пользовался этой файловой системой года 2 назад последний раз. Есть и другие FS — ZFS, JFS (IBM), Tux3 и тд — скучно точно не будет в выборе лучшей. Так вот когда вы устанавливаете Linux на свой компьютер вам надо выбрать файловую систему. Я буду банален посоветовав ext4 или ext3.
В целом по Linux — вам нужно выбрать дистрибутив своей мечты, выбрать какую файловую систему хотите использовать, какое графическое окружени и… использовать. Программ для Linux очень много, и все они в основном бесплатны (те что в составе дистрибутива и репозитариях все бесплатны). Но если вы привыкли к комерческим платным программам из мира Windows — вы их здесь скорее всего не найдете. Но есть много бесплатных аналогов. В принципе в Linux полно известных вам бесплатных программ — интернет браузеры Firefox, Google Chrome, Opera — все это есть. Skype есть.
А вот писалку дисков Nero вы в репозиториях не найдете, но найдете ее платную версию на сайте производителя. Но зачем, ведь в Linux полно бесплатных писалок дисков — K3B, Brasero и тд.
K3B — писалка дисков. Все на русском, не волнуйтесь.
Аналогично в Linux нет Photoshop, но есть Gimp. Нет Word, но есть OpenOffice.
Да и что значит нет? Можно поставить прослойку совместимости с Windows — wine, и тогда заработают в Linux и Photoshop и Office, правда смотря какие версии, и даже многие игры. Музыкальных проигрывателей тоже валом в том числе и лучший в мире аудиофильский mpd существует именно на Linux.
Внешний клиент к mpd
Видеопроигрывателей в Линук тем более полно. А так же есть программы 3Д-моделирования (Blender и др), верстки (Scribus), векторной графики (Inkscape). Да, наверняка они не такого крутого уровня, как признанные колоссы за сотни долларов, но мне хватает их с ушами. Почему я пользуюсь именно Linux? В Linux нет вирусов. Да, вы в Windows можете поставить антивирус, который будет жрать ресурсы вашей машины, боятся заходить на подозрительные сайты и применять прочие методы предосторожности.
Но в Linux этого не надо, я могу ходить на любые сайты, качать что хочу — вирусы в Linux не работают. Так же система Линукс от времени не засирается и не теряет скорость работы, так что здесь не нужно никаких программ оптимизирующих и улучшающих скорость. Установили Линукс и забыли, чтобывают какие то проблемы с компьютером. Пока родственники пользовались Windows они названивали мне каждую неделю, то вирус, но ВИндоус просто сдох, то заглючил. После установки Linux проблем не стало совсем. Ну и очень весомый аргумент — это надежность, так как одно из главных предназначений Linux — серверное применение. А это значит колоссальная стабильность в работе.
Удаленное управление Linux-сервером
И да, Линукс загружается из ждущего режима (выключенный ПК) ровно за 3 секунды и сразу готов к работе, Windows так точно не умеет. А какие минусы? Изредко железо некоторых ПК не поддерживается Линукс, поэтому перед установкой дистрибутива его можно сперва загрузить в живом режиме и посмотреть все ли заработало, если да, то смело устанавливаем. Ну что же, чуть чуть я рассказал о Линукс, и если ваша голова не взорвалась и вы готовы к дальнейшим действиям, то пора переходить к фазе установки Линукс и его превращения в крутейший в мире аудиофильский музыкальный сервер, о чем я расскажу, если вы не разбежитесь с криком «О, нет, только не это!».
А, чтобы немного расслабиться предлагаю посмотреть ролик снятый с экрана моего Linux c помощью вот такой программки
RecordMyDesktop
Приятного просмотра, на видео OpenSuse 42.1 с KDE4.
Обсудить публикацию можно на нашем форуме — заходим, будет интересно.
В этой статье даны рекомендации по выбору ОС для построения А/В плеера на базе компьютера.
Если расположить с точки зрения получения лучшего качества звука существующие ОС в порядке от худшей к лучшей, то список будет выглядеть так: Windows, OS X, GNU/Linux .
Даже если оптимизировать процессы и службы в Windows, то она все равно будет проигрывать по качеству звучания OS X. Да, можно попытаться использовать серверную версию Windows, создать в оперативной памяти рамдиск для размещения там музыкального контента, назначить плееру приоритет реального времени и жестко распределить процессы по ядрам процессора. Но есть ряд «НО». Первое — не все это смогут сделать. Второе — даже это не даст существенного преимущества перед OS X.
Для большинства пользователей, не имеющих глубоких познаний в компьютерной сфере, хорошим выбором будет покупка готового компьютера Mac Mini на котором уже будет установлена OS X. Тем более что на рынке б/у компьютеров можно найти недорогой экземпляр.
Если же вы являетесь более или менее опытным пользователем ПК, то стоит попробовать поставить какую-нибудь ОС из семейства GNU/Linux. Я бы порекомендовал начать с ОС Lubuntu, т.к. ее графический интерфейс ближе всего похож на такой в ОС Windows XP. Пользователям, привыкшим работать в ОС Windows, будет легче освоиться в новой для них ОС. Но основной ее плюс заключается не в знакомом графическом интерфейсе, а в ее легковесности. Эта ОС использует довольно легкое окружение рабочего стола – LXDE. В ней предустановленно небольшое количество программ. В фоне работает мало служб. Из-за этого процессор крайне мало загружен, а ОС в оперативной памяти занимает около 200МБ. А теперь ради интереса посмотрите в диспетчере задач нагрузку на ресурсы компьютера в вашей ОС. Очевидно, что меньшая нагрузка на ресурсы железа компьютера идет звуку только на пользу. И ведь никто не мешает после того, как вы немного освоитесь в этой ОС удалить программы и отключить некоторые службы. Это, несомненно, даст прирост в качестве звука. Еще эта ОС примечательна тем, что не использует тяжеловесную систему вывода звука, как Pulse Audio. Вывод звука идет напрямую через ядро ОС при использовании системы вывода звука ALSA. Но и это еще не все. Вы можете заменить универсальное (generic) десктопное ядро ОС на ядро с поддержкой реального времени (мягкого реального времени). Для этого достаточно открыть терминал и написать там команду sudo apt-get install linux-lowlatency после выполнения которой, просто перезапустить компьютер. Тем самым вы получите компьютер уже сильно превосходящий по качеству вывода звука Mac Mini с его OS X.
Наверное у многих есть опасения насчет процесса установки программ в ОС GNU/Linux, а также ассортимент имеющихся программ. Ставить программы в Lubuntu даже легче, чем в Windows. Найти информацию о том, как это делается можно найти на сайтах выбранного вами дистрибутива и на соответствующих форумах.
Из программ плееров я бы посоветовал поставить jRiver Media Center и KODI. Думаю это лучшие программы-мультимедийные плееры для этой ОС. Но никто вам не мешает поставить и использовать MPD плеер с какой-нибудь графической оболочкой. Или вообще управлять им через сеть с вашего планшета или телефона. Тут выбор за вами. Но помните, что все программы звучат по-разному!
Все вышеперечисленные ОС являются десктопными. Они были изначально разработаны для выполнения широкого круга задач на любом железе компьютера. Такая универсальность, конечно, не идет звуку на пользу. Если же вы хотите «выжать» максимум из железа компьютера, то вам необходимо использовать специализированные ОС, которые изначально разрабатывались под задачи связанные с высококачественным выводом звука.
Наиболее простая, но и универсальная (универсальность — плохо), это ОС Ubuntu Studio. Я бы не рекомендовал ее использовать. Она скорее разрабатывалась для людей профессионально занимающихся созданием музыки, а не ее прослушиванием.
Я бы скорее рекомендовал попробовать ОС Audiophile Linux. Эта ОС создавалась энтузиастом как раз для высококачественного воспроизведения звука. Он применил довольно много решений по оптимизации ОС под задачи высококачественного вывода звука. Эта ОС использует еще более легковесное окружение рабочего стола, чем Lubuntu. Соответственно еще меньше расходует ресурсов компьютера. Плюс она уже содержит ряд установленных плееров и сопутствующих программ, как например риппер CD дисков. Эта ОС по качеству звучания опережает все рассмотренные ранее ОС.
Другим представителем ОС из семейства GNU/Linux изначально разрабатываемых для вывода звука является проект еще одного энтузиаста — TinyMPD. Эта ОС не имеет привычного графического интерфейса. Все управление плеером осуществляется с помощью планшета или смартфона. При загрузке компьютера ОС полностью размещается в оперативной памяти, занимая при этом какие-то мегабайты. Автор этой ОС также провел довольно большую работу по оптимизации ОС. Но эта ОС, на мой взгляд, больше подходит уже более опытным пользователям ПК знакомым с ОС GNU/Linux, т.к. работа с ней требует определенных знаний работы в консоли.
Какая из этих двух ОС лучше я не скажу, т.к. их сравнение между собой некорректно. Слишком они разные. Одна имеет графический интерфейс и разные предустановленные программы плееров, а другая нет. В последней есть только плеер на основе MPD и вы с этим больше ничего не поделаете.
Но даже эти ОС, в какой-то степени, являются универсальными, так как они способны работать на разном компьютерном железе. Еще больших результатов можно добиться только при изначальной постройке ОС под определенное компьютерное железо. Такой подход позволяет хорошо оптимизировать ОС. По такому пути, кстати, идет компания Apple. Вы видели Хакинтош на материнской плате с процессором от AMD?
ОС GNU/Linux состоят из ядра Linux и набора программ GNU. За счет комбинирования программ и ядер получается то многообразие ОС GNU/Linux. Например, на базе ОС Debian компания Canonical разработала свою собственную ОС Ubuntu взяв за основу которую, китайские товарищи сделали очень красивую ОС Linux Deepin.
Рассмотрим это подробнее. ОС GNU/Linux обычно состоит из бесплатных программ с открытым исходным кодом. Код программ можно изменять под себя, получая на выходе уже программы, обладающие заложенными в них во время изменения кода дополнительными функциями. Самих программ существует множество. Например, неотъемлемая часть ОС — процесс System V init, который может быть реализован программой Upstart или программой Systemd. Поменяли окружение рабочего стола с KDE на Gnome и получили ОС с совершенно другим по внешнему виду рабочим столом и набором программ. Существуют даже ОС изначально предполагающие их самостоятельную сборку под себя. Это Arch Linux и Gentoo Linux. Чтобы наглядно увидеть, про что я говорю, вы можете посмотреть многочасовые видео по пошаговым сборкам разных вариантов ОС на базе Arch Linux и Gentoo Linux.
Понимая это, и имея опыт работы в сфере аудио, а также определенные знания ОС GNU/Linux, мы решили собрать свою собственную ОС под заранее выбранное оптимальное компьютерное железо.
Разработанная нами ОС основывается на Ubuntu Server. После запуска установленной ОС Ubuntu Server имеется черный экран консоли с приглашением залогинится и начать работу. Отсутствую какие-либо графические программы. Более того, нет даже программы, способной хоть что-то отображать на экране кроме текста и псевдографики. Нет и звуковой системы. Есть лишь возможность настройки проводного выхода в Интернет. За такой минимализм нами и была выбрана эта ОС за основу, т.к. она позволяла начать сборку требуемой ОС с чистого листа. Второй причиной, почему была выбрана именно эта ОС, было наличие большого числа программ в репозиториях общих для всех Debian-подобных ОС. Также сказался больший опыт работы в Debian-подобных ОС, чем, например, в Arch Linux.
Из исходных кодов с kernel.org нами было собрано ядро с поддержкой жесткого реального времени. Из ядра была убрана поддержка большого числа периферии не связанной как-то с выводом звука. Была отключена поддержка процессоров и других устройств фирм AMD, Power PC, IBM, Apple… Код ядра стал поддерживать только десктопные процессоры фирмы Intel, тогда как изначально по умолчанию в ядре использовался универсальный generic код. Были отключены функции динамического управления частотой процессора и режимами динамического управления питанием различных устройств. Были выбраны оптимальные настройки работы оперативной памяти и планировщиков. Отключена поддержка большого числа не нужных файловых систем. Полностью отключена поддержка сети и внешних USB накопителей. Всего не перечислить, да и не всем это будет понятно. Скажу, что эта работа заняла около года и продолжается до сих пор…
Каждое изменение в коде ядра прослушивалось в разных системах разными людьми. Так нам удалось, на сколько это было возможно, не предвзято оценить произведенные изменения с точки зрения получения лучшего качества звука. Ядро получилось не универсальным, с точки зрения поддержки различных платформ и устройств, но дающем возможность процессам ОС и железу компьютера исключительно качественно воспроизводить мультимедийный контент.
Так как работа по оптимизации только кода ядра ОС была проделана колоссальная, то вряд ли мы где-нибудь опубликуем или скажем в приватной беседе все произведенные нами изменения кода штатного универсального ядра.
Но не только ядром с поддержкой жесткого реального времени оптимизированного под определенное оборудование примечательна наша ОС.
«Лишние» ядра процессоров были программно отключены так, что если процессор изначально был 4-х ядерный, то ОС видит лишь два его ядра. Минимизация источников ВЧ шума всегда идет на пользу звуку. Поэтому изначально лучше использовать 2-х ядерные процессоры, что мы и делаем.
Процессы ОС и процессы плеера были жестко разделены по разным ядрам процессора. Целое ядро процессора было изолировано от выполнения процессов ОС. Таким образом, процессы ОС не мешают выполнению процессов плеера. Это связано с выделением и распределением кванта процессорного времени. Такое разделение позволило существенно повысить качество звучания.
При помощи скриптов процессам ОС задаются низкие nice, rt и другие типы приоритетов. А процессам плеера, напротив, высокие приоритеты. Плеер работает с приоритетами для планировщиков соответствующих работе в реальном времени.
Для подключения внешнего аудио ЦАП используется наш контроллер USB-AD. Этот контроллер использует шину PCI Express для связи с материнской платой, а затем с процессором. Но эту же шину используют и другие устройства компьютера. При помощи специального скрипта всем устройствам, работающим с шиной PCI Express, назначается низкий приоритет. Таким образом, им «дозволяется» меньшее время монополизировать шину PCI Express. А для адреса на шине, по которому находится контроллер платы USB-AD, задается наоборот высокий приоритет. Получается, что плате USB-AD «дозволено» полностью монополизировать шину PCI Express, что минимизирует всевозможные задержки.
Была произведена оптимизация настроек звуковой системы ALSA с учетом передачи звука через наш контроллер USB-AD.
Были оптимизированы настройки монтирования файловых системы.
Для отображения пользовательского графического интерфейса был выбран один из самых минималистичных оконных менеджеров – Openbox. В купе с минимально требуемом для работы ОС количеством служб, это дало занятие оперативной памяти компьютера всего на 82МБ и нулевую загрузку процессора.
Конечно это не все, что было проделано при разработке ОС для получения максимального результата. Просто не хотелось бы вас «грузить» непонятными терминами и тем более давать пошаговое руководство по сборке подобной ОС. Поймите правильно.
Все эти настройки сделали нашу ОС совершенно не универсальной, но существенно превосходящей по уровню звука другие подобные ОС. Чтобы как-то ее приблизить по универсальности и удобству использования к другим ОС, мы ее разделили на два режима работы. Первый – бескомпромиссный — предназначенный только для прослушивания музыки, второй – универсальный — предназначенный для копирования с внешних носителей файлов и с возможностью выхода в Интернет. Но даже в универсальном режиме наша ОС по удобству пользования уступает десктопным версиям других традиционных ОС.
У нашей ОС нет привычного установщика, как в других ОС. Она поставляется уже установленной и настроенной при покупке у нас готового А/В плеера. Это еще и продиктовано тем, что раскрыться в полной мере наша ОС может лишь при использовании специального компьютера. Для питания компонентов компьютера мы используем линейные стабилизированные источники питания. Для тактирования критически важных с точки зрения звучания компонентов компьютера мы используем специальный мастер-генератор. По питанию в нашем компьютере стоят специальные фильтры. Как для сетевого питания, так и для питания накопителей (SATA3F SSD и SATA3F HDD). ОС установлена на малошумящую CF карту памяти, а не на HDD диск. Для подключения накопителей используются изготовленные нами SATA кабели.
Если все же попробовать установить нашу ОС в обыкновенный домашний ПК, изначально собранный под компьютерные игры, то из этого ничего хорошего не выйдет. Это будет подобно тому, как если бы вы стали ездить на спорткаре по разбитым сельским дорогам…