| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 1 | Poky Hardware README | 
|  | 2 | ==================== | 
|  | 3 |  | 
|  | 4 | This file gives details about using Poky with the reference machines | 
|  | 5 | supported out of the box. A full list of supported reference target machines | 
|  | 6 | can be found by looking in the following directories: | 
|  | 7 |  | 
|  | 8 | meta/conf/machine/ | 
|  | 9 | meta-yocto-bsp/conf/machine/ | 
|  | 10 |  | 
|  | 11 | If you are in doubt about using Poky/OpenEmbedded with your hardware, consult | 
|  | 12 | the documentation for your board/device. | 
|  | 13 |  | 
|  | 14 | Support for additional devices is normally added by creating BSP layers - for | 
|  | 15 | more information please see the Yocto Board Support Package (BSP) Developer's | 
|  | 16 | Guide - documentation source is in documentation/bspguide or download the PDF | 
|  | 17 | from: | 
|  | 18 |  | 
|  | 19 | http://yoctoproject.org/documentation | 
|  | 20 |  | 
|  | 21 | Support for physical reference hardware has now been split out into a | 
|  | 22 | meta-yocto-bsp layer which can be removed separately from other layers if not | 
|  | 23 | needed. | 
|  | 24 |  | 
|  | 25 |  | 
|  | 26 | QEMU Emulation Targets | 
|  | 27 | ====================== | 
|  | 28 |  | 
|  | 29 | To simplify development, the build system supports building images to | 
|  | 30 | work with the QEMU emulator in system emulation mode. Several architectures | 
|  | 31 | are currently supported: | 
|  | 32 |  | 
|  | 33 | * ARM (qemuarm) | 
|  | 34 | * x86 (qemux86) | 
|  | 35 | * x86-64 (qemux86-64) | 
|  | 36 | * PowerPC (qemuppc) | 
|  | 37 | * MIPS (qemumips) | 
|  | 38 |  | 
|  | 39 | Use of the QEMU images is covered in the Yocto Project Reference Manual. | 
|  | 40 | The appropriate MACHINE variable value corresponding to the target is given | 
|  | 41 | in brackets. | 
|  | 42 |  | 
|  | 43 |  | 
|  | 44 | Hardware Reference Boards | 
|  | 45 | ========================= | 
|  | 46 |  | 
|  | 47 | The following boards are supported by the meta-yocto-bsp layer: | 
|  | 48 |  | 
|  | 49 | * Texas Instruments Beaglebone (beaglebone) | 
|  | 50 | * Freescale MPC8315E-RDB (mpc8315e-rdb) | 
|  | 51 |  | 
|  | 52 | For more information see the board's section below. The appropriate MACHINE | 
|  | 53 | variable value corresponding to the board is given in brackets. | 
|  | 54 |  | 
|  | 55 | Reference Board Maintenance | 
|  | 56 | =========================== | 
|  | 57 |  | 
|  | 58 | Send pull requests, patches, comments or questions about meta-yocto-bsps to poky@yoctoproject.org | 
|  | 59 |  | 
|  | 60 | Maintainers: Kevin Hao <kexin.hao@windriver.com> | 
|  | 61 | Bruce Ashfield <bruce.ashfield@windriver.com> | 
|  | 62 |  | 
|  | 63 | Consumer Devices | 
|  | 64 | ================ | 
|  | 65 |  | 
|  | 66 | The following consumer devices are supported by the meta-yocto-bsp layer: | 
|  | 67 |  | 
|  | 68 | * Intel x86 based PCs and devices (genericx86) | 
|  | 69 | * Ubiquiti Networks EdgeRouter Lite (edgerouter) | 
|  | 70 |  | 
|  | 71 | For more information see the device's section below. The appropriate MACHINE | 
|  | 72 | variable value corresponding to the device is given in brackets. | 
|  | 73 |  | 
|  | 74 |  | 
|  | 75 |  | 
|  | 76 | Specific Hardware Documentation | 
|  | 77 | =============================== | 
|  | 78 |  | 
|  | 79 |  | 
|  | 80 | Intel x86 based PCs and devices (genericx86) | 
|  | 81 | ========================================== | 
|  | 82 |  | 
|  | 83 | The genericx86 MACHINE is tested on the following platforms: | 
|  | 84 |  | 
|  | 85 | Intel Xeon/Core i-Series: | 
|  | 86 | + Intel Romley Server: Sandy Bridge Xeon processor, C600 PCH (Patsburg), (Canoe Pass CRB) | 
|  | 87 | + Intel Romley Server: Ivy Bridge Xeon processor, C600 PCH (Patsburg), (Intel SDP S2R3) | 
|  | 88 | + Intel Crystal Forest Server: Sandy Bridge Xeon processor, DH89xx PCH (Cave Creek), (Stargo CRB) | 
|  | 89 | + Intel Chief River Mobile: Ivy Bridge Mobile processor, QM77 PCH (Panther Point-M), (Emerald Lake II CRB, Sabino Canyon CRB) | 
|  | 90 | + Intel Huron River Mobile: Sandy Bridge processor, QM67 PCH (Cougar Point), (Emerald Lake CRB, EVOC EC7-1817LNAR board) | 
|  | 91 | + Intel Calpella Platform: Core i7 processor, QM57 PCH (Ibex Peak-M), (Red Fort CRB, Emerson MATXM CORE-411-B) | 
|  | 92 | + Intel Nehalem/Westmere-EP Server: Xeon 56xx/55xx processors, 5520 chipset, ICH10R IOH (82801), (Hanlan Creek CRB) | 
|  | 93 | + Intel Nehalem Workstation: Xeon 56xx/55xx processors, System SC5650SCWS (Greencity CRB) | 
|  | 94 | + Intel Picket Post Server: Xeon 56xx/55xx processors (Jasper Forest), 3420 chipset (Ibex Peak), (Osage CRB) | 
|  | 95 | + Intel Storage Platform: Sandy Bridge Xeon processor, C600 PCH (Patsburg), (Oak Creek Canyon CRB) | 
|  | 96 | + Intel Shark Bay Client Platform: Haswell processor, LynxPoint PCH, (Walnut Canyon CRB, Lava Canyon CRB, Basking Ridge CRB, Flathead Creek CRB) | 
|  | 97 | + Intel Shark Bay Ultrabook Platform: Haswell ULT processor, Lynx Point-LP PCH, (WhiteTip Mountain 1 CRB) | 
|  | 98 |  | 
|  | 99 | Intel Atom platforms: | 
|  | 100 | + Intel embedded Menlow: Intel Atom Z510/530 CPU, System Controller Hub US15W (Portwell NANO-8044) | 
|  | 101 | + Intel Luna Pier: Intel Atom N4xx/D5xx series CPU (aka: Pineview-D & -M), 82801HM I/O Hub (ICH8M), (Advantech AIMB-212, Moon Creek CRB) | 
|  | 102 | + Intel Queens Bay platform: Intel Atom E6xx CPU (aka: Tunnel Creek), Topcliff EG20T I/O Hub (Emerson NITX-315, Crown Bay CRB, Minnow Board) | 
|  | 103 | + Intel Fish River Island platform: Intel Atom E6xx CPU (aka: Tunnel Creek), Topcliff EG20T I/O Hub (Kontron KM2M806) | 
|  | 104 | + Intel Cedar Trail platform: Intel Atom N2000 & D2000 series CPU (aka: Cedarview), NM10 Express Chipset (Norco kit BIS-6630, Cedar Rock CRB) | 
|  | 105 |  | 
|  | 106 | and is likely to work on many unlisted Atom/Core/Xeon based devices. The MACHINE | 
|  | 107 | type supports ethernet, wifi, sound, and Intel/vesa graphics by default in | 
|  | 108 | addition to common PC input devices, busses, and so on. | 
|  | 109 |  | 
|  | 110 | Depending on the device, it can boot from a traditional hard-disk, a USB device, | 
|  | 111 | or over the network. Writing generated images to physical media is | 
|  | 112 | straightforward with a caveat for USB devices. The following examples assume the | 
|  | 113 | target boot device is /dev/sdb, be sure to verify this and use the correct | 
|  | 114 | device as the following commands are run as root and are not reversable. | 
|  | 115 |  | 
|  | 116 | USB Device: | 
|  | 117 | 1. Build a live image. This image type consists of a simple filesystem | 
|  | 118 | without a partition table, which is suitable for USB keys, and with the | 
|  | 119 | default setup for the genericx86 machine, this image type is built | 
|  | 120 | automatically for any image you build. For example: | 
|  | 121 |  | 
|  | 122 | $ bitbake core-image-minimal | 
|  | 123 |  | 
|  | 124 | 2. Use the "dd" utility to write the image to the raw block device. For | 
|  | 125 | example: | 
|  | 126 |  | 
|  | 127 | # dd if=core-image-minimal-genericx86.hddimg of=/dev/sdb | 
|  | 128 |  | 
|  | 129 | If the device fails to boot with "Boot error" displayed, or apparently | 
|  | 130 | stops just after the SYSLINUX version banner, it is likely the BIOS cannot | 
|  | 131 | understand the physical layout of the disk (or rather it expects a | 
|  | 132 | particular layout and cannot handle anything else). There are two possible | 
|  | 133 | solutions to this problem: | 
|  | 134 |  | 
|  | 135 | 1. Change the BIOS USB Device setting to HDD mode. The label will vary by | 
|  | 136 | device, but the idea is to force BIOS to read the Cylinder/Head/Sector | 
|  | 137 | geometry from the device. | 
|  | 138 |  | 
|  | 139 | 2. Without such an option, the BIOS generally boots the device in USB-ZIP | 
|  | 140 | mode. To write an image to a USB device that will be bootable in | 
|  | 141 | USB-ZIP mode, carry out the following actions: | 
|  | 142 |  | 
|  | 143 | a. Determine the geometry of your USB device using fdisk: | 
|  | 144 |  | 
|  | 145 | # fdisk /dev/sdb | 
|  | 146 | Command (m for help): p | 
|  | 147 |  | 
|  | 148 | Disk /dev/sdb: 4011 MB, 4011491328 bytes | 
|  | 149 | 124 heads, 62 sectors/track, 1019 cylinders, total 7834944 sectors | 
|  | 150 | ... | 
|  | 151 |  | 
|  | 152 | Command (m for help): q | 
|  | 153 |  | 
|  | 154 | b. Configure the USB device for USB-ZIP mode: | 
|  | 155 |  | 
|  | 156 | # mkdiskimage -4 /dev/sdb 1019 124 62 | 
|  | 157 |  | 
|  | 158 | Where 1019, 124 and 62 are the cylinder, head and sectors/track counts | 
|  | 159 | as reported by fdisk (substitute the values reported for your device). | 
|  | 160 | When the operation has finished and the access LED (if any) on the | 
|  | 161 | device stops flashing, remove and reinsert the device to allow the | 
|  | 162 | kernel to detect the new partition layout. | 
|  | 163 |  | 
|  | 164 | c. Copy the contents of the image to the USB-ZIP mode device: | 
|  | 165 |  | 
|  | 166 | # mkdir /tmp/image | 
|  | 167 | # mkdir /tmp/usbkey | 
|  | 168 | # mount -o loop core-image-minimal-genericx86.hddimg  /tmp/image | 
|  | 169 | # mount /dev/sdb4 /tmp/usbkey | 
|  | 170 | # cp -rf /tmp/image/* /tmp/usbkey | 
|  | 171 |  | 
|  | 172 | d. Install the syslinux boot loader: | 
|  | 173 |  | 
|  | 174 | # syslinux /dev/sdb4 | 
|  | 175 |  | 
|  | 176 | e. Unmount everything: | 
|  | 177 |  | 
|  | 178 | # umount /tmp/image | 
|  | 179 | # umount /tmp/usbkey | 
|  | 180 |  | 
|  | 181 | Install the boot device in the target board and configure the BIOS to boot | 
|  | 182 | from it. | 
|  | 183 |  | 
|  | 184 | For more details on the USB-ZIP scenario, see the syslinux documentation: | 
|  | 185 | http://git.kernel.org/?p=boot/syslinux/syslinux.git;a=blob_plain;f=doc/usbkey.txt;hb=HEAD | 
|  | 186 |  | 
|  | 187 |  | 
|  | 188 | Texas Instruments Beaglebone (beaglebone) | 
|  | 189 | ========================================= | 
|  | 190 |  | 
|  | 191 | The Beaglebone is an ARM Cortex-A8 development board with USB, Ethernet, 2D/3D | 
|  | 192 | accelerated graphics, audio, serial, JTAG, and SD/MMC. The Black adds a faster | 
|  | 193 | CPU, more RAM, eMMC flash and a micro HDMI port. The beaglebone MACHINE is | 
|  | 194 | tested on the following platforms: | 
|  | 195 |  | 
|  | 196 | o Beaglebone Black A6 | 
|  | 197 | o Beaglebone A6 (the original "White" model) | 
|  | 198 |  | 
|  | 199 | The Beaglebone Black has eMMC, while the White does not. Pressing the USER/BOOT | 
|  | 200 | button when powering on will temporarily change the boot order. But for the sake | 
|  | 201 | of simplicity, these instructions assume you have erased the eMMC on the Black, | 
|  | 202 | so its boot behavior matches that of the White and boots off of SD card. To do | 
|  | 203 | this, issue the following commands from the u-boot prompt: | 
|  | 204 |  | 
|  | 205 | # mmc dev 1 | 
|  | 206 | # mmc erase 0 512 | 
|  | 207 |  | 
|  | 208 | To further tailor these instructions for your board, please refer to the | 
|  | 209 | documentation at http://www.beagleboard.org/bone and http://www.beagleboard.org/black | 
|  | 210 |  | 
|  | 211 | From a Linux system with access to the image files perform the following steps | 
|  | 212 | as root, replacing mmcblk0* with the SD card device on your machine (such as sdc | 
|  | 213 | if used via a usb card reader): | 
|  | 214 |  | 
|  | 215 | 1. Partition and format an SD card: | 
|  | 216 | # fdisk -lu /dev/mmcblk0 | 
|  | 217 |  | 
|  | 218 | Disk /dev/mmcblk0: 3951 MB, 3951034368 bytes | 
|  | 219 | 255 heads, 63 sectors/track, 480 cylinders, total 7716864 sectors | 
|  | 220 | Units = sectors of 1 * 512 = 512 bytes | 
|  | 221 |  | 
|  | 222 | Device Boot      Start         End      Blocks  Id System | 
|  | 223 | /dev/mmcblk0p1   *          63      144584       72261   c Win95 FAT32 (LBA) | 
|  | 224 | /dev/mmcblk0p2          144585      465884      160650  83 Linux | 
|  | 225 |  | 
|  | 226 | # mkfs.vfat -F 16 -n "boot" /dev/mmcblk0p1 | 
|  | 227 | # mke2fs -j -L "root" /dev/mmcblk0p2 | 
|  | 228 |  | 
|  | 229 | The following assumes the SD card partitions 1 and 2 are mounted at | 
|  | 230 | /media/boot and /media/root respectively. Removing the card and reinserting | 
|  | 231 | it will do just that on most modern Linux desktop environments. | 
|  | 232 |  | 
|  | 233 | The files referenced below are made available after the build in | 
|  | 234 | build/tmp/deploy/images. | 
|  | 235 |  | 
|  | 236 | 2. Install the boot loaders | 
|  | 237 | # cp MLO-beaglebone /media/boot/MLO | 
|  | 238 | # cp u-boot-beaglebone.img /media/boot/u-boot.img | 
|  | 239 |  | 
|  | 240 | 3. Install the root filesystem | 
|  | 241 | # tar x -C /media/root -f core-image-$IMAGE_TYPE-beaglebone.tar.bz2 | 
|  | 242 |  | 
|  | 243 | 4. If using core-image-base or core-image-sato images, the SD card is ready | 
|  | 244 | and rootfs already contains the kernel, modules and device tree (DTB) | 
|  | 245 | files necessary to be booted with U-boot's default configuration, so | 
|  | 246 | skip directly to step 8. | 
|  | 247 | For core-image-minimal, proceed through next steps. | 
|  | 248 |  | 
|  | 249 | 5. If using core-image-minimal rootfs, install the modules | 
|  | 250 | # tar x -C /media/root -f modules-beaglebone.tgz | 
|  | 251 |  | 
|  | 252 | 6. If using core-image-minimal rootfs, install the kernel zImage into /boot | 
|  | 253 | directory of rootfs | 
|  | 254 | # cp zImage-beaglebone.bin /media/root/boot/zImage | 
|  | 255 |  | 
|  | 256 | 7. If using core-image-minimal rootfs, also install device tree (DTB) files | 
|  | 257 | into /boot directory of rootfs | 
|  | 258 | # cp zImage-am335x-bone.dtb /media/root/boot/am335x-bone.dtb | 
|  | 259 | # cp zImage-am335x-boneblack.dtb /media/root/boot/am335x-boneblack.dtb | 
|  | 260 |  | 
|  | 261 | 8. Unmount the SD partitions, insert the SD card into the Beaglebone, and | 
|  | 262 | boot the Beaglebone | 
|  | 263 |  | 
|  | 264 |  | 
|  | 265 | Freescale MPC8315E-RDB (mpc8315e-rdb) | 
|  | 266 | ===================================== | 
|  | 267 |  | 
|  | 268 | The MPC8315 PowerPC reference platform (MPC8315E-RDB) is aimed at hardware and | 
|  | 269 | software development of network attached storage (NAS) and digital media server | 
|  | 270 | applications. The MPC8315E-RDB features the PowerQUICC II Pro processor, which | 
|  | 271 | includes a built-in security accelerator. | 
|  | 272 |  | 
|  | 273 | (Note: you may find it easier to order MPC8315E-RDBA; this appears to be the | 
|  | 274 | same board in an enclosure with accessories. In any case it is fully | 
|  | 275 | compatible with the instructions given here.) | 
|  | 276 |  | 
|  | 277 | Setup instructions | 
|  | 278 | ------------------ | 
|  | 279 |  | 
|  | 280 | You will need the following: | 
|  | 281 | * NFS root setup on your workstation | 
|  | 282 | * TFTP server installed on your workstation | 
|  | 283 | * Straight-thru 9-conductor serial cable (DB9, M/F) connected from your | 
|  | 284 | PC to UART1 | 
|  | 285 | * Ethernet connected to the first ethernet port on the board | 
|  | 286 |  | 
|  | 287 | --- Preparation --- | 
|  | 288 |  | 
|  | 289 | Note: if you have altered your board's ethernet MAC address(es) from the | 
|  | 290 | defaults, or you need to do so because you want multiple boards on the same | 
|  | 291 | network, then you will need to change the values in the dts file (patch | 
|  | 292 | linux/arch/powerpc/boot/dts/mpc8315erdb.dts within the kernel source). If | 
|  | 293 | you have left them at the factory default then you shouldn't need to do | 
|  | 294 | anything here. | 
|  | 295 |  | 
|  | 296 | --- Booting from NFS root --- | 
|  | 297 |  | 
|  | 298 | Load the kernel and dtb (device tree blob), and boot the system as follows: | 
|  | 299 |  | 
|  | 300 | 1. Get the kernel (uImage-mpc8315e-rdb.bin) and dtb (uImage-mpc8315e-rdb.dtb) | 
|  | 301 | files from the tmp/deploy directory, and make them available on your TFTP | 
|  | 302 | server. | 
|  | 303 |  | 
|  | 304 | 2. Connect the board's first serial port to your workstation and then start up | 
|  | 305 | your favourite serial terminal so that you will be able to interact with | 
|  | 306 | the serial console. If you don't have a favourite, picocom is suggested: | 
|  | 307 |  | 
|  | 308 | $ picocom /dev/ttyUSB0 -b 115200 | 
|  | 309 |  | 
|  | 310 | 3. Power up or reset the board and press a key on the terminal when prompted | 
|  | 311 | to get to the U-Boot command line | 
|  | 312 |  | 
|  | 313 | 4. Set up the environment in U-Boot: | 
|  | 314 |  | 
|  | 315 | => setenv ipaddr <board ip> | 
|  | 316 | => setenv serverip <tftp server ip> | 
|  | 317 | => setenv bootargs root=/dev/nfs rw nfsroot=<nfsroot ip>:<rootfs path> ip=<board ip>:<server ip>:<gateway ip>:255.255.255.0:mpc8315e:eth0:off console=ttyS0,115200 | 
|  | 318 |  | 
|  | 319 | 5. Download the kernel and dtb, and boot: | 
|  | 320 |  | 
|  | 321 | => tftp 1000000 uImage-mpc8315e-rdb.bin | 
|  | 322 | => tftp 2000000 uImage-mpc8315e-rdb.dtb | 
|  | 323 | => bootm 1000000 - 2000000 | 
|  | 324 |  | 
|  | 325 | --- Booting from JFFS2 root --- | 
|  | 326 |  | 
|  | 327 | 1. First boot the board with NFS root. | 
|  | 328 |  | 
|  | 329 | 2. Erase the MTD partition which will be used as root: | 
|  | 330 |  | 
|  | 331 | $ flash_eraseall  /dev/mtd3 | 
|  | 332 |  | 
|  | 333 | 3. Copy the JFFS2 image to the MTD partition: | 
|  | 334 |  | 
|  | 335 | $ flashcp core-image-minimal-mpc8315e-rdb.jffs2 /dev/mtd3 | 
|  | 336 |  | 
|  | 337 | 4. Then reboot the board and set up the environment in U-Boot: | 
|  | 338 |  | 
|  | 339 | => setenv bootargs root=/dev/mtdblock3 rootfstype=jffs2 console=ttyS0,115200 | 
|  | 340 |  | 
|  | 341 |  | 
|  | 342 | Ubiquiti Networks EdgeRouter Lite (edgerouter) | 
|  | 343 | ============================================== | 
|  | 344 |  | 
|  | 345 | The EdgeRouter Lite is part of the EdgeMax series. It is a MIPS64 router | 
|  | 346 | (based on the Cavium Octeon processor) with 512MB of RAM, which uses an | 
|  | 347 | internal USB pendrive for storage. | 
|  | 348 |  | 
|  | 349 | Setup instructions | 
|  | 350 | ------------------ | 
|  | 351 |  | 
|  | 352 | You will need the following: | 
|  | 353 | * RJ45 -> serial ("rollover") cable connected from your PC to the CONSOLE | 
|  | 354 | port on the device | 
|  | 355 | * Ethernet connected to the first ethernet port on the board | 
|  | 356 |  | 
|  | 357 | If using NFS as part of the setup process, you will also need: | 
|  | 358 | * NFS root setup on your workstation | 
|  | 359 | * TFTP server installed on your workstation (if fetching the kernel from | 
|  | 360 | TFTP, see below). | 
|  | 361 |  | 
|  | 362 | --- Preparation --- | 
|  | 363 |  | 
|  | 364 | Build an image (e.g. core-image-minimal) using "edgerouter" as the MACHINE. | 
|  | 365 | In the following instruction it is based on core-image-minimal. Another target | 
|  | 366 | may be similiar with it. | 
|  | 367 |  | 
|  | 368 | --- Booting from NFS root / kernel via TFTP --- | 
|  | 369 |  | 
|  | 370 | Load the kernel, and boot the system as follows: | 
|  | 371 |  | 
|  | 372 | 1. Get the kernel (vmlinux) file from the tmp/deploy/images/edgerouter | 
|  | 373 | directory, and make them available on your TFTP server. | 
|  | 374 |  | 
|  | 375 | 2. Connect the board's first serial port to your workstation and then start up | 
|  | 376 | your favourite serial terminal so that you will be able to interact with | 
|  | 377 | the serial console. If you don't have a favourite, picocom is suggested: | 
|  | 378 |  | 
|  | 379 | $ picocom /dev/ttyS0 -b 115200 | 
|  | 380 |  | 
|  | 381 | 3. Power up or reset the board and press a key on the terminal when prompted | 
|  | 382 | to get to the U-Boot command line | 
|  | 383 |  | 
|  | 384 | 4. Set up the environment in U-Boot: | 
|  | 385 |  | 
|  | 386 | => setenv ipaddr <board ip> | 
|  | 387 | => setenv serverip <tftp server ip> | 
|  | 388 |  | 
|  | 389 | 5. Download the kernel and boot: | 
|  | 390 |  | 
|  | 391 | => tftp tftp $loadaddr vmlinux | 
|  | 392 | => bootoctlinux $loadaddr coremask=0x3 root=/dev/nfs rw nfsroot=<nfsroot ip>:<rootfs path> ip=<board ip>:<server ip>:<gateway ip>:<netmask>:edgerouter:eth0:off mtdparts=phys_mapped_flash:512k(boot0),512k(boot1),64k@3072k(eeprom) | 
|  | 393 |  | 
|  | 394 | --- Booting from USB root --- | 
|  | 395 |  | 
|  | 396 | To boot from the USB disk, you either need to remove it from the edgerouter | 
|  | 397 | box and populate it from another computer, or use a previously booted NFS | 
|  | 398 | image and populate from the edgerouter itself. | 
|  | 399 |  | 
|  | 400 | Type 1: Mounted USB disk | 
|  | 401 | ------------------------ | 
|  | 402 |  | 
|  | 403 | To boot from the USB disk there are two available partitions on the factory | 
|  | 404 | USB storage. The rest of this guide assumes that these partitions are left | 
|  | 405 | intact. If you change the partition scheme, you must update your boot method | 
|  | 406 | appropriately. | 
|  | 407 |  | 
|  | 408 | The standard partitions are: | 
|  | 409 |  | 
|  | 410 | - 1: vfat partition containing factory kernels | 
|  | 411 | - 2: ext3 partition for the root filesystem. | 
|  | 412 |  | 
|  | 413 | You can place the kernel on either partition 1, or partition 2, but the roofs | 
|  | 414 | must go on partition 2 (due to its size). | 
|  | 415 |  | 
|  | 416 | Note: If you place the kernel on the ext3 partition, you must re-create the | 
|  | 417 | ext3 filesystem, since the factory u-boot can only handle 128 byte inodes and | 
|  | 418 | cannot read the partition otherwise. | 
|  | 419 |  | 
|  | 420 | Steps: | 
|  | 421 |  | 
|  | 422 | 1. Remove the USB disk from the edgerouter and insert it into a computer | 
|  | 423 | that has access to your build artifacts. | 
|  | 424 |  | 
|  | 425 | 2. Copy the kernel image to the USB storage (assuming discovered as 'sdb' on | 
|  | 426 | the development machine): | 
|  | 427 |  | 
|  | 428 | 2a) if booting from vfat | 
|  | 429 |  | 
|  | 430 | # mount /dev/sdb1 /mnt | 
|  | 431 | # cp tmp/deploy/images/edgerouter/vmlinux /mnt | 
|  | 432 | # umount /mnt | 
|  | 433 |  | 
|  | 434 | 2b) if booting from ext3 | 
|  | 435 |  | 
|  | 436 | # mkfs.ext3 -I 128 /dev/sdb2 | 
|  | 437 | # mount /dev/sdb2 /mnt | 
|  | 438 | # mkdir /mnt/boot | 
|  | 439 | # cp tmp/deploy/images/edgerouter/vmlinux /mnt/boot | 
|  | 440 | # umount /mnt | 
|  | 441 |  | 
|  | 442 | 3. Extract the rootfs to the USB storage ext3 partition | 
|  | 443 |  | 
|  | 444 | # mount /dev/sdb2 /mnt | 
|  | 445 | # tar -xvjpf core-image-minimal-XXX.tar.bz2 -C /mnt | 
|  | 446 | # umount /mnt | 
|  | 447 |  | 
|  | 448 | 4. Reboot the board and press a key on the terminal when prompted to get to the U-Boot | 
|  | 449 | command line: | 
|  | 450 |  | 
|  | 451 | 5. Load the kernel and boot: | 
|  | 452 |  | 
|  | 453 | 5a) vfat boot | 
|  | 454 |  | 
|  | 455 | => fatload usb 0:1 $loadaddr vmlinux | 
|  | 456 |  | 
|  | 457 | 5b) ext3 boot | 
|  | 458 |  | 
|  | 459 | => ext2load usb 0:2 $loadaddr boot/vmlinux | 
|  | 460 |  | 
|  | 461 | => bootoctlinux $loadaddr coremask=0x3 root=/dev/sda2 rw rootwait mtdparts=phys_mapped_flash:512k(boot0),512k(boot1),64k@3072k(eeprom) | 
|  | 462 |  | 
|  | 463 |  | 
|  | 464 | Type 2: NFS | 
|  | 465 | ----------- | 
|  | 466 |  | 
|  | 467 | Note: If you place the kernel on the ext3 partition, you must re-create the | 
|  | 468 | ext3 filesystem, since the factory u-boot can only handle 128 byte inodes and | 
|  | 469 | cannot read the partition otherwise. | 
|  | 470 |  | 
|  | 471 | These boot instructions assume that you have recreated the ext3 filesystem with | 
|  | 472 | 128 byte inodes, you have an updated uboot or you are running and image capable | 
|  | 473 | of making the filesystem on the board itself. | 
|  | 474 |  | 
|  | 475 |  | 
|  | 476 | 1. Boot from NFS root | 
|  | 477 |  | 
|  | 478 | 2. Mount the USB disk partition 2 and then extract the contents of | 
|  | 479 | tmp/deploy/core-image-XXXX.tar.bz2 into it. | 
|  | 480 |  | 
|  | 481 | Before starting, copy core-image-minimal-xxx.tar.bz2 and vmlinux into | 
|  | 482 | rootfs path on your workstation. | 
|  | 483 |  | 
|  | 484 | and then, | 
|  | 485 |  | 
|  | 486 | # mount /dev/sda2 /media/sda2 | 
|  | 487 | # tar -xvjpf core-image-minimal-XXX.tar.bz2 -C /media/sda2 | 
|  | 488 | # cp vmlinux /media/sda2/boot/vmlinux | 
|  | 489 | # umount /media/sda2 | 
|  | 490 | # reboot | 
|  | 491 |  | 
|  | 492 | 3. Reboot the board and press a key on the terminal when prompted to get to the U-Boot | 
|  | 493 | command line: | 
|  | 494 |  | 
|  | 495 | # reboot | 
|  | 496 |  | 
|  | 497 | 4. Load the kernel and boot: | 
|  | 498 |  | 
|  | 499 | => ext2load usb 0:2 $loadaddr boot/vmlinux | 
|  | 500 | => bootoctlinux $loadaddr coremask=0x3 root=/dev/sda2 rw rootwait mtdparts=phys_mapped_flash:512k(boot0),512k(boot1),64k@3072k(eeprom) |