summaryrefslogtreecommitdiff
path: root/README.rst
blob: e2d544544c71944e139c227710d061220d98922b (plain) (blame)
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
=======================================
 README for Adélie Linux Base File Set
=======================================
:Authors:
 * **A. Wilcox**, maintainer / developer
 * **Elizabeth Myers**, developer
 * **The FreeBSD project and its contributors**, files in /etc
:Status:
 Production
:Copyright:
 © 2016 Adélie Linux.  BSD open source license.



Introduction
============

This distribution contains the base file set needed for running Adélie Linux.
Its contents are installed to the root file system.


License
```````
The Adélie Linux project typically licenses its original source code under the
permissive, open NCSA license.  However, since the project has found no usable
copies of some files needed for /etc licensed under such a license, it has been
deemed necessary to seek outside projects for these files.

The closest project that met the criteria of freely licensed and usable files
was FreeBSD; therefore, the entire base file set is licensed under the terms of
the 3-clause BSD license.


Changes
```````
Any changes to this repository must be reviewed before being pushed to the
master branch.  There are no exceptions to this rule.  For security-sensitive
updates, contact the Security Team at sec-bugs@adelielinux.org.



Background
==========

The ``baselayout`` package from the upstream Gentoo project is deficient in a
number of ways.  It was determined to be fairly inflexible, especially relating
to forcing the installation of a modprobe.d directory with deprecated aliases.
It also installs Gentoo-specific release files (including the
``/etc/gentoo-release`` file and the contents of ``/etc/os-release``), and
makes assumptions about shell environments that may not exist on Adélie.  This
led directly to the creation of this project.



Assumptions and Dependencies
============================

#. It is assumed that the target computer is running a Unix-compatible
   operating environment.

#. It is assumed that there is no other software distribution installed on the
   target computer.  However, an older version of Adélie may be installed.

#. This project must supply an ``/etc/lsb-release`` file compliant with the
   `Linux Standard Base`__, which at the time of this writing is at version
   5.0.
__ http://refspecs.linux-foundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/execenvfhs.html

#. This project must comply with the `Filesystem Hierarchy Standard`__,
   which at the time of this writing is at version 3.0.
__ http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.html




Scope and Limitations
=====================

This section is informational and contains an overall roadmap for the
development of this project.


Initial release
```````````````

Version 1.0 must be fully usable on all Tier I architectures specified for the
Adélie Linux project.  It must render the system operable and compliant with
the Filesystem Hierarchy Standard, version 3.0.

Future versions of 1.x may add support for non-Tier I architectures, if such
support is necessary in this project.  It is not anticipated to include any
architecture- or machine-specific objects in this project.


Secondary release
`````````````````

If user demand is present for a port of the Adélie system to a different kernel
such as FreeBSD is present, changes to this project to ensure compatibility
with such a system may begin during the 2.x version cycle.


Subsequent releases
```````````````````

Newer versions of the LSB or FHS standards may require tweaks or changes to
this project.  They will be reviewed and the changes required will be
determined if and when such standard updates are published.


Limitations and exclusions
``````````````````````````

The following portions of the FHS and LSB are purposefully ignored by this
project, for the reason specified.

Executables in ``/bin``
:::::::::::::::::::::::
The executables specified in FHS §3.4.2 and §3.4.3 are excluded from this
project as it is assumed these executables are installed by other packages
included in the base software distribution.

The single executable specified in FHS §6.1.2 is specified in a way that makes
it ambiguous if it is always required or only required on computers containing
a serial port.  Either way, this executable is provided by a separate package
from a separate project and is also excluded from this project.

Files in ``/etc``
:::::::::::::::::
Some files specified as optional in FHS §3.7.3 are not included in this project
as they are better handled by their respective packages, including:

* ``X11`` - handled by the ``xorg-server`` package.

* ``csh.login`` - handled by the ``tcsh`` package.

* ``exports`` - handled by the ``nfs-utils`` package.

* ``fstab`` and ``resolv.conf`` - handled by Project Horizon.

* ``ftpusers`` - handled by FTP daemon packages.

* ``gateways`` - handled by the ``netkit-routed`` package.

* ``gettydefs`` - handled by the ``mgetty`` or ``mingetty`` package.

* ``group`` and ``passwd`` - handled by the ``shadow`` package.

* ``host.conf`` - this file is glibc-specific.

* ``hosts.allow`` and ``hosts.deny`` - handled by the ``tcp-wrappers`` package.

* ``hosts.equiv`` - handled by the ``netkit-rsh`` package.

* ``hosts.lpd`` and ``printcap`` - handled by printer packages.

* ``inetd.conf`` - handled by inetd packages.

* ``inittab`` - handled by the ``sysvinit`` package.

* ``mtools.conf`` - handled by the ``mtools`` package.

* ``rpc`` - handled by the ``librpc`` package.

* ``shells`` - automatically generated by ``apk`` on shell installation.

* ``syslog.conf`` - handled by syslog packages that require it.

``/etc/cron.*`` tree
::::::::::::::::::::
This set of directories as specified in LSB-Core §18.2 is not included in this
project, as any package that satisfies the ``cron`` virtual shall create it.

``/etc/init.d`` directory
:::::::::::::::::::::::::
This directory specifed in LSB-Core §18.2 is created by the ``openrc`` package
and is not included in this project.

.. warning::
   Do we know what s6 does?

The ``/etc/mtab`` file
::::::::::::::::::::::
The ``/etc/mtab`` file is provided as a symlink to /proc/self/mounts only.
Support for the ``/etc/mtab`` file being a regular file is not provided.
This appears to be in line with FHS §3.7.3.

Files in ``/lib``
:::::::::::::::::
While FHS §3.9.2 is ambiguous on whether ``/lib/libc.so.*`` is required when
``/lib/ld*`` is present or not, this project *does* supply a symlink called
``/lib/libc.so.1``.

It is assumed that the symlink ``/lib/cpp`` as specified in FHS §3.9.2 is
provided by ``gcc``.

The directory ``/lib/modules`` specified by FHS §3.9.3 is provided by the
``easy-kernel-modules`` package on systems where it is installed.

Executables in ``/sbin``
::::::::::::::::::::::::
The executables specified in FHS §3.16.2 and §3.16.3 are excluded from this
project as it is assumed these executables are installed by other packages
included in the base software distribution.