You can find an early version of the documentation for this here:
https://sites.google.com/a/chromium.org/dev/network-based-development
The CL for enabling this in U-Boot is:
http://codereview.chromium.org/6480056/
With this you should be able to:
- Get an IP address in U-Boot via DHCP
- TFTP the kernel from your machine
- Boot it with NFS root
Any problems please follow up here.
Regards,
Simon
Actually the CL has landed so you can just use ToT (repo sync!) Yes
you need to understand the U-Boot vars. Please let me know if docs
need work on that side.
Regards,
Simon
On Tue, Feb 22, 2011 at 3:25 PM, Sunil Nagpal <suniln...@gmail.com> wrote:
> Hi Simon,
>
> How do you suggest I apply the CL? I'm kind of confused about that. I
> have my DHCP server and TFTP servers set up, that's pretty simple.
> It's just the U-Boot Environment Variables/U-Boot Boot Flow steps that
> I'm kind of confused on before I can test the whole thing.
>
> Btw, I'm using a nightly build/image rather than my own, which
> shouldn't be a problem (I did that for NFS Boot before).
>
> Thanks for your help again.
>
> -Sunil
> --
> Chromium OS Developers mailing list: chromiu...@chromium.org
> View archives, change email options, or unsubscribe:
> http://groups.google.com/a/chromium.org/group/chromium-os-dev?hl=en
>
You should set them and then use 'saveenv' to save them. Then when you
reboot they will still be there.
Regards,
Simon
> Chromium OS Developers mailing list: chromiu...@chromium.org
I would encourage you to add a few more details to this. On the web
page it talks of adding these variables:
setenv serverip 172.22.73.60
setenv tftpserverip 172.22.73.60
setenv nfsserverip 172.22.73.60
setenv board seaboard
setenv serial# 26
setenv user earnest
saveenv
Are you doing this?
If you are setting myargs, I guess you are not following the
documented flow. This is fine, but it might be easier if you did.
Also check you are using the latest U-Boot as the network stuff only
landed last week. If you type 'defaultenv' you should see quite a few
things, like:
bootcmd=usb start; if test ${ethact} != ""; then run dhcp_boot ; fi ;
run keynfs_boot ; run usb_boot ; run mmc_boot
bootdelay=2
baudrate=115200
ipaddr=10.0.0.2
serverip=10.0.0.1
rootpath="/export/nfsroot-${user}-${board}-${serial#}"
bootfile=uImage
loadaddr=0x40C000
console=ttyS0,115200n8
cros_bootfile=/boot/vmlinux.uimg
user=user
board=arm
serial#=1
tftppath=/tftpboot/uImage
tftpserverip=10.0.0.1
nfsserverip=10.0.0.1
mmcdev=0
regen_all=setenv common_bootargs console=${console} ${platform_extras}
noinitrd; setenv bootargs ${common_bootargs} ${extra_bootargs}
${bootdev_bootargs}
regen_net_bootargs=setenv bootdev_bootargs dev=/dev/nfs4 rw
nfsroot=${nfsserverip}:${rootpath} ip=dhcp; run regen_all
dhcp_setup=setenv tftppath
/tftpboot/uImage-${user}-${board}-${serial#}; setenv rootpath
/export/nfsroot-${user}-${board}-${serial#}; setenv autoload n; run
regen_net_bootargs
dhcp_boot=run dhcp_setup; bootp; tftpboot ${loadaddr}
${tftpserverip}:${tftppath}; bootm ${loadaddr}
keynfs_setup=setenv rootpath
/export/nfsroot-${user}-${board}-${serial#}; run regen_net_bootargs
keynfs_boot=run keynfs_setup; ext2load usb 0:1 ${loadaddr} uImage;
bootm ${loadaddr}
usb_setup=setenv bootdev_bootargs root=/dev/sda3; run regen_all
usb_boot=run usb_setup; ext2load usb 0:3 ${loadaddr} ${cros_bootfile};
bootm ${loadaddr}
mmc_setup=mmc init ${mmcdev}; setenv bootdev_bootargs
root=/dev/mmcblk0p5; run regen_all
mmc_boot=run mmc_setup; ext2load mmc ${mmcdev}:3 ${loadaddr}
${cros_bootfile}; bootm ${loadaddr}
stdin=serial
stdout=serial,lcd
stderr=serial,lcd
platform_extras=lp0_vec=0x2000@0x1C406000
kcrashmem=0x100000@0x02000000 mem=384M@0M nvmem=128M@384M
mem=512M@512M
ethact=sms0
Please can you be more specific about your question, and perhaps
include a console dump of what is wrong, and what you expect. You
should be able to follow along with the console trace at the end of
the web page.
https://sites.google.com/a/chromium.org/dev/network-based-development
Regards,
Simon
> Chromium OS Developers mailing list: chromiu...@chromium.org
Try putting it in a Linux box (or Seaboard if you like) and typing
lsusb. I have added information about the ones we support to the web
page.
Supported USB Ethernet Adapters / USB Ethernet Dongles
Only the ASIX AX88772 chip is supported at present. The following
supported adapters are shown as {vendor, device}. Type lsusb with the
adapter attached to see the vendor and device numbers for your
adapter.
{ 0x05ac, 0x1402 }, /* Apple USB Ethernet Adapter */
{ 0x07d1, 0x3c05 }, /* D-Link DUB-E100 H/W Ver B1 */
{ 0x0b95, 0x772a }, /* Cables-to-Go USB Ethernet Adapter */
{ 0x0b95, 0x7720 }, /* Trendnet TU2-ET100 V3.0R */
{ 0x0b95, 0x1720 }, /* SMC */
{ 0x0db0, 0xa877 }, /* MSI - ASIX 88772a */
{ 0x13b1, 0x0018 }, /* Linksys 200M v2.1 */
{ 0x1557, 0x7720 }, /* 0Q0 cable ethernet */
{ 0x2001, 0x3c05 }, /* DLink DUB-E100 H/W Ver B1 Alternate */
Regards,
Simon
> Chromium OS Developers mailing list: chromiu...@chromium.org
--secure, -s
Change root directory on startup. This means the remote host
does not need to pass along the directory as part of the trans‐
fer, and may add security. When --secure is specified, exactly
one directory should be specified on the command line. The use
of this option is recommended for security as well as compati‐
bility with some boot ROMs which cannot be easily made to
include a directory name in its request.
> Chromium OS Developers mailing list: chromiu...@chromium.org
Yes, also check the logs on your workstation:
sudo tail -f /var/log/daemon.log
Also check that your dhcp_boot is ok:
CrOS> print dhcp_boot
dhcp_boot=run dhcp_setup; bootp; tftpboot ${loadaddr}
${tftpserverip}:${tftppath}; bootm ${loadaddr}
Regards,
Simon
> --
> Chromium OS Developers mailing list: chromiu...@chromium.org
> View archives, change email options, or unsubscribe:
> http://groups.google.com/a/chromium.org/group/chromium-os-dev?hl=en
>
> --
> Chromium OS Developers mailing list: chromiu...@chromium.org
> View archives, change email options, or unsubscribe:
> http://groups.google.com/a/chromium.org/group/chromium-os-dev?hl=en
>
It might be easier if you just used the scripts I set up.
Either:
boot
or:
usb start
run dhcp_boot
should do it.
Is 172.17.150.240 the address of your tftp server, or just the dhcp
server? The scripts set 'autoload' to n to avoid bootp doing this.
Regards,
Simon
On Thu, Feb 24, 2011 at 3:34 PM, Sunil Nagpal <suniln...@gmail.com> wrote:
> I feel like I'm setting up something wrong with the ip addresses. I looked
> at tcpdump and daemon.log but both spit out tons of stuff that doesn't help
> me, at least I don't think so. Is there something specific I should look
> for?
172.17.150.240 right?
sudo tftpdump -i eth0 port tftp
should show you traffic - perhaps add -vvv
Also you server is 172.17.151.160 - is that on the same subnet? If
not, do you have the gatewayip set?
Regards,
Simon
Also please:
cat /etc/default/tftpd-hpa
dpkg -l tftpd-hpa
ls -l /tftpboot/uImage-nvidia-seaboard-26
You really need to be a little more methodical about this. You have
missed out the 'Then edit /etc/default/tftpd-hpa like this' step.
man tftpd
...
--secure, -s
Change root directory on startup. This means the remote host
does not need to pass along the directory as part of the trans‐
fer, and may add security. When --secure is specified, exactly
one directory should be specified on the command line. The use
of this option is recommended for security as well as compati‐
bility with some boot ROMs which cannot be easily made to
include a directory name in its request.
sudo tail -f /var/log/daemon.log
should show what is happening, but basically you have missed a step.
Perhaps just run through the tftp server setup from the start - it is
only a a few instructions. The -s flag changes the behavior of tftpd.
Regards,
Simon