diff options
Diffstat (limited to 'documentation')
-rw-r--r-- | documentation/dev-manual/dev-manual-common-tasks.xml | 213 | ||||
-rw-r--r-- | documentation/ref-manual/ref-kickstart.xml | 5 | ||||
-rw-r--r-- | documentation/ref-manual/technical-details.xml | 207 |
3 files changed, 212 insertions, 213 deletions
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml index 58bb6012ce..78825c7f1e 100644 --- a/documentation/dev-manual/dev-manual-common-tasks.xml +++ b/documentation/dev-manual/dev-manual-common-tasks.xml | |||
@@ -4878,16 +4878,17 @@ | |||
4878 | customized images, and as such, was designed to be | 4878 | customized images, and as such, was designed to be |
4879 | completely extensible through a plug-in interface. | 4879 | completely extensible through a plug-in interface. |
4880 | See the | 4880 | See the |
4881 | "<ulink url='&YOCTO_DOCS_REF_URL;#wic-plug-ins-interface'>Wic Plug-Ins Interface</ulink>" | 4881 | "<link linkend='wic-using-the-wic-plug-ins-interface'>Using the Wic Plug-Ins Interface</link>" |
4882 | section in the Yocto Project Reference Manual for information | 4882 | section for information on these plug-ins. |
4883 | on these plug-ins. | ||
4884 | </para> | 4883 | </para> |
4885 | 4884 | ||
4886 | <para> | 4885 | <para> |
4887 | This section provides some background information on Wic, | 4886 | This section provides some background information on Wic, |
4888 | describes what you need to have in | 4887 | describes what you need to have in |
4889 | place to run the tool, provides instruction on how to use | 4888 | place to run the tool, provides instruction on how to use |
4890 | the Wic utility, and provides several examples. | 4889 | the Wic utility, provides information on using the Wic plug-ins |
4890 | interface, and provides several examples that show how to use | ||
4891 | Wic. | ||
4891 | </para> | 4892 | </para> |
4892 | 4893 | ||
4893 | <section id='wic-background'> | 4894 | <section id='wic-background'> |
@@ -5265,6 +5266,210 @@ | |||
5265 | </para> | 5266 | </para> |
5266 | </section> | 5267 | </section> |
5267 | 5268 | ||
5269 | <section id='wic-using-the-wic-plug-ins-interface'> | ||
5270 | <title>Using the Wic Plug-Ins Interface</title> | ||
5271 | |||
5272 | <para> | ||
5273 | You can extend and specialize Wic functionality by using | ||
5274 | Wic plug-ins. | ||
5275 | This section explains the Wic plug-in interface. | ||
5276 | <note> | ||
5277 | Wic plug-ins consist of "source" and "imager" plug-ins. | ||
5278 | Imager plug-ins are beyond the scope of this section. | ||
5279 | </note> | ||
5280 | </para> | ||
5281 | |||
5282 | <para> | ||
5283 | Source plug-ins provide a mechanism to customize partition | ||
5284 | content during the Wic image generation process. | ||
5285 | You can use source plug-ins to map values that you specify | ||
5286 | using <filename>--source</filename> commands in kickstart | ||
5287 | files (i.e. <filename>*.wks</filename>) to a plug-in | ||
5288 | implementation used to populate a given partition. | ||
5289 | <note> | ||
5290 | If you use plug-ins that have build-time dependencies | ||
5291 | (e.g. native tools, bootloaders, and so forth) | ||
5292 | when building a Wic image, you need to specify those | ||
5293 | dependencies using the | ||
5294 | <ulink url='&YOCTO_DOCS_REF_URL;#var-WKS_FILE_DEPENDS'><filename>WKS_FILE_DEPENDS</filename></ulink> | ||
5295 | variable. | ||
5296 | </note> | ||
5297 | </para> | ||
5298 | |||
5299 | <para> | ||
5300 | Source plug-ins are subclasses defined in plug-in files. | ||
5301 | As shipped, the Yocto Project provides several plug-in | ||
5302 | files. | ||
5303 | You can see the source plug-in files that ship with the | ||
5304 | Yocto Project | ||
5305 | <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/scripts/lib/wic/plugins/source'>here</ulink>. | ||
5306 | Each of these plug-in files contains source plug-ins that | ||
5307 | are designed to populate a specific Wic image partition. | ||
5308 | </para> | ||
5309 | |||
5310 | <para> | ||
5311 | Source plug-ins are subclasses of the | ||
5312 | <filename>SourcePlugin</filename> class, which is | ||
5313 | defined in the | ||
5314 | <filename>poky/scripts/lib/wic/pluginbase.py</filename> | ||
5315 | file. | ||
5316 | For example, the <filename>BootimgEFIPlugin</filename> | ||
5317 | source plug-in found in the | ||
5318 | <filename>bootimg-efi.py</filename> file is a subclass of | ||
5319 | the <filename>SourcePlugin</filename> class, which is found | ||
5320 | in the <filename>pluginbase.py</filename> file. | ||
5321 | </para> | ||
5322 | |||
5323 | <para> | ||
5324 | You can also implement source plug-ins in a layer outside | ||
5325 | of the Source Repositories (external layer). | ||
5326 | To do so, be sure that your plug-in files are located in | ||
5327 | a directory whose path is | ||
5328 | <filename>scripts/lib/wic/plugins/source/</filename> | ||
5329 | within your external layer. | ||
5330 | When the plug-in files are located there, the source | ||
5331 | plug-ins they contain are made available to Wic. | ||
5332 | </para> | ||
5333 | |||
5334 | <para> | ||
5335 | When the Wic implementation needs to invoke a | ||
5336 | partition-specific implementation, it looks for the plug-in | ||
5337 | with the same name as the <filename>--source</filename> | ||
5338 | parameter used in the kickstart file given to that | ||
5339 | partition. | ||
5340 | For example, if the partition is set up using the following | ||
5341 | command in a kickstart file: | ||
5342 | <literallayout class='monospaced'> | ||
5343 | part /boot --source bootimg-pcbios --ondisk sda --label boot --active --align 1024 | ||
5344 | </literallayout> | ||
5345 | The methods defined as class members of the matching | ||
5346 | source plug-in (i.e. <filename>bootimg-pcbios</filename>) | ||
5347 | in the <filename>bootimg-pcbios.py</filename> plug-in file | ||
5348 | are used. | ||
5349 | </para> | ||
5350 | |||
5351 | <para> | ||
5352 | To be more concrete, here is the corresponding plug-in | ||
5353 | definition from the <filename>bootimg-pcbios.py</filename> | ||
5354 | file for the previous command along with an example | ||
5355 | method called by the Wic implementation when it needs to | ||
5356 | prepare a partition using an implementation-specific | ||
5357 | function: | ||
5358 | <literallayout class='monospaced'> | ||
5359 | bootimg-pcbios.py | ||
5360 | . | ||
5361 | . | ||
5362 | . | ||
5363 | class BootimgPcbiosPlugin(SourcePlugin): | ||
5364 | """ | ||
5365 | Create MBR boot partition and install syslinux on it. | ||
5366 | """ | ||
5367 | |||
5368 | name = 'bootimg-pcbios' | ||
5369 | . | ||
5370 | . | ||
5371 | . | ||
5372 | @classmethod | ||
5373 | def do_prepare_partition(cls, part, source_params, creator, cr_workdir, | ||
5374 | oe_builddir, bootimg_dir, kernel_dir, | ||
5375 | rootfs_dir, native_sysroot): | ||
5376 | """ | ||
5377 | Called to do the actual content population for a partition i.e. it | ||
5378 | 'prepares' the partition to be incorporated into the image. | ||
5379 | In this case, prepare content for legacy bios boot partition. | ||
5380 | """ | ||
5381 | . | ||
5382 | . | ||
5383 | . | ||
5384 | </literallayout> | ||
5385 | If a subclass (plug-in) itself does not implement a | ||
5386 | particular function, Wic locates and uses the default | ||
5387 | version in the superclass. | ||
5388 | It is for this reason that all source plug-ins are derived | ||
5389 | from the <filename>SourcePlugin</filename> class. | ||
5390 | </para> | ||
5391 | |||
5392 | <para> | ||
5393 | The <filename>SourcePlugin</filename> class defined in | ||
5394 | the <filename>pluginbase.py</filename> file defines | ||
5395 | a set of methods that source plug-ins can implement or | ||
5396 | override. | ||
5397 | Any plug-ins (subclass of | ||
5398 | <filename>SourcePlugin</filename>) that do not implement | ||
5399 | a particular method inherit the implementation of the | ||
5400 | method from the <filename>SourcePlugin</filename> class. | ||
5401 | For more information, see the | ||
5402 | <filename>SourcePlugin</filename> class in the | ||
5403 | <filename>pluginbase.py</filename> file for details: | ||
5404 | </para> | ||
5405 | |||
5406 | <para> | ||
5407 | The following list describes the methods implemented in the | ||
5408 | <filename>SourcePlugin</filename> class: | ||
5409 | <itemizedlist> | ||
5410 | <listitem><para> | ||
5411 | <emphasis><filename>do_prepare_partition()</filename>:</emphasis> | ||
5412 | Called to populate a partition with actual content. | ||
5413 | In other words, the method prepares the final | ||
5414 | partition image that is incorporated into the | ||
5415 | disk image. | ||
5416 | </para></listitem> | ||
5417 | <listitem><para> | ||
5418 | <emphasis><filename>do_configure_partition()</filename>:</emphasis> | ||
5419 | Called before | ||
5420 | <filename>do_prepare_partition()</filename> to | ||
5421 | create custom configuration files for a partition | ||
5422 | (e.g. syslinux or grub configuration files). | ||
5423 | </para></listitem> | ||
5424 | <listitem><para> | ||
5425 | <emphasis><filename>do_install_disk()</filename>:</emphasis> | ||
5426 | Called after all partitions have been prepared and | ||
5427 | assembled into a disk image. | ||
5428 | This method provides a hook to allow finalization | ||
5429 | of a disk image (e.g. writing an MBR). | ||
5430 | </para></listitem> | ||
5431 | <listitem><para> | ||
5432 | <emphasis><filename>do_stage_partition()</filename>:</emphasis> | ||
5433 | Special content-staging hook called before | ||
5434 | <filename>do_prepare_partition()</filename>. | ||
5435 | This method is normally empty.</para> | ||
5436 | |||
5437 | <para>Typically, a partition just uses the passed-in | ||
5438 | parameters (e.g. the unmodified value of | ||
5439 | <filename>bootimg_dir</filename>). | ||
5440 | However, in some cases, things might need to be | ||
5441 | more tailored. | ||
5442 | As an example, certain files might additionally | ||
5443 | need to be taken from | ||
5444 | <filename>bootimg_dir + /boot</filename>. | ||
5445 | This hook allows those files to be staged in a | ||
5446 | customized fashion. | ||
5447 | <note> | ||
5448 | <filename>get_bitbake_var()</filename> | ||
5449 | allows you to access non-standard variables | ||
5450 | that you might want to use for this | ||
5451 | behavior. | ||
5452 | </note> | ||
5453 | </para></listitem> | ||
5454 | </itemizedlist> | ||
5455 | </para> | ||
5456 | |||
5457 | <para> | ||
5458 | You can extend the source plug-in mechanism. | ||
5459 | To add more hooks, create more source plug-in methods | ||
5460 | within <filename>SourcePlugin</filename> and the | ||
5461 | corresponding derived subclasses. | ||
5462 | The code that calls the plug-in methods uses the | ||
5463 | <filename>plugin.get_source_plugin_methods()</filename> | ||
5464 | function to find the method or methods needed by the call. | ||
5465 | Retrieval of those methods is accomplished by filling up | ||
5466 | a dict with keys that contain the method names of interest. | ||
5467 | On success, these will be filled in with the actual | ||
5468 | methods. | ||
5469 | See the Wic implementation for examples and details. | ||
5470 | </para> | ||
5471 | </section> | ||
5472 | |||
5268 | <section id='wic-usage-examples'> | 5473 | <section id='wic-usage-examples'> |
5269 | <title>Examples</title> | 5474 | <title>Examples</title> |
5270 | 5475 | ||
diff --git a/documentation/ref-manual/ref-kickstart.xml b/documentation/ref-manual/ref-kickstart.xml index 1dd36b242c..ab3d1b8ef1 100644 --- a/documentation/ref-manual/ref-kickstart.xml +++ b/documentation/ref-manual/ref-kickstart.xml | |||
@@ -107,8 +107,9 @@ | |||
107 | The most common value for this option is "rootfs", but you | 107 | The most common value for this option is "rootfs", but you |
108 | can use any value that maps to a valid source plug-in. | 108 | can use any value that maps to a valid source plug-in. |
109 | For information on the source plug-ins, see the | 109 | For information on the source plug-ins, see the |
110 | "<link linkend='wic-plug-ins-interface'>Wic Plug-Ins Interface</link>" | 110 | "<ulink url='&YOCTO_DOCS_DEV_URL;#wic-using-the-wic-plug-ins-interface'>Using the Wic Plug-Ins Interface</ulink>" |
111 | section.</para> | 111 | section in the Yocto Project Development Tasks Manual. |
112 | </para> | ||
112 | 113 | ||
113 | <para>If you use <filename>--source rootfs</filename>, Wic | 114 | <para>If you use <filename>--source rootfs</filename>, Wic |
114 | creates a partition as large as needed and to fill it with | 115 | creates a partition as large as needed and to fill it with |
diff --git a/documentation/ref-manual/technical-details.xml b/documentation/ref-manual/technical-details.xml index 1ac020a5cf..5769cd619a 100644 --- a/documentation/ref-manual/technical-details.xml +++ b/documentation/ref-manual/technical-details.xml | |||
@@ -1255,213 +1255,6 @@ | |||
1255 | </para> | 1255 | </para> |
1256 | </section> | 1256 | </section> |
1257 | 1257 | ||
1258 | <section id='wic-plug-ins-interface'> | ||
1259 | <title>Wic Plug-Ins Interface</title> | ||
1260 | |||
1261 | <para> | ||
1262 | You can extend and specialize Wic functionality by using | ||
1263 | Wic plug-ins. | ||
1264 | This section explains the Wic plug-in interface. | ||
1265 | For information on using Wic in general, see the | ||
1266 | "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-partitioned-images-using-wic'>Creating Partitioned Images Using Wic</ulink>" | ||
1267 | section in the Yocto Project Development Tasks Manual. | ||
1268 | <note> | ||
1269 | Wic plug-ins consist of "source" and "imager" plug-ins. | ||
1270 | Imager plug-ins are beyond the scope of this section. | ||
1271 | </note> | ||
1272 | </para> | ||
1273 | |||
1274 | <para> | ||
1275 | Source plug-ins provide a mechanism to customize partition | ||
1276 | content during the Wic image generation process. | ||
1277 | You can use source plug-ins to map values that you specify | ||
1278 | using <filename>--source</filename> commands in kickstart | ||
1279 | files (i.e. <filename>*.wks</filename>) to a plug-in | ||
1280 | implementation used to populate a given partition. | ||
1281 | <note> | ||
1282 | If you use plug-ins that have build-time dependencies | ||
1283 | (e.g. native tools, bootloaders, and so forth) | ||
1284 | when building a Wic image, you need to specify those | ||
1285 | dependencies using the | ||
1286 | <link linkend='var-WKS_FILE_DEPENDS'><filename>WKS_FILE_DEPENDS</filename></link> | ||
1287 | variable. | ||
1288 | </note> | ||
1289 | </para> | ||
1290 | |||
1291 | <para> | ||
1292 | Source plug-ins are subclasses defined in plug-in files. | ||
1293 | As shipped, the Yocto Project provides several plug-in | ||
1294 | files. | ||
1295 | You can see the source plug-in files that ship with the | ||
1296 | Yocto Project | ||
1297 | <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/scripts/lib/wic/plugins/source'>here</ulink>. | ||
1298 | Each of these plug-in files contain source plug-ins that | ||
1299 | are designed to populate a specific Wic image partition. | ||
1300 | </para> | ||
1301 | |||
1302 | <para> | ||
1303 | Source plug-ins are subclasses of the | ||
1304 | <filename>SourcePlugin</filename> class, which is | ||
1305 | defined in the | ||
1306 | <filename>poky/scripts/lib/wic/pluginbase.py</filename> | ||
1307 | file. | ||
1308 | For example, the <filename>BootimgEFIPlugin</filename> | ||
1309 | source plug-in found in the | ||
1310 | <filename>bootimg-efi.py</filename> file is a subclass of | ||
1311 | the <filename>SourcePlugin</filename> class, which is found | ||
1312 | in the <filename>pluginbase.py</filename> file. | ||
1313 | </para> | ||
1314 | |||
1315 | <para> | ||
1316 | You can also implement source plug-ins in a layer outside | ||
1317 | of the Source Repositories (external layer). | ||
1318 | To do so, be sure that your plug-in files are located in | ||
1319 | a directory whose path is | ||
1320 | <filename>scripts/lib/wic/plugins/source/</filename> | ||
1321 | within your external layer. | ||
1322 | When the plug-in files are located there, the source | ||
1323 | plug-ins they contain are made available to Wic. | ||
1324 | </para> | ||
1325 | |||
1326 | <para> | ||
1327 | When the Wic implementation needs to invoke a | ||
1328 | partition-specific implementation, it looks for the plug-in | ||
1329 | with the same name as the <filename>--source</filename> | ||
1330 | parameter used in the kickstart file given to that | ||
1331 | partition. | ||
1332 | For example, if the partition is set up using the following | ||
1333 | command in a kickstart file: | ||
1334 | <literallayout class='monospaced'> | ||
1335 | part /boot --source bootimg-pcbios --ondisk sda --label boot --active --align 1024 | ||
1336 | </literallayout> | ||
1337 | The methods defined as class members of the matching | ||
1338 | source plug-in (i.e. <filename>bootimg-pcbios</filename>) | ||
1339 | in the <filename>bootimg-pcbios.py</filename> plug-in file | ||
1340 | are used. | ||
1341 | </para> | ||
1342 | |||
1343 | <para> | ||
1344 | To be more concrete, here is the corresponding plug-in | ||
1345 | definition from the <filename>bootimg-pcbios.py</filename> | ||
1346 | file for the previous command along with an example | ||
1347 | method called by the Wic implementation when it needs to | ||
1348 | prepare a partition using an implementation-specific | ||
1349 | function: | ||
1350 | <literallayout class='monospaced'> | ||
1351 | bootimg-pcbios.py | ||
1352 | . | ||
1353 | . | ||
1354 | . | ||
1355 | class BootimgPcbiosPlugin(SourcePlugin): | ||
1356 | """ | ||
1357 | Create MBR boot partition and install syslinux on it. | ||
1358 | """ | ||
1359 | |||
1360 | name = 'bootimg-pcbios' | ||
1361 | . | ||
1362 | . | ||
1363 | . | ||
1364 | @classmethod | ||
1365 | def do_prepare_partition(cls, part, source_params, creator, cr_workdir, | ||
1366 | oe_builddir, bootimg_dir, kernel_dir, | ||
1367 | rootfs_dir, native_sysroot): | ||
1368 | """ | ||
1369 | Called to do the actual content population for a partition i.e. it | ||
1370 | 'prepares' the partition to be incorporated into the image. | ||
1371 | In this case, prepare content for legacy bios boot partition. | ||
1372 | """ | ||
1373 | . | ||
1374 | . | ||
1375 | . | ||
1376 | </literallayout> | ||
1377 | If a subclass (plug-in) itself does not implement a | ||
1378 | particular function, Wic locates and uses the default | ||
1379 | version in the superclass. | ||
1380 | It is for this reason that all source plug-ins are derived | ||
1381 | from the <filename>SourcePlugin</filename> class. | ||
1382 | </para> | ||
1383 | |||
1384 | <para> | ||
1385 | The <filename>SourcePlugin</filename> class defined in | ||
1386 | the <filename>pluginbase.py</filename> file defines | ||
1387 | a set of methods that source plug-ins can implement or | ||
1388 | override. | ||
1389 | Any plug-ins (subclass of | ||
1390 | <filename>SourcePlugin</filename>) that do not implement | ||
1391 | a particular method inherit the implementation of the | ||
1392 | method from the <filename>SourcePlugin</filename> class. | ||
1393 | For more information, see the | ||
1394 | <filename>SourcePlugin</filename> class in the | ||
1395 | <filename>pluginbase.py</filename> file for details: | ||
1396 | </para> | ||
1397 | |||
1398 | <para> | ||
1399 | The following list describes the methods implemented in the | ||
1400 | <filename>SourcePlugin</filename> class: | ||
1401 | <itemizedlist> | ||
1402 | <listitem><para> | ||
1403 | <emphasis><filename>do_prepare_partition()</filename>:</emphasis> | ||
1404 | Called to populate a partition with actual content. | ||
1405 | In other words, the method prepares the final | ||
1406 | partition image that is incorporated into the | ||
1407 | disk image. | ||
1408 | </para></listitem> | ||
1409 | <listitem><para> | ||
1410 | <emphasis><filename>do_configure_partition()</filename>:</emphasis> | ||
1411 | Called before | ||
1412 | <filename>do_prepare_partition()</filename> to | ||
1413 | create custom configuration files for a partition | ||
1414 | (e.g. syslinux or grub configuration files). | ||
1415 | </para></listitem> | ||
1416 | <listitem><para> | ||
1417 | <emphasis><filename>do_install_disk()</filename>:</emphasis> | ||
1418 | Called after all partitions have been prepared and | ||
1419 | assembled into a disk image. | ||
1420 | This method provides a hook to allow finalization | ||
1421 | of a disk image (e.g. writing an MBR). | ||
1422 | </para></listitem> | ||
1423 | <listitem><para> | ||
1424 | <emphasis><filename>do_stage_partition()</filename>:</emphasis> | ||
1425 | Special content-staging hook called before | ||
1426 | <filename>do_prepare_partition()</filename>. | ||
1427 | This method is normally empty.</para> | ||
1428 | |||
1429 | <para>Typically, a partition just uses the passed-in | ||
1430 | parameters (e.g. the unmodified value of | ||
1431 | <filename>bootimg_dir</filename>). | ||
1432 | However, in some cases, things might need to be | ||
1433 | more tailored. | ||
1434 | As an example, certain files might additionally | ||
1435 | need to be taken from | ||
1436 | <filename>bootimg_dir + /boot</filename>. | ||
1437 | This hook allows those files to be staged in a | ||
1438 | customized fashion. | ||
1439 | <note> | ||
1440 | <filename>get_bitbake_var()</filename> | ||
1441 | allows you to access non-standard variables | ||
1442 | that you might want to use for this | ||
1443 | behavior. | ||
1444 | </note> | ||
1445 | </para></listitem> | ||
1446 | </itemizedlist> | ||
1447 | </para> | ||
1448 | |||
1449 | <para> | ||
1450 | You can extend the source plug-in mechanism. | ||
1451 | To add more hooks, create more source plug-in methods | ||
1452 | within <filename>SourcePlugin</filename> and the | ||
1453 | corresponding derived subclasses. | ||
1454 | The code that calls the plug-in methods uses the | ||
1455 | <filename>plugin.get_source_plugin_methods()</filename> | ||
1456 | function to find the method or methods needed by the call. | ||
1457 | Retrieval of those methods is accomplished by filling up | ||
1458 | a dict with keys that contain the method names of interest. | ||
1459 | On success, these will be filled in with the actual | ||
1460 | methods. | ||
1461 | See the Wic implementation for examples and details. | ||
1462 | </para> | ||
1463 | </section> | ||
1464 | |||
1465 | <section id="wayland"> | 1258 | <section id="wayland"> |
1466 | <title>Wayland</title> | 1259 | <title>Wayland</title> |
1467 | 1260 | ||