Anúncio

Início > NFS , TFTP , Uboot > Iniciando usando NFS e TFTP (atualizado)

Inicialização usando NFS e TFTP (atualizado)

Ao invés de lentamente desgastando o seu flash NAND você pode iniciar o mini2440 através de uma rede de carregar o kernel usando TFTP eo SO a partir de um compartilhamento NFS. Isso também torna muito mais rápido para testar as alterações. Usando o Fedora 11, você pode usar o yum para instalar tftp, tftp-server e nfs-utils.

yum install tftp tftp-server nfs-utils

Eu criei uma pasta / home/doug/mini2440/root_fs e acrescentou a seguinte linha no / etc / exports para permitir r / w acesso a partir de 192.168.1 .*:

doug / mini2440 / root_fs 192.168.1.1 / 24 ( rw, sync ,no_root_squash ) / Home / doug / mini2440 / root_fs 192.168.1.1 / 24 (rw, sync, no_root_squash)

.. E extraído o sistema de arquivos Angstrom como root para / home/doug/mini2440/root_fs

Você precisará editar o arquivo / etc / xinetd.d / tftp para configuração TFTP. O meu é postado abaixo como referência, você pelo menos precisa definir disable = no.

# Default: off
# Descrição: O servidor tftp serve arquivos usando a transferência de arquivo trivial
# Protocolo. O protocolo tftp é freqüentemente usado para boot diskless
# Estações de trabalho, arquivos de configuração de rede para baixar-aware impressoras,
# E para iniciar o processo de instalação para alguns sistemas operacionais.
serviço tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
sbin / in.tftpd server = / usr / sbin / in.tftpd
home / doug / mini2440 / kernel server_args =-s / home / doug / mini2440 kernel /
per_source = 11
cps = 100 2
flags = IPv4
}

Comecei, então, os serviços:

init.d / nfs start / Etc / init.d / nfs start

service xinetd start / Sbin / service xinetd iniciar

Para automatizar esses eu acho que você pode fazer:

chkconfig tftp on

chkconfig xinetd em

chkconfig nfs em

Next i editou o ambiente Uboot. Use o comando setenv para modificar ou adicionar entradas e savenev quando terminar. Acabei com o seguinte:

MINI2440 # printenv
BootDelay = 3
baudrate = 115200
: 18 : 12 : 27 ethaddr = 08:08: 11: 18: 12: 27
usbtty = cdc_acm
=mini2440-nand:256k @ 0 ( u-boot ) ,128k ( env ) ,5m ( kernel ) ,- ( root ) mtdparts = = mtdparts mini2440-nand: 256k @ 0 (u-boot), 128k (env) 5m, (kernel), - (root)
=0tb mini2440 = = mini2440 0tb
=ttySAC0, 115200 noinitrd bootargs_base = console = ttySAC0, 115200 noinitrd
= / sbin / init bootargs_init = init = / sbin / init
= / dev / mtdblock3 rootfstype =jffs2 root_nand = root = / dev / mtdblock3 rootfstype = jffs2
= / dev / mmcblk0p2 rootdelay = 2 root_mmc = root = / dev / mmcblk0p2 rootdelay = 2
mnt / nfs root_nfs = / mnt / nfs
= / dev / nfs rw nfsroot = ${serverip} : ${root_nfs} set_root_nfs = setenv raiz root_nfs = / dev / nfs rw nfsroot = $ {serverip}: $ {} root_nfs
ip = ${ipaddr} : ${serverip} :: ${netmask} :mini2440:eth0 ifconfig_static = executar ip ifconfig setenv = $ {IPADDR}: $ {} serverip:: $ {netmask}: mini2440: eth0
ip =dhcp ifconfig_dhcp = executar ip ifconfig setenv = dhcp
=dhcp ifconfig = ip = dhcp
set_bootargs_mmc = setenv bootargs $ {bootargs_base} $ {} $ {bootargs_init mini2440} $ {} root_mmc
set_bootargs_nand = setenv bootargs $ {bootargs_base} $ {} $ {bootargs_init mini2440} $ {} root_nand
set_bootargs_nfs = executar set_root_nfs; setenv bootargs $ {} $ {bootargs_base bootargs_init} $ {} $ {mini2440 root_nfs} $ {ifconfig}
=mini2440-nand mtdids = = nand0 mini2440-nand
=ttySAC0, 115200 noinitrd init = / sbin / init mini2440 =0tb ip =192.168.1.85 root = / dev / nfs rw nfsroot =192.168.1.10: / home / doug / mini2440 / root_fs bootargs = console = ttySAC0, 115200 noinitrd init = / sbin / init = mini2440 0tb ip 192.168.1.85 = root = / dev / nfs rw nfsroot = 192.168.1.10: / home / doug / mini2440 / root_fs
bootfile = "uImage"
filesize = 1E9088
fileaddr = 32000000
gatewayip = 192.168.1.100
netmask = 255.255.255.0
ipaddr = 192.168.1.85
serverip = 192.168.1.10
bootcmd = tftp; bootm 32000000
partition = nand0, 0
mtddevnum = 0
mtddevname = u-boot

Nota quando você setenv você tem que omitir o sinal =. Obviamente você vai querer mudar alguns deste para atender a sua configuração de rede. Aqui o meu laptop é 192.168.1.10 e 192.168.1.100 é a minha caixa de pfsense que é a atribuição de 192.168.1.85 à mini2440 por DHCP.

Quando você inicializa o sistema irá Uboot baixar o kernel mais de TFTP e depois montar o compartilhamento NFS.

Se você tiver DHCP em sua rede Angstrom deverá obter automaticamente um IP. Você pode pular o resto neste caso!

Se você quiser um endereço estático você pode mudar / etc / network / interfaces. Eu simplesmente mudou dhcp para estáticos para eth0:

iface eth0 inet static

E depois disso o sistema arrancado bem. Finalmente eu tenho uma nota que diz que eu deletei o link simbólico / etc / resolve.conf e substituiu-o com:

domínio local
busca local
nameserver 192.168.1.100

Ser avisado de que todo o das necessidades acima para ser compatível com o seu firewall e SELinux, não vai funcionar de outra maneira!

Encontrei os seguintes links úteis:

TFTP

NFS

U-boot NFS / TFTP inicialização

Tags: , Categorias: NFS , TFTP , Uboot Tags: ,
  1. Anafor
    31 de dezembro de 2009 às 08:02 | # 1

    Caros Amigos,
    Eu tenho construir um distrubition OpenEmbedded para mini2440. Eu copiei
    mini2440-base image.tar.gz para o meu pc host e eu arrenged um NFS para cross
    edifício. Ele funciona OK, mas quando eu copiei e extrair o
    mini2440-console image.tar.gz, meu NFS não está respondendo. Você tem alguma
    conselho para mim? Copiei as minhas mensagens do console minicom e acompanha-lo.

    Eu tentei também com rootfs para NFS sistem link abaixo, mas ainda não é
    responder.

    U-Boot 1.3.2-mini2440 (06 de outubro de 2009 - 12:51:09)

    I2C: pronto
    DRAM: 64 MB
    Flash: 2 MB
    NAND: tabela de bloco Bad não encontrado para chip de 0
    Tabela de bloco ruim não encontrado para chip de 0
    128 MiB
    Ambiente encontrados deslocamento em OOB ..
    USB: USB S3C2410 deviced
    Em: serial
    Out: serial
    Err: serial
    MAC: 08:08:11:18:12:27
    Pressione qualquer tecla para parar autoboot: 0
    dm9000 i / o: 0 × 20000300, id: 0x90000a46
    DM9000: executado em modo de 16 bits
    MAC: 08:08:11:18:12:27
    TFTP a partir do servidor 192.168.1.10; o nosso endereço IP é 192.168.1.85
    "UImage.bin 'filename.
    Endereço de carga: 0 × 32000000
    Loading: bad checksum
    bad checksum
    T ################################################# ################
    ################################################## ###############
    #########
    feito
    Bytes transferidos = 2031220 (1efe74 hex)
    # # Iniciando kernel a partir da imagem do Legacy no 32000000 ...
    Nome da imagem: Angstrom/2.6.31 + git/mini2440
    Criado: 2009-10-30 09:06:09 UTC
    Tipo da Imagem: ARM da imagem do kernel Linux (não comprimido)
    Tamanho dos dados: 2031156 Bytes = 1,9 MB
    Endereço de carga: 30008000
    Ponto de entrada: 30008000
    Verificando Checksum ... OK
    Imagem Kernel Loading ... OK
    OK

    De partida do kernel ...

    Uncompressing
    Linux versão 2.6.31.1 (sven @ office) (gcc versão 4.2.4) # 1 sex 30 out 2009 17:04:01 CST
    CPU: ARM920T [41129200] revisão 0 (ARMV4T), cr = c0007177
    CPU: VIVT cache de dados, cache de instrução VIVT
    Máquina: MINI2440
    Política de memória: ECC deficientes, write-back cache de dados
    CPU S3C2440A (id 0 × 32440001)
    Relógios S3C24XX, (c) 2004 Eletrônica Simtec
    S3C244X: Núcleo 405,000 MHz, 101,250 MHz de memória, periféricos 50,625 MHz
    CLOCK: modo lento (1.500 MHz), rápido, em MPLL, UPLL em
    Construído um zonelists a fim Zone, agrupamento de mobilidade por diante. Total de páginas: 16256
    Linha de comando do kernel: console = ttySAC0, 115200 noinitrd init = / sbin / init = mini2440 0tb ip 192.168.1.85 = root = / dev / nfs rw nfsroot = 192.168.1.10: / hd
    PID entradas da tabela de hash: 256 (ordem: 8, 1024 bytes)
    Cache de entradas da tabela de hash dentry: 8192 (ordem: 3, 32768 bytes)
    Inode cache-hash de entradas da tabela: 4096 (ordem: 2, 16384 bytes)
    Memória: 64MB = 64MB totais
    Memória: 60640KB (código 3568K, dados 417K, 132K init, highmem 0K) disponíveis
    SLUB: Genslabs = 11, = 32 HWalign Ordem, = 0-3, MinObjects = 0, CPUs = 1, Nodes = 1
    NR_IRQS: 85
    irq: limpando status pendente 02000000
    irq: compensação estado subpending 00000002
    Console: device dummy de cor 80 × 30
    consola [ttySAC0] enabled
    Loop de atraso calibrar ... 201,93 BogoMIPS (lpj = 504832)
    Monte-cache entradas da tabela de hash: 512
    CPU: Teste de coerência buffer de gravação: ok
    Família de protocolos registrados 16: NET
    MINI2440: string Opção mini2440 = 0tb
    MINI2440: LCD [0:240 x320] 1:800 2:1024 × 480 × 768
    S3C2440: arquitetura Inicialização
    S3C2440: Suporte IRQ
    S3C24XX driver DMA, (c) 2003-2004,2006 Simtec Eletrônica
    DMA channel 0 no c4808000, irq 33
    DMA canal 1 em c4808040, irq 34
    DMA no canal 2 c4808080, irq 35
    DMA canal 3 na c48080c0, irq 36
    S3C244X: Suporte Relógio, DVS off
    bio: criar laje a 0
    usbcore: registrado usbfs novo driver de interface
    usbcore: hub driver registrado nova interface
    usbcore: registrado novo driver de dispositivo usb
    S3C-i2c S3C2440-i2c: endereço do escravo 0 × 10
    S3C-i2c S3C2440-i2c: set freqüência do barramento para 98 KHz
    S3C-i2c S3C2440-i2c: Adaptador S3C I2C: i2c-0
    Família de protocolos registrados 2: NET
    IP rota de cache de hash entradas da tabela: 1024 (ordem: 0, 4096 bytes)
    TCP estabelecida entradas da tabela hash: 2048 (ordem: 2, 16384 bytes)
    TCP ligar as entradas da tabela de hash: 2048 (ordem: 1, 8192 bytes)
    TCP: tabelas Hash configurado (2048 estabeleceu bind 2048)
    TCP reno registrados
    Família de protocolos registrados 1: NET
    JFFS2 versão 2.2. (NAND) © 2001-2006 Red Hat, Inc.
    ROMFS MTD (C) 2007 Red Hat, Inc.
    msgmni foi ajustado para 118
    alg: No teste para stdrng (krng)
    io scheduler noop registrados
    io scheduler registrado antecipatória (default)
    io scheduler deadline registrados
    io scheduler CFQ registrados
    Console: switching para o dispositivo de cor frame buffer de 60 × 53
    FB0 torna-: s3c2410fb dispositivo de buffer de quadros
    S3C2440-uart.0: ttySAC0 MMIO em 0 × 50000000 (irq = 70) é um S3C2440
    S3C2440-uart.1: ttySAC1 MMIO em 0 × 50004000 (irq = 73) é um S3C2440
    S3C2440-uart.2: ttySAC2 MMIO em 0 × 50008000 (irq = 76) é um S3C2440
    brd: módulo carregado
    at24 0-0050: 1024 byte EEPROM 24C08 (gravável)
    dm9000 driver Ethernet, V1.31
    eth0: dm9000e em c486e300, c4872304 IRQ 51 MAC: 08:08:11:18:12:27 (chip)
    S3C24XX controlador NAND, (c) 2004 Simtec Eletrônica
    s3c24xx-nand S3C2440-nand: Tacls = 1, 9ns Twrph0 = 3 29ns, 19ns Twrph1 = 2
    s3c24xx-nand S3C2440-nand: NAND macio ECC
    NAND dispositivo: ID Fabricante: ID, 0xec Chip: 0xf1 (Samsung NAND 128MiB 3,3 V 8-bit)
    Criação de 4 partições MTD em "NAND 128MiB 3,3 V 8-bit":
    0 × × 000000040000 000000000000-0: "U-Boot"
    ftl_cs: header FTL não encontrado.
    0 × × 000000060000 000000040000-0: "u-boot-env"
    ftl_cs: header FTL não encontrado.
    0 × × 000000560000 000000060000-0: "kernel"
    ftl_cs: header FTL não encontrado.
    0 × × 000008000000 000000560000-0: "root"
    ftl_cs: header FTL não encontrado.
    ohci_hcd: USB 1.1 Host Controller 'Open' (OHCI) Driver
    S3C2410-ohci S3C2410-ohci: S3C24XX OHCI
    S3C2410-ohci S3C2410-ohci: new USB bus registrado, o autocarro número atribuído um
    S3C2410-ohci S3C2410-ohci: irq 42, io mem 0 × 49000000
    usb usb1: configuração # 1 escolhido a partir de 1 escolha
    hub 1-0:1.0: USB hub encontrados
    hub 1-0:1.0: 2 portas detectado
    usbcore: libusual driver registrado nova interface
    S3C2440-usbgadget S3C2440-usbgadget: S3C2440: FIFO aumentando para 128 bytes
    camundongos: PS / 2 dispositivo de mouse comum para todos os ratos
    entrada: GPIO-chaves como / devices/platform/gpio-keys/input/input0
    S3C2440-ts-ts S3C2440: Starting
    Criado grupo ts filtro len 12 de profundidade 2 fechar 10 debulhar 6
    Criado Median ts filtro len 20 de profundidade 2 24 de dezembro
    Criado média ts filtro len 4 profundidade 2 thresh 65535
    Criado Linear ts profundidade filtro 2
    S3C2440-ts-ts S3C2440: 4 filtro (s) inicializada
    S3C2440-ts-ts S3C2440: carregado com êxito
    entrada: S3C2410 TouchScreen como / devices/virtual/input/input1
    S3C24XX RTC, (c) 2004,2006 Simtec Eletrônica
    S3C2410-rtc S3C2410-rtc: rtc deficientes, permitindo re-
    S3C2410-rtc S3C2410-rtc: rtc core: S3C registrado como rtc0
    i2c / dev motorista entradas
    S3C2410 Watchdog Timer, (c) 2004 Eletrônica Simtec
    S3C2410-wdt S3C2410-wdt: watchdog inativos, reset deficientes, irq habilitado
    CpuIdle: usar escada governador
    sdhci: Secure Digital Anfitrião motorista Controller Interface
    sdhci: Copyright (c) Pierre Ossman
    canal mapeado 0-0
    S3C2440-sdi S3C2440-sdi: desligado.
    S3C2440-sdi S3C2440-sdi: inicialização feito.
    Dispositivo levou registrados: LED1
    Dispositivo levou registrados: LED2
    Dispositivo levou registrados: LED3
    Dispositivo levou registrados: LED4
    Dispositivo levou registrados: luz de fundo
    usbcore: hiddev driver registrado nova interface
    usbcore: usbhid driver registrado nova interface
    usbhid: v2.6: USB HID motorista núcleo
    Advanced Linux Sound Architecture Driver Version 1.0.20.
    Nenhum dispositivo para a DAI UDA134X
    Nenhum dispositivo para a DAI s3c24xx-I2S
    S3C24XX_UDA134X driver de áudio SoC
    UDA134X SoC Audio Codec
    Asoc: UDA134X mapeamento s3c24xx-I2S ok
    ALSA lista de dispositivos:
    # 0: S3C24XX_UDA134X (UDA134X)
    TCP cúbicos registrados
    Família de protocolos registrados 17: NET
    RPC: módulo de transporte registrados udp.
    RPC: módulo de transporte registrados tcp.
    S3C2410-rtc S3C2410-rtc: clock configuração do sistema para 2009/12/19 00:36:25 UTC (1261182985)
    eth0: link abaixo
    IP-Config: netmask 255.255.255.0 Guessing
    IP-Config: Complete:
    device = eth0, addr = 192.168.1.85 máscara = 255.255.255.0, gw = 255.255.255.255,
    host = 192.168.1.85, domain =, nis-domain = (nenhum),
    bootserver = 255.255.255.255, rootserver = 192.168.1.10 rootpath, =
    Looking up port of RPC 100003 / 2 em 192.168.1.10
    eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
    Looking up port of RPC 100005 / 1 em 192.168.1.10
    VFS: root Montada (nfs sistema de arquivos) em 0:14 dispositivo.
    Liberando memória init: 132K
    INIT: version 2,86 inicialização
    Por favor, aguarde: a inicialização ...
    Udev partida
    Preenchendo cache de dev
    Remontagem do sistema de arquivos raiz ...
    HZ valor desconhecido! (90) Assuma 100.
    ALSA: Restaurando configurações do mixer ...
    Configurando interfaces de rede ... Nenhum Estado está presente para cartão S3C24XXUDA134X
    / Usr / sbin / alsactl: parse: 1639: Não é possível abrir o arquivo '/ usr/share/alsa/init/00main': Arquivo ou diretório
    Nenhum Estado está presente para cartão S3C24XXUDA134X
    nfs: não o servidor 192.168.1.10 responder, ainda tentando

  2. jmboy
    27 de maio de 2010 às 08:49 | # 2

    Oi a todos,

    Tenho exatamente o mesmo comportamento usando OpenEmbedded com NFS

    Suponho que, após a mensagem "Nenhum Estado está presente para cartão S3C24XXUDA134X" OpenEmbedded tentar reconfig interface ethernet e não ligação NFS, mas eu não sei o que fazer para evitar isso.
    Alguém encontrou uma solução?
    Obrigado por me ajudar
    jmboy

  3. 08 de agosto de 2010 às 13:57 | # 3

    Oi
    Eu tive o mesmo problema, a rede foi reconfigurada e conexão NFS foi perdida.
    Eu não poderia encontrar URL da solução para postar aqui, mas eu ainda mudaram arquivo no meu rootfs.
    editar o arquivo / etc / init.d / networking em seu rootfs
    encontrar linhas que se parecem com isto:
    echo-n "Configurando interfaces de rede ..."
    ifup-a
    echo "feito."
    e comente segunda linha para ter algo como isto:
    echo-n "Configurando interfaces de rede ..."
    # Ifup-a
    echo "feito."
    após este rootfs sobre NFS não tem problemas. Pelo menos para mim.
    Isto parece feio solução alternativa, mas espero que isso irá ajudá-lo.

  4. 08 de agosto de 2010 em 14:18 | # 4

    Oi, sim, quando me deparei com este problema eu mudei para um endereço IP fixo. O estranho foi quando eu tentei a mesma coisa em uma rede diferente, configurado em praticamente da mesma maneira, eu não precisava mudar nada. Eu nunca descobri qual era a diferença. Obrigado pela Irakli post.

  1. Nenhum trackback ainda.