guowenxue
2024-01-25 52646c8429b2d6342c2a710ed2885f784d9292be
yocto/meta-igkboard/images/yocto-image-full.bb
@@ -1,4 +1,4 @@
SUMMARY = "A console lite image for production"
SUMMARY = "A multimedia wth full command image for production"
LICENSE = "MIT"
inherit core-image
@@ -7,68 +7,105 @@
#IMAGE_OVERHEAD_FACTOR = "1.0"
#IMAGE_ROOTFS_EXTRA_SPACE = "512000"
## Select Image Features
IMAGE_FEATURES += " \
    ssh-server-openssh \
    hwcodecs \
    package-management \
"
CORE_IMAGE_EXTRA_INSTALL += " \
    packagegroup-base-wifi \
    packagegroup-core-full-cmdline \
    packagegroup-tools-bluetooth \
    packagegroup-fsl-tools-audio \
    packagegroup-imx-isp \
    packagegroup-imx-security \
    packagegroup-fsl-gstreamer1.0 \
    packagegroup-fsl-gstreamer1.0-full \
    packagegroup-core-ssh-openssh \
    openssh-sftp openssh-sftp-server \
    firmwared \
"
inherit populate_sdk_qt6_base
CONFLICT_DISTRO_FEATURES = "directfb"
CORE_IMAGE_EXTRA_INSTALL:append = " packagegroup-qt6-imx tzdata "
CORE_IMAGE_EXTRA_INSTALL:append = " \
    opencv zbar \
    gnupg \
    parted \
    v4l-utils \
    inetutils \
    hostapd \
    wireless-tools \
    spitools \
    alsa-state \
    expand-rootfs \
    wpa-conf \
    pulseaudio-server \
    xz lrzsz \
    yavta \
    libgpiod libgpiod-tools \
    powertop \
    dos2unix \
    rsync \
    python3 \
    python3-pip \
"
# Modify default environment
modify_env() {
    echo "alias ls='ls --color=auto'" >> ${IMAGE_ROOTFS}/etc/profile
}
ROOTFS_POSTPROCESS_COMMAND += "modify_env; "
inherit extrausers
# Create the password hash with following command on host:
# >> mkpasswd -m sha256crypt igkboard -S abcd6789
# >> mkpasswd -m sha256crypt password -S abcd6789
# Remember to escape the character $ in the resulting hash
# Set the root password: igkboard
#PASSWD="\$5\$abcd6789\$vlMo5CC1IJlipoXWQifbiMJ8fZqRIV26EXIi97RxPjC"
# Set the root password:
#PASSWD="\$5\$abcd6789\$Vuv1aLz04ZwhxgsB3lOQbwy1XUS6PJ.8h2A7.9HoUd3"
EXTRA_USERS_PARAMS = "\
    usermod -p '${PASSWD}' root; \
"
## Select Image Features
IMAGE_FEATURES += " \
    hwcodecs \
    ssh-server-openssh \
    package-management \
"
CONFLICT_DISTRO_FEATURES = "directfb"
CORE_IMAGE_EXTRA_INSTALL_BASE += " \
    packagegroup-base-wifi \
    packagegroup-imx-isp \
    packagegroup-imx-security \
    packagegroup-fsl-tools-audio \
    packagegroup-core-full-cmdline \
    packagegroup-tools-bluetooth \
    packagegroup-core-ssh-openssh \
    packagegroup-fsl-gstreamer1.0 \
    packagegroup-fsl-gstreamer1.0-full \
    packagegroup-fsl-tools-benchmark \
    packagegroup-fsl-opencv-imx \
    packagegroup-qt6-modules \
    packagegroup-misc-utils \
"
CORE_IMAGE_EXTRA_INSTALL_BASE += " \
    kernel-modules \
    firmwared linux-firmware \
    powertop tzdata ppp vim \
    xz lrzsz rsync dos2unix \
    gnupg parted inetutils \
    hostapd wireless-tools iw \
    i2c-tools spidev-test spitools \
    libgpiod libgpiod-tools \
    fb-test fbgrab libdrm \
    opencv zbar v4l-utils yavta \
    alsa-state pulseaudio-server \
    python3 python3-pip tmux \
    openssh-sftp openssh-sftp-server \
    memtester pcsc-tools stunnel ntp \
    curl evtest cpufrequtils iperf3 \
    dosfstools ethtool iproute2 modemmanager \
    e2fsprogs-mke2fs e2fsprogs-resize2fs \
    cryptodev-module openssl-bin \
"
# For machine igkboard-imx6ull
CORE_IMAGE_EXTRA_INSTALL = " \
    ${CORE_IMAGE_EXTRA_INSTALL_BASE} \
"
# For machine igkboard-imx8mp
CORE_IMAGE_EXTRA_INSTALL:igkboard-imx8mp = " \
    ${CORE_IMAGE_EXTRA_INSTALL_BASE} \
    packagegroup-fsl-tools-gpu \
    packagegroup-fsl-tools-gpu-external \
    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'weston-init', '', d)} \
    git gcc gcc-symlinks binutils automake cmake autoconf freerdp \
"
modify_rootfs() {
    # Modify default environment
    echo "alias ls='ls --color=auto'" >> ${IMAGE_ROOTFS}/etc/profile
    # Update wpa_supplicant service
    sed -i "/^After=/d" ${IMAGE_ROOTFS}/lib/systemd/system/wpa_supplicant@.service
}
# Remove unused files in rootfs
doclean_rootfs() {
    # remove unsed test apps
    rm -rf ${IMAGE_ROOTFS}/unit_tests
    # remove unsed firmware
    mkdir -p ${IMAGE_ROOTFS}/lib/firmware/.bak
    mv ${IMAGE_ROOTFS}/lib/firmware/imx* ${IMAGE_ROOTFS}/lib/firmware/.bak
    mv ${IMAGE_ROOTFS}/lib/firmware/nxp* ${IMAGE_ROOTFS}/lib/firmware/.bak
    mv ${IMAGE_ROOTFS}/lib/firmware/mediatek ${IMAGE_ROOTFS}/lib/firmware/.bak
    mv ${IMAGE_ROOTFS}/lib/firmware/mt76* ${IMAGE_ROOTFS}/lib/firmware/.bak
    mv ${IMAGE_ROOTFS}/lib/firmware/rtl* ${IMAGE_ROOTFS}/lib/firmware/.bak
    rm -rf ${IMAGE_ROOTFS}/lib/firmware/*
    mv ${IMAGE_ROOTFS}/lib/firmware/.bak/* ${IMAGE_ROOTFS}/lib/firmware/
    rm -rf ${IMAGE_ROOTFS}/lib/firmware/imx*.elf
    rm -rf ${IMAGE_ROOTFS}/lib/firmware/.bak
}
ROOTFS_POSTPROCESS_COMMAND += "modify_rootfs; doclean_rootfs; "