Jump to content

Ralphred

Member
  • Posts

    681
  • Joined

  • Last visited

Everything posted by Ralphred

  1. This is interesting, there is a bunch of stuff for "Soundblaster Recon 3Di" in the kernel source (sound/hda/patch_ca0132.c), but it's tied to SND_PCI_QUIRK(0x1458, 0xA016, "Recon3Di", QUIRK_R3DI), ...snip... SND_PCI_QUIRK(0x3842, 0x1038, "EVGA X99 Classified", QUIRK_R3DI), which is the equivalent of VEN_1458 and VEN_3842 (Gigabyte and EVGA respectively). MSI is 1462 if it's looking for a motherboard... Lets check the firmware files "ctefx[-something].bin" are being loaded (or even asked for) first: Please post the output of dmesg|grep -i "firm\|ctfx" Also the output of lspci -nnk
  2. Gentoo Rolling Release Meta OS Specs: CPU: AMD 5600X GPU: Vega64 RAM: 16 GBs DDR4 @3000MHz Motheboard: Asus b350 Monitors: 2x 1080p@75Hz DE: KDE &| DWM Pros: Does exactly what you tell it, no more, no less. Easy to mix stable, testing and untested git packages. Easy to add/customise your own packages. Cons: Does exactly what you tell it, no more, no less. Steep learning curve for the uninitiated. Quirks: Everything* compiled from source (*some larger packages have binary options) Other comments: Not really an OS, more an "OS building toolkit". My desktop OS will be 20 years old next year, distro hopping isn't a viable thing when you have more than 10 years worth of tweaks hacks and customisation, it's just a chore.
  3. Well, yes. I'm not a huge Mate expert but I know it's written using GTK, meaning to say GUI API used is GTK(3/4?). QT is "the other popular" GUI API, so a re-write of all the seen interface parts, and backend parts that need gconf etc to their QT counterparts. IMHO it would be easier to start with LXQT and add functionality to match Mate.
  4. Yeah, you can fix that with hdajackretask. I remember the instructions for "permanent fix" not working though and ended up writing a script that has to be started before alsasound. Audacity is a fly in the ointment a lot of the time because it can/will ignore layers on top of ALSA it shouldn't be, I think I got the hump with it in the end and built it without alsa support. As far as outputs only (games firefox etc) go, if you can set your default alsa PCM to loop into pipewire that should fix most things. pcm.!default { type pulse } ctl.!default { type pulse } in ~/.asoundrc should do it. That sounds like something is messing with the levels, I know pulse does when it starts up, so maybe pipewire does too, and is set to shut down on inactivity, hence it happens over and over again?
  5. Mangohud can be used to limit FPS too. "Why would I do that" you might ask, well slightly lower FPS is better than frametime spikes, and some games limit your choice of "FPS limit" to fractions of your vsync freq. EDIT: If you set a config file for mangohud, and edit said file whilst it's "live" it updates too, a bit like conky does, useful for diagnostics.
  6. Post the outputs of cat /etc/fstab grep "^/" /proc/mounts uname -a and tell us the path to the games please...
  7. Welcome to the "easier to install, harder to keep tweaked" curve. Might be time to bite the bullet and check out some upstream distros, put in the work at install time and have easier updates.
  8. Yes, it is, all AM4's are apart from the old Zen+'s, a 3600 is Zen2.
  9. Yes, use the code I've given you to programmatically modify your config file before starting fancontrol, or as I said statically compile the affected modules into your kernel. If you go the way of trying to direct udev, make notes 'cos you'll need them in 12 months when it stops working due to new "features", or a new mouse/headphones. The fact fancontrol is called with the config file in the command line means you could even go stupidly hacky future-proof by just making hwmon[n+10] config files and symlinking the correct one with a dependency service, no config template needed, no awk/sed needed, just ln and some bash substitution. Shit, fancontrol is written in bash, update it to theocontrol so it just autodetects the right hardware.
  10. Use protontricks and make sure the prefix is set to use pulse as it's sound backend.
  11. Rebuild the kernel with the "modules" in use for the hardware showing up in /sys/class/hwmon as "built in", or scrape /sys/class/hwmon/hwmon*/name in a wrapper script around effected programs and update the config/commands accordingly. Here is a nasty little hack I wrote in python to find my AMD card in hwmon (because module unloading for GPU passthrough) def findPath(self): for base,dirs,files in os.walk('/sys/class/hwmon/'): for dir in dirs: namefile=open('%s%s/name'%(base,dir)) name=namefile.readline().strip() namefile.close() if name=="amdgpu": return '%s%s/'%(base,dir) exit In fact, it's so small I can probably replicate it in bash... for dir in /sys/class/hwmon/hwmon*;do grep -q "amdgpu" $dir/name && echo $dir;done Yeah, that works...
  12. Is the only thing that sticks out, but you aid it works over net.lo so... Bridging should have no cost, have you changed the ethernet cable*, run a graphical ping, checked the disk/network logs? *cable faults aren't binary like people think, cables exist on a spectrum from "always works" to "only useful as a animal leash"
  13. Everyone is a target for 0 day attacks my botnet owning friend. When I was doing government work back in the day the IME code was on a daughter board with the onboard NIC chips, we used to bin it and install a "safe" NIC. I used to cut the release tab off of blank crimped RJ45 plugs and stick them into the redundant ports to avoid mistakes.
  14. Driver is too old, try for 23.1.x . I don't know how much of a PITA it is to use "a few bleeding edge" packages in debian**, might be easier to just build from the git repo. The AV1 PR is here https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22585, should give you a starting point if you have to go that way. **Or just wait a while until it hits main.
  15. Don't mess about with the amdgpu-pro stuff, AV1 encode was merged to mesa about 4 months ago (into 23.3), all you should need is the default kernel driver, libva and a new enough mesa (plus dependencies like LLVM etc). `vdpauinfo` and `vainfo` are your friends, and people forget that it's AMD's own engineers that write the kernel and mesa code.
  16. Your BIOS will have the ability to set a custom curve for the CPU. GPU fan control is (should) be available via /sys/class/hwmon. Each hwmon[n] directory within there provides info and/or control for a specific piece of hardware. Running `cat /sys/class/hwmon/*/name` should give an idea of what each device is.
  17. The general idea would be to have two iptables save files, one for when the vpn is down and you want "management" access, and one for for when it is up and working. Switching between configs could be done with ifup/down type scripts (if supported), hooks from the vpn package (if supported), or your own watchdog daemon looking for the interface to be up (simple bash script can do this). You need to take into account what the vpn does to iptables (if anything), and make sure not to close the ports that the vpn uses, and allow outgoing/related traffic for stuff the OS needs, other than that it's pretty straight forward, to the point it may be simpler to have both management and vpn tables loaded, and just set the jump in the default tables to the correct one.
  18. This is unnecessary, everything you need should be included out of the box*. AMD (the company) work with both the kernel and mesa teams (drivers and 3d acceleration respectively) to make it this way. *Some mint officiando wanna weigh in on if they ship DCN:2 firmware by default? I can't think of a reason not too, but assumption is the father of bad advice...
  19. Reading from the top it smells like and environment problem: Something in your ~/.bashrc or ~/.bash_profile is exporting an environment variable not set by KDE on login. Reading further it sounds like that missing envvar was a dev oversight that was fixed with a later package update.
  20. If you put the mount definition in fstab with `noauto` in the options field, that will allow the mountpoint owner/group to mount and unmount without having to raise permission. If you end up with stale mount points and file handles this can cause issues, considering the simplest solution would be to wrap the other program with a mount/dismount. If this program is supposed to be running all the time, then it becomes a little more complicated. The most robust solution would be to watch the ip/port of the device for a the cifs mount to be available, mount it, rsync all the data to a local location, dismount again, then have the "imported with another program" program point to the local location, that way you don't have "users" interacting with a potentially fragile mount point.
  21. Debian is actually a really good idea, you can cut out the cruft by just not installing it, and only install the tools for power management you want. I use an x220 Thinkpad and get about 7-8 hours out of it, I can't see it getting that battery life with useless nonsense running in the background. I have it do that hibernate/sleep thing too, so it copies the running ram to disk on sleep, then if I don't wake it up within a certain time it just shuts down into "hibernate" mode - means I can just close the lid on a Friday, and on Monday morning it still has battery life.
  22. When you use the words "long term" and then have "ddr3" in the spec list my first reaction is to recommend a ubiquitous software raid and volume management system, that way if something goes wrong with the server itself, the data can be transferred to a "new server" without having to try and find a compatible hardware raid controller. We all know how different raid levels work, so what you want to think about for long term storage is how much data will be lost if there is a catastrophic raid failure. From that point of view if you extend your raid 5/6 beyond 3/4 disks your entire data set will be lost after 2/3 drive failures. There is no reason (storage given to raid vs storage provided by raid) to extend a raid 1 - meaning dataset lost due to catastrophic failure will always limit self to that (raid set) of the whole. Now, when we are dealing with spinny disks we get to decide which part of the physical disk get used, and for proper long term storage default to the old idea of a LAID array, the idea being that it's essentially a set of raid 1 arrays where the number of arrays = number of disks. To give a proper understanding of how it works assume we have three 2TB disks, each split into 2 partitions (of 1 tb each) 1st half A and second half B. From here we formulate 3 raid 1 arrays so that: Part 1B + Part 2A = array 1 Part 2B + Part 3A = array 2 Part 3B + Part 1A = array 3 What this allows over a Raid 2,3,4,5 or 6 array is that only 2 of the disks need to be powered up for writing of new data, the rest are only woken up for reading old data. Once this is extended to more than 4 disks, if you lose two of them (as with any set of raid 1 arrays) you may not lose any data, but apposed to standard raid 1 if you lose two disks in the same array, you only lose 1/2 a disks worth of data. This is where you can be clever with the next layer, logical volume management (LVM2). LVM lets you collect all your arrays and present them as 1 disk, but you can set it up so that when one of the arrays become "degraded" is will move all that arrays data away from that array, when you come to replace the damaged disk the rebuild will be much quicker as the data is already gone, and you downgrade the risk of a secondary drive failure during the "extra rebuild load", something you can't do with raid 2-6. Stick to what you know* when doing new things, the backend stuff (software raid, LVM, samba4 for windows shares, remote access tools) is all very mature and not an issue to not have bleeding edge. Blender and GPU compute drivers, well that's a different story. The requirement of "stable backend - bleeding edge front end" screams Gentoo, but for the uninitiated that's quite a task. As far as management, if you use the lower level tools everything is possible in the shell, so just ssh. If you want to do GUI management then running X in a vnc server works fine for remote login from any OS. Yes, that's totally doable, but it's not necessary to have a whole "clone drive", you can literally "clone the drive into a file", in your main storage area. The easiest way would be to make a bootable usb with a silly little "Clone and overwrite, new clone, restore clone" menu. *If you do it right, you should be able to pull the cables, switch out the motherboard, plug in a new one and switch it on and it'll "just werk".
  23. Time for a backup and pictures of your changed settings... Once you get it working in bios with the GTX 970 alone, boot to you linux flavour or choice and get the pcids for your "passthrough" boot config, so you can craft your GRUB_CMDLINE_LINUX="iommu=pt vfio-pci.ids=xxxx:yyyy,xxxx:zzzz pcie_acs_override=downstream,multifunction" I'm not sure you need `pcie_acs_override`, but meh, I have it. If you want you can build this line using windows and the device manager, xxxx is the vendor id, yyyy is the device id for your gpu, and zzzz is the device id for the associated HDMI audio stream(s). Considering the linux nvidia drivers are all literal dogshit, using windows to get the id's is a good idea, then by the time you get to booting linux the GTX 970 is `hidden` from the kernel/udev and the nvidia driver has less chance of shitting the bed. I have a video I point people towards when doing passthrough HERE, the guy is doing the most complex form of passthrough so will inevitably talk about all the settings and concepts you need to be aware of for a less complex set-up. Personally - I'd be "optionally" passing the 6600 between both OS's (virtual and native) in a similar manner to the guy in the vid, that way I have the best GPU available for any games I choose to play, but that is an extra layer of complication that you can add once you get things behaving in the "normal" way first... I'll drop some /etc/default/grub segments that give you options to boot with a "selected" card available for passthrough: #/etc/default/grub GRUB_CMDLINE_LINUX_VHOST_CARD1="iommu=pt vfio-pci.ids=x1x1x1x1:y1y1y1y1,x1x1x1x1:z1z1z1z1 pcie_acs_override=downstream,multifunction" GRUB_CMDLINE_LINUX_VHOST_CARD2="iommu=pt vfio-pci.ids=x2x2x2x2:y2y2y2y2,x2x2x2x2:z2z2z2z2 pcie_acs_override=downstream,multifunction" Then create /etc/grub.d/51_custom_card1_vhost that looks like: #! /bin/sh set -e # grub-mkconfig helper script. # Copyright (C) 2006,2007,2008,2009,2010 Free Software Foundation, Inc. # # GRUB is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # GRUB 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 General Public License # along with GRUB. If not, see <http://www.gnu.org/licenses/>. prefix="/usr" exec_prefix="/usr" datarootdir="/usr/share" . "$pkgdatadir/grub-mkconfig_lib" export TEXTDOMAIN=grub export TEXTDOMAINDIR="${datarootdir}/locale" CLASS="--class gnu-linux --class gnu --class os" if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then OS=GNU/Linux else OS="${GRUB_DISTRIBUTOR} VHost Card 1 GNU/Linux" CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}" fi # loop-AES arranges things so that /dev/loop/X can be our root device, but # the initrds that Linux uses don't like that. case ${GRUB_DEVICE} in /dev/loop/*|/dev/loop[0-9]) GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"` ;; esac # Default to disabling partition uuid support to maintian compatibility with # older kernels. GRUB_DISABLE_LINUX_PARTUUID=${GRUB_DISABLE_LINUX_PARTUUID-true} # btrfs may reside on multiple devices. We cannot pass them as value of root= parameter # and mounting btrfs requires user space scanning, so force UUID in this case. if ( [ "x${GRUB_DEVICE_UUID}" = "x" ] && [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] ) \ || ( [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \ && [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ] ) \ || ( ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \ && ! test -e "/dev/disk/by-partuuid/${GRUB_DEVICE_PARTUUID}" ) \ || ( test -e "${GRUB_DEVICE}" && uses_abstraction "${GRUB_DEVICE}" lvm ); then LINUX_ROOT_DEVICE=${GRUB_DEVICE} elif [ "x${GRUB_DEVICE_UUID}" = "x" ] \ || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ]; then LINUX_ROOT_DEVICE=PARTUUID=${GRUB_DEVICE_PARTUUID} else LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID} fi case x"$GRUB_FS" in xbtrfs) rootsubvol="`make_system_path_relative_to_its_root /`" rootsubvol="${rootsubvol#/}" if [ "x${rootsubvol}" != x ]; then GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}" fi;; xzfs) rpool=`${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 2>/dev/null || true` bootfs="`make_system_path_relative_to_its_root / | sed -e "s,@$,,"`" LINUX_ROOT_DEVICE="ZFS=${rpool}${bootfs%/}" ;; esac title_correction_code= linux_entry () { os="$1" version="$2" type="$3" args="$4" if [ -z "$boot_device_id" ]; then boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")" fi if [ x$type != xsimple ] ; then case $type in recovery) title="$(gettext_printf "%s, with Linux %s (recovery mode)" "${os}" "${version}")" ;; *) title="$(gettext_printf "%s, with Linux %s" "${os}" "${version}")" ;; esac if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then replacement_title="$(echo "Advanced options for ${OS}" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')" quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)" title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;" grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")" fi echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/" else echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/" fi if [ x$type != xrecovery ] ; then save_default_entry | grub_add_tab fi # Use ELILO's generic "efifb" when it's known to be available. # FIXME: We need an interface to select vesafb in case efifb can't be used. if [ "x$GRUB_GFXPAYLOAD_LINUX" = x ]; then echo " load_video" | sed "s/^/$submenu_indentation/" if grep -qx "CONFIG_FB_EFI=y" "${config}" 2> /dev/null \ && grep -qx "CONFIG_VT_HW_CONSOLE_BINDING=y" "${config}" 2> /dev/null; then echo ' if [ "x$grub_platform" = xefi ]; then' | sed "s/^/$submenu_indentation/" echo " set gfxpayload=keep" | sed "s/^/$submenu_indentation/" echo ' fi' | sed "s/^/$submenu_indentation/" fi else if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then echo " load_video" | sed "s/^/$submenu_indentation/" fi echo " set gfxpayload=$GRUB_GFXPAYLOAD_LINUX" | sed "s/^/$submenu_indentation/" fi echo " insmod gzio" | sed "s/^/$submenu_indentation/" if [ x$dirname = x/ ]; then if [ -z "${prepare_root_cache}" ]; then prepare_root_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | grub_add_tab)" fi printf '%s\n' "${prepare_root_cache}" | sed "s/^/$submenu_indentation/" else if [ -z "${prepare_boot_cache}" ]; then prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | grub_add_tab)" fi printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/" fi message="$(gettext_printf "Loading Linux %s ..." ${version})" sed "s/^/$submenu_indentation/" << EOF echo '$(echo "$message" | grub_quote)' linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} EOF if test -n "${initrd}" ; then # TRANSLATORS: ramdisk isn't identifier. Should be translated. message="$(gettext_printf "Loading initial ramdisk ...")" initrd_path= for i in ${initrd}; do initrd_path="${initrd_path} ${rel_dirname}/${i}" done sed "s/^/$submenu_indentation/" << EOF echo '$(echo "$message" | grub_quote)' initrd $(echo $initrd_path) EOF fi sed "s/^/$submenu_indentation/" << EOF } EOF } machine=`uname -m` globs="$GRUB_LINUX_KERNEL_GLOBS" [ -z "$globs" ] && case "x$machine" in xi?86 | xx86_64) globs="/boot/vmlinuz-* /vmlinuz-* /boot/kernel-*" ;; *) globs="/boot/vmlinuz-* /boot/vmlinux-* /vmlinuz-* /vmlinux-* /boot/kernel-*" ;; esac list= for i in ${globs} ; do if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi done prepare_boot_cache= prepare_root_cache= boot_device_id= title_correction_code= # Extra indentation to add to menu entries in a submenu. We're not in a submenu # yet, so it's empty. In a submenu it will be equal to '\t' (one tab). submenu_indentation="" is_top_level=true while [ "x$list" != "x" ] ; do linux=`version_find_latest $list` gettext_printf "Found linux image: %s\n" "$linux" >&2 basename=`basename $linux` dirname=`dirname $linux` rel_dirname=`make_system_path_relative_to_its_root $dirname` version=`echo $basename | sed -e "s,^[^0-9]*-,,g"` alt_version=`echo $version | sed -e "s,\.old$,,g"` linux_root_device_thisversion="${LINUX_ROOT_DEVICE}" initrd_early= for i in ${GRUB_EARLY_INITRD_LINUX_STOCK} \ ${GRUB_EARLY_INITRD_LINUX_CUSTOM}; do if test -e "${dirname}/${i}" ; then initrd_early="${initrd_early} ${i}" fi done initrd_real= for i in "initrd.img-${version}" "initrd-${version}.img" \ "initrd-${alt_version}.img.old" "initrd-${version}.gz" \ "initrd-${alt_version}.gz.old" "initrd-${version}" \ "initramfs-${version}.img" "initramfs-${alt_version}.img.old" \ "initrd.img-${alt_version}" "initrd-${alt_version}.img" \ "initrd-${alt_version}" "initramfs-${alt_version}.img" \ "initramfs-genkernel-${version}" \ "initramfs-genkernel-${alt_version}" \ "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \ "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do if test -e "${dirname}/${i}" ; then initrd_real="${i}" break fi done initrd= if test -n "${initrd_early}" || test -n "${initrd_real}"; then initrd="${initrd_early} ${initrd_real}" initrd_display= for i in ${initrd}; do initrd_display="${initrd_display} ${dirname}/${i}" done gettext_printf "Found initrd image: %s\n" "$(echo $initrd_display)" >&2 fi config= for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do if test -e "${i}" ; then config="${i}" break fi done initramfs= if test -n "${config}" ; then initramfs=`grep CONFIG_INITRAMFS_SOURCE= "${config}" | cut -f2 -d= | tr -d \"` fi if test -z "${initramfs}" && test -z "${initrd_real}" ; then # "UUID=" and "ZFS=" magic is parsed by initrd or initramfs. Since there's # no initrd or builtin initramfs, it can't work here. if [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] \ || [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ]; then linux_root_device_thisversion=${GRUB_DEVICE} else linux_root_device_thisversion=PARTUUID=${GRUB_DEVICE_PARTUUID} fi fi # The GRUB_DISABLE_SUBMENU option used to be different than others since it was # mentioned in the documentation that has to be set to 'y' instead of 'true' to # enable it. This caused a lot of confusion to users that set the option to 'y', # 'yes' or 'true'. This was fixed but all of these values must be supported now. if [ "x${GRUB_DISABLE_SUBMENU}" = xyes ] || [ "x${GRUB_DISABLE_SUBMENU}" = xy ]; then GRUB_DISABLE_SUBMENU="true" fi if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xtrue ]; then linux_entry "${OS}" "${version}" simple \ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_VHOST_CARD1}" submenu_indentation="$grub_tab" if [ -z "$boot_device_id" ]; then boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")" fi # TRANSLATORS: %s is replaced with an OS name echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" | grub_quote)' \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {" is_top_level=false fi linux_entry "${OS}" "${version}" advanced \ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_VHOST_CARD1}" if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then linux_entry "${OS}" "${version}" recovery \ "single ${GRUB_CMDLINE_LINUX}" fi list=`echo $list | tr ' ' '\n' | fgrep -vx "$linux" | tr '\n' ' '` done # If at least one kernel was found, then we need to # add a closing '}' for the submenu command. if [ x"$is_top_level" != xtrue ]; then echo '}' fi echo "$title_correction_code" and a /etc/grub.d/52_custom_card2_vhost that does an s/CARD1/CARD2/ on the above. Disclaimer: I use static kernels w/o module loading, so initrd's and similar are a layer of useless nonsense for me; the above grub helper script(s) should work with these things regardless (as I "stole" them), but you may need to tinker depending on your linux flavour.
  24. It's daemon.conf you need to change, uncomment and modify ; default-sample-format = s16le ; default-sample-rate = 44100 ; alternate-sample-rate = 48000 to suit your needs. Be aware daemon.conf can reside in ~/.config/pulse as well as /etc/pulse/. Running pulseaudio --dump-conf will let you see which config files are active, and what actual parameters are changed from default.
×