пятница, 8 марта 2013 г.

Отвлечённые замечания о кастомизации и пересборке Debian-based,и не только,дистрибутивов Gnu/Linux на десктопе и в Live-режиме

       В качестве преамбулы:

http://linuxmir.ru/tag/DEX  

     Итак,прежде всего,хочу отметить,что всё высказанное здесь,является лично моим мнением,хоть и основанном на годах практики изысканий и десктопотворчества,и являет единственной целью призвать сообщество пользователей Linux к несколько нестандартному взгляду на некоторые устоявшиеся методики,подходы,практики и решения в использовании,формировании и распространении их любимых дистрибутивов.Ну,и коль скоро флагманом в деле продвижения Linux в массы являются именно представители семейства Debian GNU/Linux,с него и начнём это фривольное обозрение.

        Я не намерен распространяться здесь о достоинствах дистрибутивов на основе Debian и их настройки,а собираюсь лишь выразить собственное видение и манеру обращения с этими реализациями донесения до конечного пользователя мощнейшего потенциала и спектра возможностей ядра Linux и программ Open Source.

        Да,ну и с чем же мы,в сим процессе обращения,сталкиваемся в первую очередь?Наверное с самим образом распространения этих замечательных творений отличных комманд разработчиков самых разных дистрибутивов - ну,мы натыкаемся на упоминание,где-либо,самого факта существования таковых,далее идём на сайт энного проэкта,где нам любезно предлагают как-либо скачать дистрибутивный образ и установить его,как и описывается в пошаговых How-To,HandBook-ах,Руководствах пользователя и т.д.,и т.п.,и в результате становимся счастливыми обладателями одного из шедевров конструкторской мысли создателей избранного нами дистрибутива.Обычное дело,не так ли?..А что же нас ожидает далее?О,к сожалению,практически всегда,нас будут ожидать какие-нибудь проблемы с настройками того или иного эллемента системы,поскольку предугадать все возможные современные конфигурации оборудования у конечного пользователя очень трудно,если вообще возможно (стартовые сервисы,системные службы,демоны,некорректно или же вообще не выставленные настройки режимов работы драйверов и оборудования...) и мы вынужденны идти на разные форумы,искать всяческие,более расширенные руководства по настройке всех этих ньюансов и тратить целый день,если не больше,на настройку системы,проявляя находчивость и изобретательность,пользуясь научным методом слепого тыка,и эти действия обобщённо называются "напилингом","допиливанием" системы,в той или иной мере, и оставляются создателями дистрибутивов на исключительное разрешение самим конечным пользователем их продукта.Конечно,пользователи со стажем использования конкретно взятого дистрибутива воспринимают все эти действия,как само сабой разумеющиеся,выполняют их практически автоматически,быстро приводя систему в рабочее состояние,но важно понимать,что для тех,кто знакомится с дистрибутивом впервые они не есть нативны,очевидны и просты в поиске и освоении,чем Linux многих и отпугивает.С другой стороны,знатоки и гуру посвящённых дистрибутивам ресурсов начинают толковать о "порогах вхождения","философии дистрибутива","True Way","танцах с бубном",порой напоминая неких религиозных фанатиков-фундаменталистов,повторяющих священные мантры о манах,хелпах,доках,вики,факах и прочих святых писаний и сборников чудодейственных заклинаний-команд для копи-паста,превращая настройку и использование этих дистрибутивов в некое священнодейство адептов сакрального знания...:)Но,суть в том,что все эти этапы и методы настройки системы до рабочего состояния,даже единожды их преодолевшим,начинают казаться естейственными,логичными и правильными,а подходы отличные от описанных в священных скрижалях Хендбуков их дистрибутивов,начинают восприниматься,как ересь и крамола,не имеющая права на существование,начиная холивары ,едва только завидят точку зрения или подход не соответствующий "философии дистрибутива",а попросту оттого,что они такого не знают и не умеют,а это не есть хорошо,потому,хотя бы,что в самих этих аутентичных Хенбуках,нигде не сказанно,ни слова,что нельзя применять для достижения тех же результатов какие-либо другие,альтернативные и обобщённо-комплексные подходы и методы.

      А что это автор имеет ввиду,возможно задастся вопросом читатель,и вот,наконец,я и перейду к изложению результатов своих скромных исследований на этом поприще...

      Задавались ли вы вопросом,почему,на самом деле и без учёта сравнения внутренних особенностей этих систем и систем Linux,пользователи ОС Windows и Mac OS X имеют,даже по самой поверхностной оценке,гораздо меньше проблем с укрощением свежеустановленной системы,будь то ПК или ноутбук,не поминая всуе всякие прочие девайсы?Потому,что в инсталляционных образах тех ОС интегрированны наборы драйверов под любое возможное оборудование пользователя или,может быть,их установщики неким мистическим образом,даже на не подключённых к сети интернет устройствах,из астрала считывают информацию о том,какие средне-оптимальные настройки драйверам на имеющееся в наличии оборудование следует задать,что бы после установки "просто всё работало",а?Нет,нет,нет и ещё раз нет!

       Любой,кто пожелает изучить недра установочных носителей помянутых осей зла,поработивших компьютеры реакционного человечества с комплексом игромании,без особого труда обнаружит,что ОС Windows использует при установке некий сжатый 7zip файл "install.wim",а Mac OS X некий файл "install.dmg",в недрах установочного образа ,котрые являются всего лишь сжатыми образами соответствующих файловых систем с предустановленными версиями своих операционных систем,а я открою страшную тайну - их установщики просто распаковывают содержимое этих файлов-образов на выбранный в графическом интерфейсе раздел,затем выполняют аналог Linux-ового CHROOT в корень распакованной системы,создают пользователя,пароль,права,группы,ставят загрузчик и пр.,размонтируются и просят пользователя вынуть инсталляционный носитель и перезагрузить компьютер,что бы выполнить вход в свежеустановленную систему.Всё предельно просто - предустановленная на эталонном компьютере сборки Microsoft или Mac система,в тех образах,как раз и включает в себя и основные пакеты драйверов,и настроенные под среднестатистическую данность конфиги,и полностью сформированное окружение рабочего пространства пользователя,а при первой загрузке системы происходит автоматическая инициализация ядра,деактивация ненужных драйверов и регистрация задействованных по факту.Разумеется,это крайне общее описание,без всех тонкостей,но в общем,так это всё и работает,ну и,конечно,и в этих ОС частенько приходиться озаботится поисками драйверов под какое-нибудь экзотическое оборудование или редактировать настройки,но это,на фоне в целом уже настроенной системы,не требует,в большинстве случаев,каких-то мистических премудростей консоли  и "танцев с бубном",по большому счёту...А чем же тогда это отличается от практики Linux?А,по большому счёту,ничем!Вот,в Debian-based системах используется файл-образ filesystem.squashfs,который так же развёртывается,куда укажете в установщике и т.д.,вот только,может от того,что платят сборщикам меньше,чем в Microsoft,а может из соображений поддержания "философии дистрибутива",там,при установке,хоть и делается практически всё то же самое,но далеко не так основательно и универсально - играет злую шутку сам способ обеспечения загрузки live режима,при котором ядро и стартовые/системные службы инициализируются и формируют конфигурационные файлы для обеспечения нормальной работы с носителя без установки, по сути в ОЗУ,а установочные скрипты копируют из памяти только ядро и загрузочный образ (initrd),но большая часть остальных конфигов попросту обнуляется!Пользователь,мол,сам потом всё себе настроит,как надо.В итоге,пользователь получает после установки ненастроенную копию содержимого  файла-образа filesystem.squashfs,для простоты,собираемого создателями дистрибутивов сборочными скриптами,изначально в консольном CHROOT режиме к эталонному компьютеру сборки системы (Ubuntu,LinuxMint,LMDE,etc.),с нерабочими дефолтными настройками,где большая часть системных конфигурационных файлов фильтруется в параметрах "--exclude",а вся эффектность и юсабилити live режима,попросту теряется в уже установленной системе!Если же говорить о классическом Debian,то дело будет обстоять ещё хуже - "правильная" установка вообще не предусматривает live режима,а если ваш провайдер не раздаёт интернет через протокол DHCP и вы не имеете роутера,что бы обеспечить им свой ПК,то у вас есть все шансы столкнуться с жесткой необходимостью выкачивания энного кол-ва образов среза репозиториев для установки пакетов необходимых сетевых утилит для настройки wireless,pptp и pppoe,и их зависимостей,со стороннего компьютера или параллельно установленной ОС,имеющей доступ к сети интернет!Но зато,вам,хотите вы того или нет,поставят 200МБ документации,300МБ OpenOffice,300МБ Texlive и 100МБ,как минимум,самых низкорейтинговых тем оформления и прочих трешей и анахронизмов,наверное,блюдя "порог вхождения",что бы новичёк снёс всё это дело,сразу после установки,и с ужасом и ненавистью рассказывал знакомым,какой он,Linux,страшный и убогий,по сравнению,даже с WindowsXP.

        Опять же,к примеру,дистрибутивы семейства RedHat и ManDrake(openSUSE,Fedora,CentOS,RHEL,OEL,PCLinuxOS,Mandriva,Mageia) более продуманно подходят к формированию своих установочных носителей,помещая предустановленную и настроенную к использованию на большей части спектра современного оборудования систему c пользователем live,состоящим в группах wheel,sudo и adm,в не-сжатый файл-образ файловой системы,а уже его пакуют в сжатый образ squashfs или новой clicfs для последующей инициализации загрузки установочного носителя в live режиме,и благодаря тому,что их системы ставятся уже готовыми "просто работать",как Windows или Mac,имеют некоторую известность,как "юсерфрендли" дистрибутивы.Так почему бы не делать так и с Debian?Хм...Так,а что мешает делать это?Может быть существуют какие-либо запреты такого подхода к формированию загрузочного образа любого из Debian-based дистрибутивов?Иснова ответ - нет.Мы можем свободно приобретать,использовать,изменять и распространять их,как только пожелаем.

         Очевидно,что если мы просто захотим снять образ полного бэкапа установленной у нас на Ж/Д Debian-based системы,то нам достаточно будет просто загрузиться с одноимённого live-диска,выполнить монтирование раздела с установленной системой в /mnt,например,и просто снять сжатый образ squashfs с /mnt/ ,то есть с корня примонтированного раздела,со всеми настройками пользователя,системы,выполненными ранее изменениями оформления и набора ПО,а затем на другом локальном разделе с данными создать каталог ISO,куда можно распаковать образ .iso того самого live-диска,с которого мы загрузились и работаем,и просто заменить имеющийся в распакованном образе файл-образ filesystem.squashfs ,созданным нами образом бэкапа,под тем же именем - filesystem.squashfs,в каталоге casper или live,и так же заменить ядро и образ загрузки initrd (vmlinuz & initrd.gz[lz,img]) ядром и образом загрузки из установленной системы в /mnt/boot ,с соответствующим переименованием,а затем собрать образ .iso заново из каталога ISO при помощи mkisofs или genisoimage.Но тогда мы получим загрузочный образ,заточенный для нормальной работы в live-режиме и установки только на том же конфиге оборудования,сиречь на той же комплектации ПК,на котором и был снят образ-бэкап системы,но,вполне вероятно,неспособный загрузиться на ПК с BIOS или видео картой,контроллерами Ж/Д (IDE/SATA) от другого производителя,коль скоро наш образ загрузки (initrd) не будет в состоянии инициализироваться в новом кофиге оборудования,или же не будут удовлетворены параметры монтирования файловых систем,описанных в текущем файле fstab в образе бэкапа системы.Проблема,с которой постоянно сталкиваются любители установки Хакентоша - яблочники собирают свой инсталяционный образ *.dmg,с предустановленной системой,с учётом только тех драйверов оборудования,которое входит в комплектацию аутентичных компьютеров Apple и их unix-совое ядро,с вкомпиленной initramfs, не в состоянии опредилить "неизвестное" оборудование при загрузке...:)Впрочем,в нашем случае обращения с Debian-based системами,и не только,мы можем заранее позаботится об установке недостающих драйверов сети (wireless,wpa,pppoe,pptp и пр.),графического X-сервера (*-mesa-* и xserver-xorg-video-*) ,заголовков ядра,дополнительных бандлов linux-firmware,переустановке пакетов и зависимостей дистрибутивного инсталлятора,возможно,доустановки их или дополнительных,расширяющих его функционал компонентов,и,сформировав оптимизированный список загружаемых стартовых служб и сервисов  rc.d* (rcconf,update-rc.d,insserv),вручную обнулить fstab и прочие,способные помешать универсальной загружаемости live-системы,конфигурационные файлы переименованием,по мере надобности (xorg.conf,и пр.),и уже потом снять слепок squashfs и собрать с ним собственный загрузочный диск,способный загрузиться в live-режиме практически где угодно и развернуть готовую "просто работать" предустановленную систему с помощью стандартного дистрибутивного инсталлятора (кроме классического Debian) ,с настроенными сессиями рабочих окружений,подборкой ПО по желанию и надобности целевой аудитории, на конечном компьютере пользователя,которому останеться,лишь сменить пароль и настроить интернет стандартными средствами,согласно требованиям провайдера или способу подключения к сети,aka Windows.Разумеется,из структуры каталогов в сборочной директории образа .iso следует предварительно удалить все не нужные для предустановленной системы эллементы (каталоги pool,install и пр.) перед сборкой образа,а если требуется инсталлятору,то сборку образа следует проводить с пересчётом md5 сумм и генерацией соответствующего файла в корне образа (семейство Ubuntu).

         Следует отметить,что такой подход,ни сколько,не умаляет изначальной гибкости настроек Gnu/Linux стандартными консольными методами,но пользователь будет иметь изначально превосходящую красотой оформления,исходным инструментарием,базовыми программными возможностями и быстродействием системы Windows и Mac OS X операционную систему.Будет ли это способствовать популяризации и продвижению Linux в массы?Полагаю,да.Причём,хотя бы потому,что "порог вхождения" в этом случае,если не отменяется вовсе,то сводится к минимуму.

         Однако,вышеописанная практика формирования загрузочного инсталляционного образа,подразумевает в своём использовании достаточно твёрдые знания структуры йерархии каталогов и файлов в системе Linux,понимание работы дистрибутивного инсталлятора,требуемых им кондиций,правил формирования базовой структуры файлов и каталогов в сборочной директории образа диска,по большей части известных т.н. гикам и довольно сложна,даже для освоения обычным пользователям Debian-based дистрибутивов Linux,но тут я с удовольствием хочу обратить ваше внимание на проэкт Remastersys,позволяющий автоматизировать все вышеизложенные действия по созданию собственного Live/Install образа диска,причём в различных ситуационных вариациях,одной простой командой в окне терминала (консоли),помимо всего предоставляя бесценную информационную базу,как настоящий справочник по теме,для изучения тонкостей этого процесса любым желающим,не поленившимся открыть в любимом текстовом редакторе с правами суперпользователя ROOT его исполняемый скрипт /usr/bin/remastersys и файлы конфигурации в /etc/remastersys/ & /etc/remastersys.conf ,в которых представленны все этапы формирования файла-образа filesystem.squashfs ,с последующей сборкой образа диска,причём ничто не помешает вам вносить в этот скрипт свои правки,добавляя опции сборки образа диска,меняя наполнение создаваемого образа файловой системы (squashfs),произвольно задавая имя live-пользователя и Хоста live-системы.Особое значение Remstersys имеет для пользователей классического Debian,предоставляя ещё и инсталлятор для создаваемой live-системы,которого всё ещё нет на пакетном уровне Debian (.deb),как,например в Ubuntu,LinuxMint,Siduction,Aptosid,Knoppix,а устаревший и крайне бедный в своих возможностях аутентичный инсталлятор Debian,даже в оффициальных образах live от Debian имеет природу подгружаемого модуля (.udeb) и физически не может быть установлен в целевую систему для сборки,как её часть,а следовательно и использован при установке предустановленной системы,что не есть хорошо,и тут большие надежды на развитие проэкта DEX...:)

        А дистрибутивы на базе иных столпов Gnu/Linux,aka Gentoo,Archlinux,Slackware,RedHat,Mandrake - подлежат ли они подобному ремастерингу,ведь в них нет такого иструмента,как Remastersys?И вот опять - да!Ведь в основе лежат простейшие приёмы,применяемые в в Gnu/Linux кроссдистрибутивно,такие,как монтирование,создание образа файловой системы с помощью mkfs.* c выполнением монтирования полученного образа ФС и выполнением rsync -varp / /mnt/fs --exclude=/{mnt,sys,proc,media,cdrom}/  ,c последующим созданием исключённых при копировании каталогов в точке монтирования созданной ФС(/mnt/fs) и размонтирования образа ФС,с последующей запаковкой каталога с образом ФС в squashfs (mksquashfs Live *squashfs) ,или же напрямую squashfs  с корня примонтированного сборочного раздела с установленной и настроенной системой,а затем замена полученными файлами оригинальных в эталонных образах-трафаретах,хоть при помощи Isomaster,хоть методом пересборки образа с помощью mkisofs.Тут важно отыскать в оригинальных образах эти файлы с самой ФС внутри и жестко придерживаться именования содержащихся в них образов ФС и каталога его содержащего,нуи,конечно же,мы можем заранее позаботится об установке недостающих драйверов сети (wireless,wpa,pppoe,pptp и пр.),графического X-сервера (*-mesa-* и xserver-xorg-video-*) ,заголовков ядра,дополнительных бандлов linux-firmware,переустановке пакетов и зависимостей дистрибутивного инсталлятора,возможно,доустановки их или дополнительных,расширяющих его функционал компонентов,и,сформировав оптимизированный список загружаемых стартовых служб и сервисов  rc.d* ,вручную обнулить fstab и прочие,способные помешать универсальной загружаемости live-системы,конфигурационные файлы переименованием,по мере надобности (xorg.conf,и пр.),и уже потом снять слепок squashfs и собрать с ним собственный загрузочный диск,способный загрузиться в live-режиме практически где угодно и развернуть готовую "просто работать" предустановленную систему с помощью стандартного дистрибутивного инсталлятора.Я пересобирал так Calculate Linux,Sabayon Linux,Chakra Linux,Bridge Linux,Manjaro Linux,Mandriva,openSUSE,Fedora,Agilia Linux,CentOS,Alt Linux,PCLinuxOS и всё отлично работало,так что,пробуйте - получится и у вас!

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

Dont worry,be happy!
Deblanck. 
 
P.S.:
Рекоммендую к прочтению и изучению:
http://vasilisc.com/tips_ubuntu 

http://vasilisc.com/speedup_ubuntu#delay_gtk 

http://compizomania.blogspot.com/ 

http://www.oposumo.com/