summaryrefslogtreecommitdiff
path: root/source/amberelec-internals.rst
diff options
context:
space:
mode:
Diffstat (limited to 'source/amberelec-internals.rst')
-rw-r--r--source/amberelec-internals.rst45
1 files changed, 45 insertions, 0 deletions
diff --git a/source/amberelec-internals.rst b/source/amberelec-internals.rst
new file mode 100644
index 0000000..5b742a0
--- /dev/null
+++ b/source/amberelec-internals.rst
@@ -0,0 +1,45 @@
+###################
+AmberELEC internals
+###################
+
+`AmberELEC`_ (former 351ELEC) is a fork of `EmuELEC`_, which is a fork of `CoreELEC`_, which is a fork of `LibreELEC`_, which is a fork of `OpenELEC`_). Knowing this inheritance scheme may help you find some lost knowledge and understand reasoning behind some decisions.
+
+.. _AmberELEC: https://github.com/AmberELEC/AmberELEC
+.. _EmuELEC: https://github.com/EmuELEC/EmuELEC
+.. _CoreELEC: https://github.com/CoreELEC/CoreELEC
+.. _LibreELEC: https://github.com/LibreELEC/LibreELEC.tv
+.. _OpenELEC: https://github.com/OpenELEC/OpenELEC.tv
+
+How the disk image file is constructed
+======================================
+
+The image is built by ``/scripts/mkimage`` script.
+
+The final image has size of 2097 MiB and consists of the following parts:
+
+* 16 MiB - A padding, purpose is unclear. It is defined by ``SYSTEM_PART_START`` variable, measured in sectors, 1 sector = 512 bytes. The ``SYSTEM_PART_START`` variable is defined in the ``/projects/Rockchip/options`` file.
+* 2 GiB - System storage partition, a FAT file system, containing the bootloader, the kernel, device tree blobs and the system - a squasfs file of rootfs.
+* 32 MiB - Games storage partition, an ext4 file system, to be expanded at first boot to fill out all available memory on the microSD card.
+* 1 MiB - Some GPT padding, purpose is unclear.
+
+Tools used in the script:
+
+* ``dd`` is used to create the disk image file.
+* ``parted`` is used to crate partitions on the file like if it was a disk.
+* ``sync`` is used to fully commit changes made to the file.
+* ``mformat`` is used to create boot sector, format the first partition in FAT system and create the root directory on the partition.
+* ``mcopy`` is used to copy files into the first partition's file system.
+* ``mmd`` is used to create directories inside the first partition's file system.
+* ``pigz`` is used to compress the image file
+
+Where the tools are coming from:
+
+* ``dd`` and ``sync`` are from ``/packages/tools/sysutils/coreutils`` package.
+* ``pigz`` is from ``/packages/compress/pigz`` package.
+* ``mformat``, ``mcopy`` and ``mmd`` are from ``/packages/tools/mtools`` package.
+* ``parted`` is from ``/packages/tools/sysutils/parted`` package.
+
+How the system is loaded
+========================
+
+The ``init`` script, that ends up in the ``initramfs`` CPIO image, is copied from ``/packages/sysutils/busybox/scripts/init`` file.