Операционная система
GNU/Linux: устройство и
функционирование
Виктор Ашик
Куратор практик
Лекция КИТ, Москва, 21 марта 2011
#yakit
2
КИТ
План курса
— Операционные системы
— Архитектура ЭВМ
— Устройство GNU/Linux
— Системы хранения данных
— Файловые системы
— Сети и протоколы
— Виртуализация
— Безопасность
3
ОС GNU/Linux
Устройство и функционирование
— *nix, BSD и GNU
— загрузка
— состав
— дистрибутивы
4
В каком порядке появились?
Linux
Minix
386BSD
5
Объявление о Linux:
What would you like to see most in minix?
Message-ID: <>
Date: 25 Aug 91 20:57:08 GMT
Hello everybody out there using minix I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for
386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any
feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical
layout of the file-system (due to practical reasons) among other things).
I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get
something practical within a few months, and I'd like to know what features most people would
want. Any suggestions are welcome, but I won't promise I'll implement them :-)
Linus ()
PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT protable (uses 386
task switching etc), and it probably never will support anything other than AT-harddisks, as that's
all I have :-(.
6
Каким был загрузчик первой
версии Linux?
7
Какие есть загрузчики Linux?
8
Загрузчики Linux
GRUB (v1/v2)
(e)LILO
syslinux/isolinux/pxelinux
…
9
Конфигурация загрузчика:
/boot/grub/grub.cfg
/boot/grub/menu.lst
/etc/lilo.conf
syslinux.cfg
10
Ядро Linux
Гибридное — драйверы дисковых и файловых
подсистем загружаются модулями
Модули — файлы в /lib/modules/
Как работает bootstrapping?
11
Как настроить ядро до его
запуска?
12
Как настроить ядро после его
запуска?
13
Как появляются новые
процессы?
14
Что первично: fork или exec?
15
Linux: init/main.c
if (execute_command) {
run_init_process(execute_command);
printk(KERN_WARNING "Failed to execute %s."
"Attempting defaults...\n",
execute_command);
}
run_init_process("/sbin/init");
run_init_process("/etc/init");
run_init_process("/bin/init");
run_init_process("/bin/sh");
panic("No init found. Try passing init= option to
kernel. "
"See Linux Documentation/init.txt for guidance.");
16
Что будет делать init?
17
init
dpkg -S /sbin/init||rpm -qf /sbin/init
18
Варианты init
BSD-стиль:
– /etc/rc && /etc/rc.d && /etc/rc.local
SysV-стиль:
– sysvinit: /etc/inittab && /etc/rc[0-9].d/ && /etc/rc.local
– upstart: /etc/init/*.conf
– systemd: /etc/system.conf && /etc/user.conf
19
Как монтируются другие
файловые системы?
20
man 5 fstab
21
Разбираем initrd/initramfs
INITRD=/boot/init*$(uname -r)*
file $INITRD
zcat $INITRD | file zcat $INITRD | cpio -t
22
Как устроен процесс загрузки?
23
linux/Documentation/x86/boot.txt
24
Как изучать процесс загрузки?
25