Boot loader is a small piece of software that is required to perform the basic hardware and peripheral initialization and load the kernel to RAM. For the Tizen platform, the boot loader comes in two parts. The first part is the primary boot loader and the second part is the secondary boot loader. The primary boot loader is the Samsung proprietary boot loader and is also called s-boot. The secondary boot loader is the open source boot loader u-boot, which is customized further for the Tizen platform.

The u-boot settings are extracted from the params.bin file that comes with the mobile_boot target (tizen-2.3.1-mobile_VERSION_mobile_boot.tar.gz usually).

bootargs=Please use defined boot
bootcmd=run mmcboot
bootdelay=0
baudrate=115200
checkpit=if test ${pit_ver} = 13; then setenv mmcbootpart 2;setenv mmcrootpart 11;setenv mmccsapart 4;else setenv mmcbootpart 2;setenv mmcrootpart 5;setenv mmccsapart 1;fi;
bootk=run loaduimage; bootm 0x40007FC0
updatemmc=mmc boot 0 1 1 1; mmc write 0 0x50800000 0 0x800; mmc boot 0 1 1 0
updatebackup=mmc boot 0 1 1 2; mmc write 0 0x51000000 0 0x400; mmc boot 0 1 1 0
updatebootb=mmc read 0 0x51000000 0x80 0x800; run updatebackup
updateuboot=mmc write 0 0x50000000 0x80 0x800
updaterestore=mmc boot 0 1 1 2; mmc read 0 0x50000000 0 0x800;mmc boot 0 1 1 0; run updateuboot
setupboot=run updatemmc; run updateuboot; run updatebootb
mmcboot=run checkpit; set bootargs root=/dev/mmcblk0p${mmcrootpart} rw rootfstype=ext4 rootwait ${console} ${meminfo} ${debuginfo} ${bootmode} ${lcdinfo} ${muicpathinfo} ${lpjinfo} ${opts} csa=/dev/mmcblk0p${mmccsapart}; run loaduimage; bootm 0x40007FC0
bootchart=set opts init=/sbin/bootchartd; run bootcmd
boottrace=setenv opts initcall_debug; run bootcmd
verify=n
rootfstype=ext4
console=console=ttySAC2,115200n8
mbrparts=8M(csa),60M(boot),60M(qboot),1G(platform),3G(data),150M(csc),-(ums)
meminfo=fbmem=24M@0x52000000
kernelname=uImage
loaduimage=ext4load mmc ${mmcdev}:${mmcbootpart} 0x40007FC0 ${kernelname}
mmcdev=0
opts=resume=179:3
uartpath=ap
usbpath=ap
pit_ver=13
silent=
ramdump=both
ver=U-Boot 2011.03-gb3826ca97-TIZEN.org (Sep 21 2015 - 03:45:27)
SLP_VAR_PART=csa /dev/mmcblk0p1 /csa ext4 data=journal
SLP_LCD_LEVEL=0
SLP_SWITCH_SEL=0
SLP_NATION_SEL=0
SLP_ROOTFS_NEW=0
SLP_KERNEL_NEW=0
SLP_FLAG_RTL=0
SLP_FLAG_FUS=0
SLP_FLAG_FOTA=0
SLP_FLAG_EFS_CLEAR=0

From the settings, we can note that :

1.

The boot partition number is 2, so the device is /dev/mmcblk0p2 and the root partition (that holds the userspace programs) is 11, device being /dev/mmcblk0p11.

2.

The kernel command line (can be seen from the cat /proc/cmdline command too) is :

root=/dev/mmcblk0p11 rw rootfstype=ext4 rootwait console=ttySAC2,115200n8 fbmem=24M@0x52000000 normal lcd=s6e8ax0 pmic_info=3 resume=179:3 csa=/dev/mmcblk0p4 bootloader_log=1016@0x43908010

3.

Since we’re not using Tizen in the way it’s supposed to be used (telephony, gps and stuff), we can skip mounting csa and csc partitions. CSA (Configuration Saved Area) is for non-volatile data that is calibration value of modem, etc, mounted on /csa while CSC (Customer Software Configuration) csc partition is mounted on /opt/usr/csc. It can store the customer’s software configuration, such as default language, time zone, etc.

4.

Kernel modules are mounted from a separate read-only partition in /lib/modules and we’d want them mounted rw actually. Make a copy of the files inside that folder, unmount the partition and remove the line from /etc/fstab that mounts the partition :

# cp -R /lib/modules /lib/_modules
# unmount -l /lib/modules
# mv /lib/_modules /lib/modules

Now the kernel modules files will be writable and we can install the kernel development package if needed, this one for example. That would allow us to recompile the kernel and its modules (although that is a bit futile, since the kernel in currently read-only and loaded by u-boot from the uImage file inside the tizen-2.3.1-mobile_VERSION_mobile_boot.tar.gz file), but we can add iSCSI modules if needed (and many others).

5.

There are 14 (fourteen!!) partitions on the /dev/mmcblk0 device :

  • 1 (unknown) - 20480 blocks (20Mb) - /dev/mmcblk0p1
  • 2 (boot) - 14336 blocks (14Mb) - /dev/mmcblk0p2
  • 3 (unknown) - 37888 blocks (37Mb) - /dev/mmcblk0p3
  • 4 (csa) - 14336 blocks (14Mb) - /dev/mmcblk0p4 - /csa
  • 5 (unknown) - 88064 blocks (86Mb) - /dev/mmcblk0p5
  • 6 (unknown) - 14336 blocks (14Mb) - /dev/mmcblk0p6
  • 7 (unknown) - 20480 blocks (20Mb) - /dev/mmcblk0p7
  • 8 (unknown) - 20480 blocks (20Mb) - /dev/mmcblk0p8
  • 9 (unknown) - 20480 blocks (20Mb) - /dev/mmcblk0p9
  • 10 (unknown) - 10240 blocks (10Mb) - /dev/mmcblk0p10
  • 11 (root) - 3072000 blocks (3Gb) - /dev/mmcblk0p11 - /
  • 12 (system-data) - 524288 blocks (512Mb) - /dev/mmcblk0p12 - /opt
  • 13 (csc) - 153600 blocks (150Mb) - /dev/mmcbl0p13 - /opt/system/csc
  • 14 (user-data) - 11365359 blocks (10.9Gb) - /dev/mmcblk0p14 - /opt/usr

Unfortunately, there is no way to get more info about the other partitions, there is an absolute lack of information from Tizen, what info I got from the Tizen wiki is obsolete and so is the u-boot source code. This is all the info I could gather from the params.bin, /proc/partitions, /etc/fstab and /etc/mtab files as well as the lsblk command.