That said, others here have recommended C instead or in addition to Rust or Go; this makes sense to me.
C is actively used and remains the lingua franca of low/system level programs (for the time being.) I'd also say that its relatively simple syntax and closeness to the underlying representation have a lot going for it (at least what you'd imagine the underlying assembly representation to be - hardware and clever compilers are doing a lot.)
The C language is simple, more than either Rust or Go, and can be picked up quickly, in my view. But actually understanding and using it competently is an altogether different matter.
Additionally, an absolute wealth of books introducing OS, drivers, and system and network programming topics using C exist. Projects like Xv6, Minix, and even Linux provide for code bases to run through and explore
- Computer Systems: A Programmer's Perspective [0]
- The Linux Programming Interface [1]
- Advanced Programming in the UNIX Environment [2]
- Dive into Systems [3]
And the list goes on and on.
You'll likely never write production code or push production projects in C (one hopes), but it seems to me that it remains a very useful language to be able to work with and to understand.
[0] https://www.amazon.com/Computer-Systems-Programmers-Perspect...
[1] https://www.amazon.com/Linux-Programming-Interface-System-Ha...
[2] https://www.amazon.com/Programming-Environment-Addison-Wesle...
https://www.amazon.com/Programming-Environment-Addison-Wesle...
Then, when you open it, the first non-blank page just says, centered on the page in a large, bold, type:
DON'T -- USE A LIBRARY!
[0] https://www.amazon.com/Programming-Environment-Addison-Wesle...