Compare commits

...

96 Commits
0.3 ... 2.0

Author SHA1 Message Date
Pascal Vizeli
fd56d6544c Merge pull request #85 from home-assistant/dev
Beta 2.0
2018-07-07 13:24:51 +02:00
Pascal Vizeli
d2ba03164b Add powersave config to network manager (#86)
* Add powersave config to network manager

* Update network.md
2018-07-07 10:45:59 +02:00
Pascal Vizeli
c6d0fef0b4 Some cleanup (#84) 2018-07-06 21:04:48 +02:00
Pascal Vizeli
0671e3f71c Reset if we can't boot (#83)
* Update uboot-boot.sh

* Update uboot-boot.sh
2018-07-06 19:08:52 +02:00
Pascal Vizeli
14833a110f Use wait on network to delay the startup (#81)
* Use wait on network to delay the startup

* Update nm.conf

* Create nm.conf

* Update hassos-supervisor.service

* Rename hassos.conf to docker.conf

* Create hassos.conf

* Create hassos.conf

* Update hassos.conf

* aply patch

* Mark only failed

* Fix start order
2018-07-06 18:21:19 +02:00
Pascal Vizeli
988d4ebecf Update supervisor 115 (#82) 2018-07-06 14:35:22 +02:00
Pascal Vizeli
bf59b7744d Use dhcp client / avahi after NM (#75)
* Use dhcp client / avahi after NM

* Store networkmanager

* Add default connection

* cleanup

* cleanup lease

* faster boot

* Cleanup

* Fix permission
2018-07-05 20:00:56 +02:00
Gabriel Oliveira
4a80c7fcd0 Fix config documentation closing tags (#80) 2018-07-05 16:40:41 +02:00
Pascal Vizeli
6c58eb1615 Fix /usr/sbin/hassos-cli is not in /etc/shells (#78)
* Update rootfs-layer.sh

* Update rootfs-layer.sh

* Update rootfs-layer.sh
2018-07-05 13:44:52 +02:00
cogneato
46d6dba859 Update configuration.md (#50)
* Update configuration.md

Clearing up documentation, grammar fixes.

* changed known_hosts to authorized_keys

* Update configuration.md
2018-07-03 07:32:44 +02:00
cogneato
12393e083d Update network.md (#51)
* Update network.md

Clearing up network documentation, grammar

* Update network.md
2018-07-03 07:30:17 +02:00
Pascal Vizeli
3700d744b4 Update CLI / Supervisor (#71) 2018-07-03 00:00:25 +02:00
Pascal Vizeli
7e665a7b42 Fix persistent log (#70) 2018-07-02 23:53:07 +02:00
Pascal Vizeli
c860229130 Change chmod of network connection files from fat32 (#69) 2018-07-02 23:03:13 +02:00
Pascal Vizeli
32ab05bd2e Fix update script with uptime (#68) 2018-07-02 22:51:54 +02:00
Pascal Vizeli
8792d37402 Fix docker warning on rpi (#67) 2018-07-02 21:43:33 +02:00
Pascal Vizeli
414b59ac4a Fix label name in test script (#66)
* Fix label name in test script

* Update hassos-config
2018-07-02 21:24:05 +02:00
Pascal Vizeli
f8fa170e2a Fix spell in journald script (#65) 2018-07-02 19:58:00 +02:00
Pascal Vizeli
11b1946cd7 Make logs persistent over reboot and cleanup (#61)
* Create hassos-persists-journald

* Create hassos-persists-journald.service

* Set ln & permission

* Enable persists journald

* Update hassos-persists-journald
2018-07-02 01:05:21 +02:00
Pascal Vizeli
7d4b424d2f Map /etc/machine-id into supervisor/cli (#60)
* Map /etc/machine-id into supervisor/cli

* Update hassos-cli

* Update hassos-supervisor
2018-07-01 15:15:54 +02:00
Pascal Vizeli
6aa8e61d88 Add lost persistent ssh folder (#58)
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-07-01 00:38:30 +02:00
Pascal Vizeli
d536e3d7a7 Use wpa_supplicant with NetworkManager (#57) 2018-07-01 00:29:10 +02:00
Pascal Vizeli
2614ffce40 Use CONFIG as label for config partition (#56)
* Use CONFIG as label for config partition

* Update configuration.md

* Update hassos-config
2018-07-01 00:28:00 +02:00
Pascal Vizeli
dde6d8f806 Set hassos supervisor to rauc (#55)
* Set hassos supervisor to rauc

* Update post-install

* Update hassos-config
2018-06-29 15:23:49 +02:00
Pascal Vizeli
8dd8816e4e Fix authorized_keys keys (#53)
* Fix authorized_keys keys

* Update hassos.conf

* Update configuration.md

* Update hassos-config

* Update hassos-config
2018-06-28 22:21:50 +02:00
Pascal Vizeli
f739aed8de Fix hassos-conf label (#48)
* Update mnt-config.mount

* Update configuration.md

* Update configuration.md

* Update mnt-config.mount

* Update configuration.md
2018-06-28 22:20:34 +02:00
Pascal Vizeli
f6a916001d Update ova.md (#47) 2018-06-27 13:56:52 +02:00
Pascal Vizeli
23a58b23b5 We publish now the vmdk and not OVA/OVF (#46)
* Update upload-rel.sh

* Create ova.md
2018-06-27 12:05:44 +02:00
Pascal Vizeli
d3e3e36a6e Improve the documentation (#44)
* Create network.md

* Update configuration.md

* Update network.md

* Update network.md
2018-06-26 22:24:15 +02:00
Pascal Vizeli
af23b6199e Add script for github upload (#43)
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-26 21:32:41 +02:00
Pascal Vizeli
80079930c5 Include ota script into board image (#42) 2018-06-26 13:28:00 +02:00
Pascal Vizeli
ca50a86768 Bump version to next development release (#41) 2018-06-26 12:27:09 +02:00
Pascal Vizeli
6e9326d11b Fix build script for new layout (#40) 2018-06-26 11:48:16 +02:00
Pascal Vizeli
b731b422fe Merge pull request #38 from home-assistant/dev
Release 0.7 beta
2018-06-26 10:20:24 +02:00
Pascal Vizeli
27cd425f5b Use systemd for config mount (#37)
* Create mnt-config.mount

* Update hassos-config

* Update mnt-config.mount

* Update hassos-config
2018-06-26 10:18:16 +02:00
Pascal Vizeli
42f1c4bf01 cleanup avahi
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-25 22:11:59 +00:00
Pascal Vizeli
b3943870dc Fix rauc config 2018-06-25 21:11:18 +00:00
Pascal Vizeli
4b4e22c355 Fix args 2018-06-25 19:22:15 +00:00
Pascal Vizeli
7675cc61fb Update Hass.io CLI to version 5 (#36) 2018-06-25 20:36:30 +02:00
Pascal Vizeli
11b1867c73 Create build.md 2018-06-25 09:00:31 +02:00
Pascal Vizeli
5cd03d19dd Update README.md 2018-06-25 08:59:43 +02:00
Pascal Vizeli
26d7a4cb23 Update hassos.conf 2018-06-25 08:58:26 +02:00
Pascal Vizeli
cc80265997 Run dropbear only if they have a known_hosts 2018-06-25 08:55:16 +02:00
Pascal Vizeli
8434f3ee55 Create docker.conf 2018-06-25 08:51:22 +02:00
Pascal Vizeli
ddde16216c Rename hassos.conf to docker.conf 2018-06-25 08:50:39 +02:00
Pascal Vizeli
3e8499ecbf Use correct cert (#35)
* Use correct cert

* Fix boot partition handling

* Cleanup rauc handling

* Make a reboot

* handling
2018-06-24 23:41:04 +02:00
Pascal Vizeli
42dc915436 Create deployment.md 2018-06-24 10:41:05 +02:00
Pascal Vizeli
17ca2ccf0a Create OTA updater (#34)
* Create OTA updater

* Create .gitignore

* Update build-all.sh

* Update hdd-image.sh

* Update ota.sh

* Update ota.sh

* Update ota.sh

* Update ota.sh

* Update post-image.sh

* Create name.sh

* Update name.sh

* Update post-build.sh

* Update name.sh

* Update post-image.sh

* Update ota.sh

* Update hdd-image.sh

* Update post-image.sh

* Update name.sh

* Update ota.sh

* Update post-image.sh

* Update hdd-image.sh

* Update hdd-image.sh

* Update hdd-image.sh

* Update post-image.sh

* Update post-image.sh

* Update hdd-image.sh

* Update hdd-image.sh

* Update post-image.sh

* Update post-image.sh

* Update post-image.sh

* Update info

* Update info

* Update info

* Update info

* Update info

* Update info

* Rename buildroot-external/board/raspberrypi/uboot-boot64.sh to buildroot-external/board/raspberrypi/rpi3-64/uboot-boot.sh

* Update rpi3_64_defconfig

* Update hdd-image.sh

* Update ota.sh

* Update post-image.sh

* Update post-image.sh

* Fix building

Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>

* Fix building v2

Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-24 00:11:54 +02:00
Pascal Vizeli
1e30f5120c Update configuration.md 2018-06-21 15:50:01 +02:00
Pascal Vizeli
e30e15dc53 fix rauc name 2018-06-21 15:49:37 +02:00
Pascal Vizeli
3aaadf3f5f Update supervisor 108 2018-06-21 11:37:10 +00:00
Pascal Vizeli
161c8624e0 Bump version to 0.7 2018-06-21 11:17:23 +02:00
Pascal Vizeli
56afd74720 Don't install kernel to rootfs 2018-06-21 09:15:28 +00:00
Pascal Vizeli
ed5a5033dd Use apparmor from s3 2018-06-20 13:28:30 +00:00
Pascal Vizeli
2abbbbd1fa Cleanup uboot handling like linux kernel 2018-06-20 10:41:45 +00:00
Pascal Vizeli
fa44e0a7fd cleanup 2018-06-17 01:25:47 +02:00
Pascal Vizeli
1a3d063fec Reboot after mark partition as bad 2018-06-16 22:24:36 +02:00
Pascal Vizeli
49df049f2c Change rauc mark handling 2018-06-16 09:06:07 +00:00
Pascal Vizeli
c657f6f3e7 Ignore debug stack usage 2018-06-16 01:27:34 +02:00
Pascal Vizeli
0a43cbdb05 Update hassio-supervisor 2018-06-14 16:44:40 +02:00
Pascal Vizeli
45274411e7 Merge pull request #31 from home-assistant/dev
Release 0.6
2018-06-14 15:43:10 +02:00
Pascal Vizeli
d5ff3596b1 Fix build script v2
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-14 13:10:32 +00:00
Pascal Vizeli
95f82aa75d Fix build script
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-14 05:15:10 +00:00
Pascal Vizeli
fc4de4f02a Fix 64bit
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-14 00:13:35 +00:00
Pascal Vizeli
eae3659909 Add Builder script
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-13 19:28:05 +00:00
Pascal Vizeli
6a05718235 Fix expander on SD cards
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-13 19:12:57 +00:00
Pascal Vizeli
5055236725 Bump version 2018-06-13 17:04:33 +02:00
Pascal Vizeli
ac40e97670 Update hassio-supervisor 2018-06-12 23:23:33 +02:00
Pascal Vizeli
b9816f097d Merge pull request #29 from home-assistant/dev
Release 0.5
2018-06-12 22:56:40 +02:00
Pascal Vizeli
73ac253a0f Fix bug with RPi3 SDHCI
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-12 20:53:05 +00:00
Pascal Vizeli
dd3935a786 Fix pi problem
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-12 18:03:03 +00:00
Pascal Vizeli
f1461081f5 Bump version 2018-06-12 17:03:22 +02:00
Pascal Vizeli
fa79721f3d Fix boot problems with RPi 3+
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-12 15:00:38 +00:00
Pascal Vizeli
9f6a339ec7 fix old bootstate
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-12 14:31:50 +00:00
Pascal Vizeli
fb235891e9 cleanup 2018-06-12 16:03:52 +02:00
Pascal Vizeli
d6f5c337e1 Allow more log with new partition layout
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-12 13:53:17 +00:00
Pascal Vizeli
63453e0a3f Add 64bit flag to config for rpi
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 15:51:06 +00:00
Pascal Vizeli
76a4376a96 Use uboot raw env
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 12:46:09 +00:00
Pascal Vizeli
ffbef150ca Fix partition layout
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 11:34:31 +00:00
Pascal Vizeli
acd76288de Fix speel
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 11:34:31 +00:00
Pascal Vizeli
bdf55189d9 Fix image name for 64bit
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 11:34:31 +00:00
Pascal Vizeli
b2211540ea Fix rpi3 plus support for 64bit
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 11:34:31 +00:00
Pascal Vizeli
e4e134f474 Fix RPI64 supervisor
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 11:34:31 +00:00
Pascal Vizeli
cc8f77c5d6 Fix RPI string
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 11:34:31 +00:00
Pascal Vizeli
7ec8a232d1 remove wlan
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 11:34:31 +00:00
Pascal Vizeli
a426046bcc Support dual bootloader (#27)
* Support dual bootloader

Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>

* Make ova running

Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>

* fix uboot

Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>

* Update supervisor

Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>

* Support all rpi

Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 11:34:31 +00:00
Pascal Vizeli
f9f8b91b31 Fix last problem with rpi
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 11:34:31 +00:00
Pascal Vizeli
ac8ebea80c Fix cmdline & generic
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 11:34:31 +00:00
Pascal Vizeli
c13d403c8d Cleanup patches for rpi 2018-06-11 11:34:31 +00:00
Pascal Vizeli
b785eafb4e Fix dt
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 11:34:31 +00:00
Pascal Vizeli
9d595d8bef Add support to extract bootargs
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 11:34:31 +00:00
Pascal Vizeli
a57864c199 Better group boards like rpi
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 11:34:31 +00:00
Pascal Vizeli
96a5f891ba Use origin device-tree 2018-06-11 11:34:31 +00:00
Pascal Vizeli
2bf10f8a5c Use new patch for overlay
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 11:34:31 +00:00
Pascal Vizeli
c9f3212642 Use new patches for overlay
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 11:34:31 +00:00
Pascal Vizeli
35835e1e58 Bump version
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
2018-06-11 11:34:31 +00:00
167 changed files with 1789 additions and 13560 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/release
*.pem

View File

@@ -0,0 +1,16 @@
# OVA
The OVA stay for open virtual appliance. Currently we had remove the ova files and publish a vmdk virtual disk,
until we have better OVF template to generate our OVA. This vmdk work with (maybe you need convert the disk):
- HyperV
- VirtualBox
- VMware
## Virtual Machine
You can use this vmdk in a virtual machine with follow requirements:
- OS: Linux 64bit
- UEFI boot
- min. 1GB RAM
- 2x vcpu
- 1x Network

View File

@@ -2,4 +2,4 @@
## Serial console
For access to terminal over serial console, add `console=ttyAMA0,115200` to `cmdline.txt`.
For access to terminal over serial console, add `console=ttyAMA0,115200` to `cmdline.txt` and `enable_uart=1` into `config.txt`.

21
Documentation/build.md Normal file
View File

@@ -0,0 +1,21 @@
# Building
Running `sudo ./enter.sh` will get you into the build Docker container.
`make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external xy_defconfig`
## Scripts
## Helpers
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external xy_defconfig`
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external menuconfig`
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external linux-menuconfig`
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external barebox-menuconfig`
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external busybox-menuconfig`
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external savedefconfig`
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external linux-update-defconfig`
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external barebox-update-defconfig`
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external busybox-update-config`

View File

@@ -2,18 +2,23 @@
## Automatic
You can format a USB stick with FAT32 and name it with `hassos-config`. The layout could be look like:
You can use a USB drive with HassOS to configure network options, ssh access to the host, and to install updates.
Format a USB stick with FAT32/EXT4/NTFS and name it `CONFIG`. Use the following directory structure within the USB drive:
```
network/
modules/
known_hosts
hassos-xy.rauc
authorized_keys
hassos-xy.raucb
```
- On `network` folder can hold any kind of NetworkManager connections files.
- The folder `modules` is for modules-load configuration files.
- `known_hosts` file activate debug SSH access of port `22222`.
- For firmware updates you can but the `hassos-*.rauc` OTA update they should be install.
- The `network` folder can contain any kind of NetworkManager connection files. For more information see [Network][network.md].
- The `modules` folder is for modules-load configuration files.
- The `authorized_keys` file activates debug SSH access on port `22222`. See [Debugging Hassio][debug-hassio].
- The `hassos-*.raucb` file is a firmware OTA update which will be installed. These can be found on on the [release][hassos-release] page.
You can put this USB stick into the device and it will be read on startup. You can also trigger this process later over the
API/UI or by calling `systemctl restart hassos-config` on the host.
## Local
@@ -25,5 +30,11 @@ You can edit or create a `cmdline.txt` into your boot partition. That will be re
The kernel module folder `/etc/modules-load.d` is persistent and you can add your config files there. See [Systemd modules load][systemd-modules].
### Network
You can manual add, edit or remove connections configs from `/etc/NetworkManager/system-connections`.
[systemd-modules]: https://www.freedesktop.org/software/systemd/man/modules-load.d.html
[network.md]: network.md
[hassos-release]: https://github.com/home-assistant/hassos/releases/
[debug-hassio]: https://developers.home-assistant.io/docs/en/hassio_debugging.html

View File

@@ -0,0 +1,23 @@
# Deployment
We know 3 types of release builds:
- development (beta/dev)
- staging (rc)
- production (stable)
## Versioning
The format of version is *MAJOR.BUILD*. Everytime we create a new release with same userland, we bump the build number.
The development use here own major number they will be bump for the stable version and the development version go to next major number.
```
0.x = development
1.x = stable
2.x = development
3.x = stable
```
## GIT Branch/Tag
The branch `dev` ist the actual development branch and from there we never make a release. The `master` branch hould the development
version from they we build a beta release.
If we create a new staging/productive release, we create a new branch `rel-{MAJOR}`. They will be used for the hole cycle of this release.

98
Documentation/network.md Normal file
View File

@@ -0,0 +1,98 @@
# Network
HassOS uses NetworkManager to control the host network. In future releases, you can set up the configuration using the API/UI.
Currently only manual configuration using NetworkManager connection files is supported. Without a configuration file, the device will use DHCP by default. These network connection files can be placed on a USB drive as described in [Configuration][configuration-usb].
## Configuration Examples
You can look also into [Official Manual][keyfile] or there are a lot of examples accross internet. The system is read only, if you not want change the IP address every boot, you should set the uuid property with a generic [UUID4][uuid].
### Default
We have a preinstalled connection profile:
```
[connection]
id=HassOS default
uuid=f62bf7c2-e565-49ff-bbfc-a4cf791e6add
type=802-3-ethernet
[ipv4]
method=auto
[ipv6]
addr-gen-mode=stable-privacy
method=auto
```
### LAN
```ini
[connection]
id=hassos-network
uuid=d55162b4-6152-4310-9312-8f4c54d86afa
type=802-3-ethernet
[ipv4]
method=auto
[ipv6]
addr-gen-mode=stable-privacy
method=auto
```
### Wireless WPA/PSK
```ini
[connection]
id=hassos-network
uuid=72111c67-4a5d-4d5c-925e-f8ee26efb3c3
type=802-11-wireless
[wifi]
mode=infrastructure
ssid=MY_SSID
[wifi-security]
auth-alg=open
key-mgmt=wpa-psk
psk=MY_WLAN_SECRED_KEY
[ipv4]
method=auto
[ipv6]
addr-gen-mode=stable-privacy
method=auto
```
### Static IP
Replace follow configs:
```ini
[ipv4]
method=manual
address1=192.168.1.111/24,192.168.1.1
dns=8.8.8.8;8.8.4.4;
```
## Tips
### Reset network
If you want reset the network configuration to default, use follow commands on host:
```bash
$ rm /etc/NetworkManager/system-connections/*
$ cp /usr/share/system-connections/* /etc/NetworkManager/system-connections/
$ nmcli con reload
```
### Powersave
If you have trouble with powersave you can do following:
```ini
[wifi]
# Values are 0 (use default), 1 (ignore/don't touch), 2 (disable) or 3 (enable).
powersave=0
```
[keyfile]: https://developer.gnome.org/NetworkManager/stable/nm-settings.html
[configuration-usb]: configuration.md
[uuid]: https://www.uuidgenerator.net/

View File

@@ -4,44 +4,11 @@ Hass.io OS based on [buildroot](https://buildroot.org/). It's a hypervisor for D
## Focus
- Linux kernel 4.14 (LT)
- Barebox as bootloader
- Barebox as bootloader on EFI
- U-Boot as bootloader on IoT
- RAUC for OTA updates
- SquashFS LZ4 as filesystem
- Docker 17.12.1
- Docker 18.03.1
- AppArmor protected
- ZRAM LZ4 for /tmp, /var, swap
- Run every supervisor
## Schemas
![](misc/hassio-os-partition.png?raw=true)
# Customize
Provide a file with the name `hassos.json` in your data partition and the following structure:
```json
{
"supervisor": "repo/image",
"supervisor_args": "optional / custom docker arguments",
"cli": "repo/image",
"cli_args": "optional / custom docker arguments",
"hostname": "default hostname"
}
```
# Building
Running `sudo ./enter.sh` will get you into the build Docker container.
`make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external xy_defconfig`
## Helpers
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external xy_defconfig`
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external menuconfig`
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external linux-menuconfig`
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external barebox-menuconfig`
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external busybox-menuconfig`
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external savedefconfig`
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external linux-update-defconfig`
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external barebox-update-defconfig`
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external busybox-update-config`

View File

@@ -1,75 +0,0 @@
#include <tunables/global>
profile hassio-supervisor flags=(attach_disconnected,mediate_deleted) {
#include <abstractions/base>
#include <abstractions/python>
network,
deny network raw,
signal (send) set=(kill,term),
/bin/busybox ix,
/usr/bin/python{,3,3.[0-9]} ix,
/usr/bin/git cx,
/usr/bin/socat cx,
/usr/bin/gdbus cx,
deny /proc/** wl,
deny /root/** wl,
deny /sys/** wl,
/** r,
/tmp/** rw,
/data/** rw,
/{,var/}run/docker.sock rw,
capability net_bind_service,
profile /usr/bin/socat flags=(attach_disconnected,mediate_deleted) {
#include <abstractions/base>
network inet udp,
network inet tcp,
deny network raw,
deny network packet,
signal (receive) set=(kill,term),
capability net_bind_service,
/lib/* mr,
/usr/bin/socat mr,
}
profile /usr/bin/gdbus flags=(attach_disconnected,mediate_deleted) {
#include <abstractions/base>
#include <abstractions/dbus>
unix (send, receive) type=stream,
/usr/bin/gdbus mr,
/lib/* mr,
/{,var/}run/dbus/system_bus_socket rw,
}
profile /usr/bin/git flags=(attach_disconnected,mediate_deleted) {
#include <abstractions/base>
network,
deny network raw,
/bin/busybox ix,
/usr/bin/git mr,
/usr/libexec/git-core/* ix,
deny /data/homeassistant rw,
deny /data/ssl rw,
/** r,
/lib/* mr,
/data/addons/** lrw,
capability dac_override,
}
}

View File

@@ -1,12 +0,0 @@
#!/bin/sh
global linux.bootargs.dyn.root="root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro"
mkdir -p /mnt/system
mount -t squashfs /dev/disk0.hassos-system0 /mnt/system
if [ -f "/mnt/system/boot/bzImage" ]; then
global bootm.image="/mnt/system/boot/bzImage"
else
global bootm.image="/mnt/system/boot/zImage"
fi

View File

@@ -1,13 +0,0 @@
#!/bin/sh
global linux.bootargs.dyn.root="root=PARTUUID=a3ec664e-32ce-4665-95ea-7ae90ce9aa20 rootfstype=squashfs ro"
mkdir -p /mnt/system
mount -t squashfs /dev/disk0.hassos-system1 /mnt/system
if [ -f "/mnt/system/boot/bzImage" ]; then
global bootm.image="/mnt/system/boot/bzImage"
else
global bootm.image="/mnt/system/boot/zImage"
fi

View File

@@ -1 +0,0 @@
system0 system1

View File

@@ -1,5 +0,0 @@
#!/bin/sh
for i in /env/overlay/*.dtbo; do
oftree -o $i
done

View File

@@ -1,3 +1,5 @@
BOARD_ID=ova
BOARD_NAME="Open Virtual Appliance"
CHASSIS=vm
BOOTLOADER=barebox
KERNEL_FILE=bzImage

View File

@@ -17,7 +17,7 @@ index d5efc0c..c57c2f7 100644
g_ptr_array_add(args, g_strdup_printf(BOOTSTATE_PREFIX ".%s.remaining_attempts", bootname));
+
+ g_ptr_array_add(args, g_strdup("-i"));
+ g_ptr_array_add(args, g_strdup("/mnt/boot/EFI/barebox/state.dtb"));
+ g_ptr_array_add(args, g_strdup("/etc/barebox-state.dtb"));
g_ptr_array_add(args, NULL);
sub = g_subprocess_newv((const gchar * const *)args->pdata,
@@ -27,7 +27,7 @@ index d5efc0c..c57c2f7 100644
}
+
+ g_ptr_array_add(args, g_strdup("-i"));
+ g_ptr_array_add(args, g_strdup("/mnt/boot/EFI/barebox/state.dtb"));
+ g_ptr_array_add(args, g_strdup("/etc/barebox-state.dtb"));
g_ptr_array_add(args, NULL);
sub = g_subprocess_newv((const gchar * const *)args->pdata,

View File

@@ -6,26 +6,25 @@ BOARD_DIR=${2}
BOOT_DATA=${BINARIES_DIR}/boot
. ${SCRIPT_DIR}/hdd-image.sh
. ${SCRIPT_DIR}/name.sh
. ${SCRIPT_DIR}/ota.sh
. ${BR2_EXTERNAL_HASSOS_PATH}/info
. ${BOARD_DIR}/info
# Filename
IMAGE_FILE=${HASSOS_ID}_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.vmdk
# Init boot data
rm -rf ${BOOT_DATA}
mkdir -p ${BOOT_DATA}/EFI/BOOT
mkdir -p ${BOOT_DATA}/EFI/barebox
cp ${BINARIES_DIR}/barebox.bin ${BOOT_DATA}/EFI/BOOT/BOOTx64.EFI
cp ${BOARD_DIR}/barebox-state-efi.dtb ${BOOT_DATA}/EFI/barebox/state.dtb
cp ${BR2_EXTERNAL_HASSOS_PATH}/misc/barebox-state-efi.dtb ${BOOT_DATA}/EFI/barebox/state.dtb
echo "console=tty1" > ${BOARD_DIR}/cmdline.txt
echo "console=tty1" > ${BOOT_DATA}/cmdline.txt
# Create other layers
create_boot_image ${BINARIES_DIR}
create_overlay_image ${BINARIES_DIR}
prepare_disk_image
create_disk_image ${BINARIES_DIR} ${BINARIES_DIR}/harddisk.img 6
qemu-img convert -O vmdk ${BINARIES_DIR}/harddisk.img ${BINARIES_DIR}/${IMAGE_FILE}
# Create disk images
create_disk_image 6
convert_disk_image_vmdk
create_ota_update

View File

@@ -6,19 +6,20 @@ BOARD_DIR=${2}
BOOT_DATA=${BINARIES_DIR}/boot
. ${SCRIPT_DIR}/hdd-image.sh
. ${SCRIPT_DIR}/name.sh
. ${SCRIPT_DIR}/ota.sh
. ${BR2_EXTERNAL_HASSOS_PATH}/info
. ${BOARD_DIR}/info
# Filename
IMAGE_FILE=${BINARIES_DIR}/${HASSOS_ID}_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.img
# Init boot data
rm -rf ${BOOT_DATA}
mkdir -p ${BOOT_DATA}
cp ${BINARIES_DIR}/barebox.bin ${BOOT_DATA}/
cp -t ${BOOT_DATA} \
${BINARIES_DIR}/bcm2709-rpi-2-b.dtb \
${BINARIES_DIR}/u-boot.bin \
${BINARIES_DIR}/boot.scr
cp -t ${BOOT_DATA} \
${BINARIES_DIR}/*.dtb \
${BINARIES_DIR}/rpi-firmware/bootcode.bin \
${BINARIES_DIR}/rpi-firmware/fixup.dat \
${BINARIES_DIR}/rpi-firmware/start.elf
@@ -26,20 +27,22 @@ cp -r ${BINARIES_DIR}/rpi-firmware/overlays ${BOOT_DATA}/
# Update Boot options
(
echo "kernel=barebox.bin"
echo "kernel=u-boot.bin"
echo "disable_splash=1"
echo "dtparam=audio=on"
echo "enable_uart=1"
) > ${BOOT_DATA}/config.txt
echo "dwc_otg.lpm_enable=0 console=tty1 console=ttyAMA0,115200" > ${BOOT_DATA}/cmdline.txt
echo "dwc_otg.lpm_enable=0 console=tty1" > ${BOOT_DATA}/cmdline.txt
# Enable 64bit support
if [ "${BOARD_ID}" == "rpi3-64" ]; then
echo "arm_64bit=1" >> ${BOOT_DATA}/config.txt
fi
# Create other layers
create_boot_image ${BINARIES_DIR}
create_overlay_image ${BINARIES_DIR}
prepare_disk_image
create_disk_image ${BINARIES_DIR} ${IMAGE_FILE} 2
fix_disk_image_mbr ${IMAGE_FILE}
rm -rf ${IMAGE_FILE}.gz
gzip --best ${IMAGE_FILE}
create_disk_image 2
fix_disk_image_mbr
convert_disk_image_gz
create_ota_update

View File

@@ -0,0 +1,5 @@
BOARD_ID=rpi
BOARD_NAME="RaspberryPi"
CHASSIS=embedded
BOOTLOADER=uboot
KERNEL_FILE=zImage

View File

@@ -0,0 +1,5 @@
BOARD_ID=rpi0-w
BOARD_NAME="RaspberryPi Zero-W"
CHASSIS=embedded
BOOTLOADER=uboot
KERNEL_FILE=zImage

View File

@@ -1,3 +1,5 @@
BOARD_ID=rpi2
BOARD_NAME="RaspberryPi 2"
CHASSIS=embedded
BOOTLOADER=uboot
KERNEL_FILE=zImage

View File

@@ -0,0 +1,5 @@
BOARD_ID=rpi3-64
BOARD_NAME="RaspberryPi 3 64bit"
CHASSIS=embedded
BOOTLOADER=uboot
KERNEL_FILE=Image

View File

@@ -0,0 +1,54 @@
test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "A B"
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
# HassOS bootargs
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 apparmor=1 security=apparmor rootwait cgroup_enable=memory"
# HassOS system A/B
setenv bootargs_a "root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro"
setenv bootargs_b "root=PARTUUID=a3ec664e-32ce-4665-95ea-7ae90ce9aa20 rootfstype=squashfs ro"
# Preserve origin bootargs
setenv bootargs_rpi
fdt addr ${fdt_addr}
fdt get value bootargs_rpi /chosen bootargs
setenv bootargs
for BOOT_SLOT in "${BOOT_ORDER}"; do
if test "x${bootargs}" != "x"; then
# skip remaining slots
elif test "x${BOOT_SLOT}" = "xA"; then
if test ${BOOT_A_LEFT} -gt 0; then
setexpr BOOT_A_LEFT ${BOOT_A_LEFT} - 1
echo "Found valid slot A, ${BOOT_A_LEFT} attempts remaining"
setenv load_kernel "ext4load mmc 0:2 ${kernel_addr_r} Image"
setenv bootargs "${bootargs_hassos} ${bootargs_rpi} ${bootargs_a} rauc.slot=A"
fi
elif test "x${BOOT_SLOT}" = "xB"; then
if test ${BOOT_B_LEFT} -gt 0; then
setexpr BOOT_B_LEFT ${BOOT_B_LEFT} - 1
echo "Found valid slot B, ${BOOT_B_LEFT} attempts remaining"
setenv load_kernel "ext4load mmc 0:4 ${kernel_addr_r} Image"
setenv bootargs "${bootargs_hassos} ${bootargs_rpi} ${bootargs_b} rauc.slot=B"
fi
fi
done
if test -n "${bootargs}"; then
saveenv
else
echo "No valid slot found, resetting tries to 3"
setenv BOOT_A_LEFT 3
setenv BOOT_B_LEFT 3
saveenv
reset
fi
echo "Loading kernel"
run load_kernel
echo " Starting kernel"
booti ${kernel_addr_r} - ${fdt_addr}
echo "Fails on boot"
reset

View File

@@ -1,3 +1,5 @@
BOARD_ID=rpi3
BOARD_NAME="RaspberryPi 3"
CHASSIS=embedded
BOOTLOADER=uboot
KERNEL_FILE=zImage

View File

@@ -0,0 +1,54 @@
test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "A B"
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
# HassOS bootargs
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 apparmor=1 security=apparmor rootwait cgroup_enable=memory"
# HassOS system A/B
setenv bootargs_a "root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro"
setenv bootargs_b "root=PARTUUID=a3ec664e-32ce-4665-95ea-7ae90ce9aa20 rootfstype=squashfs ro"
# Preserve origin bootargs
setenv bootargs_rpi
fdt addr ${fdt_addr}
fdt get value bootargs_rpi /chosen bootargs
setenv bootargs
for BOOT_SLOT in "${BOOT_ORDER}"; do
if test "x${bootargs}" != "x"; then
# skip remaining slots
elif test "x${BOOT_SLOT}" = "xA"; then
if test ${BOOT_A_LEFT} -gt 0; then
setexpr BOOT_A_LEFT ${BOOT_A_LEFT} - 1
echo "Found valid slot A, ${BOOT_A_LEFT} attempts remaining"
setenv load_kernel "ext4load mmc 0:2 ${kernel_addr_r} zImage"
setenv bootargs "${bootargs_hassos} ${bootargs_rpi} ${bootargs_a} rauc.slot=A"
fi
elif test "x${BOOT_SLOT}" = "xB"; then
if test ${BOOT_B_LEFT} -gt 0; then
setexpr BOOT_B_LEFT ${BOOT_B_LEFT} - 1
echo "Found valid slot B, ${BOOT_B_LEFT} attempts remaining"
setenv load_kernel "ext4load mmc 0:4 ${kernel_addr_r} zImage"
setenv bootargs "${bootargs_hassos} ${bootargs_rpi} ${bootargs_b} rauc.slot=B"
fi
fi
done
if test -n "${bootargs}"; then
saveenv
else
echo "No valid slot found, resetting tries to 3"
setenv BOOT_A_LEFT 3
setenv BOOT_B_LEFT 3
saveenv
reset
fi
echo "Loading kernel"
run load_kernel
echo " Starting kernel"
bootz ${kernel_addr_r} - ${fdt_addr}
echo "Fails on boot"
reset

View File

@@ -0,0 +1,3 @@
# CONFIG_USB_STORAGE is not set
# CONFIG_ENV_FAT_INTERFACE is not set
# CONFIG_ENV_FAT_DEVICE_AND_PART is not set

View File

@@ -1,3 +0,0 @@
#!/bin/sh
global linux.bootargs.rpi="bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000"

View File

@@ -1,13 +0,0 @@
CONFIG_ARCH_BCM283X=y
CONFIG_MACH_RPI2=y
CONFIG_AEABI=y
CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y
CONFIG_ARM_UNWIND=y
CONFIG_MMU=y
CONFIG_MALLOC_TLSF=y
CONFIG_KALLSYMS=y
# CONFIG_SPI is not set
CONFIG_MCI=y
CONFIG_MCI_BCM283X=y
# CONFIG_PINCTRL is not set
CONFIG_REGULATOR=y

View File

@@ -1,30 +0,0 @@
From 6344ec5c84a49c2df4c2f26b52d317a34e3bc0c7 Mon Sep 17 00:00:00 2001
From: Pascal Vizeli <pvizeli@syshack.ch>
Date: Mon, 4 Jun 2018 07:55:46 +0000
Subject: [PATCH 1/2] ARM: dts: bcm2836-rpi-2: re-enable booting from SD card
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
---
arch/arm/dts/bcm2836-rpi-2.dts | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm/dts/bcm2836-rpi-2.dts b/arch/arm/dts/bcm2836-rpi-2.dts
index 42b6abb18..2fa1c8bb4 100644
--- a/arch/arm/dts/bcm2836-rpi-2.dts
+++ b/arch/arm/dts/bcm2836-rpi-2.dts
@@ -9,3 +9,12 @@
reg = <0x0 0x0>;
};
};
+
+&sdhci {
+ status = "okay";
+};
+
+&sdhost {
+ status = "disabled";
+};
+
--
2.17.0

View File

@@ -1,167 +0,0 @@
From 114c8fd0327f1c0f1bf886953c600e2a72a55df7 Mon Sep 17 00:00:00 2001
From: Pascal Vizeli <pvizeli@syshack.ch>
Date: Mon, 4 Jun 2018 09:17:25 +0000
Subject: [PATCH 2/2] ARM: dts: add more functions
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
---
arch/arm/dts/bcm2835-rpi.dts | 4 ---
arch/arm/dts/bcm2836-rpi-2.dts | 4 ---
dts/src/arm/bcm2835-rpi.dtsi | 46 ++++++++++++++++++++++++++++++++--
dts/src/arm/bcm283x.dtsi | 12 +++------
4 files changed, 48 insertions(+), 18 deletions(-)
diff --git a/arch/arm/dts/bcm2835-rpi.dts b/arch/arm/dts/bcm2835-rpi.dts
index c23e7c7c1..22d60e961 100644
--- a/arch/arm/dts/bcm2835-rpi.dts
+++ b/arch/arm/dts/bcm2835-rpi.dts
@@ -1,10 +1,6 @@
#include <arm/bcm2835-rpi-a.dts>
/ {
- chosen {
- stdout-path = &uart0;
- };
-
memory {
reg = <0x0 0x0>;
};
diff --git a/arch/arm/dts/bcm2836-rpi-2.dts b/arch/arm/dts/bcm2836-rpi-2.dts
index 2fa1c8bb4..bdee1296e 100644
--- a/arch/arm/dts/bcm2836-rpi-2.dts
+++ b/arch/arm/dts/bcm2836-rpi-2.dts
@@ -1,10 +1,6 @@
#include <arm/bcm2836-rpi-2-b.dts>
/ {
- chosen {
- stdout-path = &uart0;
- };
-
memory {
reg = <0x0 0x0>;
};
diff --git a/dts/src/arm/bcm2835-rpi.dtsi b/dts/src/arm/bcm2835-rpi.dtsi
index e36c392a2..d3dfb4b3e 100644
--- a/dts/src/arm/bcm2835-rpi.dtsi
+++ b/dts/src/arm/bcm2835-rpi.dtsi
@@ -27,6 +27,39 @@
firmware = <&firmware>;
#power-domain-cells = <1>;
};
+
+ fb: fb {
+ compatible = "brcm,bcm2708-fb";
+ firmware = <&firmware>;
+ status = "okay";
+ };
+
+ vchiq: vchiq {
+ compatible = "brcm,bcm2835-vchiq";
+ reg = <0x7e00b840 0xf>;
+ interrupts = <0 2>;
+ cache-line-size = <32>;
+ firmware = <&firmware>;
+ };
+
+ vcsm: vcsm {
+ compatible = "raspberrypi,bcm2835-vcsm";
+ firmware = <&firmware>;
+ status = "okay";
+ };
+
+ /* Onboard audio */
+ audio: audio {
+ compatible = "brcm,bcm2835-audio";
+ brcm,pwm-channels = <8>;
+ status = "okay";
+ };
+
+ /* External sound card */
+ sound: sound {
+ status = "disabled";
+ };
+
};
};
@@ -91,12 +124,12 @@
&hdmi {
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
- status = "okay";
+ status = "disabled";
};
&vec {
power-domains = <&power RPI_POWER_DOMAIN_VEC>;
- status = "okay";
+ status = "disabled";
};
&dsi0 {
@@ -106,3 +139,12 @@
&dsi1 {
power-domains = <&power RPI_POWER_DOMAIN_DSI1>;
};
+
+&v3d {
+ status = "disabled";
+};
+
+&vc4 {
+ status = "disabled";
+};
+
diff --git a/dts/src/arm/bcm283x.dtsi b/dts/src/arm/bcm283x.dtsi
index 9d293decf..0abb72a47 100644
--- a/dts/src/arm/bcm283x.dtsi
+++ b/dts/src/arm/bcm283x.dtsi
@@ -26,10 +26,6 @@
serial1 = &uart1;
};
- chosen {
- stdout-path = "serial0:115200n8";
- };
-
thermal-zones {
cpu_thermal: cpu-thermal {
polling-delay-passive = <0>;
@@ -426,13 +422,13 @@
status = "disabled";
};
- pixelvalve@7e206000 {
+ pixelvalve0: pixelvalve@7e206000 {
compatible = "brcm,bcm2835-pixelvalve0";
reg = <0x7e206000 0x100>;
interrupts = <2 13>; /* pwa0 */
};
- pixelvalve@7e207000 {
+ pixelvalve1: pixelvalve@7e207000 {
compatible = "brcm,bcm2835-pixelvalve1";
reg = <0x7e207000 0x100>;
interrupts = <2 14>; /* pwa1 */
@@ -518,7 +514,7 @@
status = "disabled";
};
- hvs@7e400000 {
+ hvs: hvs@7e400000 {
compatible = "brcm,bcm2835-hvs";
reg = <0x7e400000 0x6000>;
interrupts = <2 1>;
@@ -572,7 +568,7 @@
status = "disabled";
};
- pixelvalve@7e807000 {
+ pixelvalve2: pixelvalve@7e807000 {
compatible = "brcm,bcm2835-pixelvalve2";
reg = <0x7e807000 0x100>;
interrupts = <2 10>; /* pixelvalve */
--
2.17.0

View File

@@ -1,167 +0,0 @@
From 3fe92c12e01e35cc97fbd92d8ae098ac583cfa1f Mon Sep 17 00:00:00 2001
From: Pascal Vizeli <pvizeli@syshack.ch>
Date: Mon, 4 Jun 2018 09:25:40 +0000
Subject: [PATCH 3/3] Add HassOS bootchoiser state
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
---
arch/arm/dts/bcm2835-rpi.dts | 69 ++++++++++++++++++++++++++++++++++
arch/arm/dts/bcm2836-rpi-2.dts | 68 +++++++++++++++++++++++++++++++++
2 files changed, 137 insertions(+)
diff --git a/arch/arm/dts/bcm2835-rpi.dts b/arch/arm/dts/bcm2835-rpi.dts
index 22d60e961..3357d06b7 100644
--- a/arch/arm/dts/bcm2835-rpi.dts
+++ b/arch/arm/dts/bcm2835-rpi.dts
@@ -13,3 +13,72 @@
&sdhost {
status = "disabled";
};
+
+/ {
+
+ aliases {
+ state = &state;
+ };
+
+ state: state {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ magic = <0xef98423f>;
+ compatible = "barebox,state";
+ backend = <&backend_state>;
+ backend-type = "raw";
+ backend-stridesize = <4048>;
+
+ bootstate {
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ system0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ remaining_attempts@0 {
+ reg = <0x0 0x4>;
+ type = "uint32";
+ default = <3>;
+ };
+ priority@4 {
+ reg = <0x4 0x4>;
+ type = "uint32";
+ default = <20>;
+ };
+ };
+ system1 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ remaining_attempts@8 {
+ reg = <0x8 0x4>;
+ type = "uint32";
+ default = <0>;
+ };
+ priority@c {
+ reg = <0xc 0x4>;
+ type = "uint32";
+ default = <10>;
+ };
+ };
+ last_chosen@10 {
+ reg = <0x10 0x4>;
+ type = "uint32";
+ };
+ };
+ };
+};
+
+&sdhci {
+ partitions {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "fixed-partitions";
+
+ backend_state: partition@22100000 {
+ label = "state";
+ reg = <0x22100000 0x800000>;
+ };
+ };
+};
+
diff --git a/arch/arm/dts/bcm2836-rpi-2.dts b/arch/arm/dts/bcm2836-rpi-2.dts
index bdee1296e..e41def570 100644
--- a/arch/arm/dts/bcm2836-rpi-2.dts
+++ b/arch/arm/dts/bcm2836-rpi-2.dts
@@ -14,3 +14,71 @@
status = "disabled";
};
+/ {
+
+ aliases {
+ state = &state;
+ };
+
+ state: state {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ magic = <0xef98423f>;
+ compatible = "barebox,state";
+ backend = <&backend_state>;
+ backend-type = "raw";
+ backend-stridesize = <4048>;
+
+ bootstate {
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ system0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ remaining_attempts@0 {
+ reg = <0x0 0x4>;
+ type = "uint32";
+ default = <3>;
+ };
+ priority@4 {
+ reg = <0x4 0x4>;
+ type = "uint32";
+ default = <20>;
+ };
+ };
+ system1 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ remaining_attempts@8 {
+ reg = <0x8 0x4>;
+ type = "uint32";
+ default = <0>;
+ };
+ priority@c {
+ reg = <0xc 0x4>;
+ type = "uint32";
+ default = <10>;
+ };
+ };
+ last_chosen@10 {
+ reg = <0x10 0x4>;
+ type = "uint32";
+ };
+ };
+ };
+};
+
+&sdhci {
+ partitions {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "fixed-partitions";
+
+ backend_state: partition@22100000 {
+ label = "state";
+ reg = <0x22100000 0x800000>;
+ };
+ };
+};
+
--
2.17.0

View File

@@ -1,42 +0,0 @@
From 19ab0b433893cc7d16e8f4a6052f0f784131c43a Mon Sep 17 00:00:00 2001
From: Pascal Vizeli <pvizeli@syshack.ch>
Date: Sat, 2 Jun 2018 22:08:31 +0000
Subject: [PATCH 1/1] common: state: allow to overlay state backend
This allow to use overlay for state backends. I.e. on raspberry you need
use barebox with SDHCI (slow) and after linux boot it will use SDHOST driver.
But the problem now is, that the state is on SDHCI and dt-utils need it on
SDHOST. Actual it is not possible to overwrite this.
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
---
common/state/state.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/common/state/state.c b/common/state/state.c
index 25d950211..e6259043f 100644
--- a/common/state/state.c
+++ b/common/state/state.c
@@ -494,8 +494,17 @@ static int of_state_fixup(struct device_node *root, void *ctx)
}
/* backend phandle */
- backend_node = of_find_node_by_reproducible_name(root,
- state->backend_reproducible_name);
+ if (node) {
+ ret = of_property_read_u32(node, "backend", &phandle);
+ if (ret)
+ goto out;
+
+ backend_node = of_find_node_by_phandle_from(phandle, root);
+ } else {
+ backend_node = of_find_node_by_reproducible_name(root,
+ state->backend_reproducible_name);
+ }
+
if (!backend_node) {
ret = -ENODEV;
goto out;
--
2.17.0

View File

@@ -1,54 +0,0 @@
CONFIG_ARCH_BCM283X=y
CONFIG_MACH_RPI3=y
CONFIG_AEABI=y
CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y
CONFIG_ARM_UNWIND=y
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_MMU=y
CONFIG_MALLOC_SIZE=0x0
CONFIG_MALLOC_TLSF=y
CONFIG_KALLSYMS=y
CONFIG_PROMPT="HassOS-boot:"
CONFIG_CMDLINE_EDITING=y
CONFIG_AUTO_COMPLETE=y
CONFIG_MENU=y
# CONFIG_TIMESTAMP is not set
CONFIG_BOOTM_SHOW_TYPE=y
CONFIG_BOOTM_OFTREE=y
CONFIG_FLEXIBLE_BOOTARGS=y
# CONFIG_PARTITION_DISK_DOS is not set
CONFIG_PARTITION_DISK_EFI=y
# CONFIG_PARTITION_DISK_EFI_GPT_NO_FORCE is not set
# CONFIG_PARTITION_DISK_EFI_GPT_COMPARE is not set
CONFIG_DEFAULT_ENVIRONMENT_PATH="/build/buildroot-external/barebox-env"
CONFIG_STATE=y
CONFIG_BOOTCHOOSER=y
# CONFIG_CMD_VERSION is not set
CONFIG_CMD_BOOT=y
CONFIG_CMD_AUTOMOUNT=y
CONFIG_CMD_NV=y
CONFIG_CMD_EXPORT=y
CONFIG_CMD_GLOBAL=y
CONFIG_CMD_BASENAME=y
CONFIG_CMD_DIRNAME=y
CONFIG_CMD_READLINK=y
CONFIG_CMD_GETOPT=y
CONFIG_CMD_MENUTREE=y
CONFIG_CMD_TIMEOUT=y
CONFIG_CMD_DETECT=y
CONFIG_CMD_STATE=y
CONFIG_CMD_BOOTCHOOSER=y
CONFIG_SERIAL_AMBA_PL011=y
# CONFIG_SPI is not set
CONFIG_MCI=y
CONFIG_MCI_BCM283X=y
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_BCM2835=y
CONFIG_GPIO_BCM283X=y
# CONFIG_PINCTRL is not set
CONFIG_REGULATOR=y
CONFIG_FS_FAT=y
CONFIG_FS_FAT_WRITE=y
CONFIG_FS_FAT_LFN=y
CONFIG_FS_SQUASHFS=y
CONFIG_LZ4_DECOMPRESS=y

View File

@@ -1,295 +0,0 @@
Those are needed to generate some of the ARM SEC and VIRT
opcodes in a portable way.
Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
---
arch/arm/include/asm/opcodes-virt.h | 39 ++++++
arch/arm/include/asm/opcodes.h | 231 ++++++++++++++++++++++++++++++++++++
2 files changed, 270 insertions(+)
create mode 100644 arch/arm/include/asm/opcodes-virt.h
create mode 100644 arch/arm/include/asm/opcodes.h
diff --git a/arch/arm/include/asm/opcodes-virt.h b/arch/arm/include/asm/opcodes-virt.h
new file mode 100644
index 000000000000..efcfdf92d9d5
--- /dev/null
+++ b/arch/arm/include/asm/opcodes-virt.h
@@ -0,0 +1,39 @@
+/*
+ * opcodes-virt.h: Opcode definitions for the ARM virtualization extensions
+ * Copyright (C) 2012 Linaro Limited
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+#ifndef __ASM_ARM_OPCODES_VIRT_H
+#define __ASM_ARM_OPCODES_VIRT_H
+
+#include <asm/opcodes.h>
+
+#define __HVC(imm16) __inst_arm_thumb32( \
+ 0xE1400070 | (((imm16) & 0xFFF0) << 4) | ((imm16) & 0x000F), \
+ 0xF7E08000 | (((imm16) & 0xF000) << 4) | ((imm16) & 0x0FFF) \
+)
+
+#define __ERET __inst_arm_thumb32( \
+ 0xE160006E, \
+ 0xF3DE8F00 \
+)
+
+#define __MSR_ELR_HYP(regnum) __inst_arm_thumb32( \
+ 0xE12EF300 | regnum, \
+ 0xF3808E30 | (regnum << 16) \
+)
+
+#endif /* ! __ASM_ARM_OPCODES_VIRT_H */
diff --git a/arch/arm/include/asm/opcodes.h b/arch/arm/include/asm/opcodes.h
new file mode 100644
index 000000000000..a78bf5d2c518
--- /dev/null
+++ b/arch/arm/include/asm/opcodes.h
@@ -0,0 +1,231 @@
+/*
+ * arch/arm/include/asm/opcodes.h
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef __ASM_ARM_OPCODES_H
+#define __ASM_ARM_OPCODES_H
+
+#ifndef __ASSEMBLY__
+#include <linux/linkage.h>
+extern asmlinkage unsigned int arm_check_condition(u32 opcode, u32 psr);
+#endif
+
+#define ARM_OPCODE_CONDTEST_FAIL 0
+#define ARM_OPCODE_CONDTEST_PASS 1
+#define ARM_OPCODE_CONDTEST_UNCOND 2
+
+
+/*
+ * Assembler opcode byteswap helpers.
+ * These are only intended for use by this header: don't use them directly,
+ * because they will be suboptimal in most cases.
+ */
+#define ___asm_opcode_swab32(x) ( \
+ (((x) << 24) & 0xFF000000) \
+ | (((x) << 8) & 0x00FF0000) \
+ | (((x) >> 8) & 0x0000FF00) \
+ | (((x) >> 24) & 0x000000FF) \
+)
+#define ___asm_opcode_swab16(x) ( \
+ (((x) << 8) & 0xFF00) \
+ | (((x) >> 8) & 0x00FF) \
+)
+#define ___asm_opcode_swahb32(x) ( \
+ (((x) << 8) & 0xFF00FF00) \
+ | (((x) >> 8) & 0x00FF00FF) \
+)
+#define ___asm_opcode_swahw32(x) ( \
+ (((x) << 16) & 0xFFFF0000) \
+ | (((x) >> 16) & 0x0000FFFF) \
+)
+#define ___asm_opcode_identity32(x) ((x) & 0xFFFFFFFF)
+#define ___asm_opcode_identity16(x) ((x) & 0xFFFF)
+
+
+/*
+ * Opcode byteswap helpers
+ *
+ * These macros help with converting instructions between a canonical integer
+ * format and in-memory representation, in an endianness-agnostic manner.
+ *
+ * __mem_to_opcode_*() convert from in-memory representation to canonical form.
+ * __opcode_to_mem_*() convert from canonical form to in-memory representation.
+ *
+ *
+ * Canonical instruction representation:
+ *
+ * ARM: 0xKKLLMMNN
+ * Thumb 16-bit: 0x0000KKLL, where KK < 0xE8
+ * Thumb 32-bit: 0xKKLLMMNN, where KK >= 0xE8
+ *
+ * There is no way to distinguish an ARM instruction in canonical representation
+ * from a Thumb instruction (just as these cannot be distinguished in memory).
+ * Where this distinction is important, it needs to be tracked separately.
+ *
+ * Note that values in the range 0x0000E800..0xE7FFFFFF intentionally do not
+ * represent any valid Thumb-2 instruction. For this range,
+ * __opcode_is_thumb32() and __opcode_is_thumb16() will both be false.
+ *
+ * The ___asm variants are intended only for use by this header, in situations
+ * involving inline assembler. For .S files, the normal __opcode_*() macros
+ * should do the right thing.
+ */
+#ifdef __ASSEMBLY__
+
+#define ___opcode_swab32(x) ___asm_opcode_swab32(x)
+#define ___opcode_swab16(x) ___asm_opcode_swab16(x)
+#define ___opcode_swahb32(x) ___asm_opcode_swahb32(x)
+#define ___opcode_swahw32(x) ___asm_opcode_swahw32(x)
+#define ___opcode_identity32(x) ___asm_opcode_identity32(x)
+#define ___opcode_identity16(x) ___asm_opcode_identity16(x)
+
+#else /* ! __ASSEMBLY__ */
+
+#include <linux/types.h>
+#include <linux/swab.h>
+
+#define ___opcode_swab32(x) swab32(x)
+#define ___opcode_swab16(x) swab16(x)
+#define ___opcode_swahb32(x) swahb32(x)
+#define ___opcode_swahw32(x) swahw32(x)
+#define ___opcode_identity32(x) ((u32)(x))
+#define ___opcode_identity16(x) ((u16)(x))
+
+#endif /* ! __ASSEMBLY__ */
+
+
+#ifdef CONFIG_CPU_ENDIAN_BE8
+
+#define __opcode_to_mem_arm(x) ___opcode_swab32(x)
+#define __opcode_to_mem_thumb16(x) ___opcode_swab16(x)
+#define __opcode_to_mem_thumb32(x) ___opcode_swahb32(x)
+#define ___asm_opcode_to_mem_arm(x) ___asm_opcode_swab32(x)
+#define ___asm_opcode_to_mem_thumb16(x) ___asm_opcode_swab16(x)
+#define ___asm_opcode_to_mem_thumb32(x) ___asm_opcode_swahb32(x)
+
+#else /* ! CONFIG_CPU_ENDIAN_BE8 */
+
+#define __opcode_to_mem_arm(x) ___opcode_identity32(x)
+#define __opcode_to_mem_thumb16(x) ___opcode_identity16(x)
+#define ___asm_opcode_to_mem_arm(x) ___asm_opcode_identity32(x)
+#define ___asm_opcode_to_mem_thumb16(x) ___asm_opcode_identity16(x)
+#ifndef CONFIG_CPU_ENDIAN_BE32
+/*
+ * On BE32 systems, using 32-bit accesses to store Thumb instructions will not
+ * work in all cases, due to alignment constraints. For now, a correct
+ * version is not provided for BE32.
+ */
+#define __opcode_to_mem_thumb32(x) ___opcode_swahw32(x)
+#define ___asm_opcode_to_mem_thumb32(x) ___asm_opcode_swahw32(x)
+#endif
+
+#endif /* ! CONFIG_CPU_ENDIAN_BE8 */
+
+#define __mem_to_opcode_arm(x) __opcode_to_mem_arm(x)
+#define __mem_to_opcode_thumb16(x) __opcode_to_mem_thumb16(x)
+#ifndef CONFIG_CPU_ENDIAN_BE32
+#define __mem_to_opcode_thumb32(x) __opcode_to_mem_thumb32(x)
+#endif
+
+/* Operations specific to Thumb opcodes */
+
+/* Instruction size checks: */
+#define __opcode_is_thumb32(x) ( \
+ ((x) & 0xF8000000) == 0xE8000000 \
+ || ((x) & 0xF0000000) == 0xF0000000 \
+)
+#define __opcode_is_thumb16(x) ( \
+ ((x) & 0xFFFF0000) == 0 \
+ && !(((x) & 0xF800) == 0xE800 || ((x) & 0xF000) == 0xF000) \
+)
+
+/* Operations to construct or split 32-bit Thumb instructions: */
+#define __opcode_thumb32_first(x) (___opcode_identity16((x) >> 16))
+#define __opcode_thumb32_second(x) (___opcode_identity16(x))
+#define __opcode_thumb32_compose(first, second) ( \
+ (___opcode_identity32(___opcode_identity16(first)) << 16) \
+ | ___opcode_identity32(___opcode_identity16(second)) \
+)
+#define ___asm_opcode_thumb32_first(x) (___asm_opcode_identity16((x) >> 16))
+#define ___asm_opcode_thumb32_second(x) (___asm_opcode_identity16(x))
+#define ___asm_opcode_thumb32_compose(first, second) ( \
+ (___asm_opcode_identity32(___asm_opcode_identity16(first)) << 16) \
+ | ___asm_opcode_identity32(___asm_opcode_identity16(second)) \
+)
+
+/*
+ * Opcode injection helpers
+ *
+ * In rare cases it is necessary to assemble an opcode which the
+ * assembler does not support directly, or which would normally be
+ * rejected because of the CFLAGS or AFLAGS used to build the affected
+ * file.
+ *
+ * Before using these macros, consider carefully whether it is feasible
+ * instead to change the build flags for your file, or whether it really
+ * makes sense to support old assembler versions when building that
+ * particular kernel feature.
+ *
+ * The macros defined here should only be used where there is no viable
+ * alternative.
+ *
+ *
+ * __inst_arm(x): emit the specified ARM opcode
+ * __inst_thumb16(x): emit the specified 16-bit Thumb opcode
+ * __inst_thumb32(x): emit the specified 32-bit Thumb opcode
+ *
+ * __inst_arm_thumb16(arm, thumb): emit either the specified arm or
+ * 16-bit Thumb opcode, depending on whether an ARM or Thumb-2
+ * kernel is being built
+ *
+ * __inst_arm_thumb32(arm, thumb): emit either the specified arm or
+ * 32-bit Thumb opcode, depending on whether an ARM or Thumb-2
+ * kernel is being built
+ *
+ *
+ * Note that using these macros directly is poor practice. Instead, you
+ * should use them to define human-readable wrapper macros to encode the
+ * instructions that you care about. In code which might run on ARMv7 or
+ * above, you can usually use the __inst_arm_thumb{16,32} macros to
+ * specify the ARM and Thumb alternatives at the same time. This ensures
+ * that the correct opcode gets emitted depending on the instruction set
+ * used for the kernel build.
+ *
+ * Look at opcodes-virt.h for an example of how to use these macros.
+ */
+#include <linux/stringify.h>
+
+#define __inst_arm(x) ___inst_arm(___asm_opcode_to_mem_arm(x))
+#define __inst_thumb32(x) ___inst_thumb32( \
+ ___asm_opcode_to_mem_thumb16(___asm_opcode_thumb32_first(x)), \
+ ___asm_opcode_to_mem_thumb16(___asm_opcode_thumb32_second(x)) \
+)
+#define __inst_thumb16(x) ___inst_thumb16(___asm_opcode_to_mem_thumb16(x))
+
+#ifdef CONFIG_THUMB2_BAREBOX
+#define __inst_arm_thumb16(arm_opcode, thumb_opcode) \
+ __inst_thumb16(thumb_opcode)
+#define __inst_arm_thumb32(arm_opcode, thumb_opcode) \
+ __inst_thumb32(thumb_opcode)
+#else
+#define __inst_arm_thumb16(arm_opcode, thumb_opcode) __inst_arm(arm_opcode)
+#define __inst_arm_thumb32(arm_opcode, thumb_opcode) __inst_arm(arm_opcode)
+#endif
+
+/* Helpers for the helpers. Don't use these directly. */
+#ifdef __ASSEMBLY__
+#define ___inst_arm(x) .long x
+#define ___inst_thumb16(x) .short x
+#define ___inst_thumb32(first, second) .short first, second
+#else
+#define ___inst_arm(x) ".long " __stringify(x) "\n\t"
+#define ___inst_thumb16(x) ".short " __stringify(x) "\n\t"
+#define ___inst_thumb32(first, second) \
+ ".short " __stringify(first) ", " __stringify(second) "\n\t"
+#endif
+
+#endif /* __ASM_ARM_OPCODES_H */
--
2.16.1

View File

@@ -1,85 +0,0 @@
This is a port of the Linux safe_svcmode_maskall macro to
the Barebox lowlevel init.
Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
---
arch/arm/cpu/lowlevel.S | 20 ++++++++++++++++----
arch/arm/include/asm/system.h | 26 ++++++++++++++++++++++++++
2 files changed, 42 insertions(+), 4 deletions(-)
diff --git a/arch/arm/cpu/lowlevel.S b/arch/arm/cpu/lowlevel.S
index 7696a198e764..194ce0e7c274 100644
--- a/arch/arm/cpu/lowlevel.S
+++ b/arch/arm/cpu/lowlevel.S
@@ -1,16 +1,28 @@
#include <linux/linkage.h>
#include <init.h>
#include <asm/system.h>
+#include <asm/opcodes-virt.h>
.section ".text_bare_init_","ax"
ENTRY(arm_cpu_lowlevel_init)
/* save lr, since it may be banked away with a processor mode change */
mov r2, lr
+
/* set the cpu to SVC32 mode, mask irq and fiq */
- mrs r12, cpsr
- bic r12, r12, #0x1f
- orr r12, r12, #0xd3
- msr cpsr, r12
+ mrs r12 , cpsr
+ eor r12, r12, #HYP_MODE
+ tst r12, #MODE_MASK
+ bic r12 , r12 , #MODE_MASK
+ orr r12 , r12 , #(PSR_I_BIT | PSR_F_BIT | SVC_MODE)
+THUMB( orr r12 , r12 , #PSR_T_BIT )
+ bne 1f
+ orr r12, r12, #PSR_A_BIT
+ adr lr, 2f
+ msr spsr_cxsf, r12
+ __MSR_ELR_HYP(14)
+ __ERET
+1: msr cpsr_c, r12
+2:
#if __LINUX_ARM_ARCH__ >= 6
/*
diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h
index 57c76186b499..55e0f4090295 100644
--- a/arch/arm/include/asm/system.h
+++ b/arch/arm/include/asm/system.h
@@ -60,6 +60,32 @@
#define CR_AFE (1 << 29) /* Access flag enable */
#define CR_TE (1 << 30) /* Thumb exception enable */
+/*
+ * PSR bits
+ */
+#define USR_MODE 0x00000010
+#define FIQ_MODE 0x00000011
+#define IRQ_MODE 0x00000012
+#define SVC_MODE 0x00000013
+#define ABT_MODE 0x00000017
+#define HYP_MODE 0x0000001a
+#define UND_MODE 0x0000001b
+#define SYSTEM_MODE 0x0000001f
+#define MODE32_BIT 0x00000010
+#define MODE_MASK 0x0000001f
+
+#define PSR_T_BIT 0x00000020
+#define PSR_F_BIT 0x00000040
+#define PSR_I_BIT 0x00000080
+#define PSR_A_BIT 0x00000100
+#define PSR_E_BIT 0x00000200
+#define PSR_J_BIT 0x01000000
+#define PSR_Q_BIT 0x08000000
+#define PSR_V_BIT 0x10000000
+#define PSR_C_BIT 0x20000000
+#define PSR_Z_BIT 0x40000000
+#define PSR_N_BIT 0x80000000
+
#ifndef __ASSEMBLY__
#if __LINUX_ARM_ARCH__ >= 7
static inline unsigned int current_el(void)
--
2.15.1

View File

@@ -1,33 +0,0 @@
The hyp mode handling added in the secure monitor code is also useful
when Barebox doesn't have PSCI control. Allow to build without PSCI.
Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
---
arch/arm/cpu/sm_as.S | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm/cpu/sm_as.S b/arch/arm/cpu/sm_as.S
index 09580e75de5f..0d01e1bf2435 100644
--- a/arch/arm/cpu/sm_as.S
+++ b/arch/arm/cpu/sm_as.S
@@ -129,7 +129,9 @@ secure_monitor:
sub sp, sp, #4*4 @ allocate result structure on stack
mov r12, sp
push {r4-r6, r12}
+#ifdef CONFIG_ARM_PSCI
bl psci_entry
+#endif
pop {r4-r6, r12}
ldm r12, {r0-r3}
add sp, sp, #4*4
@@ -163,6 +165,8 @@ ENTRY(psci_cpu_entry)
mcr p15, 0, r0, c1, c0, 1 @ ACTLR
bl secure_monitor_stack_setup
+#ifdef CONFIG_ARM_PSCI
bl psci_cpu_entry_c
+#endif
ENDPROC(psci_cpu_entry)
--
2.15.1

View File

@@ -1,192 +0,0 @@
From 6add848d66a7bdebed73416a3cf27b8bf10a2cd8 Mon Sep 17 00:00:00 2001
From: Pascal Vizeli <pvizeli@syshack.ch>
Date: Sat, 19 May 2018 17:58:01 +0200
Subject: [PATCH 1/1] p2
---
arch/arm/cpu/Makefile | 7 +++
arch/arm/cpu/hyp.S | 115 ++++++++++++++++++++++++++++++++++++++++++
arch/arm/cpu/sm_as.S | 11 ----
arch/arm/include/asm/secure.h | 2 +
4 files changed, 124 insertions(+), 11 deletions(-)
create mode 100644 arch/arm/cpu/hyp.S
diff --git a/arch/arm/cpu/Makefile b/arch/arm/cpu/Makefile
index 0316d25..6d67b42 100644
--- a/arch/arm/cpu/Makefile
+++ b/arch/arm/cpu/Makefile
@@ -9,6 +9,13 @@ obj-y += start.o entry.o
obj-pbl-y += setupc$(S64).o cache$(S64).o
+ifeq ($(CONFIG_CPU_64v8),)
+obj-y += hyp.o
+AFLAGS_hyp.o :=-Wa,-march=armv7-a
+pbl-y += hyp.o
+AFLAGS_pbl-hyp.o :=-Wa,-march=armv7-a
+endif
+
#
# Any variants can be called as start-armxyz.S
#
diff --git a/arch/arm/cpu/hyp.S b/arch/arm/cpu/hyp.S
new file mode 100644
index 0000000..435d416
--- /dev/null
+++ b/arch/arm/cpu/hyp.S
@@ -0,0 +1,115 @@
+#include <linux/linkage.h>
+#include <asm/system.h>
+#include <asm/opcodes-virt.h>
+
+.arch_extension sec
+.arch_extension virt
+
+.section ".text_bare_init_","ax"
+
+.data
+ .align 2
+ENTRY(__boot_cpu_mode)
+ .long 0
+.text
+
+ENTRY(__hyp_install)
+ mrs r12, cpsr
+ and r12, r12, #MODE_MASK
+
+ @ Save the initial CPU state
+ adr r0, .L__boot_cpu_mode_offset
+ ldr r1, [r0]
+ str r12, [r0, r1]
+
+ cmp r12, #HYP_MODE
+ movne pc, lr @ give up if the CPU is not in HYP mode
+
+ @ Now install the hypervisor stub:
+ adr r12, __hyp_vectors
+ mcr p15, 4, r12, c12, c0, 0 @ set hypervisor vector base (HVBAR)
+
+ @ Disable all traps, so we don't get any nasty surprise
+ mov r12, #0
+ mcr p15, 4, r12, c1, c1, 0 @ HCR
+ mcr p15, 4, r12, c1, c1, 2 @ HCPTR
+ mcr p15, 4, r12, c1, c1, 3 @ HSTR
+
+THUMB( orr r12, #(1 << 30) ) @ HSCTLR.TE
+ mcr p15, 4, r12, c1, c0, 0 @ HSCTLR
+
+ mrc p15, 4, r12, c1, c1, 1 @ HDCR
+ and r12, #0x1f @ Preserve HPMN
+ mcr p15, 4, r12, c1, c1, 1 @ HDCR
+
+ @ Make sure NS-SVC is initialised appropriately
+ mrc p15, 0, r12, c1, c0, 0 @ SCTLR
+ orr r12, #(1 << 5) @ CP15 barriers enabled
+ bic r12, #(3 << 7) @ Clear SED/ITD for v8 (RES0 for v7)
+ bic r12, #(3 << 19) @ WXN and UWXN disabled
+ mcr p15, 0, r12, c1, c0, 0 @ SCTLR
+
+ mrc p15, 0, r12, c0, c0, 0 @ MIDR
+ mcr p15, 4, r12, c0, c0, 0 @ VPIDR
+
+ mrc p15, 0, r12, c0, c0, 5 @ MPIDR
+ mcr p15, 4, r12, c0, c0, 5 @ VMPIDR
+ bx lr
+ENDPROC(__hyp_install)
+
+ENTRY(armv7_hyp_install)
+ mov r2, lr
+
+ bl __hyp_install
+
+ /* set the cpu to SVC32 mode, mask irq and fiq */
+ mrs r12 , cpsr
+ eor r12, r12, #HYP_MODE
+ tst r12, #MODE_MASK
+ bic r12 , r12 , #MODE_MASK
+ orr r12 , r12 , #(PSR_I_BIT | PSR_F_BIT | SVC_MODE)
+THUMB( orr r12 , r12 , #PSR_T_BIT )
+ bne 1f
+ orr r12, r12, #PSR_A_BIT
+ adr lr, 2f
+ msr spsr_cxsf, r12
+ __MSR_ELR_HYP(14)
+ __ERET
+1: msr cpsr_c, r12
+2:
+ mov pc, r2
+ENDPROC(armv7_hyp_install)
+
+ENTRY(armv7_switch_to_hyp)
+ mov r0, lr
+ mov r1, sp @ save SVC copy of LR and SP
+ isb
+ hvc #0 @ for older asm: .byte 0x70, 0x00, 0x40, 0xe1
+ mov sp, r1
+ mov lr, r0 @ restore SVC copy of LR and SP
+
+ bx lr
+ENDPROC(armv7_switch_to_hyp)
+
+.align 2
+.L__boot_cpu_mode_offset:
+ .long __boot_cpu_mode - .
+
+/* The HYP trap is crafted to match armv7_switch_to_hyp() */
+__hyp_do_trap:
+ mov lr, r0
+ mov sp, r1
+ bx lr
+ENDPROC(__hyp_do_trap)
+
+.align 5
+__hyp_vectors:
+__hyp_reset: W(b) .
+__hyp_und: W(b) .
+__hyp_svc: W(b) .
+__hyp_pabort: W(b) .
+__hyp_dabort: W(b) .
+__hyp_trap: W(b) __hyp_do_trap
+__hyp_irq: W(b) .
+__hyp_fiq: W(b) .
+ENDPROC(__hyp_vectors)
diff --git a/arch/arm/cpu/sm_as.S b/arch/arm/cpu/sm_as.S
index 0d01e1b..de6cd04 100644
--- a/arch/arm/cpu/sm_as.S
+++ b/arch/arm/cpu/sm_as.S
@@ -148,17 +148,6 @@ hyp_trap:
mov pc, lr @ do no switch modes, but
@ return to caller
-ENTRY(armv7_switch_to_hyp)
- mov r0, lr
- mov r1, sp @ save SVC copy of LR and SP
- isb
- hvc #0 @ for older asm: .byte 0x70, 0x00, 0x40, 0xe1
- mov sp, r1
- mov lr, r0 @ restore SVC copy of LR and SP
-
- bx lr
-ENDPROC(armv7_switch_to_hyp)
-
ENTRY(psci_cpu_entry)
mrc p15, 0, r0, c1, c0, 1 @ ACTLR
orr r0, r0, #(1 << 6) @ Set SMP bit
diff --git a/arch/arm/include/asm/secure.h b/arch/arm/include/asm/secure.h
index a4cb1f6..54cc052 100644
--- a/arch/arm/include/asm/secure.h
+++ b/arch/arm/include/asm/secure.h
@@ -6,8 +6,10 @@
int armv7_secure_monitor_install(void);
int __armv7_secure_monitor_install(void);
void armv7_switch_to_hyp(void);
+void armv7_hyp_install(void);
extern unsigned char secure_monitor_init_vectors[];
+extern int __boot_cpu_mode;
enum arm_security_state {
ARM_STATE_SECURE,
--
2.7.4

View File

@@ -1,25 +0,0 @@
When Barebox has been entered in HYP mode, the CPU is already switched
to the non-secure world and it's not possible for Barebox to install
it's own secure monitor.
Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
---
arch/arm/cpu/sm.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm/cpu/sm.c b/arch/arm/cpu/sm.c
index 5808dfd92bdc..71bb394c8540 100644
--- a/arch/arm/cpu/sm.c
+++ b/arch/arm/cpu/sm.c
@@ -184,6 +184,9 @@ int armv7_secure_monitor_install(void)
return -EINVAL;
}
+ if (__boot_cpu_mode == HYP_MODE)
+ return 0;
+
mmuon = get_cr() & CR_M;
vbar = get_vbar();
--
2.15.1

View File

@@ -1,26 +0,0 @@
When Barebox has been entered in HYP mode, there is a high chance that
the kernel is intended to be started in HYP mode also. Get this
default into place.
Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
---
arch/arm/cpu/sm.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm/cpu/sm.c b/arch/arm/cpu/sm.c
index 71bb394c8540..3369fbb5ff1a 100644
--- a/arch/arm/cpu/sm.c
+++ b/arch/arm/cpu/sm.c
@@ -264,6 +264,9 @@ static int sm_init(void)
bootm_secure_state_names,
ARRAY_SIZE(bootm_secure_state_names));
+ if (__boot_cpu_mode == HYP_MODE)
+ bootm_secure_state = ARM_STATE_HYP;
+
return 0;
}
device_initcall(sm_init);
\ No newline at end of file
--
2.15.1

View File

@@ -1,84 +0,0 @@
From f984f8cf4c07f24af7855a4fd69afa3e656238c2 Mon Sep 17 00:00:00 2001
From: Pascal Vizeli <pvizeli@syshack.ch>
Date: Sat, 19 May 2018 17:24:42 +0200
Subject: [PATCH 1/1] p4
---
arch/arm/cpu/lowlevel.S | 3 +++
arch/arm/cpu/start-pbl.c | 3 +++
arch/arm/cpu/start.c | 3 +++
arch/arm/cpu/uncompress.c | 4 ++++
4 files changed, 13 insertions(+)
diff --git a/arch/arm/cpu/lowlevel.S b/arch/arm/cpu/lowlevel.S
index 194ce0e..28ad850 100644
--- a/arch/arm/cpu/lowlevel.S
+++ b/arch/arm/cpu/lowlevel.S
@@ -8,6 +8,9 @@ ENTRY(arm_cpu_lowlevel_init)
/* save lr, since it may be banked away with a processor mode change */
mov r2, lr
+ /* careful: the hyp install corrupts r0 and r1 */
+ bl __hyp_install
+
/* set the cpu to SVC32 mode, mask irq and fiq */
mrs r12 , cpsr
eor r12, r12, #HYP_MODE
diff --git a/arch/arm/cpu/start-pbl.c b/arch/arm/cpu/start-pbl.c
index 16159d7..3f9959e 100644
--- a/arch/arm/cpu/start-pbl.c
+++ b/arch/arm/cpu/start-pbl.c
@@ -98,5 +98,8 @@ __noreturn void barebox_single_pbl_start(unsigned long membase,
else
barebox = (void *)barebox_base;
+ if (__boot_cpu_mode == HYP_MODE)
+ armv7_switch_to_hyp();
+
barebox(membase, memsize, boarddata);
}
diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c
index 68fff89..1ee13c0 100644
--- a/arch/arm/cpu/start.c
+++ b/arch/arm/cpu/start.c
@@ -24,6 +24,7 @@
#include <asm/barebox-arm-head.h>
#include <asm-generic/memory_layout.h>
#include <asm/sections.h>
+#include <asm/secure.h>
#include <asm/unaligned.h>
#include <asm/cache.h>
#include <asm/mmu.h>
@@ -145,6 +146,8 @@ __noreturn void barebox_non_pbl_start(unsigned long membase,
unsigned long malloc_start, malloc_end;
unsigned long barebox_size = barebox_image_size + MAX_BSS_SIZE;
+ armv7_hyp_install();
+
if (IS_ENABLED(CONFIG_RELOCATABLE)) {
unsigned long barebox_base = arm_mem_barebox_image(membase,
endmem,
diff --git a/arch/arm/cpu/uncompress.c b/arch/arm/cpu/uncompress.c
index b07087e..57f324b 100644
--- a/arch/arm/cpu/uncompress.c
+++ b/arch/arm/cpu/uncompress.c
@@ -27,6 +27,7 @@
#include <asm/barebox-arm-head.h>
#include <asm-generic/memory_layout.h>
#include <asm/sections.h>
+#include <asm/secure.h>
#include <asm/cache.h>
#include <asm/mmu.h>
#include <asm/unaligned.h>
@@ -108,5 +109,8 @@ void __noreturn barebox_multi_pbl_start(unsigned long membase,
pr_debug("jumping to uncompressed image at 0x%p\n", barebox);
+ if (__boot_cpu_mode == HYP_MODE)
+ armv7_switch_to_hyp();
+
barebox(membase, memsize, boarddata);
}
--
2.7.4

View File

@@ -1,38 +0,0 @@
From: Enrico Joerns <ejo at pengutronix.de>
Signed-off-by: Enrico Joerns <ejo at pengutronix.de>
---
arch/arm/boards/raspberry-pi/rpi-common.c | 2 ++
arch/arm/mach-bcm283x/include/mach/mbox.h | 4 ++++
2 files changed, 6 insertions(+)
diff --git a/arch/arm/boards/raspberry-pi/rpi-common.c b/arch/arm/boards/raspberry-pi/rpi-common.c
index 6e375bc984de..aec8cb27ed40 100644
--- a/arch/arm/boards/raspberry-pi/rpi-common.c
+++ b/arch/arm/boards/raspberry-pi/rpi-common.c
@@ -174,6 +174,8 @@ const struct rpi_model rpi_models_old_scheme[] = {
const struct rpi_model rpi_models_new_scheme[] = {
RPI_MODEL(0, "Unknown model", NULL),
RPI_MODEL(BCM2836_BOARD_REV_2_B, "2 Model B", rpi_b_plus_init),
+ RPI_MODEL(BCM2837_BOARD_REV_3_B, "3 Model B", rpi_b_plus_init),
+ RPI_MODEL(BCM2837_BOARD_REV_ZERO, "Zero", rpi_b_plus_init),
};
static int rpi_board_rev = 0;
diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h
index 2b5aea88ee0a..4cddf99a8429 100644
--- a/arch/arm/mach-bcm283x/include/mach/mbox.h
+++ b/arch/arm/mach-bcm283x/include/mach/mbox.h
@@ -129,6 +129,10 @@ struct bcm2835_mbox_tag_hdr {
/* RPi 2 */
#define BCM2836_BOARD_REV_2_B 0x4
+/* RPi 3 */
+#define BCM2837_BOARD_REV_3_B 0x8
+/* Zero */
+#define BCM2837_BOARD_REV_ZERO 0x9
/*
* 0x2..0xf from:
--
2.15.1

View File

@@ -1,136 +0,0 @@
This adds basic support at the same feature level as the other
supported raspberry pi boards.
Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
---
arch/arm/boards/raspberry-pi/lowlevel.c | 14 ++++++++++++--
arch/arm/configs/rpi_defconfig | 2 ++
arch/arm/dts/Makefile | 1 +
arch/arm/dts/bcm2837-rpi-3.dts | 15 +++++++++++++++
arch/arm/mach-bcm283x/Kconfig | 6 ++++++
arch/arm/mach-bcm283x/core.c | 1 +
images/Makefile.bcm283x | 4 ++++
7 files changed, 41 insertions(+), 2 deletions(-)
create mode 100644 arch/arm/dts/bcm2837-rpi-3.dts
diff --git a/arch/arm/boards/raspberry-pi/lowlevel.c b/arch/arm/boards/raspberry-pi/lowlevel.c
index 4e71e29e0c0b..5ca0d3877069 100644
--- a/arch/arm/boards/raspberry-pi/lowlevel.c
+++ b/arch/arm/boards/raspberry-pi/lowlevel.c
@@ -1,7 +1,7 @@
+#include <asm/barebox-arm.h>
+#include <asm/cache.h>
#include <common.h>
#include <linux/sizes.h>
-#include <asm/barebox-arm.h>
-#include <asm/barebox-arm-head.h>
#include <mach/platform.h>
extern char __dtb_bcm2835_rpi_start[];
@@ -23,3 +23,13 @@ ENTRY_FUNCTION(start_raspberry_pi2, r0, r1, r2)
barebox_arm_entry(BCM2835_SDRAM_BASE, SZ_512M, fdt);
}
+
+extern char __dtb_bcm2837_rpi_3_start[];
+ENTRY_FUNCTION(start_raspberry_pi3, r0, r1, r2)
+{
+ void *fdt = __dtb_bcm2837_rpi_3_start - get_runtime_offset();
+
+ arm_cpu_lowlevel_init();
+
+ barebox_arm_entry(BCM2835_SDRAM_BASE, SZ_512M, fdt);
+}
diff --git a/arch/arm/configs/rpi_defconfig b/arch/arm/configs/rpi_defconfig
index 6dc90c59b36d..34070a05abe7 100644
--- a/arch/arm/configs/rpi_defconfig
+++ b/arch/arm/configs/rpi_defconfig
@@ -1,9 +1,11 @@
CONFIG_ARCH_BCM283X=y
CONFIG_MACH_RPI=y
CONFIG_MACH_RPI2=y
+CONFIG_MACH_RPI3=y
CONFIG_AEABI=y
CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y
CONFIG_ARM_UNWIND=y
+CONFIG_IMAGE_COMPRESSION_NONE=y
CONFIG_MMU=y
CONFIG_MALLOC_TLSF=y
CONFIG_KALLSYMS=y
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index 0526a6f40724..0eab313c5011 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -66,6 +66,7 @@ pbl-dtb-$(CONFIG_MACH_PHYTEC_SOM_RK3288) += rk3288-phycore-som.dtb.o
pbl-dtb-$(CONFIG_MACH_REALQ7) += imx6q-dmo-edmqmx6.dtb.o
pbl-dtb-$(CONFIG_MACH_RPI) += bcm2835-rpi.dtb.o
pbl-dtb-$(CONFIG_MACH_RPI2) += bcm2836-rpi-2.dtb.o
+pbl-dtb-$(CONFIG_MACH_RPI3) += bcm2837-rpi-3.dtb.o
pbl-dtb-$(CONFIG_MACH_SABRELITE) += imx6q-sabrelite.dtb.o imx6dl-sabrelite.dtb.o
pbl-dtb-$(CONFIG_MACH_SABRESD) += imx6q-sabresd.dtb.o
pbl-dtb-$(CONFIG_MACH_FREESCALE_IMX6SX_SABRESDB) += imx6sx-sdb.dtb.o
diff --git a/arch/arm/dts/bcm2837-rpi-3.dts b/arch/arm/dts/bcm2837-rpi-3.dts
new file mode 100644
index 000000000000..f8c58c570137
--- /dev/null
+++ b/arch/arm/dts/bcm2837-rpi-3.dts
@@ -0,0 +1,15 @@
+#include <arm64/broadcom/bcm2837-rpi-3-b.dts>
+
+/ {
+ chosen {
+ stdout-path = &uart0;
+ };
+
+ memory {
+ reg = <0x0 0x0>;
+ };
+};
+
+&uart0 {
+ status = "okay";
+};
diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig
index 1457f114ccaa..af2f88c47acb 100644
--- a/arch/arm/mach-bcm283x/Kconfig
+++ b/arch/arm/mach-bcm283x/Kconfig
@@ -19,6 +19,12 @@ config MACH_RPI2
select CPU_V7
select MACH_RPI_COMMON
+config MACH_RPI3
+ bool "RaspberryPi 3 (BCM2837/CORTEX-A53)"
+ select CPU_V7
+ select MACH_RPI_COMMON
+ select ARM_SECURE_MONITOR
+
endmenu
config MACH_RPI_DEBUG_UART_BASE
diff --git a/arch/arm/mach-bcm283x/core.c b/arch/arm/mach-bcm283x/core.c
index fddcb0d1a1d4..26f0996b1cb8 100644
--- a/arch/arm/mach-bcm283x/core.c
+++ b/arch/arm/mach-bcm283x/core.c
@@ -41,6 +41,7 @@ static int bcm2835_clk_init(void)
clk = clk_fixed("uart0-pl0110", 3 * 1000 * 1000);
clk_register_clkdev(clk, NULL, "uart0-pl0110");
clk_register_clkdev(clk, NULL, "20201000.serial");
+ clk_register_clkdev(clk, NULL, "3f201000.serial");
clk = clk_fixed("bcm2835-cs", 1 * 1000 * 1000);
clk_register_clkdev(clk, NULL, "bcm2835-cs");
diff --git a/images/Makefile.bcm283x b/images/Makefile.bcm283x
index d59ef043f05c..d14e648926ac 100644
--- a/images/Makefile.bcm283x
+++ b/images/Makefile.bcm283x
@@ -9,3 +9,7 @@ image-$(CONFIG_MACH_RPI) += barebox-raspberry-pi-1.img
pblx-$(CONFIG_MACH_RPI2) += start_raspberry_pi2
FILE_barebox-raspberry-pi-2.img = start_raspberry_pi2.pblx
image-$(CONFIG_MACH_RPI2) += barebox-raspberry-pi-2.img
+
+pblx-$(CONFIG_MACH_RPI3) += start_raspberry_pi3
+FILE_barebox-raspberry-pi-3.img = start_raspberry_pi3.pblx
+image-$(CONFIG_MACH_RPI3) += barebox-raspberry-pi-3.img
\ No newline at end of file
--
2.15.1

View File

@@ -1,50 +0,0 @@
#!/bin/bash
set -e
SCRIPT_DIR=${BR2_EXTERNAL_HASSOS_PATH}/scripts
BOARD_DIR=${2}
BOOT_DATA=${BINARIES_DIR}/boot
. ${SCRIPT_DIR}/hdd-image.sh
. ${BR2_EXTERNAL_HASSOS_PATH}/info
. ${BOARD_DIR}/info
# Filename
IMAGE_FILE=${BINARIES_DIR}/${HASSOS_ID}_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.img
# Init boot data
rm -rf ${BOOT_DATA}
mkdir -p ${BOOT_DATA}
cp ${BINARIES_DIR}/barebox.bin ${BOOT_DATA}/
cp -t ${BOOT_DATA} \
${BINARIES_DIR}/bcm2710-rpi-3-b.dtb \
${BINARIES_DIR}/bcm2710-rpi-3-b-plus.dtb \
${BINARIES_DIR}/bcm2710-rpi-cm3.dtb \
${BINARIES_DIR}/rpi-firmware/bootcode.bin \
${BINARIES_DIR}/rpi-firmware/fixup.dat \
${BINARIES_DIR}/rpi-firmware/start.elf
cp -r ${BINARIES_DIR}/rpi-firmware/overlays ${BOOT_DATA}/
# Update Boot options
(
echo "kernel=barebox.bin"
echo "cmdline=\"\""
echo "gpu_mem=16"
echo "disable_splash=1"
echo "dtparam=i2c_arm=on"
echo "dtparam=spi=on"
echo "dtparam=audio=on"
) > ${BOOT_DATA}/config.txt
touch ${BOOT_DATA}/cmdline.txt
# Create other layers
create_boot_image ${BINARIES_DIR}
create_overlay_image ${BINARIES_DIR}
create_disk_image ${BINARIES_DIR} ${IMAGE_FILE} 2
fix_disk_image_mbr ${IMAGE_FILE}
rm -rf ${IMAGE_FILE}.gz
gzip ${IMAGE_FILE}

View File

@@ -9,6 +9,7 @@ CONFIG_MENU=y
CONFIG_BOOTM_SHOW_TYPE=y
CONFIG_BOOTM_OFTREE=y
CONFIG_FLEXIBLE_BOOTARGS=y
CONFIG_DEFAULT_COMPRESSION_LZ4=y
# CONFIG_PARTITION_DISK_DOS is not set
CONFIG_PARTITION_DISK_EFI=y
@@ -42,5 +43,5 @@ CONFIG_DISK_WRITE=y
CONFIG_FS_FAT=y
CONFIG_FS_FAT_WRITE=y
CONFIG_FS_FAT_LFN=y
CONFIG_FS_SQUASHFS=y
CONFIG_FS_EXT4=y
CONFIG_LZ4_DECOMPRESS=y

View File

@@ -7,9 +7,6 @@ for i in /env/init/*; do
. $i
done
# Overlays
. /env/overlay/load
echo "- Hit m for menu or wait for autoboot -"
timeout -a 1 -s -v key

View File

@@ -0,0 +1,8 @@
#!/bin/sh
global linux.bootargs.dyn.root="root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro"
mkdir -p /mnt/system
mount -t ext4 /dev/disk0.hassos-kernel0 /mnt/system
global bootm.image="/mnt/system/bzImage"

View File

@@ -0,0 +1,8 @@
#!/bin/sh
global linux.bootargs.dyn.root="root=PARTUUID=a3ec664e-32ce-4665-95ea-7ae90ce9aa20 rootfstype=squashfs ro"
mkdir -p /mnt/system
mount -t ext4 /dev/disk0.hassos-kernel1 /mnt/system
global bootm.image="/mnt/system/bzImage"

View File

@@ -2,3 +2,4 @@
global linux.bootargs.zram="zram.enabled=1 zram.num_devices=3"
global linux.bootargs.apparmor="apparmor=1 security=apparmor"
global linux.bootargs.misc="rootwait"

View File

@@ -0,0 +1 @@
A B

View File

@@ -0,0 +1,16 @@
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_DISTRO_DEFAULTS=y
# CONFIG_EXPERT is not set
# CONFIG_DISPLAY_CPUINFO is not set
# CONFIG_DISPLAY_BOARDINFO is not set
CONFIG_SYS_PROMPT="HassOS> "
# CONFIG_DOS_PARTITION is not set
# CONFIG_ISO_PARTITION is not set
CONFIG_EFI_PARTITION=y
CONFIG_FS_EXT4=y
# CONFIG_ENV_IS_NOWHERE is not set
# CONFIG_ENV_IS_IN_FAT is not set
# CONFIG_ENV_IS_IN_EXT4 is not set
CONFIG_ENV_IS_IN_MMC=y
CONFIG_CONSOLE_SCROLL_LINES=10
# CONFIG_EFI_LOADER is not set

View File

@@ -22,15 +22,14 @@ BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.41"
BR2_LINUX_KERNEL_DEFCONFIG="x86_64"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.config $(BR2_EXTERNAL_HASSOS_PATH)/board/ova/kernel.config"
BR2_LINUX_KERNEL_LZ4=y
BR2_LINUX_KERNEL_INSTALL_TARGET=y
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config"
BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y
BR2_PACKAGE_JQ=y
BR2_PACKAGE_DOSFSTOOLS=y
BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_DT_UTILS=y
BR2_PACKAGE_GPTFDISK=y
BR2_PACKAGE_GPTFDISK_SGDISK=y
@@ -38,8 +37,11 @@ BR2_PACKAGE_CA_CERTIFICATES=y
BR2_PACKAGE_LIBCGROUP=y
BR2_PACKAGE_LIBCGROUP_TOOLS=y
BR2_PACKAGE_AVAHI=y
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
BR2_PACKAGE_AVAHI_DAEMON=y
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
BR2_PACKAGE_DHCP=y
BR2_PACKAGE_DHCP_CLIENT=y
BR2_PACKAGE_DROPBEAR=y
# BR2_PACKAGE_DROPBEAR_CLIENT is not set
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
@@ -64,8 +66,8 @@ BR2_TARGET_BAREBOX_CUSTOM_VERSION=y
BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE="2018.05.0"
BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG=y
BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/barebox.config"
BR2_TARGET_BAREBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/barebox.config"
BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/barebox-env $(BR2_EXTERNAL_HASSOS_PATH)/barebox-env"
BR2_TARGET_BAREBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/barebox.config"
BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/barebox"
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_E2FSPROGS=y
BR2_PACKAGE_HOST_GPTFDISK=y
@@ -73,11 +75,13 @@ BR2_PACKAGE_HOST_MTOOLS=y
BR2_PACKAGE_HOST_RAUC=y
BR2_PACKAGE_HASSOS=y
BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/amd64-hassio-supervisor"
BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="105"
BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="115"
BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/qemux86-64-homeassistant"
BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor"
BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="http://s3.amazonaws.com/hassio-version/apparmor.txt"
BR2_PACKAGE_HASSOS_CLI="homeassistant/amd64-hassio-cli"
BR2_PACKAGE_HASSOS_CLI_VERSION="3"
BR2_PACKAGE_HASSOS_CLI_VERSION="6"
BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host hassio:172.30.32.2"
BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default"
BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor"
BR2_PACKAGE_APPARMOR=y

View File

@@ -0,0 +1,96 @@
BR2_arm=y
BR2_arm1176jzf_s=y
BR2_ARM_EABIHF=y
BR2_DL_DIR="/cache/dl"
BR2_CCACHE=y
BR2_CCACHE_DIR="/cache/cc"
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches"
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y
BR2_GCC_VERSION_7_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_TARGET_GENERIC_HOSTNAME="hassio"
BR2_TARGET_GENERIC_ISSUE="Welcome to HassOS"
BR2_INIT_SYSTEMD=y
BR2_TARGET_GENERIC_GETTY_PORT="tty1"
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_HASSOS_PATH)/rootfs-overlay"
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi0-w"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_GIT=y
BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux"
BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rpi-4.14.y"
BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.config"
BR2_LINUX_KERNEL_LZ4=y
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-0-w"
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config"
BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y
BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_RPI_WIFI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_GPTFDISK=y
BR2_PACKAGE_GPTFDISK_SGDISK=y
BR2_PACKAGE_UBOOT_TOOLS=y
BR2_PACKAGE_CA_CERTIFICATES=y
BR2_PACKAGE_LIBDNET=y
BR2_PACKAGE_LIBCGROUP=y
BR2_PACKAGE_LIBCGROUP_TOOLS=y
BR2_PACKAGE_AVAHI=y
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
BR2_PACKAGE_AVAHI_DAEMON=y
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
BR2_PACKAGE_DHCP=y
BR2_PACKAGE_DHCP_CLIENT=y
BR2_PACKAGE_DROPBEAR=y
# BR2_PACKAGE_DROPBEAR_CLIENT is not set
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
BR2_PACKAGE_NETWORK_MANAGER=y
BR2_PACKAGE_NETWORK_MANAGER_MODEM_MANAGER=y
BR2_PACKAGE_TINI=y
BR2_PACKAGE_DOCKER_ENGINE=y
BR2_PACKAGE_RAUC=y
BR2_PACKAGE_RAUC_NETWORK=y
# BR2_PACKAGE_SYSTEMD_HWDB is not set
# BR2_PACKAGE_SYSTEMD_NETWORKD is not set
BR2_PACKAGE_SYSTEMD_RANDOMSEED=y
# BR2_PACKAGE_SYSTEMD_RESOLVED is not set
BR2_PACKAGE_UTIL_LINUX_PARTX=y
BR2_PACKAGE_UTIL_LINUX_ZRAMCTL=y
BR2_TARGET_ROOTFS_SQUASHFS=y
BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y
# BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05"
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_0_w"
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config"
BR2_TARGET_UBOOT_NEEDS_DTC=y
BR2_TARGET_UBOOT_BOOT_SCRIPT=y
BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot-boot.sh"
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_E2FSPROGS=y
BR2_PACKAGE_HOST_GPTFDISK=y
BR2_PACKAGE_HOST_MTOOLS=y
BR2_PACKAGE_HOST_RAUC=y
BR2_PACKAGE_HASSOS=y
BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armhf-hassio-supervisor"
BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="115"
BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi-homeassistant"
BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor"
BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="http://s3.amazonaws.com/hassio-version/apparmor.txt"
BR2_PACKAGE_HASSOS_CLI="homeassistant/armhf-hassio-cli"
BR2_PACKAGE_HASSOS_CLI_VERSION="6"
BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host hassio:172.30.32.2"
BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default"
BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor"
BR2_PACKAGE_APPARMOR=y

View File

@@ -4,7 +4,7 @@ BR2_ARM_FPU_VFPV4=y
BR2_DL_DIR="/cache/dl"
BR2_CCACHE=y
BR2_CCACHE_DIR="/cache/cc"
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches $(BR2_EXTERNAL_HASSOS_PATH)/board/rpi2/patches"
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches"
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y
BR2_GCC_VERSION_7_X=y
@@ -16,8 +16,8 @@ BR2_TARGET_GENERIC_GETTY_PORT="tty1"
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_HASSOS_PATH)/rootfs-overlay"
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi2/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi2"
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi2"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_GIT=y
BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux"
@@ -27,26 +27,28 @@ BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.confi
BR2_LINUX_KERNEL_LZ4=y
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2709-rpi-2-b"
BR2_LINUX_KERNEL_INSTALL_TARGET=y
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config"
BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y
BR2_PACKAGE_JQ=y
BR2_PACKAGE_DOSFSTOOLS=y
BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_DT_UTILS=y
BR2_PACKAGE_GPTFDISK=y
BR2_PACKAGE_GPTFDISK_SGDISK=y
BR2_PACKAGE_UBOOT_TOOLS=y
BR2_PACKAGE_CA_CERTIFICATES=y
BR2_PACKAGE_LIBDNET=y
BR2_PACKAGE_LIBCGROUP=y
BR2_PACKAGE_LIBCGROUP_TOOLS=y
BR2_PACKAGE_AVAHI=y
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
BR2_PACKAGE_AVAHI_DAEMON=y
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
BR2_PACKAGE_DHCP=y
BR2_PACKAGE_DHCP_CLIENT=y
BR2_PACKAGE_DROPBEAR=y
# BR2_PACKAGE_DROPBEAR_CLIENT is not set
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
@@ -65,13 +67,15 @@ BR2_PACKAGE_UTIL_LINUX_ZRAMCTL=y
BR2_TARGET_ROOTFS_SQUASHFS=y
BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y
# BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_BAREBOX=y
BR2_TARGET_BAREBOX_CUSTOM_VERSION=y
BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE="2018.05.0"
BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG=y
BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi2/barebox.config"
BR2_TARGET_BAREBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/barebox.config"
BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSOS_PATH)/barebox-env $(BR2_EXTERNAL_HASSOS_PATH)/board/rpi2/barebox-env"
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05"
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_2"
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config"
BR2_TARGET_UBOOT_NEEDS_DTC=y
BR2_TARGET_UBOOT_BOOT_SCRIPT=y
BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot-boot.sh"
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_E2FSPROGS=y
BR2_PACKAGE_HOST_GPTFDISK=y
@@ -79,11 +83,13 @@ BR2_PACKAGE_HOST_MTOOLS=y
BR2_PACKAGE_HOST_RAUC=y
BR2_PACKAGE_HASSOS=y
BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armhf-hassio-supervisor"
BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="105"
BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi3-homeassistant"
BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="115"
BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi2-homeassistant"
BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor"
BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="http://s3.amazonaws.com/hassio-version/apparmor.txt"
BR2_PACKAGE_HASSOS_CLI="homeassistant/armhf-hassio-cli"
BR2_PACKAGE_HASSOS_CLI_VERSION="3"
BR2_PACKAGE_HASSOS_CLI_VERSION="6"
BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host hassio:172.30.32.2"
BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default"
BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor"
BR2_PACKAGE_APPARMOR=y

View File

@@ -0,0 +1,96 @@
BR2_aarch64=y
BR2_cortex_a53=y
BR2_ARM_FPU_VFPV4=y
BR2_DL_DIR="/cache/dl"
BR2_CCACHE=y
BR2_CCACHE_DIR="/cache/cc"
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches"
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y
BR2_GCC_VERSION_7_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_TARGET_GENERIC_HOSTNAME="hassio"
BR2_TARGET_GENERIC_ISSUE="Welcome to HassOS"
BR2_INIT_SYSTEMD=y
BR2_TARGET_GENERIC_GETTY_PORT="tty1"
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_HASSOS_PATH)/rootfs-overlay"
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi3-64"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_GIT=y
BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux"
BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rpi-4.14.y"
BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi3"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.config"
BR2_LINUX_KERNEL_LZ4=y
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2710-rpi-3-b broadcom/bcm2837-rpi-3-b broadcom/bcm2710-rpi-3-b-plus"
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config"
BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y
BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_RPI_WIFI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_GPTFDISK=y
BR2_PACKAGE_GPTFDISK_SGDISK=y
BR2_PACKAGE_UBOOT_TOOLS=y
BR2_PACKAGE_CA_CERTIFICATES=y
BR2_PACKAGE_LIBDNET=y
BR2_PACKAGE_LIBCGROUP=y
BR2_PACKAGE_LIBCGROUP_TOOLS=y
BR2_PACKAGE_AVAHI=y
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
BR2_PACKAGE_AVAHI_DAEMON=y
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
BR2_PACKAGE_DHCP=y
BR2_PACKAGE_DHCP_CLIENT=y
BR2_PACKAGE_DROPBEAR=y
# BR2_PACKAGE_DROPBEAR_CLIENT is not set
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
BR2_PACKAGE_NETWORK_MANAGER=y
BR2_PACKAGE_NETWORK_MANAGER_MODEM_MANAGER=y
BR2_PACKAGE_TINI=y
BR2_PACKAGE_DOCKER_ENGINE=y
BR2_PACKAGE_RAUC=y
BR2_PACKAGE_RAUC_NETWORK=y
# BR2_PACKAGE_SYSTEMD_HWDB is not set
# BR2_PACKAGE_SYSTEMD_NETWORKD is not set
BR2_PACKAGE_SYSTEMD_RANDOMSEED=y
# BR2_PACKAGE_SYSTEMD_RESOLVED is not set
BR2_PACKAGE_UTIL_LINUX_PARTX=y
BR2_PACKAGE_UTIL_LINUX_ZRAMCTL=y
BR2_TARGET_ROOTFS_SQUASHFS=y
BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y
# BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05"
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_3"
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config"
BR2_TARGET_UBOOT_NEEDS_DTC=y
BR2_TARGET_UBOOT_BOOT_SCRIPT=y
BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi3-64/uboot-boot.sh"
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_E2FSPROGS=y
BR2_PACKAGE_HOST_GPTFDISK=y
BR2_PACKAGE_HOST_MTOOLS=y
BR2_PACKAGE_HOST_RAUC=y
BR2_PACKAGE_HASSOS=y
BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/aarch64-hassio-supervisor"
BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="115"
BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi3-64-homeassistant"
BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor"
BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="http://s3.amazonaws.com/hassio-version/apparmor.txt"
BR2_PACKAGE_HASSOS_CLI="homeassistant/aarch64-hassio-cli"
BR2_PACKAGE_HASSOS_CLI_VERSION="6"
BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host hassio:172.30.32.2"
BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default"
BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor"
BR2_PACKAGE_APPARMOR=y

View File

@@ -0,0 +1,96 @@
BR2_arm=y
BR2_cortex_a53=y
BR2_ARM_FPU_VFPV4=y
BR2_DL_DIR="/cache/dl"
BR2_CCACHE=y
BR2_CCACHE_DIR="/cache/cc"
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches"
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y
BR2_GCC_VERSION_7_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_TARGET_GENERIC_HOSTNAME="hassio"
BR2_TARGET_GENERIC_ISSUE="Welcome to HassOS"
BR2_INIT_SYSTEMD=y
BR2_TARGET_GENERIC_GETTY_PORT="tty1"
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_HASSOS_PATH)/rootfs-overlay"
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi3"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_GIT=y
BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux"
BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rpi-4.14.y"
BR2_LINUX_KERNEL_DEFCONFIG="bcm2709"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.config"
BR2_LINUX_KERNEL_LZ4=y
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3"
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config"
BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y
BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_RPI_WIFI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_GPTFDISK=y
BR2_PACKAGE_GPTFDISK_SGDISK=y
BR2_PACKAGE_UBOOT_TOOLS=y
BR2_PACKAGE_CA_CERTIFICATES=y
BR2_PACKAGE_LIBDNET=y
BR2_PACKAGE_LIBCGROUP=y
BR2_PACKAGE_LIBCGROUP_TOOLS=y
BR2_PACKAGE_AVAHI=y
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
BR2_PACKAGE_AVAHI_DAEMON=y
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
BR2_PACKAGE_DHCP=y
BR2_PACKAGE_DHCP_CLIENT=y
BR2_PACKAGE_DROPBEAR=y
# BR2_PACKAGE_DROPBEAR_CLIENT is not set
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
BR2_PACKAGE_NETWORK_MANAGER=y
BR2_PACKAGE_NETWORK_MANAGER_MODEM_MANAGER=y
BR2_PACKAGE_TINI=y
BR2_PACKAGE_DOCKER_ENGINE=y
BR2_PACKAGE_RAUC=y
BR2_PACKAGE_RAUC_NETWORK=y
# BR2_PACKAGE_SYSTEMD_HWDB is not set
# BR2_PACKAGE_SYSTEMD_NETWORKD is not set
BR2_PACKAGE_SYSTEMD_RANDOMSEED=y
# BR2_PACKAGE_SYSTEMD_RESOLVED is not set
BR2_PACKAGE_UTIL_LINUX_PARTX=y
BR2_PACKAGE_UTIL_LINUX_ZRAMCTL=y
BR2_TARGET_ROOTFS_SQUASHFS=y
BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y
# BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05"
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_3_32b"
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config"
BR2_TARGET_UBOOT_NEEDS_DTC=y
BR2_TARGET_UBOOT_BOOT_SCRIPT=y
BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot-boot.sh"
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_E2FSPROGS=y
BR2_PACKAGE_HOST_GPTFDISK=y
BR2_PACKAGE_HOST_MTOOLS=y
BR2_PACKAGE_HOST_RAUC=y
BR2_PACKAGE_HASSOS=y
BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armhf-hassio-supervisor"
BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="115"
BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi3-homeassistant"
BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor"
BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="http://s3.amazonaws.com/hassio-version/apparmor.txt"
BR2_PACKAGE_HASSOS_CLI="homeassistant/armhf-hassio-cli"
BR2_PACKAGE_HASSOS_CLI_VERSION="6"
BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host hassio:172.30.32.2"
BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default"
BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor"
BR2_PACKAGE_APPARMOR=y

View File

@@ -0,0 +1,95 @@
BR2_arm=y
BR2_arm1176jzf_s=y
BR2_ARM_EABIHF=y
BR2_DL_DIR="/cache/dl"
BR2_CCACHE=y
BR2_CCACHE_DIR="/cache/cc"
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches"
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y
BR2_GCC_VERSION_7_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_TARGET_GENERIC_HOSTNAME="hassio"
BR2_TARGET_GENERIC_ISSUE="Welcome to HassOS"
BR2_INIT_SYSTEMD=y
BR2_TARGET_GENERIC_GETTY_PORT="tty1"
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_HASSOS_PATH)/rootfs-overlay"
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_GIT=y
BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux"
BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rpi-4.14.y"
BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.config"
BR2_LINUX_KERNEL_LZ4=y
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-b bcm2708-rpi-b-plus bcm2708-rpi-cm"
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config"
BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y
BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_GPTFDISK=y
BR2_PACKAGE_GPTFDISK_SGDISK=y
BR2_PACKAGE_UBOOT_TOOLS=y
BR2_PACKAGE_CA_CERTIFICATES=y
BR2_PACKAGE_LIBDNET=y
BR2_PACKAGE_LIBCGROUP=y
BR2_PACKAGE_LIBCGROUP_TOOLS=y
BR2_PACKAGE_AVAHI=y
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
BR2_PACKAGE_AVAHI_DAEMON=y
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
BR2_PACKAGE_DHCP=y
BR2_PACKAGE_DHCP_CLIENT=y
BR2_PACKAGE_DROPBEAR=y
# BR2_PACKAGE_DROPBEAR_CLIENT is not set
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
BR2_PACKAGE_NETWORK_MANAGER=y
BR2_PACKAGE_NETWORK_MANAGER_MODEM_MANAGER=y
BR2_PACKAGE_TINI=y
BR2_PACKAGE_DOCKER_ENGINE=y
BR2_PACKAGE_RAUC=y
BR2_PACKAGE_RAUC_NETWORK=y
# BR2_PACKAGE_SYSTEMD_HWDB is not set
# BR2_PACKAGE_SYSTEMD_NETWORKD is not set
BR2_PACKAGE_SYSTEMD_RANDOMSEED=y
# BR2_PACKAGE_SYSTEMD_RESOLVED is not set
BR2_PACKAGE_UTIL_LINUX_PARTX=y
BR2_PACKAGE_UTIL_LINUX_ZRAMCTL=y
BR2_TARGET_ROOTFS_SQUASHFS=y
BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y
# BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05"
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi"
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config"
BR2_TARGET_UBOOT_NEEDS_DTC=y
BR2_TARGET_UBOOT_BOOT_SCRIPT=y
BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot-boot.sh"
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_E2FSPROGS=y
BR2_PACKAGE_HOST_GPTFDISK=y
BR2_PACKAGE_HOST_MTOOLS=y
BR2_PACKAGE_HOST_RAUC=y
BR2_PACKAGE_HASSOS=y
BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armhf-hassio-supervisor"
BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="115"
BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi-homeassistant"
BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor"
BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="http://s3.amazonaws.com/hassio-version/apparmor.txt"
BR2_PACKAGE_HASSOS_CLI="homeassistant/armhf-hassio-cli"
BR2_PACKAGE_HASSOS_CLI_VERSION="6"
BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host hassio:172.30.32.2"
BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default"
BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor"
BR2_PACKAGE_APPARMOR=y

View File

@@ -1,5 +1,5 @@
VERSION_MAJOR=0
VERSION_BUILD=3
VERSION_MAJOR=2
VERSION_BUILD=0
HASSOS_NAME="HassOS"
HASSOS_ID="hassos"

View File

@@ -97,3 +97,4 @@ CONFIG_EFI_PARTITION=y
# CONFIG_LOGO is not set
# CONFIG_VIRTUALIZATION is not set
# CONFIG_DEBUG_STACK_USAGE is not set

View File

@@ -18,7 +18,7 @@
#address-cells = <1>;
#size-cells = <1>;
system0 {
A {
#address-cells = <1>;
#size-cells = <1>;
remaining_attempts@0 {
@@ -32,7 +32,7 @@
default = <20>;
};
};
system1 {
B {
#address-cells = <1>;
#size-cells = <1>;
remaining_attempts@8 {

View File

@@ -0,0 +1 @@
/dev/disk/by-partlabel/hassos-bootstate 0x00 0x4000

View File

@@ -0,0 +1,12 @@
#!/bin/sh
# Handle boot hocks
if [ "${RAUC_SLOT_CLASS}" = "boot" ]; then
if [ "${1}" = "slot-post-install" ]; then
/usr/lib/rauc/post-install-boot
elif [ "${1}" = "slot-pre-install" ]; then
/usr/lib/rauc/pre-install-boot
fi
fi
exit 0

View File

@@ -28,6 +28,11 @@ config BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE
help
AppArmor profile for supervisor.
config BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL
string "AppArmor supervisor profile URL"
help
AppArmor profile for supervisor url.
config BR2_PACKAGE_HASSOS_CLI
string "cli docker image"
help
@@ -48,9 +53,14 @@ config BR2_PACKAGE_HASSOS_CLI_PROFILE
help
AppArmor profile for cli.
config BR2_PACKAGE_HASSOS_CLI_PROFILE_URL
string "AppArmor cli profile url"
help
AppArmor profile for cli url.
config BR2_PACKAGE_HASSOS_APPARMOR_DIR
string "AppArmor profiles folder"
help
AppArmor profiles folder for supervisor.
AppArmor profiles folder for HassOS.
endif

View File

@@ -2,7 +2,7 @@ FROM alpine:3.7
# Install packages
RUN apk add --no-cache \
bash coreutils e2fsprogs
bash coreutils e2fsprogs curl
RUN apk add --no-cache --repository http://nl.alpinelinux.org/alpine/v3.7/community \
docker

View File

@@ -5,10 +5,12 @@ SUPERVISOR=""
SUPERVISOR_VERSION=""
SUPERVISOR_ARGS=""
SUPERVISOR_PROFILE=""
SUPERVISOR_PROFILE_URL=""
CLI=""
CLI_VERSION=""
CLI_ARGS=""
CLI_PROFILE=""
CLI_PROFILE_URL=""
APPARMOR=""
DATA_IMG="/export/data.ext4"
@@ -32,6 +34,10 @@ while [[ $# -gt 0 ]]; do
SUPERVISOR_PROFILE=$2
shift
;;
--supervisor-profile-url)
SUPERVISOR_PROFILE_URL=$2
shift
;;
--cli)
CLI=$2
shift
@@ -48,6 +54,10 @@ while [[ $# -gt 0 ]]; do
CLI_PROFILE=$2
shift
;;
--cli-profile-url)
CLI_PROFILE_URL=$2
shift
;;
--apparmor)
APPARMOR=$2
shift
@@ -106,7 +116,16 @@ EOF
# Setup AppArmor
if [ ! -z "${APPARMOR}" ]; then
mkdir -p /mnt/data/${APPARMOR}
cp -f /apparmor/* /mnt/data/${APPARMOR}/
# Supervisor
if [ ! -z "${SUPERVISOR_PROFILE_URL}" ]; then
curl -L -o /mnt/data/${APPARMOR}/${SUPERVISOR_PROFILE} ${SUPERVISOR_PROFILE_URL}
fi
# CLI
if [ ! -z "${CLI_PROFILE_URL}" ]; then
curl -L -o /mnt/data/${APPARMOR}/${CLI_PROFILE} ${CLI_PROFILE_URL}
fi
fi
# Finish

View File

@@ -17,16 +17,17 @@ endef
define HASSOS_INSTALL_TARGET_CMDS
docker run --rm --privileged \
-v $(BINARIES_DIR):/export \
-v $(BR2_EXTERNAL_HASSOS_PATH)/apparmor:/apparmor \
hassos-hostapps \
--supervisor $(BR2_PACKAGE_HASSOS_SUPERVISOR) \
--supervisor-version $(BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION) \
--supervisor-args $(BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS) \
--supervisor-profile $(BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE) \
--supervisor-profile-url $(BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL) \
--cli $(BR2_PACKAGE_HASSOS_CLI) \
--cli-version $(BR2_PACKAGE_HASSOS_CLI_VERSION) \
--cli-args $(BR2_PACKAGE_HASSOS_CLI_ARGS) \
--cli-profile $(BR2_PACKAGE_HASSOS_CLI_PROFILE) \
--cli-profile-url $(BR2_PACKAGE_HASSOS_CLI_PROFILE_URL) \
--apparmor $(BR2_PACKAGE_HASSOS_APPARMOR_DIR)
endef

View File

@@ -1,204 +0,0 @@
From 6c7c35474f066f53b6f63cc0cc5eaefac2bc69dd Mon Sep 17 00:00:00 2001
From: Pascal Vizeli <pvizeli@syshack.ch>
Date: Sat, 2 Jun 2018 20:53:51 +0000
Subject: [PATCH 3/3] drivers: of: bugfix local fixups resolving
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
---
drivers/of/resolver.c | 147 +++++++++++++++++-------------------------
1 file changed, 60 insertions(+), 87 deletions(-)
diff --git a/drivers/of/resolver.c b/drivers/of/resolver.c
index 62476093c..fbab565c5 100644
--- a/drivers/of/resolver.c
+++ b/drivers/of/resolver.c
@@ -66,108 +66,73 @@ static void of_adjust_tree_phandles(struct device_node *node,
* of the tree. Does not take any devtree locks so make sure you
* call this on a tree which is at the detached state.
*/
-static int of_adjust_tree_phandle_references(struct device_node *node,
- int phandle_delta)
+static int of_adjust_tree_phandle_references(struct device_node *local_fixups,
+ struct device_node *overlay, int phandle_delta)
{
phandle phandle;
- struct device_node *refnode, *child;
- struct property *rprop, *sprop;
- char *propval, *propcur, *propend, *nodestr, *propstr, *s;
- int offset, propcurlen;
- int err;
+ struct device_node *child, *overlay_child;
+ struct property *fixprop, *prop;
+ int i, count, err;
+ unsigned int off;
bool found = false;
- /* locate the symbols & fixups nodes on resolve */
- for_each_child_of_node(node, child)
- if (of_node_cmp(child->name, "__local_fixups__") == 0) {
- found = true;
- break;
- }
-
- /* no local fixups */
- if (!found)
- return 0;
-
- /* find the local fixups property */
- for_each_property_of_node(child, rprop) {
+ for_each_property_of_node(local_fixups, fixprop) {
/* skip properties added automatically */
- if (of_prop_cmp(rprop->name, "name") == 0)
+ if (!of_prop_cmp(fixprop->name, "name") ||
+ !of_prop_cmp(fixprop->name, "phandle") ||
+ !of_prop_cmp(fixprop->name, "linux,phandle"))
continue;
- /* make a copy */
- propval = kmalloc(rprop->length, GFP_KERNEL);
- if (propval == NULL) {
- pr_err("%s: Could not copy value of '%s'\n",
- __func__, rprop->name);
- return -ENOMEM;
- }
- memcpy(propval, rprop->value, rprop->length);
-
- propend = propval + rprop->length;
- for (propcur = propval; propcur < propend;
- propcur += propcurlen + 1) {
+ if ((fixprop->length % 4) != 0 || fixprop->length == 0)
+ return -EINVAL;
+ count = fixprop->length / sizeof(uint32_t);
- propcurlen = strlen(propcur);
-
- nodestr = propcur;
- s = strchr(propcur, ':');
- if (s == NULL) {
- pr_err("%s: Illegal symbol entry '%s' (1)\n",
- __func__, propcur);
- err = -EINVAL;
- goto err_fail;
- }
- *s++ = '\0';
-
- propstr = s;
- s = strchr(s, ':');
- if (s == NULL) {
- pr_err("%s: Illegal symbol entry '%s' (2)\n",
- __func__, (char *)rprop->value);
- err = -EINVAL;
- goto err_fail;
+ for_each_property_of_node(overlay, prop) {
+ if (!of_prop_cmp(fixprop->name, prop->name)) {
+ found = true;
+ break;
}
+ }
- *s++ = '\0';
- offset = simple_strtoul(s, NULL, 10);
+ if (!found)
+ return -EINVAL;
- /* look into the resolve node for the full path */
- refnode = of_find_node_by_path_from(node, nodestr);
- if (refnode == NULL) {
- pr_warn("%s: Could not find refnode '%s'\n",
- __func__, (char *)rprop->value);
- continue;
- }
+ for (i=0; i < count; i++) {
+ off = be32_to_cpu(((uint32_t *)fixprop->value)[i]);
+ if ((off + 4) > prop->length)
+ return -EINVAL;
- /* now find the property */
- found = false;
- for_each_property_of_node(refnode, sprop)
- if (of_prop_cmp(sprop->name, propstr) == 0) {
- found = true;
- break;
- }
+ phandle = be32_to_cpu(*(uint32_t *)(prop->value + off));
+ phandle += phandle_delta;
+ *(uint32_t *)(prop->value + off) = cpu_to_be32(phandle);
+ }
+ }
- if (!found) {
- pr_err("%s: Could not find property '%s'\n",
- __func__, (char *)rprop->value);
- err = -ENOENT;
- goto err_fail;
+ /*
+ * These nested loops recurse down two subtrees in parallel, where the
+ * node names in the two subtrees match.
+ *
+ * The roots of the subtrees are the overlay's __local_fixups__ node
+ * and the overlay's root node.
+ */
+ for_each_child_of_node(local_fixups, child) {
+
+ for_each_child_of_node(overlay, overlay_child)
+ if (!of_node_cmp(child->name, overlay_child->name)) {
+ found = true;
+ break;
}
- phandle = be32_to_cpu(*(uint32_t *)
- (sprop->value + offset));
- *(uint32_t *)(sprop->value + offset) =
- cpu_to_be32(phandle + phandle_delta);
- }
+ if (!found)
+ return -EINVAL;
- kfree(propval);
+ err = of_adjust_tree_phandle_references(child, overlay_child,
+ phandle_delta);
+ if (err)
+ return err;
}
return 0;
-
-err_fail:
- kfree(propval);
- return err;
}
/**
@@ -185,7 +150,7 @@ err_fail:
*/
int of_resolve(struct device_node *resolve)
{
- struct device_node *child, *refnode;
+ struct device_node *child, *refnode, *local_fixups;
struct device_node *root_sym, *resolve_sym, *resolve_fix;
struct property *rprop, *sprop;
const char *refpath;
@@ -203,9 +168,17 @@ int of_resolve(struct device_node *resolve)
/* first we need to adjust the phandles */
phandle_delta = of_get_tree_max_phandle(NULL) + 1;
of_adjust_tree_phandles(resolve, phandle_delta);
- err = of_adjust_tree_phandle_references(resolve, phandle_delta);
- if (err != 0)
- return err;
+
+ /* second we need lookup local fixups of phandles */
+ for_each_child_of_node(resolve, local_fixups) {
+ if (!of_node_cmp(local_fixups->name, "__local_fixups__")) {
+ err = of_adjust_tree_phandle_references(local_fixups,
+ resolve, phandle_delta);
+ if (err != 0)
+ return err;
+ break;
+ }
+ }
root_sym = NULL;
resolve_sym = NULL;
--
2.17.0

View File

@@ -0,0 +1,28 @@
From 1529062f72cee8061b4733e1148357d227639900 Mon Sep 17 00:00:00 2001
From: Pascal Vizeli <pvizeli@syshack.ch>
Date: Mon, 11 Jun 2018 11:09:10 +0000
Subject: [PATCH 1/1] Support HassOS bootstate partition
Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
---
env/mmc.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/env/mmc.c b/env/mmc.c
index 5e3da6dca7..75c06899d1 100644
--- a/env/mmc.c
+++ b/env/mmc.c
@@ -18,6 +18,10 @@
#include <search.h>
#include <errno.h>
+#define CONFIG_SYS_MMC_ENV_DEV 0
+#define CONFIG_ENV_OFFSET 0x25100000
+#define CONFIG_ENV_SIZE 0x400000
+
#define __STR(X) #X
#define STR(X) __STR(X)
--
2.17.1

View File

@@ -0,0 +1,409 @@
From patchwork Wed May 23 20:24:51 2018
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: [U-Boot] mmc: Unirqify bcm2835_sdhost and fix writes
X-Patchwork-Submitter: Alexander Graf <agraf@suse.de>
X-Patchwork-Id: 919394
X-Patchwork-Delegate: agraf@suse.de
Message-Id: <20180523202451.68781-1-agraf@suse.de>
To: u-boot@lists.denx.de
Date: Wed, 23 May 2018 22:24:51 +0200
From: Alexander Graf <agraf@suse.de>
List-Id: U-Boot discussion <u-boot.lists.denx.de>
The bcm2835 sdhost driver has a problem with "write multiple" commands.
It seems to boil down to the fact that the controller dislikes its FIFO
to get drained at the end of a block when a write multiple blocks command
is in flight.
The easy fix is to simply get rid of all the IRQ driven logic and make
the driver push as much data into the FIFO as it can. That way we never
drain and we never run into the problem.
Reported-by: Jan Leonhardt <jan@cyberdesigner.net>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
drivers/mmc/bcm2835_sdhost.c | 265 ++++++++-----------------------------------
1 file changed, 47 insertions(+), 218 deletions(-)
diff --git a/drivers/mmc/bcm2835_sdhost.c b/drivers/mmc/bcm2835_sdhost.c
index 96428333b0..1ce019af57 100644
--- a/drivers/mmc/bcm2835_sdhost.c
+++ b/drivers/mmc/bcm2835_sdhost.c
@@ -163,7 +163,6 @@ struct bcm2835_host {
int clock; /* Current clock speed */
unsigned int max_clk; /* Max possible freq */
unsigned int blocks; /* remaining PIO blocks */
- int irq; /* Device IRQ */
u32 ns_per_fifo_word;
@@ -173,14 +172,7 @@ struct bcm2835_host {
struct mmc_cmd *cmd; /* Current command */
struct mmc_data *data; /* Current data request */
- bool data_complete:1;/* Data finished before cmd */
bool use_busy:1; /* Wait for busy interrupt */
- bool wait_data_complete:1; /* Wait for data */
-
- /* for threaded irq handler */
- bool irq_block;
- bool irq_busy;
- bool irq_data;
struct udevice *dev;
struct mmc *mmc;
@@ -240,17 +232,9 @@ static void bcm2835_reset_internal(struct bcm2835_host *host)
writel(host->cdiv, host->ioaddr + SDCDIV);
}
-static int bcm2835_finish_command(struct bcm2835_host *host);
-
-static void bcm2835_wait_transfer_complete(struct bcm2835_host *host)
+static int bcm2835_wait_transfer_complete(struct bcm2835_host *host)
{
- int timediff;
- u32 alternate_idle;
-
- alternate_idle = (host->data->flags & MMC_DATA_READ) ?
- SDEDM_FSM_READWAIT : SDEDM_FSM_WRITESTART1;
-
- timediff = 0;
+ int timediff = 0;
while (1) {
u32 edm, fsm;
@@ -261,7 +245,10 @@ static void bcm2835_wait_transfer_complete(struct bcm2835_host *host)
if ((fsm == SDEDM_FSM_IDENTMODE) ||
(fsm == SDEDM_FSM_DATAMODE))
break;
- if (fsm == alternate_idle) {
+
+ if ((fsm == SDEDM_FSM_READWAIT) ||
+ (fsm == SDEDM_FSM_WRITESTART1) ||
+ (fsm == SDEDM_FSM_READDATA)) {
writel(edm | SDEDM_FORCE_DATA_MODE,
host->ioaddr + SDEDM);
break;
@@ -273,9 +260,11 @@ static void bcm2835_wait_transfer_complete(struct bcm2835_host *host)
"wait_transfer_complete - still waiting after %d retries\n",
timediff);
bcm2835_dumpregs(host);
- return;
+ return -ETIMEDOUT;
}
}
+
+ return 0;
}
static int bcm2835_transfer_block_pio(struct bcm2835_host *host, bool is_read)
@@ -322,6 +311,9 @@ static int bcm2835_transfer_block_pio(struct bcm2835_host *host, bool is_read)
fsm_state != SDEDM_FSM_READCRC)) ||
(!is_read &&
(fsm_state != SDEDM_FSM_WRITEDATA &&
+ fsm_state != SDEDM_FSM_WRITEWAIT1 &&
+ fsm_state != SDEDM_FSM_WRITEWAIT2 &&
+ fsm_state != SDEDM_FSM_WRITECRC &&
fsm_state != SDEDM_FSM_WRITESTART1 &&
fsm_state != SDEDM_FSM_WRITESTART2))) {
hsts = readl(host->ioaddr + SDHSTS);
@@ -358,9 +350,8 @@ static int bcm2835_transfer_pio(struct bcm2835_host *host)
is_read = (host->data->flags & MMC_DATA_READ) != 0;
ret = bcm2835_transfer_block_pio(host, is_read);
-
- if (host->wait_data_complete)
- bcm2835_wait_transfer_complete(host);
+ if (ret)
+ return ret;
sdhsts = readl(host->ioaddr + SDHSTS);
if (sdhsts & (SDHSTS_CRC16_ERROR |
@@ -379,21 +370,8 @@ static int bcm2835_transfer_pio(struct bcm2835_host *host)
return ret;
}
-static void bcm2835_set_transfer_irqs(struct bcm2835_host *host)
-{
- u32 all_irqs = SDHCFG_DATA_IRPT_EN | SDHCFG_BLOCK_IRPT_EN |
- SDHCFG_BUSY_IRPT_EN;
-
- host->hcfg = (host->hcfg & ~all_irqs) |
- SDHCFG_DATA_IRPT_EN |
- SDHCFG_BUSY_IRPT_EN;
-
- writel(host->hcfg, host->ioaddr + SDHCFG);
-}
-
-static
-void bcm2835_prepare_data(struct bcm2835_host *host, struct mmc_cmd *cmd,
- struct mmc_data *data)
+static void bcm2835_prepare_data(struct bcm2835_host *host, struct mmc_cmd *cmd,
+ struct mmc_data *data)
{
WARN_ON(host->data);
@@ -401,14 +379,9 @@ void bcm2835_prepare_data(struct bcm2835_host *host, struct mmc_cmd *cmd,
if (!data)
return;
- host->wait_data_complete = cmd->cmdidx != MMC_CMD_READ_MULTIPLE_BLOCK;
- host->data_complete = false;
-
/* Use PIO */
host->blocks = data->blocks;
- bcm2835_set_transfer_irqs(host);
-
writel(data->blocksize, host->ioaddr + SDHBCT);
writel(data->blocks, host->ioaddr + SDHBLC);
}
@@ -483,36 +456,6 @@ static int bcm2835_send_command(struct bcm2835_host *host, struct mmc_cmd *cmd,
return 0;
}
-static int bcm2835_transfer_complete(struct bcm2835_host *host)
-{
- int ret = 0;
-
- WARN_ON(!host->data_complete);
-
- host->data = NULL;
-
- return ret;
-}
-
-static void bcm2835_finish_data(struct bcm2835_host *host)
-{
- host->hcfg &= ~(SDHCFG_DATA_IRPT_EN | SDHCFG_BLOCK_IRPT_EN);
- writel(host->hcfg, host->ioaddr + SDHCFG);
-
- host->data_complete = true;
-
- if (host->cmd) {
- /* Data managed to finish before the
- * command completed. Make sure we do
- * things in the proper order.
- */
- dev_dbg(dev, "Finished early - HSTS %08x\n",
- readl(host->ioaddr + SDHSTS));
- } else {
- bcm2835_transfer_complete(host);
- }
-}
-
static int bcm2835_finish_command(struct bcm2835_host *host)
{
struct mmc_cmd *cmd = host->cmd;
@@ -562,8 +505,6 @@ static int bcm2835_finish_command(struct bcm2835_host *host)
/* Processed actual command. */
host->cmd = NULL;
- if (host->data && host->data_complete)
- ret = bcm2835_transfer_complete(host);
return ret;
}
@@ -608,159 +549,44 @@ static int bcm2835_check_data_error(struct bcm2835_host *host, u32 intmask)
return ret;
}
-static void bcm2835_busy_irq(struct bcm2835_host *host)
-{
- if (WARN_ON(!host->cmd)) {
- bcm2835_dumpregs(host);
- return;
- }
-
- if (WARN_ON(!host->use_busy)) {
- bcm2835_dumpregs(host);
- return;
- }
- host->use_busy = false;
-
- bcm2835_finish_command(host);
-}
-
-static void bcm2835_data_irq(struct bcm2835_host *host, u32 intmask)
+static int bcm2835_transmit(struct bcm2835_host *host)
{
+ u32 intmask = readl(host->ioaddr + SDHSTS);
int ret;
- /*
- * There are no dedicated data/space available interrupt
- * status bits, so it is necessary to use the single shared
- * data/space available FIFO status bits. It is therefore not
- * an error to get here when there is no data transfer in
- * progress.
- */
- if (!host->data)
- return;
-
+ /* Check for errors */
ret = bcm2835_check_data_error(host, intmask);
if (ret)
- goto finished;
-
- if (host->data->flags & MMC_DATA_WRITE) {
- /* Use the block interrupt for writes after the first block */
- host->hcfg &= ~(SDHCFG_DATA_IRPT_EN);
- host->hcfg |= SDHCFG_BLOCK_IRPT_EN;
- writel(host->hcfg, host->ioaddr + SDHCFG);
- bcm2835_transfer_pio(host);
- } else {
- bcm2835_transfer_pio(host);
- host->blocks--;
- if ((host->blocks == 0))
- goto finished;
- }
- return;
+ return ret;
-finished:
- host->hcfg &= ~(SDHCFG_DATA_IRPT_EN | SDHCFG_BLOCK_IRPT_EN);
- writel(host->hcfg, host->ioaddr + SDHCFG);
-}
-
-static void bcm2835_data_threaded_irq(struct bcm2835_host *host)
-{
- if (!host->data)
- return;
- if ((host->blocks == 0))
- bcm2835_finish_data(host);
-}
-
-static void bcm2835_block_irq(struct bcm2835_host *host)
-{
- if (WARN_ON(!host->data)) {
- bcm2835_dumpregs(host);
- return;
- }
-
- WARN_ON(!host->blocks);
- if ((--host->blocks == 0))
- bcm2835_finish_data(host);
- else
- bcm2835_transfer_pio(host);
-}
+ ret = bcm2835_check_cmd_error(host, intmask);
+ if (ret)
+ return ret;
-static irqreturn_t bcm2835_irq(int irq, void *dev_id)
-{
- irqreturn_t result = IRQ_NONE;
- struct bcm2835_host *host = dev_id;
- u32 intmask;
-
- intmask = readl(host->ioaddr + SDHSTS);
-
- writel(SDHSTS_BUSY_IRPT |
- SDHSTS_BLOCK_IRPT |
- SDHSTS_SDIO_IRPT |
- SDHSTS_DATA_FLAG,
- host->ioaddr + SDHSTS);
-
- if (intmask & SDHSTS_BLOCK_IRPT) {
- bcm2835_check_data_error(host, intmask);
- host->irq_block = true;
- result = IRQ_WAKE_THREAD;
+ /* Handle wait for busy end */
+ if (host->use_busy && (intmask & SDHSTS_BUSY_IRPT)) {
+ writel(SDHSTS_BUSY_IRPT, host->ioaddr + SDHSTS);
+ host->use_busy = false;
+ bcm2835_finish_command(host);
}
- if (intmask & SDHSTS_BUSY_IRPT) {
- if (!bcm2835_check_cmd_error(host, intmask)) {
- host->irq_busy = true;
- result = IRQ_WAKE_THREAD;
- } else {
- result = IRQ_HANDLED;
+ /* Handle PIO data transfer */
+ if (host->data) {
+ ret = bcm2835_transfer_pio(host);
+ if (ret)
+ return ret;
+ host->blocks--;
+ if (host->blocks == 0) {
+ /* Wait for command to complete for real */
+ ret = bcm2835_wait_transfer_complete(host);
+ if (ret)
+ return ret;
+ /* Transfer complete */
+ host->data = NULL;
}
}
- /* There is no true data interrupt status bit, so it is
- * necessary to qualify the data flag with the interrupt
- * enable bit.
- */
- if ((intmask & SDHSTS_DATA_FLAG) &&
- (host->hcfg & SDHCFG_DATA_IRPT_EN)) {
- bcm2835_data_irq(host, intmask);
- host->irq_data = true;
- result = IRQ_WAKE_THREAD;
- }
-
- return result;
-}
-
-static irqreturn_t bcm2835_threaded_irq(int irq, void *dev_id)
-{
- struct bcm2835_host *host = dev_id;
-
- if (host->irq_block) {
- host->irq_block = false;
- bcm2835_block_irq(host);
- }
-
- if (host->irq_busy) {
- host->irq_busy = false;
- bcm2835_busy_irq(host);
- }
-
- if (host->irq_data) {
- host->irq_data = false;
- bcm2835_data_threaded_irq(host);
- }
-
- return IRQ_HANDLED;
-}
-
-static void bcm2835_irq_poll(struct bcm2835_host *host)
-{
- u32 intmask;
-
- while (1) {
- intmask = readl(host->ioaddr + SDHSTS);
- if (intmask & (SDHSTS_BUSY_IRPT | SDHSTS_BLOCK_IRPT |
- SDHSTS_SDIO_IRPT | SDHSTS_DATA_FLAG)) {
- bcm2835_irq(0, host);
- bcm2835_threaded_irq(0, host);
- return;
- }
- }
+ return 0;
}
static void bcm2835_set_clock(struct bcm2835_host *host, unsigned int clock)
@@ -864,8 +690,11 @@ static int bcm2835_send_cmd(struct udevice *dev, struct mmc_cmd *cmd,
}
/* Wait for completion of busy signal or data transfer */
- while (host->use_busy || host->data)
- bcm2835_irq_poll(host);
+ while (host->use_busy || host->data) {
+ ret = bcm2835_transmit(host);
+ if (ret)
+ break;
+ }
return ret;
}

View File

@@ -6,3 +6,6 @@ rc-manager=file
[keyfile]
unmanaged-devices=type:bridge;type:tun;type:veth
[logging]
backend=journal

View File

@@ -2,22 +2,36 @@
compatible=%COMPATIBLE%
mountprefix=/run/rauc
statusfile=/mnt/data/rauc.db
bootloader=barebox
bootloader=%BOOTLOADER%
[handlers]
pre-install=/usr/lib/rauc/pre-install
post-install=/usr/lib/rauc/post-install
[keyring]
path=/etc/rauc/keyring.pem
[slot.boot.0]
device=/dev/disk/by-partuuid/b3dd0952-733c-4c88-8cba-cab9b8b4377f
type=vfs
bootname=boot
device=/dev/disk/by-partlabel/hassos-boot
type=vfat
[slot.kernel.0]
device=/dev/disk/by-partlabel/hassos-kernel0
type=ext4
bootname=A
[slot.kernel.1]
device=/dev/disk/by-partlabel/hassos-kernel1
type=ext4
bootname=B
[slot.rootfs.0]
device=/dev/disk/by-partuuid/8d3d53e3-6d49-4c38-8349-aff6859e82fd
device=/dev/disk/by-partlabel/hassos-system0
type=raw
bootname=system0
parent=kernel.0
[slot.rootfs.1]
device=/dev/disk/by-partuuid/a3ec664e-32ce-4665-95ea-7ae90ce9aa20
device=/dev/disk/by-partlabel/hassos-system1
type=raw
bootname=system1
parent=kernel.1

View File

@@ -1,6 +1,5 @@
[Journal]
Storage=auto
Compress=yes
SystemMaxUse=8M
RuntimeMaxUse=8M
SystemMaxUse=12M
RuntimeMaxUse=10M

View File

@@ -0,0 +1,2 @@
[Unit]
RequiresMountsFor=/etc/hostname /etc/hosts /etc/NetworkManager/system-connections

View File

@@ -0,0 +1,2 @@
[Unit]
RequiresMountsFor=/etc/hostname

View File

@@ -0,0 +1,3 @@
[Unit]
Wants=network-online.target
After=network-online.target

View File

@@ -0,0 +1,3 @@
[Unit]
Requires=docker.service
After=docker.service

View File

@@ -1,5 +1,6 @@
[Unit]
RequiresMountsFor=/etc/dropbear
ConditionFileNotEmpty=/root/.ssh/authorized_keys
[Service]
ExecStartPre=

View File

@@ -0,0 +1,3 @@
[Unit]
Requires=docker.service
After=docker.service

Some files were not shown because too many files have changed in this diff Show More