Aligning partitions (and hence file system structures) to higher level then 512 byte sectors is common practise and highly recommended for flash backed block devices. It makes sure that the underlaying flash translation layer (FTL) does not amplify writes due to missalignment of its erase block size. Use a 1MiB boundary which is what a modern fdisk is doing. Before this change: # fdisk /dev/mmcblk0 Welcome to fdisk (util-linux 2.35.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): p Disk /dev/mmcblk0: 14.57 GiB, 15634268160 bytes, 30535680 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 Disklabel type: dos Disk identifier: 0x48617373 Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 * 16384 65537 49154 24M c W95 FAT32 (LBA) /dev/mmcblk0p2 65539 1228814 1163276 568M 5 Extended /dev/mmcblk0p3 1228816 1425425 196610 96M 83 Linux /dev/mmcblk0p4 1425427 30535679 29110253 13.9G 83 Linux /dev/mmcblk0p5 65540 114693 49154 24M 83 Linux /dev/mmcblk0p6 114695 638984 524290 256M 83 Linux /dev/mmcblk0p7 638986 688139 49154 24M 83 Linux /dev/mmcblk0p8 688141 1212430 524290 256M 83 Linux /dev/mmcblk0p9 1212432 1228814 16383 8M 83 Linux After this change: # fdisk /dev/mmcblk0 Welcome to fdisk (util-linux 2.35.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): p Disk /dev/mmcblk0: 14.57 GiB, 15634268160 bytes, 30535680 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 Disklabel type: dos Disk identifier: 0x48617373 Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 * 16384 65535 49152 24M c W95 FAT32 (LBA) /dev/mmcblk0p2 65536 1239039 1173504 573M 5 Extended /dev/mmcblk0p3 1241088 1437695 196608 96M 83 Linux /dev/mmcblk0p4 1439744 30535679 29095936 13.9G 83 Linux /dev/mmcblk0p5 67584 116735 49152 24M 83 Linux /dev/mmcblk0p6 118784 643071 524288 256M 83 Linux /dev/mmcblk0p7 645120 694271 49152 24M 83 Linux /dev/mmcblk0p8 696320 1220607 524288 256M 83 Linux /dev/mmcblk0p9 1222656 1239039 16384 8M 83 Linux See also: https://unix.stackexchange.com/questions/248939/how-to-achieve-optimal-alignment-for-emmc-partition http://3gfp.com/wp/2014/07/formatting-sd-cards-for-speed-and-lifetime/
Home Assistant Operating System
Home Assistant Operating System (formerly HassOS) is an operating system optimized for hosting Home Assistant and its Add-ons.
Home Assistant Operating System uses Docker as Container engine. It by default deploys the Home Assistant Supervisor as a container. Home Assistant Supervisor in turn uses the Docker container engine to control Home Assistant Core and Add-Ons in separate containers. Home Assistant Operating System is not based on a regular Linux distribution like Ubuntu. It is built using buildroot and it is optimized for running Home Assistant, especially on single board compute (SBC) devices like the Pi, ODROID, NUC and Tinker Board (see supported hardware below).
Features
- Lightweight and memory-efficient
- Minimized I/O
- Over The Air (OTA) updates
- Offline updates
- Modular using Docker
Supported hardware
- Raspberry Pi
- Hardkernel ODROID
- Intel NUC
- Asus Tinker Board
- Virtual appliances
See full list and specific models here
Getting Started
If you just want to use Home Assistant the official getting started guide and installation instructions take you through how to download Home Assistant Operating System and get it running on your machine.
If you're interested in finding out more about Home Assistant Operating System and how it works read on...
HassOS components
- Bootloader:
- Operating System:
- Buildroot LTS Linux
- File Systems:
- Container Platform:
- Docker Engine for running Home Assistant components in containers
- Updates:
- RAUC for Over The Air (OTA) and USB updates
- Security:
- AppArmor Linux kernel security module
If you don't have experience with these, embedded systems, buildroot or the build process for Linux distributions, then please read up on these topics. The rest of the documentation in this project is for developers and assumes you have experience of embedded systems or a strong understanding of the internal workings of operating systems.
Developer Documentation
All developer documentation is in the Documentation directory.