aboutsummaryrefslogtreecommitdiffstats
path: root/README
blob: 7211beaba6395356f9495c2dea9baa7621e843f9 (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
Machine Setup Tool
==================

Machine Setup Tool provides ability to configure a BSP image for a particular
platform or machine. At the boot time, it customizes a BSP OS image
with the provided machine configuration. It also has ability to detect or
select the target platform at boot time.

The development of this utility has been inspired by the zaurusd project.


Supported features
==================

* Ability to provide the machine configuration files in a separate layer.
* Ability to provide a custom list of supported machines.
* Ability to detect the target machine at boot time.
* Ability to select the target machine via a user prompt at boot time.
* Ability to specify the target machine on kernel command line from a bootloader
* Ability to specify and select a default machine configuration on boot prompt timeout
* Ability to reconfigure a previously configured image.
* The following configuration items can be specified for the target machines.
  * Formfactor configuration file
  * Default sink device id for pulseaudio
  * Default source device id for pulseaudio
  * ALSA configuration file
  * Predefined ALSA state file
  * Xorg configuration file
  * Network interfaces configuration file
  * Touchscreen calibration file
  * Xinput-calibrator touchscreen calibration file
  * A list of kernel modules for automatic boot time loading
  * A list of kernel modules to blacklist from loading
  * Extra kernel boot parameters
  * Serial port configuration for the syslinux bootloader
  * Serial port configuration for the grub bootloader
  * List of any additional setup scripts to be run at setup time
  * Configuration and ability to reboot the image after the setup process


Usage
=====

The sources of the Machine Setup Tool does not contain machine configuration
for any target. Users are expected to create and maintain their machine
configurations separately. For reference a set of sample machine
configurations are provided in the config/sample/ directory of the sources.
As seen in the sample, the main machine configuration file is specified by
name "mymachine.vars", which specifies rest of the needed configuration
files for that machine. All the machine configuration files reside at
location /etc/machinesetuptool/config/ on the target. Each supported target
machine need to have a directory with supported configuration files at this
location. For reference take a look at config/sample/mymachine/mymachine.vars
and other files in the sample config directory in sources.

In addition to the target machine configuration files provided at the
/etc/machinesetuptool/config location, the default settings for the tool must
be provided. The list of target machines supported, the default machine to
select on boot prompt timeout,and the target machine selection is specified in
the /etc/machinesetuptool/defaults file. Take a look at defaults file in the
sources for reference. This file need to be customized as per the supported
target machines. The target machine can also be overridden with the
target_machine parameter in the kernel command line, which can be tweaked
from the bootloader.
  For Example: target_machine=nuc or target_machine=detect_ask


If you want automatic detection of the target machine, then in addition to the
above configuration, a script named detect-machine need to be provided, which
can detect the supported target machines and define the MACHINE variable
accordingly. The detect-machine script need to be placed on the target at this
location: /etc/machinesetuptool/scripts/detect-machine . For reference the
sources contain an empty detect-machine script.


Future Development
==================

The framework of the tool is generic, and it can easily be expanded as needed
to support additional features. While adding new features the back-words
compatibility with existing code base should be considered.


Contributing to the project
===========================

If you want to contribute to the project or want to discuss about any features
or communicate about anything on the project, contact the developers listed
in the AUTHORS file.