volumio / build Goto Github PK
View Code? Open in Web Editor NEWBuildscripts for Volumio System
License: GNU General Public License v2.0
Buildscripts for Volumio System
License: GNU General Public License v2.0
So we incorporate the settings for wlan0 static IP
raspberryconfig.sh statements that creates wifistart.sh
unconditionally sets Raspi3-specific driver load commands, which are therefore applied equally for all Raspi at runtime. This force load an irrelevant driver for all Pis (except raspi3): see here lines 496, 518 & al. on PiZero.
Most probably wifistart.sh
Raspi3 statement should be created conditionally, or for more generic image deployment, it should execute modprobe
commands conditionally (preferred probably).
Any thought?
As a user, I want to have access to the volumio wifi hotspot when I do have use of any wifi networks, so that I will always have some means to connect to the volumio service.
Related Issues:
Use Cases
I think it could be useful to add raspi-config. There is some feature useful.
I did it like that :
wget http://archive.raspberrypi.org/debian/pool/main/r/raspi-config/raspi-config_20151019_all.deb
apt-get install libnewt0.52 whiptail parted triggerhappy lua5.1
dpkg -i raspi-config_20151019_all.deb
If a swap partition is required, I want any dynamically created swap files to be used as a last resort, so that any pre-allocated swap areas (in particular swap partitions) have priority ahead of the dynamically created swap file.
For my configuration, I want to minimise the write activity on the root file system (by using a swap partition) in order to improve the robustness of the file system and improve boot times by reducing file system recovery time when the root file system is dirty.
Even with the patch, after building mpd.conf is not set tu UTF-8. I think it's because mpd is updated during the build AFTER the mpd.conf is applied.
strip:build/x86/root/usr/sbin/update-initramfs: File format not recognized strip:build/x86/root/usr/sbin/tarcat: File format not recognized strip:build/x86/root/usr/sbin/update-fonts-dir: File format not recognized strip:build/x86/root/usr/sbin/dpkg-reconfigure: File format not recognized strip:build/x86/root/usr/sbin/pam-auth-update: File format not recognized strip:build/x86/root/usr/sbin/update-rc.d: File format not recognized strip:build/x86/root/usr/sbin/update-ca-certificates: File format not recognized strip:build/x86/root/usr/sbin/grub-mkconfig: File format not recognized strip:build/x86/root/usr/sbin/nfsiostat: File format not recognized strip:build/x86/root/usr/sbin/service: File format not recognized strip:build/x86/root/usr/sbin/mksmbpasswd: File format not recognized strip:build/x86/root/usr/sbin/add-shell: File format not recognized strip:build/x86/root/usr/sbin/invoke-rc.d: File format not recognized strip:build/x86/root/usr/sbin/adduser: File format not recognized strip:build/x86/root/usr/sbin/deluser: File format not recognized strip:build/x86/root/usr/sbin/update-mime: File format not recognized strip:build/x86/root/usr/sbin/pam_getenv: File format not recognized
Size after strip1.3G build/x86/root/
Not sure how to fix this. Building the x86 image on Ubuntu 14.04 didnt work either. I basically followed the directions in readme.md but is there something else I have to do before running the build script? I really just want an x86 image to run on an old thin client. I can't find anywhere to download this image so I tried building it myself.
With last build script (commit 241e251 ) a npm install is needed so that node starts properly
command used:
cd build
./build.sh -b arm -d pi -v 2.0
As we don't have anywhere else to post questions/suggestions/solutions for porting volumio from debian jessie to stretch, I opened this issue.
There is no plan yet to port, this is considered to be staging info only
Anyone with any information on this, please comment.
raspberryconfig.sh, lines 122-130 create /usr/bin/dtoverlay-pre and /usr/bin/dtoverlay-post with 'echo'. They then try to make symlinks at the same locations, pointed to /opt/vc/bin/.
Not sure what is supposed to happen here but this doesn't look right.
(talking about the client side thing for now, not to confuse with dhcpd
server side)
I incidentally stumbled into some coherence issues in Client DHCP services:
wireless.js
seems to mostly use dhcpcd
(although some variable names may refer to the other due to historic reason).
However, dhcpcd
has no proper systemd
service set, as the service file is erroneously named .conf
. It has a real .conf file though.
On the other hand dhclient
has a proper service set and .conf file, but isc-dhcp-client
or dhcp3-client
are nowhere to be found...
Is this mix really intended or historical leftovers?
@earlchew could you help set some coherence and clean-up as per your earlier recommandations?
I guess all dhclient
related stuff should probably go away, and dhcpcd
stuff fine-tuned.
Thanks for thoughts.
When nothing is playing, the toslink gets shutoff, which is contrary to what the driver parameter is saying (refer to https://support.hifiberry.com/hc/en-us/community/posts/201491962-Toslink-light-don-039-t-turn-off?page=1#community_comment_115001631429). Is there anyway to respect the driver parameter? Having the TOSLINK/COAX output always on will help me a lot with my DAC which clicks a relay when it detects a change in the incoming signal (on/off, SR changes)
root@debian:~/volumio/build# sudo ./build.sh -b -d cubietruck -v 2.0
Build folder exist, cleaning it
mkdir: cannot create directory ‘build/-d’: File exists
./build.sh: line 101: multistrap: command not found
mount: mount point build/-d/root/dev does not exist
mount: mount point build/-d/root/proc does not exist
mount: mount point build/-d/root/sys does not exist
Cloning Volumio Node Backend
Cloning into 'build/-d/root/volumio'...
remote: Counting objects: 9233, done.
remote: Compressing objects: 100% (31/31), done.
remote: Total 9233 (delta 9), reused 0 (delta 0), pack-reused 9202
Receiving objects: 100% (9233/9233), 4.26 MiB | 749.00 KiB/s, done.
Resolving deltas: 100% (5438/5438), done.
Checking connectivity... done.
Cloning Volumio UI
Cloning into 'build/-d/root/volumio/http/www'...
remote: Counting objects: 84, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 84 (delta 0), reused 0 (delta 0), pack-reused 80
Unpacking objects: 100% (84/84), done.
Checking connectivity... done.
Adding information in os-release
./build.sh: line 129: build/-d/root/etc/os-release: No such file or directory
Base System Installed
cp: cannot create regular file 'build/-d/root/etc/mpd.conf': No such file or directory
Writing system information
./build.sh: line 142: build/-d/root/etc/os-release: No such file or directory
Unmounting Temp devices
umount: build/-d/root/dev: mountpoint not found
umount: build/-d/root/proc: mountpoint not found
umount: build/-d/root/sys: mountpoint not found
Copying Custom Volumio System Files
cp: cannot create regular file 'build/-d/root/etc/dhcp/dhclient.conf': No such file or directory
cp: cannot create regular file 'build/-d/root/etc/samba/smb.conf': No such file or directory
cp: cannot create regular file 'build/-d/root/etc/polkit-1/localauthority/50-local.d/50-mount-as-pi.pkla': No such file or directory
cp: cannot create regular file 'build/-d/root/etc/ssh/sshd_config': No such file or directory
cp: cannot create regular file 'build/-d/root/etc/systemd/journald.conf': No such file or directory
cp: target 'build/-d/root/etc/network' is not a directory
scripts/configure.sh: 63: scripts/configure.sh: cannot create build/-d/root/etc/wpa_supplicant/wpa_supplicant.conf: Directory nonexistent
chmod: cannot access 'build/-d/root/etc/wpa_supplicant/wpa_supplicant.conf': No such file or directory
Done Copying Custom Volumio System Files
This will provide OpenHome support for streaming services (Tidal, Qobuz, ...).
This is a placeholder ticket to consider adopting create_ap
as the means of creating an access point.
Considerations:
If someone wants to debug volumio they should be capable of setting up a syslog receiver. Setting up sending to a remote host is even simpler, I'll try to sort out a patch. Ideally there would be UI support as well.
I ran the build script and got these errors
Copying ARM related configuration files
mkdir: cannot create directory ‘build/arm/root/etc/wpa_supplicant/’: File exists
Done Copying Custom Volumio System Files
./build.sh: line 145: =volumio: command not found
Tried generating a bpipro image with build.sh
The generated image, when flashed, is missing uInitrd in its boot partition. Volumio thus cannot boot (kernel panic: missing init).
The image was built on a Debian 8.8 VM, all tools in "Requirements" installed.
crosslink from volumio/Volumio2#1442
UDOO x86 seems to have problems booting from SD card, SATA controller and 32GB eMMC (Advanced Plus and Ultra models). If someone attempted to boot from a M.2 and have problems, please report it here as well.
Original post: https://volumio.org/forum/card-boot-udoo-x86-t6986.html
When I'm working on a build for arm and need to rebuild, let's say the PI image, it is nice to be able to keep the build/arm directory and only re-build the image with whatever is needed for the PI.
This makes the whole thing flexible and fast (my script adaptions for odroid even re-use existing images in case they have the same date and version number).
However, when I build an X86 system, it wipes out the build tree for an existing arm architecture as well.
Would it not be nicer, to restrict removal to the build architecture you want to replace?
Trying to get x86 image working on my mid-2010 MBP (some earlier Volumio2 image did work) or under Virtualbox (converted image from .img into .vdi), and undergoing some similar first boot issues ending into recovery mode.
I'm getting over some dmesg
debugging, and incidentally noted a reported issue with improper mtab
(see attached screenshot).
mtab
related stuff in Build are only referencing mkinitramfs scripts, and in that case symbolic link seems incorrect compared to what it is supposed to be in systemd
context, as per displayed error log in screenshot:
ln -sf /proc/self/mounts /etc/mtab
Is that intended, or shall we fix it ?
Journal often complains about:
volumio systemd[1]: Cannot add dependency job for unit console-kit-daemon.service, ignoring: Unit console-kit-daemon.service failed to load: No such file or directory.
Indeed this service is nowhere to be found, and build
seems to generate an orphan link there:
https://github.com/volumio/Build/blob/master/scripts/volumioconfig.sh#L103
Shall we remove that orphan link or add consolekit
package in recipes?
From here:
volumio/Volumio2#902
Hi all trying to build an rpi image on a clean Debian install i get this error:
cp: cannot create regular file ‘build/root/usr/bin/qemu-arm-static’: Text file busy
I installed all required packages listed in the readme.
Any help is appreciated
Also what OS are you using to build this on ?
I mount the volumio_current.sqsh in volumio-2.246-2017-07-31-pi.img.zip to inspect its content.
/var/tmp
is not clean and occupied by several mega bytes:
$ ls var/tmp
mkinitramfs_B4V371 mkinitramfs_IbKY5z
$ sudo du -hs var/tmp
292M var/tmp
Also, I suggest to clean up unused file, like man and doc files using dpkg filters:
I followed the build instructions from the readme, and I am trying to build for the Orange Pi PC which is a sun8i device. I typed ./build.sh -b armv7 -d armbian_orangepipc_legacy -v 2.0 in the terminal to start buiding.
But I noticed when building that it installs u-boot+spl for sun7i instead of the correct sun8i for this device, so it will never boot. Is it possible to update the build script to support sun8i devices?
I started a thread on the armbian forums with the same question because I don't have enough coding skills to fix it myself, here you can find some more information regarding the problem.
Hi, I commented in this post volumio/Volumio2#1452 that my volumio installation (after the update from 2.246 to the latest 2.348) freezes, if my TP-LINK AC 600 Archer T2UH was plugged in. In the moment when I plug it in, volumio freezes when I try to fire a command. I noticed that, since nothing worked after the update.
xipmix asked me to open an issue here.
My pi is now running without the TP-LINK. One of the main raisons why I used the TP-LINK was, that channel 12/13 were not enabled on the pi and my router sometimes used these channels.
Today, probably after installing "http://www.fars-robotics.net/install-wifi -O /usr/bin/install-wifi", both channels are active. So everything is fine for me now, but there might be others having the same problem.
Regards, Thomas
Referenced: volumio/Volumio2#303
i2c-bcm2708
is already loaded via device tree through dtparam=i2c_arm=on
in config.txt
. Therefore i2c-bcm2708
in /etc/modules
in here tries to load it twice which may cause problems.
So, unless I'm missing something, I guess it should be removed from /etc/modules
.
Similarly, use of snd_bcm2835
in /etc/modules
is deprecated and no longer supported on 4.4 kernel.
dtparam=audio
is the default setting in config.txt
in raspbian images, which Volumio2 uses.
So we can safely remove snd_bcm2835
from /etc/modules
too.
Only would remain i2c-dev
that is required for address-based DAC detection.
Makes sense?
Ok, coming back to the /var/log/volumio.log issue :)
It is good practise to keep /var/log to 0755, following might be a good alternative.
I suggest to put the following in fstab instead of the current /var/log line:
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
tmpfs /var/log/volumio tmpfs size=20M,nodev,uid=1000,mode=0777,gid=4, 0 0
In case we do want to allow logging mpd, it could be in the volumio directory or like this:
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
tmpfs /var/log/volumio tmpfs size=20M,nodev,uid=1000,mode=0777,gid=4, 0 0
tmpfs /var/log/mpd tmpfs size=20M,nodev,uid=,mode=0777,gid=, 0 0
This way /var/log remains standard and the only thing that it needs is a small change in /volumio/app/index.js and set the file paths to /var/log/volumio/volumio.log. That's all.
Works on an Odroid C1, presumably on a PI too (can't test it, don't have one anymore).
Is there any Volumio 2 beta image for the BeagleBone Black?
As a developer, I want to read the detailed logs from wpa_supplicant, so that I can debug why client connections are failing.
On Linux, wpa_supplicant runs the following code which causes the detailed debug output printed on stdout to be lost:
static void wpa_supplicant_fd_workaround(int start)
{
#ifdef __linux__
static int fd[3] = { -1, -1, -1 };
int i;
/* When started from pcmcia-cs scripts, wpa_supplicant might start with
* fd 0, 1, and 2 closed. This will cause some issues because many
* places in wpa_supplicant are still printing out to stdout. As a
* workaround, make sure that fd's 0, 1, and 2 are not used for other
* sockets. */
if (start) {
for (i = 0; i < 3; i++) {
fd[i] = open("/dev/null", O_RDWR);
if (fd[i] > 2) {
close(fd[i]);
fd[i] = -1;
break;
}
}
} else {
for (i = 0; i < 3; i++) {
if (fd[i] >= 0) {
close(fd[i]);
fd[i] = -1;
}
}
}
#endif /* __linux__ */
}
To compensate use the -s
option:
-s = log output to syslog instead of stdout
First of all thank you for the effort to provide support for A20 devices.
I tried building the vanilla image for cubietruck with the commands provided in the instructions:
./build.sh -b arm -d armbian_cubietruck_vanilla -v 2.0
I then flashed the image with Etcher and tried to boot my cubietruck with it.
The boot process fails with the message "Ramdisk image is corrupt or invalid"
Here are some screenshots of the boot log
https://goo.gl/photos/Cm24u48CBF978ft9A
Cross-linking from volumio/Volumio2#1445
Hi,
While I was willing to install python-rpi.gpio
(to implement button shutdown), I noted apt-get install
would not make it available.
Looking at /etc/apt/sources.list
, it seems we'd rather use std definition, as in std Jessie images:
deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi
Shall we fix it in here?
This would also allow use of proper mirroring according to users' regions.
Thanks.
users maybe hope that these librarys can interger with volumio 2 rpi image.
1:wiringpi,so users can add adtional control to MPD,such as buttons and other i2c devices.
2:libasound2-plugin-equal and alsa-tools,users can adjust equalizer settings with alsa-mixer.
3:and a kernel patch script,so users can add custom audio card driver.
I noticed a lot of complaints from samba-related daemons that /var/log/samba is missing. firststart.service creates it, and it exists in the fully-booted system on the first boot.
But on subsequent boots the /var/log entry in /etc/fstab
tmpfs /var/log tmpfs nodev,uid=1000,mode=0777,gid=4, 0 0
overlays what is in the distributed image with an empty tmpfs filesystem.
I can umount the tmpfs and underneath is all the expected /var/log structure. So I wonder if what is meant here is:
tmpfs /var/log/volumio tmpfs nodev,uid=1000,mode=0777,gid=4, 0 0
i.e. reserve a special directory, owned by the volumio user, for the volumio app's log. Changing this would also require fixing the path used in /app/index.js.
Otherwise, perhaps /var/log/samba should be created on every boot, perhaps as another tmpfs
tmpfs /var/log/samba tmpfs defaults,nodev,noatime,mode=0755 0 0
Attached is a zip showing the first and second boots of a fresh 2.001, with the contents of /var/log once the system is fully started up.
firsttwoboots.zip
Just something you might want to note for other users in the Readme if they are building on Ubuntu 14.04. Multistrap is broken and fails with the following error:
Global symbol "$forceyes" requires explicit package name at /usr/sbin/multistrap line 989.
Execution of /usr/sbin/multistrap aborted due to compilation errors.
To fix this error, you just need to remove $forceyes from line 989 of /usr/sbin/multistrap. It's a known bug and has been fixed in newer versions. See https://bugs.launchpad.net/ubuntu/+source/multistrap/+bug/1313787
I'd like to see volumio support post-install boot from USB flash drives.
The first part of the boot allows initramfs/init allows imgpart and imgfile to be specified from cmdline.txt (the kernel command line options).
Then the tail of the init process starts using /dev/mmcblk0p1, and /dev/mmcblk0p3. These are mentioned in two important contexts:
As present I'm interested in the second scenario. The static part of the overlay is already retargetable by using imgpart and imgfile.
I'm thinking that perhaps imgdata can be used to retarget the dynamic part of the overlay, replacing or to begin with optionally overriding the /dev/mmcblk0p3. Looking at the source, this would only need to affect the code after:
# 4) mount a filesystem for write access to the static image
What do you think of this approach?
Copy paste follow up from #259
Quick question - would this be a good time to move to Node v8 LTS as well?
Node v6.x will go into maintenance mode in a month and half (30-04-18)
I would feel more confident in doing one change at the time, if not we might not be able to identify the root cause in case of regression.
We could upgrade node either before or later debian.
As of now we did not update node because of a misbehaving module (mdns) in newer node versions
I am also interested in the Node update, do you have any link with more details about the module misbehaviour?
No, but you can easily replicate by substituting the node version ( see https://github.com/volumio/Build/blob/master/scripts/volumioconfig.sh#L118 ) and then doing
cd /volumo
rm -rf node_modules
npm install
Hello everyone,
I've been trying to add volumio as a snapcast server however and in order to achieve such the shairport-sync must support pipes, which is not supported on the current deployment. Am I taking a wrong assumption on integrating shairport+volumio+snapcast? If so could you point me out how did you achieved it? Whenever i try to add pipes a OpenSSL package is missing.
Thanks
Best Regards,
See volumio/Volumio2 issue #98, I thinks it belongs here.
Should
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
be added to /etc/network/interfaces?
This was not noticed in the current version but only in VolumioNext.
Using a USB out to DAC, there is slight noise usually at 5s, 10s and 15s, then it's perfect. This only happens when the tracks started, it never happens after 15s of playback.
I want to raise a concern about this function, it may not be valid.
Consider what happens when you feed it with the process string '/usr/bin/sudo /sbin/dhcpcd'
function kill(process, callback) {
var all = process.split(" ");
var process = all[0];
var command = 'kill `pgrep -f "^' + process + '"` || true';
logger("killing: " + command);
return thus.exec(command, callback);
}
Splitting on spaces sets process
to the string /usr/bin/sudo
. It seems there is at least a small chance of killing the wrong sudo call. What is wanted is to kill the dhcpcd
process.
To be more sure of hitting the target, I think something like this is needed
function kill(process, callback) {
target = process.replace(/^[^\s]*\/sudo\s+/,''); // remove prefixed sudo invocation
var all = target.split(" ");
target = all[0]; // separate command from arguments
var command = 'kill `pgrep -f "^' + target + '"` || true';
logger("killing: " + command);
return thus.exec(command, callback);
}
There's a further issue; both ethernet and wireless interfaces may have a dhcpcd
process listening to them. At present the former appears in the process table as the command dhcpcd eth0
, not /sbin/dhcpcd eth0
, so it won't get shot down; but this is more by good luck than good management. I'm not sure how to resolve that one, possibly requiring the process
argument to be a suitable regex and not splitting up the string.
Hi Guys,
Do you know if the MPD version is compiled with SQLite support already?
or
Do you have steps to compile a MPD version with SQLite support?
volumio@volumio:~$ locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
setlocale(LC_ALL,"en_GB.UTF-8"); or setlocale(LC_ALL,"");
it will return -1,so I can't succeed in converting and displaying the metadata of the song,
Do you have a good solution?
jessie's locale settings:
pi@raspberrypi:~ $ locale
LANG=en_GB.UTF-8
LANGUAGE=
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.