I have had this issue with my audio volume resetting to 100% after reboot ever since I started using Linux two years ago.
Basically the advice given above by GigabyteProductions is leading me to the right place, and it should really be working, but it isn't working on my system. So I had to look a little further, and I have learnt a great deal, albeit not without pain.
Referring to the bug report https://bugs.launchpad.net/ubuntu/+source/alsa-utils/+bug/449783 I found some useful clues to my problem. In the default /etc/pulse/default.pa you will find these entries:
### Automatically restore the volume of streams and devices
In the above mentioned bug report in comment#13 the user mentions that by adding
load-module module-volume-restore to default.pa, had sorted out the issue for him, although in comment #16 it points out that pulseaudio started from the command line warns of the module being deprecated, and that module-stream-restore be used instead. Pulseaudio tries to load module-stream-restore twice, which then causes it to crash. At reboot pulseaudio doesn't initiate and the last ALSA master volumes are restored automatically. This isn't a good idea for various reasons. A better option would be to remove PulseAudio altogether, if the object is to only have the alsa volumes restored after reboot, or startup generally, rather than to have pulseaudio hanging/ crashing due to a deprecated module.
I ended up disgruntled and I actually removed PulseAudio, thinking that I could live without it, since I have a fairly basic sound setup, but it only took me a short while to discover the drawbacks, and I installed it again. Back at square one, I went through every available on-line resource to get the volumes restored with PulseAudio server simultaniously running. Nothing worked...
The ALSA volume settings are saved with the command:
# alsactl store
Volume settings are saved to
/var/lib/alsa/asound.state by default. To save these settings, and to retrieve them with
# alsactl restore you need root.
I set up a startup script in /etc/init.d (and updated update-rc.d) but it proved ineffective. The script would run correctly, but the result gets cancelled shortly after login by PulseAudio and you end up with volumes set to 100% again. I figured that the only way to get ahead of PulseAudio would be to kill the server, start it again and then restore the settings while the server is running, after login in, to restore the alsa settings.
Another approach is to instruct alsactl to store the volume setting to the home folder so you can run a script calling it without root. I created the directory
/home/<user>/.config/alsa/ and I entered:
alsactl -f /home/<user>/.config/alsa/asound.state store
I added a new entry in my Settings -->Session-and-Startup menu by entering the name "alsa-restore" and the command
alsactl restore -f /home/<user>/.config/alsa/asound.state and rebooted. Once again I had no luck, and I was getting close to running out of options, and patience.
But then, I saw the light! I wrote a shell script, named it
sound-restore.sh and placed it in a folder in my home directory called
/home/<user>/scripts/ containing these lines:
pulseaudio -k #just in case pulseaudio is already running
alsactl -f /home/<user>/.config/alsa/asound.state restore
I made the file executable with
sudo chmod+x and I went back to the Session and Startup dialog and changed the command in my autostart item to
sh /home/<user>/scripts/sound-restore.sh. Make sure that the preset startup item named "PulseAudio Sound System" is unchecked. After the next reboot the volume settings were restored to the previous settings at last! I've been testing it for a while and it works perfectly fine, and with the pulseaudio daemon running happily in the background.
Linux Mint 17.1 XFCE
PCI soundcard: ESS Technology ES1938 Solo-1