Поделюсь своим методом установки rootfs, понадобится только NFS и все!!!
По порядку:
1.Загружаемся в u-boot (
читать тут2.Смотрим разделы:MINI2440 #
mtdpartsdevice nand0 <mini2440-nand>, # parts = 4
#: name size offset mask_flags
0: u-boot 0x00040000 0x00000000 0
1: u-boot_env 0x00020000 0x00040000 0
2: kernel 0x00500000 0x00060000 0
3: rootfs 0x3faa0000 0x00560000 0
Нас интересует
rootfs, раздел N 3. Запомните адрес
0x3faa0000 и номер раздела!!!
3.Настраиваем NFS server (в кратце):
3.1.Правим /etc/exports, добавляем в него следующее:
/opt/arm/rootfs 192.168.1.100(rw,no_root_squash,sync,no_subtree_check,nohide,crossmnt,insecure_locks)
Где /opt/arm/rootfs - каталог, в который мы положим файлы рут системы нашей mini2440
192.168.1.100 - IP платы
3.2.Перечитываем настройки NFS: exportfs -ra
4.Настраиваем IP и опции загрузки u-boot:MINI2440 # setenv ipaddr 192.168.1.100
MINI2440 # setenv serverip 192.168.1.12
MINI2440 # setenv bootargs console=ttySAC0,115200 noinitrd init=/sbin/init mini2440=0tbc nfsroot=192.168.1.12:/opt/arm/rootfs root=/dev/nfs ip=192.168.1.100
По последней строке малость разъяснений:
nfsroot=192.168.1.12:/opt/arm/rootfs - Здесь 192.168.1.12 - IP nfs сервера, а /opt/arm/rootfs - каталог с рут системой, который мы ранее задавали в настройках NFS сервера. ip=192.168.1.100 - IP, который получит плата.
MINI2440 # saveenv ---- Сохраняем настройки
(В этом месте можно не сохранять настройки, а сделать вот так:
MINI2440 # setenv root_nfs /opt/arm/rootfs
MINI2440 # boot
)
5.Копируем рут файл систему в каталог /opt/arm/rootfs, делается это проще всего в mc. Я использовал root_qtopia-20100108.tar.gz идущий на DVD. В конечном итоге содержимое каталога /opt/arm/rootfs должно выглядеть примерно так:
> ls /opt/arm/rootfs
bin dev etc home lib linuxrc mnt opt proc root sbin sys tmp usr var www
6.Перегружаем плату, если все сделали удачно, то борда загрузится, а в сериально консоле будет примерно следующее:
Please press Enter to activate this console.
[root@FriendlyARM /]#
7.Смотрим в консоли на имеющиеся разделы:[root@FriendlyARM /]# cat /proc/partitions
major minor #blocks name
31 0 256 mtdblock0
31 1 128 mtdblock1
31 2 5120 mtdblock2
31 3
1043072 mtdblock3
31 4 1048576 mtdblock4
Вспоминаем сохраненный адрес (это надо, что бы не ошибиться используемым разделом), в моем случае: 0x3faa0000 == 1.068.105.728 / 1024 ==
1043072 - размер в блоках соответствует разделу номер 3 (такой же номер мы видели в u-boot), значит нужный нам раздел для рута будет:
mtdblock38.Создаем точку монтирования для раздела и монтируем в нее наш раздел:[root@FriendlyARM /]# mkdir /tmp/ROOT_FS
[root@FriendlyARM /]# mount /dev/mtdblock3 /tmp/ROOT_FS
yaffs: dev is 32505859 name is "mtdblock3"
Тут /dev/mtdblock3 == /dev/ + полученное нами выше имя устройства.
Проверяем, все ли подмонтировалось:
[root@FriendlyARM /]# mount
В выводе должна присутствовать строка примерно такого вида:
/dev/mtdblock3 on /tmp/ROOT_FS type yaffs (rw,relatime)
Теперь копируем рут систему на наш новый рут (список каталогов NFS рута смотрим при помощи
ls /), копировать надо все каталоги, кроме:
/proc, /sys, /tmp[root@FriendlyARM /]# cp -a /bin /lib /sbin /usr /dev /linuxrc /opt /var /etc /www /home /mnt /root /tmp/ROOT_FS/
Далее создадим не достающие каталоги:
[root@FriendlyARM /]# mkdir /tmp/ROOT_FS/proc /tmp/ROOT_FS/sys /tmp/ROOT_FS/tmp
Отключаем новый рут:
[root@FriendlyARM /]# umount /tmp/ROOT_FS/
Проверяем, отключился ли:
[root@FriendlyARM /]# mount
В выводе не должно быть строки с /tmp/ROOT_FS/
Перегружаем железку:
[root@FriendlyARM /]# reboot
9.Заходим в u-boot и правим загрузочную строку:MINI2440 # setenv bootargs console=ttySAC0,115200 noinitrd init=/sbin/init mini2440=0tbc root=/dev/mtdblock3
MINI2440 # saveen
Тут
/dev/mtdblock3 - это то устройство, которое у нас и является рут системой. mini2440=0tbc - сию строку правим под параметры имеющейся у Вас железяки:
0 = 0 - 7" A70 (3.5" T35)
t = точскрин
b = подсветка дисплея (backlight)
c = CMOS камера (опционально)
Перегружаем железку и радуемся жизни!