9 Commits

Author SHA1 Message Date
cc28ffce35 !29 Add meta-intel layer
Add meta-intel intel layer to build for the intel cpu
board configuration.
2023-09-23 23:39:41 +02:00
d6084f2ed8 !21 Change repos to fixed srcrev
This commit changes the repository from HEAD to a fixed commit
hash to prevent accidental updates when a meta-* layer changes.
2023-09-23 15:45:08 +00:00
bd2e7c5319 !26 Add upstream changes to UID and GID
The container upstream changed the internal UID and GID
which causes the boostrap script to create wrong mappings
2023-09-23 17:40:08 +02:00
126e39c583 !14 Add Authors into the licensefile 2023-09-21 18:46:02 +02:00
4bcc914087 #20 map/deploy every deployable folders 2023-09-13 09:52:54 +02:00
a2fcac7b4b #25 Add draft of the planned Roadmap
Reviewed-on: #25
Reviewed-by: welwei_tilman <tilman.sattler@stud.th-rosenheim.de>
2023-09-13 07:41:23 +00:00
4254190a14 #1 & #2 Add colaboration rules to the readme 2023-08-25 20:56:28 +02:00
50a2e25a9b Fix depoly path variable in mkdir 2023-08-25 20:43:28 +02:00
c96db27895 #7 donwgrade fedora to f37 2023-07-20 18:52:40 +02:00
8 changed files with 242 additions and 25 deletions

6
.gitignore vendored
View File

@@ -1,3 +1,3 @@
./sstate
./sstate-cache
./download
deploy
sstate-cache
downloads

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) [year] [fullname]
Copyright (c) 2023 - Lars Niesen, Emre Gülçino, Tilman Sattler, David Sattler
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

148
README.md
View File

@@ -1,6 +1,148 @@
# CAROS
# _C_ar _R_ealtime _O_perating _S_ystem.
# CaROS
# Car Realtime Operating System.
A yocto base distro for DIY car radio
the CaROS specific software is found in meta-caros
The CaROS specific software is found in meta-caros
## Description
## Setup
### Preliminaries
Install required packages:
- podman
### Get yocto-build
```shell
git clone git@git.larsniesen.de:caros/caros.git
```
### User Namespace Mapping
Ensure, that /etc/subgid and /etc/subuid contain corresponding
and sane entries for your account (podman run user).
If not you might need to run the following setup script (requires restart):
```shell
$ sudo ./dev/AddUserToSubgidAndSubuid.sh
```
## Start development build container
```shell
$ ./dev/bootstrap.sh [--deploy] [--sstate]
```
By adding the parameter --deploy, bootstraph.sh maps a deploy folder into the build container.
Built RPMs will be placed in this folder.
The parameter --sstate maps the build cache directory. This allows the cache to be preserved when the container
is closed thus significantly reducing build time.
You will end up in the yocto build container as user yocto e.g.:
```shell
[yocto@1453b5f0ab01 build]$
```
## Collaboration
### Working with branches
Every contributor should use his/her initials (eg. Max Mustermann uses 'mm') as the branch prefix.
After the prefix comes the issue ID and a short name describing the work.
The branch of Max Mustermann regarding the issue "#13 Integrate Fancy UI into the new web server"
should be named:
```
mm/13-integrate-new-web-ui
```
### Pull requests
The pull request is to be opened **after** testing the branch feature.
The exception to this are draft PRs
Before merging each PR needs to be reviewed from at least one other contributor
### Merging
Merges are to be done the following:
1. Update main.
```
$ git pull origin
```
2. Rebase main onto your feature branches.
In your feature branch do:
```
$ git rebase origin/main
```
3. Test Again if the rebase broke something.
4. Squash your commits into one.
```
$ git rebase -i HEAD~<num of commits>
```
In the now open editor replace `pick` with `squash` on all of your commits except the first.
After that quit the editor and another editor should pop up. Now enter the new commit message.
The commit message should look like this:
```
<issue id>: Description
```
For the above example it would be:
```
13: Integrate the new web-UI to improve the experience for new users.
```
The Description should be **why** the commit was made and not **what** the commit does.
5. Now we add the hash at the start of the commit with:
```
git commit --amend -m "#13: Integrate the new web-UI to improve the experience for new users."
```
The amend flag lets you _change_ your last commit message. You have to enter your complete commit message but with a hash at the start.
6. Now force push your branch to the remote.
```
$ git push --force
```
7. Fast-forward merge on GitLab without merge commit.
For those who are not comfortable with git rebase please follow these steps.
It is still recommended to do the squashing on the terminal.
1. Update main.
```
$ git pull origin/main
```
2. Rebase main onto your feature branches.
In your feature branch do:
```
$ git rebase origin/main
```
3. Test Again if the rebase broke something.
4. Now force push your branch to the remote.
```
$ git push --force
```
5. In the PR now fast-forward merge with squashing and without merge commit.

69
Roadmap.md Normal file
View File

@@ -0,0 +1,69 @@
First ideas and Roadmap
=======================
# Planned functional features
- Music (files & bluetooth & aux) incl. visuializer
- Google-Maps etc.
- NFS / SMB / HTTP server for manuals etc.
- WIFI AP support
- Hardened distro
- Linux-RT Kernel for CAN-bus
- CAN-bus
# UI/UX features
- Hacky UI (no plymouth, terminal tools, etc.)
# Planned software features
- QT6
- Systemd
- Wayland
- Linux-RT
- ...
# Hardware considerations
- x86_64
- Intel nuc
- China Laptop
- 3D printed parts for mounting (opensource CAD files, preferred STP)
- Nav-Buttons/Rotary encoders (navigation besides Touchscreen)
- Touchscreen monitor
- USB hub (inside the glove compartment, on the side of the screen)
# Misc
- Cava for FFT and music visuialisation
# Strength of the Team members
Albert: ??? Frontend?
David: Hardware, car stuff & co.
Emre: Embedded (OS / Yocto). Frontend
Lars: Embedded (Kernel + driver). Yocto.
Tilman: Yocto (beginner). Deamons (system layer). QT6
# First timeline and work distribution idea
1. Minimal image (Hello world OS) - Lars, Tilman, (Emre)
2. Hardware discussion
3. Deamon Setup + Hardware - (Lars), Emre, Tilman, David
- Musik
- GPIO
4. UI - ?
- Visuializer
- Settings
5. NFS Server & Config of OS. - (Lars), Emre, Tilman, David
6. Can bus / Relatime - Lars, Emre, Tilman, David
__Notes:__ Points 3, 4 and 5 are workable in parallel.

View File

@@ -11,22 +11,27 @@
<project remote="caros"
name="poky"
path="poky"
revision="kirkstone" />
revision="5c556073ac6e54314aa3fc210db040f3ab55105a" />
<project remote="caros"
name="meta-openembedded"
path="meta-oe"
revision="kirkstone" />
revision="a88cb922f91fda95e8a584cee3092083d5ad3e98" />
<project remote="caros"
name="meta-qt6"
path="meta-qt6"
revision="lts-6.2.9" />
revision="81a8947b8da3f0fbe03974d6b29e6205a76c3c42" />
<project remote="caros"
name="meta-selinux"
path="meta-selinux"
revision="kirkstone" />
revision="a401f4b2816a0b41ce8d9351542658c721935bcd" />
<project remote="caros"
name="meta-intel"
path="meta-intel"
revision="1342bcdc5bfc6620737e7d195e7d9bd744348577" />
</manifest>

View File

@@ -5,15 +5,15 @@ set -o pipefail
MANIFEST_BRANCH="${1:-main}"
YOCTO_GID="4040"
YOCTO_UID="2000"
YOCTO_GID="1000"
YOCTO_UID="1000"
YOCTO_USER="yocto"
YOCTO_WORKDIR="/opt/${YOCTO_USER}"
[[ -d "$PWD"/download ]] || mkdir "$PWD"/download
[[ -d "$PWD"/downloads ]] || mkdir "$PWD"/downloads
[[ -d "$PWD"/sstate-cache ]] || mkdir "$PWD"/sstate-cache
#sudo chmod -R 775 "${PWD}"/{download,sstate-cache}
subgidSize=$(( $(podman info --format "{{ range .Host.IDMappings.GIDMap }}+{{.Size }}{{end }}" ) - 1 ))
subuidSize=$(( $(podman info --format "{{ range .Host.IDMappings.UIDMap }}+{{.Size }}{{end }}" ) - 1 ))
@@ -56,10 +56,11 @@ if $DO_SSTATE ; then
fi
if $DO_DEPLOY ; then
DEPLOY_PATH="deploy_rpms"
mkdir -p $DEPLOAY_PATH
DEPLOY_PATH="deploy"
mkdir -p $DEPLOY_PATH
rm -rf "$DEPLOY_PATH"/*
deploy_param1="-v"
deploy_param2="${PWD}"/"${DEPOLY_PATH}":"${YOCTO_WORKDIR}"/"${DEPLOY_PATH}"
deploy_param2="${PWD}"/"${DEPLOY_PATH}":"${YOCTO_WORKDIR}"/"${DEPLOY_PATH}"
fi
@@ -81,10 +82,9 @@ podman run \
-v "${PWD}"/default.xml:"${YOCTO_WORKDIR}"/default.xml \
-v "${PWD}"/meta-caros:"${YOCTO_WORKDIR}"/meta-caros:Z \
-v "${PWD}"/dev:"${YOCTO_WORKDIR}"/dev:Z \
-v "${PWD}"/download:"${YOCTO_WORKDIR}"/download:Z \
-v "${PWD}"/sstate-cache:"${YOCTO_WORKDIR}"/sstate-cache:Z \
-v "${PWD}"/downloads:"${YOCTO_WORKDIR}"/downloads:Z \
--env TEMPLATECONF="${YOCTO_WORKDIR}"/meta-caros/conf/templates \
--env SSTATE_PATH="${SSTATE_PATH}" \
${CONTAINER_NAME} \
ghcr.io/jhnc-oss/yocto-image/yocto:38 \
ghcr.io/jhnc-oss/yocto-image/yocto:37 \
bash -c "dev/init_env.sh "

View File

@@ -21,6 +21,7 @@ BBLAYERS ?= " \
${TOPDIR}/../meta-oe/meta-python \
${TOPDIR}/../meta-oe/meta-webserver \
${TOPDIR}/../meta-oe/meta-xfce \
${TOPDIR}/../meta-intel \
${TOPDIR}/../meta-caros \
"

View File

@@ -1,8 +1,8 @@
MACHINE ?= "genericx86-64"
MACHINE ?= "intel-corei7-64"
DL_DIR ?= "${TOPDIR}/downloads"
DL_DIR ?= "${TOPDIR}/../downloads"
SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
SSTATE_DIR ?= "${TOPDIR}/../sstate-cache"
DISTRO ?= "caros"
@@ -118,4 +118,4 @@ BB_DISKMON_DIRS ??= "\
# this doesn't mean anything to you.
CONF_VERSION = "2"
DEPLOY_DIR_RPM = "${TOPDIR}../deploy_rpms"
DEPLOY_DIR = "${TOPDIR}/../deploy"