brock@pinky-pie:~$ df Filesystem 1K-blocks Used Available Use% Mounted on rootfs 15270068 3547752 11056676 25% / /dev/root 15270068 3547752 11056676 25% / devtmpfs 106076 0 106076 0% /dev tmpfs 22052 212 21840 1% /run tmpfs 5120 0 5120 0% /run/lock tmpfs 44080 0 44080 0% /run/shm /dev/mmcblk0p1 57288 9848 47440 18% /boot brock@pinky-pie:~$ sudo dd if=/dev/mmcblk0p1 of=boot.img 114688+0 records in 114688+0 records out 58720256 bytes (59 MB) copied, 20.3459 s, 2.9 MB/s brock@pinky-pie:~$ ls -l boot.img -rw-r--r-- 1 root root 58720256 Mar 24 09:17 boot.img brock@pinky-pie:~$ sudo losetup /dev/loop0 loop: can't get info on device /dev/loop0: No such device or address brock@pinky-pie:~$ sudo losetup /dev/loop0 boot.img brock@pinky-pie:~$ ls -l /dev/loop0 brw-rw---T 1 root disk 7, 0 Mar 24 09:19 /dev/loop0 brock@pinky-pie:~$ mkdir /tmp/book brock@pinky-pie:~$ grep boot /etc/fstab /dev/mmcblk0p1 /boot vfat defaults 0 2 brock@pinky-pie:~$ sudo mount -t vfat -r /dev/loop0 /tmp/book brock@pinky-pie:~$ ls /tmp/book bootcode.bin fixup_cd.dat issue.txt start_cd.elf cmdline.txt fixup.dat kernel.img start.elf config.txt fixup_x.dat LICENSE.oracle start_x.elf brock@pinky-pie:~$ ls /boot bootcode.bin fixup_cd.dat issue.txt start_cd.elf cmdline.txt fixup.dat kernel.img start.elf config.txt fixup_x.dat LICENSE.oracle start_x.elf brock@pinky-pie:~$ sudo umount /tmp/book brock@pinky-pie:~$ sudo losetup -d /dev/loop0 ## Take a look at the FAT documentation ## Do a man on dd brock@pinky-pie:~$ dd if=boot.img of=boot.boot-sector.img bs=512 count=1 1+0 records in 1+0 records out 512 bytes (512 B) copied, 0.000328991 s, 1.6 MB/s ## Do a man on od, this is a weird command ## We had a faculty member who used to use these brock@pinky-pie:~$ od -A d -j 11 -N 2 -t d2 boot.boot-sector.img 0000011 512 0000013 brock@pinky-pie:~$ BPB_BytesPerSector=512 brock@pinky-pie:~$ od -A d -j 13 -N 1 -t d boot.boot-sector.img 0000013 16 0000014 brock@pinky-pie:~$ BPB_SectorsPerCluster=16 brock@pinky-pie:~$ od -A d -j 14 -N2 -t d2 boot.boot-sector.img 0000014 16 0000016 brock@pinky-pie:~$ BPB_ReservedSectorCount=16 brock@pinky-pie:~$ od -A d -j 16 -N1 -t d boot.boot-sector.img 0000016 2 0000017 brock@pinky-pie:~$ BPB_NumFATs=2 brock@pinky-pie:~$ od -A d -j 22 -N 2 -t d2 boot.boot-sector.img 0000022 32 0000024 brock@pinky-pie:~$ BPB_NumSectorsPerFat=32 brock@pinky-pie:~$ od -A d -j 17 -N 2 -t d2 boot.boot-sector.img 0000017 512 0000019 brock@pinky-pie:~$ BPB_MaxRootDirectoryEntries=512 brock@pinky-pie:~$ od -A d -j 54 -N 8 -t a boot.boot-sector.img 0000054 F A T 1 6 sp sp sp 0000062 brock@pinky-pie:~$ od -A d -j 3 -N 8 -t a boot.boot-sector.img 0000003 m k d o s f s nul 0000011 brock@pinky-pie:~$ od -A d -j 22 -N 2 -t d2 boot.boot-sector.img 0000022 32 0000024 brock@pinky-pie:~$ BPB_FATSize=32 brock@pinky-pie:~$ od -A d -j 32 -N 4 -t d4 boot.boot-sector.img 0000032 114688 0000036 brock@pinky-pie:~$ ls -l boot.img -rw-r--r-- 1 root root 58720256 Mar 24 09:17 boot.img brock@pinky-pie:~$ dc 512 114688 * f 58720256 brock@pinky-pie:~$ od -A d -j 14 -N 2 -t d2 boot.boot-sector.img 0000014 16 0000016 brock@pinky-pie:~$ BPB_ReservedSectors=16 brock@pinky-pie:~$ echo $BPB_NumFATs 2 brock@pinky-pie:~$ echo $BPB_NumSectorsPerFat 32 brock@pinky-pie:~$ dd if=boot.img of=boot.img.rootdir bs=512 count=1 skip=80 1+0 records in 1+0 records out 512 bytes (512 B) copied, 0.00613083 s, 83.5 kB/s brock@pinky-pie:~$ dd if=boot.img of=boot.img.fat bs=512 skip=16 count=32 32+0 records in 32+0 records out 16384 bytes (16 kB) copied, 0.0163896 s, 1000 kB/s brock@pinky-pie:~$ od -A d -j 0 -N 11 -t a boot.img.rootdir 0000000 b o o t sp sp sp sp sp sp sp 0000011 brock@pinky-pie:~$ od -A d -j 32 -N 11 -t a boot.img.rootdir 0000032 A b nul o nul o nul t nul c nul 0000043 brock@pinky-pie:~$ od -A d -j 32 -N 11 -t a boot.img.rootdir 0000032 A b nul o nul o nul t nul c nul 0000043 brock@pinky-pie:~$ ls /booit bootcode.bin fixup_cd.dat issue.txt start_cd.elf cmdline.txt fixup.dat kernel.img start.elf config.txt fixup_x.dat LICENSE.oracle start_x.elf brock@pinky-pie:~$ od -A d -j 32 -N 32 -t a boot.img.rootdir 0000032 A b nul o nul o nul t nul c nul si nul enq o nul 0000048 d nul e nul . nul b nul i nul nul nul n nul nul nul 0000064 brock@pinky-pie:~$ od -A d -j 64 -N 32 -t a boot.img.rootdir 0000064 B O O T C O D E B I N sp nul d T % 0000080 9 E 9 E nul nul T % 9 E etx nul 0 E nul nul 0000096 brock@pinky-pie:~$ od -A d -j 96 -N 32 -t a boot.img.rootdir 0000096 A c nul m nul d nul l nul i nul si nul si n nul 0000112 e nul . nul t nul x nul t nul nul nul nul nul del del 0000128 brock@pinky-pie:~$ od -A d -j 128 -N 32 -t a boot.img.rootdir 0000128 C M D L I N E sp T X T sp nul nul H ) 0000144 ' D ' D nul nul 2 ) ' D ack nul so nul nul nul 0000160 brock@pinky-pie:~$ dd if=boot.img.rootdir of=boot.img.cmdline bs=32 count=1 skip=4 1+0 records in 1+0 records out 32 bytes (32 B) copied, 0.000353991 s, 90.4 kB/s brock@pinky-pie:~$ od -A d -j 0 -N 11 -t a boot.img.cmdline 0000000 C M D L I N E sp T X T 0000011 brock@pinky-pie:~$ od -A d -j 20 -N 2 -t d2 boot.img.cmdline 0000020 0 0000022 brock@pinky-pie:~$ od -A d -j 26 -N 2 -t d2 boot.img.cmdline 0000026 6 0000028 brock@pinky-pie:~$ BPB_CMDLINE_CLUSTER=6 brock@pinky-pie:~$ echo $BPB_SectorsPerCluster 16 brock@pinky-pie:~$ echo $BPB_BytesPerSector 512 brock@pinky-pie:~$ od -A d -j 28 -N 4 -t d4 boot.img.cmdline 0000028 142 0000032 brock@pinky-pie:~$ ls -l /boot/cmdline.txt -rwxr-xr-x 1 root root 142 Jan 7 2014 /boot/cmdline.txt brock@pinky-pie:~$ echo $(( $BPB_CMDLINE_LUSTER * $BPB_SectorsPerCluster * $BPB_BytesPerSector )) 49152 brock@pinky-pie:~$ dd if=boot.img of=my.cmdline.txt skip=49152 count=142 142+0 records in 142+0 records out 72704 bytes (73 kB) copied, 0.0142756 s, 5.1 MB/s brock@pinky-pie:~ dd if=boot.img of=my.cmdline.txt skip=49152 count=142 bs=1 142+0 records in 142+0 records out 142 bytes (142 B) copied, 0.00969174 s, 14.7 kB/s brock@pinky-pie:~$ dc 80 512 * / dc: stack empty f 40960 49152 + f 90112 brock@pinky-pie:~$ BPB_FirstDataSector=$(( $BPB_NumSectorsPerFat * $BPB_NumFATs + $BPB_ReservedSectorCount )) brock@pinky-pie:~$ echo $BPB_FirstDataSector 80 brock@pinky-pie:~$ echo $(( $BPB_CMDLINE_LUSTER * $BPB_SectorsPerCluster )) 96 brock@pinky-pie:~$ BPB_CmdlineSector=$(($BPB_FirstDataSector + $BPB_CMDLINE_LUSTER * $BPB_SectorsPerCluster )) brock@pinky-pie:~$ echo $BPB_CmdlineSector 176 brock@pinky-pie:~$ brock@pinky-pie:~$ dd if=boot.img of=cmd.txt.sector bs=512 skip=$BPB_CmdlineSector count=1 1+0 records in 1+0 records out 512 bytes (512 B) copied, 0.00166996 s, 307 kB/s brock@pinky-pie:~$ dd if=cmd.txt.sector of=cmdline.txt bs=1 count=142 142+0 records in 142+0 records out 142 bytes (142 B) copied, 0.0117197 s, 12.1 kB/s brock@pinky-pie:~$ cat cmdline.txt dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait brock@pinky-pie:~$