Andy home page
Главное меню
Главная
Категории
Статьи
Файлы
Ссылки
Архив
Поиск
Галлерея
Гостевая
Опросы
Сетевой калькулятор
NES Emulator
Музей
Обратная связь

Кто на сайте
Добро пожаловать,
Гость

ВойтиВойти
РегистрацияРегистрация
Забыли Пароль?Забыли Пароль?

Посетителей онлайн
ПользователейПользователей: 0
ГостейГостей: 29
_BOTБотов: 12
ВсегоВсего: 41

Server Time
Время: 14:45:03
Дата: 21/11/24
Календарь
Ссылки

Создание Mini Linux
Напечатать текущую страницу
Linux

Создание Mini Linux



Для того что бы создать мини Линукс понадобится:

  1. Ядро с 2.6 и более версии
  2. Набор UNIX-утилит командной строки "BusyBox"
  3. Создать initramfs "временная файловая система, используемая ядром Linux при начальной загрузке"
  4. Загрузчик syslinux

Подготовка:

Создадим директории для будущей файловой системы

Все команды выполняются по root

mkdir ~/work
mkdir ~/work/initramfs
cd ~/work/initramfs
mkdir bin dev etc etc/init.d lib proc mnt tmp usr root sbin sys usr/bin usr/sbin var
chmod 755 . bin dev etc etc/init.d lib proc mnt tmp usr root sbin usr/bin usr/sbin sys var

Компиляция ядра:

mkdir ~/work/kernel
cd ~/work/kernel
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.2.7.tar.bz2
tar jxf linux-3.2.7.tar.bz2
cd linux-3.2.7/
make defconfig && make –j4

make [ -j <число потоков> ] Для ускорения длительных задач используют распараллеливание вычислений внутри make-программы. Рекомендуется задавать число потоков, равное числу физических ядер CPU плюс один.

Ви можете конфигурировать ядро как вам надо одной из следующих команд:

make config (диалоговая конфигурация)

make menuconfig (псевдографическая конфигурация через ncurses)

make xconfig (графическая конфигурация)

после настройки выполните

make –j4 bzImage

Компиляция BusyBox:

BusyBox — набор UNIX-утилит командной строки, замещающий большинство UNIX приложений, хранящихся в папках /bin, /sbin, /usr/bin, /usr/sbin, вместо этого, создается единый файл (это позволяет сэкономить дисковое пространство) /bin/busybox и на него создаются ссылки sh,ls,cp и т.д. в указанных выше папках.

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

mkdir ~/work/busybox
cd ~/work/busybox
wget http://www.busybox.net/downloads/busybox-1.22.0.tar.bz2
tar jxf busybox-1.22.0.tar.bz2
cd busybox-1.22.0
make defconfig && make –j4

Ви можете конфигурировать BusyBox как вам надо одной из следующих команд:

make config (диалоговая конфигурация)

make menuconfig (псевдографическая конфигурация через ncurses)

make xconfig (графическая конфигурация)

после настройки выполните

make –j4

Создание InitRamFs:

Копируем BusyBox:

cp ~/work/busybox/busybox-1.22.0/busybox ~/work/initramfs/bin/busybox

Узнаем какие библиотеки нужны для BusyBox

ldd ~/work/initramfs/bin/busybox
     libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x00110000)
     libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x003b8000)
     /lib/ld-linux.so.2 (0x00eb7000)

Копируем библиотеки для BusyBox

cp -L /lib/ld-linux.so.2 ~/work/initramfs/lib/ld-linux.so.2
cp -L /lib/i386-linux-gnu/libm.so.6 ~/work/initramfs/lib/libm.so.6
cp -L /lib/i386-linux-gnu/libc.so.6 ~/work/initramfs/lib/libc.so.6

На этапе загрузки будет нужен shell

cd ~/work/initramfs/bin/
ln -s busybox sh

Скрипт начальной инициализации init

touch ~/work/initramfs/init
chmod +x ~/work/initramfs/init
nano ~/work/initramfs/init

Содержимое скрипта:

#!/bin/sh
# Создать все символические ссылки для /bin/busybox
/bin/busybox --install -s
#Монтирование файловых систем
mount -a
#Отключаем вывод логов ядра
echo 3 > /proc/sys/kernel/printk
#Очистка экрана
clear
# Создание файлов устройств
mknod /dev/ram0 b 1 0
mknod /dev/null c 1 3
mknod /dev/tty c 5 0
chmod 666 /dev/tty /dev/ram0 /dev/null
mdev -s
# Переменные среды
PATH="/sbin:/bin:/usr/bin:/usr/sbin"
HOME="/root"
CONSOLE="/dev/tty1"
#Настройка сети
echo "Setting up IP Address"
ifconfig eth0 up
ifconfig eth0 192.168.0.199 netmask 255.255.255.0
echo "IP : 192.168.0.199 SUBNET MASK : 255.255.255.0"
route add default gw 192.168.0.1
#Shell
echo "Default Gateway : 192.168.0.1"
echo "Mini-Linux build by Andy.od.ua 2003-2014"
cd /root
exec setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1'

Файл точек монтирования

touch ~/work/initramfs/etc/fstab
nano ~/work/initramfs/etc/fstab

Содержимое файла:

proc  /proc      proc    defaults     0      0
sysfs  /sys   sysfs     defaults     0      0

Нам могут понадобится дополнительные модули ядра

mkdir ~/work/initramfs/lib/modules

Ссылка на директорию modules для версии ядра в данном случае 3.2.7

cd ~/work/initramfs/lib/modules
ln -s ./ 3.2.7

Файл списка зависимостей между модулями:

touch ~/work/initramfs/lib/modules/modules.dep
nano ~/work/initramfs/lib/modules/modules.dep

пример содержимого файла:

# This is a comment.
/lib/modules/2.5.53/kernel/a.ko: /lib/modules/2.5.53/kernel/c.ko /lib/modules/2.5.53/kernel/b.ko
/lib/modules/2.5.53/kernel/b.ko:
/lib/modules/2.5.53/kernel/c.ko: /lib/modules/2.5.53/kernel/b.ko

Все нужные модули можно копировать в директорию ~/work/initramfs/lib/modules/, модули должны быть собраны именно под то ядро которое будете использовать.

Теперь можно создать InitRamFs:

cd ~/work/initramfs
find . | cpio -H newc -o > ~/work/initramfs.cpio
cd ~/work
cat initramfs.cpio | gzip > initramfs.gz

Для отладки и проверки работоспособности можно использовать Qemu (программа для эмуляции аппаратного обеспечения различных платформ)

qemu-system-i386 -M pc -m 128M -kernel ~/work/kernel/linux-3.2.7/arch/x86/boot/bzImage -initrd ~/work/initramfs.gz -net nic,model=e1000,macaddr=00:FF:11:77:44:CC,vlan=0

 

Создание образа:

Создание директории образа:

mkdir ~/work/iso

Копирование ядра

cp ~/work/kernel/linux-3.2.7/arch/x86/boot/bzImage ~/work/iso/bzImage

Копирование initramfs

cp ~/work/initramfs.gz ~/work/iso/initramfs.gz

Загрузчик Syslinux

mkdir ~/work/syslinux
cd ~/work/syslinux
wget https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-4.05.tar.gz --no-check-certificate
tar –xvf syslinux-4.05.tar.gz
mkdir ~/work/iso/isolinux
cp syslinux-4.05/core/isolinux.bin ~/work/iso/isolinux/isolinux.bin
touch ~/work/iso/isolinux/isolinux.cfg
nano ~/work/iso/isolinux/isolinux.cfg

Содержимое файла isolinux.cfg

TIMEOUT 10
DEFAULT mimilinux
LABEL mimlinux
KERNEL /bzImage
APPEND initrd=/initramfs.gz root=/dev/ram0

Создание ISO образа

genisoimage -r -V “Mini Linux” -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ~/work/mini-linux.iso ~/work/iso/

Теперь можно записать на диск или проверить в VirtualBox


При копировании материалов ссылка на сайт обязательна


Добавлена: 14/01/2014 · Автор: admin

Просмотров: 3994

Оценить:
Social net
Сатьи

Все статьи
Друзья
Сайт skeletora
ОНАПТ
OLD-HARD.RU


Webmaster Andy
Copyright©1998-2014 Odessa


Открытие страницы: 0.16 секунды и 8 запросов к БД
Хостинг
Регистрация домена
free counters