PART 1 – Embedded Linux Fundamentals
Beginner
- What is Embedded Linux?
- What is the difference between Linux and Embedded Linux?
- What are the major components of an Embedded Linux system?
- What is a Linux distribution?
- What is a BSP?
- What is a bootloader?
- What is a kernel?
- What is a root filesystem?
- What is a device tree?
- What is a cross compiler?
- What is cross compilation?
- What is a toolchain?
- What are GCC, binutils and glibc?
- What is an architecture-specific toolchain?
- What is the difference between host, target and build machine?
- What is an embedded target?
- What is
/boot? - What is
/etc? - What is
/dev? - What is
/proc? - What is
/sys? - What is
/tmp? - What is
/var? - What is
/usr? - What is
/lib? - What happens when Linux boots?
- What is the Linux boot sequence?
- What is firmware?
- What is hardware initialization?
- What is a console?
- What is a serial console?
- What is UART?
- Why is UART commonly used for debugging embedded Linux?
- What is SSH?
- What is Telnet?
- SSH vs Telnet?
- What is BusyBox?
- Why is BusyBox commonly used in Embedded Linux?
- What is init?
- What is PID 1?
- What is systemd?
- systemd vs SysVinit?
- What is a daemon?
- What is a service?
- What is a shell?
- What is Bash?
- What is a process?
- What is a thread?
- Process vs thread?
- What is a signal?
PART 2 – Embedded Linux Architecture
- Explain the complete Embedded Linux architecture.
- Explain:
Application
↓
Libraries
↓
System Calls
↓
Linux Kernel
↓
Device Drivers
↓
Hardware
- What happens when an application calls
open()? - What happens when an application calls
read()? - What happens when an application calls
write()? - What is a system call?
- Why can’t user applications directly access hardware?
- User space vs kernel space?
- What is privilege level?
- What is kernel mode?
- What is user mode?
- How does an application communicate with a driver?
- What is
/dev? - How are device nodes created?
- What is
udev? - What is
devtmpfs? - What is sysfs?
- What is procfs?
- What is debugfs?
- What is tmpfs?
- What is initramfs?
- initramfs vs root filesystem?
- What is NFS root filesystem?
- Why use NFS during embedded development?
- What is a read-only root filesystem?
- Why would an embedded system use a read-only rootfs?
PART 3 – Boot Process
Extremely Important
- Explain the Embedded Linux boot sequence from power-on to application.
Expected:
Power ON
↓
ROM / Boot ROM
↓
Bootloader
↓
Hardware initialization
↓
Load Kernel
↓
Load Device Tree
↓
Kernel initialization
↓
Mount root filesystem
↓
Start PID 1
↓
Start services
↓
Application
- What is Boot ROM?
- What is SPL?
- What is U-Boot?
- Why is U-Boot commonly used?
- U-Boot vs BIOS?
- What is UEFI?
- U-Boot vs UEFI?
- What is SPL?
- Why do we need SPL?
- What is
bootcmd? - What is
bootargs? - What is
printenv? - What is
setenv? - What is
saveenv? - What is
bootm? - What is
booti? - What is
bootz? - What is kernel image
Image? ImagevszImage?- What is
uImage? ImagevsuImage?- What is FIT image?
- What is
extlinux.conf? - What is kernel command line?
- How does the kernel receive boot arguments?
- What is:
console=ttyS0,115200
- What is:
root=/dev/mmcblk0p2
- What is:
rootwait
- What is:
rw
- What is:
ro
- What happens if root filesystem cannot be mounted?
- What is kernel panic?
- How do you debug a kernel boot failure?
PART 4 – Linux Kernel Basics
- What is the Linux kernel?
- Monolithic kernel vs microkernel?
- Why is Linux called a monolithic kernel?
- What is a modular kernel?
- What is a kernel module?
- Built-in driver vs loadable module?
- What is:
insmod
- What is:
modprobe
insmodvsmodprobe?- What is:
lsmod
- What is:
rmmod
- What is:
modinfo
- What is
/lib/modules/<kernel-version>? - What is
EXPORT_SYMBOL()? EXPORT_SYMBOLvsEXPORT_SYMBOL_GPL?- What is kernel configuration?
- What is
.config? - What is
defconfig? - What is
menuconfig? - What is:
make menuconfig
- What is:
make defconfig
- What is Kconfig?
- What is Kbuild?
- Kconfig vs Kbuild?
PART 5 – Linux Device Tree
Must Know
- What is Device Tree?
- Why was Device Tree introduced?
- What problem does Device Tree solve?
- What is DTS?
- What is DTSI?
- DTS vs DTSI?
- What is DTB?
- DTS → DTB conversion?
- What is Device Tree Compiler?
- What is:
dtc
- Explain a Device Tree node.
- What is
compatible? - What is
reg? - What is
interrupts? - What is
clocks? - What is
clock-names? - What is
gpio? - What is
gpio-controller? - What is
status = "okay"? - What does:
status = "disabled";
mean?
- What are phandles?
- What is
&uart0? - What is Device Tree overlay?
- What is
aliases? - What is
chosennode? - What is the
memorynode? - How does a driver match with Device Tree?
- Explain:
compatible → driver matching → probe()
- How do you debug Device Tree issues?
PART 6 – Linux Device Drivers
- What is a device driver?
- Why do we need drivers?
- Character vs block vs network driver?
- What is a character device?
- What is a block device?
- What is a network device?
- What is major number?
- What is minor number?
- What is
dev_t? - What is
struct file_operations? - Explain:
open()
read()
write()
ioctl()
mmap()
poll()
release()
- What is
copy_to_user()? - What is
copy_from_user()? - Why can’t we directly dereference a user-space pointer?
- What is
kmalloc()? - What is
kzalloc()? - What is
vmalloc()? kmalloc()vsvmalloc()?- What is
GFP_KERNEL? - What is
GFP_ATOMIC? GFP_KERNELvsGFP_ATOMIC?- What is
devm_*()? - Why use devm-managed resources?
- What is
probe()? - What is
remove()? - What is driver binding?
- What is driver unbinding?
- What is platform driver?
- What is platform device?
- Why are platform drivers commonly used in SoC systems?
- What is
platform_driver? - What is
platform_device? - What is
platform_get_resource()? - What is
devm_ioremap_resource()? - What is
ioremap()? - What is MMIO?
- MMIO vs port I/O?
PART 7 – Interrupts
- What is an interrupt?
- Hardware interrupt vs software interrupt?
- What is IRQ?
- What is IRQ number?
- What is ISR?
- What is interrupt handler?
- What is
request_irq()? - What is
free_irq()? - What is threaded IRQ?
- Hard IRQ vs threaded IRQ?
- What can you do inside an ISR?
- What should you NOT do inside an ISR?
- Why can’t you sleep in interrupt context?
- What is interrupt context?
- What is process context?
- What is bottom half?
- What is top half?
- What is tasklet?
- What is workqueue?
- Tasklet vs workqueue?
- What is softirq?
- Softirq vs tasklet?
- What is interrupt affinity?
- What is interrupt storm?
- What is shared IRQ?
- What is edge-triggered interrupt?
- What is level-triggered interrupt?
PART 8 – Synchronization
- Why is synchronization required?
- What is race condition?
- What is critical section?
- What is mutex?
- What is semaphore?
- What is spinlock?
- Mutex vs spinlock?
- Binary semaphore vs mutex?
- What is read-write lock?
- What is atomic operation?
- What is
atomic_t? - What is memory barrier?
- Why are memory barriers required?
- What is deadlock?
- What are the conditions for deadlock?
- What is priority inversion?
- How can priority inversion be handled?
- Can mutex be used in interrupt context?
- Can spinlock be used in process context?
- What happens if you sleep while holding a spinlock?
PART 9 – Linux Memory Management
- What is virtual memory?
- Physical vs virtual address?
- What is MMU?
- What is page?
- What is page table?
- What is TLB?
- What is page fault?
- Minor vs major page fault?
- What is kernel virtual address?
- What is user virtual address?
- What is DMA?
- What is DMA mapping?
- What is cache coherency?
- What is coherent DMA?
- Streaming DMA vs coherent DMA?
- What is CMA?
- What is reserved memory?
- What is memory fragmentation?
- What is slab allocator?
- SLAB vs SLUB?
- What is page allocator?
PART 10 – Linux System Programming
- What is a process?
- What is PID?
- What is PPID?
- What is
fork()? - What is
exec()? fork()vsexec()?- What is
wait()? - What is
waitpid()? - What is zombie process?
- What is orphan process?
- What is daemon process?
- What is
exit()? - What is
_exit()? exit()vs_exit()?- What is IPC?
- Types of IPC?
- Pipe?
- Named pipe?
- Message queue?
- Shared memory?
- Semaphore?
- Socket?
- Signal?
- Shared memory vs pipe?
- Message queue vs shared memory?
- What is POSIX?
- POSIX threads?
- What is
pthread_create()? - What is
pthread_join()? - What is
pthread_mutex? - What is condition variable?
- What is thread scheduling?
PART 11 – Linux Networking
- What is socket?
- TCP vs UDP?
- What is IP address?
- MAC address vs IP address?
- What is ARP?
- What is DHCP?
- What is DNS?
- What is routing?
- What is gateway?
- What is subnet mask?
- What is loopback?
- What is Ethernet?
- What is CAN?
- What is SocketCAN?
- How do you bring up an interface?
- Explain:
ip link
ip addr
ip route
- How do you capture packets?
- What is
tcpdump? - What is
ethtool? - How do you debug network connectivity?
PART 12 – Linux Debugging
- How do you debug an Embedded Linux application?
- How do you debug a kernel crash?
- What is
dmesg? - What is
journalctl? - What is
strace? - What is
ltrace? - What is GDB?
- GDB vs KGDB?
- What is core dump?
- How do you analyze a core dump?
- What is
gdbserver? - How do you remotely debug an embedded application?
- What is
perf? - What is ftrace?
- What is trace-cmd?
- What is printk?
- printk vs pr_info/pr_err?
- What is dynamic debug?
- What is lockdep?
- What is KASAN?
- What is KCSAN?
- What is kmemleak?
- How do you debug memory leaks?
- How do you debug CPU utilization?
- How do you debug high boot time?
- How do you debug random kernel crashes?
PART 13 – Linux Build System
- What is a Linux kernel build?
- What is Makefile?
- What is recursive Make?
- What is cross compilation?
- What is
ARCH? - What is
CROSS_COMPILE?
Example:
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
- What is toolchain prefix?
- What is sysroot?
- What is libc?
- glibc vs musl?
- glibc vs uClibc?
- What is static linking?
- What is dynamic linking?
- Static vs dynamic linking?
- What is ELF?
- What is executable?
- What is shared library?
- What is
.so? - What is
.a? - What is linker?
- What is loader?
- What is
ld.so?
PART 14 – Yocto Fundamentals
Most Important for Yocto Interviews
- What is Yocto Project?
- Is Yocto an operating system?
- What does Yocto provide?
- What is OpenEmbedded?
- Yocto vs OpenEmbedded?
- What is Poky?
- Is Poky the Yocto Project?
- What is BitBake?
- What is a recipe?
- What is
.bbfile? - What is
.bbappend? - What is
.incfile? - What is layer?
- What is metadata?
- What is machine configuration?
- What is distro configuration?
- What is image recipe?
- What is package recipe?
- What is packagegroup?
- What is BSP layer?
- What is application layer?
- What is distro layer?
- What is meta layer?
- Why is Yocto layer-based?
PART 15 – Yocto Architecture
- Explain Yocto architecture.
BitBake
↓
Metadata
↓
Recipes
↓
Classes
↓
Configuration
↓
Tasks
↓
Packages
↓
Root Filesystem
↓
Image
- What is metadata?
- What is BitBake datastore?
- What is parsing?
- What is task execution?
- What is dependency resolution?
- What is package generation?
- What is image generation?
- What is deploy directory?
- What is
tmp? - What is
downloads? - What is
sstate-cache? - What is
buildhistory? - What is
conf/local.conf? - What is
conf/bblayers.conf? - What is
MACHINE? - What is
DISTRO? - What is
TARGET_ARCH? - What is
TARGET_SYS? - What is
BUILD_SYS? - What is
HOST_SYS?
PART 16 – Yocto Recipes
- Explain a basic Yocto recipe.
- What is:
SUMMARY
DESCRIPTION
LICENSE
LIC_FILES_CHKSUM
SRC_URI
SRCREV
S
PV
PR
- What is
SRC_URI? - What is
SRCREV? - What is
PV? - What is
PR? - What is
WORKDIR? - What is
S? - What is
B? - What is
D? - What is
DEPLOYDIR? - What is
${bindir}? - What is
${libdir}? - What is
${sysconfdir}? - What is
${datadir}? - What is
${includedir}?
PART 17 – Yocto Tasks
- What is a BitBake task?
- What is
do_fetch? - What is
do_unpack? - What is
do_patch? - What is
do_configure? - What is
do_compile? - What is
do_install? - What is
do_package? - What is
do_package_write_*? - What is
do_rootfs? - What is
do_image? - What is
do_image_complete? - Explain the complete recipe build flow.
do_fetch
↓
do_unpack
↓
do_patch
↓
do_configure
↓
do_compile
↓
do_install
↓
do_package
↓
do_package_write
- What is task dependency?
- How do you add dependency between tasks?
- What is
addtask? - What is task ordering?
- What is
before? - What is
after?
PART 18 – Yocto Variables
- What is variable expansion?
- Difference between:
=
?=
??=
:=
- What is immediate expansion?
- What is lazy expansion?
- Difference:
FOO = "abc"
FOO := "abc"
- What is:
${@python-expression}
- What is
OVERRIDES? - What is override syntax?
- Explain:
VAR:${MACHINE}
- What is
append? - What is
prepend? - Difference between:
VAR:append = " abc"
VAR += "abc"
- What is
DISTRO_FEATURES? - What is
MACHINE_FEATURES? - What is
IMAGE_FEATURES? - What is
EXTRA_IMAGE_FEATURES? - What is
PACKAGECONFIG? - What is
DEPENDS? - What is
RDEPENDS? - What is
RRECOMMENDS? DEPENDSvsRDEPENDS?RDEPENDSvsRRECOMMENDS?
PART 19 -Yocto Dependencies
- What does
DEPENDSmean? - What does
RDEPENDSmean? - What happens if a library is missing during compilation?
- What happens if a runtime library is missing?
- Why can a package exist but its dependency still be missing?
- What is sysroot in Yocto?
- What is recipe-specific sysroot?
- What is staging?
- Why shouldn’t you manually modify Yocto sysroot?
- How does BitBake know where dependencies are?
PART 20 – Yocto Classes
- What is a Yocto class?
- What is
.bbclass? - What is
inherit? - What is
inherit cmake? - What is
inherit meson? - What is
inherit autotools? - What is
inherit pkgconfig? - What is
inherit systemd? - What is
inherit module? - What is
inherit kernel? - What is
inherit externalsrc? - What is
inherit cmakedoing internally? - When would you use
externalsrc?
PART 21 – Yocto Layers
- What is a Yocto layer?
- Why create a custom layer?
- How do you create a layer?
- What does
bitbake-layers create-layerdo? - What is
BBLAYERS? - What is
BBFILE_COLLECTIONS? - What is
BBFILE_PATTERN? - What is
BBFILE_PRIORITY? - What is layer priority?
- What happens if two layers contain the same recipe?
- Which recipe gets selected?
- How does
.bbappendwork across layers? - How do you check available layers?
- How do you check recipe providers?
- Explain:
bitbake-layers show-layers
bitbake-layers show-recipes
bitbake-layers show-appends
PART 22 – Yocto Image Creation
- What is an image recipe?
- What is:
IMAGE_INSTALL
- What is:
CORE_IMAGE_EXTRA_INSTALL
- Difference between
IMAGE_INSTALLandCORE_IMAGE_EXTRA_INSTALL? - What is
IMAGE_FEATURES? - What is
EXTRA_IMAGE_FEATURES? - How do you add an application to an image?
- How do you add a package?
- How do you remove a package?
- How do you add SSH server?
- How do you create a custom image?
- What is:
inherit core-image
- How do you create a minimal image?
- How do you create a development image?
PART 23 – Yocto Package Management
- What is a package?
- What is package manager?
- Yocto package formats?
- RPM vs DEB vs IPK?
- What is
PACKAGE_CLASSES? - What is
IMAGE_PKGTYPE? - What is package splitting?
- Why does one recipe produce multiple packages?
- What is:
PN
PN-dev
PN-dbg
PN-staticdev
- What is
${PN}? - What is
${PN}-dev? - What is
${PN}-dbg? - What is
FILES:${PN}? - What is
FILES:${PN}-dev?
PART 24 – Yocto Kernel
- How is Linux kernel built in Yocto?
- What is
linux-yocto? - What is a kernel recipe?
- How do you customize the kernel?
- How do you add a kernel configuration?
- What is kernel fragment?
- What is
.cfgfragment? - How do you add a kernel patch?
- How do you modify Device Tree using Yocto?
- How do you add a new DTS file?
- How do you configure kernel options?
- What is:
KERNEL_DEVICETREE
- What is:
KERNEL_FEATURES
- How do you verify the kernel configuration?
- Where is the built kernel located?
PART 25 – Yocto Device Tree
- How do you modify Device Tree in Yocto?
- Where do Device Tree sources live?
- How do you add custom DTS?
- How do you add a Device Tree patch?
- How do you enable a peripheral?
- How do you disable a peripheral?
- How does a Yocto kernel recipe find DTS files?
- How do you debug Device Tree compilation?
- How do you verify the DTB inside the final image?
PART 26 – Yocto Debugging
- BitBake recipe compilation fails. How do you debug?
- What is:
bitbake -c clean
- What is:
bitbake -c cleansstate
cleanvscleansstate?- What is:
bitbake -c cleanall
cleanallvscleansstate?- What is:
bitbake -e
- How do you find the final value of a variable?
- How do you find why a variable has a particular value?
- What is:
bitbake -g
- How do you inspect dependency graph?
- What is:
bitbake -c devshell
- What is
log.do_compile? - What is
run.do_compile? - Where do you find task logs?
- How do you debug missing header files?
- How do you debug missing libraries?
- How do you debug
cannot find -lxxx? - How do you debug QA errors?
- What is
do_package_qa?
PART 27 – Yocto QA Errors
- What is Yocto QA?
- What is:
installed-vs-shipped
- What is:
file-rdeps
- What is:
dev-so
- What is:
already-stripped
- What is:
buildpaths
- What is:
compile-host-path
- What is:
rpaths
- What is:
invalid-pkgconfig
- What is:
libdir
- What is:
arch
- Why shouldn’t QA errors simply be disabled?
- When would you use
INSANE_SKIP?
PART 28 – Yocto sstate and Downloads
- What is sstate?
- Why is sstate important?
- What is
SSTATE_DIR? - What is
DL_DIR? - Why does Yocto download source separately?
- How does Yocto avoid rebuilding everything?
- What is shared state cache?
- What causes sstate invalidation?
- What is hash equivalence?
- What is BitBake signature?
- What is task hash?
- What happens when a task’s inputs change?
PART 29 — Yocto SDK
- What is Yocto SDK?
- Why use an SDK?
- What is extensible SDK?
- Standard SDK vs eSDK?
- How do you generate an SDK?
- What is:
bitbake <image> -c populate_sdk
- What is:
populate_sdk_ext
- What is cross-development SDK?
- How do you compile an application using Yocto SDK?
- What is sysroot inside SDK?
PART 30 – Yocto Multiconfig
- What is multiconfig?
- Why use multiconfig?
- How can you build multiple machines?
- How can you build host and target components?
- What is:
BBMULTICONFIG
- How does dependency work across multiconfigs?
PART 31 – Yocto Reproducibility
- What is reproducible build?
- Why are reproducible builds important?
- What causes non-reproducibility?
- How does Yocto support reproducible builds?
- What is build timestamp?
- What is source timestamp?
- How do you investigate differences between two images?
PART 32 – Yocto Licensing
- How does Yocto handle licenses?
- What is
LICENSE? - What is
LIC_FILES_CHKSUM? - Why is
LIC_FILES_CHKSUMrequired? - What happens if license checksum changes?
- What is
INCOMPATIBLE_LICENSE? - How do you exclude GPL packages?
- How do you handle commercial packages?
PART 33 – Yocto Security
- How do you secure an Embedded Linux image?
- How do you enable secure boot?
- What is verified boot?
- What is measured boot?
- Secure boot vs verified boot?
- What is TPM?
- What is dm-verity?
- What is read-only rootfs?
- What is signed package?
- How do you reduce attack surface?
- Why should unnecessary services be removed?
- How do you disable root login?
- How do you disable password-based SSH?
PART 34 – Yocto OTA
- What is OTA update?
- How would you implement OTA for Embedded Linux?
- What is A/B update?
- Why use dual root filesystem?
- What happens if update fails?
- What is rollback?
- What is RAUC?
- What is SWUpdate?
- What is Mender?
- How would you design a reliable OTA system?
- How do you prevent bricking during OTA?
PART 35 – Yocto Performance
- Why is Yocto build slow?
- How do you reduce build time?
- How does sstate improve build performance?
- How does parallelism work?
- What is:
BB_NUMBER_THREADS
- What is:
PARALLEL_MAKE
- What is network caching?
- How do you optimize CI Yocto builds?
- What is shared sstate server?
- What is source mirror?
PART 36 – Advanced BitBake
- What is BitBake’s dependency resolver?
- How does BitBake determine task execution order?
- What is task signature?
- What is task hash?
- What is stamp?
- What is stamp-based execution?
- What is fakeroot?
- Why does Yocto use fakeroot/pseudo?
- What is pseudo?
- Why is
do_installexecuted under fakeroot? - What is
BB_TASK_NICE_LEVEL? - What is
BB_TASK_IONICE_LEVEL? - What is
BB_NO_NETWORK? - What is
BB_FETCH_PREMIRRORONLY? - What is
PREMIRRORS? - What is
MIRRORS?
PART 37 – Yocto Advanced Recipe Questions
- How do you write a recipe for a Git project?
- How do you specify Git branch?
- How do you specify commit?
- What is:
SRC_URI = "git://..."
SRCREV = "..."
- What is
${AUTOREV}? - Why should
AUTOREVgenerally be avoided in production? - How do you apply a patch?
- How do you add multiple patches?
- How do you disable a patch?
- How do you override recipe variables?
- How do you create machine-specific configuration?
- How do you create distro-specific configuration?
- How do you make a recipe machine-specific?
- How do you make a package architecture-independent?
PART 38 – CMake + Yocto
- How do you build a CMake project using Yocto?
- What is:
inherit cmake
- What is
EXTRA_OECMAKE? - How does Yocto pass compiler information to CMake?
- How do you pass CMake options?
- How do you install binaries from CMake?
- How do you handle external dependencies?
- How do you debug CMake cross-compilation?
PART 39 – Autotools + Yocto
- What is Autotools?
- What is:
configure
Makefile
automake
autoconf
- What is:
inherit autotools
- What is
EXTRA_OECONF? - What is
oe_runconf? - How does Yocto cross-compile Autotools projects?
PART 40 – Real Interview Troubleshooting
These are very high-value interview questions.
Scenario 1
Your application builds successfully on Ubuntu but fails in Yocto. Why?
Possible areas:
- missing DEPENDS
- incorrect sysroot
- missing headers
- missing pkg-config
- wrong PACKAGECONFIG
- host contamination
- incorrect CMake configuration
Scenario 2
Your recipe compiles but binary is missing from the final image. Why?
Check:
do_install
FILES:${PN}
IMAGE_INSTALL
package split
Scenario 3
cannot find -lpulse
How would you debug?
Scenario 4
Header file exists on your host but Yocto cannot find it.
Why?
Scenario 5
Application works on Ubuntu but crashes on target.
How do you debug?
Scenario 6
Device Tree compiles but driver doesn’t probe.
What do you check?
compatible
status
reg
interrupts
clocks
GPIO
driver match
probe()
Scenario 7
Driver probes but hardware doesn’t work.
How do you debug?
Scenario 8
Kernel boots but root filesystem doesn’t mount.
What do you check?
Scenario 9
Kernel hangs during boot.
How do you debug?
Scenario 10
Yocto rebuilds everything after a small change.
Why?
Scenario 11
Yocto build suddenly becomes very slow.
What do you investigate?
Scenario 12
Image size is 1 GB. How do you reduce it?
Scenario 13
Target has only 128 MB RAM. How would you optimize Linux?
Scenario 14
Application has high CPU usage.
How do you investigate?
Scenario 15
System randomly freezes.
How do you debug?
PART 41 – Expert Embedded Linux Questions
Architecture
- Design an Embedded Linux boot architecture for a custom SoC.
- Design a production BSP.
- How would you structure a Yocto project for multiple products?
- How would you maintain multiple hardware revisions?
- How would you support multiple SoCs?
- How would you maintain multiple kernel versions?
- How would you maintain multiple product variants?
- How would you design a long-term-maintenance Yocto system?
PART 42 – Expert Yocto Project Architecture
- Design a custom Yocto layer architecture.
Example:
meta-company
├── conf
├── classes
├── recipes-core
├── recipes-kernel
├── recipes-bsp
├── recipes-app
├── recipes-multimedia
└── recipes-security
- Where should application recipes live?
- Where should BSP recipes live?
- Where should machine configuration live?
- Where should distro configuration live?
- How do you prevent vendor-layer modifications from affecting your product layer?
- How do you handle vendor BSP upgrades?
- How do you maintain custom patches?
PART 43 – Production Yocto
- How do you create a production image?
- Development image vs production image?
- How do you remove debugging tools from production?
- How do you disable SSH in production?
- How do you enable read-only rootfs?
- How do you configure watchdog?
- How do you configure system health monitoring?
- How do you recover from application crashes?
- How do you automatically restart services?
- How do you collect crash logs?
- How do you implement persistent logs?
- How do you reduce boot time?
PART 44 – Embedded Linux Audio + Yocto
Since audio is a common Embedded Linux area, these are particularly useful if your role involves ALSA/PulseAudio.
- What is ALSA?
- What is PulseAudio?
- ALSA vs PulseAudio?
- What is PipeWire?
- ALSA architecture?
- What is PCM?
- What is mixer?
- What is ALSA device?
- What is hardware device?
- What is
aplay? - What is
arecord? - What is
amixer? - What is
alsactl? - What is
speaker-test? - How do you debug audio playback?
- What causes sample-rate mismatch?
- What causes underrun?
- What causes overrun?
- What is buffer size?
- What is period size?
- How do you reduce audio latency?
- How would you package ALSA utilities using Yocto?
- How would you add PulseAudio to a Yocto image?
- How would you debug:
cannot find -lpulse
cannot find -lpulse-simple
- How do
DEPENDSandRDEPENDSapply to an audio application?
PART 45 – Automotive Embedded Linux
For automotive roles, prepare these too:
- What is Automotive Linux?
- Embedded Linux vs Automotive Linux?
- What is Automotive Grade Linux?
- What is Android Automotive?
- Embedded Linux vs Android Automotive?
- What is QNX?
- Linux vs QNX?
- What is AUTOSAR?
- AUTOSAR Classic vs Adaptive?
- Linux vs AUTOSAR Adaptive?
- What is CAN?
- CAN FD?
- What is SOME/IP?
- What is DDS?
- What is Ethernet AVB?
- What is TSN?
- What is ECU?
- What is IVI?
- What is infotainment system?
- What is gateway ECU?
- What is ADAS?
- What is functional safety?
- What is ISO 26262?
- What is ASIL?
- What is cybersecurity in automotive Linux?
PART 46 — Extremely Important “Explain Your Project” Questions
These often matter more than theoretical questions.
Be ready to answer:
- Explain your Embedded Linux project.
- Explain your Yocto project.
- Why did you use Yocto?
- Why not build the Linux system manually?
- What BSP did you use?
- Which machine did you use?
- Which Linux kernel version?
- Which Yocto release?
- Which layers did you use?
- Did you create a custom layer?
- Did you write recipes?
- Did you modify the kernel?
- Did you modify Device Tree?
- Did you write a driver?
- How did you debug the driver?
- How did you debug Yocto builds?
- How did you reduce build time?
- How did you reduce image size?
- How did you add an application to the image?
- How did you add a systemd service?
- How did you configure networking?
- How did you configure audio?
- How did you debug boot issues?
- What was the hardest bug you solved?
- What performance optimization did you make?
- What was your contribution personally?
- What would you improve in the project?
PART 47 – Must-Know Commands
You should be comfortable explaining these without memorizing blindly.
Linux
ps
top
htop
free
df
du
mount
lsblk
fdisk
dmesg
journalctl
systemctl
ip
ss
ping
route
ethtool
tcpdump
strace
lsof
find
grep
awk
sed
cat
less
hexdump
dd
chmod
chown
ln
scp
ssh
Kernel
uname
lsmod
modprobe
insmod
rmmod
modinfo
dmesg
sysctl
Yocto
source oe-init-build-env
bitbake
bitbake-layers
devtool
recipetool
oe-pkgdata-util
Especially:
bitbake -e
bitbake -c clean
bitbake -c cleansstate
bitbake -c devshell
bitbake -c menuconfig
bitbake -c compile
bitbake -c install
bitbake-layers show-layers
bitbake-layers show-recipes
bitbake-layers show-appends
PART 48 – 20 Questions You Absolutely Must Master
If you have limited preparation time, do not skip these:
- Explain complete Embedded Linux boot process.
- Explain Yocto architecture.
- Yocto vs Buildroot.
- Yocto vs OpenEmbedded vs Poky vs BitBake.
- What is a recipe?
- What is a Yocto layer?
.bbvs.bbappend?DEPENDSvsRDEPENDS?- Explain BitBake task flow.
- How do you add an application to a Yocto image?
- How do you customize the Linux kernel using Yocto?
- How do you modify Device Tree using Yocto?
- How do you debug a failed Yocto recipe?
- How do you debug
cannot find -lxxx? - What is sstate cache?
- What is sysroot?
- How does Device Tree bind to a driver?
- How do you debug a driver that doesn’t probe?
- How do you debug a Linux kernel boot failure?
- Explain your complete Embedded Linux/Yocto project end-to-end.
Final Interview Preparation Structure
Recommend preparing in this order:
EMBEDDED LINUX
│
┌───────────────┴────────────────┐
│ │
LINUX YOCTO
│ │
┌──────┼───────┐ ┌─────────┼─────────┐
│ │ │ │ │ │
Boot Kernel System BitBake Recipes Layers
│ │ │ │ │ │
UBoot Drivers IPC Tasks Packages BSP
│ │ │ │ │ │
DT Interrupts Processes Variables Image Machine
│ │ │ │ │ │
└──────┼───────┘ └─────────┼─────────┘
│ │
└──────────────┬─────────────────┘
│
DEBUGGING
│
┌───────────┼───────────┐
│ │ │
GDB ftrace strace
│ │ │
KGDB perf dmesg
│
PRODUCTION
│
┌──────────┼──────────┐
│ │ │
Security OTA Performance

Leave a Reply