Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Из grub в консоль.  (Прочитано 267 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн It_Is_Me

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Из grub в консоль.
« : 12 Июль 2018, 02:04:47 »
Бодрого времени суток, господа.
Никак не могу решить одну проблемку. Нужно в меню grub'а добавить пункт, благодаря которому система запускалась в консоль.
Т. е. чтобы можно было выбирать в голую консоль грузиться или в гуи.

Оффлайн zg_nico

  • Заслуженный пользователь
  • Активист
  • *
  • Сообщений: 720
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Из grub в консоль.
« Ответ #1 : 12 Июль 2018, 02:18:33 »
чтобы можно было выбирать в голую консоль грузиться или в гуи
Вам на постоянку это надо, или единоразово? В любом случае грузиться надо будет с параметром ядра single. При этом до запуска иксов консоль покажет соответствующий запрос (нажмите Ctrl+D для продолжения или введите команду). Если нажать просто Enter, - то будет голая консоль, если нажать Ctrl+D - пойдут стартовать иксы. Если это надо на постоянку - надо вносить изменения в конфиги Grub. Конфиг содержит в себе версию подгружаемого ядра, поэтому вносить такую параметрическую строчку в 40_custom, к примеру, - не есть хорошо, так как после определенных обновлений ядра может не стать, и грузить будет нечего. Как сделать автоподстановку - навскидку придумать что-то не могу... Но что-то мне подсказывает, что надо либо модернизировать /etc/grub.d/10_linux, либо писать подобный ему скрипт, который будет выполнять необходимые действия по автоподстановке актуальной версии ядра, и держать его там же, в /etc/grub.d/
« Последнее редактирование: 12 Июль 2018, 02:23:36 от zg_nico »
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], Ubuntu 18.04 64x [MATE, Budgie].

Оффлайн ecc83

  • Старожил
  • *
  • Сообщений: 1251
  • Lubuntu 16.04 LTS, CentOS 7
    • Просмотр профиля
Re: Из grub в консоль.
« Ответ #2 : 12 Июль 2018, 02:27:07 »
Как сделать автоподстановку - навскидку придумать что-то не могу...

В корневом каталоге всегда есть линки на самое свежее ядро:

initrd.img
vmlinuz

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 25435
    • Просмотр профиля
Re: Из grub в консоль.
« Ответ #3 : 12 Июль 2018, 02:31:39 »
Бодрого времени суток, господа.
Никак не могу решить одну проблемку. Нужно в меню grub'а добавить пункт, благодаря которому система запускалась в консоль.
Т. е. чтобы можно было выбирать в голую консоль грузиться или в гуи.
Озвучте, зачем вам это надо.
Ctrl+Alt+F2 откроет консольный логин.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн It_Is_Me

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Из grub в консоль.
« Ответ #4 : 12 Июль 2018, 03:02:54 »
зачем вам это надо.
Я же написал:
чтобы можно было выбирать в голую консоль грузиться или в гуи.
И, разумеется, "на постоянку".

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 25435
    • Просмотр профиля
Re: Из grub в консоль.
« Ответ #5 : 12 Июль 2018, 03:13:45 »
Зачем вам это надо?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн ecc83

  • Старожил
  • *
  • Сообщений: 1251
  • Lubuntu 16.04 LTS, CentOS 7
    • Просмотр профиля
Re: Из grub в консоль.
« Ответ #6 : 12 Июль 2018, 10:17:23 »
It_Is_Me,

Покажите под спойлером вывод команды:

cat /boot/grub/grub.cfg

Оффлайн БТР

  • Заслуженный пользователь
  • Модератор форума
  • Старожил
  • *
  • Сообщений: 5003
    • Просмотр профиля
Re: Из grub в консоль.
« Ответ #7 : 12 Июль 2018, 15:56:39 »
It_Is_Me, скопируй рабочий пункт и в строку загрузки ядра добавь параметр "text".

Оффлайн ecc83

  • Старожил
  • *
  • Сообщений: 1251
  • Lubuntu 16.04 LTS, CentOS 7
    • Просмотр профиля
Re: Из grub в консоль.
« Ответ #8 : 12 Июль 2018, 16:01:18 »
в строку загрузки ядра добавь параметр "text"

Вы пробовали? Не работает такое в 16.04

Оффлайн БТР

  • Заслуженный пользователь
  • Модератор форума
  • Старожил
  • *
  • Сообщений: 5003
    • Просмотр профиля
Re: Из grub в консоль.
« Ответ #9 : 12 Июль 2018, 16:03:49 »
ecc83, нужно попробовать, давно этим не пользовался. У меня нет 16.04.

Оффлайн ecc83

  • Старожил
  • *
  • Сообщений: 1251
  • Lubuntu 16.04 LTS, CentOS 7
    • Просмотр профиля
Re: Из grub в консоль.
« Ответ #10 : 12 Июль 2018, 16:48:41 »
ecc83, нужно попробовать

Я попробовал перед тем, как вам ответить.

Оффлайн БТР

  • Заслуженный пользователь
  • Модератор форума
  • Старожил
  • *
  • Сообщений: 5003
    • Просмотр профиля
Re: Из grub в консоль.
« Ответ #11 : 12 Июль 2018, 16:58:04 »
ecc83, спасибо за информацию. Имел ввиду попробовать самому на всех версиях, чтобы узнать, с какой перестало работать.

Например, раньше не работала конструкция
sudo echo .....вывод в файл делал через
echo .... | sudo tee /fileа сейчас вроде работает. Тоже надо проверить, всё руки не доходят.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 25435
    • Просмотр профиля
Re: Из grub в консоль.
« Ответ #12 : 12 Июль 2018, 17:06:42 »
Например, раньше не работала конструкцияКод: [Выделить]sudo echo ..... 
И не будет работать.
Иначе слишком просто создавать файлы с рутовыми правами.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн zg_nico

  • Заслуженный пользователь
  • Активист
  • *
  • Сообщений: 720
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Из grub в консоль.
« Ответ #13 : 12 Июль 2018, 18:23:29 »
В корневом каталоге всегда есть линки на самое свежее ядро
Ок. Спасибо за наводку! Наваял говнокод скрипт, который добавляет строчку в загрузочное меню в аккурат после "Дополнительные параметры для Ubuntu...". За образец взята система с UEFI (т.е. диски gpt, insmod part_gpt и прочие прелести). Не думаю, что на системах с Legacy будет работать (хотя шут его знает - проверять надо, в худшем случае загрузка со сгенерированного скриптом пункта меню просто не пойдет - но сам пункт меню будет сгенерирован и добавлен). Но сам принцип, по которому получается автоподстановка, там реализован, а значит публикую. Если ТС надо - сам допилит до работоспособности (там все достаточно примитивно и понятно). Делюсь:
#! /bin/bash
set -e

# Скрипт для автоматизации добавления в загрузчик GRUB2.
# строки с возможностью запуска системы в Single-mode.
# Сохранить скрипт в файл /etc/grub.d/11_custom
# При update-grub замена необходимых переменных выполняется автоматически.
# ! подготовлено для UEFI, на Legacy не испытывалось !

sysname=$(cat /etc/issue.net)                                #имя дистрибутива
wheremount=$(mount | grep "on / ")                           #куда смонтирован корневой каталог
sysdisk=${wheremount%%\ *}                                   #имя системного диска, напр. /dev/sda1
sysdiskGF=${sysdisk//\/dev\//}                               #выбрасываем /dev/
sysdiskGF=$(echo $sysdiskGF | sed -e 's/[0-9]/gpt\0/g')      #заменяем sda1 -> sda,gpt1
#выполняем замену "sda" -> "hd0," - тупо, но работает...
sysdiskGF=$(echo $sysdiskGF | sed -e 's/sda/hd0,/g;s/sdb/hd1,/g;s/sdc/hd2,/g;s/sdd/hd3,/g;s/sde/hd4,/g;s/sdf/hd5,/g;s/sdg/hd6,/g;s/sdh/hd7,/g;s/sdi/hd8,/g;s/sdj/hd9,/g;s/sdk/hd10,/g;s/sdl/hd11,/g;s/sdm/hd12,/g;s/sdn/hd13,/g;s/sdo/hd14,/g;s/sdp/hd15,/g;s/sdq/hd16,/g;s/sdr/hd17,/g;s/sds/hd18,/g;s/sdt/hd19,/g;s/sdu/hd20,/g;s/sdv/hd21,/g;s/sdw/hd22,/g;s/sdz/hd23,/g;s/sdy/hd24,/g;s/sdz/hd25,/g')
#на выходе имеем в sysdiskGF hd0,gpt1
#получаем UUID диска:
root_uuid=$(blkid | grep $sysdisk)                         
root_uuid=$(echo $root_uuid | sed -e 's/^.*\ UUID=\"//' -e 's/\".*//')     
#получаем актуальное ядро vmlinuz:
cur_vmlinuz=$(echo `ls -l /vmlinuz` | sed 's/.*->\ //')
#получаем актуальный RAM-диск initrd:
cur_initrd=$(echo `ls -l /initrd.img` | sed 's/.*->\ //')                       
echo "menuentry '$sysname (режим Single)' --class ubuntu --class gnu-linux --class gnu --class os \$menuentry_id_option 'ubuntu-single-mode-cur-kernel' {"
echo " recordfail"
echo " load_video"
echo " gfxmode \$linux_gfx_mode"
echo " insmod gzio"
echo " if [ x\$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi"
echo " insmod part_gpt"
echo " insmod ext2"
echo " set root='$sysdiskGF'"
echo " if [ x\$feature_platform_search_hint = xy ]; then"
echo "   search --no-floppy --fs-uuid --set=root --hint-bios=$sysdiskGF --hint-efi=$sysdiskGF --hint-baremetal=${sysdiskGF/hd/ahci}  $root_uuid"
echo " else"
echo "   search --no-floppy --fs-uuid --set=root $root_uuid"
echo " fi"
echo "        linux $cur_vmlinuz root=UUID=$root_uuid ro single \$vt_handoff"
echo " initrd $cur_initrd"
echo "}"
Все вышеописанное у меня сохранено в файл /etc/grub.d/11_custom. При обновлении через sudo update-grub получаю в соответствующей секции /boot/grub/grub.cfg:
(Нажмите, чтобы показать/скрыть)

что в моем случае полностью повторяет синтезируемый самим grub2:
(Нажмите, чтобы показать/скрыть)

с той лишь разницей, что прописан требуемый (по условию данного топика) параметр ядра single.
« Последнее редактирование: 12 Июль 2018, 18:27:09 от zg_nico »
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], Ubuntu 18.04 64x [MATE, Budgie].

 

Страница сгенерирована за 0.154 секунд. Запросов: 23.