There's a step you're missing between CAD and G-code; it's called CAM (Computer-Aided Machining). That's where you tell the machine what tool you're using, how fast you're going, how finely and deep you want to cut, and customize the code to your particular machine (that's post-processing). There may be a good, free, open-source Linux-based CAM program out there someplace, but I've never seen it.