Compare commits

..
Author SHA1 Message Date
Serge Schneider 68cdf34cb4 Add xz-utils dependency
Closes #90
2017-07-28 13:22:03 +01:00
TJ Rana 3441133d1c Corrected various typos (#91)
* Rename License.md to LICENSE

* Correct typos

* Clean up code layout

Organize layout with extra lines
2017-07-27 12:11:07 +02:00
Claus Strasburger fe45b73987 Added docker-compose.yml for easy apt-cacher-ng startup 2017-07-17 12:21:37 +02:00
Claus Strasburger bab0fe3b0d Docker build: move to debian stretch 2017-07-17 12:21:28 +02:00
Russ Kubes 4d65b2b357 Export-image: Only disable metadata_csum feature if it's possibly enabled. 2017-07-17 11:36:43 +02:00
Serge Schneider 137efd2379 Update release notes 2017-07-10 14:29:11 +01:00
Serge Schneider dd7de2554c Update release notes 2017-07-05 11:23:54 +01:00
Serge Schneider 234c4b7937 Export-image: disable metadata_csum for compatibility with older SD card copiers 2017-07-03 16:40:23 +01:00
Serge Schneider be2018ee5f README: Add stage 5 description 2017-06-27 13:16:41 +01:00
Andrew Smith cdf1cf2aba Also use -v in error message 2017-06-27 13:10:09 +01:00
Andrew Smith 22c4105b57 Tell docker to delete the volume as well
Addresses #62

Because of the use of volumes the .img files (and everything else) will stay around on disk even when you do `docker rm pigen_work`. Passing `-v` deletes the volume as well and frees up disk space.
2017-06-27 13:10:09 +01:00
Jacob Siverskog d2f88a6e4f Update stage specification example
The previous example failed for me due to a missing SKIP in
stage5. While at it, complete the example with all steps needed to get
an image generated.
2017-06-27 13:09:40 +01:00
Thomas Phillips c92638438a Fixed running docker script from within pwd containing spaces 2017-06-27 13:08:08 +01:00
Thomas Phillips 50e5c01f57 Image build date now honours timezone 2017-06-27 13:06:50 +01:00
Serge Schneider a0060bd475 export-image: increase free space padding 2017-06-21 10:56:07 +01:00
Serge Schneider d2b8d634b9 export-image: switch from fallocate to truncate 2017-06-21 10:46:10 +01:00
Serge Schneider d347d8d5f7 stage0: configure apt before locales 2017-06-21 08:55:30 +01:00
Serge Schneider 530b66fd3f bootstrap: cope with NFS and FUSE filesystems 2017-06-20 16:17:12 +01:00
Serge Schneider 02728fe65e export-image: use apparent size when calculating disk usage 2017-06-20 16:13:59 +01:00
Serge Schneider e583c18eba stage4: install python3-thonny 2017-06-20 16:12:32 +01:00
Serge Schneider 046db2d3d3 NOOBS: update kernel version number 2017-06-20 16:11:17 +01:00
Serge Schneider f9637fb24e Update release notes 2017-05-15 16:46:18 +01:00
Serge Schneider 921202e371 stage4: add /etc/mtab symlink 2017-05-15 16:40:31 +01:00
Serge Schneider dc7b589e7a Move rpi-update from stage3 to stage2 2017-05-15 15:46:59 +01:00
Serge Schneider 3c0b364028 stage0: Install locales
fixes #65
2017-05-15 14:48:25 +01:00
Serge Schneider 51f27e752c stage4: Add Thonny 2017-05-10 13:43:50 +01:00
Serge Schneider f89ebe2382 stage4: Add Scratch 2 2017-05-10 13:43:50 +01:00
Serge Schneider d64c21bfc9 stage4: Add pimoroni's packages 2017-05-10 13:43:50 +01:00
Ben Nuttall 7bbaac3344 Shorten config.txt url
Because why not? :)
2017-05-10 13:32:43 +01:00
Serge Schneider 8e377c407f stage0: Verify Releases during bootstrap
Fixes #5
2017-05-10 13:09:20 +01:00
Serge Schneider 4e5dc43a36 stage4: Install 'git' instead of transitional package 'git-core'
Fixes #11
2017-05-08 16:49:13 +01:00
T. Joseph Carter d729fc2dbb README.md: Describe more config variables, cleanup
Added some documentation of environment variables to README.md,
specifically WORK_DIR and DEPLOY_DIR.  Explicitly did not include
SCRIPT_DIR at this time because that appears to require some small work
before it can be changed.

Took the chance for some other syntax cleanups while I was at it, mostly
breaking long lines and inserting whitespace where some Markdown parsers
require it.
2017-05-08 16:25:04 +01:00
Serge Schneider 0ee2578bc6 export-noobs: replace all spaces with underscores in OS icon file 2017-04-03 16:39:20 +01:00
Serge Schneider fa1e67f92e export-noobs: rename Raspbian.png to match NOOBS_NAME 2017-04-03 16:19:20 +01:00
Serge Schneider 7360f24430 Add a 4GB image 2017-04-03 16:01:13 +01:00
Serge Schneider 6c146a7bb7 Clean up clean up 2017-04-03 16:01:13 +01:00
Serge Schneider c0a5b85f8f Update release notes 2017-04-03 16:01:13 +01:00
Benjamin Parzella 762e20cc0a Minor error in stage2 sys-tweaks debconf file
Seems like there is a misplaced line break
2017-04-03 15:59:16 +01:00
Mike Roberts 000e61f84d Updated {i}-run-chroot script filename to match {i}-run.sh format 2017-03-20 15:53:55 +01:00
David C Wang 16b3133f46 Make WORK_DIR and DEPLOY_DIR configurable through config file 2017-03-14 14:00:28 +00:00
Serge Schneider 9cffa42a35 config.txt: update documentation URL 2017-03-13 17:46:14 +00:00
Serge Schneider 8373e58195 build.sh: execute postrun.sh, if executable 2017-03-13 17:44:31 +00:00
Serge Schneider 1f1ddb5f13 Specify additional variables in EXPORT_* files 2017-03-13 17:39:58 +00:00
Serge Schneider 8f22f2f27e stage2: install libpam-chksshpwd 2017-03-13 17:31:49 +00:00
Serge Schneider 718a4e8c21 Switch to PARTUUID 2017-03-07 15:14:03 +00:00
Serge Schneider 8e74b4f15c Revert "Enable pi-gen build when "pi-gen/work" dir is a symlink"
This reverts commit 40b5af925b.
2017-03-06 14:37:13 +00:00
Serge Schneider 8f7c537d71 partition_setup.sh: Only copy files 2017-03-06 11:58:48 +00:00
David C Wang 40b5af925b Enable pi-gen build when "pi-gen/work" dir is a symlink
* Occasionally, it is necessary to symbolically link the pi-gen/work
  directory to a different place on the filesystem.  This is true if
  the current partition is low on space, or when building within
  vagrant virtual machine shared mounts which do not support all
  regular fs operations.
* Without this change, the pi-gen build will fail to unmount because
  the OS 'mount' command returns canonical paths which fails to match
  the symbolically linked path to 'work' dir.
2017-03-06 11:56:12 +00:00
Serge Schneider 7748ed0df1 Copy wpa_supplicant.conf from NOOBS 2017-03-06 11:49:13 +00:00
Serge Schneider b0be14afdf Update release notes 2017-03-06 09:27:48 +00:00
Serge Schneider daa9e35ada Copy ssh and ssh.txt to boot partition 2017-03-06 09:27:48 +00:00
Serge Schneider a68a0713e6 Format boot partition as FAT32 2017-03-06 09:27:48 +00:00
Serge Schneider d664bfed4b Update release notes 2017-03-06 09:27:48 +00:00
Serge Schneider 5cccd741fe stage4: install RealVNC with no recommends 2017-03-06 09:27:48 +00:00
Serge Schneider 3fa66a0699 Update release notes 2017-03-06 09:27:48 +00:00
Serge Schneider 37902fb114 export-image: Format /boot as FAT32 2017-03-06 09:27:48 +00:00
Serge Schneider 51fbf45dd7 stage2: Manually install /etc/default/console-setup
debconf alone does not seem to work
2017-03-06 09:27:48 +00:00
Ross Schulman 8f017cb69a Building in a different direction by replacing stage folders (#51) 2017-02-26 18:12:37 +00:00
Sam Holmes a45a061ec4 Add README warning for binfmt-support requirement (#46) 2017-02-08 16:10:11 +00:00
Claus F. Strasburger 667318116a Added Docker support (#40)
* Added Docker support

- replaced necessity for devicemapper (through kpartx) by using parted and
  losetup with offsets
- added Dockerfile
- added dependency for parted and grep
- added hints to README.md
- common: loop through unmounts, fix shellcheck warnings

* stage2: use debconf instead of console-setup patch. Fixes #41
2017-01-23 12:44:03 +00:00
XECDesign bc8a74858e Merge pull request #43 from sam3d/dev
Add stage specification documentation
2017-01-20 17:51:55 +00:00
Sam Holmes a1c26242f6 Add stage specification instructions 2017-01-20 17:38:41 +00:00
Sam Holmes c5e36bc86a Tidy up README hierarchy further 2017-01-20 17:38:41 +00:00
Sam Holmes 9f5cfdea6b Update README markdown formatting
The additional space between the # at the beginning of a section and
title conforms to correct markdown spec (and works in all markdown
renderers, as opposed to just GitHub)
2017-01-20 17:38:37 +00:00
Serge Schneider 1806504983 stage2: Add apt-transport-https
Fixes RPi-Distro/repo#52
2017-01-12 14:24:43 +00:00
Serge Schneider a9c27d27bd stage4: don't copy ui-mods files 2016-12-06 16:32:33 +00:00
XECDesign d0020af839 README.md: Add libcap2-bin as a dependency 2016-12-05 12:32:19 +00:00
XECDesign 09a29f745c Merge pull request #35 from martignoni/dev
Add bsdtar to dependencies
2016-12-05 12:31:09 +00:00
Nicolas Martignoni 2b3cb8ff72 Add bsdtar to dependencies 2016-12-04 20:38:28 +01:00
Serge Schneider 06ba664bfc export-noobs: umount boot before archiving root
bsdtar does not add directories which are mountpoints. This removes /boot from
the archive and prevents init_resize.sh from working.
2016-11-29 14:42:40 +00:00
Serge Schneider 848cbf48a0 partition_setup.sh: Don't cut off parameters added by pix-plym-splash 2016-11-29 14:42:14 +00:00
Serge Schneider 21a681692a Port regenerate_ssh_host_key to a systemd service 2016-11-24 20:07:05 +00:00
Serge Schneider c5e4f61df2 regenerate_ssh_host_keys: run in the foreground 2016-11-24 17:41:10 +00:00
Serge Schneider 58e7e4023e Disable SSH by default 2016-11-23 16:15:22 +00:00
Serge Schneider 845496123b export-noobs: use gnutar format for bsdtar 2016-11-22 12:12:40 +00:00
Serge Schneider b84399f9aa Update release notes 2016-11-21 18:33:26 +00:00
Serge Schneider 09590eba4a export-noobs: use bsdtar 2016-11-21 18:00:51 +00:00
Serge Schneider c4fb032d3b Use capsh to ensure file capabilities aren't set 2016-11-14 23:55:45 +00:00
Serge Schneider db10424a9b stage4: add pprompt 2016-11-14 18:04:10 +00:00
Serge Schneider 354be6e00b Fix .config permissions 2016-11-14 18:03:57 +00:00
Serge Schneider 88622b63d3 Remove unnecessary lightdm patch 2016-11-14 18:03:12 +00:00
XECDesign dd72c202ce Merge pull request #30 from turbobytes/dev
adding mkdosfs to depends file
2016-11-14 16:24:44 +00:00
Sajal Kayan a6c7ad7736 adding mkdosfs to depends file 2016-11-14 23:17:06 +07:00
XECDesign efb26e03d8 adding dosfstools as a build dependency (#29) 2016-11-14 15:43:56 +00:00
Sajal Kayan ed1643bcda adding dosfstools as a build dependency 2016-11-14 22:38:59 +07:00
Serge Schneider 0908332966 stage4: remove autologin patch (added to lightdm) 2016-10-27 17:43:05 +01:00
Serge Schneider 5854406f80 stage4: remove 40-scratch.rules (added to nuscratch) 2016-10-27 17:43:05 +01:00
Serge Schneider c017c51d46 stage3: pre-seed rpi-chromium-mods/adobe note 2016-10-27 17:43:05 +01:00
Serge Schneider e06f61b573 stage2: remove sudoers modification (merged into raspberrypi-sys-mods) 2016-10-18 16:46:21 +01:00
Serge Schneider 801c8cac74 stage3: don't install udisks 2016-10-18 15:25:54 +01:00
Serge Schneider 71793ce183 stage2: install raspberrypi-net-mods 2016-10-18 15:23:02 +01:00
Serge Schneider 232d0a48a0 Remove desktop-background setting (not used by PIXEL) 2016-10-18 15:23:02 +01:00
Serge Schneider e800956bd8 Remove changes transferred into raspberrypi-ui-mods 2016-10-18 15:23:02 +01:00
Serge Schneider 24ad8c2adb Revert 7f0c59d5c1 2016-10-14 15:00:12 +01:00
chz^3 017d3a4341 rsync single file system (#25)
If proc is mounted in rootfs (e.g., via chroot), rsync will try copying kcore
when permitted to cross file system boundaries.
2016-10-09 22:09:25 +01:00
Joseph Carter d1f766d2b8 Fix umount_image (#22)
* export-noobs/prerun.sh: Use nested mountpoint

While it seems elegant and intuitive to use separate bootfs and rootfs
mountpoints for compressing the partitions, doing so violates a
precondition of unmount_image that they be mounted as a tree.  This
causes the image to not be properly unmounted and detached.  A better
solution might be to pack up the previous stage's chroot directory, but
that rework can wait for the time being.

scripts/common.sh: Output device name correctly

A misplaced ) in unmount_image caused the loop device to be incorrectly
identified, resulting in a fair bit of chaos trying to unmount other
filesystems on /dev/mapper devices.  Such as / on a LUKS-encrypted
installation, for example.  The unmount will fail as it should and
build.sh will abort the build without any cleanup.  Best to avoid that.

These changes close RPi-Distro/pi-gen#19
2016-10-06 10:14:43 +01:00
Joseph Carter 1d18e27f9c README.md: Improve config variable documentation (#24) 2016-10-05 22:56:45 +01:00
Greg MacLellan 7f0c59d5c1 Add MAX_STAGE and RUN_STAGE variables (#21)
* Add MAX_STAGES variable

If set, only runs up to that stage

* Show "Skipping stageX" message for all skipped stages

* Add RUN_STAGE variable to run a single stage

* Document RUN_STAGE and MAX_STAGE

* Removed SKIP file support for main stage
2016-10-05 09:32:03 +01:00
Serge Schneider 62406bad92 stage2: Noobs export 2016-09-21 04:59:49 +10:00
Serge Schneider 7c38f07bb3 stage4: add Sense HAT emulator 2016-09-21 04:59:48 +10:00
Serge Schneider d5f1040054 stage3: add chromium 2016-09-21 04:59:48 +10:00
Serge Schneider 14914c7075 stage4: add aditional python packages 2016-09-21 04:55:53 +10:00
Serge Schneider 4a76f38f45 Add RealVNC 2016-09-21 04:55:53 +10:00
Serge Schneider a1f89797ee stage3: add rfkill (needed for bluetooth plugin) 2016-09-19 15:01:17 +10:00
Serge Schneider ea205dc387 Remove 98-rpi.conf (now handled by raspberrypi-sys-mods) 2016-09-15 15:30:44 +10:00
Serge Schneider a07b9c5c4e dependencies_check: add missing bracket (closes issue #17). 2016-09-15 13:16:13 +10:00
Joseph Carter 0245cbb958 Dependency checks + important bugfix (#16) 2016-09-14 20:07:52 +10:00
XECDesign 8605ca74b2 Create License.md 2016-09-14 01:29:07 +10:00
Joseph Carter 6ee83b0eab Implement Landrash's suggestions for README.md (#15) 2016-09-11 13:16:21 +10:00
Joseph Carter abc3e45727 build.sh: Support comments in package files (#14)
* build.sh: Support comments in package files

This patch allows the use of hash comments inside patch files.  It's a
little ugly, but it strips comments and collapses all whitespace down to
single space characters between package names.  It handles comments
anywhere in a line, as well.

Was unsure if \ continuation of the long sed line or the inclusion of a
couple of lines of comments explaining what the sed expressions are
doing would be appreciated, so didn't include them in this patch.

* build.sh: whitespace fix

* build.sh: Use sed script for packages files

Broke the sed expressions out of build.sh and put them their own
documented sed script.  This greatly improves readability and avoids
build.sh getting messier.

Broke the substitution command into two separate subs.  The first just
deletes comments, and the second collapses all whitespace into a single
space.  This too is easier to read, and catches a couple of edge cases
that would result it not all whitespace being collapsed.  The result may
still have (one) leading and/or trailing space, which is acceptable.
2016-09-08 06:32:36 +10:00
Joseph Carter b9b8df3d11 README.md: Working toward basic documentation (#10)
* README.md: document config file

Still pretty sparse, but as this bit is necessary to actually use
pi-gen, here it is.

* README.md: Overview of Raspbian's stages

* README.md: Stages -> Raspbian Stages + heading

Decided that the Stages heading probably made more sense as being
retitled to refer specifically to Raspbian since it has no direct
bearing on pi-gen itself which could produce any Debianish system for
the pi, and also that there ought to be a Stage Anatomy section first
talking about the nuts and bolts of what goes into these stages.

Stage Anatomy is just a heading for now.

* README.md: Make Config section less conversational

Left the stage overview as it was since it's intended more as a plain
language explanation than a technically complete look.  I believe that
kind of information is useful to have, but perhaps as README.md becomes
longer it may be advisable to move it to another location.
2016-09-05 14:02:39 +10:00
XECDesign 9cf2f2efe6 Merge pull request #9 from iKarith/dev
Minor README.md updates
2016-09-02 10:03:47 +10:00
T. Joseph Carter fa88d07848 README.md: Image and NOOBS export exist now
Document that the TODO items of exporting images and NOOBS packages have
been implmented.
2016-09-01 15:35:22 -07:00
T. Joseph Carter 0ff507a048 README.md: Note dependency on pxz
The export of a NOOBS image requires the pxz program.
2016-09-01 15:33:33 -07:00
XECDesign 2413210a6f Merge pull request #8 from staroselskii/pr-fix-network-interfaces-for-lite-image
Fix for patchsets with same names in substages
2016-07-30 02:41:03 +10:00
Staroselskii Georgii 9b0a793dfb build.sh: fix for patchsets with same names in substages
In that case (i.e. stage2/01-sys-tweaks and stage2/02-net-tweaks) a
directory with a same name (00-pc) is getting created for both quilt
patch sets. This might yield a situation when second patch set is not
applied.

The fix is to come up with a more sophisticated naming convention for intermediate
patchset directory (which .pc symlinks to) and create separate
directories for each patchset.
2016-07-29 18:51:55 +03:00
Serge Schneider dddb5b5f74 export-noobs: ensure STAGE_WORK_DIR exists 2016-05-27 13:22:06 +01:00
88 changed files with 719 additions and 295 deletions
+3
View File
@@ -0,0 +1,3 @@
output/
work/
deploy/
+2
View File
@@ -1,6 +1,8 @@
deploy/*
work/*
config
postrun.sh
SKIP
.pc
*-pc
apt-cacher-ng/
+12
View File
@@ -0,0 +1,12 @@
FROM debian:stretch
RUN apt-get -y update && \
apt-get -y install \
git vim parted \
quilt realpath qemu-user-static debootstrap zerofree pxz zip dosfstools \
bsdtar libcap2-bin rsync grep udev xz-utils \
&& rm -rf /var/lib/apt/lists/*
COPY . /pi-gen/
VOLUME [ "/pi-gen/work", "/pi-gen/deploy"]
+13
View File
@@ -0,0 +1,13 @@
Copyright (c) 2015 Raspberry Pi (Trading) Ltd.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Regular → Executable
+171 -6
View File
@@ -1,10 +1,175 @@
#TODO
# pi-gen
1. Image export
1. NOOBS export
1. Simplify running a single stage
_Tool used to create the raspberrypi.org Raspbian images_
### TODO
1. Documentation
#Dependencies
`quilt kpartx realpath qemu-user-static debootstrap zerofree`
## Dependencies
On Debian-based systems:
```bash
apt-get install quilt parted realpath qemu-user-static debootstrap zerofree pxz zip \
dosfstools bsdtar libcap2-bin grep rsync xz-utils
```
The file `depends` contains a list of tools needed. The format of this
package is `<tool>[:<debian-package>]`.
## Config
Upon execution, `build.sh` will source the file `config` in the current
working directory. This bash shell fragment is intended to set needed
environment variables.
The following environment variables are supported:
* `IMG_NAME` **required** (Default: unset)
The name of the image to build with the current stage directories. Setting
`IMG_NAME=Raspbian` is logical for an unmodified RPi-Distro/pi-gen build,
but you should use something else for a customized version. Export files
in stages may add suffixes to `IMG_NAME`.
* `APT_PROXY` (Default: unset)
If you require the use of an apt proxy, set it here. This proxy setting
will not be included in the image, making it safe to use an `apt-cacher` or
similar package for development.
If you have Docker installed, you can set up a local apt caching proxy to
like speed up subsequent builds like this:
docker-compose up -d
echo 'APT_PROXY=http://172.17.0.1:3142' >> config
* `BASE_DIR` (Default: location of `build.sh`)
**CAUTION**: Currently, changing this value will probably break build.sh
Top-level directory for `pi-gen`. Contains stage directories, build
scripts, and by default both work and deployment directories.
* `WORK_DIR` (Default: `"$BASE_DIR/work"`)
Directory in which `pi-gen` builds the target system. This value can be
changed if you have a suitably large, fast storage location for stages to
be built and cached. Note, `WORK_DIR` stores a complete copy of the target
system for each build stage, amounting to tens of gigabytes in the case of
Raspbian.
* `DEPLOY_DIR` (Default: `"$BASE_DIR/deploy"`)
Output directory for target system images and NOOBS bundles.
A simple example for building Raspbian:
```bash
IMG_NAME='Raspbian'
```
## Docker Build
```bash
vi config # Edit your config file. See above.
./build-docker.sh
```
If everything goes well, your finished image will be in the `deploy/` folder.
You can then remove the build container with `docker rm -v pigen_work`
If something breaks along the line, you can edit the corresponding scripts, and
continue:
```bash
CONTINUE=1 ./build-docker.sh
```
There is a possibility that even when running from a docker container, the
installation of `qemu-user-static` will silently fail when building the image
because `binfmt-support` _must be enabled on the underlying kernel_. An easy
fix is to ensure `binfmt-support` is installed on the host machine before
starting the `./build-docker.sh` script (or using your own docker build
solution).
## Stage Anatomy
### Raspbian Stage Overview
The build of Raspbian is divided up into several stages for logical clarity
and modularity. This causes some initial complexity, but it simplifies
maintenance and allows for more easy customization.
- **Stage 0** - bootstrap. The primary purpose of this stage is to create a
usable filesystem. This is accomplished largely through the use of
`debootstrap`, which creates a minimal filesystem suitable for use as a
base.tgz on Debian systems. This stage also configures apt settings and
installs `raspberrypi-bootloader` which is missed by debootstrap. The
minimal core is installed but not configured, and the system will not quite
boot yet.
- **Stage 1** - truly minimal system. This stage makes the system bootable by
installing system files like `/etc/fstab`, configures the bootloader, makes
the network operable, and installs packages like raspi-config. At this
stage the system should boot to a local console from which you have the
means to perform basic tasks needed to configure and install the system.
This is as minimal as a system can possibly get, and its arguably not
really usable yet in a traditional sense yet. Still, if you want minimal,
this is minimal and the rest you could reasonably do yourself as sysadmin.
- **Stage 2** - lite system. This stage produces the Raspbian-Lite image. It
installs some optimized memory functions, sets timezone and charmap
defaults, installs fake-hwclock and ntp, wifi and bluetooth support,
dphys-swapfile, and other basics for managing the hardware. It also
creates necessary groups and gives the pi user access to sudo and the
standard console hardware permission groups.
There are a few tools that may not make a whole lot of sense here for
development purposes on a minimal system such as basic Python and Lua
packages as well as the `build-essential` package. They are lumped right
in with more essential packages presently, though they need not be with
pi-gen. These are understandable for Raspbian's target audience, but if
you were looking for something between truly minimal and Raspbian-Lite,
here's where you start trimming.
- **Stage 3** - desktop system. Here's where you get the full desktop system
with X11 and LXDE, web browsers, git for development, Raspbian custom UI
enhancements, etc. This is a base desktop system, with some development
tools installed.
- **Stage 4** - Raspbian system meant to fit on a 4GB card. More development
tools, an email client, learning tools like Scratch, specialized packages
like sonic-pi, system documentation, office productivity, etc. This is the
stage that installs all of the things that make Raspbian friendly to new
users.
- **Stage 5** - The official Raspbian Desktop image. Right now only adds
Mathematica.
### Stage specification
If you wish to build up to a specified stage (such as building up to stage 2
for a lite system), place an empty file named `SKIP` in each of the `./stage`
directories you wish not to include.
Then remove the `EXPORT*` files from `./stage4` (if building up to stage 2) or
from `./stage2` (if building a minimal system).
```bash
# Example for building a lite system
echo "IMG_NAME='Raspbian'" > config
touch ./stage3/SKIP ./stage4/SKIP ./stage5/SKIP
rm stage4/EXPORT*
sudo ./build.sh # or ./build-docker.sh
```
If you wish to build further configurations upon (for example) the lite
system, you can also delete the contents of `./stage3` and `./stage4` and
replace with your own contents in the same format.
+77
View File
@@ -0,0 +1,77 @@
#!/bin/bash -e
DOCKER="docker"
set +e
$DOCKER ps >/dev/null 2>&1
if [ $? != 0 ]; then
DOCKER="sudo docker"
fi
if ! $DOCKER ps >/dev/null; then
echo "error connecting to docker:"
$DOCKER ps
exit 1
fi
set -e
config_mount=()
if [ -f config ]; then
config_mount=("-v" "$(pwd)/config:/pi-gen/config:ro")
source config
fi
CONTAINER_NAME=${CONTAINER_NAME:-pigen_work}
CONTINUE=${CONTINUE:-0}
if [ "$*" != "" ] || [ -z "${IMG_NAME}" ]; then
if [ -z "${IMG_NAME}" ]; then
echo "IMG_NAME not set in 'build'" 1>&2
echo 1>&2
fi
cat >&2 <<EOF
Usage:
build-docker.sh [options]
Optional environment arguments: ( =<default> )
CONTAINER_NAME=pigen_work set a name for the build container
CONTINUE=0 continue from a previously started container
EOF
exit 1
fi
CONTAINER_EXISTS=$($DOCKER ps -a --filter name="$CONTAINER_NAME" -q)
CONTAINER_RUNNING=$($DOCKER ps --filter name="$CONTAINER_NAME" -q)
if [ "$CONTAINER_RUNNING" != "" ]; then
echo "The build is already running in container $CONTAINER_NAME. Aborting."
exit 1
fi
if [ "$CONTAINER_EXISTS" != "" ] && [ "$CONTINUE" != "1" ]; then
echo "Container $CONTAINER_NAME already exists and you did not specify CONTINUE=1. Aborting."
echo "You can delete the existing container like this:"
echo " docker rm -v $CONTAINER_NAME"
exit 1
fi
$DOCKER build -t pi-gen .
if [ "$CONTAINER_EXISTS" != "" ]; then
trap "echo 'got CTRL+C... please wait 5s';docker stop -t 5 ${CONTAINER_NAME}_cont" SIGINT SIGTERM
time $DOCKER run --rm --privileged \
--volumes-from="${CONTAINER_NAME}" --name "${CONTAINER_NAME}_cont" \
-e IMG_NAME=${IMG_NAME}\
pi-gen \
bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static &&
cd /pi-gen; ./build.sh;
rsync -av work/*/build.log deploy/" &
wait
else
trap "echo 'got CTRL+C... please wait 5s'; docker stop -t 5 ${CONTAINER_NAME}" SIGINT SIGTERM
$DOCKER run --name "${CONTAINER_NAME}" --privileged \
-e IMG_NAME=${IMG_NAME}\
-v "$(pwd)/deploy:/pi-gen/deploy" \
"${config_mount[@]}" \
pi-gen \
bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static &&
cd /pi-gen; ./build.sh &&
rsync -av work/*/build.log deploy/" &
wait
fi
echo "Done! Your image(s) should be in deploy/"
+31 -15
View File
@@ -7,7 +7,7 @@ run_sub_stage()
for i in {00..99}; do
if [ -f ${i}-debconf ]; then
log "Begin ${SUB_STAGE_DIR}/${i}-debconf"
on_chroot sh -e - << EOF
on_chroot << EOF
debconf-set-selections <<SELEOF
`cat ${i}-debconf`
SELEOF
@@ -16,9 +16,9 @@ EOF
fi
if [ -f ${i}-packages-nr ]; then
log "Begin ${SUB_STAGE_DIR}/${i}-packages-nr"
PACKAGES=`cat $i-packages-nr | tr '\n' ' '`
PACKAGES="$(sed -f "${SCRIPT_DIR}/remove-comments.sed" < ${i}-packages-nr)"
if [ -n "$PACKAGES" ]; then
on_chroot sh -e - << EOF
on_chroot << EOF
apt-get install --no-install-recommends -y $PACKAGES
EOF
fi
@@ -26,9 +26,9 @@ EOF
fi
if [ -f ${i}-packages ]; then
log "Begin ${SUB_STAGE_DIR}/${i}-packages"
PACKAGES=`cat $i-packages | tr '\n' ' '`
PACKAGES="$(sed -f "${SCRIPT_DIR}/remove-comments.sed" < ${i}-packages)"
if [ -n "$PACKAGES" ]; then
on_chroot sh -e - << EOF
on_chroot << EOF
apt-get install -y $PACKAGES
EOF
fi
@@ -42,8 +42,9 @@ EOF
rm -rf *-pc
fi
QUILT_PATCHES=${SUB_STAGE_DIR}/${i}-patches
mkdir -p ${i}-pc
ln -sf ${i}-pc .pc
SUB_STAGE_QUILT_PATCH_DIR="$(basename $SUB_STAGE_DIR)-pc"
mkdir -p $SUB_STAGE_QUILT_PATCH_DIR
ln -snf $SUB_STAGE_QUILT_PATCH_DIR .pc
if [ -e ${SUB_STAGE_DIR}/${i}-patches/EDIT ]; then
echo "Dropping into bash to edit patches..."
bash
@@ -66,16 +67,17 @@ EOF
./${i}-run.sh
log "End ${SUB_STAGE_DIR}/${i}-run.sh"
fi
if [ -f ${i}-run-chroot ]; then
log "Begin ${SUB_STAGE_DIR}/${i}-run-chroot"
on_chroot sh -e - < ${i}-run-chroot
log "End ${SUB_STAGE_DIR}/${i}-run-chroot"
if [ -f ${i}-run-chroot.sh ]; then
log "Begin ${SUB_STAGE_DIR}/${i}-run-chroot.sh"
on_chroot < ${i}-run-chroot.sh
log "End ${SUB_STAGE_DIR}/${i}-run-chroot.sh"
fi
done
popd > /dev/null
log "End ${SUB_STAGE_DIR}"
}
run_stage(){
log "Begin ${STAGE_DIR}"
STAGE=$(basename ${STAGE_DIR})
@@ -126,12 +128,12 @@ if [ -z "${IMG_NAME}" ]; then
exit 1
fi
export IMG_DATE=${IMG_DATE:-"$(date -u +%Y-%m-%d)"}
export IMG_DATE=${IMG_DATE:-"$(date +%Y-%m-%d)"}
export BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
export SCRIPT_DIR="${BASE_DIR}/scripts"
export WORK_DIR="${BASE_DIR}/work/${IMG_DATE}-${IMG_NAME}"
export DEPLOY_DIR="${BASE_DIR}/deploy"
export WORK_DIR=${WORK_DIR:-"${BASE_DIR}/work/${IMG_DATE}-${IMG_NAME}"}
export DEPLOY_DIR=${DEPLOY_DIR:-"${BASE_DIR}/deploy"}
export LOG_FILE="${WORK_DIR}/build.log"
export CLEAN
@@ -146,6 +148,8 @@ export PREV_STAGE_DIR
export ROOTFS_DIR
export PREV_ROOTFS_DIR
export IMG_SUFFIX
export NOOBS_NAME
export NOOBS_DESCRIPTION
export EXPORT_DIR
export EXPORT_ROOTFS_DIR
@@ -155,6 +159,10 @@ export QUILT_NO_DIFF_TIMESTAMPS=1
export QUILT_REFRESH_ARGS="-p ab"
source ${SCRIPT_DIR}/common
source ${SCRIPT_DIR}/dependencies_check
dependencies_check ${BASE_DIR}/depends
mkdir -p ${WORK_DIR}
log "Begin ${BASE_DIR}"
@@ -166,13 +174,21 @@ done
CLEAN=1
for EXPORT_DIR in ${EXPORT_DIRS}; do
STAGE_DIR=${BASE_DIR}/export-image
IMG_SUFFIX=$(cat ${EXPORT_DIR}/EXPORT_IMAGE)
source "${EXPORT_DIR}/EXPORT_IMAGE"
EXPORT_ROOTFS_DIR=${WORK_DIR}/$(basename ${EXPORT_DIR})/rootfs
run_stage
if [ -e ${EXPORT_DIR}/EXPORT_NOOBS ]; then
source ${EXPORT_DIR}/EXPORT_NOOBS
STAGE_DIR=${BASE_DIR}/export-noobs
run_stage
fi
done
if [ -x postrun.sh ]; then
log "Begin postrun.sh"
cd "${BASE_DIR}"
./postrun.sh
log "End postrun.sh"
fi
log "End ${BASE_DIR}"
+13
View File
@@ -0,0 +1,13 @@
quilt
parted
realpath
qemu-arm-static:qemu-user-static
debootstrap
zerofree
pxz zip
mkdosfs:dosfstools
capsh:libcap2-bin
bsdtar
grep
rsync
xz:xz-utils
+10
View File
@@ -0,0 +1,10 @@
version: '2'
services:
apt-cacher-ng:
restart: unless-stopped
image: sameersbn/apt-cacher-ng:latest
ports:
- "3142:3142"
volumes:
- ./apt-cacher-ng:/var/cache/apt-cacher-ng
@@ -1,2 +1,3 @@
#!/bin/sh
exit 101
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash -e
on_chroot sh -e - <<EOF
on_chroot << EOF
apt-get update
apt-get -y dist-upgrade
apt-get clean
+1 -1
View File
@@ -1,3 +1,3 @@
#/bin/bash -e
#!/bin/bash -e
install -m 644 files/resolv.conf ${ROOTFS_DIR}/etc/
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash -e
IMG_FILE="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img"
IMGID="$(fdisk -l ${IMG_FILE} | sed -n 's/Disk identifier: 0x\([^ ]*\)/\1/p')"
BOOT_PARTUUID="${IMGID}-01"
ROOT_PARTUUID="${IMGID}-02"
sed -i "s/BOOTDEV/PARTUUID=${BOOT_PARTUUID}/" ${ROOTFS_DIR}/etc/fstab
sed -i "s/ROOTDEV/PARTUUID=${ROOT_PARTUUID}/" ${ROOTFS_DIR}/etc/fstab
sed -i "s/ROOTDEV/PARTUUID=${ROOT_PARTUUID}/" ${ROOTFS_DIR}/boot/cmdline.txt
@@ -2,11 +2,15 @@
IMG_FILE="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img"
on_chroot sh -e - <<EOF
on_chroot << EOF
/etc/init.d/fake-hwclock stop
hardlink -t /usr/share/doc
EOF
if [ -d ${ROOTFS_DIR}/home/pi/.config ]; then
chmod 700 ${ROOTFS_DIR}/home/pi/.config
fi
rm -f ${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache
rm -f ${ROOTFS_DIR}/usr/sbin/policy-rc.d
rm -f ${ROOTFS_DIR}/usr/bin/qemu-arm-static
@@ -14,6 +18,31 @@ if [ -e ${ROOTFS_DIR}/etc/ld.so.preload.disabled ]; then
mv ${ROOTFS_DIR}/etc/ld.so.preload.disabled ${ROOTFS_DIR}/etc/ld.so.preload
fi
rm -f ${ROOTFS_DIR}/etc/apt/sources.list~
rm -f ${ROOTFS_DIR}/etc/apt/trusted.gpg~
rm -f ${ROOTFS_DIR}/etc/passwd-
rm -f ${ROOTFS_DIR}/etc/group-
rm -f ${ROOTFS_DIR}/etc/shadow-
rm -f ${ROOTFS_DIR}/etc/gshadow-
rm -f ${ROOTFS_DIR}/var/cache/debconf/*-old
rm -f ${ROOTFS_DIR}/var/lib/dpkg/*-old
rm -f ${ROOTFS_DIR}/usr/share/icons/*/icon-theme.cache
rm -f ${ROOTFS_DIR}/var/lib/dbus/machine-id
true > ${ROOTFS_DIR}/etc/machine-id
ln -nsf /proc/mounts ${ROOTFS_DIR}/etc/mtab
for _FILE in $(find ${ROOTFS_DIR}/var/log/ -type f); do
true > ${_FILE}
done
rm -f "${ROOTFS_DIR}/root/.vnc/private.key"
update_issue $(basename ${EXPORT_DIR})
install -m 644 ${ROOTFS_DIR}/etc/rpi-issue ${ROOTFS_DIR}/boot/issue.txt
install files/LICENSE.oracle ${ROOTFS_DIR}/boot/
+29 -12
View File
@@ -1,4 +1,5 @@
#!/bin/bash -e
IMG_FILE="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img"
unmount_image ${IMG_FILE}
@@ -8,19 +9,19 @@ rm -f ${IMG_FILE}
rm -rf ${ROOTFS_DIR}
mkdir -p ${ROOTFS_DIR}
BOOT_SIZE=$(du -sh ${EXPORT_ROOTFS_DIR}/boot -B M | cut -f 1 | tr -d M)
TOTAL_SIZE=$(du -sh ${EXPORT_ROOTFS_DIR} -B M | cut -f 1 | tr -d M)
BOOT_SIZE=$(du --apparent-size -s ${EXPORT_ROOTFS_DIR}/boot --block-size=1 | cut -f 1)
TOTAL_SIZE=$(du --apparent-size -s ${EXPORT_ROOTFS_DIR} --exclude var/cache/apt/archives --block-size=1 | cut -f 1)
IMG_SIZE=$(expr $BOOT_SIZE \* 2 \+ $TOTAL_SIZE \+ 512)M
IMG_SIZE=$((BOOT_SIZE + TOTAL_SIZE + (800 * 1024 * 1024)))
fallocate -l ${IMG_SIZE} ${IMG_FILE}
fdisk ${IMG_FILE} > /dev/null 2>&1 <<EOF
truncate -s ${IMG_SIZE} ${IMG_FILE}
fdisk -H 255 -S 63 ${IMG_FILE} <<EOF
o
n
8192
+`expr $BOOT_SIZE \* 3`M
+$((BOOT_SIZE * 2 /512))
p
t
c
@@ -34,15 +35,31 @@ p
w
EOF
LOOP_DEV=`kpartx -asv ${IMG_FILE} | grep -E -o -m1 'loop[[:digit:]]+' | head -n 1`
BOOT_DEV=/dev/mapper/${LOOP_DEV}p1
ROOT_DEV=/dev/mapper/${LOOP_DEV}p2
PARTED_OUT=$(parted -s ${IMG_FILE} unit b print)
BOOT_OFFSET=$(echo "$PARTED_OUT" | grep -e '^ 1'| xargs echo -n \
| cut -d" " -f 2 | tr -d B)
BOOT_LENGTH=$(echo "$PARTED_OUT" | grep -e '^ 1'| xargs echo -n \
| cut -d" " -f 4 | tr -d B)
mkdosfs -n boot -S 512 -s 16 -v $BOOT_DEV > /dev/null
mkfs.ext4 -O ^huge_file $ROOT_DEV > /dev/null
ROOT_OFFSET=$(echo "$PARTED_OUT" | grep -e '^ 2'| xargs echo -n \
| cut -d" " -f 2 | tr -d B)
ROOT_LENGTH=$(echo "$PARTED_OUT" | grep -e '^ 2'| xargs echo -n \
| cut -d" " -f 4 | tr -d B)
BOOT_DEV=$(losetup --show -f -o ${BOOT_OFFSET} --sizelimit ${BOOT_LENGTH} ${IMG_FILE})
ROOT_DEV=$(losetup --show -f -o ${ROOT_OFFSET} --sizelimit ${ROOT_LENGTH} ${IMG_FILE})
echo "/boot: offset $BOOT_OFFSET, length $BOOT_LENGTH"
echo "/: offset $ROOT_OFFSET, length $ROOT_LENGTH"
ROOT_FEATURES="^huge_file"
if grep -q "metadata_csum" /etc/mke2fs.conf; then
ROOT_FEATURES="^metadata_csum,$ROOT_FEATURES"
fi
mkdosfs -n boot -F 32 -v $BOOT_DEV > /dev/null
mkfs.ext4 -O $ROOT_FEATURES $ROOT_DEV > /dev/null
mount -v $ROOT_DEV ${ROOTFS_DIR} -t ext4
mkdir -p ${ROOTFS_DIR}/boot
mount -v $BOOT_DEV ${ROOTFS_DIR}/boot -t vfat
rsync ${EXPORT_ROOTFS_DIR}/ ${ROOTFS_DIR}/ -aHAX
rsync -aHAXx --exclude var/cache/apt/archives ${EXPORT_ROOTFS_DIR}/ ${ROOTFS_DIR}/
+7 -2
View File
@@ -5,7 +5,7 @@ NOOBS_DIR="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}"
install -v -m 744 files/partition_setup.sh ${NOOBS_DIR}/
install -v files/partitions.json ${NOOBS_DIR}/
install -v files/os.json ${NOOBS_DIR}/
install -v files/Raspbian.png ${NOOBS_DIR}/
install -v files/OS.png ${NOOBS_DIR}/
install -v files/release_notes.txt ${NOOBS_DIR}/
tar -v -c -C files/marketing -f ${NOOBS_DIR}/marketing.tar .
@@ -19,13 +19,18 @@ ROOT_SIZE=$(expr ${ROOT_SIZE} / 1000000 \+ 1)
BOOT_NOM=$(expr ${BOOT_SIZE} \* 3)
ROOT_NOM=$(expr ${ROOT_SIZE} \+ 400)
mv "${NOOBS_DIR}/OS.png" "${NOOBS_DIR}/$(echo ${NOOBS_NAME} | sed 's/ /_/g').png"
sed ${NOOBS_DIR}/partitions.json -i -e "s|BOOT_SIZE|${BOOT_SIZE}|"
sed ${NOOBS_DIR}/partitions.json -i -e "s|ROOT_SIZE|${ROOT_SIZE}|"
sed ${NOOBS_DIR}/partitions.json -i -e "s|BOOT_NOM|${BOOT_NOM}|"
sed ${NOOBS_DIR}/partitions.json -i -e "s|ROOT_NOM|${ROOT_NOM}|"
sed ${NOOBS_DIR}/release_notes.txt -i -e "s|UNRELEASED|${IMG_DATE}|"
sed ${NOOBS_DIR}/os.json -i -e "s|UNRELEASED|${IMG_DATE}|"
sed ${NOOBS_DIR}/os.json -i -e "s|NOOBS_NAME|${NOOBS_NAME}|"
sed ${NOOBS_DIR}/os.json -i -e "s|NOOBS_DESCRIPTION|${NOOBS_DESCRIPTION}|"
sed ${NOOBS_DIR}/release_notes.txt -i -e "s|UNRELEASED|${IMG_DATE}|"
cp -a ${NOOBS_DIR} ${DEPLOY_DIR}/

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

+3 -3
View File
@@ -1,8 +1,8 @@
{
"description": "A community-created port of Debian jessie for the Raspberry Pi",
"description": "NOOBS_DESCRIPTION",
"feature_level": 35120124,
"kernel": "4.4",
"name": "Raspbian",
"kernel": "4.9",
"name": "NOOBS_NAME",
"password": "raspberry",
"release_date": "UNRELEASED",
"supported_hex_revisions": "2,3,4,5,6,7,8,9,d,e,f,10,11,12,14,19,1040,1041,0092,0093,2082",
@@ -12,12 +12,24 @@ mkdir -p /tmp/1 /tmp/2
mount "$part1" /tmp/1
mount "$part2" /tmp/2
sed /tmp/1/cmdline.txt -i -e "s|root=/dev/[^ ]*|root=${part2}|"
sed /tmp/1/cmdline.txt -i -e "s|root=[^ ]*|root=${part2}|"
sed /tmp/2/etc/fstab -i -e "s|^.* / |${part2} / |"
sed /tmp/2/etc/fstab -i -e "s|^.* /boot |${part1} /boot |"
if [ -f /mnt/ssh ]; then
cp /mnt/ssh /tmp/1/
fi
if [ -f /mnt/ssh.txt ]; then
cp /mnt/ssh.txt /tmp/1/
fi
if [ -f /settings/wpa_supplicant.conf ]; then
cp /settings/wpa_supplicant.conf /tmp/1/
fi
if ! grep -q resize /proc/cmdline; then
sed -i 's/ quiet init=.*$//' /tmp/1/cmdline.txt
sed -i 's| quiet init=/usr/lib/raspi-config/init_resize.sh||' /tmp/1/cmdline.txt
fi
umount /tmp/1
@@ -3,6 +3,7 @@
{
"filesystem_type": "FAT",
"label": "boot",
"mkfs_options": "-F 32",
"partition_size_nominal": BOOT_NOM,
"uncompressed_tarball_size": BOOT_SIZE,
"want_maximised": false
@@ -1,4 +1,64 @@
UNRELEASED:
*
2017-07-05:
* New kernel and firmware
* Filesystem created without the metadata_csum feature
2017-06-21:
* Scratch 2 application included
* Thonny Python IDE included
* New icons with thinner outlines
* Volume control more linear in behaviour
* Updated Flash player
* Updated RealVNC server and viewer
* Various tweaks and bugfixes
* New kernel and firmware
2017-04-10:
* Wolfram Mathematica updated to version 11.0.1
* Adobe Flash Player updated to version 25.0.0.127
* Use PARTUUID to support USB boot
2017-03-02:
* Updated kernel and firmware (final Pi Zero W support)
* Wolfram Mathematica updated to version 11
* NOOBS installs now checks for presence of 'ssh' file on the NOOBS partition.
2017-02-16:
* Chromium browser updated to version 56
* Adobe Flash Player updated to version 24.0.0.221
* RealVNC Server and Viewer updated to version 6.0.2 (RealVNC Connect)
* Sonic Pi updated to version 2.11
* Node-RED updated to version 0.15.3
* Scratch updated to version 120117
* Detection of SSH enabled with default password moved into PAM
* Updated desktop GL driver to support use of fake KMS option
* Raspberry Pi Configuration and raspi-config allow setting of fixed HDMI resolution
* raspi-config allows enabling of serial hardware independent of serial terminal
* Updates to kernel and firmware
* Various minor bug fixes and usability and appearance tweaks
2017-01-11:
* Re-release of the 2016-11-25 image with a FAT32-formatted boot partition
2016-11-25:
* SSH disabled by default; can be enabled by creating a file with name "ssh" in boot partition
* Prompt for password change at boot when SSH enabled with default password unchanged
* Adobe Flash Player included
* Updates to hardware video acceleration in Chromium browser
* Greeter now uses background image from last set in Appearance Settings rather than pi user
* Updated version of Scratch
* Rastrack option removed from raspi-config and Raspberry Pi Configuration
* Ability to disable graphical boot splash screen added to raspi-config and Raspberry Pi Configuration
* Appearance Settings dialog made tabbed to work better on small screens
* Raspberry Pi Configuration now requires current password to change password
* Various small bug fixes
* Updated firmware and kernel
2016-09-23:
* New PIXEL desktop environment - new icon set, window design, desktop images, splash screen and greeter
* Chromium web browser included
* Infinality font rendering patches included
* RealVNC server and viewer included
* SenseHAT emulator included
* Rfkill entries added to Wifi and Bluetooth panel plugins
* Updates to various standard applications, including Scratch and NodeRED
* Various bug fixes, tweaks and translation updates
* Updated firmware and kernel (https://github.com/raspberrypi/firmware/commit/ad8608c08b122b2c228dba0ff5070d6e9519faf5)
2016-05-27:
* Fixed crash of lxpanel when D-bus not accessible
* Fixed permissions for D-bus Bluetooth access
* Removed sudo from shutdown options
+20 -7
View File
@@ -4,22 +4,35 @@ IMG_FILE="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img"
NOOBS_DIR="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}"
unmount_image ${IMG_FILE}
mkdir -p ${STAGE_WORK_DIR}
cp ${WORK_DIR}/export-image/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img ${STAGE_WORK_DIR}/
rm -rf ${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}
LOOP_DEV=`kpartx -asv ${IMG_FILE} | grep -E -o -m1 'loop[[:digit:]]+' | head -n 1`
BOOT_DEV=/dev/mapper/${LOOP_DEV}p1
ROOT_DEV=/dev/mapper/${LOOP_DEV}p2
PARTED_OUT=$(parted -s ${IMG_FILE} unit b print)
BOOT_OFFSET=$(echo "$PARTED_OUT" | grep -e '^ 1'| xargs echo -n \
| cut -d" " -f 2 | tr -d B)
BOOT_LENGTH=$(echo "$PARTED_OUT" | grep -e '^ 1'| xargs echo -n \
| cut -d" " -f 4 | tr -d B)
ROOT_OFFSET=$(echo "$PARTED_OUT" | grep -e '^ 2'| xargs echo -n \
| cut -d" " -f 2 | tr -d B)
ROOT_LENGTH=$(echo "$PARTED_OUT" | grep -e '^ 2'| xargs echo -n \
| cut -d" " -f 4 | tr -d B)
BOOT_DEV=$(losetup --show -f -o ${BOOT_OFFSET} --sizelimit ${BOOT_LENGTH} ${IMG_FILE})
ROOT_DEV=$(losetup --show -f -o ${ROOT_OFFSET} --sizelimit ${ROOT_LENGTH} ${IMG_FILE})
echo "/boot: offset $BOOT_OFFSET, length $BOOT_LENGTH"
echo "/: offset $ROOT_OFFSET, length $ROOT_LENGTH"
mkdir -p ${STAGE_WORK_DIR}/rootfs
mkdir -p ${STAGE_WORK_DIR}/bootfs
mkdir -p ${NOOBS_DIR}
mount $ROOT_DEV ${STAGE_WORK_DIR}/rootfs
mount $BOOT_DEV ${STAGE_WORK_DIR}/bootfs
mount $BOOT_DEV ${STAGE_WORK_DIR}/rootfs/boot
tar -I pxz -C ${STAGE_WORK_DIR}/bootfs -cpf ${NOOBS_DIR}/boot.tar.xz .
tar -I pxz -C ${STAGE_WORK_DIR}/rootfs -cpf ${NOOBS_DIR}/root.tar.xz .
bsdtar --format gnutar --use-compress-program pxz -C ${STAGE_WORK_DIR}/rootfs/boot -cpf ${NOOBS_DIR}/boot.tar.xz .
umount ${STAGE_WORK_DIR}/rootfs/boot
bsdtar --format gnutar --use-compress-program pxz -C ${STAGE_WORK_DIR}/rootfs --one-file-system -cpf ${NOOBS_DIR}/root.tar.xz .
unmount_image ${IMG_FILE}
+35 -28
View File
@@ -1,10 +1,11 @@
log (){
date +"[%T] $@" | tee -a ${LOG_FILE}
date +"[%T] $@" | tee -a "${LOG_FILE}"
}
export -f log
bootstrap(){
local ARCH=$(dpkg --print-architecture)
local ARCH
ARCH=$(dpkg --print-architecture)
export http_proxy=${APT_PROXY}
@@ -14,20 +15,20 @@ bootstrap(){
local BOOTSTRAP_CMD=debootstrap
fi
${BOOTSTRAP_CMD} --components=main,contrib,non-free \
capsh --drop=cap_setfcap -- -c "${BOOTSTRAP_CMD} --components=main,contrib,non-free \
--arch armhf \
--no-check-gpg \
$1 $2 $3
--keyring "${STAGE_DIR}/files/raspberrypi.gpg" \
$1 $2 $3" || rmdir "$2/debootstrap"
}
export -f bootstrap
copy_previous(){
if [ ! -d ${PREV_ROOTFS_DIR} ]; then
if [ ! -d "${PREV_ROOTFS_DIR}" ]; then
echo "Previous stage rootfs not found"
false
fi
mkdir -p ${ROOTFS_DIR}
rsync -aHAX ${PREV_ROOTFS_DIR}/ ${ROOTFS_DIR}/
mkdir -p "${ROOTFS_DIR}"
rsync -aHAXx --exclude var/cache/apt/archives "${PREV_ROOTFS_DIR}/" "${ROOTFS_DIR}/"
}
export -f copy_previous
@@ -38,10 +39,11 @@ unmount(){
DIR=$1
fi
while mount | grep -q $DIR; do
local LOCS=`mount | grep $DIR | cut -f 3 -d ' ' | sort -r`
while mount | grep -q "$DIR"; do
local LOCS
LOCS=$(mount | grep "$DIR" | cut -f 3 -d ' ' | sort -r)
for loc in $LOCS; do
umount $loc
umount "$loc"
done
done
}
@@ -50,42 +52,47 @@ export -f unmount
unmount_image(){
sync
sleep 1
local LOOP_DEV=$(losetup -j ${1} | cut -f1 -d':')
local LOOP_DEVICES
LOOP_DEVICES=$(losetup -j "${1}" | cut -f1 -d':')
for LOOP_DEV in ${LOOP_DEVICES}; do
if [ -n "${LOOP_DEV}" ]; then
local MOUNTED_DIR=$(mount | grep $(basename ${LOOP_DEV} | head -n 1 | cut -f 3 -d ' '))
if [ -n "${MOUNTED_DIR}" ]; then
unmount $(dirname ${MOUNTED_DIR})
local MOUNTED_DIR
MOUNTED_DIR=$(mount | grep "$(basename "${LOOP_DEV}")" | head -n 1 | cut -f 3 -d ' ')
if [ -n "${MOUNTED_DIR}" ] && [ "${MOUNTED_DIR}" != "/" ]; then
unmount "$(dirname "${MOUNTED_DIR}")"
fi
sleep 1
kpartx -ds ${LOOP_DEV}
losetup -d ${LOOP_DEV}
losetup -d "${LOOP_DEV}"
fi
done
}
export -f unmount_image
on_chroot() {
if ! mount | grep -q `realpath ${ROOTFS_DIR}/proc`; then
mount -t proc proc ${ROOTFS_DIR}/proc
if ! mount | grep -q "$(realpath "${ROOTFS_DIR}"/proc)"; then
mount -t proc proc "${ROOTFS_DIR}/proc"
fi
if ! mount | grep -q `realpath ${ROOTFS_DIR}/dev`; then
mount --bind /dev ${ROOTFS_DIR}/dev
if ! mount | grep -q "$(realpath "${ROOTFS_DIR}"/dev)"; then
mount --bind /dev "${ROOTFS_DIR}/dev"
fi
if ! mount | grep -q `realpath ${ROOTFS_DIR}/dev/pts`; then
mount --bind /dev/pts ${ROOTFS_DIR}/dev/pts
if ! mount | grep -q "$(realpath "${ROOTFS_DIR}"/dev/pts)"; then
mount --bind /dev/pts "${ROOTFS_DIR}/dev/pts"
fi
if ! mount | grep -q `realpath ${ROOTFS_DIR}/sys`; then
mount --bind /sys ${ROOTFS_DIR}/sys
if ! mount | grep -q "$(realpath "${ROOTFS_DIR}"/sys)"; then
mount --bind /sys "${ROOTFS_DIR}/sys"
fi
chroot ${ROOTFS_DIR}/ "$@"
capsh --drop=cap_setfcap "--chroot=${ROOTFS_DIR}/" -- "$@"
}
export -f on_chroot
update_issue() {
local GIT_HASH=$(git rev-parse HEAD)
echo -e "Raspberry Pi reference ${IMG_DATE}\nGenerated using pi-gen, https://github.com/RPi-Distro/pi-gen, ${GIT_HASH}, ${1}" > ${ROOTFS_DIR}/etc/rpi-issue
local GIT_HASH
GIT_HASH=$(git rev-parse HEAD)
echo -e "Raspberry Pi reference ${IMG_DATE}\nGenerated using pi-gen, https://github.com/RPi-Distro/pi-gen, ${GIT_HASH}, ${1}" > "${ROOTFS_DIR}/etc/rpi-issue"
}
export -f update_issue
+30
View File
@@ -0,0 +1,30 @@
# dependencies_check
# $@ Dependency files to check
#
# Each dependency is in the form of a tool to test for, optionally followed by
# a : and the name of a package if the package on a Debian-ish system is not
# named for the tool (i.e., qemu-user-static).
dependencies_check()
{
local depfile deps missing
for depfile in "$@"; do
if [[ -e "$depfile" ]]; then
deps="$(sed -f "${SCRIPT_DIR}/remove-comments.sed" < ${BASE_DIR}/depends)"
fi
for dep in $deps; do
if ! hash ${dep%:*} 2>/dev/null; then
missing="${missing:+$missing }${dep#*:}"
fi
done
done
if [[ "$missing" ]]; then
echo "Required dependencies not installed"
echo
echo "This can be resolved on Debian/Raspbian systems by installing:"
echo "$missing"
false
fi
}
+11
View File
@@ -0,0 +1,11 @@
# Deletes comments and collapses whitespace in ##-packages files
# Append (N)ext line to buffer
# if (!)not ($)buffer is EOF, (b)ranch to (:)label loop
:loop
N
$ !b loop
# Buffer is "line1\nline2\n...lineN", del comments and collapse whitespace
s/#[^\n]*//g
s/[[:space:]]\{1,\}/ /g
@@ -11,7 +11,7 @@ else
fi
on_chroot apt-key add - < files/raspberrypi.gpg.key
on_chroot sh -e - << EOF
on_chroot << EOF
apt-get update
apt-get dist-upgrade -y
EOF
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
locales
Binary file not shown.
+1
View File
@@ -1,4 +1,5 @@
#!/bin/bash -e
if [ ! -d ${ROOTFS_DIR} ]; then
bootstrap jessie ${ROOTFS_DIR} http://mirrordirector.raspbian.org/raspbian/
fi
+1 -1
View File
@@ -1 +1 @@
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
+1 -1
View File
@@ -1,5 +1,5 @@
# For more options and information see
# http://www.raspberrypi.org/documentation/configuration/config-txt.md
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details
# uncomment if you get no picture on HDMI for a default "safe" mode
+1 -1
View File
@@ -5,7 +5,7 @@ install -m 644 files/noclear.conf ${ROOTFS_DIR}/etc/systemd/system/[email protected]
install -m 744 files/policy-rc.d ${ROOTFS_DIR}/usr/sbin/policy-rc.d #TODO: Necessary in systemd?
install -v -m 644 files/fstab ${ROOTFS_DIR}/etc/fstab
on_chroot sh -e - <<EOF
on_chroot << EOF
if ! id -u pi >/dev/null 2>&1; then
adduser --disabled-password --gecos "" pi
fi
+2 -2
View File
@@ -1,3 +1,3 @@
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
BOOTDEV /boot vfat defaults 0 2
ROOTDEV / ext4 defaults,noatime 0 1
+1
View File
@@ -1,2 +1,3 @@
#!/bin/sh
exit 101
+1 -1
View File
@@ -4,6 +4,6 @@ install -m 644 files/ipv6.conf ${ROOTFS_DIR}/etc/modprobe.d/ipv6.conf
install -m 644 files/interfaces ${ROOTFS_DIR}/etc/network/interfaces
install -m 644 files/hostname ${ROOTFS_DIR}/etc/hostname
on_chroot sh -e - << EOF
on_chroot << EOF
dpkg-divert --add --local /lib/udev/rules.d/75-persistent-net-generator.rules
EOF
+1
View File
@@ -1,4 +1,5 @@
#!/bin/bash -e
if [ ! -d ${ROOTFS_DIR} ]; then
copy_previous
fi
File diff suppressed because one or more lines are too long
+4 -1
View File
@@ -1,4 +1,4 @@
ssh locales less fbset sudo psmisc strace module-init-tools ed ncdu crda
ssh less fbset sudo psmisc strace module-init-tools ed ncdu crda
console-setup keyboard-configuration debconf-utils parted unzip
build-essential manpages-dev python bash-completion gdb pkg-config
python-rpi.gpio v4l-utils
@@ -14,3 +14,6 @@ raspberrypi-sys-mods
pi-bluetooth
apt-listchanges
usb-modeswitch
apt-transport-https
libpam-chksshpwd
rpi-update
@@ -1,10 +0,0 @@
Index: jessie-stage2/rootfs/etc/sudoers
===================================================================
--- jessie-stage2.orig/rootfs/etc/sudoers
+++ jessie-stage2/rootfs/etc/sudoers
@@ -25,3 +25,5 @@ root ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
+
+pi ALL=(ALL) NOPASSWD: ALL
@@ -1,17 +0,0 @@
Index: jessie-stage2/rootfs/etc/default/console-setup
===================================================================
--- jessie-stage2.orig/rootfs/etc/default/console-setup
+++ jessie-stage2/rootfs/etc/default/console-setup
@@ -6,9 +6,9 @@ ACTIVE_CONSOLES="/dev/tty[1-6]"
CHARMAP="UTF-8"
-CODESET="Lat15"
-FONTFACE="Fixed"
-FONTSIZE="8x16"
+CODESET="guess"
+FONTFACE=""
+FONTSIZE=""
VIDEOMODE=
@@ -1,5 +1,5 @@
--- a/rootfs/boot/cmdline.txt
+++ b/rootfs/boot/cmdline.txt
@@ -1 +1 @@
-dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
+dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh
-dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
+dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh
-2
View File
@@ -1,7 +1,5 @@
00-sudoers.diff
01-useradd.diff
02-swap.diff
03-console-setup.diff
04-inputrc.diff
05-path.diff
06-rc_local.diff
+6 -6
View File
@@ -1,6 +1,6 @@
#!/bin/bash -e
install -m 755 files/regenerate_ssh_host_keys ${ROOTFS_DIR}/etc/init.d/
install -m 644 files/regenerate_ssh_host_keys.service ${ROOTFS_DIR}/lib/systemd/system/
install -m 755 files/apply_noobs_os_config ${ROOTFS_DIR}/etc/init.d/
install -m 755 files/resize2fs_once ${ROOTFS_DIR}/etc/init.d/
@@ -8,10 +8,10 @@ install -d ${ROOTFS_DIR}/etc/systemd/system/rc-local.service.d
install -m 644 files/ttyoutput.conf ${ROOTFS_DIR}/etc/systemd/system/rc-local.service.d/
install -m 644 files/50raspi ${ROOTFS_DIR}/etc/apt/apt.conf.d/
install -m 644 files/98-rpi.conf ${ROOTFS_DIR}/etc/sysctl.d/
install -m 644 files/console-setup ${ROOTFS_DIR}/etc/default/
on_chroot sh -e - <<EOF
on_chroot << EOF
systemctl disable hwclock.sh
systemctl disable nfs-common
systemctl disable rpcbind
@@ -21,7 +21,7 @@ systemctl enable apply_noobs_os_config
systemctl enable resize2fs_once
EOF
on_chroot sh -e - << \EOF
on_chroot << \EOF
for GRP in input spi i2c gpio; do
groupadd -f -r $GRP
done
@@ -30,11 +30,11 @@ for GRP in adm dialout cdrom audio users sudo video games plugdev input gpio spi
done
EOF
on_chroot sh -e - <<EOF
on_chroot << EOF
setupcon --force --save-only -v
EOF
on_chroot sh -e - <<EOF
on_chroot << EOF
usermod --pass='*' root
EOF
-3
View File
@@ -1,3 +0,0 @@
kernel.printk = 3 4 1 3
vm.swappiness=1
vm.min_free_kbytes = 8192
+16
View File
@@ -0,0 +1,16 @@
# CONFIGURATION FILE FOR SETUPCON
# Consult the console-setup(5) manual page.
ACTIVE_CONSOLES="/dev/tty[1-6]"
CHARMAP="UTF-8"
CODESET="guess"
FONTFACE=""
FONTSIZE=""
VIDEOMODE=
# The following is an example how to use a braille font
# FONT='lat9w-08.psf.gz brl-8x8.psf'
@@ -1,36 +0,0 @@
#!/bin/sh
### BEGIN INIT INFO
# Provides: regenerate_ssh_host_keys
# Required-Start:
# Required-Stop:
# Default-Start: 2
# Default-Stop:
# Short-Description: Regenerate ssh host keys
# Description:
### END INIT INFO
. /lib/lsb/init-functions
set -e
case "$1" in
start)
log_daemon_msg "Regenerating ssh host keys (in background)"
nohup sh -c "if [ -e /dev/hwrng ]; then
dd if=/dev/hwrng of=/dev/urandom count=1 bs=4096
fi; \
yes | ssh-keygen -q -N '' -t dsa -f /etc/ssh/ssh_host_dsa_key && \
yes | ssh-keygen -q -N '' -t rsa -f /etc/ssh/ssh_host_rsa_key && \
yes | ssh-keygen -q -N '' -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key && \
yes | ssh-keygen -q -N '' -t ed25519 -f /etc/ssh/ssh_host_ed25519_key && \
systemctl enable ssh && sync && \
rm /etc/init.d/regenerate_ssh_host_keys && \
update-rc.d regenerate_ssh_host_keys remove && \
printf '\nfinished\n' && systemctl start ssh" > /var/log/regen_ssh_keys.log 2>&1 &
log_end_msg $?
;;
*)
echo "Usage: $0 start" >&2
exit 3
;;
esac
@@ -0,0 +1,11 @@
[Unit]
Description=Regenerate SSH host keys
[Service]
Type=oneshot
ExecStartPre=/bin/sh -c "if [ -e /dev/hwrng ]; then dd if=/dev/hwrng of=/dev/urandom count=1 bs=4096; fi"
ExecStart=/usr/bin/ssh-keygen -A
ExecStartPost=/bin/rm /lib/systemd/system/regenerate_ssh_host_keys.service ; /usr/sbin/update-rc.d regenerate_ssh_host_keys remove
[Install]
WantedBy=multi-user.target
+1 -1
View File
@@ -12,7 +12,7 @@
case "$1" in
start)
log_daemon_msg "Starting resize2fs_once"
ROOT_DEV=`grep -Eo 'root=[[:graph:]]+' /proc/cmdline | cut -d '=' -f 2-` &&
ROOT_DEV=$(findmnt / -o source -n) &&
resize2fs $ROOT_DEV &&
update-rc.d resize2fs_once remove &&
rm /etc/init.d/resize2fs_once &&
+1
View File
@@ -1,2 +1,3 @@
wpasupplicant wireless-tools firmware-atheros firmware-brcm80211 firmware-libertas firmware-ralink firmware-realtek
raspberrypi-net-mods
dhcpcd5
@@ -1,27 +0,0 @@
Index: jessie-stage2/rootfs/etc/network/interfaces
===================================================================
--- jessie-stage2.orig/rootfs/etc/network/interfaces
+++ jessie-stage2/rootfs/etc/network/interfaces
@@ -1,4 +1,20 @@
-auto lo
+# interfaces(5) file used by ifup(8) and ifdown(8)
+
+# Please note that this file is written to be used with dhcpcd
+# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
+# Include files from /etc/network/interfaces.d:
+source-directory /etc/network/interfaces.d
+
+auto lo
iface lo inet loopback
-iface eth0 inet dhcp
+
+iface eth0 inet manual
+
+allow-hotplug wlan0
+iface wlan0 inet manual
+ wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
+
+allow-hotplug wlan1
+iface wlan1 inet manual
+ wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
-1
View File
@@ -1 +0,0 @@
00-interfaces.diff
-5
View File
@@ -1,5 +0,0 @@
#!/bin/bash -e
on_chroot sh -e - <<EOF
apt-get clean
EOF
+1 -1
View File
@@ -1 +1 @@
-lite
IMG_SUFFIX="-lite"
+2
View File
@@ -0,0 +1,2 @@
NOOBS_NAME="Raspbian Lite"
NOOBS_DESCRIPTION="A port of Debian jessie for the Raspberry Pi (minimal version)"
+1
View File
@@ -1,4 +1,5 @@
#!/bin/bash -e
if [ ! -d ${ROOTFS_DIR} ]; then
copy_previous
fi
+2
View File
@@ -0,0 +1,2 @@
# Adobe Flash Player. Copyright 1996-2015. Adobe Systems Incorporated. All Rights Reserved.
rpi-chromium-mods rpi-chromium-mods/adobe note
+4 -2
View File
@@ -1,8 +1,10 @@
gstreamer1.0-x gstreamer1.0-omx gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-libav
xpdf gtk2-engines alsa-utils
desktop-base
git-core rpi-update
git
omxplayer
raspberrypi-artwork
policykit-1
udisks
gvfs
rfkill
chromium-browser rpi-chromium-mods
+8
View File
@@ -0,0 +1,8 @@
#!/bin/bash -e
on_chroot << EOF
update-alternatives --install /usr/bin/x-www-browser \
x-www-browser /usr/bin/chromium-browser 86
update-alternatives --install /usr/bin/gnome-www-browser \
gnome-www-browser /usr/bin/chromium-browser 86
EOF
@@ -1,13 +0,0 @@
Index: jessie-stage3/rootfs/etc/lightdm/lightdm-gtk-greeter.conf
===================================================================
--- jessie-stage3.orig/rootfs/etc/lightdm/lightdm-gtk-greeter.conf
+++ jessie-stage3/rootfs/etc/lightdm/lightdm-gtk-greeter.conf
@@ -16,7 +16,7 @@
# screensaver-timeout = Timeout (in seconds) until the screen blanks when the greeter is called as lockscreen
#
[greeter]
-background=/usr/share/images/desktop-base/login-background.svg
+background=#ffffff
theme-name=Adwaita
#icon-theme-name=
#font-name=
-1
View File
@@ -1 +0,0 @@
01-lightdm.diff
-12
View File
@@ -1,15 +1,3 @@
#!/bin/bash -e
on_chroot sh -e - <<EOF
update-alternatives --set libgksu-gconf-defaults /usr/share/libgksu/debian/gconf-defaults.libgksu-sudo
update-gconf-defaults
EOF
on_chroot sh -e - <<EOF
update-alternatives --install /usr/share/images/desktop-base/desktop-background \
desktop-background /usr/share/raspberrypi-artwork/raspberry-pi-logo.png 100
EOF
rm -f ${ROOTFS_DIR}/etc/systemd/system/dhcpcd.service.d/wait.conf
install -m 644 files/55-storage.pkla ${ROOTFS_DIR}/etc/polkit-1/localauthority/50-local.d/
install -m 644 files/75source-profile ${ROOTFS_DIR}/etc/X11/Xsession.d/
-6
View File
@@ -1,6 +0,0 @@
[Storage Permissions]
Identity=unix-group:plugdev
Action=org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.luks-unlock;org.freedesktop.udisks.inhibit-polling;org.freedesktop.udisks.drive-set-spindown
ResultAny=yes
ResultActive=yes
ResultInactive=no
-2
View File
@@ -1,2 +0,0 @@
[ -f /etc/profile ] && . /etc/profile
[ -f "$HOME/.profile" ] && . "$HOME/.profile"
+1
View File
@@ -1,4 +1,5 @@
#!/bin/bash -e
if [ ! -d ${ROOTFS_DIR} ]; then
copy_previous
fi
-2
View File
@@ -1,4 +1,2 @@
# Enable realtime process priority?
jackd2 jackd/tweak_rt_limits boolean true
# Do you accept the Wolfram - Raspberry Pi® Bundle License Agreement?
wolfram-engine shared/accepted-wolfram-eula boolean true
+9 -1
View File
@@ -7,7 +7,6 @@ python3-pgzero
python-serial python3-serial
python-picamera python3-picamera
debian-reference-en dillo x2x
wolfram-engine
raspberrypi-net-mods raspberrypi-ui-mods
smartsim penguinspuzzle
python-pip python3-pip
@@ -27,3 +26,12 @@ piclone
pulseaudio-module-bluetooth
wiringpi pigpio python-pigpio python3-pigpio raspi-gpio python-gpiozero python3-gpiozero python3-rpi.gpio
python-spidev python3-spidev
python-twython python3-twython
python-smbus python3-smbus
python-flask python3-flask
python-picraft python3-picraft
python3-codebug-tether python3-codebug-i2c-tether
python-sense-emu python3-sense-emu sense-emu-tools python-sense-emu-doc
pprompt
scratch2
python3-thonny
@@ -1,3 +1,4 @@
libreoffice libreoffice-gtk
timidity
pi-package
realvnc-vnc-server realvnc-vnc-viewer
+19
View File
@@ -0,0 +1,19 @@
python-automationhat python3-automationhat
python-blinkt python3-blinkt
python-cap1xxx python3-cap1xxx
python-drumhat python3-drumhat
python-envirophat python3-envirophat
python-explorerhat python3-explorerhat
python-fourletterphat python3-fourletterphat
python-microdotphat python3-microdotphat
python-mote python3-mote
python-motephat python3-motephat
python-phatbeat python3-phatbeat
python-pianohat python3-pianohat
python-piglow python3-piglow
python-rainbowhat python3-rainbowhat
python-scrollphat python3-scrollphat
python-scrollphathd python3-scrollphathd
python-sn3218 python3-sn3218
python-skywriter python3-skywriter
python-touchphat python3-touchphat
@@ -1,5 +1,3 @@
#!/bin/bash -e
ln -sf /etc/systemd/system/[email protected] ${ROOTFS_DIR}/etc/systemd/system/getty.target.wants/[email protected]
install -v -m 644 files/40-scratch.rules ${ROOTFS_DIR}/etc/udev/rules.d/
-1
View File
@@ -1 +0,0 @@
ATTRS{idVendor}=="0694", ATTRS{idProduct}=="0003", SUBSYSTEMS=="usb", ACTION=="add", MODE="0666", GROUP="plugdev"
@@ -1,13 +0,0 @@
Index: jessie-stage4/rootfs/etc/lightdm/lightdm.conf
===================================================================
--- jessie-stage4.orig/rootfs/etc/lightdm/lightdm.conf
+++ jessie-stage4/rootfs/etc/lightdm/lightdm.conf
@@ -114,7 +114,7 @@
#session-setup-script=
#session-cleanup-script=
#autologin-guest=false
-#autologin-user=
+autologin-user=pi
#autologin-user-timeout=0
#autologin-in-background=false
#autologin-session=UNIMPLEMENTED
-1
View File
@@ -1 +0,0 @@
0-autologin.diff
-25
View File
@@ -31,28 +31,3 @@ install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/pi/.local"
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/pi/.local/share"
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/pi/.local/share/applications"
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/pi/.local/share/desktop-directories"
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/.config
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/.config/pcmanfm
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/.config/pcmanfm/LXDE-pi
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/.config/openbox
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/.config/lxsession
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/.themes
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/.config/gtk-3.0
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/.config/lxpanel
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/Desktop
install -v -m 644 -o 1000 -g 1000 ${ROOTFS_DIR}/etc/xdg/pcmanfm/LXDE-pi/pcmanfm.conf ${ROOTFS_DIR}/home/pi/.config/pcmanfm/LXDE-pi/
install -v -m 644 -o 1000 -g 1000 ${ROOTFS_DIR}/etc/xdg/pcmanfm/LXDE-pi/desktop-items-0.conf ${ROOTFS_DIR}/home/pi/.config/pcmanfm/LXDE-pi/
install -v -m 644 -o 1000 -g 1000 ${ROOTFS_DIR}/etc/xdg/openbox/lxde-pi-rc.xml ${ROOTFS_DIR}/home/pi/.config/openbox/
rsync -a --chown=1000:1000 ${ROOTFS_DIR}/etc/xdg/lxsession/LXDE-pi ${ROOTFS_DIR}/home/pi/.config/lxsession/
rsync -a --chown=1000:1000 ${ROOTFS_DIR}/usr/share/themes/PiX ${ROOTFS_DIR}/home/pi/.themes/
install -v -m 644 -o 1000 -g 1000 ${ROOTFS_DIR}/usr/share/raspi-ui-overrides/gtk.css ${ROOTFS_DIR}/home/pi/.config/gtk-3.0/
install -v -m 644 -o 1000 -g 1000 ${ROOTFS_DIR}/usr/share/raspi-ui-overrides/Trolltech.conf ${ROOTFS_DIR}/home/pi/.config/
install -v -m 644 -o 1000 -g 1000 ${ROOTFS_DIR}/etc/xdg/lxpanel/launchtaskbar.cfg ${ROOTFS_DIR}/home/pi/.config/lxpanel/
rsync -a --chown=1000:1000 ${ROOTFS_DIR}/etc/xdg/lxpanel/profile/LXDE-pi ${ROOTFS_DIR}/home/pi/.config/lxpanel/
-5
View File
@@ -1,5 +0,0 @@
#!/bin/bash -e
on_chroot sh -e - <<EOF
apt-get clean
EOF
+1
View File
@@ -0,0 +1 @@
IMG_SUFFIX="-4GB"
View File
+1
View File
@@ -1,4 +1,5 @@
#!/bin/bash -e
if [ ! -d ${ROOTFS_DIR} ]; then
copy_previous
fi
+2
View File
@@ -0,0 +1,2 @@
# Do you accept the Wolfram - Raspberry Pi® Bundle License Agreement?
wolfram-engine shared/accepted-wolfram-eula boolean true
@@ -0,0 +1 @@
wolfram-engine
+1
View File
@@ -0,0 +1 @@
IMG_SUFFIX=""
+2
View File
@@ -0,0 +1,2 @@
NOOBS_NAME="Raspbian"
NOOBS_DESCRIPTION="A port of Debian jessie for the Raspberry Pi (full desktop version)"
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash -e
if [ ! -d ${ROOTFS_DIR} ]; then
copy_previous
fi