Michael Decker: Driver Development

Week 1


26 May 2008

  • Converted #ifdef DEBUG printf(..) and hd(..) statements to DBG(..) and DBG_HD(..) in eepro100.c
  • Collected & sorted notes on Etherboot and gPXE driver API

27 May 2008

  • Further gPXE network driver API documentation
  • Hardware problems encountered; consulted with mdc

28 May 2008

29 May 2008

30 May 2008

  • Fixed repository in git
    • Modified .git/config
      [remote "personal"]
              url = mdeck@rom.etherboot.org:/pub/scm/people/mdeck/gpxe.git

      to

      [remote "personal"]
              url = ssh://mdeck@rom.etherboot.org//pub/scm/people/mdeck/gpxe.git

      The erroneous configuration was created from here.

    • Setup my personal info
      mike@vaio:~/Shared/repo/gpxe$ git config user.name "Michael Decker"
      mike@vaio:~/Shared/repo/gpxe$ git config user.email "mrd999@gmail.com"
      mike@vaio:~/Shared/repo/gpxe$ cd ..
      mike@vaio:~/Shared/repo$ mv gpxe gpxe.git
      mike@vaio:~/Shared/repo$ cd gpxe.git/
    • Created personal/drivers branch
      $ git-checkout -b drivers origin/master
      $ git-push personal drivers
    • Reinitialized personal/master branch
      mike@vaio:~/Shared/repo/gpxe.git$ git-branch
        drivers
      * master
      
      mike@vaio:~/Shared/repo/gpxe.git$ git-branch -d -r personal/master
      Deleted remote branch personal/master.
      
      mike@vaio:~/Shared/repo/gpxe.git$ git push personal :master
      mdeck@rom.etherboot.org's password:
      refs/heads/master: 72c77282442fd098a7c762222ba49b55c48d4f82 -> deleted
      To ssh://mdeck@rom.etherboot.org//pub/scm/people/mdeck/gpxe.git
       - [deleted]         master
      error: unlink(.git/refs/remotes/personal/master) failed: No such file or directory
      error: Failed to delete
      
      mike@vaio:~/Shared/repo/gpxe.git$ git-push personal master
      mdeck@rom.etherboot.org's password:
      Total 0 (delta 0), reused 0 (delta 0)
      refs/heads/master: 0000000000000000000000000000000000000000 -> c899bdc5a823e623b3e8f7598a7f77d65dcf2d2c
      To ssh://mdeck@rom.etherboot.org//pub/scm/people/mdeck/gpxe.git
       * [new branch]      master -> master
      
      mike@vaio:~/Shared/repo/gpxe.git$ git-checkout drivers
      Switched to branch "drivers"
  • Tested booting with new target.
    • Fixed dhcpd.conf for new configuration
      # dhcpd.conf
      #
      
      ddns-update-style none;
      not authoritative;
      ignore unknown-clients;
      
      default-lease-time 600;
      max-lease-time 7200;
      
      option space gpxe;
      option gpxe-encap-opts code 175 = encapsulate gpxe;
      option gpxe.bus-id code 177 = string;
      
      option subnet-mask 255.255.255.0;
      option routers 192.168.1.1;
      option domain-name-servers 192.168.1.1;
      
      subnet 192.168.1.0 netmask 255.255.255.0 {
      	range 192.168.1.10 192.168.1.20;
      }
      
      host h1 {
        hardware ethernet 00:11:d8:0e:93:7b; 
        filename "";
        option root-path "aoe:e0.0";
      }
      
      host h2 {
        # motherboard ethernet adapter 
        hardware ethernet 00:1F:C6:20:E2:B5;
        filename "eepro100.pxe";
      
      #  if we're not talking to gPXE load this filename
      #  if not exists gpxe.bus-id {
      #    filename "eepro100.pxe";
      #  }
      
      }
      
      host h3 {
        hardware ethernet 00:90:27:43:84:4B;         # eepro100 card for testing
      
      # For booting via http, Toms Root Boot
      #  filename "http://rom.etherboot.org/gtest/gtest.gpxe";
      
      # For booting Windows
        filename "";
        option root-path "aoe:e0.0";
      }
    • Got chainloading from PXE operational. PXE → gPXE → (http or aoe)
  • Code review on driver changes with mdc.
  • Attempted to fix vblade.

31 May 2008

  • Fixed vblade
    • Changed mount of file system containing AoE image
      $ sudo umount /dev/sda4
      $ sudo mount /dev/sda4 /media/test
    • Modified /etc/vblade.conf
      # example configuration file
      # network_device shelf slot file/disk/partition mac[,mac[,mac]]
      #eth0 0 0 /dev/sdb 00:11:22:33:44:55
      eth0 0 0 '/media/Spare Room/test/disk.img'

      to

      # example configuration file
      # network_device shelf slot file/disk/partition mac[,mac[,mac]]
      #eth0 0 0 /dev/sdb 00:11:22:33:44:55
      eth0 0 0 /media/test/test/disk.img

      vblade didn't appear to like the space.

    • $ /etc/init.d/vblade start
  • Successfully booted Windows image over AoE
  • Setup local chainloading environment
    • Installed apache2 on server
    • Copied gtest.gpxe into /var/www
    • Modified /etc/dhcp3/dhcpd.conf
      host h3 {
        hardware ethernet 00:90:27:43:84:4B;         # eepro100 card for testing
      
      # For booting via http
        filename "http://192.168.1.9/gtest.gpxe";
      
      # For booting Windows
      #  filename "";
      #  option root-path "aoe:e0.0";
      }

      And $ sudo /etc/init.d/dhcp3-server restart

    • Successfully chainloaded gPXE script from local httpd!

1 June

  • eepro100.c : Began restructuring code.
  • Added new gPXE API functions
  • Converted existing function parameters and types.
  • Shifted some parts, splitting up code as appropriate.

QR Code
QR Code soc:2008:mdeck:journal:week1 (generated for current page)