Linux

50370 readers
1334 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
26
 
 

I have 4 old hard drives that I pulled from an old Drobo that needs to be trashed. I bought a Mediasonic 4-bay RAID enclosure that I thought would be a good upgrade, but knew going into that the drives may not work because the manual for the new enclosure specifically says to use new drives to avoid problems. The exact product is this Mediasonic one.

I don't care about the existing data on these drives, and that was originally what I thought was meant by "avoiding problems". So I tried just putting the drives in to no avail. They don't show up as drives in the file explorer. They don't show up in "Disks".

I also have an external hard drive dock - the 15 year old version of this one which does let me mount the drives and see them in Disks.

I have tried running "wipefs -a" and I've tried formatting them in Disks with no filesystem specified. I've also run parted on them, but anything I try in parted gives me the error "unrecognised disk label".

If I can't reuse these old drives then the enclosure is of less use to me than I had hoped as I don't intend to buy new drives any time soon.

Is there anything else I can try to reset these drives to a state where they'll act like new drives that have never been used before?

Update: The "tricks" haven't worked so I'm doing the full disk write using dd. It'll be a while before I have 2 disks prepped to try.

27
 
 

So I'm working on a server from home.

I do a cat /sys/class/net/eth0/operstate and it says unknown despite the interface being obviously up, since I'm SSH'ing into the box.

I try to explicitely set the interface up to force the status to say up with ip link set eth0 up. No joy, still unknown.

Hmm... maybe I should bring it down and back up.

So I do ip link set eth0 down and... I drive 15 miles to work to do the corresponding ip link set eth0 up

50 years using Unix and I'm still doing this... 😥

28
 
 

After trying out Cosmic, Gnome,KDE Plasma, and Hyprland, I feel like plasma is the most usable for me coming from Windows. It solves the gripes I had about lack of customizability while still starting me off with a familiar homebar. I will be going back and forth with gnome for a while.

I really like gnome and the sliding desktops, and all the extensions seem to make it very customizable as well, but not directly like plasma, instead you mix and match (or make) extensions to get the look you want. (correct me if im wrong, I used it for a day)

Hyprland seems very nice for multitasking but the keyboard focus of the presets ive tried doesn't really appeal to me, I like being able to just use my mouse sometimes.

Cosmic, is definitely an alpha and im interested to see what it becomes, wont be using it now.

29
 
 

Arch is aimed at people who know their shit so they can build their own distro based on how they imagine their distro to be. It is not a good distro for beginners and non power users, no matter how often you try to make your own repository, and how many GUI installers you make for it. There's a good reason why there is no GUI installer in arch (aside from being able to load it into ram). That being that to use Arch, you need to have a basic understanding of the terminal. It is in no way hard to boot arch and type in archinstall. However, if you don't even know how to do that, your experience in whatever distro, no matter how arch based it is or not, will only last until you have a dependency error or some utter and total Arch bullshit® happens on your system and you have to run to the forums because you don't understand how a wiki works.

You want a bleeding edge distro? Use goddamn Opensuse Tumbleweed for all I care, it is on par with arch, and it has none of the arch stuff.

You have this one package that is only available on arch repos? Use goddamn flatpak and stop crying about flatpak being bloated, you probably don't even know what bloat means if you can't set up arch. And no, it dosent run worse. Those 0,0001 seconds don't matter.

You really want arch so you can be cool? Read the goddamn 50 page install guide and set it up, then we'll talk about those arch forks.

(Also, most arch forks that don't use arch repos break the aur, so you don't even have the one thing you want from arch)

30
31
888
submitted 5 days ago* (last edited 4 days ago) by Lettuceeatlettuce@lemmy.ml to c/linux@lemmy.ml
 
 

My company's buyout has been completed, and their IT team is in the final stages of gutting our old systems and moving us on to all their infra.

Sadly, this means all my Linux and FOSS implementations I've worked on for the last year are getting shut down and ripped out this week. (They're all 100% Microsoft and proprietary junk at the new company)

I know it's dumb to feel sad about computers and software getting shut down, but it feels sucky to see all my hours of hard work getting trashed without a second thought.

That's the nature of a corpo takeover though. Just wanted to let off some steam to some folks here who I know would understand.

FOSS forever! ✊

Edit: Thanks, everybody so much for the kind words and advice!

32
33
 
 

I was scared off by linux for a while since everything seemed so complicated, but after the initial setup for things it seems to be superior. I thought it would only be for the lock screen but it works for anything, its so nice.

Face unlock just works on my computer for logging in, so having to setitup was part of what kept me on windows. After setting it up with howdy in 30 minutes (I didn't realize I had to add the lines to the files for each login pam thing initially), the implementation is superior to windows, it literally works everywhere without issue and no reentry, feels like using my iphone face id.

I was getting so tired of typing in my password that I was going to find a way to turn it off, this works as well as turning it off since its instant, but is obv more secure since its face unlock.

34
 
 

Context:

Reproducible builds ensure software can be rebuilt in an identical, bit-for-bit manner anywhere at any time using the same tools. This means that someone rebuilding the software from the same source code will get exactly the same results.

Why is this important? Because it’s a crucial aspect for supply-chain security.

Source: https://news.opensuse.org/2025/02/18/rbos-project-hits-milestone/

35
 
 

(Solved) This will be used in CLI mode to do some tiny programming and text file note-taking. Having WiFi would be nice. The price has got to be CHEAP. ARM is ok.

OP decided to kill windows on the Timberborn machine and go with Debian.

36
37
 
 

Hector Martin (Marcan42) was the lead developer of Asahi Linux, until he recently resigned. He had a Mastodon page where he would talk about AL development and hardware stuff, as well as frustrations dealing with kernel maintainers to upstream things like Rust stuff (long before the beef that went down this month).

Marcan has made it clear he needs a break, but I really wish he at least kept his Mastodon page up, perhaps in read-only. I'll admit, I liked his posts so much I looked at it daily. I had a bookmark keyword in Firefox: I'd type tr in the URL bar to go to https://social.treehouse.systems/@marcan.

38
39
 
 

Here's an outline of the goal of my setup:

Guest VM 0(in NAT): 192.168.101.100:80 --> Host: 192.168.86.73:8080

Guest VM 1(in NAT): 192.168.101.85:8096 --> Host: 192.168.86.73:8081

Guest 1&0: 192.168.101.100:22 --> Host: 192.168.86.73:2222

I want to forward jellyfin from a vm to a host. Unfortunately, jellyfin doesn't let me do that. Everything is alma linux.

When going to 192.168.86.73:808(0,1) in a browser, I receive unable to connect, and when I wget it, I get Connecting to 192.168.86.73:8080... failed: No route to host.

However, I can ssh into the vms from ports 2222 and 2223. This is different from my last issue where I couldn't access any ports at all, ssh or web.

I set up a hook in /etc/libvirt/hooks/qemu according to this guide, which works for ssh but doesn't work for Jellyfin. I know jellyfin is working, because from my host machine I can run wget 192.168.101.100 and it returns the jellyfin home. I also know nginx isn't the issue for the same reason.

Here is my specific hook file:

#!/bin/bash

if [ "${1}" = "Jellyfin" ]; then

   # Update the following variables to fit your setup
   # Remember to change virbr0 to virbr1 if needed.
   GUEST_IP=192.168.101.100
   GUEST_PORT=22
   HOST_PORT=2222
   GUEST_PORT2=8096
   HOST_PORT2=8081

   if [ "${2}" = "stopped" ] || [ "${2}" = "reconnect" ]; then
    /sbin/iptables -D FORWARD -o virbr1 -p tcp -d $GUEST_IP --dport $GUEST_PORT -j ACCEPT
    /sbin/iptables -t nat -D PREROUTING -p tcp --dport $HOST_PORT -j DNAT --to $GUEST_IP:$GUEST_PORT
    /sbin/iptables -D FORWARD -o virbr1 -p tcp -d $GUEST_IP --dport $GUEST_PORT2 -j ACCEPT
    /sbin/iptables -t nat -D PREROUTING -p tcp --dport $HOST_PORT2 -j DNAT --to $GUEST_IP:$GUEST_PORT2
   fi
   if [ "${2}" = "start" ] || [ "${2}" = "reconnect" ]; then
    /sbin/iptables -I FORWARD -o virbr1 -p tcp -d $GUEST_IP --dport $GUEST_PORT -j ACCEPT
    /sbin/iptables -t nat -I PREROUTING -p tcp --dport $HOST_PORT -j DNAT --to $GUEST_IP:$GUEST_PORT
    /sbin/iptables -I FORWARD -o virbr1 -p tcp -d $GUEST_IP --dport $GUEST_PORT2 -j ACCEPT
    /sbin/iptables -t nat -I PREROUTING -p tcp --dport $HOST_PORT2 -j DNAT --to $GUEST_IP:$GUEST_PORT2
   fi
elif [ "${1}" = "Nginx" ]; then

   # Update the following variables to fit your setup
   # Remember to change virbr0 to virbr1 if needed.
   GUEST_IP=192.168.101.85
   GUEST_PORT=22
   HOST_PORT=2223
   GUEST_PORT2=80
   HOST_PORT2=8081

   if [ "${2}" = "stopped" ] || [ "${2}" = "reconnect" ]; then
    /sbin/iptables -D FORWARD -o virbr1 -p tcp -d $GUEST_IP --dport $GUEST_PORT -j ACCEPT
    /sbin/iptables -t nat -D PREROUTING -p tcp --dport $HOST_PORT -j DNAT --to $GUEST_IP:$GUEST_PORT
    /sbin/iptables -D FORWARD -o virbr1 -p tcp -d $GUEST_IP --dport $GUEST_PORT2 -j ACCEPT
    /sbin/iptables -t nat -D PREROUTING -p tcp --dport $HOST_PORT2 -j DNAT --to $GUEST_IP:$GUEST_PORT2
   fi
   if [ "${2}" = "start" ] || [ "${2}" = "reconnect" ]; then
    /sbin/iptables -I FORWARD -o virbr1 -p tcp -d $GUEST_IP --dport $GUEST_PORT -j ACCEPT
    /sbin/iptables -t nat -I PREROUTING -p tcp --dport $HOST_PORT -j DNAT --to $GUEST_IP:$GUEST_PORT
    /sbin/iptables -I FORWARD -o virbr1 -p tcp -d $GUEST_IP --dport $GUEST_PORT2 -j ACCEPT
    /sbin/iptables -t nat -I PREROUTING -p tcp --dport $HOST_PORT2 -j DNAT --to $GUEST_IP:$GUEST_PORT2
   fi
fi

Here is the result of iptables -nvL:

Chain INPUT (policy ACCEPT 82683 packets, 6162K bytes)
 pkts bytes target     prot opt in     out     source               destination         
82710 6165K LIBVIRT_INP  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   16   960 ACCEPT     tcp  --  *      virbr1  0.0.0.0/0            192.168.101.100      tcp dpt:8096
  153 13152 ACCEPT     tcp  --  *      virbr1  0.0.0.0/0            192.168.101.100      tcp dpt:22
  569  219K DOCKER-USER  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
  569  219K DOCKER-ISOLATION-STAGE-1  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    0     0 DOCKER     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  docker0 !docker0  0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  docker0 docker0  0.0.0.0/0            0.0.0.0/0           
   44 32161 ACCEPT     all  --  *      br-8ac694360d19  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    0     0 DOCKER     all  --  *      br-8ac694360d19  0.0.0.0/0            0.0.0.0/0           
   45  4419 ACCEPT     all  --  br-8ac694360d19 !br-8ac694360d19  0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  br-8ac694360d19 br-8ac694360d19  0.0.0.0/0            0.0.0.0/0           
  480  183K LIBVIRT_FWX  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
  480  183K LIBVIRT_FWI  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
  301 28065 LIBVIRT_FWO  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 100K packets, 12M bytes)
 pkts bytes target     prot opt in     out     source               destination         
 100K   12M LIBVIRT_OUT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain DOCKER (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  !br-8ac694360d19 br-8ac694360d19  0.0.0.0/0            172.18.0.5           tcp dpt:2283

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DOCKER-ISOLATION-STAGE-2  all  --  docker0 !docker0  0.0.0.0/0            0.0.0.0/0           
   45  4419 DOCKER-ISOLATION-STAGE-2  all  --  br-8ac694360d19 !br-8ac694360d19  0.0.0.0/0            0.0.0.0/0           
  569  219K RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-ISOLATION-STAGE-2 (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  *      docker0  0.0.0.0/0            0.0.0.0/0           
    0     0 DROP       all  --  *      br-8ac694360d19  0.0.0.0/0            0.0.0.0/0           
   45  4419 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-USER (1 references)
 pkts bytes target     prot opt in     out     source               destination         
  569  219K RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain LIBVIRT_FWI (1 references)
 pkts bytes target     prot opt in     out     source               destination         
  179  154K ACCEPT     all  --  *      virbr1  0.0.0.0/0            192.168.101.0/24     ctstate RELATED,ESTABLISHED
    0     0 REJECT     all  --  *      virbr1  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED
    0     0 REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain LIBVIRT_FWO (1 references)
 pkts bytes target     prot opt in     out     source               destination         
  301 28065 ACCEPT     all  --  virbr1 *       192.168.101.0/24     0.0.0.0/0           
    0     0 REJECT     all  --  virbr1 *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 ACCEPT     all  --  virbr0 *       192.168.122.0/24     0.0.0.0/0           
    0     0 REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain LIBVIRT_FWX (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  virbr1 virbr1  0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0           

Chain LIBVIRT_INP (1 references)
 pkts bytes target     prot opt in     out     source               destination         
   24  2082 ACCEPT     udp  --  virbr1 *       0.0.0.0/0            0.0.0.0/0            udp dpt:53
    0     0 ACCEPT     tcp  --  virbr1 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53
    3   966 ACCEPT     udp  --  virbr1 *       0.0.0.0/0            0.0.0.0/0            udp dpt:67
    0     0 ACCEPT     tcp  --  virbr1 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:67
    0     0 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:53
    0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53
    0     0 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:67
    0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:67

Chain LIBVIRT_OUT (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     udp  --  *      virbr1  0.0.0.0/0            0.0.0.0/0            udp dpt:53
    0     0 ACCEPT     tcp  --  *      virbr1  0.0.0.0/0            0.0.0.0/0            tcp dpt:53
    3   987 ACCEPT     udp  --  *      virbr1  0.0.0.0/0            0.0.0.0/0            udp dpt:68
    0     0 ACCEPT     tcp  --  *      virbr1  0.0.0.0/0            0.0.0.0/0            tcp dpt:68
    0     0 ACCEPT     udp  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            udp dpt:53
    0     0 ACCEPT     tcp  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            tcp dpt:53
    0     0 ACCEPT     udp  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            udp dpt:68
    0     0 ACCEPT     tcp  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            tcp dpt:68

and iptables --list-rules

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-N LIBVIRT_FWI
-N LIBVIRT_FWO
-N LIBVIRT_FWX
-N LIBVIRT_INP
-N LIBVIRT_OUT
-A INPUT -j LIBVIRT_INP
-A FORWARD -d 192.168.101.100/32 -o virbr1 -p tcp -m tcp --dport 8096 -j ACCEPT
-A FORWARD -d 192.168.101.100/32 -o virbr1 -p tcp -m tcp --dport 22 -j ACCEPT
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -o br-8ac694360d19 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-8ac694360d19 -j DOCKER
-A FORWARD -i br-8ac694360d19 ! -o br-8ac694360d19 -j ACCEPT
-A FORWARD -i br-8ac694360d19 -o br-8ac694360d19 -j ACCEPT
-A FORWARD -j LIBVIRT_FWX
-A FORWARD -j LIBVIRT_FWI
-A FORWARD -j LIBVIRT_FWO
-A OUTPUT -j LIBVIRT_OUT
-A DOCKER -d 172.18.0.5/32 ! -i br-8ac694360d19 -o br-8ac694360d19 -p tcp -m tcp --dport 2283 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-8ac694360d19 ! -o br-8ac694360d19 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-8ac694360d19 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
-A LIBVIRT_FWI -d 192.168.101.0/24 -o virbr1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A LIBVIRT_FWI -o virbr1 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWI -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A LIBVIRT_FWI -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWO -s 192.168.101.0/24 -i virbr1 -j ACCEPT
-A LIBVIRT_FWO -i virbr1 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWO -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A LIBVIRT_FWO -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWX -i virbr1 -o virbr1 -j ACCEPT
-A LIBVIRT_FWX -i virbr0 -o virbr0 -j ACCEPT
-A LIBVIRT_INP -i virbr1 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr1 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr1 -p udp -m udp --dport 67 -j ACCEPT
-A LIBVIRT_INP -i virbr1 -p tcp -m tcp --dport 67 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A LIBVIRT_OUT -o virbr1 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o virbr1 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o virbr1 -p udp -m udp --dport 68 -j ACCEPT
-A LIBVIRT_OUT -o virbr1 -p tcp -m tcp --dport 68 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 68 -j ACCEPT

Keep in mind I have docker running so some rules may not be relevant.

sysctl net.ipv4.ip_forward returns net.ipv4.ip_forward = 1

I've set the firewall backend of libvirt to iptables in /etc/libvirt/network.conf:

firewall_backend = "iptables"

Trying to solve this issue originally, I switched from Rocky to Fedora, but on my rocky and alma install this worked fine both times.

Thank you so much for the continued support with my issues!

40
 
 

I upgraded my trusty old GTX1060 to a RX7600XT. Everything works as it should except for blender. It doesn't find the GPU as a rendering device.

Since the driver manager states "No drivers needed" and when running glxinfo | grep "OpenGL version" in the terminal, it outputs OpenGL version string: 4.6 (Compatibility Profile) Mesa 24.2.8-1ubuntu1~24.04.1 I figured I had all important drivers installed.

I don't know why blender won't find the GPU. Do you have any advice for a newbie?

sys specsLinux Mint 22 Cinnamon Linux Kernel 6.8.0-53-generic CPU Ryzen 7 5800x GPU RX7600XT MoBo MSI B550A-Pro RAM 16 GB @3600mHz

Solution: Didn't have ROCm installed. For anyone with the same issue, here is a link to the guide I used. I don't know if these were necessary for the solution, but here are the amd drivers, just in case ;)

41
42
 
 

Hi all, using Pop!os on my main machine and have Windows on my work PC. I use a KVM switch to go between them.

This works pretty well for the most part but one thing that's annoying is when the KVM is set to the Windows PC, and I turn on my main PC, it will turn on, but it won't output to any monitor after I switch to it.

When the KVM is switched to the main PC before booting, it boots and displays to my 3 monitors without issue.

I assume this is due to my main PC trying to find an output and if it can't find one, just boot without, I just don't know how to change that behavior and searching online for documentation or similar issues hasn't gotten me any results unfortunately.

I'm using Wayland as well if that makes a difference. AMD 7700 XT GPU.

It seems this would be managed by systemd?I'm still learning the more in depth technical bits with Linux so please correct me if I'm wrong. I'm all about trying to learn.

43
12
submitted 3 days ago* (last edited 2 days ago) by towelie@lemm.ee to c/linux@lemmy.ml
 
 

Hi all. Today I was messing around with making custom icons in Debian 12 and I was having a heck of a time. I finally figured it out and wanted to share my solution. Below is a .sh script that will automate creating and replacing existing icons.

How it works

The script takes a path to an .svg file as an input argument. It then searches the /usr/share/icons/hicolor folder's subdirectories for .pngs of a matching name, notes their resolutions, and utilizes InkScape to convert the .svg to .pngs and replace the icons.

To utilize, save the script below as an .sh file and provide it an input .svg as follows:

sudo ./icons.sh /home/USERNAME/icon.svg

(note: your input .svg file must match the name of the existing icon you are trying to replace. Check the folder path below to determine the correct name)

Script

#!/bin/bash

# Define the base directory where icons are located
BASE_DIR="/usr/share/icons/hicolor"

# Ensure the script is run as root to modify files in /usr/share/icons/hicolor
if [ "$(id -u)" -ne 0 ]; then
    echo "This script must be run with root privileges to access the icons folder."
    exit 1
fi

# Check if Inkscape is installed
if ! command -v inkscape &> /dev/null; then
    echo "Inkscape is not installed. Please install it and try again. (sudo apt install inkscape)"
    exit 1
fi

# Input SVG file filepath
INPUT_SVG="$1"
if [ -z "$INPUT_SVG" ]; then
    echo "Usage: $0 /path/to/input.svg"
    exit 1
fi

# Validate that the input SVG file exists
if [ ! -f "$INPUT_SVG" ]; then
    echo "Input SVG file does not exist."
    exit 1
fi

# Loop through all resolution folders (resolutions like 16x16, 32x32, etc.) in the /usr/share/icons/hicolor folder
for resolution_dir in "$BASE_DIR"/*x*; do
    # Check if the resolution folder contains an 'apps' subfolder
    if [ -d "$resolution_dir/apps" ]; then
        echo "Found apps folder in $resolution_dir"

        # Extract the resolution size (e.g., 16x16)
        resolution=$(basename "$resolution_dir")

        # Get the name of the input SVG file (without the .svg extension)
        base_name=$(basename "$INPUT_SVG" .svg)

        # Define the target PNG file path in the current resolution folder
        target_png="$resolution_dir/apps/$base_name.png"

        # Check if the resolution folder already contains a PNG file to replace
        if [ -f "$target_png" ]; then
            echo "Found existing $target_png. Replacing it."

            # Use Inkscape to convert the SVG to PNG at the correct resolution
            inkscape "$INPUT_SVG" --export-type=png --export-filename="$target_png" --export-width="${resolution%x*}" --export-height="${resolution#*x}"

            # Confirm creation
            if [ -f "$target_png" ]; then
                echo "Successfully created $target_png"
            else
                echo "Failed to create $target_png"
            fi
        else
            echo "No existing $target_png found. Skipping this resolution."
        fi
    else
        echo "No 'apps' folder found in $resolution_dir. Skipping."
    fi
done

echo "Icon update process complete!"
44
 
 

I like the concept of sandboxing, of device manager and restricted user, in certain cases it can be really useful to implement, and I'd like to try doing something like that on desktop.

I would install Android directly but desktop apps are usually superior in many ways.

At the same time I think stuff like qubes OS is too much..

Maybe leveraging flatpaks or docker can be a solution, toolboxes too?

I've also tried Nixos but I don't think it is what I'm looking for.

45
 
 

Hello all,

after updating to Gnome 47.4 on openSUSE Tumbleweed, all my extensions are disabled and missing from the Extension Manager, even though they're still available in ~/.local/share/gnome-shell/extensions.

Has anyone else experienced this? Any solutions?

Edit: I can install extensions, even existing ones, and they show up again with all their previous settings. Until I logout. After a fresh login I get a vanilla Gnome experience again. The permissions of the extensions folder are fine (755). I'm stumped.

Cross posted from: https://lemm.ee/post/55958455

46
47
10
submitted 4 days ago* (last edited 3 days ago) by ThelVadam@programming.dev to c/linux@lemmy.ml
 
 

EDIT: Making the specs clearer as my long-winded breakdown is causing confusions:

  • Motherboard: Asus ROG STRIX X870-F Gaming Wifi
  • CPU: AMD Ryzen 7 9700X
  • RAM: 64GB (DDR5)
  • GPU: Nvidia RTX 3070 Ti
  • Storage: (2x) WesternDigital Black SN850X (2Tb)
  • OS: Dual-Boot: Arch Linux with KDE Plasma 6 and PipeWire on one drive, Windows 11 IoT LTSC on the other.

Problem: "Line In" from the Mac Mini to the PC described above does not receive any audio whatsoever on Linux, but works perfectly fine on Windows. Trying to get Audio Loopback working on Linux so audio from the Mac Mini plays out from the PC described above.

cross-posted from: https://programming.dev/post/25416188

Hey all, I have a bit of a weird issue I’ve been struggling to fix for a little while now and am hoping a kind soul here might have the knowledge to help me figure it out.

A couple of years ago i switched from a single-system-dual-display setup to dual-system-single-display (as in one screen per system). I’ll spare the long winded explanation for it, but the gist of it is that the new system (a Mac Mini) is connected to the original, main system (custom built PC) via the motherboard’s audio jack so I can get the audio from both systems to play on the same speakers. That way the main PC focuses on the game or whatever else i’m doing, while the Mac Mini focuses on tools/streams/movies/etc. and both share the same set of speakers.

So it goes: Mac Mini (audio out) > (line in) Main PC (audio out) > Speakers

The way I had it work on Windows was by simply going to the audio settings, going to the Line In item’s properties, and checking the “listen to this device” box.

On Linux (Arch, KDE 6 if that helps at all), it was as simple as running either pactl load-module module-loopback or pw-loopback and it would work the same way as Windows out of the box.

Problem is, my motherboard (Asus TUF Gaming X570-Pro (Wi-Fi)) in the main PC died recently, so I had to get a new one (Asus ROG STRIX X870-F Gaming Wifi), and ever since, I’ve been unable to get audio loopback to work even after a clean, fresh install. Listening to device on Windows works fine still but I’m looking to completely get rid of Windows.

By default, running pw-loopback with no tinkering (which worked on the previous build) cut the audio from the main PC and replaced it by what sounds like slow steps in a very echo-y cave.

With a bit of tinkering trying to follow online guides and documentations which i’ve since undone (but the changes remained somehow) it changed to just duplicating the main PC audio with a tiny bit of delay (or at least the audio from one app on the main PC).

One thing I’ve noticed is that when I boot up my main PC, a couple of errors do show up:

Hub 10-0:1.0: config failed, hub doesn’t have any ports! (err -19)
hid-generic 0003:1532:0292.0008: No inputs registered, leaving
Bluetooth: hci0: Opcode 0x0c03 failed: -16

While seemingly unrelated to my loopback issue (hid error being my keyboard), looking those up made me realize that the motherboard IS fairly new and therefore driver support might be lacking (specifically the Bluetooth error, which I don’t care much about in all honesty), which might potentially be the root cause of loopback not working as expected.

Here are the results of some commands I see are asked about often when troubleshooting the same problem: ‘lspci | grep -i audio’

01:00.1 Audio device: NVIDIA Corporation GA104 High Definition Audio Controller (rev a1)
73:00.1 Audio Device: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt Radeon High Definition Audio Controller

Neither seems to be the motherboard (the first one being my 3060 Ti which I don’t pull audio from, the second looking like the CPU’s (AMD Ryzen 7 9700X) iGPU.

‘journalctl -p err’, or simply ‘journalctl’ don’t return anything relating to audio (essentially only returns the same keyboard and bluetooth errors mentioned above).

‘pactl info’ does return something interesting which might be the cause of the issue:

Server String: /run/user/1000/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 128
Tile Size: 65472
User Name: thelvadam
Host Name: CoreDynamics
Server Name: PulseAudio (on PipeWire 1.2.7)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left, front-right
Default Sink: alsa_output.usb-Generic_USB_Audio-00.analog-stereo
Default Source: alsa_input.usb-Generic_USB_Audio-00.analog-stereo
Cookie: 6a69:7312

The weird thing is that the Sink and Source are labeled as usb-Generic_USB_Audio despite being the audio jack ports on the back of the motherboard. Maybe I’m just dumb. The motherboard BIOS settings do have an option for “USB Audio Controller” which is enabled by default under Advanced > Onboard Devices Configuration, but disabling it completely disables any and all audio devices.

I also tried using alsamixer to see if anything was disabled. I found a “Microhone” and “Line In” that were disabled, enabled them, but no change.

Does anyone have any idea why I can’t get audio loopback to work again? I’ll gladly provide more system info if I didn’t provide enough.

Thanks in advance!-

48
 
 

This will be a bit long, so feel free to skip to the end tl;dr.

I've been a long time user of Linux. Back in the day I would burn live CDs like Slackware and Mandrake to try out. There was even that one distro that fit on a floppy, Damn Small Linux. More recently, I manage several Debian-based servers and a Raspbian system. However, I felt stuck daily-driving Windows due to game support. Thankfully, that is no longer the case, so I decided to make the switch. Just wanted to share some observations I've made in the course of that.

A little while ago, I setup a laptop for a family member with Mint, primarily based on popularity and community recommendation. At the same time, I installed Mint on a laptop and used it for a bit. It's basically a backup laptop, so the intention was to have something stable and easy to use/update. I found Mint nice at first, but some cracks started showing after a bit, and eventually I became frustrated with Cinnamon. Since I am familiar with Arch, and it allows for choice of DE (if any), I decided to stick with it for the foreseeable future.

Current Setups

  • Desktop: Arch, BTRFS, KDE, Wayland
  • Laptop: Arch, FDE, BTRFS, Hyprland
  • Home "server": Arch, Gnome, Wayland (mainly run headless, for AI workloads)

KDE

I hadn't used KDE since the days when Plasma was in beta. It was a complete mess then. Things have matured quite a bit since then, so I decided to give a shot again for the desktop. I think, mainly, I wanted to familiarity of tray icons and such.

KDE has been great! I love the amount of pointless eye-candy I can enable, and the things that can be customized. Over the last few months, I've experienced a couple crashes which seem to be related to kwin. There's also a weird issue where powerdevil (or something related to it) is resetting one or more of my monitor's brightness when it shouldn't be.

Hyprland

Since I don't recall using a tiling WM seriously, I thought it'd be fun to try out Hyprland. It also fits well with the laptop, a Thinkpad X390, having an older intel processor and constrained thermal/power situation. Because I'm lazy, I chose a mostly pre-configured setup from JaKooLit. I like the look of it, and the other ones I considered require Network-Manager, so they were a no go.

Like with KDE, Hyprland has been great! It took less time than I expected to get accustomed to it, and everything mostly just works as expected. The main hiccups seem to come from software which renders in a fixed size, which isn't surprising. I also like there is a tree-sitter plugin for the DSL.

Gnome

I hadn't used Gnome much since the old days. It was a lot different then. It's hanging out on the so-called server, but I've only used it enough to get everything setup the way I like. GDM is disabled on startup.

My experience with Gnome is mixed. I like how "sleek" it is, but not that I need to install extensions for everything. If I were to use it daily, I'm sure I'd get used to it. Even then, GSettings/dconf sucks. I really don't get the design decision to create what is essentially the Windows registry, but on Linux.

BTRFS

Previously, I mainly stuck ext2/3/4, because it was familiar and easy. In this recent switch, I was looking for some more advanced features. After looking into ZFS a bit, I decided it wasn't for me. Too complicated, not in mainline kernel. So, BTRFS it is.

After some initial confusion, I'm really happy with BTRFS. I have automated snapshots with yabsnap, which has already proven helpful when I may have clobbered a system library and everything was messed up. The transparent compression is great as well.

nvim

Having used vim for several years, it seemed fitting to migrate to nvim. I quite like the support for Lua, and the wealth of themes, plugins and so forth. Using Lazy means I can pretty much just copy over a config and be up and running on a new/remote system with no fuss.

Lutris

Lutris is what I'm using to help facilitate running Windows-only games. Ultimately, it's a very nice piece of software, but is lacking in detailed documentation and sometimes requires reviewing logs to see what might be going wrong. Something I really like is the ability to wine/proton runtimes if the default isn't working. The simple GUI layout with box art is refreshing as well.

systemd

Some people really dislike systemd, and I get it. But I like it. I've fully embraced it alongside extras like networkd, timesyncd, and resolved. Need to do something on a schedule? Write a quick service and timer, then check on it once in a while. It's not quite as succinct as cron, but I prefer the consistent declarative syntax. I was very happy to discover wg2nd, which allowed me to convert my wireguard config files into networkd configs.

Backups

I'm using borgmatic, which automates borg, for backups. This is done daily, for all important files and the system partitions. Really couldn't be easier. In contrast, there are not a lot of advanced FOSS backup solutions for Windows, so I would manually run system partition backups there.

Hardware Support

I was pleasantly surprised to find my printer, an older Canon AIO, was supported by Gutenprint. My plan was to buy a new Brother laser printer, but I managed to get the existing one to work both via USB and wireless. This is great, as the Canon still technically works and I can get random "re-manufactured" cartridges on the cheap. I say technically because it's getting more noisy over time, squeaking, and really seeming to struggle. We'll see if it holds up.

All the other stuff, aside from fingerprint reader, work as expected. This is a far cry from 10-20 years ago. Great to see.

Overall Thoughts

Linux Desktop 2025 Edition has been awesome. Basically everything works better than I expected. Crashes less than the competition in my experience. I have the freedom, as a power user, to customize the experience. There are also no ads.

That said, I still have a Windows laptop for school, because they require it. I'm hating it more every day. There is one particular piece of software that only exists for Mac/Windows which means I can't retire that system, yet. This particular school has recently bought even more into MS. I'd drop them if I knew of any alternatives that weren't caught up in the same thing.

Should you switch to daily driving Linux? Yes, especially if you have some prior experience.

tl;dr

Linux has come quite a ways in the past couple decades and now is a great experience outside of some very specialized software/hardware.

49
 
 

I have heard that linux doesn't play as nice with nvidia as others. So what type of graphics card is best for both linux and windows. And what other hardware considerations are there that I should consider when building my new PC? I machine is mainly for day to day stuff, web browsing, games, taxes...

50
91
submitted 6 days ago* (last edited 4 days ago) by heartbreaker@lemmy.world to c/linux@lemmy.ml
 
 

I want to develop a game and am considering collaborating with others, potentially even making it open-source.

To make this process smoother, I need to establish an easy-to-replicate development environment—one that can be set up by non-programmers (such as artists) but is also simple for me to configure so I can focus on actual development.

I’ve explored various options (Docker, Podman, Anaconda, NixOS, VMs), but the choices are overwhelming, and I’m unsure which one is best for my needs.

I’ve had partial success with a Fedora+i3wm virtual environment (VM), creating a plug-and-play experience. However, this setup requires extra space (~3GB for the OS) and includes software already installed on the host system. It also requires users to learn i3wm and possibly use the command line, which may not be ideal for everyone.

I would appreciate any advice on how to approach this effectively.

Edit: An example of things to setup:

  • The right .Net Sdks version
  • Git
  • Git LFS
  • Format Checks
  • VScode (+ extensions)
  • Godot (+ extensions)

Final: I have read your recommendations, researched your suggestions, and looked at what other projects use (Luanti uses docker). And I have finally decided that at least for now this might be a bit overboard. I will start with a simple setup script and setup files (such as for vscode) with instructions. And if I need to in the future I will most likely use Docker.

view more: ‹ prev next ›