Showing posts with label subversion. Show all posts
Showing posts with label subversion. Show all posts

Wednesday, July 18, 2007

Using Subversion clients with Team Foundation Server

Brian Harry tells us about SvnBridge, a server bridge that allows Subversion clients to connect to TFS.

Sunday, April 15, 2007

Quick-and-dirty Subversion on a Virtual Machine

(In progress.)

I've gotten busy and my series about Subversion on a LinkStation is going to have to be put on hold. But I really need a Subversion server in the mean time.

In a previous post I'd set up VMWare Server on a spare laptop. I'm going to use that to create a virtual machine (VM) that'll run Subversion.

How quick is this?

All right, it's not that quick. If I were really in a hurry, I'd do one of these things instead:
  • Get the free(!) Subversion Virtual Machine from Young Technologies.
  • Go to wush.net and sign up for one of their US$15/month "Professional" packages (1 SVN Repository and 2 GB disk space).

But setting up a VM-based Subversion server fits into my long-term plans to place Subversion on a LinkStation, especially if I make the VM very similar to a LinkStation running FreeLink.

How dirty is this?

A little dirty. When we're done with this quick-and-dirty setup there will be some some significant shortcomings. (I'll be addressing these shortcomings in my LinkStation project.)
  • We won't have a backup and recover plan in place.
  • We won't have an uninterruptible power supply, so a loss of power could mess everything up.
  • We'll be using the default HTTPS port of 443. We really ought to change that to some other port so that attackers can't easily find the port.
  • We'll use apt-get to install things via packages. To allow ourselves to quickly integrate any future security fixes we really should download the source code into a branched repository and build from our own customized branch of that source code.
  • Since we'll just plug it into our network the server will have access to the Internet. This will be handy when we were setting up the machine and we need stuff from, say, http://security.debian.org/debian-security/ . But we really don't want a server to have blanket Internet access, in case a bad guy manages to log in and wants to send or receive stuff. We really want to put the server on its own subnet and not bridge that subnet onto the Internet.
  • We run Samba on the machine so other machines on the network can find it. Don't even get me started on what a bad idea this is, security-wise.

Assumptions
  • You've got a VMWare Server on your network. (If you haven't, see my post "Quick-and-dirty VMWare Server".)
  • You want to run Subversion in its most flexible security mode; that is, using WebDAV.

Planning sheet.
Following along with your own setup? For any option where your setup varies from mine fill in the yellow section.
For...J.R. used...But I'll use...
Operating systemDebian "etch" 4.0 release 
Machine nameqad-svn 
Domain namehomelan 
Size of the first virtual hard drive (hda)8.0 GB 
Size of the second virtual hard drive (hdb)350 GB 
Base directory for Subversion settings and repositories/srv/svn 
root password(He's not telling.) 
Other user accountsvnadmin 
Other user account's password(He's not telling.) 


Download the ISO for installing Debian.
  • Find a Debian install ISO. (I want my virtual machine to match as closely as possible the FreeLink installation, which uses a variant of the Debian "Sarge" 3.1 release. At first I tried to install Sarge, but that proved to be difficult because [I think] the installer doesn't like the fact that the online portion of the install points to files that work for the latest release, Debian "Etch" 4.0. So I went with Etch instead and chose debian-40r0-i386-netinst.iso .) Find your CD-ROM image at http://www.debian.org/CD/

Create a virtual machine

It might take you a while to download that ISO, so you may as well create the virtual machine while you're waiting.
  1. We're going to do some tricks with virtual disks that can't be done via a remote VMWare Server Console session. So you're going to have to do one of these two things:
    1. Sit down at the server and log in without benefit of Remote Desktop, or
    2. Connect to the server with a Remote Desktop client using the -console option.
  2. On the server, run VMware Server Console and connect to localhost.
  3. File | New | Virtual Machine...
  4. Use these options:
    • Configuration type: Custom
    • Guest operating system: Linux
    • Version: Other Linux
    • Virtual machine name:qad-svn
    • Location: C:\Virtual Machines\qad-svn
    • Make this virtual machine private: Checked
    • Virtual machine account: Local system account
    • On host startup: Power on virtual machine
    • On host shutdown:Power off virtual machine
    • Number of processors: One
    • Memory: 128MB
    • Network connection: Use bridged networking
    • SCSI Adapters: BusLogic
    • Disk: Create a new virtual disk
    • Virtual Disk Type: IDE
    • Disk size (GB): 8.0
    • Allocate all disk space now: Unchecked
    • Disk file: hda.vmdk

Configure the virtual machine

Now we're going to need that ISO, so make sure it's been downloaded before continuing.
  1. Edit virtual machine settings
  2. Connect the CD-ROM to our Debian install ISO. (Use ISO Image: C:\Virtual Machines\ISOs\Debian\etch\debian-40r0-i386-netinst.iso .)
  3. Create a second hard disk that will store our Subversion settings and repositories.
    1. Click Add...
    2. Hardware type: Hard Disk
    3. Disk: Create a new virtual disk
    4. Virtual Disk type: IDE
    5. Disk size (GB): 350.0 GB. Yes, that's a lot, but we're going to use only as much space as the data needs and grow the virtual drive as it needs more. Be really sure you set the next option correctly!
    6. Allocate all disk space noew: Unchecked. That's the option that you wanted to set correctly.
    7. Disk file: hdb.vmdk
  4. We might need to copy things to a USB device some day so we may as well add a USB controller now.
    1. Click Add...
    2. Hardware type: USB Controller
  5. At this point your Virtual Machine Settings should look something like this:

Snapshot

Now would be a good time to take a snapshot of the VM. Remember, VMWare Server only allows for one snapshot at time, so a future snapshot will replace this one.

Install Debian
  1. Start the VM.
  2. Hit Enter when prompted. Debian installation will begin.
  3. Choose language options.
    • Hostname: Use your planning sheet. (J.R. used "qad-svn".)
    • Domain name: Use your planning sheet. (J.R. used "homelan".)
  4. Partioning disks
    • hda
      • Erase entire disk: IDE1 master (hda)
      • Partitioning scheme: All files in one partition
    • hdb
      • We're going to mount all of hdb as /srv/svn
      • On the "This is an overview of your currently..." screen, select IDE1 slave (hdb)
      • Create new empty partition table on this device? Yes
      • On the "This is an overview of your currently..." screen, select the FREE SPACE item just below IDE1 slave (hdb)
      • How to use this free space: Create a new partition
      • New partition size: max
      • Type for the new partition: Primary
      • Change the mount point from /home to /srv/svn
      • Done setting up the partition
    • Finish partitioning
      • Your partitions should look something like this:
      • Finish partitioning and write changes to disk
      • (Partitioning the disks and installing the packages took a long time. I walked the dog.)
  5. Set your time zone.
  6. Installation continues.
    • Enter the root password.
    • Create the user account. Use your planning sheet. (J.R. used "svnadmin".)
    • (Installing the base system also takes a while. Another dog walk.)
    • Use a network mirror? Yes.
    • At the "Choose software to install" screen uncheck all options. We just want to install a minimal system.
    • Install the GRUB boot loader to the master boot record? Yes
    • At the "Installation complete" dialog...


      ...hit Enter and wait out the reboot.

Snapshot

Happy with your setup so far? If you're unhappy, restore that previous snapshot and try again. Aren't VMs wonderful?

Otherwise, here's another good time to take a snapshot of the VM. Although Virtual Server supports snapshots of live systems, I like to cleanly shut down the VM before I take a snapshot. (To do this, log in as root and enter shutdown -h now ). This snapshot will replace the previous one.

After the reboot

  1. Log in as root.
  2. Update the apt package list. Enter:
    apt-get update
  3. Upgrade all currently installed programs. Enter:
    apt-get upgrade
    (I didn't have anything installed, but this is a good practice if you do and it doesn't do any harm.)

Install Samba

  1. How do the Windows machines on your resolve the machine name (in my case, "qad-svn") to an IP address? One quick-and-dirty way is to enable Samba on the machine. Enter:
    apt-get install samba
    Now test it by pinging from another machine:
    ping qad-svn

Install Apache2

  1. Enter:
    apt-get install apache2
  2. Test the installation by browsing to the machine's http server (http://qad-svn) from another machine.

Install Subversion

  1. Use apt-get to install Subversion:
    apt-get install subversion
  2. Install libapache2-svn:
    apt-get install libapache2-svn
  3. Restart apache:
    /etc/init.d/apache2 restart

Configure Apache2 and Subversion

  1. Create the repository structure:
    mkdir /srv/svn/repositories
    mkdir /srv/svn/apache2
  2. Allow the apache user to access these directories:
    chown www-data:www-data -R /srv/svn
    chmod 770 -R /srv/svn
  3. Edit /etc/apache2/mods-available/dav_svn.conf to look like this:
    ...
    <Location /svn>
    ...
    SVNParentPath /srv/svn/repositories
    ...
    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /srv/svn/apache2/dav_svn.passwd
    Require valid-user
    ...
    </Location>
  4. Create a user:
    htpasswd2 -c /srv/svn/apache2/dav_svn.passwd tester
  5. Create an test project:
    su www-data
    mkdir empty
    mkdir empty/trunk
    mkdir empty/tags
    mkdir empty/branches
    svnadmin create /srv/svn/repositories/test_repository
    svn import empty file:///srv/svn/repositories/test_repository/test_project -m "initial import"
    rmdir empty/trunk
    rmdir empty/tags
    emptyrmdir empty/branches
    rmdir empty
    exit
  6. From another machine, make sure you can view the repository in a browser (http://qad-svn/svn/test_repository/)



In progress. Sources include:

Saturday, April 7, 2007

Subversion on LinkStation #5 - Linux Security and Settings

(#5 in my series about Subversion on a LinkStation.)

I needed to make a few changes to the security and settings of my newly-FreeLink-ified LinkStation. Several good articles informed my decisions:
Borrowing heavily from those sources, here's what I did:
  1. Telneted in:
    C:\>telnet linkstation
    Connecting To linkstation...

    Debian GNU/Linux 3.1 %h
    root@LinkStation:/#
  2. Tested the Internet connection:
    root@LinkStation:/# ping -c 4 www.google.com
    PING www.l.google.com (64.233.167.99) 56(84) bytes of data.
    64 bytes from py-in-f99.google.com (64.233.167.99): icmp_seq=1 ttl=237 time=18.3 ms
    64 bytes from py-in-f99.google.com (64.233.167.99): icmp_seq=2 ttl=237 time=19.1 ms
    64 bytes from py-in-f99.google.com (64.233.167.99): icmp_seq=3 ttl=237 time=15.2 ms
    64 bytes from py-in-f99.google.com (64.233.167.99): icmp_seq=4 ttl=237 time=29.1 ms

    --- www.l.google.com ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3022ms
    rtt min/avg/max/mdev = 15.212/20.457/29.167/5.239 ms
    root@LinkStation:/#
  3. Changed the root password, using a password from GRC's Ultra High Security
    Password Generator
    . (Of course, I saved that password in a very safe place.)
    root@LinkStation:/# passwd root
    Enter new UNIX password:
    Retype new UNIX password:
    passwd: password updated successfully
    root@LinkStation:/#
  4. Updated the apt package list, which took about 2 minutes to complete:
    root@LinkStation:/# apt-get update
    Get:1 http://security.debian.org stable/updates/main Packages [398kB]
    Get:2 http://security.debian.org stable/updates/main Release [113B]
    Get:3 http://mirrors.kernel.org stable/main Packages [4420kB]
    Get:4 http://mirrors.kernel.org stable/main Release [98B]
    Get:5 http://mirrors.kernel.org stable/main Sources [1323kB]
    Get:6 http://mirrors.kernel.org stable/main Release [97B]
    Fetched 6141kB in 1m1s (99.7kB/s)
    Reading Package Lists... Done
    root@LinkStation:/#
  5. Installed SSH:
    root@LinkStation:/# apt-get install ssh
    An installation prompt appeared, but I just waited and it answered "Yes" all by itself.
    Unpacking ssh (from .../ssh_1%3a3.8.1p1-8.sarge.6_powerpc.deb) ...
    Setting up ssh (3.8.1p1-8.sarge.6) ...
    Creating SSH2 RSA key; this may take some time ...
    Creating SSH2 DSA key; this may take some time ...
    Restarting OpenBSD Secure Shell server: sshd.

    root@LinkStation:/#
  6. Tested SSH with the PuTTY client on my Windows machine:
    login as: root
    Using keyboard-interactive authentication.
    Password:
    LinkStation:~#
    Once PuTTY was running, I closed the telnet session and did the rest of the work using PuTTY, 'cause it's better at ANSI.
  7. Changed the telnet root login so it will require a password. First — and this is the part that isn't covered in the README but is covered in that discussion of telnet and root at the LinkStationWiki — I rebooted:
    LinkStation:~# reboot

    Broadcast message from root (pts/1) (Sun Dec 14 23:41:08 2003):

    The system is going down for reboot NOW!
    LinkStation:~#
    I ran the vi editor:

    LinkStation:~# vi /etc/init.d/utelnetd
    and changed
    /sbin/utelnetd -l /bin/bash &
    to
    /sbin/utelnetd -l /bin/login &
    If you need to know how to use the vi editor, try Tobias von Petersdorff's "vi basics".

  8. Tested to make sure that telnet now requires a password. Since telnet won't let us log in as root any more I needed to create a temporary user. In PuTTY:



    And then in telnet:



    Then exit from telnet and, in PuTTY:

  9. Upgraded all currently installed programs:
    LinkStation:~# apt-get upgrade
    Reading Package Lists... Done
    Building Dependency Tree... Done
    The following packages will be upgraded:
    base-config bsdutils cpio exim4 exim4-base exim4-config exim4-daemon-light
    gzip info libc6 libgcc1 libgnutls11 libpcre3 libperl5.8 libssl0.9.7
    libtasn1-2 login man-db mount passwd perl-base ppp tar util-linux zlib1g
    25 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    Need to get 11.7MB of archives.
    After unpacking 295kB of additional disk space will be used.
    Do you want to continue? [Y/n] Y
    Get:1 http://mirrors.kernel.org stable/main bsdutils 1:2.12p-4sarge1 [66.0kB]
    Get:2 http://mirrors.kernel.org stable/main gzip 1.3.5-10sarge2 [76.9kB]
    Get:3 http://mirrors.kernel.org stable/main login 1:4.0.3-31sarge9 [584kB]
    Get:4 http://mirrors.kernel.org stable/main mount 2.12p-4sarge1 [147kB]
    Get:5 http://mirrors.kernel.org stable/main libperl5.8 5.8.4-8sarge5 [998B]
    Get:6 http://mirrors.kernel.org stable/main perl-base 5.8.4-8sarge5 [790kB]
    Get:7 http://mirrors.kernel.org stable/main tar 1.14-2.3 [507kB]
    Get:8 http://mirrors.kernel.org stable/main util-linux 2.12p-4sarge1 [406kB]
    Get:9 http://mirrors.kernel.org stable/main libc6 2.3.2.ds1-22sarge6 [4238kB]
    Get:10 http://mirrors.kernel.org stable/main libgcc1 1:3.4.3-13sarge1 [90.0kB]
    Get:11 http://mirrors.kernel.org stable/main exim4-config 4.50-8sarge2 [243kB]
    Get:12 http://mirrors.kernel.org stable/main exim4-base 4.50-8sarge2 [821kB]
    Get:13 http://mirrors.kernel.org stable/main passwd 1:4.0.3-31sarge9 [566kB]
    Get:14 http://mirrors.kernel.org stable/main zlib1g 1:1.2.2-4.sarge.2 [69.7kB]
    Get:15 http://mirrors.kernel.org stable/main cpio 2.5-1.3 [67.7kB]
    Get:16 http://mirrors.kernel.org stable/main libtasn1-2 0.2.10-3sarge1 [43.0kB]
    Get:17 http://mirrors.kernel.org stable/main libgnutls11 1.0.16-13.2sarge2 [300kB]
    Get:18 http://mirrors.kernel.org stable/main libpcre3 4.5-1.2sarge1 [110kB]
    Get:19 http://mirrors.kernel.org stable/main exim4-daemon-light 4.50-8sarge2 [387kB]
    Get:20 http://mirrors.kernel.org stable/main exim4 4.50-8sarge2 [1122B]
    Get:21 http://mirrors.kernel.org stable/main info 4.7-2.2sarge2 [190kB]
    Get:22 http://mirrors.kernel.org stable/main man-db 2.4.2-21sarge1 [602kB]
    Get:23 http://mirrors.kernel.org stable/main libssl0.9.7 0.9.7e-3sarge4 [779kB]
    Get:24 http://mirrors.kernel.org stable/main base-config 2.53.10.2 [307kB]
    Get:25 http://mirrors.kernel.org stable/main ppp 2.4.3-20050321+2sarge1 [351kB]
    Fetched 11.7MB in 2m7s (92.3kB/s)
    Preconfiguring packages ...


    Say "No" to "Should man and mandb be installed 'setuid man'?".
    tar: ./postinst: time stamp 2005-09-18 02:49:51 is 55557829 s in the future
    tar: ./prerm: time stamp 2005-09-18 02:49:51 is 55557829 s in the future
    tar: ./control: time stamp 2005-09-18 02:49:55 is 55557833 s in the future
    tar: .: time stamp 2005-09-18 02:49:55 is 55557833 s in the future
    (Reading database ... 7660 files and directories currently installed.)
    Preparing to replace bsdutils 1:2.12p-4 (using .../bsdutils_1%3a2.12p-4sarge1_powerpc.deb) ...
    Unpacking replacement bsdutils ...
    Setting up bsdutils (2.12p-4sarge1) ...

    tar: ./postinst: time stamp 2006-09-16 19:14:24 is 86980102 s in the future
    tar: ./preinst: time stamp 2006-09-16 19:14:24 is 86980102 s in the future
    tar: ./prerm: time stamp 2006-09-16 19:14:24 is 86980102 s in the future
    tar: ./md5sums: time stamp 2006-09-16 19:14:26 is 86980104 s in the future
    tar: ./control: time stamp 2006-09-16 19:14:25 is 86980103 s in the future
    tar: .: time stamp 2006-09-16 19:14:26 is 86980104 s in the future
    (Reading database ... 7660 files and directories currently installed.)
    Preparing to replace gzip 1.3.5-10 (using .../gzip_1.3.5-10sarge2_powerpc.deb) ...
    Unpacking replacement gzip ...
    Setting up gzip (1.3.5-10sarge2) ...

    tar: ./postinst: time stamp 2006-08-13 18:31:45 is 84039941 s in the future
    tar: ./preinst: time stamp 2006-08-13 18:31:45 is 84039941 s in the future
    tar: ./conffiles: time stamp 2006-08-13 18:31:45 is 84039941 s in the future
    tar: ./md5sums: time stamp 2006-08-13 18:31:47 is 84039943 s in the future
    tar: ./control: time stamp 2006-08-13 18:31:46 is 84039942 s in the future
    tar: .: time stamp 2006-08-13 18:31:47 is 84039943 s in the future
    (Reading database ... 7660 files and directories currently installed.)
    Preparing to replace login 1:4.0.3-31sarge5 (using .../login_1%3a4.0.3-31sarge9_powerpc.deb) ...
    Unpacking replacement login ...
    Setting up login (4.0.3-31sarge9) ...

    tar: ./postinst: time stamp 2005-09-18 02:49:45 is 55557818 s in the future
    tar: ./prerm: time stamp 2005-09-18 02:49:45 is 55557818 s in the future
    tar: ./control: time stamp 2005-09-18 02:49:49 is 55557822 s in the future
    tar: .: time stamp 2005-09-18 02:49:49 is 55557822 s in the future
    (Reading database ... 7660 files and directories currently installed.)
    Preparing to replace mount 2.12p-4 (using .../mount_2.12p-4sarge1_powerpc.deb) ...
    Unpacking replacement mount ...
    Setting up mount (2.12p-4sarge1) ...

    tar: ./postinst: time stamp 2006-08-04 17:42:07 is 83259360 s in the future
    tar: ./md5sums: time stamp 2006-08-04 17:42:07 is 83259360 s in the future
    tar: ./control: time stamp 2006-08-04 17:42:08 is 83259361 s in the future
    tar: .: time stamp 2006-08-04 17:42:08 is 83259361 s in the future
    (Reading database ... 7660 files and directories currently installed.)
    Preparing to replace libperl5.8 5.8.4-8 (using .../libperl5.8_5.8.4-8sarge5_powerpc.deb) ...
    Unpacking replacement libperl5.8 ...
    tar: ./shlibs: time stamp 2006-08-04 17:41:47 is 83259339 s in the future
    tar: ./md5sums: time stamp 2006-08-04 17:41:47 is 83259339 s in the future
    tar: ./control: time stamp 2006-08-04 17:41:49 is 83259341 s in the future
    tar: .: time stamp 2006-08-04 17:41:49 is 83259341 s in the future
    Preparing to replace perl-base 5.8.4-8 (using .../perl-base_5.8.4-8sarge5_powerpc.deb) ...
    Unpacking replacement perl-base ...
    Setting up perl-base (5.8.4-8sarge5) ...
    tar: ./postinst: time stamp 2006-11-30 21:58:23 is 93473533 s in the future
    tar: ./preinst: time stamp 2006-11-30 21:58:23 is 93473533 s in the future
    tar: ./prerm: time stamp 2006-11-30 21:58:23 is 93473533 s in the future
    tar: ./postrm: time stamp 2006-11-30 21:58:23 is 93473533 s in the future
    tar: ./conffiles: time stamp 2006-11-30 21:55:31 is 93473361 s in the future
    tar: ./md5sums: time stamp 2006-11-30 21:58:24 is 93473534 s in the future
    tar: ./control: time stamp 2006-11-30 21:58:24 is 93473534 s in the future
    tar: .: time stamp 2006-11-30 21:58:24 is 93473534 s in the future
    (Reading database ... 7660 files and directories currently installed.)
    Preparing to replace tar 1.14-2 (using .../tar_1.14-2.3_powerpc.deb) ...
    Unpacking replacement tar ...
    Setting up tar (1.14-2.3) ...

    tar: ./preinst: time stamp 2005-09-18 02:48:15 is 55557723 s in the future
    tar: ./postinst: time stamp 2005-09-18 02:48:15 is 55557723 s in the future
    tar: ./prerm: time stamp 2005-09-18 02:48:15 is 55557723 s in the future
    tar: ./postrm: time stamp 2005-09-18 02:48:15 is 55557723 s in the future
    tar: ./conffiles: time stamp 2005-09-18 02:48:15 is 55557723 s in the future
    tar: ./control: time stamp 2005-09-18 02:48:26 is 55557734 s in the future
    tar: .: time stamp 2005-09-18 02:48:26 is 55557734 s in the future
    (Reading database ... 7660 files and directories currently installed.)
    Preparing to replace util-linux 2.12p-4 (using .../util-linux_2.12p-4sarge1_powerpc.deb) ...
    Unpacking replacement util-linux ...
    Setting up util-linux (2.12p-4sarge1) ...

    tar: ./shlibs: time stamp 2007-03-05 17:17:12 is 101664656 s in the future
    tar: ./postinst: time stamp 2007-03-05 17:17:14 is 101664658 s in the future
    tar: ./preinst: time stamp 2007-03-05 17:17:14 is 101664658 s in the future
    tar: ./postrm: time stamp 2007-03-05 17:17:14 is 101664658 s in the future
    tar: ./md5sums: time stamp 2007-03-05 17:17:16 is 101664660 s in the future
    tar: ./control: time stamp 2007-03-05 17:17:15 is 101664659 s in the future
    tar: .: time stamp 2007-03-05 17:17:15 is 101664659 s in the future
    (Reading database ... 7660 files and directories currently installed.)
    Preparing to replace libc6 2.3.2.ds1-22 (using .../libc6_2.3.2.ds1-22sarge6_powerpc.deb) ...
    Unpacking replacement libc6 ...
    Setting up libc6 (2.3.2.ds1-22sarge6) ...
    Current default timezone: 'US/Eastern'.
    Local time is now: Mon Dec 15 01:06:24 EST 2003.
    Universal Time is now: Mon Dec 15 06:06:24 UTC 2003.
    Run 'tzconfig' if you wish to change it.

    tar: ./shlibs: time stamp 2006-08-10 13:57:18 is 83764252 s in the future
    tar: ./postinst: time stamp 2006-08-10 13:57:24 is 83764258 s in the future
    tar: ./control: time stamp 2006-08-10 13:57:24 is 83764258 s in the future
    tar: ./postrm: time stamp 2006-08-10 13:57:24 is 83764258 s in the future
    tar: ./md5sums: time stamp 2006-08-10 13:57:24 is 83764258 s in the future
    tar: .: time stamp 2006-08-10 13:57:24 is 83764258 s in the future
    (Reading database ... 7699 files and directories currently installed.)
    Preparing to replace libgcc1 1:3.4.3-13 (using .../libgcc1_1%3a3.4.3-13sarge1_powerpc.deb) ...
    Unpacking replacement libgcc1 ...
    Setting up libgcc1 (3.4.3-13sarge1) ...

    tar: ./config: time stamp 2006-04-11 08:33:28 is 73290422 s in the future
    tar: ./templates: time stamp 2006-04-11 08:33:37 is 73290431 s in the future
    tar: ./postinst: time stamp 2006-04-11 08:33:41 is 73290435 s in the future
    tar: ./postrm: time stamp 2006-04-11 08:33:41 is 73290435 s in the future
    tar: ./conffiles: time stamp 2006-04-11 08:33:41 is 73290435 s in the future
    tar: ./md5sums: time stamp 2006-04-11 08:33:42 is 73290436 s in the future
    tar: ./control: time stamp 2006-04-11 08:33:42 is 73290436 s in the future
    tar: .: time stamp 2006-04-11 08:33:42 is 73290436 s in the future
    (Reading database ... 7699 files and directories currently installed.)
    Preparing to replace exim4-config 4.50-8 (using .../exim4-config_4.50-8sarge2_all.deb) ...
    Unpacking replacement exim4-config ...
    ^Atar: ./config: time stamp 2006-04-11 16:55:14 is 73320523 s in the future
    tar: ./templates: time stamp 2006-04-11 16:55:19 is 73320528 s in the future
    tar: ./postinst: time stamp 2006-04-11 16:55:27 is 73320536 s in the future
    tar: ./prerm: time stamp 2006-04-11 16:55:27 is 73320536 s in the future
    tar: ./postrm: time stamp 2006-04-11 16:55:27 is 73320536 s in the future
    tar: ./conffiles: time stamp 2006-04-11 16:55:27 is 73320536 s in the future
    tar: ./md5sums: time stamp 2006-04-11 16:55:32 is 73320541 s in the future
    tar: ./control: time stamp 2006-04-11 16:55:30 is 73320539 s in the future
    tar: .: time stamp 2006-04-11 16:55:32 is 73320541 s in the future
    Preparing to replace exim4-base 4.50-8 (using .../exim4-base_4.50-8sarge2_powerpc.deb) ...
    Unpacking replacement exim4-base ...
    tar: ./config: time stamp 2006-08-13 18:31:39 is 84039903 s in the future
    tar: ./templates: time stamp 2006-08-13 18:31:44 is 84039908 s in the future
    tar: ./postinst: time stamp 2006-08-13 18:31:45 is 84039909 s in the future
    tar: ./preinst: time stamp 2006-08-13 18:31:45 is 84039909 s in the future
    tar: ./postrm: time stamp 2006-08-13 18:31:45 is 84039909 s in the future
    tar: ./conffiles: time stamp 2006-08-13 18:31:45 is 84039909 s in the future
    tar: ./md5sums: time stamp 2006-08-13 18:31:47 is 84039911 s in the future
    tar: ./control: time stamp 2006-08-13 18:31:46 is 84039910 s in the future
    tar: .: time stamp 2006-08-13 18:31:47 is 84039911 s in the future
    Preparing to replace passwd 1:4.0.3-31sarge5 (using .../passwd_1%3a4.0.3-31sarge9_powerpc.deb) ...
    Unpacking replacement passwd ...
    Setting up passwd (4.0.3-31sarge9) ...

    tar: ./postinst: time stamp 2005-07-14 17:13:49 is 49907225 s in the future
    tar: ./preinst: time stamp 2005-07-14 17:13:49 is 49907225 s in the future
    tar: ./shlibs: time stamp 2005-07-14 17:13:10 is 49907186 s in the future
    tar: ./md5sums: time stamp 2005-07-14 17:13:50 is 49907226 s in the future
    tar: ./control: time stamp 2005-07-14 17:13:51 is 49907227 s in the future
    tar: .: time stamp 2005-07-14 17:13:51 is 49907227 s in the future
    (Reading database ... 7699 files and directories currently installed.)
    Preparing to replace zlib1g 1:1.2.2-4 (using .../zlib1g_1%3a1.2.2-4.sarge.2_powerpc.deb) ...
    Unpacking replacement zlib1g ...
    Setting up zlib1g (1.2.2-4.sarge.2) ...

    tar: ./preinst: time stamp 2005-10-02 12:04:03 is 56800638 s in the future
    tar: ./postinst: time stamp 2005-10-02 12:04:03 is 56800638 s in the future
    tar: ./prerm: time stamp 2005-10-02 12:04:03 is 56800638 s in the future
    tar: ./control: time stamp 2005-10-02 12:04:09 is 56800644 s in the future
    tar: .: time stamp 2005-10-02 12:04:09 is 56800644 s in the future
    (Reading database ... 7699 files and directories currently installed.)
    Preparing to replace cpio 2.5-1.2 (using .../cpio_2.5-1.3_powerpc.deb) ...
    Unpacking replacement cpio ...
    tar: ./shlibs: time stamp 2006-02-11 16:28:47 is 68224922 s in the future
    tar: ./postinst: time stamp 2006-02-11 16:28:48 is 68224923 s in the future
    tar: ./postrm: time stamp 2006-02-11 16:28:48 is 68224923 s in the future
    tar: ./md5sums: time stamp 2006-02-11 16:29:08 is 68224943 s in the future
    tar: ./control: time stamp 2006-02-11 16:29:07 is 68224942 s in the future
    tar: .: time stamp 2006-02-11 16:29:08 is 68224943 s in the future
    Preparing to replace libtasn1-2 0.2.10-3 (using .../libtasn1-2_0.2.10-3sarge1_powerpc.deb) ...
    Unpacking replacement libtasn1-2 ...
    tar: ./shlibs: time stamp 2006-09-20 08:07:18 is 87285633 s in the future
    tar: ./postinst: time stamp 2006-09-20 08:13:41 is 87286016 s in the future
    tar: ./postrm: time stamp 2006-09-20 08:13:41 is 87286016 s in the future
    tar: ./md5sums: time stamp 2006-09-20 08:13:51 is 87286026 s in the future
    tar: ./control: time stamp 2006-09-20 08:13:51 is 87286026 s in the future
    tar: .: time stamp 2006-09-20 08:13:51 is 87286026 s in the future
    Preparing to replace libgnutls11 1.0.16-13.1 (using .../libgnutls11_1.0.16-13.2sarge2_powerpc.deb) ...
    Unpacking replacement libgnutls11 ...
    tar: ./shlibs: time stamp 2005-08-24 15:16:00 is 53442554 s in the future
    tar: ./postinst: time stamp 2005-08-24 15:16:00 is 53442554 s in the future
    tar: ./postrm: time stamp 2005-08-24 15:16:00 is 53442554 s in the future
    tar: ./md5sums: time stamp 2005-08-24 15:16:03 is 53442557 s in the future
    tar: ./control: time stamp 2005-08-24 15:16:02 is 53442556 s in the future
    tar: .: time stamp 2005-08-24 15:16:03 is 53442557 s in the future
    Preparing to replace libpcre3 4.5-1.2 (using .../libpcre3_4.5-1.2sarge1_powerpc.deb) ...
    Unpacking replacement libpcre3 ...
    tar: ./postinst: time stamp 2006-04-11 16:55:27 is 73320521 s in the future
    tar: ./prerm: time stamp 2006-04-11 16:55:27 is 73320521 s in the future
    tar: ./md5sums: time stamp 2006-04-11 16:55:32 is 73320526 s in the future
    tar: ./control: time stamp 2006-04-11 16:55:30 is 73320524 s in the future
    tar: .: time stamp 2006-04-11 16:55:32 is 73320526 s in the future
    Preparing to replace exim4-daemon-light 4.50-8 (using .../exim4-daemon-light_4.50-8sarge2_powerpc.deb) ...
    Stopping MTA: exim4.
    Unpacking replacement exim4-daemon-light ...
    tar: ./md5sums: time stamp 2006-04-11 08:33:42 is 73290415 s in the future
    tar: ./control: time stamp 2006-04-11 08:33:42 is 73290415 s in the future
    tar: .: time stamp 2006-04-11 08:33:42 is 73290415 s in the future
    Preparing to replace exim4 4.50-8 (using .../exim4_4.50-8sarge2_all.deb) ...
    Unpacking replacement exim4 ...
    tar: ./postinst: time stamp 2006-11-21 15:37:51 is 92673064 s in the future
    tar: ./prerm: time stamp 2006-11-21 15:37:51 is 92673064 s in the future
    tar: ./postrm: time stamp 2006-11-21 15:37:51 is 92673064 s in the future
    tar: ./md5sums: time stamp 2006-11-21 15:37:54 is 92673067 s in the future
    tar: ./control: time stamp 2006-11-21 15:37:54 is 92673067 s in the future
    tar: .: time stamp 2006-11-21 15:37:54 is 92673067 s in the future
    Preparing to replace info 4.7-2.2 (using .../info_4.7-2.2sarge2_powerpc.deb) ...
    Unpacking replacement info ...
    tar: ./config: time stamp 2006-11-09 12:15:59 is 91624151 s in the future
    tar: ./templates: time stamp 2006-11-09 12:16:05 is 91624157 s in the future
    tar: ./postinst: time stamp 2006-11-09 12:16:07 is 91624159 s in the future
    tar: ./preinst: time stamp 2006-11-09 12:16:07 is 91624159 s in the future
    tar: ./prerm: time stamp 2006-11-09 12:16:07 is 91624159 s in the future
    tar: ./postrm: time stamp 2006-11-09 12:16:07 is 91624159 s in the future
    tar: ./conffiles: time stamp 2006-11-09 12:16:07 is 91624159 s in the future
    tar: ./md5sums: time stamp 2006-11-09 12:16:09 is 91624161 s in the future
    tar: ./control: time stamp 2006-11-09 12:16:09 is 91624161 s in the future
    tar: .: time stamp 2006-11-09 12:16:09 is 91624161 s in the future
    Preparing to replace man-db 2.4.2-21 (using .../man-db_2.4.2-21sarge1_powerpc.deb) ...
    Unpacking replacement man-db ...
    tar: ./templates: time stamp 2006-09-30 06:41:32 is 88144483 s in the future
    tar: ./shlibs: time stamp 2006-09-30 06:41:57 is 88144508 s in the future
    tar: ./control: time stamp 2006-09-30 06:41:55 is 88144506 s in the future
    tar: ./postinst: time stamp 2006-09-30 06:41:57 is 88144508 s in the future
    tar: ./preinst: time stamp 2006-09-30 06:41:57 is 88144508 s in the future
    tar: ./prerm: time stamp 2006-09-30 06:41:57 is 88144508 s in the future
    tar: ./postrm: time stamp 2006-09-30 06:41:57 is 88144508 s in the future
    tar: ./md5sums: time stamp 2006-09-30 06:41:58 is 88144509 s in the future
    tar: .: time stamp 2006-09-30 06:41:58 is 88144509 s in the future
    Preparing to replace libssl0.9.7 0.9.7e-3 (using .../libssl0.9.7_0.9.7e-3sarge4_powerpc.deb) ...
    Unpacking replacement libssl0.9.7 ...
    tar: ./templates: time stamp 2006-06-11 14:25:41 is 78581931 s in the future
    tar: ./postinst: time stamp 2006-06-11 14:25:43 is 78581933 s in the future
    tar: ./postrm: time stamp 2006-06-11 14:25:43 is 78581933 s in the future
    tar: ./conffiles: time stamp 2006-06-11 14:25:43 is 78581933 s in the future
    tar: ./md5sums: time stamp 2006-06-11 14:25:44 is 78581934 s in the future
    tar: ./control: time stamp 2006-06-11 14:25:44 is 78581934 s in the future
    tar: .: time stamp 2006-06-11 14:25:44 is 78581934 s in the future
    Preparing to replace base-config 2.53.10 (using .../base-config_2.53.10.2_all.deb) ...
    Unpacking replacement base-config ...
    tar: ./md5sums: time stamp 2006-06-03 23:48:55 is 77924524 s in the future
    tar: ./postinst: time stamp 2006-06-03 23:49:12 is 77924541 s in the future
    tar: ./prerm: time stamp 2006-06-03 23:49:12 is 77924541 s in the future
    tar: ./postrm: time stamp 2006-06-03 23:49:12 is 77924541 s in the future
    tar: ./conffiles: time stamp 2006-06-03 23:49:12 is 77924541 s in the future
    tar: ./control: time stamp 2006-06-03 23:49:15 is 77924544 s in the future
    tar: .: time stamp 2006-06-03 23:49:15 is 77924544 s in the future
    Preparing to replace ppp 2.4.3-20050321+2 (using .../ppp_2.4.3-20050321+2sarge1_powerpc.deb) ...
    Unpacking replacement ppp ...
    Setting up libperl5.8 (5.8.4-8sarge5) ...

    Setting up exim4-config (4.50-8sarge2) ...

    Setting up exim4-base (4.50-8sarge2) ...

    Setting up cpio (2.5-1.3) ...

    Setting up libtasn1-2 (0.2.10-3sarge1) ...

    Setting up libgnutls11 (1.0.16-13.2sarge2) ...

    Setting up libpcre3 (4.5-1.2sarge1) ...

    Setting up exim4-daemon-light (4.50-8sarge2) ...
    Starting MTA: exim4.

    Setting up exim4 (4.50-8sarge2) ...
    Setting up info (4.7-2.2sarge2) ...

    Setting up man-db (2.4.2-21sarge1) ...

    Setting up libssl0.9.7 (0.9.7e-3sarge4) ...

    Setting up base-config (2.53.10.2) ...

    Setting up ppp (2.4.3-20050321+2sarge1) ...

    LinkStation:~#
  10. Correct the LinkStation time zone setting. I'm in the U.S. Central time zone.
    LinkStation:~# tzconfig
    Your current time zone is set to US/Eastern
    Do you want to change that? [n]: y

    Please enter the number of the geographic area in which you live:


    1) Africa 7) Australia

    2) America 8) Europe

    3) US time zones 9) Indian Ocean

    4) Canada time zones 10) Pacific Ocean

    5) Asia 11) Use System V style time zones

    6) Atlantic Ocean 12) None of the above


    Then you will be shown a list of cities which represent the time zone
    in which they are located. You should choose a city in your time zone.

    Number: 3

    Alaska Aleutian Arizona Central East-Indiana Eastern Hawaii Indiana-Starke
    Michigan Mountain Pacific Samoa

    Please enter the name of one of these cities or zones
    You just need to type enough letters to resolve ambiguities
    Press Enter to view all of them again
    Name: [] Central
    Your default time zone is set to 'US/Central'.
    Local time is now: Mon Dec 15 00:18:34 CST 2003.
    Universal Time is now: Mon Dec 15 06:18:34 UTC 2003.
    LinkStation:~#
    Installed NTP.
    LinkStation:~# apt-get install ntp ntp-simple ntpdate
    Reading Package Lists... Done
    Building Dependency Tree... Done
    The following extra packages will be installed:
    ntp-server perl perl-modules
    Suggested packages:
    ntp-doc libterm-readline-gnu-perl libterm-readline-perl-perl
    Recommended packages:
    perl-doc
    The following NEW packages will be installed:
    ntp ntp-server ntp-simple ntpdate perl perl-modules
    0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
    Need to get 6159kB of archives.
    After unpacking 23.7MB of additional disk space will be used.
    Do you want to continue? [Y/n] Y
    Get:1 http://mirrors.kernel.org stable/main perl-modules 5.8.4-8sarge5 [2179kB]
    Get:2 http://mirrors.kernel.org stable/main perl 5.8.4-8sarge5 [3509kB]
    Get:3 http://mirrors.kernel.org stable/main ntp 1:4.2.0a+stable-2sarge1 [266kB]
    Get:4 http://mirrors.kernel.org stable/main ntp-simple 1:4.2.0a+stable-2sarge1 [129kB]
    Get:5 http://mirrors.kernel.org stable/main ntp-server 1:4.2.0a+stable-2sarge1 [31.9kB]
    Get:6 http://mirrors.kernel.org stable/main ntpdate 1:4.2.0a+stable-2sarge1 [43.7kB]
    Fetched 6159kB in 56s (108kB/s)
    tar: ./conffiles: time stamp 2006-05-09 23:33:28 is 75766305 s in the future
    tar: ./md5sums: time stamp 2006-05-09 23:33:28 is 75766305 s in the future
    tar: ./control: time stamp 2006-05-09 23:33:29 is 75766306 s in the future
    tar: .: time stamp 2006-05-09 23:33:29 is 75766306 s in the future
    Selecting previously deselected package perl-modules.
    (Reading database ... 7699 files and directories currently installed.)
    Unpacking perl-modules (from .../perl-modules_5.8.4-8sarge5_all.deb) ...
    tar: ./postinst: time stamp 2006-08-04 16:42:12 is 83258425 s in the future
    tar: ./md5sums: time stamp 2006-08-04 16:42:12 is 83258425 s in the future
    tar: ./control: time stamp 2006-08-04 16:42:15 is 83258428 s in the future
    tar: .: time stamp 2006-08-04 16:42:15 is 83258428 s in the future
    Selecting previously deselected package perl.
    Unpacking perl (from .../perl_5.8.4-8sarge5_powerpc.deb) ...
    tar: ./postinst: time stamp 2005-08-26 17:10:45 is 53624934 s in the future
    tar: ./md5sums: time stamp 2005-08-26 17:10:50 is 53624939 s in the future
    tar: ./control: time stamp 2005-08-26 17:10:48 is 53624937 s in the future
    tar: .: time stamp 2005-08-26 17:10:50 is 53624939 s in the future
    Selecting previously deselected package ntp.
    Unpacking ntp (from .../ntp_1%3a4.2.0a+stable-2sarge1_powerpc.deb) ...
    tar: ./postinst: time stamp 2005-08-26 17:10:45 is 53624934 s in the future
    tar: ./postrm: time stamp 2005-08-26 17:10:45 is 53624934 s in the future
    tar: ./md5sums: time stamp 2005-08-26 17:10:50 is 53624939 s in the future
    tar: ./control: time stamp 2005-08-26 17:10:49 is 53624938 s in the future
    tar: .: time stamp 2005-08-26 17:10:50 is 53624939 s in the future
    Selecting previously deselected package ntp-simple.
    Unpacking ntp-simple (from .../ntp-simple_1%3a4.2.0a+stable-2sarge1_powerpc.deb) ...
    tar: ./postinst: time stamp 2005-08-26 17:10:45 is 53624934 s in the future
    tar: ./preinst: time stamp 2005-08-26 17:10:45 is 53624934 s in the future
    tar: ./prerm: time stamp 2005-08-26 17:10:45 is 53624934 s in the future
    tar: ./postrm: time stamp 2005-08-26 17:10:45 is 53624934 s in the future
    tar: ./conffiles: time stamp 2005-08-26 17:10:45 is 53624934 s in the future
    tar: ./md5sums: time stamp 2005-08-26 17:10:50 is 53624939 s in the future
    tar: ./control: time stamp 2005-08-26 17:10:48 is 53624937 s in the future
    tar: .: time stamp 2005-08-26 17:10:50 is 53624939 s in the future
    Selecting previously deselected package ntp-server.
    Unpacking ntp-server (from .../ntp-server_1%3a4.2.0a+stable-2sarge1_powerpc.deb) ...
    Removing any system startup links for /etc/init.d/ntp-simple ...
    Removing any system startup links for /etc/init.d/ntp-refclock ...
    Removing any system startup links for /etc/init.d/ntp ...
    ntpd: no process killed
    tar: ./postinst: time stamp 2005-08-26 17:10:45 is 53624933 s in the future
    tar: ./preinst: time stamp 2005-08-26 17:10:45 is 53624933 s in the future
    tar: ./prerm: time stamp 2005-08-26 17:10:45 is 53624933 s in the future
    tar: ./postrm: time stamp 2005-08-26 17:10:45 is 53624933 s in the future
    tar: ./conffiles: time stamp 2005-08-26 17:10:45 is 53624933 s in the future
    tar: ./md5sums: time stamp 2005-08-26 17:10:50 is 53624938 s in the future
    tar: ./control: time stamp 2005-08-26 17:10:50 is 53624938 s in the future
    tar: .: time stamp 2005-08-26 17:10:50 is 53624938 s in the future
    Selecting previously deselected package ntpdate.
    Unpacking ntpdate (from .../ntpdate_1%3a4.2.0a+stable-2sarge1_powerpc.deb) ...
    Setting up ntpdate (4.2.0a+stable-2sarge1) ...
    Running ntpdate to synchronize clock.

    Setting up perl-modules (5.8.4-8sarge5) ...
    Setting up ntp (4.2.0a+stable-2sarge1) ...

    Setting up ntp-server (4.2.0a+stable-2sarge1) ...
    Starting NTP server: ntpd.

    Setting up ntp-simple (4.2.0a+stable-2sarge1) ...

    Setting up perl (5.8.4-8sarge5) ...

    LinkStation:~#
    Tested to make sure the system knows the current time and date:
    LinkStation:~# date
    Sat Apr 7 22:31:30 CDT 2007
    LinkStation:~#
(This post is still in progress.)

(Note that, if we later limit the LinkStation's access to the Internet we'll need to provide an NTP server on the subnet. See http://linkstationwiki.net/index.php?title=Correct_the_system_time_and_setup_Network_Time_Protocol_%28NTP%29 .)

(Might want to include some of the packages from http://linkstationwiki.net/index.php?title=Category:Debian .)

Subversion on LinkStation #4 - Install Linux

(#4 in my series about Subversion on a LinkStation.)

Having indulged my paranoia by making sure I could restore the factory firmware if I needed to, it was time to install FreeLink on my LinkStation. The FreeLink firmware contains a build of Debian, a Linux distribution.

The steps here are a lot like the steps for restoring the factory firmware, except that you use the installer from http://downloads.linkstationwiki.net/LS1_PPC/Distributions/Freelink/ instead.
I downloaded freelink_powerpc-hdhlan-1.11.zip from that location, unzipped it and ran HD-HGLAN FWUpdate-english.exe. I got the same string of dialogs:









At this point I'd succesfully installed FreeLink (and with it, Debian) on my LinkStation.

About the web-based configuration utility and the machine name: Remember how I was previously able to browse to http://hd-hglan3be and see the factory-default web-based configuration utility? Well, at this point I couldn't do that any more. I hear you ask, "What happened to http://hd-hglan3be?" Two things. First, the FreeLink firmware has the machine name of "linkstation" instead of "HD-HGLAN3BE", so even if I wanted to browse a web server on the LinkStation I'd have to go to http://linkstation instead. But second, there is no web-based configuration utility in the FreeLink firmware. Don't say that the LinkStationWiki didn't warn you:
FreeLink is our effort to provide firmware which “frees” your LinkStation The FreeLink firmware is built upon the most recent official LinkStation firmware release. It replaces the stock LinkStation Linux build with the latest stable Debian build. Debian is one of the most popular Linux distributions. Debian is highly regarded for its simple interface and powerful package repository. The price for this is that you will lose the web based configuration tool shipped with the stock firmware - if you are familiar with Linux and your LinkStation, this should be no problem (otherwise you should consider this fact).

The FreeLink firmware does come with a telnet server, so I telneted into my LinkStation to make sure the installation was as successful as the installer said it was.
C:\>telnet linkstation
Connecting To linkstation...

Debian GNU/Linux 3.1 %h
root@LinkStation:/# exit
exit


Connection to host lost.

C:\>
Yep. Looked good. You'll note, though, that root was able to log in without a password. That's one of the things I deal with in the next post.

Next: Linux Security and Settings

Friday, April 6, 2007

Subversion on LinkStation #3 - Be able to recover from a firmware mistake

(#3 in my series about Subversion on a LinkStation.)

My last stop before replacing the LinkStation's factory-provided firmware with FreeLink was to make sure I could restore the factory-provided firmware in case I messed something up.

If you're following along with your own installation and you think I'm being too paranoid, feel free to skip right ahead to the "Install Linux" step. Just don't come crying to me when your firmware installation goes badly and you've bricked your LinkStation. (If you must go crying somewhere under those circumstances, try FAQ 3.7 at the LinkStationWiki FAQ: "I wish to start from scratch because my stuff is royally screwed. Where should I start?")

I know from looking at the summary page of the factory-default, web-based configuration utility that I've got version 1.42 of the factory firmware, so I navigated on over to http://www.buffalotech.com/support/downloads/ and downloaded the ZIP containing the appropriate version of the firmware (http://www.buffalotech.com/support/getfile/?HD_HGLAN_142.zip).

In that ZIP:



HD-HGLAN FWUpdate.exe is the Windows utility that sends bootcode.bin, firmimg.bin and image.datto the LinkStation via the network. linkstation_version.txt tells HD-HGLAN FWUpdate.exe the version number of the file set.

Important trick: HD-HGLAN FWUpdate.exe won't let you roll back to a previous version (say from 1.46 to 1.42) or reinstall the same version (1.42 when you already have 1.42) unless you fake it out by editing linkstation_version.txt and changing the version from 1.42 to 1.99. HD-HGLAN FWUpdate.exe will then allow the rollback. So if you see one of these...



...you need to edit linkstation_version.txt so it thinks this is version 1.99. (See FAQ 3.4 at LinkStationWiki's FAQs for more info.)

So, with those files downloaded and extracted (and with the aforementioned edit to linkstation_version.txt), I followed the instructions at http://linkstationwiki.net/index.php?title=The_LinkStation_firmware_flasher and was able to run HD-HGLAN FWUpdate.exe like so:








Next: Install Linux

Subversion on LinkStation #2 - Set up LinkStation

(#2 in my series about Subversion on a LinkStation.)

Before I replaced the LinkStation's factory-provided firmware with FreeLink I wanted to make sure that the LinkStation was operational. (I also wanted to ensure that I could restore the factory-provided firmware in case I messed something up, which is the next step.)

I connected its ethernet port to my router and turned it on. It got an IP address from my router via DHCP and fired up its services. Its default network name is "HD-HGLAN3BE".

It's got an SMB-based file share that, by default, shares up some files from its hard drive that would be handy for a Windows user. When I install FreeLink I'll be disabling the SMB shares and wiping away these files, but just for the record here's what you get from the factory:




Navigating over to http://hd-hglan3be and logging in with the default, incredibly unsafe user/password combo of "root/", I see the web configuration utility:



(Note: That screen shot and many others have been redacted. For security reasons I've blotted out IP addresses and such.)

The current firmware number is right there on that screen. Mine was 1.42. If you're following along with your own installation, make sure you take note of your firmware version number at this point.

Next: Be able to recover from a firmware mistake

Subversion on LinkStation #1 - Plan

I'm a source control freak. I keep all of my important documents in Subversion. OK, I keep all of my unimportant documents there, too.

I recently decided to set up a Subversion server on a LinkStation, replacing Archie, the Windows-based Subversion server that I've been running for a couple of years. Archie sucks up a lot of electicity, makes a lot of noise and hasn't been as secure as I'd like it to be.

Josh Carter did pretty much the same thing and he documented it in his article, "Build Your Own NAS/Subversion/Web/Anything Micro-Server". Unlike Josh, I'm going to use the FreeLink firmware (Josh used OpenLink) and my server is going to be dedicated exclusively to Subversion (Josh added Netatalk for Mac-friendly SMB sharing).

My LinkStation, which I purchased for US$284 at my local Best Buy, is a model HD-HG400LAN.



That means it's got a 400GB IDE hard drive, 266Mhz PowerPC processor, 4MB of flash memory, 10MB/100MB/1GB ethernet and two USB ports.

So here's my plan:
  1. Plan (done)
  2. Set up LinkStation (done)
  3. Be able to recover from a firmware mistake (done)
  4. Install Linux (done)
  5. Linux Security and Settings (pending)
  6. Install Subversion on the LinkStation (pending)
  7. Configure Subversion (pending)
  8. Backup procedures (pending)
  9. Uninterruptible power supply (pending) (reference)
  10. Import from previous Subversion server(pending)

Next: Set up LinkStation