Я отказался от windows и установил ubuntu. ужасы и впечатления

Автоматическая настройка

GRUB2 традиционно настраивается использованием утилиты grub-mkconfig для генерации конфигурационного файла.

grub-mkconfig создаёт конфигурационный файл основываясь на шаблонах расположенных в /etc/grub.d. Стандартных шаблонов, в основном, должно хватить для большинства схем загрузок.

00_header  10_linux  20_linux_xen  30_os-prober  40_custom  41_custom  README

Схема именования ядер

Чтобы grub-mkconfig определила доступные ядра, их имена должны начинаться с vmlinuz- или kernel-.

Например:

Код Пример названия ядер, которые GRUB2 может определить

 /boot/vmlinuz-3.4.3
 /boot/kernel-2.6.39-gentoo
 /boot/kernel-genkernel-x86_64-3.17.1-gentoo-r1

Если используется initramfs, то название initramfs файла должно начинаться с initramfs- или initrd-. Версия initramfs должна совпадать с версией образа ядра. Файлы, созданные с помощью genkernel, также будут найдены.

Например:

Код Пример initramfs имён, которые GRUB2 может определить

 /boot/initrd.img-3.4.3
 /boot/initrd-3.4.3.img
 /boot/initrd-3.4.3.gz
 /boot/initrd-3.4.3
 /boot/initramfs-3.4.3.img
 /boot/initramfs-genkernel-3.4.3-gentoo
 /boot/initramfs-genkernel-x86_64-2.6.39-gentoo

Для создания файла grub.cfg выполните команду grub-mkconfig:

Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.9
done

Тихая загрузка ядра

Для загрузки ядра без вывода на экран системных сообщений отредактируйте файл /etc/default/grub, добавив в переменную GRUB_CMDLINE_LINUX_DEFAULT.

Файл Пример параметров тихой загрузки

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

Systemd

Для загрузки systemd при использовании GRUB2 отредактируйте переменную GRUB_CMDLINE_LINUX вот так:

Файл Systemd пример

GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd"

Как установить пароль на редактирование параметров ядра?[править]

По умолчанию при загрузке любой пользователь может добавить/изменить параметры.
Этого можно избежать, если установить пароль. Проще всего сделать это в центре управления системой. Для этого потребуется пакет alterator-grub и выполнить следующие действия:

  • Зайдите в ЦУС (acc), перейдите в режим эксперта, и в разделе «Система» откройте «Загрузчик GRUB».
  • Установите флажок «Установить или сбросить пароль» и введите необходимый пароль.

Примечание: Логин/пароль (последний в хэшированном виде) записываются в файл /etc/grub.d/50_password:

#!/bin/sh
cat << EOF
set superusers="boot"
password_pbkdf2 boot grub.pbkdf2.sha512.10000.<hash>
EOF

Также для ограничения загрузки (как с изменением параметров, так и без) можно добавить в файл /etc/grub.d/40_custom строки:

set superusers="user"
password user password
GRUB_TERMINAL_OUTPUT='console'

После подобных операций следует перегенерировать конфигурацию командой grub-mkconfig -o /boot/grub/grub.cfg (либо grub-mkconfig, в зависимости от дистрибутива). В случае использования alterator-grub — это не требуется.

Работа с конфигурацией GRUB2

Отредактируйте файл конфигурации grub (/etc/default/grub.conf) с помощью предпочтительного редактора. Добавьте/измените интересующие вас параметры для строки GRUB_CMDLINE_LINUX_DEFAULT. Например, я добавил параметры systemd.log_level=debug systemd.log_target=console. Эти дополнительные параметры активируют режим отладки системы и перенаправляют в консоль. Итак, после обновления моя запись в файле /etc/default/grub будет выглядеть примерно так:

Теперь, чтобы автоматически сгенерировать конфигурацию grub2 на основе добавленных параметров, нам нужно запустить grub2-mkconfig, добавив путь к этой конфигурации:

# grub2-mkconfig -o /boot/grub2/grub.cfg

Перезагрузите систему и проверьте, вступили ли изменения в силу из /proc/cmdline, как мы делали ранее.

Что такое GRUB?

GRUB в основном отвечает за предоставление вам меню параметров, из которого вы можете выбрать операционную систему или среду, в которую хотите загрузиться. Кроме того, GRUB отвечает за загрузку ядра Linux.

Вот как выглядит пункт меню GRUB. Если у вас установлено несколько операционных систем, они будут перечислены здесь.

Примечание. GRUB не ограничивается только загрузкой операционных систем Linux, вы также можете использовать его для загрузки в другие операционные системы, такие как Windows.

На момент написания этой статьи доступны две основные версии GRUB.

  1. GRUB Legacy: это первая версия GRUB, изначально разработанная в 1995 году.
  2. GRUB 2: это последняя версия GRUB, используемая многими распространенными дистрибутивами Linux, такими как Manjaro, Ubuntu, Fedora и Red Hat Enterprise Linux (RHEL). GRUB 2 предоставляет вам лучшие инструменты и параметры конфигурации, чем его предшественник.

Помимо GRUB, дистрибутивы Linux также используют другие загрузчики, такие как Linux Loader (LILO), coreboot и SYSLINUX.

Работа с grubby

Чтобы добавить/изменить параметры ядра посредством grubby, нам нужно указать параметры при помощи -args=args совместно с опцией -update-kernel=default-kernel-path. Например, я добавил параметры “clocksource=tsc tsc=reliable”. Параметр “clocksource=tsc” устанавливает источник тактовой частоты как tsc (clocksource=tsc), если он ещё таковым не установлен. Параметр же “tsc=reliable” отключает все проверки стабильности TSC в процессе загрузки.

# grubby --args="clocksource=tsc tsc=reliable" --update-kernel /boot/vmlinuz-$(uname -r)

PS. Для удаления существующих параметров используйте команду -remove-arguments.

Перезагрузите систему и убедитесь, что параметры “clocksource=tsc tsc=reliable” добавлены:

# reboot # cat /proc/cmdline root=LABEL=/ console=tty1 console=ttyS0 selinux=0 nvme_core.io_timeout=4294967295 clocksource=tsc tsc=reliable

Либо просто проверьте это через grubby:

# grubby --info /boot/vmlinuz-$(uname -r)

В дальнейшем вы можете убедиться, что источником тактовой частоты определён tsc, при помощи следующей команды:

# cat /sys/devices/system/clocksource/clocksource0/current_clocksource tsc

Это всё, что касается grubby.

Как дописать свои собственные пункты меню?[править]

  • Теоретически вам не должно хотеться этого делать. Расскажите (в рассылке sisyphus@, к примеру) зачем вам этого захотелось — возможно, придумается какой-то новый общий случай.
  • Если вам всё же хочется — допишите то, что считаете нужным в /etc/grub.d/40_custom

Например, если автоматически не обнаружилась Windows 10, может помочь такое описание пункта меню:

menuentry 'Windows 10' {
    search --fs-uuid --no-floppy --set=root <UUID>
    chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

Где UUID — UUID раздела с загрузчиком Windows. Узнать UUID раздела можно командой

После редактирования этого файла нужно вызвать # grub-mkconfig -o /boot/grub/grub.cfg

Команды консоли GRUB

Чтобы попасть в консоль, нужно нажать клавишу C во время отображения меню загрузки.

Довольно универсальная команда при использовании в чистом виде выдает список жестких дисков и разделов. Также она может быть использована как одноименная команда в Linux — для вывода содержимого папки. например:

Еще одно полезное свойство комадны «ls» — она позволят получить информацию о любом разделе:

Команда сообщит нам тип файловой системы на разделе, метку раздела (если таковая имеется), UUID и дату последнего изменения данных на разделе (в формате UTC).

Данная команда выводит содержимое заданного файла, используется в формате:

chainloader

Передает управление загрузкой по цепочке другому загрузчику (загрузчик ищется на заданном в качестве root разделе). В общем случае требует указания файла для загрузки:

Для (загрузчика Windows) можно использовать:

При использовании без параметров сообщает, какой раздел сейчас используется в качестве корневого и тип файловой системы на этом разделе, также команда может быть использована для задания другого root-раздела. Раздел задается в «grub device» — формате »(hd*,*)«. например:

После задания раздела команда сообщит новый root-раздел и тип файловой системы. Примечание: «root hd(*,*)» не всегда корректно срабатывает. более предпочтительным вариантом является «set root» (см. ниже)

Весьма универсальная команда для изменения различных параметров. Служит для задания значений переменных и используется в формате:

Наиболее необходимое ее применение — для задания root-раздела, например:

Также с ее помощью можно, например, «на лету» изменить цвет текста в меню и консоли, что позволяет опробовать цветовую схему перед установкой ее в качестве основной. Для этого изменяем переменные «color_normal» — для обычного пункта (и текста в консоли) и «color_highlight» для выделенного пункта соответственно. Например, попробуем такой вариант:

lsfonts

Команда отобразит список загруженных в настоящий момент шрифтов.

При использовании в чистом виде выведет список доступных команд. В формате:

Выведет справку по всем командам, начинающимся на «r».

Отобразит справку по команде «search»

background_image

Позволяет «на лету» изменить фоновое изображение. Используется в формате:

Дает замечательную возможность посмотреть на выбранную картинку в действии, избегая лишних перезагрузок. В сочетании с заменой цветов через set позволит довольно быстро подобрать подходящий вариант оформления.

При использовании без параметров сбросит текущее фоновое изображение. Однако, заданные цвета останутся, так что если у вас черный цвет текста — на черном фоне вы его не увидите.

terminal_output.console

Позволяет переключиться на обычную черно-белую цветовую гамму. Весьма полезно при работе с консолью в том случае, если у вас установлено фоновое изображение. Картинка на фоне — это, конечно, красиво, но на некоторых участках фона может быть не виден текст.

Защита от зацикливания на перезагрузке

Если загрузка ОС не закончилась успешно, или осуществлялась загрузка в режим восстановления, то при следующей загрузке — меню выбора GRUB будет выводится и ждать явного вмешательства оператора (так же, как если бы вы выставили GRUB_TIMEOUT=-1). При этом последующие аппаратные сбросы системы — не помогут проскочить меню.

Зачем это сделано

При загрузке в лог файлы пишется информация и размеры логов растут. В нормально загруженной систем работают сервисы, которые архивируют и подчищают логи. В нормально работающей системе постоянно пополнение лог-файлов не требует внимания со стороны пользователя. Совсем иная ситуация при загрузке — никакие сервисы по очистке логов не работают (они запускаются позже) и, если, в процессе загрузки система свалится и начнет перезагружаться, то лог будет только расти. И расти он будет до тех пор пока будут повторятся перезагрузки, и будет хватать места на том разделе диска, где расположен каталог /var/log. А когда на разделе с /var/log место кончится то система зависнет уже наглухо и даже в режим восстановления ее будет не загрузить. Загрузится можно будет только с LiveCD/USB (с Live системы и надо будет лечить систему, первым делом руками зачистив логи). Защита встроенная в GRUB не позволит системе попасть в столь тяжелое положение.

А что если.

Функция (как видно) — безусловно полезная, однако она может быть неудобной для без-клавиатурных станций — на них «зависшее» меню GRUB-а — это не преимущество, а некоторые сложности (без подключения клавиатуры такая станция, попавшая в меню GRUB, никогда не загрузится вообще).

А что если отключить?

Собственно сами случаи, когда циклится загрузка — не так и часты, если машина работает без графики то там вообще мало чему падать на этапе загрузки, да еще так, что бы система вышла на перезагрузку. Разве что совсем кривой прикладной софт встроенный в процесс загрузки… Гораздо чаще загрузка прерывается из за внешних условий — например пропадает питание, или кто-то сбрасывает грубо систему.

Как это работает

Реализовано все достаточно просто — в скрипте /boot/grub/grub.cfg переменная окружения GRUB recordfail устанавливается в ходе каждой загрузки в 1. Скрипт /etc/init.d/grub-common запускается на финальных этапах загрузки (линки с именем S99grub-common есть в /etc/rc2.d, /etc/rc3.d, … /etc/rc5.d). grub-common сбрасывает переменную recordfail в 0. Если скрипт /etc/init.d/grub-common не отработает, то не сброшенное значение recordfail предотвращает автоматическую загрузку, меню GRUB появляется и потребуется явное интерактивное вмешательство со стороны оператора.

Для того, что бы убрать необходимость интерактивного вмешательства в процесс загрузки нужно установить переменную GRUB_RECORDFAIL_TIMEOUT в /etc/defaul/grub в то количество секунд, которые меню GRUB-а будет ждать ввода в случае когда recordfail=1. Сохранить изменения и обновить GRUB (sudo update-grub).

Финт с GRUB_RECORDFAIL_TIMEOUT может не сработать в некоторых (старых) версиях GRUB. Тогда нужно редактировать /etc/grub.d/00_header. Нужно найти функцию make_timeout (), которая выглядит примерно так:

и заменить в ней строчку

После этого финт с GRUB_RECORDFAIL_TIMEOUT заработает. Нужно сохранить изменения и обновить GRUB (sudo update-grub).

Вы когда-нибудь интересовались различными этапами загрузки операционной системы? Что происходит, когда вы включаете свой компьютер?

Этапы процесса загрузки Linux условно можно разделить на:

Загрузка BIOS (POST).

Первый этап загрузки (MBR или GPT).

Второй этап загрузки (GRUB2).

Инициализация главного процесса (init или systemd).

Уровни выполнения (runlevels).

Сейчас мы их и рассмотрим.

Кому стоит перейти на Ubuntu?

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

Ubuntu даже невооруженным взглядом выглядит самым прожорливым Linux’ом. Но и самым красивым, самым прокаченным.

Поэтому для повседневных задач она подходит превосходно, заменяя любую другую ОС. И не приносит никаких проблем при переезде с macOS или Windows.

Поэтому для офисных работников клавиатуры и мыши, а так же массы девелоперов, имеющих нативные инструменты для Ubuntu и Co это идеальная система. Почти как macOS, только чуть сложнее и с большим количеством возможностей.

Этот CAD заменяет AutoCAD. Почти. Впрочем, KOMPAS и NX для NIX тоже есть

За пределами офисной работы или веб-разработки появляется масса вопросов, связанных с софтом и конкретным используемым оборудованием.

Нативно поддерживается почти все, так что если не нравится Windows, а «хакинтош» по каким-то причинам невозможен — Ubuntu станет лучшим выбором для первой попытки использовать Unix.

Да, что-то может работать с трудом. Но если уж работает — то работает на славу. И заморочек все же меньше, чем с macOS. Попробуйте, если найдется нужный софт: этот опыт стоит того.

iPhones.ru

Есть ли жизнь в NIX?

/etc/grub.d

Эта папка содержит в себе скрипты, которые используются для создания файла «grub.cfg». При обновлении GRUB они находят все установленные на компьютере системы и ядра и формируют в файле «grub.cfg» меню загрузки, которое мы и видим. Два основных из них:

Пример

Добавляем режим загрузки без графической заставки, с текстовым отображением процесса загрузки (verbose mode). Для этого мы немного отредактируем обычный пункт загрузки. допустим, он выглядит так (в «/boot/grub/grub.cfg«):

Для того, чтобы сделать из этого verbose mode, нам нужно убрать опции quiet и splash и изменим название самого пункта. В итоге получаем:

Все это и добавляем в «40_custom» в конец файла. Строка с echo не является обязательной она лишь будет сигнализировать нам о том, что наш пункт найден и добавлен при обновлении GRUB.

Как переустановить GRUB?[править]

  • Загружаемся с rescue-cd, например ALT Linux Rescue
  • Если использован ALT Linux Rescue:
mount-system
chroot /mnt/system1

Если в используемом LiveCD нет mount-system, делаем самостоятельно (предполагая/зная, что корень на /dev/sda2):

mount /dev/sda2 /mnt 
mount -o bind /dev /mnt/dev
mount -o bind /proc /mnt/proc
mount -o bind /run /mnt/run
mount -o bind /sys /mnt/sys
chroot /mnt/ /bin/bash

Скачиваем предыдущую версию пакета:

Устанавливаем rpm

rpm -Uvh --oldpackage /home/andy/grub2-pc-1.99-alt9.i586.rpm

Переконфигурируем меню grub

grub-mkconfig -o /boot/grub/grub.cfg

После описанного выше, у меня загрузилась операционная система.

Уровни выполнения (runlevels)

Runlevel 0 — завершает работу системы.

Runlevel 3 — многопользовательский режим с поддержкой сети, но без графического интерфейса. Чаще всего серверные версии Linux работают именно на этом уровне выполнения.

Runlevel 4 — не используется. Пользователь может настраивать этот уровень исходя из его целей.

Runlevel 5 — схож с режимом 3, но здесь запускается графический интерфейс. В этом режиме работают десктопные версии Linux.

Runlevel 6 — перезагружает систему.

Примечание: В системах семейства Debian уровни выполнения выстроены немного иначе. Например, Ubuntu в режиме командой строки запускается с уровнем выполнения 5.

В процессе загрузки Linux состояние уровня выполнения представлено буквенно-цифровым кодом. Если вы посмотрите на скриншот, приведенный ниже, вы увидите, что мой текущий уровень выполнения равен N 5 ; это означает, что мой компьютер уже завершил процесс загрузки, и работает в многопользовательском режиме с графическим интерфейсом.

Узнать текущий режим уровня выполнения можно с помощью следующей команды:

Если вам по какой-либо причине потребуется изменить уровень выполнения, то это можно сделать с помощью следующей команды:

sudo telinit

Как установить GRUB?[править]

Установить дистрибутив с GRUB либо мигрировать загрузчик вручную.

apt-get install grub
grub-install /dev/sda # заменить /dev/sda на то устройство, куда хочется установить GRUB
grub-mkconfig -o /boot/grub/grub.cfg

Последний пункт выполняет генерацию конфига GRUB на основе шаблонов/скриптов в /etc/grub.d/. Редактировать полученный конфиг руками не рекомендуется т.к. он будет уничтожен следующей автогенерацией (выполняемой, к примеру, installkernel-ом).

Проверьте содержимое /etc/sysconfig/grub2: если там нет раскомментированной переменной GRUB_AUTOUPDATE_DEVICE (при смене загрузчика вручную не будет, т.к. она добавляется только alterator-grub), добавьте устройство или их список; если root/boot на md raid1, следует задать список дисков, на которых он размещён — например, не ‘/dev/md0 ‘, а ‘/dev/sdb /dev/sda ‘. После этого стоит выполнить grub-autoupdate.

Стабильность, качество работы и производительность

Один и тот же условный CAD на «маках» работает быстрее, на Ubuntu его можно «форсить» простым добавлением аппаратных ресурсов, а Windows на удивление оказывается проще в настройке. И мануалов с разбором типовых проблем к нему больше.

Из-за проприетарных драйверов ситуация может меняться за счет качества реализации оных, может быть хуже, чем на других платформах, поэтому рендеринг видео или графики может быть медленнее, чем в других системах.

Если проприетарные драйвера есть именно для этого дистрибутива, они даже обновляться будут автоматически

Кроме того, с аудио- и видео-файлами работа на этой платформе довольно грустная. Софта меньше, оптимизация хуже.

Аналогичная ситуация складывается при работе с внешними устройствами, скажем, при программировании ПЛИС или других устройств через периферийные интерфейсы. Работает не все.

Печальная ситуация: знакомых имен нет, в основном простые утилиты для выполнения одной операции

Тем не менее, нестабильная работа — это не про Ubuntu. Глюков, багов, синих экранов смерти здесь нет и быть не может.

Пока речь идет о выполнении стандартных функций NIX-софта, все практически идеально. Даже Chrome и тот кажется примером браузера, переставая жрать память в привычных объемах.

Знакомство с параметрами ядра

Ядро Linux — это сложный элемент ПО, чьё поведение, как и поведение любого другого ПО, зависит от параметров по умолчанию, установленных в коде самого этого ядра. К примерам этого поведения можно отнести то, как ядро управляет диском, памятью или загрузкой системы. Эти параметры определяют поведение Linux, и в целях корректировки поведения системы могут быть изменены как в процессе работы ядра, так и при его загрузке.

Существует 3 способа, с помощью которых вы можете добавлять или редактировать эти параметры. Выбор одного из них будет зависеть от конкретного случая.

  1. При загрузке ядра (загрузочные параметры). Эти параметры вызываются через загрузчика ОС.
  2. В процессе работы ядра через псевдо-файловые системы /proc и /sys, используя “sysctl”.
  3. При компиляции (или перекомпиляции) ядра и его подсистем (вроде initrd).

В этой статье я обширно рассмотрел загрузочные параметры ядра, а именно: что это такое и как их можно добавлять, редактировать или удалять. В дальнейших статьях серии я рассмотрю остальные 2 варианта с соответствующими примерами. Я также представлю вам пример проблемы, решённой мной в прошлом, относящийся к третьему варианту, чтобы сформировать полноценное понимание темы.

Установка без бубнов. Почти

Системные требования текущей домашней версии Ubuntu 19.10: двухядерный процессор, 4 Гб оперативной памяти, 25 Гб места на жестком диске, доступ и интернету и USB-порт для установки.

Загрузка с USB-носителя запускает live-систему. Она позволяет детально ознакомиться с возможностями и немного поработать в окружении. Любые изменения настроек при таком запуске не сохраняются, поэтому для нормальной работы необходима стационарная установка.

Первая попытка установки не удалась: Ubuntu требует создания отдельного раздела собственного формата, не читаемого из-под других систем.

Создать его можно в установочном меню на любом диске с достаточным количеством свободного места. Загрузку нескольких систем обеспечивает автоматически создаваемый мультизагрузочный сектор с графическим меню.

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

Ничего не меняется как при запуске из VirtualBox, так и при работе с жесткого диска. Решаемо

При этом FAT/NTFS-диски читаются даже во время загрузки

Но прямое обращение к ним в системе требует дополнительной настройки, поэтому если не хочется связываться — лучше все важное разместить на системном или специально размеченном диске

Для рядового пользователя норм, для гика — безрадостно.

Создание дополнительного меню загрузки

Суть в том, что вместо уже знакомого «grub.cfg» можно загрузить свой файл настройки загрузочного меню со своей конфигурацией. Это позволяет создать дополнительное меню с другими пунктами, настройками, оформлением и т.д. Итак, создадим наш новый файл конфигурации. Создавать с нуля не будем, а скопируем «grub.cfg», дав новое имя:

Поскольку файл скопируется с правами 444, выставим ему права на запись:

Теперь открываем его в любимом текстовом редакторе и изменяем:

Для задания фонового изображения найдем строку с if background_image (подразумевается, что в вашем «grub.cfg» используется фоновое изображение. Если нет — смотрите пример файла в конце раздела). После команды background_image прописан путь к файлу картинки, поменяйте его на нужный файл.

Строкой ниже мы можем задать цвета текста. Изменяются они так же, как и в »/etc/grub.d/05_debian_theme« (см. Настройка внешнего вида загрузчика GRUB). Можно проделать один интересный трюк: уберите строки с set color_highlight и else теперь настройка будет такой:

Закончив с настройкой, перейдем к пунктам меню, они идут ниже. Измените их, удалите ненужные и добавьте новые, пересортируйте на свой вкус.

Настроив свой файл, сохраните его Ctrl + Shift и закройте.

Теперь необходимо добавить дополнительное меню. Для этого в файле »/etc/grub.d/40_custom« добавим запись такого вида:

Если ваш путь к файлу отличается — исправьте его.

Если вы хотите, чтобы ваше новое меню загружалось вместо стандартного «grub.cfg», установите новый пункт в качестве пункта по умолчанию, но перед этим проверьте новое меню на работоспособность.

Обновите свой «grub.cfg» выполнив команду:

В качестве образца пример файла «custom.cfg» (файл урезан до необходимого минимума):

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: