- Создание операционной системы на базе ядра linux. С нуля
- Как установить Linux. Пошаговая инструкция
- 1. Загрузка версии Linux
- 2. Запись версии Linux на переносное устройство
- 3. Подготовка раздела диска
- Windows
- macOS
- 4. Подготовка загрузчика
- Windows
- macOS
- 5. Загрузка Линукс с носителя
- 6. Начало установки Linux
- 7. Разметка диска
- Установка Linux в качестве основной операционной системы
- автоматический
- ручной
- Установка Linux в качестве Второй операционной системы
- автоматический
- Ручной
- 8. Завершающий этап
Создание операционной системы на базе ядра 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. Пошаговая инструкция
[статья обновлена 27 октября 2020]
Установить Ubuntu, mint, Elementary, MX, Zorin, Pop! и другие дистрибутивы для новичков Linux на компьютеры с другими операционными системами или вообще без них, достаточно, просто. Главное – знать правильную последовательность всех действий.
Linux интересен по многим параметрам. Хотя бы, потому что ему доступны те задачи, о которых тот же Windows даже не мечтал. Допустим, у вас компьютер допотопной модели и, конечно, на старые агрегаты новые версии Винды не доступны. Кроме того, выбрав бесплатный Linux, вы экономите на установке ОС.
Для установки самой лёгкой Linux никаких особых навыков не потребуется. Однако изначально следует определиться с конкретной версией. Arch не рекомендована для новичков, поскольку, его установка сложней остальных дистрибутивов. Но большинство других устанавливаются элементарно и быстро, даже Windows не сравнится с простотой и скоростью установки Linux.
Обратите внимание! Перед установкой Linux важно сделать бэкап важной информации на своем компьютере. Во время установки жесткий диск может потерять нужные файлы. Поэтому нелишним будет сохранение данных на переносное устройство. Хотя, если вы будете четко придерживаться ниже выложенной инструкции, потерь данных не должно произойти. Но подстраховка, в любом случае, не помешает.
Если на ваш компьютер установлены такие операционные системы, как Windows, macOS или вообще «голый» ПК, то вы можете смело устанавливать Linux. Linux записывается в качестве основной ОС, а также для параллельной работы с другой системой. В общем, как именно пользоваться, решать вам.
1. Загрузка версии Linux
Вы не знаете, какой дистрибутив необходим именно вам? Как выбрать читайте тут.
После того, как вы определились с нужным вариантом, следует перейти на официальный сайт выбранного дистрибутива, где перейти в раздел загрузок, и выбрать версию, подходящую по разрядности с вашим процессором.
Скачать Linux mint – официальный сайт.
Обычно официальные источники Linux предлагают произвести закачку по двум принципам на выбор:
- стандартная загрузка;
- через Р2Р (торрент).
Разумеется, последний способ является самым быстрым.
2. Запись версии Linux на переносное устройство
При закачке Linux в формате ISO его нужно смонтировать на съемный носитель (CD диск, флешка). Перенос сведений на съемные носители осуществляется просто – обычной записью. Для этого нужно правой кнопкой мыши нажать на выделенный элемент и выбрать подходящий пункт в открывшемся окне, функция – «Запись образа диска».
Чтобы записать ISO на флешку, то для:
Разобраться с перечисленными программами невероятно просто.
3. Подготовка раздела диска
Такая процедура необходима в том случае, если вы хотите одновременно использовать несколько систем. Но, если Linux – единственная рабочая система, то этот шаг можно пропустить.
Windows
- открываем «Средство управлениями дисками», где выбираем диск либо отдельный раздел, куда планируется запись будущей операционной системы. 10 ГБ – достаточный объем памяти. Если в планах – загрузка других файлов, то нужно той же правой кнопкой мышки выбрать «Сжать том», далее – «Ок»;
- процесс весьма долгий. По окончанию, на носителе появится пустота, выделенная черным цветов. Именно в это место нужно поместить Linux. Если Linux когда-нибудь надоест, то на его место можно перезаписать другую операционную систему таким же способом, который мы предложили для Linux.
macOS
Если у вас стоит macOS, то найти место для Linux можно благодаря функции «Дисковая утилита». Выбираем наш диск и нажимаем на «+», таким образом, создается раздел для Linux. Как и в предыдущем варианте, процесс будет долгим.
4. Подготовка загрузчика
Windows
Сейчас разговор затрагивает исключительно новые ПК, на которых установлена Винда таких серий: 8; 8.1 или 10. Фишка этих компьютеров заключается в том, что для них применим загрузчик UEFI, который не загружает никакую операционную систему, за исключением «родной» Windows.
Но мы знаем, как обхитрить такой принцип. Заходим в ВІОS, отключаем функцию Secure Boot и перезагружаемся. Все! Теперь компьютер готов к загрузке и установке новых ОС. Вы можете поместить эти операционные системы рядом со своей Виндой.
macOS
Тут придется немножко поднапрячься, поскольку, macOS требует гораздо большего количества действий для установки Linux в паре с macOS.
Последовательность действий такова: отключаем SІР, перезагружаем систему, нажимаем Сmd + R. После чего возникнет меню Recovery, в котором необходимо выбрать «Терминал» и ввести без кавычек «csrutil
disable». Снова перезагружаем. Теперь SІР отключен.
По умолчанию у вас встроен Вооt Camp, который рассчитан исключительно для установки Windows. Поэтому нам необходимо скачать и установить rЕFlnd. Благодаря этому приложению вы сможете закачать ту ОС, которая вам необходима, включая «Линукс».
Затем нужно распаковать загрузившийся файл. Для его открытия после распаковки нужно открыть «Терминал» и ввести без кавычек «diskutil
list». В появившемся окне нужно найти необходимый загрузчик ЕFІ. Как правило, он называется /dev/disk0s1. Вводим «mount /dev/disk0s1» и запускаем rЕFlnd путем перемещения install.sh из распакованной папки в меню «Терминал».
5. Загрузка Линукс с носителя
Первым делом, необходимо перезагрузиться. Далее выбираем наш носитель с Линукс. Действия зависят от типа операционной системы. Если речь идет о Windows, то наши основные помощники Еsс, F9 либо ВІОS. Для «Макинтоша» – долгое нажатие Орtіоn.
6. Начало установки Linux
Рассмотрим процессы на примере Ubuntu. Следует добавить, что большинство версий Linux (openSUSE, Mint, Debian, Fedora, Manjaro и многие другие) устанавливаются так же, как и Ubuntu. Некоторые версии требуют псевдографический установщик. Разница в действиях установщика состоит в том, что при псевдографическом варианте необходимо выбирать функционалы с помощью клавиш. Другие манипуляции производятся аналогичным способом.
Итак, выбираем язык системы, нажимаем «Установить». После чего отмечаем «Установить стороннее программное обеспечение», таким образом, наш новенький «Линукс» сможет применять проприетарные драйверы. Далее выбираем «Загрузить обновления во время установки», что допускается оставлять включенным, но это не относится к быстрому интернет-подключению.
7. Разметка диска
Теперь нужно быть максимально внимательным, так как можно стереть диск, на котором сохранена старая операционка. Дальнейшие действия зависят от того, будет ли Linux единственной рабочей системой или дополнительной.
Установка Linux в качестве основной операционной системы
Для установки Linux как единственной операционной системы существует два способа.
автоматический
создает новые разделы и устанавливает систему, удалив все предыдущие данные с диска. Преимущества данного метода очевидны, ведь вам не придется ломать голову над ручными действиями. Для этого способа нужно выбрать «Стереть диск и установить Linux». Предварительно рекомендуется сохранить информацию на другой жесткий диск;
ручной
данный вариант лучше предыдущего тем, что вы самостоятельно определяете размеры для разделов. Чтобы выбрать ручной режим установки, необходимо нажать «Другой вариант», затем – «Продолжить».
Linux продемонстрирует все имеющиеся на компьютере разделы. Их можно удалять и использовать по собственному усмотрению. Однако, ни в коем случае, нельзя трогать те разделы, где сохранена необходимая для вас информация.
Для установки Linux в качестве основной операционной системы, следует выбрать раздел с установленной ОС и удалить при помощи клавиши «-». После чего, на освободившихся местах создаем такие разделы:
- корневой – для хранения системных файлов операционки. Для чего выбираем – Ехt4 и /;
- swap или подкачка необходимы в качестве дополнительной оперативки. Нужно лишь в меню файловых систем выбрать «Раздел подкачки»;
- home – хранилище ваших файлов. Для выбора именно этого раздела клацаем на Ехt4 и /home.
По завершению нажимаем «Продолжить» и подтверждаем действия. Программа стирает указанные вами разделы, а на их месте создает новые.
Установка Linux в качестве Второй операционной системы
Linux в качестве соседствующей операционки с другой ОС так же, как и предшествующий вариант, устанавливается автоматически и вручную.
автоматический
Что касается автоматической настройки, то практически всегда установщики «Линукс» видят загруженные на компьютере системы, конечно, если они создавались. Если не создавались, то выбираем «Установить рядом с Windows». Далее все происходит на автомате.
Ручной
Ручная установка потребуется в том случае, когда вы самостоятельно хотите выделить то количество мест, которое считаете нужным. Для этого выбираем «Другой вариант», затем – «Продолжить». После чего, система покажет пустое подготовленное вами место для Linux. Тут же создается корневой раздел. Home-раздел в данной ситуации необязателен.
Нажимаем «Продолжить». Программа не трогает ваши документы, оставляя их на прежних местах. При этом, создает новые на освободившемся пространстве. Вы сами решаете, какую ОС загружать во время запуска.
8. Завершающий этап
Программа для определения вашего часового пояса может спросить о месте нахождения, а также предложит выбрать – язык, назвать свое имя и придумать пароль.
Теперь ждите, когда установка закончится. По завершению установочного процесса система предложит изъять установочный диск и перезагрузиться. Обязательно отключаем ВIOS, если она была включена.
После перезагрузки у вас появится рабочий стол установленной системы. Вы можете выполнять все те же действия, что и на другой ОС.
Источник