#import "@docs/bmstu:1.0.0":*
#import "@preview/tablex:0.0.8": tablex, rowspanx, colspanx, cellx
#show: student_work.with(
  caf_name: "Компьютерные системы и сети",
  faculty_name: "Информатика и системы управления",
  work_type: "лабораторной работе",  
  work_num: 2,
  study_field: "09.03.01 Информатика и вычислительная техника",
  discipline_name: "Операционные системы",
  theme: "Исследование процесса загрузки ОС Linux",
  author: (group: "ИУ6-52Б", nwa: "<NAME>"),
  adviser: (nwa: "<NAME>"),
  city: "Москва",
  table_of_contents: true,
)

= Введение
== Цель работы
Цель работы - исследование процесса загрузки Linux на примере дистрибутива Debian. Освоение работы с интерпретатором командной строки «bash». А так же освоение
подключения репозиториев и установки пакетов.

== Задание
Согласно данному пособию:
- Выполнить загрузку без ввода пароля и смену пароля суперпользователя
- Научиться пользоваться «bash»
- Научиться пользоваться «vi»
- Добавить в список репозиториев официальный репозиторий Debian
- Установить предложенные пакеты
- Отобразить в w3m произвольную страницу.
Включить в отчёт основные действия и результаты этих действий - снимки экрана.

= Выполнение
== Выполнить загрузку без ввода пароля и смену пароля root

При загрузке ОС сначала считывается первичный загрузчик -- GNU GRUB. Можно приостановить/отменить дальнейшую загрузку ОС и зайти в конфигурационные файлы. Там можно прописать любые комманды при загрузке, таким образом можно получить права на изменения пароля просто прописав ```sh init=/bin/bash```.

#img(image("img/2.png", width:90%), [Интерфейс GNU GRUB])
#img(image("img/4.png", width:90%), [Файл конфигурации загрузки с дописанной строкой])

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

#img(image("img/5.png", width:90%), [Доступ к коммандной строке])

Теперь необходимо перемонтировать файловую систему с правами на запись: ```sh mount -rw -o remount /```

#img(image("img/7.png", width:90%), [Выполненная комманда])

Теперь даем комманду ```sh passwd``` и вводим новый пароль 2 раза.

#img(image("img/8.png", width:90%), [Изменяем пароль])

Перезапускаем машину и входить в суперпользователя с новым паролем.

#img(image("../lab1/img/26.png", width:90%), [Доступ к коммандной строке с новым паролем получен])

== Добавить в список репозиториев официальный репозиторий Debian

Прежде чем добавлять в список репозиториев официальный репозиторий Debian узнаем установленную версию. Для этого выполним комманду ```sh cat /proc/version```, т. е. прочитаем содержимое файла, которое содержит в себе информацию об установленной системе. Как мы видим тут используется версия 13 с кодовым названием trixie, это понадобится при редактировании файла с репозиториями

#img(image("img/18.png", width:100%), [```sh cat /proc/version```])

Теперь воспользуемся встроенным редактором vi для редактирования файла `/etc/apt/sources.list`. Для этого наберем комманду ```sh  vi /etc/apt/sources.list```

#img(image("img/11.png", width:90%), [```sh  vi /etc/apt/sources.list```])

Мы попадаем во встроенный редактор. Тут уже есть необходимая строка с нужным репозиторием. Перейдем в редим выделения (v) и выделим ее используя клавиши навигации (hjkl).

#img(image("img/17.png", width:90%), [Необходимая строчка])

Как мы видим версия репозитория совпала с версией системы по кодовому названию. Так как репозиторий был уже добавлен продемонстрируем работу 3 режима редактора -- режима ввода просто добавив еще один комментарий на первую строку.

#img(image("img/32.png", width:90%), [Демонстрация режима ввода vi])

Зайдем в режим ввода комманд и наберем комманду сохранения совместно с коммандой выхода из редактора ```cpp :wq```.

#img(image("img/21.png", width:90%), [Вышли из vi])

== Установить предложенные пакеты

Выполним обновления списков пакетов (```sh apt-get update```):

#img(image("img/22.png", width:90%), [Обновляем списки пакетов: ```sh apt-get update```])

Установим несколько пакетов: 

```sh apt-get install psmisc net-tools w3m```

#img(image("img/24.png", width:90%), [Начало ```sh apt-get install psmisc net-tools w3m```])
#img(image("img/25.png", width:90%), [Конец ```sh apt-get install psmisc net-tools w3m```])

== Отобразить в w3m произвольную страницу.

Отобразим в w3m `google.com` (```sh w3m google.com```):
#img(image("img/31.png", width:90%), [```sh w3m google.com```])
#img(image("img/30.png", width:90%), [Отображение `google.com` в tty])