Файловая система

Предыдущая  Содержание  Следующая  V*D*V

Работа с файловой системой происходит с правами администратора.

 

Создать директорию /rootfs для файловой системы.

Распаковать /<buildroot dir>/binaries/uclibc/rootfs.arm_nofpu.tar.bz2 в папку /rootfs
или скопировать /<buildroot dir>/project_build_arm/uclibc/root в папку /rootfs.

 

Чтобы впоследствие файловую систему можно было использовать для initramfs, добавить в корень ссылку с именем init на /sbin/init или сразу на busybox:

 

cd /<path>/rootfs

ln -s bin/busybox init

 

Старт Linux:

ядро ищет rootfs и монтирует его;

ядро ищет init на уже смонтированной rootfs (/sbin/init) и запускает его;

init загружает /etc/inittab и "выполняет" его;

<prog init> из /etc/inittab выполняет дополнительную инициализацию.

 

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

Смотри также

http://www.linuxrsp.ru/docs/howto/Bootdisk-HOWTO-4.html

Настройка

Если настройка параметров сети выполняется в своём приложении, удалить из /etc/init.d скрипт S40network.

Если старт ntpd (клиент для синхронизации времени) выполняется своим приложением, удалить S49ntp.

Настройка inittab

добавить запуск своего приложения;

добавить запуск планировщика;

отключить консоли tty1, tty2, tty3, оставив только ttyS0;

для ttyS0 выставить параметры getty: не детектировать сигнал вызова (-L), скорость 115200, тип терминала vt100;

отключить инициализацию сетевого имени, так как будем его потом задавать сами программно;

отключить старт сетевого интерфейса и запись в таблицу роутинга, так как адрес прибора будет меняться и будем это делать отдельной программой сами;

отключить klogd (логирование событий ядра) за бесполезностью для нас;

отключить слежение за логами на tty3 программой tail;

отключить перезагрузку системы с помощью Cntrl+ALT+Del;

 

# Format for each entry: <id>:<runlevels>:<action>:<process>

#

# id        == tty to run on, or empty for /dev/console

# runlevels == ignored

# action    == one of sysinit, respawn, askfirst, wait, and once

# process   == program to run

 

# Startup the system

null::sysinit:/bin/mount -o remount,rw /

null::sysinit:/bin/mount -t proc proc /proc

null::sysinit:/bin/mount -a

#null::sysinit:/bin/hostname -F /etc/hostname

#null::sysinit:/sbin/ifconfig lo 127.0.0.1 up

#null::sysinit:/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo

 

# Set up a couple of getty's

#tty1::respawn:/sbin/getty 38400 tty1

#tty2::respawn:/sbin/getty 38400 tty2

 

# Put a getty on the serial port

ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100

 

# Logging junk

#null::sysinit:/bin/touch /var/log/messages

null::respawn:/sbin/syslogd -n -m 0

#null::respawn:/sbin/klogd -n

#tty3::respawn:/usr/bin/tail -f /var/log/messages

 

# init the app

ttyS0::sysinit:/<path>/<init>

# run any scripts

::sysinit:/etc/init.d/rcS

# run cron

null::respawn:/usr/sbin/crond -f

# run http server

null::respawn:/<path>/<http-server>

 

# Stuff to do for the 3-finger salute

#::ctrlaltdel:/sbin/reboot

 

# Stuff to do before rebooting

#null::shutdown:/usr/bin/killall klogd

null::shutdown:/usr/bin/killall syslogd

null::shutdown:/bin/umount -a -r

#null::shutdown:/sbin/swapoff -a

 

параметры:

respawn: перезапуск процесса в случае его окончания;

Подключение USB-накопителя

Создать узлы для устройства в папке /dev:

 

cd dev

mknod sda b 8 0

mknod sda1 b 8 1

 

Создать точку монтирования (например, папку /mnt/usb):

 

cd mnt

mkdir usb

 

Дать точке монтирования права для чтения-записи всем пользователям:

 

chmod 777 usb

 

Для повышения отказоустойчивости требуем на накопителе файловую систему ext3.

Так как используем ext3, после монтирования, если полный доступ необходим для всех, в скрипте после монтирования необходимо сделать изменение прав доступа:

 

mount -t ext3 -o <options> /dev/sda1 /<куда>/<монтировать> && chmod -R 777 /<куда>/<смонтировано>

 

Чтобы не указывать при монтировании параметры монтирования, можно в /etc/fstab добавить строчку, указав тип файловой системы, куда монтировать, параметры монтирования:

 

<file system>                <mount pt>                <type>        <options>         <dump> <pass>

/dev/sda1        /<куда>/<монтировать>        ext3        rw,noauto,async,noexec,noatime,nodiratime        0        0

 

type - тип файловой системы: ext2, ext3, vfat, ntfs (только чтение), reiserfs, swap, udf,iso9660, hfsplus, auto;

options - параметры монтирования:
auto или noauto: монтировать автоматически при старте или монтирование делается только явно;
ro или rw: только чтение или чтение и запись;
sync или async: запись без буферирования или запись с буферированием;
exec или noexec: разрешить запускать программы или запретить;
suid или nosuid: разрешение или блокировка работы suid, и sgid бит;
user или nouser: разрешение или запрет монтирования от обычного пользователя;
atime или noatime: обновлять или не обновлять время последнего обращения к ноду;
diratime или nodiratime: обновлять или не обновлять время последнего обращения для директории, содержащей нод;
nls=utf8: включение поддержки utf-8 для NTFS;
utf8: включение поддержки utf-8 для FAT;
defaults: по умолчанию включены опции rw, suid, dev, exec, auto, nouser, async;

dump - параметры для программы dump. Определяют необходимость архивирования. 0 - выключено;

pass - параметр для утилиты fsck, задёт порядок проверки разделов файловой системы. 0 - выключено; 1 - должна проверяться первой и использоваться как корневая; 2 - для всех остальных;

 

Устройство ввода

Для получения данных используется rotary encoder, данные от него получаем через интерфейс Event.

Создать узлы для устройства в каталоге /dev:

 

cd dev

mkdir input

cd input

mknod event0 c 13 64

Дисплей

Для получения данных используется драйвер дисплея, поддерживающий кадровый буфер.

Создать узлы для устройства в каталоге /dev:

 

cd dev

mknod fb0 c 29 0

Звук

Для звуковой системы ALSA cоздать узлы устройств в каталоге /dev/snd:

 

cd /dev

mkdir snd

chmod 755 snd

cd snd

mknod -m 660 controlC0 c 116 0

mknod -m 660 pcmC0D0p c 116 16

mknod -m 660 pcmC0D0c c 116 24

mknod -m 660 timer c 116 33

mknod -m 660 seq c 116 1

 

Если также используется эмуляция OSS, cоздать узлы для устройств в каталоге /dev:

 

cd /dev

mknod -m 660 mixer c 14 0

mknod -m 660 sequencer c 14 1

mknod -m 660 midi c 14 2

mknod -m 660 dsp c 14 3

mknod -m 660 audio c 14 4

mknod -m 660 sndstat c 14 6

mknod -m 660 music c 14 8

mknod -m 660 dmmidi c 14 9

mknod -m 660 dmfm c 14 10

mknod -m 660 amixer c 14 11

mknod -m 660 adsp c 14 12

mknod -m 660 amidi c 14 13

mknod -m 660 admmidi c 14 14

ln -sf /dev/mixer /dev/mixer0

ln -sf /dev/midi /dev/midi0

ln -sf /dev/dsp /dev/dsp0

ln -sf /dev/audio /dev/audio0

ln -sf /dev/adsp /dev/adsp0

ln -sf /dev/amidi /dev/amidi0

Изменение строки приглашения

Чтобы привести строку приглашения терминала к виду:

 

<имя_машины>:<текущий_путь> #

 

изменить значение переменной PS1 в файле /etc/profile:

 

PS1='\h:\w # '

 

Предыдущая  Содержание  Следующая