Raspberry Pi - Install on HDD

Hello!

I’m new to Volumio and first of all I want to say thank you for this great project! I installed Volumio yesterday and everything works out of the box or with only little effort. Also the handling is very convenient. I am more than impressed!

There is one little problem left:

For my usecase, I wanted the music stored to a drive directly connected to my Raspberry Pi 3. I therefore bought a WDLabs PiDrive with 1 TB storage. The package also included a 4 GB sd card.

I read, that 4 GB is below the recommended size for the SD card. On the other hand, my hard drive has plenty of space. I therefore reserved a partition of 10 GB on my HDD. However, my problem is, that I don’t know how to make Volumio use this partition.

On other systems, it is enough to copy everything from the root ("/") to the hard drive partition and change

root=/dev/mmcblk0p2

to

root=/dev/sda1

in “/boot/cmdline.txt”

In Volumio this seems to be a bit different.

First of all, there is no root entry in “/boot/cmdline.txt”.

Furthermore (and most likely connected to that), as Volumio primarily works in a ramdisc (I think it does?), it doesn’t seem like a good idea to copy the already mounted files to the hard disc.

My idea would be to copy the content of the sd card to /dev/sda1 and then change something in “/boot/cmdline.txt” - maybe

imgpart=/dev/sda1

but I am quite unsure if this would work.

Can you help me to use the hard drive for my Volumio installation without breaking anything?

Thank you in advance!

No expert here, but I don’t think that things are that simple. Volumio uses Squashfs (have a Google). It would seem to me that you are making a great deal of work for yourself just in order to use your 4GB SD card.

BTW I have seen several posts on the forums where people are using 4GB cards.

Thank you for your reply!

Do you mean use the HDD? I don’t really need want to use the SD card…

I don’t have the SD card at hand at the moment, but I think it is formatted as FAT and there are just some squashfs-files on the SD card, right?

So far I wouldn’t know a reason why these files cannot be moved to the HDD, or are there any?

Maybe 4 GBs are enough anyway (however, Michelangelo stated something different here). I just want to make sure not to run in any problems later (maybe when it comes to a software update).

Maybe I could deal with any problems arising later, but the whole setup is not for me but for my mother who would probably not be able to solve a storage shortage…

Sorry my mistake. Still, I think I would just use a standard Volumio image on an sd card, and use your hdd for you music.

Yes, I remember reading somewhere that 8GB was recommended, but as I said some people have reported that they are using 4GB. Personally for the cost difference I would just use a larger card.

You are more than right! The price of a 16 GB SD card (about 10 $) does in no way justify the whole discussion.

But what to do with the 4 GB SD card then? It is too small to use it for anything else…

I perfectly understand if you don’t like to follow my odd interest in searching a solution for this problem, just because of … reasons :wink:

But if you (or somebody else) shares my (academic) interest, I would be glad to hear your thoughts.

Apart from that: I just tried copying the content of /imgpart to /mnt/rootfs (where /dev/sda1 is mounted) and changed “imgpart=/dev/mmcblk0p2” to “imgpart=/dev/sda1”. However, that didn’t work.

I cannot read the whole boot log (is it stored somewhere?). However, in the end the raspi says:

PANIC: Attempted to kill init exitcode=0x00000100

Hello!, I needed the same, and I did not find any information on the web. But after hours of trying, I found how to make it work.

First, before the actual system starts, the raspberry has to boot a very small image “volumio.initrd” which has a few programs to configure the system boot, in that file is where you specify what to mount and where, by I needed to change that file to accept more commands in “cmdline.txt”, to specify the system partition and the partition to save the data.

In summary you need to do the following:

  1. copy the file “volumiomod.initrd” to the “boot” partition of the SD card.

cp path/to/volumiomod.initrd /boot/

  1. in config.txt change the line “initramfs volumio.initrd” to “initramfs volumiomod.initrd”

cp /boot/config.txt /boot/config.txt.resp && sed -ie ‘s/volumiotest2.initrd/volumiomod.initrd/’ /boot/config.txt

  1. add new options to “cmdline.txt”, datapart = …; sysdev = …; For me it is the following

cp /boot/cmdline.txt /boot/cmdline.txt.resp && sed -ie ‘s:imgpart=/dev/mmcblk0p2 imgfile=/volumio_current.sqsh:imgpart=/dev/sda2 imgfile=/volumio_current.sqsh datapart=/dev/sda3 sysdev=/dev/sda:’ /boot/cmdline.txt

  1. Restart and hope for the best.

One more thing, the boot partition will be the sd card, so if there is a file named “resize-volumio-datapart”, the hard drive will be resized and I do not know what happens if you have information there. If you copy the volume image to HD like to SD, resizing works fine.

Another way to do the same, would be to leave everything in a partition without squashfs, to define that partition as root. But similarly you have to modify the file “volumio.initrd”

Regards!


I can not upload a file with extension “initrd”, so I send it compressed, to decompress it is

tar -zxvf volumiomod.tar.gz

volumiomod.tar.gz (8.64 MB)

With a raspberry pi 3 you dont need a micro sd card to boot, it can also be done from a usb drive. I did that successfully with a new raspbian image.
The pi has to be prepared though setting a boot flag to one, instructions here: raspberrypi.org/blog/pi-3-b … rage-boot/

With volumio I got into trouble, I succesfully flashed the same usb drive with the most recent volumio2 image. The boot was initiated, only it didnt complete. I have been modifying the cmdline.txt, but altering it didnt work either. It doesnt recognise /dev/sda, /dev/sda1 2 and 3.

Any suggestions?
You might consider this a feature request.

Thanks for all the great work on volumio!

Update!
With the help of the above posts I feel I am getting closer to the solution, as errors are getting less.

This is my cmdline.txt. I alsoused the volumiomod attached by lokko62 and updated config.txt accordingly
splash quiet plymouth.ignore-serial-consoles sysdev=/dev/sda root=/dev/sda1 dwc_otg.lpm_enable=0 dwc_otg.fiq_enable=1 dwc_otg.fiq_fsm_enable=1 dwc_otg.fiq_fsm_mask=0x3 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 imgpart=/dev/sda2 imgfile=/volumio_current.sqsh datapart=/dev/sda3 elevator=noop rootwait smsc95xx.turbo_mode=N bootdelay=5 logo.nologo vt.global_cursor_default=0 loglevel=0

My next noob guess is that volumio.initrd needs to be altered. I am clueless on how to do that though…

Any help is appreciated :slight_smile:

Until it is supported (unsure about any plan for that), you may want to try running Volumio through Berryboot: it can then run out USB drive or networked iSCSI partition.
Make sure you understand known-limitations.

Its not that complicated, volumio is mounted as read only. The overlay portion is writeable, which is mounted on the DATAPART. The only caveat is that SD card need to have enough space to hold the readonly volumio portion.

I added an extra parameter called DATAPART to the initrd file to change the location of the writeable overlay. The default is /dev/sda2, since /dev/sda1 is used for updates to volumio firmware.

mkdir vtemp
cd vtemp
gunzip -c /boot/volumio.initrd | cpio -i

We should should be able to see the contents of the initrd file. Make the following changes to the init file,

sudo nano init
  1. DATAPART="/dev/sda2
#Defaults which may be overridden by cmdline parameters
USE_KMSG="yes"
HWDEVICE="empty"
BOOTDEV="mmcblk0"
DATAPART="/dev/sda2"
  1. Resize DATAPART
# if data partition needs to be resized
#mount -t auto /dev/${BOOTDEV}p1 /boot
if [ -e "/boot/resize-volumio-datapart" ]; then
print_msg "Re-sizing Volumio data partition"
  END="$(parted -s /dev/${BOOTDEV} unit MB print free | grep Free | tail -1 | awk '{print $2}' | gr$
  parted -s /dev/${BOOTDEV} resizepart 3 ${END}
  e2fsck -fy ${DATAPART}
  resize2fs ${DATAPART}
  print_msg "Volumio data partition succesfully resized"
  parted -s /dev/${BOOTDEV} unit MB print
  rm /boot/resize-volumio-datapart
fi
  1. Mount writeable portion on the DATAPART we specified
# 4) mount a filesystem for write access to the static image
# unclear: memory size? -o size=1024M
[ -d /mnt/ext ] || mkdir -m 777 /mnt/ext
mount -t ext4 -o noatime ${DATAPART} /mnt/ext

Save your changes and recompress.

mv /boot/volumio.initrd /boot/volumio.initrd.old
find . | cpio -H newc -o | gzip -9 > /boot/volumio.initrd

Reboot and setup volumio same as before.
Enjoy !