Собираюсь добавить новые службы в стандартную rootfs, поставляемую с платой и загружать её по сети командой
U_BOOT> run tftp_boot
Просто добавить в смонтированный образ не получилось из-за ограниченного размера - 4 Мб.
Больше в DataFlash и не входит.
Тогда я
создал образ нужного размера, отформатировать в ext2, скопировал содержимое стандартного rootfs, переименовал в ramdisk.img, исполнил скрипты mount_rootfs и umount_rootfs, а затем U_BOOT>RUN TFTP_BOOT
образ создал следующими командами: dd if=/dev/zero of=/home/user/MyFilesystem.img bs=512 count=25000
затем омформатировал mkfs.ext2 MyFilesystem.img
Полученный архив rootfs оказался в /tftpboot (5,3 mb)
Далее при загрузке следующая ошибка: RomBOOT initia
>Start AT91Bootstrap...192K size 1024 blocksiz
Copy application ...
Run ...
Nb pages: 8192fffff:01, irq=-1
Page Size: 528
Size= 4325376 bytes
Logical address: 0xC0000000ting - please use bus_type
Area 0: C0000000 to C0003FFF (RO)
NFT
Area 1: C0004000 to C0007FFFn: 1.98 $, nftlmount.c $Revi
Area 2: C0008000 to C0037FFF (RO)
Area 3: C0038000 to C041FFFF: Manufacturer ID: 0xec, Chi
*** Warning - bad CRC, using default environment
In: serial
t)
Out: serial-bit, <NULL>
Err: serial
KS8721 PHY Detected for bad blocks
ETH: 100M Full Duplex.
Bad eraseblock 345
End of Autonegociation
Hit any key to stop autoboot: 000
U-Boot> run tftp_boot1 at 0x0a520000
Load address: 0x20400000artition 2"
Loading: #################################################################ffc8000 (irq 12)
#################################################################
usbmon: debugfs is not available
#################################################################
at91_ohci at91_ohci: new USB bus registered, assigned bus number 1
#################################################################91_ohci: irq 20, io mem 0x00500000
##################on #1 chosen from 1 choice
done
Bytes transferred = 1422886 (15b626 hex) 1-0:1.0: USB hub found
TFTP from server 192.168.0.2; our IP d
#################################################################
mice: PS/2 mouse device common for all mice
#################################################################bcore: registered new interface driver usbhid
#################################################################
TCP cubic registere
#######################################################
NET: Registered protocol family 17
done
Bytes transferred = 1610868 (189474 hex)ransport module.
## Booting image at 20400000 ... transport module.
Image Name: Linux Kernel
Entry Point: 20008000
Verifying Checksum ... OKry: 116K
Uncompressing Kernel Image ... OK
mount: Mounting none on /dev
Starting kernel ...file or directory
Linux version 2.6.24 (root@armmaker) (gcc version 4.2.0 20070413 (prerelease) (Coup name: utmp
yaffs: dev is 32505857 name is "mt
odeSourcery Sourcery G++ Lite 2007q1-10)) #61 Thu Aug 28 21:29:58 MSD 2008
yaffs: Attempting MTD mount on 31.1, "mtdblock1"
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177ing yaffs2
block 282 is bad
Machine: StarterKit.ru SK-AT91SAM9XE512-S3E
block 1258 is bad
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
eth0: link up (100/Full)
mount: Mounting /dev/sd
Kernel command line: root=/dev/ram0 rw initrd=0x23100000,0x500000 console=ttyS0,
Please press Enter to activate this console. RomBOOT
115200 mem=64M
AT91: 96 gpio irqs in 3 banksotstrap...
PID hash table entries: 256 (order: 8, 1024 bytes...
Mount-cache hash table entries: 512
Area 0: C0000000 t
CPU: Testing write buffer coherency: ok
Area 1: C0004000 to C0007FFF
net_namespace: 64 bytes
Area 2: C0008000 to
NET: Registered protocol family 16
Area 3: C0038000 to C0
SCSI subsystem initialized
*** Warning - bad
usbcore: registered new interface driver usbfs
In: serial
usbcore: registered new interface driverErr: serial
Scanning device for bad blocks##############################
Bad eraseblock 345 at 0x02b20000
Bad eraseblock 1321 at 0x0a520000
Creating 2 MTD partitions on "at91_nand":#########################################
0x00000000-0x00800000 : "Partition 1"
0x00800000-0x10000000 : "Partition 2"#####################################
atmel_spi atmel_spi.0: Atmel SPI Controller at 0xfffc8000 (irq 12)
###########################################
mtd_dataflash spi0.0: AT45DB321x (4224 KBytes)
usbmon: debugfs is not available################################
at91_ohci at91_ohci: AT91 OHCI
at91_ohci at91_ohci: new USB bus registered, assigned bus number 1##################################
at91_ohci at91_ohci: irq 20, io mem 0x00500000 #########################################
usb usb1: configuration #1 chosen from 1
done
usbcore: registered new interface driver usb-storage Kernel Image (gzip compressed)
USB Mass Storage support registered. Data Size: 1422822 Bytes = 1.
udc: at91_udc version 3 May 2006
Load Address: 200
mice: PS/2 mouse device common for all micet: 20008000
Ve
i2c /dev entries driver
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RAMDISK: Compressed image found at block 0
RAMDISK: incomplete write (-28 != 32768) 8388608
VFS: Mounted root (ext2 filesystem).
Freeing init memory: 116K
attempt to access beyond end of device
ram0: rw=0, want=16508, limit=16384
EXT2-fs error (device ram0): ext2_get_inode: unable to read inode block - inode=
1633, block=8253
Warning: unable to open an initial console.
attempt to access beyond end of device
ram0: rw=0, want=16512, limit=16384
EXT2-fs error (device ram0): ext2_get_inode: unable to read inode block - inode=
1654, block=8255
attempt to access beyond end of device
ram0: rw=0, want=16498, limit=16384
EXT2-fs error (device ram0): ext2_get_inode: unable to read inode block - inode=
1600, block=8248
Kernel panic - not syncing: No init found. Try passing init= option to kernel.
Со rootfs от Павла загрузка по сети проходит без ошибок.
Подскажите пожалуеста в чем моя ошибка и как можно создать rootfs для загрузки по сети или с mmc.
Проще всего конечно положить на SD/MMC. Отформатируйте карту в ext2, скопируйте туда дерево файлов как есть. Kernel command line сделайте "rootwait root=/dev/mmcblk0p1 console=ttyS0,115200"
Относительно логики создания rootfs, принцип правильный, только даже я сам не смог его реализовать (натыкался примерно на такое же поведение системы), в итоге когда то взял rootfs от какой то из плат для 9200 и подменил ее содержимое на свое (с тех далеких пор к этому вопросу не возвращался), отсюда и эти "выкрутасы" с монтированием-размонтированием (а не создание и копирование).
Хотя этот метод представляет интерес разве что из академических соображений, когда дальше начнете наполнять корневуху, поймете что потратите тучу времени на сборку требуемых утилит, как догадываетесь, радикальное решение buildroot, сейчас он во вполне "вменяемом" состоянии, обсуждение здесь там же и конфиги есть.
Не пользуйтесь старьем initrd - используйте _нормальный актуальный на данный момент метод_ initramfs. Там достаточно в конфиге просто указать путь к rootfs, при сборке ядра все будет автоматически сделано. Если поискать здесь на форуме все давно разжевано. initrd _во всем_ хуже initramfs.
Небольшой хинт - не обязательно ядро очищать make clean после изменения конфига и сборкой. Изменяйте конфиг и просто make - сильно экономит время :)
2Strijar
console=ttyS0,115200 - это у Павла еще с первых плат видимо тянется :) Если заглянуть в исходники, linux-xy/arch/arm/mach-at91/board-sam9260ek.c
Была под ДОС левой кнопкой в Ubuntu кликаю там в свойствах
Filesystem type: ext3/ext4
Kernel command line настраивал в U-BOOT U-Boot>setenv bootargs rootwait root=/dev/mmcblk0p1
далее в логе загрузки
--------------------------------------------------------------------
.......
CPU0: D cache: 8192 bytes, associativity 4, 32 byte li
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: root=/dev/mmcblk0p1 console=ttyS0,115200
AT91: 96 gpio irqs in 3 banks
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80x30
.........
-----------------------------------------------------------------
Ошибка выскочила по поводу педеданных параметров
-------------------------------------------------------------------------
.........
RPC: Registered tcp transport module.
Root-NFS: No NFS server available, giving up.
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "mmcblk0p1" or unknown-block(2,0)
Please append a correct "root=" boot option; here are the available partitions:
1f00 8192 mtdblock0 (driver?)
1f01 253952 mtdblock1 (driver?)
1f02 4224 mtdblock2 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
------------------------------------------------------------------------
(на флеш скопировал содержимое примонтированной во временную папку rootfs)
Думаю флеш не так отформатирована
У вас случайно драйвер mmc не динамическим модулем собран ? Это я к тому что так было раньше на диске с платой - сейчас не знаю. Если да - это проблема яйца и курицы :) Для чтения root нужен драйвер mmc который лежит в root. Все что касается mci, mmc и фс должно быть собрано статически.