Difference between revisions of "SD Card"
Line 83: | Line 83: | ||
==== ROOTFS Partition ==== | ==== ROOTFS Partition ==== | ||
+ | |||
+ | Second, a partition for the root filesystem must be created. This partition will be formatted as a Linux type using type ID 83. This is the default partition type. | ||
+ | |||
+ | <pre> | ||
+ | Command (m for help): n Partition type: | ||
+ | p primary (1 primary, 0 extended, 3 free) | ||
+ | e extended | ||
+ | Select (default p): p | ||
+ | Partition number (1-4, default 2): <RETURN> | ||
+ | Using default value 2 | ||
+ | First sector (264193-15564799, default 264193): <RETURN> Using default value 264193 | ||
+ | Last sector, +sectors or +size{K,M,G} (264193-15564799, default 15564799): <RETURN> | ||
+ | Using default value 15564799 | ||
+ | </pre> | ||
+ | |||
+ | Before writing the parition table, you should verify the partition layout by printing it with the ’p’ command. In this example, an 8GB SD card has been partitioned with a 128MB FAT32 BOOT partition and the rest allocated for a Linux ROOTFS partition. | ||
+ | |||
+ | <pre> | ||
+ | Command (m for help): p | ||
+ | |||
+ | Disk /dev/sdb: 7969 MB, 7969177600 bytes | ||
+ | 255 heads, 63 sectors/track, 968 cylinders, total 15564800 sectors | ||
+ | Units = sectors of 1 * 512 = 512 bytes | ||
+ | Sector size (logical/physical): 512 bytes / 512 bytes | ||
+ | I/O size (minimum/optimal): 512 bytes / 512 bytes | ||
+ | Disk identifier: 0x00000000 | ||
+ | Device Boot Start End Blocks Id System | ||
+ | /dev/sdb1 2048 264192 131072+ c W95 FAT32 | ||
+ | (LBA) | ||
+ | /dev/sdb2 264193 15564799 7650303+ 83 Linux | ||
+ | </pre> |
Revision as of 03:17, 23 April 2016
Contents
Formatting SD Card
Use fdisk to format the SD card.
Locating SD Card on System
The mount command can be used to locate the SD card device, once it has been connected to the host computer. In the example below, an SD card has been connected on /dev/sdb1 and mounted at /media/user/UNTITLED.
user@ubuntu:~$ mount /dev/sda1 on / type ext4 (rw,errors=remount-ro) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) none on /sys/fs/cgroup type tmpfs (rw) none on /sys/fs/fuse/connections type fusectl (rw) none on /sys/kernel/debug type debugfs (rw) none on /sys/kernel/security type securityfs (rw) udev on /dev type devtmpfs (rw,mode=0755) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620) tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755) none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880) none on /run/shm type tmpfs (rw,nosuid,nodev) none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755) none on /sys/fs/pstore type pstore (rw) binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev) systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd) gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=russellbush) /dev/sdb1 on /media/user/UNTITLED type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077, utf8=1,showexec,flush,uhelper=udisks2)
Partitioning the SD Card (fdisk)
Before partitioning the SD card, any partitions that have been mounted on the system must be unmounted. This can be done using the umount command.
umount /dev/sdb1
Once the SD card has been located, we can partition it for the Linux system (BOOT partition) and root filesystem (ROOTFS partition) using fdisk. fdisk must be run with root permissions (sudo) using the disk parent as the argument (do not use the parition number in the argument).
sudo fdisk /dev/sdb
From within the fdisk interface, we can view the parition table at any time using the "p" command. In this example, an 8GB SD card with a single FAT32 partition is being used and will be re-partitioned for snickerdoodle.
Command (m for help): p Disk /dev/sdb: 7969 MB, 7969177600 bytes 255 heads, 63 sectors/track, 968 cylinders, total 15564800 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdb1 8192 15564799 7778304 b W95 FAT32
BOOT Partition
First, a partition must be allocated for the Linux system binaries and files. This includes BOOT.bin (FSBL, bitstream, U-Boot), uEnv.txt, devicetree.dtb, and the Linux kernel uImage. The partition size for these files is recommended to be 128MB in size which translates to an additional 262144, 512 byte sectors.
Command (m for help): d Selected partition 1 Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-15564799, default 2048): <RETURN> Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-15564799, default 15564799): +262144
The default partition type for fdisk is Linux (type ID 83). The BOOT partition needs to be formatted as FAT32 (type ID "C"). Do do this, the "t" command is used:
Command (m for help): t Partition number (1-4): 1 Hex code (type L to list codes): c Changed system type of partition 1 to c (W95 FAT32 (LBA))
ROOTFS Partition
Second, a partition for the root filesystem must be created. This partition will be formatted as a Linux type using type ID 83. This is the default partition type.
Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (1-4, default 2): <RETURN> Using default value 2 First sector (264193-15564799, default 264193): <RETURN> Using default value 264193 Last sector, +sectors or +size{K,M,G} (264193-15564799, default 15564799): <RETURN> Using default value 15564799
Before writing the parition table, you should verify the partition layout by printing it with the ’p’ command. In this example, an 8GB SD card has been partitioned with a 128MB FAT32 BOOT partition and the rest allocated for a Linux ROOTFS partition.
Command (m for help): p Disk /dev/sdb: 7969 MB, 7969177600 bytes 255 heads, 63 sectors/track, 968 cylinders, total 15564800 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdb1 2048 264192 131072+ c W95 FAT32 (LBA) /dev/sdb2 264193 15564799 7650303+ 83 Linux