Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Приклад зборки ядра для OC Ubuntu





Ця інструкція була взята із офіційного сайту Ubuntu https://help.ubuntu.com/community/Kernel/Compile перекладена, адаптована і модифікована. Протестована на Ubuntu 11.04.

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

1. Скачаємо вихідні коди ядра.

sudo apt-get install linux-source device-tree-compiler # зкачуемо

mkdir ~/src # каталог для ядра

cd ~/src

##### введіть версію ядра в поле при распаковці вихідних файлів

tar xjvf /usr/src/linux-source-<version-number-here>.tar.bz2

#### тут також версія

cd linux-source-<version-number-here>

Зараз ми перейшли в каталог із вихідними текстами ядра.

2. Конфігурація ядра. Тепер нам потрібно скопіювати поточну конфігурацію вашого ядра.

cp -vi /boot/config-`uname -r`.config

Перед конфігурацією ядра встановимо необхідні бібліотеки і програми. Далі є два варіанта работи в оконному режимі (make menu xconfig) налаштування чи консольному (make menuconfig). Різниці немає, робота виглядає однаково. Виберемо старий метод роботи.

sudo apt-get install libncurses5 libncurses5-dev # потрібні бібліотеки

Make menuconfig

Для новішого же варіанту (в оконому режимі) потрібно встановити

sudo apt-get install qt3-dev-tools libqt3-mt-dev #

make xconfig

Далі за своїм бажанням чи необхідністю додаємо чи прибираємо модулі, які вважаємо за потрібними. Конфігуруємо у відповідності до конфігурації машини. Наприклад, якщо у мене ноутбук Asus, то мені немає сенсу модулі для підтримки обладнання HP. Уважно продивляємося и конфігуруємо, чим більше приберемо зайвого, тим менше будемо чекати компіляції. Зі структурою ядра можна ознайомитися, прочитавши

http://wiki.kryukov.biz/wiki/%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%8F%D0%B4%D1%80%D0%B0_Linux

або http://kernelnewbies.org/LinuxChanges#head-82b14f7727c01c4fb5dee39d6eae42facd 4bc047

Після конфігурації зберігаємося!

3. Додаємо свої мітки.

Заходимо в./init/main.c і в першу сподобану процедуру пишемо свій автограф-привітання. Вибір функції потрібно обґрунтувати.

gedit./init/main.c

kernel_init{

printk (KERN_WARNING "Warning: Dimas was here.\n");

...

}

Зберігаємося.

4. Додаємо відлагоджувальну інформацію.

У нас є вихідні тексти. Каталоги відповідають дереву конфігурації. Я додам відглагоджувальні інйормацію о роботі з CD-ROM'ом.

cd./drivers/cdrom/

gedit./cdrom.c

Зараз вибираємо «гарну фунцкію», вона повинна визиватся часто, чи хоча б визиватися, щоб було видно вивід інформації. Наприклад, функція запису диску визивається не досить часто, як читання з диску чи відкривання дисководу. Я обрав собі

void cdrom_release(struct cdrom_device_info *cdi, fmode_t mode)

{

printk(KERN_WARNING "Warning: CD have opened. Dimas.\n")

}

Також добавимо в початок файла #define DEBUG і строку #undef DEBUG в його кінець.

5. Заходимо в Makefile

gedit./Makefile

і замінюємо рядок

CFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer

на рядок

CFLAGS = -Wall –Wstrict-prototypes -O2 -g

6. Приступаємо до компіляції ядра

make-kpkg clean #

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

Some-string-here — тут назвемо неше ядро.

fakeroot make-kpkg --initrd --append-to-version=-some-string-here kernel-image kernel-headers

7. Встановлення нового ядра.

Після компіляції будуть створені два файли: ***image та ***headers (що це за файли подивіться і дізнайтеся самостійно)

sudo dpkg -i linux-image-*.deb

sudo dpkg -i linux-headers-*.deb * — назва ваших файлів.

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

Якщо при загрузці нового ядра ви отримуєте повідомлення "Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)" однією з проблем може бути збій при створенні файлу initrd.img-'kernel-name'.


Самим прости рішенням цієї проблеми може бути:

— перезавантажитись з робочим ядром;

— виконати команду "sudo update-initramfs -c -k 'kernel name'";

— редагувати /boot/grub/grub.cfg, дописавши "... initrd 'шлях до створенного initrd.img-ххх'..."

Наприклад, ви маєте:

menuentry 'Ubuntu, с Linux 2.6.32-38-generic' --class ubuntu --class gnu-linux --class gnu --class os {

recordfail

insmod ext2

set root='(hd0,1)'

search --no-floppy --fs-uuid --set 57b04421-2d65-4e21-9b66-22e5925bf4a4

linux /boot/vmlinuz-2.6.32-38-generic root=UUID=57b04421-2d65-4e21-9b66-22e5925bf4a4 ro quiet splash

}

Редагуємо на:

menuentry 'Ubuntu, с Linux 2.6.32-38-generic' --class ubuntu --class gnu-linux --class gnu --class os {

recordfail

insmod ext2

set root='(hd0,1)'

search --no-floppy --fs-uuid --set 57b04421-2d65-4e21-9b66-22e5925bf4a4

linux /boot/vmlinuz-2.6.32-38-generic root=UUID=57b04421-2d65-4e21-9b66-22e5925bf4a4 ro quiet splash

initrd /boot/initrd.img-2.6.32-38-generic

}

— виконуєте 'sudo update-grub', хоча це і не обов’язково;

— перезавантажуєтесь;

— завантажуєтесь з новим ядром.

2.3.2 Варіанти завдань

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

з пристроєм згідно варіанту завдання з таблиці 2.1.


Таблиця 2.1 – Варіанти завдань

Номер Вивід інформації при роботі з
  USB
  Bluetooth
  WiFi
  Ethernet
  Ext4
  Ramfs
  SCSI
  Power Leds
  CD-ROM
  VFAT

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

Корисні посилання до виконання даної лаборатоної роботи наведені у джерелах [1-5].

2.4 Вміст звіту

1. Дерево каталогів першого рівня вихідних текстів ядра і коротке їх призначення кожного каталогу.

2. Послідовність дій для встановлення та зборки нового ядра на Вашій машині.

3. Перелік конфігурацій що ви залишили чи прибрали.

2.5 Контрольні запитання

1. Навіщо потрібна перекомпіляція ядра?

2. Як зібрати ядро для сімейства UNIX?

3. Що таке модулі і навіщо вони потрібні в ОС LINUX?

4. Чому можу не працювати система з новим ядром?

5. Що зробити, щоб нове ядро завантажилося и як це зробити?

6. Які способи відлагоджування ядра ОС LINUX?



 







Date: 2015-12-12; view: 370; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.009 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию