meta-netboot: generate appropriate resolv.conf from /proc/net/pnp
[AGL/meta-agl.git] / meta-netboot / README
1 meta-netboot
2 ============
3
4 This layer contains some recipes and configuration adjustments to allow network boot through NBD (network block device).
5
6 Content and usage
7 -----------------
8
9 This layer creates a new supplementary initrd image which can be downloaded through TFTP with the kernel.
10 At boot time, the init script will try to mount the rootfs based on the following kernel command line parameters:
11 * nbd.server: IP address to reach the NBD server
12 * nbd.port: TCP port on which server is listening (default: 10809)
13 * nbd.dev: nbd device to use (default: /dev/nbd0)
14 * nbd.debug: activate debug mode (init script is then interruptible)
15
16 The layer meta-netboot contains recipes for the following components:
17 * busybox: activate the built-in NBD client
18 * initramfs-netboot: contains the init script started by the kernel: basically, this script mounts the real root filesystem, then pivot_root on it and finally exec systemd.
19 * initramfs-netboot-image: image to specify for building the initrd
20
21 To enable the build of the netboot initrd and ext4 rootfs, add the following line in conf/local.conf:
22
23 INHERIT += "netboot"
24
25
26 Server side
27 -----------
28
29 On the server side (assuming that the build dir is stored in $BUILD) we can run:
30
31 * a TFTP server, for example tftpd-hpa started with $BUILD/tmp/deploy/images as the TFTP dir:
32
33   /usr/sbin/in.tftpd --listen --user tftp --address 0.0.0.0:69 --secure $BUILD/tmp/deploy/images
34
35 * a NBD server, for example xnbd-server, used to expose the whole ext4 rootfs as a network block device:
36
37   xnbd-server --target --lport 10809 $BUILD/tmp/deploy/images/$MACHINE/agl-demo-platform-$MACHINE.ext4
38
39
40 Target side
41 -----------
42
43 On the target board, a specific setup should also be done. For example, for Renesas Porter board, the following U-boot environment could be used (adjust IP addresses !):
44
45 ------------------------------------------------------------------
46 setenv 'bootkfile' 'uImage+dtb'
47 setenv 'bootkaddr' '0x40007fc0'
48 setenv 'bootifile' 'initramfs-netboot-image-porter.ext4.gz.u-boot'
49 setenv 'bootiaddr' '0x50000000'
50 setenv 'ipaddr' '<board_IP>'
51 setenv 'serverip' '<server_IP>'
52
53 setenv 'bootargs_console' 'console=ttySC6,38400 ignore_loglevel'
54 setenv 'bootargs_video' 'vmalloc=384M video=HDMI-A-1:1280x960-32@60'
55 setenv 'bootargs_extra' 'rw rootfstype=ext4 rootwait rootdelay=2'
56 setenv 'bootargs_root' 'root=/dev/ram0 ramdisk_size=16384 ip=dhcp'
57 setenv 'bootkload_net' 'tftp ${bootkaddr} porter/${bootkfile}'
58 setenv 'bootiload_net' 'tftp ${bootiaddr} porter/${bootifile}'
59 setenv 'bootcmd' 'setenv bootargs ${bootargs_console} ${bootargs_video} ${bootargs_root} ${bootargs_extra} nbd.server=${serverip}; run bootkload_net; run bootiload_net; bootm ${bootkaddr} ${bootiaddr}'
60
61 saveenv # optional: saves env in flash
62 run bootcmd # boots the board, executed automatically after power up
63 ------------------------------------------------------------------
64