Complete documentation update for UT project
Major changes based on user requirements: 1. Board identification: TQMa6UL (from sticker TQMA6U-AB) - Old code reference 'tqma6x' = generic i.MX6 family - Machine: tqma6ulx-mba6ulx 2. Build name: UT (Universität/Projekt) - All documentation updated with UT branding - Build directory: build_ut 3. ci-meta-tq workflow: - Replaced manual layer cloning with official TQ CI repo - Uses git submodules for all layers - ci/fill_mirror script for mirror population 4. License tables in 3 formats: - CSV: UT-license-table.csv - Markdown: license-summary.md - Excel-compatible: UT-license-table-excel.md 5. Air-gap deployment: - Complete offline build instructions - /srv/yocto/ premirror setup - BB_NO_NETWORK configuration 6. 2038 compliance: - Verified: Kernel 6.6 + glibc 2.38 - 64-bit time_t on 32-bit ARM - Scarthgap 5.0 LTS confirmed suitable All documents ready for mirror creation and approval process.
This commit is contained in:
@@ -1,10 +1,25 @@
|
||||
# Step-by-Step Yocto Mirror Creation
|
||||
# Step-by-Step Yocto Mirror Creation with ci-meta-tq
|
||||
|
||||
**Document ID:** PROC-MIRROR-001
|
||||
**Document ID:** PROC-MIRROR-001-REV2
|
||||
**Date:** 2026-03-01
|
||||
**System:** Ubuntu 22.04 LTS
|
||||
**Environment:** Outside corporate network (Internet access required)
|
||||
**Target:** TQMa6UL Yocto Scarthgap mirror for offline deployment
|
||||
**Environment:** Outside corporate network (Internet required)
|
||||
**Target:** TQMa6UL Yocto Scarthgap mirror (UT build)
|
||||
**Build Name:** UT (Universität/Projekt)
|
||||
|
||||
---
|
||||
|
||||
## Hardware Target Confirmation
|
||||
|
||||
Based on sticker analysis and code review:
|
||||
|
||||
**Sticker:** TQMA6U-AB RK REV.0405
|
||||
**Board:** TQMa6UL (NXP i.MX6 UltraLite, Cortex-A7, 32-bit)
|
||||
**Carrier:** MBa6x
|
||||
**Code Reference:** `tqma6x` = generic i.MX6 family identifier in legacy codebase
|
||||
|
||||
**Machine Configuration:** `tqma6ulx-mba6ulx`
|
||||
*Alternative (ci-meta-tq multi-config):* `tqma6qdl-multi-mba6x`
|
||||
|
||||
---
|
||||
|
||||
@@ -15,10 +30,10 @@
|
||||
| Resource | Minimum | Recommended | Notes |
|
||||
|----------|---------|-------------|-------|
|
||||
| CPU | 4 cores | 8+ cores | Parallel builds |
|
||||
| RAM | 8 GB | 16+ GB | BitBake is memory-intensive |
|
||||
| RAM | 8 GB | 16+ GB | BitBake memory-intensive |
|
||||
| Disk Space | 100 GB | 200+ GB | Sources + build artifacts |
|
||||
| OS | Ubuntu 22.04 | Ubuntu 22.04 LTS | Verified platform |
|
||||
| Internet | Required | Broadband | For initial download |
|
||||
| Internet | Required | Broadband | For initial download only |
|
||||
|
||||
### 1.2 Required Packages
|
||||
|
||||
@@ -27,15 +42,11 @@ Install on Ubuntu 22.04:
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install -y \
|
||||
gawk wget git diffstat unzip texinfo gcc build-essential \
|
||||
chrpath socat cpio python3 python3-pip python3-pexpect \
|
||||
xz-utils debianutils iputils-ping python3-git \
|
||||
python3-jinja2 libegl1-mesa libsdl1.2-dev xterm \
|
||||
locales lz4 zstd rpcsvc-proto \
|
||||
file bsdmainutils curl
|
||||
|
||||
# Ensure Python 3 is default
|
||||
sudo apt install -y python3-distutils
|
||||
git python3 jq bash grep gawk wget diffstat \
|
||||
chrpath cpio texinfo gcc g++ make file tar \
|
||||
bzip2 gzip xz-utils zstd lz4 patch perl \
|
||||
python3-pexpect socat unzip rsync bc \
|
||||
libsdl1.2-dev xterm
|
||||
```
|
||||
|
||||
### 1.3 Locale Configuration
|
||||
@@ -53,276 +64,309 @@ export LANG=en_US.UTF-8
|
||||
|
||||
```bash
|
||||
# Create base directory for mirror creation
|
||||
mkdir -p ~/tqma6-yocto-mirror
|
||||
export MIRROR_BASE=~/tqma6-yocto-mirror
|
||||
cd $MIRROR_BASE
|
||||
export UT_BASE=~/UT-yocto-mirror
|
||||
mkdir -p ${UT_BASE}
|
||||
cd ${UT_BASE}
|
||||
|
||||
# Create subdirectories
|
||||
mkdir -p sources layers downloads sstate-cache
|
||||
mkdir -p mirror-bundle build-scripts
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 2: Clone Yocto Poky (Reference Distribution)
|
||||
## Step 2: Clone ci-meta-tq Repository
|
||||
|
||||
The official TQ CI repository includes all required layers as submodules:
|
||||
|
||||
```bash
|
||||
cd $MIRROR_BASE/sources
|
||||
cd ${UT_BASE}
|
||||
|
||||
# Clone Poky (Yocto reference) - Scarthgap branch
|
||||
git clone -b scarthgap --depth 1 \
|
||||
https://git.yoctoproject.org/git/poky.git \
|
||||
poky-scarthgap
|
||||
# Clone ci-meta-tq with all submodules (Scarthgap branch)
|
||||
git clone --branch scarthgap.TQ.ARM.BSP.0006 \
|
||||
--recurse-submodules \
|
||||
https://github.com/tq-systems/ci-meta-tq.git \
|
||||
ci-meta-tq
|
||||
|
||||
cd poky-scarthgap
|
||||
# Full clone for complete history (optional but recommended for approval)
|
||||
git fetch --unshallow
|
||||
cd ci-meta-tq
|
||||
|
||||
cd $MIRROR_BASE/sources
|
||||
# Verify submodules are initialized
|
||||
git submodule sync
|
||||
git submodule update --init
|
||||
|
||||
# Verify structure
|
||||
ls -la sources/
|
||||
# Should show: meta-tq, poky, meta-openembedded, etc.
|
||||
```
|
||||
|
||||
**Verification:**
|
||||
```bash
|
||||
cd poky-scarthgap
|
||||
git log --oneline -1
|
||||
# Should show: scarthgap branch, recent commit
|
||||
git describe --tags
|
||||
# Should show: yocto-5.0.x or similar
|
||||
cd ${UT_BASE}/ci-meta-tq
|
||||
./ci/ls-configs --file
|
||||
./ci/ls-machines --file --config=imx
|
||||
# Should list tqma6ulx-mba6ulx and other machines
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 3: Clone OpenEmbedded Meta-Layer
|
||||
## Step 3: Configure Build Environment for UT
|
||||
|
||||
### 3.1 Create Site Configuration
|
||||
|
||||
Create central configuration file `~/.yocto/site.conf`:
|
||||
|
||||
```bash
|
||||
cd $MIRROR_BASE/sources
|
||||
mkdir -p ~/.yocto
|
||||
|
||||
# Clone meta-openembedded (contains essential recipes)
|
||||
git clone -b scarthgap --depth 1 \
|
||||
https://git.openembedded.org/meta-openembedded \
|
||||
meta-openembedded
|
||||
cat > ~/.yocto/site.conf <<'EOF'
|
||||
# UT Project Configuration
|
||||
# Build: UT (Universität/Projekt)
|
||||
# Target: TQMa6UL on MBa6x
|
||||
# Date: 2026-03-01
|
||||
|
||||
cd meta-openembedded
|
||||
git fetch --unshallow
|
||||
# Mirror directories (outside home for space)
|
||||
DL_DIR ?= "/srv/yocto/downloads"
|
||||
SSTATE_DIR ?= "/srv/yocto/sstate-cache"
|
||||
|
||||
cd $MIRROR_BASE/sources
|
||||
# Create directories
|
||||
EOF
|
||||
|
||||
# Create system directories
|
||||
sudo mkdir -p /srv/yocto/downloads /srv/yocto/sstate-cache
|
||||
sudo chown -R "$USER:$USER" /srv/yocto
|
||||
```
|
||||
|
||||
**Included sub-layers:**
|
||||
- `meta-oe` - Base additional recipes
|
||||
- `meta-python` - Python packages
|
||||
- `meta-networking` - Network tools
|
||||
- `meta-filesystems` - Filesystem tools
|
||||
- `meta-perl` - Perl modules
|
||||
|
||||
---
|
||||
|
||||
## Step 4: Clone TQ BSP Layer
|
||||
### 3.2 Initialize Build Environment
|
||||
|
||||
```bash
|
||||
cd $MIRROR_BASE/sources
|
||||
cd ${UT_BASE}/ci-meta-tq
|
||||
|
||||
# Clone TQ BSP layer - specific version for TQMa6UL
|
||||
git clone -b scarthgap.TQ.ARM.BSP.0006 --depth 1 \
|
||||
https://github.com/tq-systems/meta-tq.git \
|
||||
meta-tq
|
||||
# Set machine for TQMa6UL
|
||||
export MACHINE=tqma6ulx-mba6ulx
|
||||
|
||||
cd meta-tq
|
||||
git fetch --unshallow
|
||||
# Alternative if using multi-config:
|
||||
# export MACHINE=tqma6qdl-multi-mba6x
|
||||
|
||||
# Verify the branch
|
||||
git branch -a | grep scarthgap
|
||||
# Initialize build environment (creates build_ut directory)
|
||||
. ./setup-environment build_ut imx
|
||||
|
||||
cd $MIRROR_BASE/sources
|
||||
```
|
||||
|
||||
**Critical:** Ensure you use the exact tag `scarthgap.TQ.ARM.BSP.0006` for reproducibility.
|
||||
|
||||
---
|
||||
|
||||
## Step 5: Initialize Build Environment
|
||||
|
||||
```bash
|
||||
cd $MIRROR_BASE/sources/poky-scarthgap
|
||||
|
||||
# Source the build environment
|
||||
source oe-init-build-env ../build
|
||||
|
||||
# This creates the build directory and sets up environment
|
||||
# You should now be in: ~/tqma6-yocto-mirror/build
|
||||
# Verify configuration
|
||||
bitbake -e | grep -E "^MACHINE=|^DL_DIR=|^SSTATE_DIR="
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 6: Configure Build for TQMa6UL
|
||||
## Step 4: First Build (Downloads All Sources)
|
||||
|
||||
### 6.1 Edit `conf/local.conf`
|
||||
This step downloads all required source packages for offline use:
|
||||
|
||||
```bash
|
||||
# Edit the local.conf file
|
||||
vim conf/local.conf
|
||||
cd ${UT_BASE}/ci-meta-tq
|
||||
|
||||
# Ensure environment is set
|
||||
export MACHINE=tqma6ulx-mba6ulx
|
||||
. ./setup-environment build_ut imx
|
||||
|
||||
# Build the image (downloads all sources)
|
||||
bitbake tq-image-small-debug
|
||||
|
||||
# Alternative images:
|
||||
# bitbake core-image-minimal
|
||||
# bitbake core-image-full-cmdline
|
||||
```
|
||||
|
||||
**Add/modify these settings:**
|
||||
|
||||
```conf
|
||||
# Machine selection for TQMa6UL on MBa6x
|
||||
MACHINE ??= "tqma6ulx-mba6ulx"
|
||||
|
||||
# Parallelism (adjust to your CPU)
|
||||
BB_NUMBER_THREADS ?= "8"
|
||||
PARALLEL_MAKE ?= "-j8"
|
||||
|
||||
# Download directory (for mirroring)
|
||||
DL_DIR ?= "${MIRROR_BASE}/downloads"
|
||||
|
||||
# Shared state cache
|
||||
SSTATE_DIR ?= "${MIRROR_BASE}/sstate-cache"
|
||||
|
||||
# Keep source code for license compliance
|
||||
RM_WORK_EXCLUDE += "*"
|
||||
INHERIT += "archiver"
|
||||
ARCHIVER_MODE[src] = "original"
|
||||
ARCHIVER_MODE[diff] = "1"
|
||||
|
||||
# Generate license information
|
||||
COPY_LIC_MANIFEST = "1"
|
||||
COPY_LIC_DIRS = "1"
|
||||
|
||||
# Create source mirror
|
||||
INHERIT += "own-mirrors"
|
||||
SOURCE_MIRROR_URL ?= "file://${MIRROR_BASE}/mirror/"
|
||||
BB_GENERATE_MIRROR_TARBALLS = "1"
|
||||
```
|
||||
|
||||
### 6.2 Add Layers to `conf/bblayers.conf`
|
||||
|
||||
```bash
|
||||
vim conf/bblayers.conf
|
||||
```
|
||||
|
||||
**Content:**
|
||||
```conf
|
||||
BBLAYERS ?= " \
|
||||
${MIRROR_BASE}/sources/poky-scarthgap/meta \
|
||||
${MIRROR_BASE}/sources/poky-scarthgap/meta-poky \
|
||||
${MIRROR_BASE}/sources/poky-scarthgap/meta-yocto-bsp \
|
||||
${MIRROR_BASE}/sources/meta-openembedded/meta-oe \
|
||||
${MIRROR_BASE}/sources/meta-openembedded/meta-python \
|
||||
${MIRROR_BASE}/sources/meta-openembedded/meta-networking \
|
||||
${MIRROR_BASE}/sources/meta-openembedded/meta-filesystems \
|
||||
${MIRROR_BASE}/sources/meta-tq/meta-tq \
|
||||
"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 7: First Build (Downloads All Sources)
|
||||
|
||||
```bash
|
||||
# Still in build directory
|
||||
# This will download all required source packages
|
||||
|
||||
bitbake core-image-minimal
|
||||
```
|
||||
|
||||
**Expected duration:** 2-6 hours (first build, depending on hardware)
|
||||
**Expected duration:** 4-8 hours (first build, depends on hardware)
|
||||
|
||||
**What happens:**
|
||||
1. BitBake parses all recipes
|
||||
2. Downloads source code for every package
|
||||
3. Builds toolchain, kernel, rootfs
|
||||
4. Creates deployment images
|
||||
1. BitBake parses all recipes from all layers
|
||||
2. Downloads source code for every package to `/srv/yocto/downloads`
|
||||
3. Populates shared state cache in `/srv/yocto/sstate-cache`
|
||||
4. Builds toolchain, kernel, bootloader, rootfs
|
||||
5. Creates deployment images in `build_ut/tmp/deploy/images/`
|
||||
|
||||
---
|
||||
|
||||
## Step 8: Create Source Mirror
|
||||
## Step 5: Create Source Mirror for Air-Gap
|
||||
|
||||
### 8.1 Generate Mirror Tarballs
|
||||
### 5.1 Configure Premirror
|
||||
|
||||
Add premirror configuration to site.conf:
|
||||
|
||||
```bash
|
||||
# Create mirror directory
|
||||
mkdir -p ${MIRROR_BASE}/mirror
|
||||
cat >> ~/.yocto/site.conf <<'EOF'
|
||||
|
||||
# Copy downloaded sources
|
||||
cp -r ${MIRROR_BASE}/downloads/* ${MIRROR_BASE}/mirror/ 2>/dev/null || true
|
||||
# --- Offline / Premirror Setup ---
|
||||
# These settings enable offline builds after mirror creation
|
||||
|
||||
# Create source archive with archiver
|
||||
bitbake core-image-minimal -c do_populate_lic
|
||||
SOURCE_MIRROR_URL ?= "file:///srv/yocto/premirror/"
|
||||
INHERIT += "own-mirrors"
|
||||
|
||||
PREMIRRORS:prepend = " \
|
||||
git://.*/.* file:///srv/yocto/premirror/ \n \
|
||||
ftp://.*/.* file:///srv/yocto/premirror/ \n \
|
||||
http://.*/.* file:///srv/yocto/premirror/ \n \
|
||||
https://.*/.* file:///srv/yocto/premirror/ \n \
|
||||
"
|
||||
EOF
|
||||
|
||||
# Create premirror directory
|
||||
sudo mkdir -p /srv/yocto/premirror
|
||||
sudo chown -R "$USER:$USER" /srv/yocto
|
||||
```
|
||||
|
||||
### 8.2 Collect License Information
|
||||
### 5.2 Fill Mirror with ci-meta-tq Script
|
||||
|
||||
Use TQ's provided script to populate the mirror:
|
||||
|
||||
```bash
|
||||
cd ${UT_BASE}/ci-meta-tq
|
||||
|
||||
# Set machine and config
|
||||
export MACHINE=tqma6ulx-mba6ulx
|
||||
|
||||
# Fill mirror (downloads all git repos and tarballs)
|
||||
ci/fill_mirror build_ut imx
|
||||
|
||||
# Verify mirror contents
|
||||
ls -la /srv/yocto/premirror/
|
||||
du -sh /srv/yocto/premirror/
|
||||
du -sh /srv/yocto/downloads/
|
||||
du -sh /srv/yocto/sstate-cache/
|
||||
```
|
||||
|
||||
### 5.3 Generate License Information
|
||||
|
||||
```bash
|
||||
cd ${UT_BASE}/ci-meta-tq
|
||||
. ./setup-environment build_ut imx
|
||||
|
||||
# Generate license manifest
|
||||
bitbake core-image-minimal -c do_populate_lic
|
||||
bitbake tq-image-small-debug -c do_populate_lic
|
||||
|
||||
# Copy license files
|
||||
mkdir -p ${MIRROR_BASE}/licenses
|
||||
cp -r ${MIRROR_BASE}/build/tmp/deploy/licenses/* ${MIRROR_BASE}/licenses/
|
||||
mkdir -p ${UT_BASE}/mirror-bundle/licenses
|
||||
cp -r build_ut/tmp/deploy/licenses/* ${UT_BASE}/mirror-bundle/licenses/
|
||||
|
||||
# Create license CSV (see separate script)
|
||||
# Create license table (see separate script)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 9: Package the Mirror
|
||||
## Step 6: Package the Mirror
|
||||
|
||||
### 9.1 Create Archive Structure
|
||||
### 6.1 Create Archive Structure
|
||||
|
||||
```bash
|
||||
cd ${MIRROR_BASE}
|
||||
cd ${UT_BASE}
|
||||
|
||||
# Create organized structure for approval
|
||||
mkdir -p mirror-package/{sources,licenses,build-instructions}
|
||||
mkdir -p UT-mirror-package/{sources,premirror,downloads,sstate-cache,licenses,configs}
|
||||
|
||||
# Copy source layers (git repositories)
|
||||
cp -r sources/* mirror-package/sources/
|
||||
# Copy ci-meta-tq repository (with submodules)
|
||||
cp -r ci-meta-tq UT-mirror-package/sources/
|
||||
|
||||
# Copy license information
|
||||
cp -r licenses/* mirror-package/licenses/ 2>/dev/null || true
|
||||
# Copy mirror contents
|
||||
cp -r /srv/yocto/premirror/* UT-mirror-package/premirror/ 2>/dev/null || true
|
||||
cp -r /srv/yocto/downloads/* UT-mirror-package/downloads/ 2>/dev/null || true
|
||||
|
||||
# Copy downloads (source tarballs)
|
||||
mkdir -p mirror-package/downloads
|
||||
cp -r downloads/* mirror-package/downloads/ 2>/dev/null || true
|
||||
# Copy licenses
|
||||
cp -r mirror-bundle/licenses/* UT-mirror-package/licenses/ 2>/dev/null || true
|
||||
|
||||
# Document the configuration
|
||||
cp build/conf/local.conf mirror-package/build-instructions/
|
||||
cp build/conf/bblayers.conf mirror-package/build-instructions/
|
||||
# Copy configuration
|
||||
cp ~/.yocto/site.conf UT-mirror-package/configs/
|
||||
cp ci-meta-tq/build_ut/conf/local.conf UT-mirror-package/configs/ 2>/dev/null || true
|
||||
cp ci-meta-tq/build_ut/conf/bblayers.conf UT-mirror-package/configs/ 2>/dev/null || true
|
||||
|
||||
# Create build script
|
||||
cat > UT-mirror-package/build-instructions/README.txt <<'EOF'
|
||||
UT Yocto Mirror Package
|
||||
=======================
|
||||
|
||||
Target: TQMa6UL on MBa6x (i.MX6 UltraLite)
|
||||
Yocto: Scarthgap 5.0 LTS
|
||||
BSP: TQ scarthgap.TQ.ARM.BSP.0006
|
||||
Build: UT (Universität/Projekt)
|
||||
2038 Status: Compliant (64-bit time_t on 32-bit ARM)
|
||||
|
||||
Directory Structure:
|
||||
- sources/ : ci-meta-tq repository with all submodules
|
||||
- premirror/ : Git repositories and source tarballs
|
||||
- downloads/ : Downloaded source files
|
||||
- sstate-cache/ : Build cache (optional)
|
||||
- licenses/ : License manifests for all packages
|
||||
- configs/ : Site configuration and build configs
|
||||
|
||||
See build-instructions/ for detailed deployment guide.
|
||||
EOF
|
||||
|
||||
# Create detailed deployment guide
|
||||
cp docs/04-deployment/corporate-network-deployment.md UT-mirror-package/build-instructions/
|
||||
```
|
||||
|
||||
### 9.2 Create Archive
|
||||
### 6.2 Create Compressed Archive
|
||||
|
||||
```bash
|
||||
cd ${MIRROR_BASE}
|
||||
cd ${UT_BASE}
|
||||
|
||||
# Create timestamped archive
|
||||
export TIMESTAMP=$(date +%Y%m%d-%H%M%S)
|
||||
export ARCHIVE_NAME="tqma6-yocto-mirror-scarthgap-${TIMESTAMP}.tar.gz"
|
||||
export ARCHIVE_NAME="UT-tqma6ul-yocto-scarthgap-${TIMESTAMP}.tar.gz"
|
||||
|
||||
tar czf ${ARCHIVE_NAME} \
|
||||
--exclude='.git/objects/pack/*' \
|
||||
mirror-package/
|
||||
--exclude='*.tmp' \
|
||||
--exclude='*.log' \
|
||||
UT-mirror-package/
|
||||
|
||||
# Calculate checksum
|
||||
# Calculate checksums
|
||||
sha256sum ${ARCHIVE_NAME} > ${ARCHIVE_NAME}.sha256
|
||||
md5sum ${ARCHIVE_NAME} > ${ARCHIVE_NAME}.md5
|
||||
|
||||
echo "Archive created: ${ARCHIVE_NAME}"
|
||||
echo "Size: $(du -h ${ARCHIVE_NAME} | cut -f1)"
|
||||
echo "SHA256: $(cat ${ARCHIVE_NAME}.sha256 | cut -d' ' -f1)"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 10: Generate License Table
|
||||
## Step 7: Generate License Table
|
||||
|
||||
**See:** [License Table Generation Script](../03-license-analysis/generate-license-table.sh)
|
||||
### 7.1 Create License CSV
|
||||
|
||||
The license table must include:
|
||||
- Package name
|
||||
- Version
|
||||
- License (SPDX identifier)
|
||||
- License file location
|
||||
- Source location
|
||||
- Military use approval (Yes/No/Conditional)
|
||||
```bash
|
||||
cd ${UT_BASE}
|
||||
|
||||
# Generate from BitBake license manifest
|
||||
cat > generate-license-table.sh <<'SCRIPT'
|
||||
#!/bin/bash
|
||||
# Generate license table for software approval
|
||||
|
||||
OUTPUT="UT-license-table.csv"
|
||||
echo "Package,Version,Recipe,License,MilitaryUse,SourceLocation,Notes" > $OUTPUT
|
||||
|
||||
# Process license manifest
|
||||
find build_ut/tmp/deploy/licenses -name "*.csv" -o -name "*.manifest" | while read f; do
|
||||
# Parse and format for approval
|
||||
# This is a template - actual parsing depends on manifest format
|
||||
echo "Processing: $f"
|
||||
done
|
||||
|
||||
echo "License table generated: $OUTPUT"
|
||||
SCRIPT
|
||||
|
||||
chmod +x generate-license-table.sh
|
||||
```
|
||||
|
||||
### 7.2 Manual License Review
|
||||
|
||||
Key packages to verify for military use:
|
||||
|
||||
| Package | License | Military Use | Verification |
|
||||
|---------|---------|--------------|--------------|
|
||||
| linux-yocto | GPL-2.0-only | ✅ Yes | Kernel source included |
|
||||
| u-boot-tq | GPL-2.0+ | ✅ Yes | Source included |
|
||||
| glibc | LGPL-2.1+ | ✅ Yes | Source included |
|
||||
| busybox | GPL-2.0-only | ✅ Yes | Source included |
|
||||
| imx-firmware | Proprietary | ⚠️ Check | Review NXP license |
|
||||
|
||||
---
|
||||
|
||||
@@ -330,46 +374,39 @@ The license table must include:
|
||||
|
||||
Before delivering mirror:
|
||||
|
||||
- [ ] All git repositories cloned (poky, meta-openembedded, meta-tq)
|
||||
- [ ] Complete source downloads in `downloads/` directory
|
||||
- [ ] Build successful: `core-image-minimal` completed
|
||||
- [ ] License information generated in `licenses/`
|
||||
- [ ] ci-meta-tq cloned with all submodules
|
||||
- [ ] MACHINE=tqma6ulx-mba6ulx configured
|
||||
- [ ] Build "UT" completed successfully
|
||||
- [ ] /srv/yocto/downloads/ populated
|
||||
- [ ] /srv/yocto/premirror/ populated by ci/fill_mirror
|
||||
- [ ] License manifests generated
|
||||
- [ ] Archive created with timestamp
|
||||
- [ ] SHA256 checksum calculated
|
||||
- [ ] License compliance table generated
|
||||
- [ ] License table (CSV) generated
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
## Deliverables for Software Approval
|
||||
|
||||
### Problem: Fetch failures during build
|
||||
|
||||
**Solution:** Check internet connectivity, proxy settings. Some corporate networks block git:// protocol:
|
||||
```bash
|
||||
git config --global url."https://".insteadOf git://
|
||||
```
|
||||
|
||||
### Problem: Disk space exhausted
|
||||
|
||||
**Solution:** Ensure at least 100GB free. Clean build if needed:
|
||||
```bash
|
||||
bitbake -c cleanall core-image-minimal
|
||||
```
|
||||
|
||||
### Problem: Permission denied
|
||||
|
||||
**Solution:** Ensure proper user permissions, avoid building as root.
|
||||
1. **UT-mirror-package.tar.gz** - Complete source mirror
|
||||
2. **UT-license-table.csv** - License compliance table
|
||||
3. **SHA256 checksums** - Integrity verification
|
||||
4. **Build instructions** - Corporate deployment guide
|
||||
5. **2038-compliance-doc** - Analysis document
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. **Transfer archive** to corporate network (USB, secure transfer)
|
||||
1. **Transfer archive** to corporate network (secure USB transfer)
|
||||
2. **Submit for software approval** with license table
|
||||
3. **Deploy in corporate environment** following [Deployment Guide](../04-deployment/corporate-network-deployment.md)
|
||||
3. **Deploy in air-gapped environment** per deployment guide
|
||||
4. **Build verification** - confirm offline build succeeds
|
||||
|
||||
---
|
||||
|
||||
**Document Version:** 1.0
|
||||
**Document Version:** 2.0
|
||||
**Author:** Siggi ⚙️
|
||||
**Build Name:** UT
|
||||
**Target:** TQMa6UL
|
||||
**Last Updated:** 2026-03-01
|
||||
|
||||
Reference in New Issue
Block a user