summaryrefslogtreecommitdiff
path: root/distribution/yocto-example-layer/distro.tex
blob: a53a674dcdb8877e3f448ab1b3ebd34cc6aec973 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
\subsection{Define a distribution}
\begin{frame}
\frametitle{Why define a distribution?}
\begin{itemize}
\item Naming of the toolchain (codenames, vendor)
\item Version numbers
\item Enable default features
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{distro features: file-systems}
\begin{description}
\item[cramfs] CramFS support
\item[ext2] tools for supporting for devices with internal HDD/Microdrive
        for storing files (instead of Flash only devices)
\item[nfs] NFS client support (for mounting NFS exports on device)
\item[smbfs] SMB networks client support
        (for mounting Samba/Microsoft Windows shares on device)
\end{description}
\end{frame}

\begin{frame}
\frametitle{distro features: hardware support}
\begin{description}
\item[alsa] ALSA/sound support
        (OSS compatibility kernel modules installed if available)
\item[bluetooth] bluetooth support (integrated BT only)
\item[irda] IrDA support
\item[wifi] WiFi support (integrated only).
\item[keyboard] keyboard support (e.g. keymaps will be loaded during boot)
\end{description}
\end{frame}

\begin{frame}
\frametitle{distro features: graphics}
\begin{description}
\item[opengl] the Open Graphics Library, which is a cross-language,
        multi-platform application programming interface used for rendering two
        and three-dimensional graphics
\item[directfb] DirectFB support
\end{description}
\end{frame}

\begin{frame}
\frametitle{distro features: networking}
\begin{description}
\item[ipsec] IPSec support
\item[ipv6] IPv6 support
\item[ppp] PPP dialup support
\end{description}
\end{frame}

\begin{frame}
\frametitle{distro features: bus support}
\begin{description}
\item[pci] PCI bus support
\item[pcmcia] PCMCIA/CompactFlash support
\item[usbgadget] USB Gadget Device support (for USB networking/serial/storage)
\item[usbhost] USB Host support
        (allows to connect external keyboard, mouse, storage, network etc)
\end{description}
\end{frame}

\begin{frame}
\frametitle{distro features: software}
\begin{description}
\item[systemd] support for this init manager, which is a full replacement of
        for init with parallel starting of services, reduced shell overhead,
        and other features. This init manager is used by many distributions
\item[wayland] the Wayland display server protocol
        and the library that supports it
\item[x11] X server and libraries
\end{description}
\end{frame}

\begin{frame}[fragile]
\frametitle{use a DISTRO\_FEATURE}
Normally the distro features are used in package groups in a core layer.
e.g. 'meta/recipes-core/packagegroups/packagegroup-base.bb':
\begin{verbatim}
PACKAGES = ' \
     ..
     ${@base_contains("DISTRO_FEATURES", \
                      "opengl", "packagegroup-opengl", "", d)} \
     ..
     '
\end{verbatim}
\end{frame}

\begin{frame}[fragile]
\frametitle{Yocto with local mirror}
\begin{description}
\item [PREMIRRORS] list of mirrors that are tried before SRC\_URI
\item [MIRRORS] list of mirrors that are tried after SRC\_URI
\item [BB\_FETCH\_PREMIRRORONLY = "1"] only use sources from PREMIRRORS
\item [BB\_NO\_NETWORK = "1"] throws error instead of accessing internet
\end{description}
typical in local.conf to generate the mirror:
\begin{description}
\item [BB\_GENERATE\_MIRROR\_TARBALLS = "1"] generates a tarball that can be
  used as mirror
\end{description}
\end{frame}

\begin{frame}[fragile]
\frametitle{Define an own distribution}
\begin{lstlisting}
$ cd ~/poky/meta-schulung
$ mkdir conf/distro
$ pluma conf/distro/schulung.conf
\end{lstlisting}
\begin{verbatim}
require conf/distro/poky.conf
DISTRO = "schulung"
DISTRO_NAME = "Schulung (Yocto Schulung Example Distro)"
DISTRO_VERSION = "1.0"
DISTRO_CODENAME = "penguin"
MAINTAINER = "Your Name <you@schulung>"
SDK_VENDOR = "-schulungsdk"
TARGET_VENDOR = "-schulung"
DISTROOVERRIDES = "schulung:poky"
\end{verbatim}
\end{frame}

\begin{frame}[fragile]
\frametitle{Use own distribution}
\begin{lstlisting}
$ cd ~/poky/build-schulung
$ pluma conf/local.conf
\end{lstlisting}
\begin{verbatim}
#STATE_DIR ?= "/home/prebuilt/qemuarm/sstate-cache"
#BB_NO_NETWORK = "1"
MACHINE ??= "qemuarm"
DL_DIR ?= "/home/downloads"
DISTRO ?= "schulung"
PACKAGE_CLASSES ?= "package_ipk"
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
USER_CLASSES ?= "buildstats image-mklibs image-prelink"
PATCHRESOLVE = "noop"
CONF_VERSION = "1"
\end{verbatim}
\begin{lstlisting}
$ bitbake core-image-minimal
\end{lstlisting}
\end{frame}