Even though I’ve been using computers for so long (my first was NEC PC-8801 back in 1988), I have never actually build a custom desktop myself. I am in need of a powerful Linux machine and wanted to have one cheaply, so I decided to try building one myself.
Note that the prices get updated often, so they do not necessarily reflect those when I placed orders.
|Intel Core i5-4670K 3.4GHz Quad-Core (BX80646I54670K)||228.99|
|Gigabyte GA-Z87X-UD3H ATX LGA1150 (GA-Z87X-UD3H)||159.99|
|Crucial Ballistix Tactical 8GB (1 x 8GB) DDR3-1600 (BLT8G3D1608ET3LX0)||72.99|
|Kingston SSDNow V300 Series 120GB 2.5″ SSD (SV300S37A/120G)||65.99|
|Western Digital Caviar Black 1TB 3.5″ 7200RPM (WD1002FAEX)||104.99|
|Corsair 300R ATX Mid Tower (CC-9011014-WW)||69.99|
|Corsair 600W ATX12V (CP-9020060-NA)||64.99|
|SilverStone 3.5″ to 2.5″ Bay Converter (SST-SDP08B)||9.99|
They came out fairly cheap for the power, though it is not surprising given that I skipped on graphic cards, since I won’t be gaming on this for now. (I also got SilverStone 3.5″ to 2.5″ Bay Converter (SST-SDP08B) for SSD for about $10.) Anyways, this is pretty much the cheapest desktop that I have had, and it is probably among the most powerful, in $700 – $800 range. Not bad.
Here are some pictures during the assembling process…
This actually powers on…
and getting to the POST message.
There was nothing really technically difficult about the whole process, but it still took a couple hours for me since I needed to make sure all the connections are done properly, and wanted to avoid frying anything.
At least it powered on the first time, which is great.
Updating the BIOS
The motherboad is Gigabyte GA-Z87X-UD3H. It’s pretty impressive much much customization can be done in BIOS.
It is not absolutely necessary, but when updating BIOS tends to be less dangerous before dealing with a lot of different pieces of hardware, so I decided to update it. Download the BIOS update from the Gigabyte web site. I find an upgrade (F8) to the version installed (F7).
Unfortunately, only the .exe files seem available, which normally would only work on Windows. Fortunately there is a Linux utility to extract the BIOS image from the archive:
$ sudo aptitude install p7zip $ 7za x mb_bios_ga-z87x-ud3h_f8.exe
One of the files extracted is Z87XUD3H.F8, which is the BIOS image for the version I want to update to. This file is saved to a USB stick.
Under Save & Exit in the UEFI DualBIOS menu, select Q-Flash -> Run. Choose the BIOS image on the USB stick and within a couple minutes (during which the power must be on), the BIOS will be updated.
I have done Debian/Ubuntu installation so many times now that I expect things to go smoothly for the most part. However, it turned out that the Gigabyte GA-Z87X-UD3H came with a more recent Ethernet controller (Intel I-217V Gigabit Ethernet Controller) which Debian/Wheezy Installer does not support currently. As a result, I could not install via the standard netinst medium.
I opted to burn a full installer DVD ISO onto a USB stick and do the bare minimum installation. The quickest way to create an install USB stick is like this, but I find it easier in this specific instance to use UNetbooting to create a bootable USB stick for Debian/Wheezy (stable), and simply copy the installer DVD ISO file onto the same stick (just the first DVD medium is sufficient). This is because I will need to mount the ISO image as a CD-ROM partition to make use of
a couple packages that I need to install when I update the e1000e network driver downloaded from Intel to get the network working.
Boot off the install USB stick and go through as follows. On the screen that says “Debian GNU/Linux 7.4.0 (Wheezy)”, choose Install (or Graphical Install).
- Language: English
- Country, territory, or area: United States
- Keymap to use: American English
- Driver needed by your Ethernet card: no ethernet card (Note e1000e is the one that should work, if the driver is up-to-date, which it is not on Wheezy)
- No network interfaces detected: Continue
- Hostname: (your choice)
- Root password: (your choice)
- Full name for the new user: (your choice)
- Username for your account: (your choice)
- Choose a password for the new user: (your choice)
- Select your time zone: (your choice)
I usually manually partition disks.
SCSI1 (0,0,0) (sda) - 120.0 GB ATA KINGSTON SV300S3 1.0 MB FREE SPACE #1 199.2 MB B f EFIboot #2 1.0 GB f ext4 / #3 200.3 MB f ext4 /boot #4 10.0 GB f ext4 /tmp #5 10.0 GB f ext4 /usr #6 10.0 GB f ext4 /usr/local #7 10.0 GB f ext4 /var #8 78.6 GB f ext4 /home 466.4 kB FREE SPACE SCSI2 (0,0,0) (sdb) - 1.0 TB ATA WDC WD1002FAEX-0 #5 logical 33.0 GB F swap swap #6 logical 967.2 GB F ext4 /scr1
- Use a network mirror: No (I will add this back once the network is configured)
- Participate in the package usage survey: No
- Choose software to install: SSH server (I use the box remotely often) and Standard system utilities
Reboot once the installation finishes.
Fixing the Network Interface
Log in as root.
Download the up-to-date version of e1000e source from here. Transfer the file somehow to the new Debian box (using the same USB stick used for installation works and assumed here), extract, and compile as follows. Assuming the USB stick is connected at /dev/sdc,
# cd /root # mkdir usb # mount -t vfat /dev/sdc1 usb
This just mounts the USB stick at /root/usb. Mount the installer DVD ISO at /media/cdrom, and install a couple packages necessary to build an updated module e1000e:
# mount -o loop usb/debian-7.4.0-amd64-DVD-1.iso /media/cdrom # apt-get install build-essential linux-headers-amd64
Build and install the module:
# cp usb/e1000e-18.104.22.168.tar.gz . # tar -xvzf e1000e-22.214.171.124.tar.gz # cd e1000e-126.96.36.199/src # make # make install # rmmod e1000e # modprobe e1000e
Check and see if the interface appears:
# ip addr ... should be an entry for eth0 ...
Since this is a desktop machine always connected to the network, I may add the following entry in /etc/network/interfaces:
auto eth0 iface eth0 inet dhcp
to look for the internet connection on each boot. Reboot and the network should be working.
Now that the on-board NIC is working, make sure the remote sources are added to /etc/apt/sources.list
deb http://ftp.us.debian.org/debian/ wheezy main non-free contrib deb http://security.debian.org/ wheezy/updates main contrib non-free deb-src http://security.debian.org/ wheezy/updates main contrib non-free
It is a good idea to comment out the lines for CD-ROM sources at this point.
# apt-get update # apt-get upgrade
Finally, this is the working Debian/Wheezy box!
I prefer to update the kernel at this point. Partly that is because the newer kernel has the updated e1000e which works right out of the box, so when Debian updates kernel in stable (for whatever reason) I don’t have to worry about recompiling the driver from source. Plus, version 3.2 is quite old by now.
Wake on LAN (WoL)
Unfortunately, GA-Z87X-UD3H the motherboard seems to have problem shutting down properly when Wake on LAN is enabled on BIOS (note that this could be a driver issue). I turned off WoL on BIOS.