I'm studying some basic systems programming stuff on my own. The book makes references to things like GNU, GDB, GCC, disassemblers, etc.

I would like to create a practice environment for myself. I have a Mac computer with a Windows 7 dual boot. The Mac has a Terminal application, and some sort of Unix stuff hanging around in the background. But I'm open to the idea of buying a dedicated mid-priced pure Linux/Ubuntu laptop to practice on. I also saw some books on assembly language and GNU/GCC/GDB stuff on Amazon. I think a collection of good books and a Linux computer would be a good practice environment. Plus (I think) I could run an ethernet cable 3 feet from my Macbook Pro to the Linux computer and practice some (very) basic Linux networking.

Could someone recommend a computer and books collection for this pursuit? I'm trying to get skilled at being able to use a disassembler, use the GNU tools, become fluent at reading object code.

This is the stuff I need to get good at:

unix> gcc -01 -o prog code.o main.c
unix> objdump -d code.o
(gdb) x/17xb sum

55 89 e5 8b 45 0c

push %ebp
mov %esp, %ebp
mov 0xc(%ebp), %eax

This stuff probably looks like "Chinese" to a general Java programmer. But this is the systems grit I need to get good at. I'm hoping there are some veteran programmers here who understand the learning path I'm trying to pursue.

Thanks for any ideas on what books/computer I should buy.