- Создание операционной системы на базе ядра linux. С нуля
- Руководство Linux для начинающих
- Что такое Linux?
- Зачем использовать Linux вместо Windows?
- Какой дистрибутив Linux стоит использовать?
- Что такое среда рабочего стола?
- Как подключиться к интернету
- Лучшая система для просмотра веб-страниц
- Есть ли достойные офисные пакеты для Linux?
- Как устанавливать программы в Linux?
- Командная Строка Linux
- Еще несколько фактов о Linux
- Резюме
Создание операционной системы на базе ядра linux. С нуля
Рано или поздно каждый пользователь Линукса задумывается над созданием собственного дистрибутива. Некоторые аргументируют это тем, что можно «все настроить под себя». Другие сетуют на то, что среди уже представленных дистрибутивов в Ветке нет идеального. А у них, якобы, есть суперконцептуальные идеи для собственной системы. Зачем я всю эту психологию затеял? Для того, чтобы сразу перекрыть кислород играющимся с Линуксом новичкам, которым делать нечего. Если уж задумались над созданием ОС, думайте до конца. Итак,
Я хочу создать ОС на базе Linux.
Сразу предупреждаю: был бы XVIII век, всех тех, кто для основы своей будущей системы выбирает другой развитый дистрибутив (и, не дай Бог, популярный. ) ждала бы виселица. Пост именно про создание системы с нуля, а значит, всякие Slax и Linux Mint мы трогать не будем.
Шаг 1. Выбор носителя
Вариантов немного: либо ваша ОС запускается с LiveCD, либо с жесткого диска, либо с флеш-устройства. Сразу оговорюсь: не скажу в посте ни слова про жесткий диск, потому что гораздо удобнее создавать гибкий дистрибутив из серии «все свое ношу с собой», либо залоченный дистрибутив на оптическом диске. Если вы научитесь создавать LiveCD или LiveUSB систему, с установкой на жесткий диск проблем не будет.
На всякий случай, приготовьте чистую флешку, CD-диск, и установите, наконец, Virtualbox.
Шаг 2. Компиляция ядра
По поводу выхода третьего ядра Linux, этот шаг воодушевляет на дальнейшие разработки… Итак, нам нужны исходники ядра. Каждый пользователь знает, что их можно достать на сайте kernel.org. Ни в коем случае, слышите?, никогда не прикручивайте к своей системе постороннее ядро, скомпилированное не вами!
Поскольку лень моя зашкаливала, я создал папку /linuxkernel и распаковал туда архив с исходниками. Залогинившись под рутом, я сделал следующее:
cd /linuxkernel
make menuconfig
В принципе, ядро можно конфигурировать тремя способами: make config (диалоговая конфигурация), make menuconfig (псевдографическая конфигурация через ncurses), а также make xconfig (графическая конфигурация). Суть в том, что make config испортит вам настроение надолго, т.к. он задаст все возможные вопросы по всем аспектам всех тем. Проблема с make xconfig встречается не у всех, но вот у меня встречалась и встречается. Если приспичило сделать через X, разбирайтесь сами. Оптимальный вариант — make menuconfig. Эта штука откроет вам псевдографический интерфейс, через который вы сможете настроить ядро на свой лад. Штука требует библиотеки ncurses, которая легко устанавливается.
В принципе, если ваш мозг хоть сколько понимает Линукс, вы разберетесь с конфигурированием. Процесс это интересный, вариантов действительно много, а справка, хоть и на английском языке, но все же радует своей доступностью и простотой.
Однако, направить вас все же придется. Перейдите по адресу File Systems —> и поставьте необходимые звездочки. Буква M означает, что поддержка того или иного драйвера осуществляется с помощью подключения к ядру внешнего модуля (ненавижу их!). Нам понадобится также поддержка isofs, для чтения дисков. File Systems —> CD-ROM/DVD Filesystems —> ISO 9660 CDROM file system support. Можно еще поддержать древнедосовские системы.
Чмошные разработчики Mandriva забыли разрешить File systems —> DOS/FAT/NT Filesystems —> NTFS write support, и на одном из их дистрибутивов я мучился с доступом к древневиндовскому разделу.
Посмотрите Processor type and features —> Processor family, мне порекомендовали выбрать Pentium-MMX.
Еще поройтесь в Device Drivers, полезно. Можете шутки ради понавыбирать там все и скомпилировать ядро весом > 50 Мб.
Далее. Ядро после загрузки себя должно загружать, собственно, систему. Либо из скомпилированных в себе файлов (используются во встраиваемых системах), либо из CPIO архива, сжатого чем-нибудь, либо из Initrd. Здесь вам не DOS, здесь не получится сразу сослаться на какой-нибудь init’овый файл в корневом каталоге диска или флешки. На самом деле получится, не слушайте дядю Анникса! Неправильно это, хоть в Интернете по этому поводу уже нехилая полемика ведется. В своей системе мы будем использовать initrd, т.к. это удобно, и не вызовет нецензурных выражений от сторонних разработчиков, в отличие от CPIO архива.
Ах, да, скомпилируйте ядро командой
Если у вас x86, найдете его по адресу /linuxkernel/arch/x86/boot/bzImage.
Для суровых челябинских программистов можно использовать Кросс-компайлинг…
Теперь нам нужен initrd с установленной там простейшей оболочкой. Мы будем использовать busybox, потому что эта няша может все. Способ мы украдем у Роберто де Лео, создателя Movix (я бы даже уважать его начал, если бы не запредельная любовь к Perl):
dd if=/dev/zero of=/dev/ram0 bs=1k count=5000 — Создаем Ramdisk в оперативной памяти нашего компьютера.
mke2fs -m0 /dev/ram0 5000 — Форматируем Ramdisk в системе Ext2
mkdir /distro — Создаем папку
mount /dev/ram0 /distro — Монтируем в папку /distro
Все, теперь у нас есть Ramdisk, емкостью в 5 Мб. Можно и больше, только не нужно. В отличие от Томаса Матеджисека, я не собираюсь пичкать initrd модулями в Squashfs, сжатыми LZMA. Все, что необходимо, будет скомпилировано вместе с ядром. Да, это не очень логично и правильно, но мороки в сто раз меньше. А специально для тех, кто осуждает такой подход, можно разрешить опцию модульности в ядре: Enable loadable module support.
В нашем Ramdisk’е, смонтированном в /distro, есть такая папка, lost+found. Это потому, что мы отформатировали его в ext2. Ни в коем случае нельзя ее удалять, хоть она здесь вряд ли поможет, образ-то фиксированный. Нам бы busybox сначала поставить…
Установка Busybox
Вот почему у таких классных проектов такие отстойные сайты? Хотя… это уже не суть важно, если исходники скачаны и успешно распакованы в папку /busybox.
Сконфигурировать busybox можно так же:
cd /busybox
make menuconfig
Если вы еще не поняли, что это, объясню. Busybox заменяет тонны UNIX приложений, хранящихся в папках /bin, /sbin, /usr/bin, /usr/sbin. Вместо этого, создается только одно приложение: /bin/busybox, а на него создается куча ссылок в указанных выше папках. Установим busybox следующей командой:
make CONFIG_PREFIX=/distro install
Еще Busybox создаст файлы /sbin/init и зачем-то /linuxrc, чтобы ваша система корректно запустилась. Но не все необходимые папки были созданы. Так что завершаем все руками и создаем:
/distro/etc
/distro/lib
/distro/dev
/distro/mnt
distro/proc
/distro/root
/distro/tmp
/distro/root
Если что забыл — вспомните, т.к. директории эти забыть сложно.
Все бы хорошо, вот только busybox для работы требует библиотеки, которые нужно скопировать в наш дистрибутив. Очень легко узнать, какие:
Программа покажет нам библиотеки, требуемые для нашей оболочки. Сразу говорю: linux gate создается ядром и скопирован быть не может.
При копировании библиотек можно отсекать отладочную информацию (так Роберто советует):
objcopy —strip-debug откуда куда
Делаем из Линукса Линукс
Надо создать несколько системных текстовых файлов:
Нам нужен /etc/inittab. Удивлю вас: в начале жизни система даже не знает, что такое Root. У нас даже пользователь безымянный, но вот файл общесистемных низкоуровневых фич (ОНФ) должен присутствовать. Пилотное содержание файла следующее:
# Запустить оболочку в консоли.
::respawn:-/bin/sh
# Перезагрузка по нажатии на Ctrl+Alt+Del.
::ctrlaltdel:/sbin/reboot
# Команды, выполняемые перед выключением и перезагрузкой.
::shutdown:/sbin/swapoff -a >/dev/null 2>&1
::shutdown:/bin/umount -a -r >/dev/null 2>&1
Следующий файл — /etc/fstab. Это таблица, в которой описано, что и куда монтировать при загрузке. Вещь бесполезная! Нам нужно обязательно смонтировать proc, иначе вообще ничего работать не будет, так что в файле пишем:
none /proc proc defaults 0 0
Для mount нужен также файл /etc/mtab. Создайте его и оставьте пустым.
Но mount сделает все необходимое только тогда, когда мы явно его об этом попросим. А просить мы будем в том самом первозагрузочном файле /etc/rc.d/rc.S (rc.d — папка). Вежливо попросим:
/bin/mount -av -t nonfs
Еще нам необходим файл профиля (b)(a)sh, тут вообще раздолье для фантазии. Создаем файл /etc/profile и заполняем следующим:
PATH=»$PATH:/bin:/sbin:/usr/bin:/usr/sbin:»
LESS=-MM
TERM=linux
HOME=/root
PS1=’> ‘
PS2=’> ‘
ignoreeof=10
export PATH DISPLAY LESS TERM PS1 PS2 HOME ignoreeof
Понадобится также файл /etc/shell, в котором указано, что есть оболочка:
Вот собственно и все. Можно записывать наш Ramdisk в файл.
mkdir /os — папка для «готового».
umount /dev/ram0 — размонтируем кусочек оперативной памяти.
dd if=/dev/ram0 of=/os/initrd bs=1k count=5000 — создаем файл.
gzip /os/initrd — сжимаем файл initrd
Создание загрузочной флешки
«Финишная прямая» нашей маленькой разработки. Берем флешку, вставляем, форматируем в vfat (можно и в ext, но не забывайте, что еще не все пользователи Windows застрелились).
На флешке создаем папку boot, в ней папки initrd и kernel.
Из папки /os копируем сжатый Ramdisk в папку boot/initrd на флешке, называем «main.gz». Из папки с исходниками ядра копируем bzImage в папку boot/kernel на флешке, называем «main.lk». Достаем файлы загрузчика Syslinux (в Интернете, либо из другого дистрибутива: тут не принципиально), а именно syslinux.bin, syslinux.boot, syslinux.cfg. Копируем их в корневой каталог нашей флешки. В файле syslinux.cfg пишем что-то подобное:
default mm
prompt 1
timeout 100
label mm
kernel /boot/kernel/main.lk
append initrd=/boot/initrd/main.gz load_ramdisk=1 ramdisk_size=5000 rw root=/dev/ram0
label mc
kernel /boot/kernel/main.lk
append initrd=/boot/initrd/custom.gz load_ramdisk=1 ramdisk_size=5000 rw root=/dev/ram0
label cm
kernel /boot/kernel/custom.lk
append initrd=/boot/initrd/main.gz load_ramdisk=1 ramdisk_size=5000 rw root=/dev/ram0
label cc
kernel /boot/kernel/custom.lk
append initrd=/boot/initrd/custom.gz load_ramdisk=1 ramdisk_size=5000 rw root=/dev/ram0
label hd
localboot 0x80
Тем самым мы поддержали кастомные initrd и ядро, которые, эксперимента ради, можно подключить к нашему дистрибутиву.
Узнаем, каким девайсом в системе является наша флешка (можно запустить mount без параметров и посмотреть). Это либо /dev/sdb1, либо /dev/sdc1, либо /dev/sdd1. Стоит отмонтировать флешку перед началом установки.
Устанавливаем syslinux (если пакета в системе нет, apt-get install syslinux):
syslinux -d путь_к_устройству
В корневом каталоге флешки должен появиться файл ldlinux.sys. Если он есть, значит syslinux.bin, syslinux.boot больше не нужны.
Как настроить BIOS на загрузку из флешки, я вам рассказывать не буду — это легко. Скажу только, что очень удобно создать папку /boot/initrd/init, в которую можно будет смонтировать /boot/initrd/main, для последующей работы с ним. Только не забудьте разжимать и сжимать его gzip’ом.
Как-бы я только что рассказал вам, как создать с нуля систему на Linux. Легко, не правда ли? Далее вы можете редактировать скрипт /sbin/init, ведь у вас еще много работы! Вы должны будете написать скрипт для монтирования флешки, который делает chroot в корневой каталог. В противном случае, вы вынуждены будете работать с ReadOnly разделом, величиной в 5 Мб. Но это уже совсем другая история.
Томас Матеджисек — создатель Slax и Linux Live Scripts.
Роберто де Лео — создатель Movix.
Источник
Руководство Linux для начинающих
Если собираетесь впервые перейти на Linux, есть некоторые вещи, которые вы должны знать. Это руководство содержит важную информацию, которая поможет вам начать ей пользоваться.
Вы узнаете, что такое Linux, почему вы должны использовать его, какие бывают дистрибутивы, как их установить, как использовать терминал, как настроить аппаратное обеспечение и многие другие ключевые аспекты.
Что такое Linux?
Linux – это операционная система используется в работе множества систем от лампочек до оружия, от ноутбуков до крупных вычислительных центров.
На Linux работает все: от вашего телефона до вашего умного холодильника.
В пользовательской среде Linux является альтернативой коммерческим операционным системам, таким как Windows.
Зачем использовать Linux вместо Windows?
Есть много причин, почему стоит использовать Linux вместо Windows, и вот лишь некоторые из них.
- ОС Linux поддерживается на старых компьютерах. Хотя Windows XP по-прежнему будет работать на старом оборудовании, она больше не поддерживается, поэтому обновления для системы безопасности отсутствуют. Существует ряд дистрибутивов Linux, которые создаются специально для старого оборудования и регулярно поддерживаются и обновляются.
- Некоторые дистрибутивы Linux и среды рабочего стола теперь более привычны для обычных пользователей компьютеров, чем Windows 8 и Windows 10. Если вам нравится внешний вид Windows 7, почему бы не попробовать Linux Mint, например.
- Объем, занимаемый Windows 10 огромен. Типичный дистрибутив Linux занимает чуть более 1 гигабайта, хотя некоторые из них могут занимать всего несколько сотен мегабайт. Также Windows требует по крайней мере пропускной способности уровня DVD.
- Linux поставляется с бесплатным программным обеспечением, и вы можете изменять и использовать это программное обеспечение по своему усмотрению.
- Linux всегда был более безопасным, чем Windows, так как для него существует очень мало вирусов, хотя интернет вещей и был под угрозой в последнее время.
- Linux работает лучше, чем Windows, во многих отношениях, и вы можете выжать из него все ресурсы до последней капли на более старом оборудовании, имеющем ограничения.
- Конфиденциальность. Windows регулярно собирает данные, полученные с помощью Cortana и поиска в целом. Хотя это вещь не новая, так как Google делает то же самое, но вы можете быть более чем уверены, что Linux так не поступает, особенно если вы выбираете бесплатный дистрибутив.
- Надежность. Когда программа зависает в Linux вы можете закрыть его довольно легко. Когда программа зависает в Windows, даже когда вы пытаетесь запустить Диспетчер задач, чтобы закрыть эту программу, это не всегда получается.
- Обновления. Windows очень навязчива со своей политикой обновления. Сколько раз вы включали компьютер, чтобы распечатать билеты на концерт или другую важную информацию, чтобы увидеть экран с установкой обновления 1 из 450?
- Вариативность. Вы можете заставить Linux выглядеть, ощущаться и вести себя именно так, как вы хотите. С Windows, компьютер ведет себя так, как в Microsoft думают, что вы хотите.
Если вы все еще не определились, прочтите это руководство, которое поможет вам решить, подходит ли вам Linux.
Какой дистрибутив Linux стоит использовать?
Первый вопрос, которым стоит задаться “что такое дистрибутив Linux?” Просто ядро Linux похоже на движок. Дистрибутив – это фактически транспортное средство, в котором находится двигатель.
Так какой дистрибутив Linux выбрать? Вот основные из них:
- Linux Mint: не требует продвинутого опыта работы с компьютером, прост в установке, прост в использовании и имеет знакомый рабочий стол для пользователей Windows 7
- Debian: если вы ищете действительно бесплатный дистрибутив Linux без проприетарных драйверов, прошивки или программного обеспечения, то Debian для вас. Старичок среди дистрибутивов.
- Ubuntu: современный дистрибутив Linux, который прост в установке и использовании
- openSUSE: стабильный и мощный дистрибутив Linux. Не так просто установить, как Mint и Ubuntu, но тем не менее является очень хорошей альтернативой
- Fedora: самый современный дистрибутив Linux со всеми новыми концепциями, включающимися при первой же возможности
- Mageia: восстал из пепла некогда великой Mandriva Linux. Прост в установке и использовании
- CentOS: как и в Fedora, CentOS основан на коммерческом дистрибутиве Linux, Red Hat Linux. В отличие от Fedora, он создан для стабильности
- Manjaro: основанный на Arch Linux, Manjaro обеспечивает отличный баланс между простотой использования и современным программным обеспечением
- LXLE: на основе легкого дистрибутива Lubuntu он представляет из себя полнофункциональный дистрибутив Linux для старого оборудования
- Arch: rolling release дистрибутив означает, что вы не должны устанавливать новые версии операционной системы, потому что оно самостоятельно обновляется. Сложнее для нового пользователя в освоении, но очень мощный
- Elementary: Linux для людей, которым нравится интерфейс в стиле Mac
Более подробно про лучшие дистрибутивы для новичков вы можете прочесть в этой статье.
Что такое среда рабочего стола?
Типичный дистрибутив Linux состоит из нескольких компонентов.
Существует менеджер дисплея, который используется, чтобы помочь вам войти в систему, менеджер окон, который используется для управления окнами, панели, меню, основных интерфейсов и приложений.
Многие из этих элементов объединены вместе, чтобы создать так называемую среду рабочего стола.
Некоторые дистрибутивы Linux поставляются только с одной средой рабочего стола (хотя другие доступны в репозиториях программного обеспечения), в то время как другие имеют различные версии дистрибутива для различных сред рабочего стола.
Наиболее распространенные среды рабочего стола включают Cinnamon, GNOME, Unity, KDE, Enlightenment, XFCE, LXDE и MATE.
- Cinnamon – это более традиционная среда рабочего стола, которая похожа на Windows 7 с панелью внизу, меню, значками в системном трее и значками быстрого запуска.
- GNOME и Unity довольно похожи. Они представляют собой современные среды рабочего стола, которые используют концепцию значков лаунчеров и отображения в стиле панели мониторинга для выбора приложений. Есть также основные приложения, которые хорошо интегрируются с общей темой среды рабочего стола.
- KDE – это довольно традиционная среда рабочего стола, но она имеет огромное количество функций и основной набор приложений, которые легко кастомизируется большим количеством настроек.
- Enlightenment, XFCE, LXDE и MATE – довольно легкие среды рабочего стола с панелями и меню. Все они легко настраиваются.
Как подключиться к интернету
В то время как подключение к интернету отличается для каждой среды рабочего стола, принцип для всех одинаков.
- Где-то на панели находится значок сети. Нажмите на него, и вы увидите список беспроводных сетей.
- Кликните на нужную сеть и введите ключ безопасности.
Лучшая система для просмотра веб-страниц
На Linux есть все лучшие браузеры, включая Chrome, Chromium, Firefox и Midori.
На нем нет Internet Explorer, в прочем кому он нужен? В браузере Chrome есть все, что вам может понадобиться.
Есть ли достойные офисные пакеты для Linux?
Нет никаких сомнений, что Microsoft Office – это премиальный продукт, и это очень хороший инструмент, который трудно повторить и превзойти качества данного продукта.
Для личного использования и для малого и среднего бизнеса вы можете утверждать, что Google Docs и LibreOffice являются хорошими альтернативами и за меньшую стоимость.
LibreOffice поставляется с текстовым редактором с большинством функций, которые вы ожидаете увидеть в текстовом редакторе. Он также поставляется с достойной электронной таблицей, который также является полнофункциональной и даже включает базовый движок для программирования, хотя она не совместима с Excel VBA.
Другие инструменты включают в себя презентации, математические расчеты, базы данных и чертежные пакеты, которые также очень хороши.
Как устанавливать программы в Linux?
Пользователи Linux не устанавливают программное обеспечение таким образом, как это делают пользователи Windows, хотя различия становятся все меньше и меньше.
Как правило, если пользователь Linux хочет установить пакет, он запускает инструмент, именуемый менеджер пакетов.
Менеджер пакетов обращается к репозиториям, в которых хранятся пакеты, которые можно установить.
Инструмент управления пакетами обычно предоставляет способ поиска программного обеспечения, установки программного обеспечения, поддержания программного обеспечения в актуальном состоянии и удаления программного обеспечения.
По мере развития технологий, некоторые дистрибутивы Linux вводят новые типы пакетов, которые самодостаточны так же, как приложения для Android.
Каждый дистрибутив предоставляет свой графический инструмент. Существуют общие средства командной строки, используемые в различных дистрибутивах.
- Например, Ubuntu, Linux Mint и Debian используют менеджер пакетов apt-get.
- Fedora и CentOS используют менеджер пакетов yum.
- Arch и Manjaro используют Pacman.
Более подробно об установке приложений в Linux вы можете узнать из этой статьи.
Командная Строка Linux
Что бы ни говорили пользователи Linux, именно необходимость использовать терминал, не дает системе стать массово популярной. Впрочем, это бесполезная дискуссия.
Хотя полезно изучить основные команды Linux (то же самое можно сказать и о командах DOS в Windows), нет необходимости делать это.
Первое, что вам нужно знать, конечно, как открыть терминал, и, разумеется, есть, множество способов сделать это.
Почему это называется терминалом? Терминал на самом деле короткое имя для эмулятора терминала, и оно возвращает нас в то время, когда люди входили в систему на физических терминалах. Теперь все, что вам нужно знать, это то, что терминал – это место, где вы вводите команды Linux.
Как только вы откроете терминал, вы должны действительно в нем разбираться. Сперва вам стоит узнать о правах. Подробней об этом вы сможете прочесть в этой статье.
Команда, которую пользователи обычно узнают на ранней стадии – это команда sudo, но не начинайте бездумно вводить команды с помощью sudo, не понимая, что она делает, потому что все это может закончиться катастрофой.
В то время как вы работаете в терминале, вы должны также понимать в переключении пользователей с помощью команды su.
По сути, команда sudo позволяет повысить уровень прав, так что вы можете запускать команды от имени другого пользователя. По умолчанию другой пользователь является пользователем root.
Команда su переключает контекст таким образом, что вы работаете от имени указанного пользователя. От имени этого пользователя можно выполнить ряд команд.
Еще несколько фактов о Linux
- Live Linux DVD или USB позволяет запускать Linux без установки на жесткий диск. Это позволяет тестировать Linux диск перед переходом на него, а также хорошо для случайного пользователя.
- Каждый дистрибутив Linux устанавливается с помощью своего установщика, который является программой, которая поможет вам произвести настройку и установку Linux.
- Когда пользователь устанавливает Linux, он может либо установить его единственной системой, либо установить его вместе с Windows.
- Linux берет пальму первенства, когда дело доходит до воспроизведения аудиофайлов. Есть десятки отличных звуковых приложений, и вы можете выбрать одно или несколько, которые вам нравятся.
- К сожалению, на Linux нет Outlook.
- Самое замечательное в Linux то, что вы можете заставить его выглядеть и ощущаться так, как вы хотите.
- Каждая среда рабочего стола Linux работает немного по-разному, и поэтому познание всех баз займет некоторое время.
Резюме
В этом руководстве мы рассказали вам, что такое Linux, почему вам стоит использовать его, какие существуют дистрибутивы Linux и как выбрать из них, как попробовать Linux, как установить его, как настроить Linux, как перемещаться по Linux, рассказали о лучших приложениях, как установить приложения и как использовать командную строку.
Это должно дать вам хорошую основу для дальнейшего движения.
Источник