Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • reform/reform-system-image
  • artfwo/reform-system-image
  • bluerise/reform-system-image
  • technomancy/reform-system-image
  • Chartreuse/reform-system-image
  • josch/reform-system-image
  • doctorhoo/reform-system-image
  • rufform/reform-system-image
  • hartkopp/reform-system-image
  • sevan/reform-system-image
  • chaseadam/reform-system-image
  • zeha/reform-system-image
  • hramrach/reform-system-image
  • frickler/reform-system-image
14 results
Show changes
Commits on Source (559)
Showing
with 241 additions and 1139 deletions
# Gitlab CI file to generate the system image .img file.
image: debian:unstable-slim
variables:
DIST:
description: "distribution to build image for like testing, unstable and experimental"
value: unstable
REFORM_DEBIAN_PACKAGES_BRANCH:
description: "if set, prefer *.deb packages created by the latest pipeline run from this reform-debian-packages branch under the namespace set by REFORM_DEBIAN_PACKAGES_NAMESPACE"
value:
REFORM_DEBIAN_PACKAGES_NAMESPACE:
description: "if REFORM_DEBIAN_PACKAGES_BRANCH is set, determines from which namespace to obtain the gitlab CI pipeline reprepro job from. Default: reform"
value: reform
SYSIMAGES:
description: "Which system images to produce, like reform-system-a311d (if this is empty, all are built)"
value:
build:
script: |
set -x
apt update -o Acquire::AllowReleaseInfoChange=true -o quiet::ReleaseInfoChange=true
apt-get --no-install-recommends -y install mmdebstrap ca-certificates e2fsprogs pigz git mount parted apt-utils libarchive-tools python3-apt bmap-tools wget dpkg-dev uuid-runtime
if [ ! -e /proc/sys/fs/binfmt_misc/status ]; then
mount -t binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc
fi
apt-get --no-install-recommends -y install arch-test qemu-user-static
arch-test arm64 || cat /usr/lib/binfmt.d/qemu-aarch64.conf > /proc/sys/fs/binfmt_misc/register
arch-test arm64
if [ -n "${REFORM_DEBIAN_PACKAGES_BRANCH:+x}" ]; then
echo "REFORM_DEBIAN_PACKAGES_BRANCH=${REFORM_DEBIAN_PACKAGES_BRANCH}" >&2
echo "downloading..." >&2
/usr/lib/apt/apt-helper download-file \
"https://source.mnt.re/$REFORM_DEBIAN_PACKAGES_NAMESPACE/reform-debian-packages/-/jobs/artifacts/${REFORM_DEBIAN_PACKAGES_BRANCH}/download?file_type=archiv&job=reprepro" \
"archive.zip"
echo "extracting..." >&2
mkdir -p ./repo
bsdtar --verbose --directory repo --strip-components=5 --extract --file archive.zip "*.deb"
fi
./mkimage.sh
after_script: |
if [ "$DIST" != "unstable" ]; then
echo "DIST: $DIST" >&2
fi
if [ -n "$REFORM_DEBIAN_PACKAGES_BRANCH" ]; then
echo "REFORM_DEBIAN_PACKAGES_BRANCH: $REFORM_DEBIAN_PACKAGES_BRANCH" >&2
fi
artifacts:
paths:
- "pocket-reform-system-a311d.img.gz"
- "pocket-reform-system-a311d.img.gz.bmap"
- "pocket-reform-system-imx8mp.img.gz"
- "pocket-reform-system-imx8mp.img.gz.bmap"
- "pocket-reform-system-rk3588.img.gz"
- "pocket-reform-system-rk3588.img.gz.bmap"
- "reform-next-system-rk3588.img.gz"
- "reform-next-system-rk3588.img.gz.bmap"
- "reform-system-a311d.img.gz"
- "reform-system-a311d.img.gz.bmap"
- "reform-system-imx8mp.img.gz"
- "reform-system-imx8mp.img.gz.bmap"
- "reform-system-imx8mq.img.gz"
- "reform-system-imx8mq.img.gz.bmap"
- "reform-system-ls1028a.img.gz"
- "reform-system-ls1028a.img.gz.bmap"
- "reform-system-rk3588.img.gz"
- "reform-system-rk3588.img.gz.bmap"
- "README.flashing"
# Identify the system image for your Reform
You can find out the name of the system image for your platform by running the
following command:
sh -c '. /usr/share/reform-tools/machines/"$(cat /proc/device-tree/model).conf"; echo "$SYSIMAGE.img.gz"'
To find out the correct system image manually, consider this table:
| Machine | System image filename |
|---------------------------------------|------------------------------------|
| MNT Pocket Reform with BPI-CM4 Module | pocket-reform-system-a311d.img.gz |
| MNT Pocket Reform with i.MX8MP Module | pocket-reform-system-imx8mp.img.gz |
| MNT Pocket Reform with RK3588 Module | pocket-reform-system-rk3588.img.gz |
| MNT Reform 2 with BPI-CM4 Module | reform-system-a311d.img.gz |
| MNT Reform 2 with i.MX8MP Module | reform-system-imx8mp.img.gz |
| MNT Reform 2 (HDMI) | reform-system-imx8mq.img.gz |
| MNT Reform 2 with LS1028A Module | reform-system-ls1028a.img.gz |
| MNT Reform 2 with RCORE RK3588 Module | reform-system-rk3588.img.gz |
# Flashing the system image using bmaptool
If the utility called `bmaptool` is available on your system (found in package
`bmaptool` in Debian), then you can run this command to flash the image to your
SD-Card:
sudo bmaptool copy URL /dev/mmcblkX
Replace `URL` by the https link to the image and `/dev/mmcblkX` by the device
name of your SD-Card. The `bmaptool` utility will prevent you from flashing to
a device which has mounted partitions on it as a safety measure.
# Flashing the system image using dd
Follow these steps:
1. download the appropriate `*.img.gz` disk image from the pipeline artifacts
2. decompress the image using `gunzip disk.img.gz` replacing `disk.img.gz` with the name of your system image
3. identify the device name of your SD-Card, for example by running `lsblk` before and after inserting one
4. copy the image to the SD-Card using this command and replacing `disk.img` with the image name and `/dev/sdx` with the device name:
sudo dd if=disk.img of=/dev/sdx bs=8M status=progress
# MNT Reform System Image
This is a collection of scripts used to build an image file that can then be transferred to a SD Card using `dd`.
This is a collection of scripts used to build the MNT Reform System Images, which are based on Debian GNU/Linux. The images can be transferred to an SD card and booted by an MNT Reform computer.
To start the process, use `./mkimage.sh`. To start over, execute `./cleanup.sh` to delete the existing userland and image.
## Downloading and Flashing a System Image
The resulting file is `reform-system.img`.
Most users will want to download a pre-built image from: https://mnt.re/system-image
1. From the link above, download the file whose name matches the Processor Module in your MNT Reform:
- NXP i.MX8MQ Processor: `reform-system-imx8mq.img.gz`
- RCM4 with BPi CM4/A311D Processor: `reform-system-a311d.img.gz`
- NXP LS1028A Processor: `reform-system-ls1028a.img.gz`
2. Unzip the image using `gunzip reform-system-imx8mq.img.gz` (Substitute your actual image file name, also in the following steps)
3. Identify the device name of your SD card. For example, you can check the output of `lsblk` before and after you insert the card and compare which new device appears. Below we use the device `sdx`, but it will probably be a different one on your computer.
4. Copy the image to your SD card using `sudo dd if=reform-system-imx8mq.img of=/dev/sdx bs=8M status=progress`.
## How to Build the Images
Building the images requires considerable disk space and CPU resources, it is generally only required if you want to contribute to the development of the system images.
To create a system image for all platforms, run this:
./mkimage.sh
To only create the image for a specific platform, choose one out of the
following list:
- `pocket-reform-system-a311d`
- `pocket-reform-system-imx8mp`
- `reform-system-a311d`
- `reform-system-imx8mp`
- `reform-system-imx8mq`
- `reform-system-ls1028a`
- `reform-system-rk3588`
And pass it as the positional argument, for example for the MNT Reform 2 with
imx8mq, use:
./mkimage.sh reform-system-imx8mq
The resulting image can then be found as an *.img file in the current
directory.
## License
Copyright 2018-2020 Lukas F. Hartmann / MNT Research GmbH
This project is licensed under the GPLv3 License - see the [LICENSE.md](LICENSE.md) file for details
redo-ifchange reform2-imx8mq.img
#!/bin/bash
rm -rf target-userland
rm reform-system.img
>/dev/null command -v aarch64-linux-gnu-gcc
>/dev/null command -v flex
>/dev/null command -v bison
redo-ifchange "${2}".tar.gz
tar xzf "${2}".tar.gz
REFORM_D=reform2-imx8mq
LINUX_D="${2}"
export \
ARCH=arm64 \
LOADADDR=0x40480000 \
CROSS_COMPILE=aarch64-linux-gnu- \
>"${LINUX_D}"/.config.do cat <<EOF
FILE=../"${REFORM_D}"/kernel-config
redo-ifchange "\${FILE}"
cp "\${FILE}" "\${3}"
EOF
redo-ifchange "${LINUX_D}"/.config
>"${LINUX_D}"/arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2.dts.do cat <<EOF
FILE=../../../../../../"${REFORM_D}"/imx8mq-mnt-reform2.dts
redo-ifchange "\${FILE}"
cp "\${FILE}" "\${3}"
EOF
redo "${LINUX_D}"/arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2.dts
>"${LINUX_D}"/arch/arm64/boot/dts/freescale/imx8mq.dtsi.do cat <<EOF
FILE=../../../../../../"${REFORM_D}"/imx8mq.dtsi
redo-ifchange "\${FILE}"
cp "\${FILE}" "\${3}"
EOF
redo "${LINUX_D}"/arch/arm64/boot/dts/freescale/imx8mq.dtsi
(
cd "${LINUX_D}"
for PATCHFILE in ../"${REFORM_D}"/patches/*.patch; do
git apply --check "${PATCHFILE}"
git apply "${PATCHFILE}"
done
>&2 make -j "$(nproc)" freescale/imx8mq-mnt-reform2.dtb
)
cp "${LINUX_D}"/arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2.dts "${3}"
>/dev/null command -v aarch64-linux-gnu-gcc
>/dev/null command -v flex
>/dev/null command -v bison
redo-ifchange "${2}".tar.gz
tar xzf "${2}".tar.gz
REFORM_D=reform2-imx8mq
LINUX_D="${2}"
export \
ARCH=arm64 \
LOADADDR=0x40480000 \
CROSS_COMPILE=aarch64-linux-gnu- \
>"${LINUX_D}"/.config.do cat <<EOF
FILE=../"${REFORM_D}"/kernel-config
redo-ifchange "\${FILE}"
cp "\${FILE}" "\${3}"
EOF
redo-ifchange "${LINUX_D}"/.config
>"${LINUX_D}"/arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2.dts.do cat <<EOF
FILE=../../../../../../"${REFORM_D}"/imx8mq-mnt-reform2.dts
redo-ifchange "\${FILE}"
cp "\${FILE}" "\${3}"
EOF
redo "${LINUX_D}"/arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2.dts
>"${LINUX_D}"/arch/arm64/boot/dts/freescale/imx8mq.dtsi.do cat <<EOF
FILE=../../../../../../"${REFORM_D}"/imx8mq.dtsi
redo-ifchange "\${FILE}"
cp "\${FILE}" "\${3}"
EOF
redo "${LINUX_D}"/arch/arm64/boot/dts/freescale/imx8mq.dtsi
(
cd "${LINUX_D}"
for PATCHFILE in ../"${REFORM_D}"/patches/*.patch; do
git apply --check "${PATCHFILE}"
git apply "${PATCHFILE}"
done
>&2 make -j "$(nproc)" Image
)
cp "${LINUX_D}"/arch/arm64/boot/Image "${3}"
#!/bin/sh
set -eu
if [ $# -ne 1 ]; then
echo "usage: $1 reform-system.img" >&2
exit 1
fi
IMAGE=$1
cleanup() {
test -n "$KERNELTMP" && rm -f "$KERNELTMP"
test -n "$INITRDTMP" && rm -f "$INITRDTMP"
test -n "$BOOTEXTMP" && rm -f "$BOOTEXTMP"
}
KERNELTMP=$(mktemp)
INITRDTMP=$(mktemp)
# boot partition must be on the same filesystem as the full system image or
# else copy_file_range(2) will not work
BOOTEXTMP=$(mktemp --tmpdir="$(dirname "$IMAGE")")
trap cleanup EXIT INT TERM QUIT
# should be 12582912
BOOTSTART=$(/usr/sbin/parted --machine "$IMAGE" unit B print | grep '^1:' | cut -d: -f 2)
BOOTSTART=${BOOTSTART%B}
# should be 511705088
BOOTSIZE=$(/usr/sbin/parted --machine "$IMAGE" unit B print | grep '^1:' | cut -d: -f 4)
BOOTSIZE=${BOOTSIZE%B}
# even though /boot is 488 MB, this is fast, because it's sparse and only 70 MB
# have to be actually copied
python3 sparsedd.py "$IMAGE" "$BOOTEXTMP" "$BOOTSTART" 0 "$BOOTSIZE"
kernelname=$(/sbin/debugfs "$BOOTEXTMP" -R "ls -p" 2>/dev/null | cut -d / -f 6 | grep vmlinuz-)
/sbin/debugfs "$BOOTEXTMP" -R "cat $kernelname" > "$KERNELTMP"
initrdname=$(/sbin/debugfs "$BOOTEXTMP" -R "ls -p" 2>/dev/null | cut -d / -f 6 | grep initrd.img-)
/sbin/debugfs "$BOOTEXTMP" -R "cat $initrdname" > "$INITRDTMP"
rm "$BOOTEXTMP"
BOOTEXTMP=
# We create a temporary file using a file descriptor because the cleanup trap
# will not be called anymore after having replaced the shell process with qemu
# using exec.
KERNELFD=3
while test -h "/proc/self/fd/$KERNELFD"; do
KERNELFD=$((KERNELFD + 1))
done
INITRDFD=$((KERNELFD + 1))
while test -h "/proc/self/fd/$INITRDFD"; do
INITRDFD=$((INITRDFD + 1))
done
eval exec "$KERNELFD<"'"$KERNELTMP"'
eval exec "$INITRDFD<"'"$INITRDTMP"'
rm -f "$KERNELTMP" "$INITRDTMP"
KERNELTMP=
INITRDTMP=
set --
cpuname=$(lscpu | awk '/Model name:/ {print $3}' | tr '\n' '+')
ncpu=$(lscpu | awk '/Core\(s\) per socket:/ {print $4}' | tr '\n' '+')
if [ "$cpuname" = "Cortex-A53+Cortex-A73+" ] && [ "$ncpu" = "2+4+" ]; then
# crude detection of the big.LITTLE heterogeneous setup of cores on the
# amlogic a311d bananapi
#
# https://lists.nongnu.org/archive/html/qemu-devel/2020-10/msg08494.html
# https://gitlab.com/qemu-project/qemu/-/issues/239
# https://segments.zhan.science/posts/kvm_on_pinehone_pro/#trouble-with-heterogeneous-architecture
set -- taskset --cpu-list 2,3,4,5
fi
# If the image filename contains a comma, then that comma must be escaped by
# prefixing it with another comma or otherwise output filenames are able to
# inject drive options to qemu (and load the wrong file).
IMAGE_ESCAPED="$(printf "%s" "$IMAGE" | sed 's/,/,,/g')"
# Replace the shell process with the qemu process.
# This allows running this script inside wrappers like timeout(1) which send
# signals to their child process.
exec "$@" qemu-system-aarch64 -netdev user,id=net0 -device virtio-net-pci,netdev=net0 \
-device virtio-gpu-pci,edid=on,xres=1024,yres=768 \
-vnc :94,share=force-shared \
-device virtio-rng-pci,rng=rng0 -smp 4 -cpu max \
-machine type=virt,gic-version=max,accel=kvm:tcg -no-user-config \
-name debvm-run -m 1G -nographic \
-drive "media=disk,format=raw,discard=unmap,file=$IMAGE_ESCAPED,if=virtio,cache=unsafe" \
-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-gpu-pci \
-device virtio-keyboard-pci -device virtio-tablet-pci \
-kernel "/proc/self/fd/$KERNELFD" -initrd "/proc/self/fd/$INITRDFD" -append 'root=LABEL=reformsdroot'
state.wm8960audio {
control.1 {
iface MIXER
name 'Capture Volume'
value.0 39
value.1 39
comment {
access 'read write'
type INTEGER
count 2
range '0 - 63'
dbmin -1725
dbmax 3000
dbvalue.0 1200
dbvalue.1 1200
}
}
control.2 {
iface MIXER
name 'Capture Volume ZC Switch'
value.0 0
value.1 0
comment {
access 'read write'
type INTEGER
count 2
range '0 - 1'
}
}
control.3 {
iface MIXER
name 'Capture Switch'
value.0 true
value.1 true
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.4 {
iface MIXER
name 'Left Input Boost Mixer LINPUT3 Volume'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
dbmin -9999999
dbmax 600
dbvalue.0 -9999999
}
}
control.5 {
iface MIXER
name 'Left Input Boost Mixer LINPUT2 Volume'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
dbmin -9999999
dbmax 600
dbvalue.0 -9999999
}
}
control.6 {
iface MIXER
name 'Right Input Boost Mixer RINPUT3 Volume'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
dbmin -9999999
dbmax 600
dbvalue.0 -9999999
}
}
control.7 {
iface MIXER
name 'Right Input Boost Mixer RINPUT2 Volume'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
dbmin -9999999
dbmax 600
dbvalue.0 -9999999
}
}
control.8 {
iface MIXER
name 'Right Input Boost Mixer RINPUT1 Volume'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 3'
dbmin 0
dbmax 2900
dbvalue.0 0
}
}
control.9 {
iface MIXER
name 'Left Input Boost Mixer LINPUT1 Volume'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 3'
dbmin 0
dbmax 2900
dbvalue.0 0
}
}
control.10 {
iface MIXER
name 'Playback Volume'
value.0 215
value.1 215
comment {
access 'read write'
type INTEGER
count 2
range '0 - 255'
dbmin -9999999
dbmax 0
dbvalue.0 -2000
dbvalue.1 -2000
}
}
control.11 {
iface MIXER
name 'Headphone Playback Volume'
value.0 0
value.1 0
comment {
access 'read write'
type INTEGER
count 2
range '0 - 127'
dbmin -9999999
dbmax 600
dbvalue.0 -9999999
dbvalue.1 -9999999
}
}
control.12 {
iface MIXER
name 'Headphone Playback ZC Switch'
value.0 false
value.1 false
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.13 {
iface MIXER
name 'Speaker Playback Volume'
value.0 101
value.1 101
comment {
access 'read write'
type INTEGER
count 2
range '0 - 127'
dbmin -9999999
dbmax 600
dbvalue.0 -2000
dbvalue.1 -2000
}
}
control.14 {
iface MIXER
name 'Speaker Playback ZC Switch'
value.0 false
value.1 false
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.15 {
iface MIXER
name 'Speaker DC Volume'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 5'
}
}
control.16 {
iface MIXER
name 'Speaker AC Volume'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 5'
}
}
control.17 {
iface MIXER
name 'PCM Playback -6dB Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.18 {
iface MIXER
name 'ADC Polarity'
value 'No Inversion'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'No Inversion'
item.1 'Left Inverted'
item.2 'Right Inverted'
item.3 'Stereo Inversion'
}
}
control.19 {
iface MIXER
name 'ADC High Pass Filter Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.20 {
iface MIXER
name 'DAC Polarity'
value 'No Inversion'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'No Inversion'
item.1 'Left Inverted'
item.2 'Right Inverted'
item.3 'Stereo Inversion'
}
}
control.21 {
iface MIXER
name 'DAC Deemphasis Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.22 {
iface MIXER
name 'DAC Slope'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.23 {
iface MIXER
name '3D Filter Upper Cut-Off'
value High
comment {
access 'read write'
type ENUMERATED
count 1
item.0 High
item.1 Low
}
}
control.24 {
iface MIXER
name '3D Filter Lower Cut-Off'
value Low
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Low
item.1 High
}
}
control.25 {
iface MIXER
name '3D Volume'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 15'
}
}
control.26 {
iface MIXER
name '3D Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.27 {
iface MIXER
name 'ALC Function'
value Off
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Off
item.1 Right
item.2 Left
item.3 Stereo
}
}
control.28 {
iface MIXER
name 'ALC Max Gain'
value 7
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
}
}
control.29 {
iface MIXER
name 'ALC Target'
value 4
comment {
access 'read write'
type INTEGER
count 1
range '0 - 15'
}
}
control.30 {
iface MIXER
name 'ALC Min Gain'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
}
}
control.31 {
iface MIXER
name 'ALC Hold Time'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 15'
}
}
control.32 {
iface MIXER
name 'ALC Mode'
value ALC
comment {
access 'read write'
type ENUMERATED
count 1
item.0 ALC
item.1 Limiter
}
}
control.33 {
iface MIXER
name 'ALC Decay'
value 3
comment {
access 'read write'
type INTEGER
count 1
range '0 - 15'
}
}
control.34 {
iface MIXER
name 'ALC Attack'
value 2
comment {
access 'read write'
type INTEGER
count 1
range '0 - 15'
}
}
control.35 {
iface MIXER
name 'Noise Gate Threshold'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 31'
}
}
control.36 {
iface MIXER
name 'Noise Gate Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.37 {
iface MIXER
name 'ADC PCM Capture Volume'
value.0 195
value.1 195
comment {
access 'read write'
type INTEGER
count 2
range '0 - 255'
dbmin -9999999
dbmax 3000
dbvalue.0 0
dbvalue.1 0
}
}
control.38 {
iface MIXER
name 'Left Output Mixer Boost Bypass Volume'
value 2
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
dbmin -2100
dbmax 0
dbvalue.0 -1500
}
}
control.39 {
iface MIXER
name 'Left Output Mixer LINPUT3 Volume'
value 2
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
dbmin -2100
dbmax 0
dbvalue.0 -1500
}
}
control.40 {
iface MIXER
name 'Right Output Mixer Boost Bypass Volume'
value 2
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
dbmin -2100
dbmax 0
dbvalue.0 -1500
}
}
control.41 {
iface MIXER
name 'Right Output Mixer RINPUT3 Volume'
value 2
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
dbmin -2100
dbmax 0
dbvalue.0 -1500
}
}
control.42 {
iface MIXER
name 'ADC Data Output Select'
value 'Left Data = Left ADC; Right Data = Right ADC'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'Left Data = Left ADC; Right Data = Right ADC'
item.1 'Left Data = Left ADC; Right Data = Left ADC'
item.2 'Left Data = Right ADC; Right Data = Right ADC'
item.3 'Left Data = Right ADC; Right Data = Left ADC'
}
}
control.43 {
iface MIXER
name 'DAC Mono Mix'
value Stereo
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Stereo
item.1 Mono
}
}
control.44 {
iface MIXER
name 'Left Boost Mixer LINPUT2 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.45 {
iface MIXER
name 'Left Boost Mixer LINPUT3 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.46 {
iface MIXER
name 'Left Boost Mixer LINPUT1 Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.47 {
iface MIXER
name 'Right Boost Mixer RINPUT2 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.48 {
iface MIXER
name 'Right Boost Mixer RINPUT3 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.49 {
iface MIXER
name 'Right Boost Mixer RINPUT1 Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.50 {
iface MIXER
name 'Left Input Mixer Boost Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.51 {
iface MIXER
name 'Right Input Mixer Boost Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.52 {
iface MIXER
name 'Left Output Mixer PCM Playback Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.53 {
iface MIXER
name 'Left Output Mixer LINPUT3 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.54 {
iface MIXER
name 'Left Output Mixer Boost Bypass Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.55 {
iface MIXER
name 'Right Output Mixer PCM Playback Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.56 {
iface MIXER
name 'Right Output Mixer RINPUT3 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.57 {
iface MIXER
name 'Right Output Mixer Boost Bypass Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.58 {
iface MIXER
name 'Mono Output Mixer Left Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.59 {
iface MIXER
name 'Mono Output Mixer Right Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
}
#
# /etc/pam.d/common-account - authorization settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authorization modules that define
# the central access policy for use on the system. The default is to
# only deny service to users whose accounts are expired in /etc/shadow.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules. See
# pam-auth-update(8) for details.
#
# here are the per-package modules (the "Primary" block)
account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so
# here's the fallback if no module succeeds
account requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
account required pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config
#
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
# traditional Unix authentication mechanisms.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules. See
# pam-auth-update(8) for details.
# here are the per-package modules (the "Primary" block)
auth [success=1 default=ignore] pam_unix.so nullok_secure
# here's the fallback if no module succeeds
auth requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth required pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config
#
# /etc/pam.d/common-password - password-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define the services to be
# used to change user passwords. The default is pam_unix.
# Explanation of pam_unix options:
#
# The "sha512" option enables salted SHA512 passwords. Without this option,
# the default is Unix crypt. Prior releases used the option "md5".
#
# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in
# login.defs.
#
# See the pam_unix manpage for other options.
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules. See
# pam-auth-update(8) for details.
# here are the per-package modules (the "Primary" block)
password [success=1 default=ignore] pam_unix.so obscure sha512
# here's the fallback if no module succeeds
password requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
password required pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config
#
# /etc/pam.d/common-session - session-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define tasks to be performed
# at the start and end of sessions of *any* kind (both interactive and
# non-interactive).
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules. See
# pam-auth-update(8) for details.
# here are the per-package modules (the "Primary" block)
session [default=1] pam_permit.so
# here's the fallback if no module succeeds
session requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
session required pam_permit.so
# and here are more per-package modules (the "Additional" block)
session required pam_unix.so
session optional pam_systemd.so
# end of pam-auth-update config
#
# /etc/pam.d/common-session-noninteractive - session-related modules
# common to all non-interactive services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define tasks to be performed
# at the start and end of all non-interactive sessions.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules. See
# pam-auth-update(8) for details.
# here are the per-package modules (the "Primary" block)
session [default=1] pam_permit.so
# here's the fallback if no module succeeds
session requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
session required pam_permit.so
# and here are more per-package modules (the "Additional" block)
session required pam_unix.so
# end of pam-auth-update config
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
## Configuration file for the PulseAudio daemon. See pulse-daemon.conf(5) for
## more information. Default values are commented out. Use either ; or # for
## commenting.
; daemonize = no
; fail = yes
; allow-module-loading = yes
; allow-exit = yes
; use-pid-file = yes
; system-instance = no
; local-server-type = user
; enable-shm = yes
; enable-memfd = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
; lock-memory = no
; cpu-limit = no
; high-priority = yes
; nice-level = -11
; realtime-scheduling = yes
; realtime-priority = 5
; exit-idle-time = 20
; scache-idle-time = 20
; dl-search-path = (depends on architecture)
; load-default-script-file = yes
; default-script-file = /etc/pulse/default.pa
; log-target = auto
; log-level = notice
; log-meta = no
; log-time = no
; log-backtrace = 0
; resample-method = speex-float-1
; avoid-resampling = false
; enable-remixing = yes
; remixing-use-all-sink-channels = yes
; enable-lfe-remixing = no
; lfe-crossover-freq = 0
; flat-volumes = no
; rlimit-fsize = -1
; rlimit-data = -1
; rlimit-stack = -1
; rlimit-core = -1
; rlimit-as = -1
; rlimit-rss = -1
; rlimit-nproc = -1
; rlimit-nofile = 256
; rlimit-memlock = -1
; rlimit-locks = -1
; rlimit-sigpending = -1
; rlimit-msgqueue = -1
; rlimit-nice = 31
; rlimit-rtprio = 9
; rlimit-rttime = 200000
; default-sample-format = s16le
; MNT Reform audio chip works only with 48kHz
default-sample-rate = 48000
; alternate-sample-rate = 48000
; default-sample-channels = 2
; default-channel-map = front-left,front-right
; default-fragments = 4
; default-fragment-size-msec = 25
; enable-deferred-volume = yes
; deferred-volume-safety-margin-usec = 8000
; deferred-volume-extra-delay-usec = 0
# Configuration file for /sbin/dhclient.
#
# This is a sample configuration file for dhclient. See dhclient.conf's
# man page for more information about the syntax of this file
# and a more comprehensive list of the parameters understood by
# dhclient.
#
# Normally, if the DHCP server provides reasonable information and does
# not leave anything out (like the domain name, for example), then
# few changes must be made to this file, if any.
#
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
send host-name = gethostname();
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers;
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.com home.vix.com";
#prepend domain-name-servers 127.0.0.1;
#require subnet-mask, domain-name-servers;
timeout 5;
#retry 60;
#reboot 10;
#select-timeout 5;
#initial-interval 2;
#script "/sbin/dhclient-script";
#media "-link0 -link1 -link2", "link0 link1";
#reject 192.33.137.209;
#alias {
# interface "eth0";
# fixed-address 192.5.5.213;
# option subnet-mask 255.255.255.255;
#}
#lease {
# interface "eth0";
# fixed-address 192.33.137.200;
# medium "link0 link1";
# option host-name "andare.swiftmedia.com";
# option subnet-mask 255.255.255.0;
# option broadcast-address 192.33.137.255;
# option routers 192.33.137.250;
# option domain-name-servers 127.0.0.1;
# renew 2 2000/1/12 00:00:01;
# rebind 2 2000/1/12 00:00:01;
# expire 2 2000/1/12 00:00:01;
#}
[Match]
Name=en*
[Network]
DHCP=ipv4
[DHCPv4]
UseHostname=false
#/dev/mmcblk0p1 /boot vfat defaults,rw 0 0
root:*::
daemon:*::
bin:*::
sys:*::
adm:*::
tty:*::
disk:*::
lp:*::
mail:*::
news:*::
uucp:*::
man:*::
proxy:*::
kmem:*::
dialout:*::
fax:*::
voice:*::
cdrom:*::
floppy:*::
tape:*::
sudo:*::
audio:*::
dip:*::
www-data:*::
backup:*::
operator:*::
list:*::
irc:*::
src:*::
gnats:*::
shadow:*::
utmp:*::
video:*::
sasl:*::
plugdev:*::
staff:*::
games:*::
users:*::
nogroup:*::
reform