Конфігурація сиcтеми

До того як ви зможете налагодити складніші частини вашої системи, має зміст вивчити як вона зорганізована, основні команди, як знаходити файли і програми у ній. У випадку якщо ви хочете негайно налагодити X віконну систему, можете зразу перескочити до Розділу 6.

Загальний огляд Slackware

Розположення файлової системи

Перша очевидна різниця між Linux і DOS або Windows полягає у організації файлової системи. У Linux існує лише один кореневий каталог (/), у якійсь мірі аналогічно диску C:\ у DOS-і. Кореневий каталог називається рутом (root), що також співпадає із назвою привілейованого користувача системи (адміністратора) - root. Кореневий каталог / не варто плутати із /root, домашньою директорією користувача root. Подібно до інших систем, Linux використовує деревовидну ієрархію файлів, так каталог / утримує bin, boot, dev, etc, home, lib, і.т.д. директорії, ті в свою чергу включають в себе інші директорії.

Linux не використовує літер для позначення розділів на диску. Кожний розділ на диску, який фізично позначений як файл у /dev каталозі:

/dev/hda1 - перший розділ hda диску
/dev/hda2 - другий розділ hda диску
і.т.д.

прив'язується (а у Unix світі це називається "монтується") до каталогів що знаходяться всередині кореневої системи (/). Це досить зручно. Якщо, скажімо, на вашому диску закінчується місце з-за того, що каталог /home значно зріс, ви просто можете добавити новий диск і приєднати його як /home, уникаючи зайвого копіювання файлів з місця на місце.

Нижче описані головні директорії, що знайдяться у кореневому каталозі Slackware. Ви також знайдете цю інформацію у ?hier(7) (скорочення від "hierarchy") сторінці посібника:

bin : Тут зібрані самі необхідні користувацькі програми. Це той мінімальний набір, без якого неможливе вживання системи. Такі програми як оболонка та команди управління файлами та каталогами (ls, cp, mkdir і.т.д.), усі зібрані тут. Вміст цього каталогу, як правило, не змінюється після інсталяції системи.

boot : Це каталог, що містить ядро системи та файли, необхідні для успішного її завантаження. Саме шляхи до цих фалів надаються як аргумент завантажувачу LILO. Аж по Slackware 8.1, ядро системи зберігалось у директорії /, але згодом загальною практикою стало розміщати все у /boot.

dev : В Лінуксі все розглядається як файл, навіть апаратне устаткування, таке як серійні порти, тверді диски, сканери, тощо. Для доступу до цього устаткування, повинні бути створені спеціальні файли, названі апаратними вузлами (device node). Всі апаратні вузли зберігаються у каталозі /dev. Це спільна риса для для всіх Юнікс-подібних систем.

etc : Цей каталог включає системні конфігураційні файли. По можливості, все, що пов'язано з конфігурацією потрапляє сюди - файли конфігурації X-серверу, база даних про користувачів, системні стартові файли і.т.д.
Загальноприйнятою істиною є те, що чим краще ви розбираєтесь у тому що знаходиться у /etc, тим кращий з вас адміністратор Юніксу.

home : Лінукс є багатокористувацкою системою. Кожному користувачеві системи надається обліковий рахунок і каталог для зберігання власних файлів. Ця директорія стає тим що називається користувацькою домашньою директорією.
Саме /home утримує всі домашні каталоги користувачів.

lib : Системні бібліотеки, необхідні для базового функціонування. Бібліотека мови C, бібліотека ldd(1) - динамічного завантажувача бібліотек, бібліотека ncurses(3), модулі ядра системи, все це зібрано тут.

mnt : Цей каталог вміщає директорії для тимчасового монтування додаткових твердих дисків або змінних гнучких CD-ROM або DVD-дисків. Посилання на директорії у цьому каталозі ви часто знайдете у файлі fstab(5).

opt : Необов'язкові пакети програм. Ідея, що стоїть за /opt полягає у тому, що програми можуть інсталюватися у /opt/<``_назва програми_``> директорії, таким чином, пізніше, їх легко знайти і видалити. Slackware встановлює все, що пов'язано з KDE у/opt, ви також можете самі додавати туди власні програми.

proc : Це унікальна директорія саме тим, що це віртуальна файлова система що надає доступ до інформації про нутрощі ядра. Різноманітні дані про роботу ядра записуються у файли що знаходяться у /proc. Ви також можете надсилати інформацію назад у ядро за допомогою деяких з цих файлів. Спробуйте для початку команду cat /proc/cpuinfo.

root : Це домашня директорія користувача root. Чому вона окремо від решти домашніх каталогів системи? Пояснення просте: якби /home знаходився на окремому розділі диску, який, скажімо, не вдалося приєднати, root-користувач залишився би відрізаним від свого домашнього каталогу, або взагалі не міг би зареєструватись.

sbin : Важливі програми, що виконуються з root-привілеями під час завантаження системи. На відміну від /bin, звичайні користувачі не мають право запускати ці програми.

tmp : Каталог для тимчасових файлів, які можуть видалятися без попередження, скажімо автоматичним завданням ?cron(8). Як правило, всі користувачі системи мають право запису у /tmp.

usr : Це доволі велика директорія на Лінукс системі. Практично все інше розмішується тут. Програми, документація, вихідний код ядра Лінукса, віконна система X з власними програмами. /usr директорія певною мірою імітує / у тому, що тут ви знову ж таки знайдете власні bin (/usr/bin), sbin (/usr/sbin), etc (/usr/etc) і.т.д.
Це в Юнікс-термінології називається вторинною ієрархією.
Якщо вам це видасться мало, тоді знайте що також існує третинна ієрархія, а саме, у цьому самому /usr каталозі розмішений підкаталог local, який знову ж імітує /. Директорія /usr/local теж включає власні bin (/usr/local/bin), sbin, etc і так далі. /usr/X11R6 директорію теж можна віднести до ієрархії третього рівня.
Таке ієрархічне розподілення має чітко продуману логіку і склалося напротязі багатолітньої історії Юніксів. Воно дозволяє чітке розмежування різноманітних пакетів що додаються до системи. Так, додаткові програми що входять у дистрибутив попадуть у каталог /usr/bin, програми, що належать віконній системі X не загубляться по-між рештою, їх завжди можна буде знайти у /usr/X11R6/bin, тоді як, скомпільовані вами програми, бажано встановлювати у /usr/local/bin.
Хоча це страшенно заплутує нових користувачів напочатку, як тільки ви починаєте розуміти логіку такої організації, ви не можете собі уявити як може бути інакше.

var : Це місце системних журналів, кешованих даних і блокувальних файлів. Цей каталог призначений для даних, що постійно змінюються, але, на відміну від /tmp, лише root або ті користувачі, що входять в root-групу мають там право запису. Дані Apache веб-серверу зберігаються саме у /var/www.

Знаходження файлів

У попередньому розділі ви дізнались що саме міститься у основних директоріях, але все-рівно не можете знайти програми або файли які вас цікавлять. Можна, звичайно, передивлятись кожний каталог у пошуках, але це займе багато часу, тим більше що Лінукс має чудові засоби знаходження необхідного.

Команда which

Першою загальновживаною командою є ?which(1), яка швидко знаходить шлях до програми, якщо програма існує. Команді надається один або декілька аргументів у вигляді назв програм, яких ви шукаєте. Наприклад:

$ which bash boom
/bin/bash
which: no boom in (/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:.)

which шукає назву програми, яку ви вказали, у списку каталогів, вказаних у змінній середовища PATH. Як тільки програму знайдено, which повідомляє нас про це, як у випадку з "bash", якщо ж не знайдено, отримуємо повідомлення про невдачу зі списком каталогів де здійснювався пошук. Це доволі поширений спосіб взнати чи певні програми встановлені на системі.

Недоліком which, якщо хочете, можна назвати те, що навіть якщо програму встановлено, але шлях до каталогу, в якому вона знаходиться, не вказано у змінній PATH, програму не буде знайдено (дивіться man 1 which).

Kоманда whereis

Програма ?whereis(1) дуже схожа на which з тією різницею, що здійснює ширший пошук, крім самої програми знаходячи також відповідні сторінки man і навіть вихідні тексти програм. Той самий пошук "bash" виглядатиме як:

$ whereis bash
bash: /bin/bash /usr/bin/bash /usr/Man/Man1/bash.1.gz

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

Команда find

$ which find
/usr/bin/find

Програма find(1) є доволі потужним і різнобічним знаряддям для пошуку у файловій системі. Користувачі можуть використовувати шаблони для пошуку назв файлів, час модифікації або створення файлів, права доступу та інші складніші опції. Наприклад, щоб знайти файл xinitrc, виконайте:

$ find  / -name xinitrc
/var/X11R6/lib/xinit/xinitrc

першим аргументом find завжди стоятиме шлях до каталогу де здійснюватиметься пошук, в цьому випадку, це /. За шляхом можуть знаходитись ключі (-name в даному випадку) з власними аргументами (xinitrc). Виконання find може зайняти трохи часу, особливо в великих директоріях, оскільки ця програма здійснює рекурсивний пошук. У звичайних користувачів часом може з'явитись повідомлення "Permission denied", якщо вони здійснюватимуь пошук у каталогах на які не мають права на читання. Якщо вам необхідне щось швидше за find, дивіться наступну команду.

Команда slocate

Команда slocate(1), або її синонім ?locate(1), здійснює пошук по всій файловій системі, що можливе також за допомогою find(1), з тією різницею, що slocate шукає у базі даних, замість справжньої файлової системи. База даних slocate.db автоматично поновлюється щоранку, тож ви матимете поточний перелік файлів кожного дня. У випадку, якщо у вас з'явились нові файли і ви хочете негайно внести їх до бази даних slocate, виконайте як root-користувач команду ?updatedb(1). Ось приклад slocate у дії:

$ slocate xinitrc 
/var/X11R6/lib/xinit/xinitrc
/var/X11R6/lib/xinit/xinitrc.fvwm2
/var/X11R6/lib/xinit/xinitrc.openwin
/var/X11R6/lib/xinit/xinitrc.twm

ми отримаємо різноманітні файли, що включають у свою назву xinitrc.

На додаток до вищенаведених команд ви можете також використовувати таку могутню зброю як grep(1) у комбінації з ls(1).

Стартові файли в /etc/rc.d

Системні стартові файли зберігаються у каталозі /etc/rc.d. Slackware використовує BSD-подібне розположення для власних файлів ініціалізації, на відміну від поширених System V стартових скриптів, які на думку багатьох ускладнюють зміну стартової конфігурації системи. У BSD-подібних скриптах Slackware кожний робочий рівень представлений одним rc-файлом, що суттєво відрізняється від System V, де кожний рівень отримує власний каталог із символічними посиланнями на файли з int.d.

Існує декілька категорій стартових скриптів: системний завантажувач, скрипти робочих рівнів, скрипти сітьової ініціалізації і скрипти System V сумісності.

Системне завантаження

Перша програма, що запускається у Slackware, окрім Лінукс-ядра, це init(8). Остання читає /etc/inittab(5) щоб взнати, як смае запустити систему. Якщо ви заглянете у inittab, то дізнаєтесь першим виконується /etc/rc.d/rc.S ("S" в цьому випадку походить від "Start"). rc.S файл уможливлює віртуальну пам'ять, монтує вашу файлову систему, очищує деякі журнальні каталоги, започатковує Plug and Play пристрої, завантажує модулі ядра, налаштовує PCMCIA-пристрої, налаштовує серійні порти, і запускає System V стартові скрипти, якщо такі присутні. Очевидно, що rc.S виконує доволі важливу роль, але не без помочі інших сриптів з каталогу /etc/rc.d, де кожний стартовий скрипт викликається по черзі. Ось короткий опис більшості з них:

rc.S : Це основний скрипт ініціалізації системи.

rc.modules : Завантажує модулі ядра. Драйвери до сітьових карток, підтримка PPP, підтримка вашої звукової картки залежать саме від цього стартового скрипта. Якщо останній знайде rc.netdevice, спеціалізований файл для завантаження модулів для сітьових пристроїв, він запустить його також.

rc.pcmcia : Тестує і налагоджує будь-які PCMCIA-пристрої, знайдені на системі. Це скоріше стосується портативних комп'ютерів, які можуть включати PCMCIA-модеми або сітьові картки.

rc.serial : Налагоджує ваші серійні порти, виконуючи відповідні команди serserial(8).

rc.sysvinit : Шукає System V ініціалізаційні скрипти у тій самій директорії і виконує їх. Дивіться нижче для більш детального опису.

Скрипти ініціалізації робочих рівнів

Після того як системна ініціалізація відбулась, init переходить до встановлення робочих рівнів. Робочий рівень означає стан у якому машина знаходиться. Що це означає насправді? Які саме демони і сервіси запущені, чи буде система сприймати багатокористувацьку реєстрацію за допомогою agetty(8), чи тільки одного користувача, чи діятимуть сітьове з'єднання і сервіси, накінець, чи можна буде запустити X сервер. Файли наведені нижче визначають різні робочі рівні можливі у Slackware Linux:

rc.0 : Зупинка системи, робочий рівень 0. Як правило це символічне посилання на rc.6.

rc.4 : Початок багатокористувацького режиму, робочий рівень 4, але у X11 із можливими KDM, GDM або XDM реєстраційними менеджерами.

rc.6 : Перезавантаження системи, робочий рівень 6.

rc.K : Завантаження у однокористувацький режим, робочий рівень 1.

rc.M : Початок багатокористувацького режиму, робочий рівень 2 і 3, але у стандартному текстовому режимі. Це робочий рівень за замовчуванням у Slackware.

Мережна ініціалізація

Робочі рівні 2, 3 та 4 розпочнуть мережеві сервіси. Наступні файли відповідають за сітьову ініціалізацію:

rc.inet1 : Створений програмою netconfig, цей файл конфігурує власне мережні інтерфейси.
Саме в цьому файлі сітьові пристрої отримують власні IP, сітьову маску, вказується присутність шлюзу, тощо.

rc.inet2 : Виконується відразу ж за rc.inet1 і запускає основні сервіси.
Під основними сервісами мається на увазі inetd(8), sshd(8), nfsd(8), httpd(8) і.т.д.

rc.atalk : Запускає AppleTalk сервіси.

rc.httpd : Запускає Apache веб-сервер. Як деякі інші rc скрипти, його можна використовувати із stop, start і restart аргументами.

rc.news : Запускає сервер новин.

Сумісність із System V

Сумісність із System V була привнесена починаючи із Slackware 7.0. Багато інших Лінукс дистрибутивів використовують саме цей стиль замість BSD. Для того щоб уможливити потенційні System V файли був введений rc.sysvinit, який шукатиме /etc/rc.d на додаткові скрипти і виконуватиме їх у відповідному робочому рівні.

Додаткові файли у /etc/rc.d

Ці другорядні скрипти можуть виконуватись з основних, перелічених вище.

rc.gpm : Розпочинає сервіс для мишки у текстовому режимі. Дозволяє вам копіювати і вставляти текст у консолі.
> Зрідка ?gpm(8) може конфліктувати із мишкою у графічному режимі X. Якщо таке станеться, радимо унеможливити дозвіл на виконання rc.gpm.

rc.font : Завантажує вказаний там шрифт для консолі.

rc.local : Містить додаткові стартові команди, які може добавляти системний адміністратор. Цей файл порожній одразу після інсталяції Slackware. rc.local виконується останнім.
Щоб уможливити або заборонити виконання окремих скриптів у каталозі /etc/rc.d, все що вам необхідно, це поміняти дозвіл на виконання за допомогою команди chmod(1). (Більше інформації про chmod(1) ви знайдете у Розділі 9.2.)
> Не радимо унеможливлювати життєво-необхідних файлів ініціалізації, це може призвести до дещо неприємних наслідків, тож будьте обережними.

Вибір ядра системи

Ядро є тією частиною операційної системи що надає доступ до устаткування, контролю процесами, і загального контролю над системою. Воно забезпечує підтримку ваших пристроїв, тож вибір правильного ядра є важливим кроком налаштування.

Slackware надає більше десятка попередньо компільованих ядер, кожне із стандартним набором і додатковими специфічними драйверами. Ви можете використовувати одне з них або компілювати ваше власне з вихідних текстів. В будь-якому випадку, вам необхідно впевнитись що ядро підтримує ваше апаратне забезпечення.

Каталог /kernels на компактному диску

Попередньо-компільовані ядра Slackware знаходяться у каталозі /kernels компактного диску Slackware або на FTP-сайтах у головній директорії Slackware. Ядра, що надаються, змінюються весь час із появою нових, тож варто переглянути документацію що знаходиться у директорії /kernels. Кожне ядро розміщене у власному каталозі. Ці каталоги співпадають назвою із відповідними завантажувальними образами для гнучких дисків з каталогу /bootdisks.

У кожній директорії з ядром ви знайдете наступні файли:

Файл Призначення
System.map Відповідний System.map файл для даного ядра.
bzImage Ядро.
config Оригінальна конфігурація до цього ядра.

Для використання скопіюйте System.map та config до каталогу /boot на власній системі, також bzImage як /boot/vmlinuz.

Після цього виконайте /sbin/lilo(8) щоб перезаписати LILO до головного завантажувального сектору і, накінець, перезавантажте систему. Це, власне, все що необхідно зробити для інсталяції нового бінарного ядра.

Про назви ядер. Ті, що закінчуються на .i включають лише підтримку IDE-пристроїв, тобто без підтримки SCSI. Ті, що закінчуються на .s, це SCSI-ядра, але вони включають також підтримку IDE.

Компіляція ядра

Часто від нових користувачів лунає питання, чи повинні вони перезбирати ядро своєї системи. Відповіддю буде "можливо". Існує лише декілька випадків коли вам необхідно компілювати ядро спеціально для вашої системи. Більшість користувачів можуть використовувати стандартні ядра і модулі щоб добитися повністю функціональної системи. Ви можете захотіти компілювати з вихідного коду, якщо ви вирішили використати новішу версію, не присутню в даний момент на Slackware диску або FTP, також у випадку якщо ви залатали вихідні тексти щоб добитися додаткової функціональності, відсутньої у стандартних ядрах. Будь-хто із SMP системою, безсумнівно захоче перезібрати ядро із SMP підтримкою. Подеколи, якщо маєте у цьому досвід, можна також включати специфічні додаткові опції і оптимізацію, характерні для вашого процесора, відредагувавши Makefile вихідного тексту.

Збірка власного ядра не є настільки важким завданням, хоча додаткові знання апаратної частини власної системи виявляються дуже корисними.

Перше що вам необхідно, це вихідний код Лінукс ядра, встановлений на вашій системі. Впевніться що ви вибрали пакети із K серії під час інсталяції, також. обов'язково D набір, який включає C компілятор, GNU make(1), GNU binutils пакети, необхідні у цьому процесі. Як альтернатива, ви можете, звичайно, завантажити вихідний код із одного з дзеркал вказаних у http://www.kernel.org/mirrors.

Компіляція ядра 2.4.x версії

$ su -
Password:
# cd /usr/src/linux

Першим кроком буде очистити деревовидну ієрархію файлів від будь-яких випадкових бінарних об'єктів або файлів конфігурації що можуть там опинитись. (Якщо ви бажаєте зберегти прихований .config, скопіюйте його у інше місце). Виконайте

# make mrproper

Тепер ви можете розпочати конфігурацію ядра вашої системи. Сучасні ядра надають три способи здійснити це. Перший, оригінальний, це текстовий, що складається із набору запитань що саме включити у систему. Чим він не зручний, це тим, що якщо ви помилились, вам доведеться починати все спочатку. Більшість, напевне, нададуть перевагу меню-базованому способу із cusres-інтерфейсом, яким зручно користуватися також у текстовому режимі. Також існує X графічний інтерфейс. Просто виберіть один з них:

# make config           (текстова версія конфігурації)
# make menuconfig       (меню версія конфігурації)
# make xconfig          (X графічна версія)

Таблиця 4-1. Меню конфігурації Лінукс ядра.

   Linux Kernel v2.6.11.6 Configuration
  +-------------------------------------------------------------------------+
  |                       Linux Kernel Configuration                        |
  |  Arrow keys navigate the menu. <Enter> selects submenus --->.           |
  |  Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes,  |
  |  <M> modularised features. Press <Esc><Esc> to exit, <?> for Help, </>  |
  |  for Search. Legend: [*] built-in [ ] excluded <M> module < > module    |
  |  capable                                                                |
  |  +-------------------------------------------------------------------+  |
  |  |             Code maturity level options --->                      |  |   
  |  |             General setup --->                                    |  |
  |  |             Processor type and features --->                      |  |
  |  |             Power management options (ACPI, APM) --->             |  |
  |  |             Bus options (PCI, PCMCIA, EISA, MCA, ISA) --->        |  |
  |  |             Executable file foramats --->                         |  |
  |  |             Device Drivers --->                                   |  |
  |  |             File systems --->                                     |  |
  |  |             Profiling support --->                                |  |
  |  |             Kernel hacking --->                                   |  |
  |  |             Security options --->                                 |  |
  |  +---------(+)-------------------------------------------------------+  |
  |                <Select>         < Exit >         < Help >               |
  |                                                                         |
  +-------------------------------------------------------------------------+

Вам доведеться пройтися по всім пунктам меню, вмикаючи опції за допомогою клавіші "Y", включаючи підтримку у вигляді модуля за допомогою "M" або вимикаючи підтримку за допомогою "N". Щоб отримати допомогу, використовуйте клавішу "?".

Щоб полегшити процес конфігурації, можна відрити паралельне вікно терміналу і виконати команду dmesg(8) щоб отримати текст повідомлень ядра під час завантаження системи. Ви знайдете таку важливу інформацію як тип процесора, який саме у вас IDE або SCSI контролер, які тверді або змінні носії присутні, виявлені PCI або PCMCIA девайси, сітьові пристрої, тощо. Також не виключено, що ви там знайдете повідомлення про деякі пристрої, що залишились без підтримки (not configured) або взагалі не розпізнані ядром Лінукса. В такому разі варто або включити підтримку, або шукати додаткову інформацію про те як уможливити роботу з цими приладами (дивіться розділ Поміч).

Будьте уважними у тому, які опції ви включаєте або вимикаєте, інакше ви можете отримати неробоче ядро.

Наступними командами після конфігурації будуть:

# make dep
# make clean

Остання приготує вихідний код до побудови ядра. Командою компіляції є:

# make bzImage

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

# make modules

Накінець, ми можемо інсталювати ядро, допоміжні файли і модулі за допомогою наступних команд:

# mv /boot/vmlinuz /boot/vmlinuz.old
# cat arch/i386/boot/bzImage > /vmlinuz
# mv /boot/System.map /boot/System.map.old
# cp System.map /boot/System.map
# make modules_install

Останнім етапом буде редагування /etc/lilo.conf, де ви можете зберегти секцію із вашим старим ядром, у випадку якщо компільоване вами не працюватиме. Не забудьте запустити /sbin/lilo(8) після цього для інсталяції редагованого LILO. Можете спробувати завантажити ваше новеньке ядро після виконання ?reboot(8).

Компіляція 2.6.x версій ядра

Компіляція 2.6 версій лише трохи відрізняється від 2.4 або 2.2 ядер. Відпала необхідність виконувати make dep та make clean. Також під час компіляції не виводиться так багато повідомлень на екран. Якщо вам потрібний більш детальний вивід, ви завжди можете включити його, використавши V=1 опцію для make(1):

# make bzImage V=1 
# make modules V=1

Загалом, весь процес компіляції 2.6 ядра буде складатись з наступних команд:

# make mrproper
# make  menuconfig 
# make all
# mv /boot/vmlinuz /boot/vmlinuz.old 
# cat arch/i386/boot/bzImage > /vmlinuz 
# mv /boot/System.map /boot/System.map.old 
# cp System.map /boot/System.map 
# make modules_install

Багато додаткової інформації ви знайдете також у статті ?Компіляція ядра GNU/Linux.

Використання модулів ядра

Модулі, це просто інша назва для драйверів пристроїв що можуть бути добавлені у працююче ядро. Вони дозволяють збільшити кількість пристроїв які підтримує ядро без необхідності замінювати його або збирати нове.

Модулі також можуть бути завантажені або вилучені у любий момент під час роботи системи. Це значно полегшує оновлення драйверів системним адміністраторам. Новий модуль може бути компільовано, старий вилучено і оновлений вставлено на його місце. Процес заміни може бути автоматизовано за допомогою скрипта і займати буквально долю секунди.

Модулі зберігаються у /lib/modules/<версія ядра> каталозі. Вони можуть бути завантажені під час старту системи за допомогою rc.modules файлу. rc.modules дуже добре коментовано, із прикладами завантаження основних апаратурних компонентів. Щоб побачити список модулів задіяних у даний момент, використайте lsmod(1) команду:

# lsmod
Module                  Size  Used by
parport_pc              7220   0 
parport                 7844   0  [parport_pc] 

У даному прикладі тільки модуль паралельного порту активний. Щоб вилучити модуль використайте rmmod(1) або modprobe -r (modprobe із -r ключем) команду. Модулі можуть бути завантаженими за допомогою modprobe(1) або insmod(1) команд. modprobe, як правило, безпечніше, оскільки він також перевіряє чи модуль що ви надали як аргумент modprobe залежить від інших модулів, якщо так, то останні теж буде завантажено.

Багато користувачів не відчуватимуть потреби завантажувати або видаляти модулі власноруч. У стандартні ядра включено підтримку автоматичного завантажувача модулів, kernel autoloader або kmod демона.

Більше інформації про kmod ви також можете знайти у /usr/src/Documentation/kmod.txt. Також обов'язково передивіться сторінки man для modprobе(1), insmod(1), modinfo(1).