Computers and I
- Using them
- Playing video games
- I am always working on a computer project
- Past projects include:
- Audio/video conversion scripts w/mencoder. I wrote a script that automated the process of concatenating multiple video files into one, splitting one video into multiple pieces, extracting audio from video files and converting between different audio and video formats.
- WINE - to play Windows games in Linux. I played Halo, Oblivion, Star Wars Republic Commando, Doom 3 and a few other Windows games in Linux through Wine. Oblivion Actually ran faster in Wine than it did in Windows!
- Composition and 3D desktop in linux. Compiling proprietary graphics drivers. Using Compiz, Compiz Fusion, 3D cube effects, windows effects including wobbly and burning windows, the elements plugin and the kiba dock.
- Used LIRCD to make my tv tuner and remote control work in Linux
- Linux PXE server (net installs and live CD's). My laptop PXE serves 4 live linux distributions. I can use a crossover cable to connect to another computer and PXE boot it, I also NAT the laptops wireless internet connection to the PXE client.
UPDATE: Repeated with SELINUX enabled and enforcing. Also used both syslinux and pxegrub (legacy). Attempted to use grub2 which does boot but does not get past the grub menu... yet.
- Used Grub el_torito to create bootable CD which I put the kernel and init files of several distributions on. The configuration file then specified network shares where system files were stored so it could run or install the selected distribution.
- SLI in Linux (2 NVIDIA GeForce 9600 GT's w/512 megs of RAM a piece)
- Sharing a dial-up Internet connection w/LAN
(in Linux using Firestarter)
- Set my main home machine up as an OpenVPN server. Connected to the VPN on my laptop from remote locations.
- Grub2 manual configuration multi-boot ext USB hard drive (includes booting several live linux systems from iso images on the hard drive
- Multi-boot systems, my main machine runs - Ubuntu 64bit, Centos 5.4 64bit, Windows XP 32bit, Windows 7 64bit, and OpenSolaris. I've got a laptop multi-booting Fedora 8, OpenBSD and Windows XP as well.
- Windows Server 2008 - Virtual Machine's served through Internet Explorer with Windows Virtual Machine Manager and IIS/HTTPS
- Serving virtual machines through a web browser with Centos 5, KVM and Apache.
UPDATE: project extension: I used two machines, one runs mysql and apache https. Upon logging into my site I get a selection of virtual machines which can be viewed through either a flash or java vncviewer. The virtual machines are located on another machine which runs Virtualbox.
- Hand coding this web site in xhtml and php. Using php sessions, php mysql queries, md5 encrypted php session variables and more.
- Remote logging with Syslog-NG (multiple clients through a one-way cable), documentation here.
- Altering the dependencies of a .deb package (libsdl1.2debian-pulseaudio was required but I needed libsdl1.2debian-all for some other programs to work so I changed the depency in the control file)
- Creating a 32 chroot in 64 bit Ubuntu to run graphical applications with 3D acceleration and audio.
- Using md5 encryption on the grub bootloader.
- SAMBA: Configured a Linux box as a SAMBA PDC. Docs here. Windows and Linux machines authenticated against it. The Windows clients got roaming profiles and their home directories mounted in My Computer as mapped network drive Z:.
UPDATE: Repeated project but integrated with OpenLDAP using TLS. The system is also running an enabled and enforcing SELINUX. Disk quotas have been added for network users as well as public_html folders in network user home directories shared out of a single apache web server with php and it's mysql module enabled. This way web programming students can test web pages on any of our network computers from their user account and we only need one instance of apache running on the network logon server. Students can write and view web pages in either the Windows or Linux operating systems. It may not generally be a good idea to run a web server on a domain controller but in our case it is not really an issue and SELINUX mitigates some of the concerns of doing so.
- SELINUX: I've been leaving it enabled and using the SELINUX Troubleshooter as well as the audit log. A combination of chcon, restorecon, getsebool, setsebool and audit2allow has allowed me to leave it enabled and retain full functionality of all services I wish to run.
- Snort: Participated in Collegiate Security Competition at Texas A&M University in College Station. During the competition I compiled and ran Snort on Fedora 14 with SELINUX enabled. In order to achieve a useful result I port spanned vlan1(the entire switch) to the port that the Snort machine was connected. This way Snort was monitoring all the traffic going in, out, and inside of, our internal network.
- Convert physical machine to virtual machine: Converted server machine with 400+ gigabyte raid system into a 40G virtual machine. I used gparted to shrink the partitions and ghost for linux to transfer them to the 40G drive. I used the Oracle Linux utility p2v to convert the physical machine to a virtual machine. The p2v utility is available from the boot menu of the Oracle Virtual Machine Server disc. After the conversion process I had to make some adjustments to grub and to /etc/fstab but did end up with a completely functional virtual machine running in XEN.
- Compiling custom Linux kernel. I needed to install a wireless driver on an older machine but it would not compile because the kernel was to old. I downloaded, compiled and installed a newer kernel (2.6.35), after which the wireless driver compiled without issue.
- Imaged a few drives and partitions directly from one machine to another using a crossover cable and directly connecting two machines. (Using ghost 4 linux with the send/recieve udp broadcast options)
- Reading/writing directories and files with php. I wrote a file/directory manager in php for the member section of this site. You can create/delete files and directories, upload files, edit text (php, js, html, txt) files and download files. Icons come up for directories and different file types as well.
- Dynamic file generation with php. I use a Flash MP3 player in the member section of this site. It uses a configuration file which lists the files in the playlist. I wanted to create the playlist dynamically based on mp3 files in the users music directory. I wrote a script which lists the mp3 files in the users music directory and any directory immediately beneath it. It stores them in an array and then writes them with the other required information to the configuration file. A configuration file is stored without a playlist. When the mp3 player is accessed the script grabs the config without a playlist and writes it to a different file, it then appends the playlist to that file. The configuration file is passed as an arguement to the mp3 player. This method is also used here.
- NX - FreeNX server and NoMachine client:
The FreeNX server can work with both the freenx client and the NOMachine client. I mainly did this to provide encrypted remote Desktop access to some of my Linux machines. NOMachine has a really awsome Java NX Client applet that can be run from a webpage. I put this applet on my site so that I can have access to a NXclient from any machine with the JAVA runtime.
- Used my contact page script and modified it to check variables passed in the URL and change the page heading and destination email address. Contact links are used in many different locations but all point to the same script which dynamically sets the email address and heading message. The script is used at clfpoa.com where I volunteer as the site maintainer.
- Used flite text to speech conversion program to create http://mark.kandm-solutions.com/mmayfield/index.php?page=t2s. Also used it provide audio for the capture code on my contact page. Audio files generated by these pages are removed by the script in around 15 minutes.
- Learning python and gtk (pygtk) to turn my bash audio/video conversion scripts into a GUI. The current status of this project and download links for the program are available here http://mark.kandm-solutions.com/mmayfield/index.php?page=MMMC.
- Wrote a custom ddns script that updates the DNS entries on the webhost of one of my project sites. It is running from the webhost and works with the ddns client used in DDWRT (INADYN). It is written in php and uses the php-curl module to perform the update.
It stores the current host and ip information in a text file. When a client requests an update it checks the supplied log in info, hostname and ip address and gives the appropriate response; bad auth, notfqdn, nochg or good. It only performs the update if a change is needed. When a change is needed the php-curl module logs into our web host Control Panel and saves a cookie. It uses the cookie and posts the appropriate information. I figured out the needed post information and destination using the firefox plugin firebug. Sensitive information is stored outside of web root. Wrote a small synopsis of the project here.
- Used Kworld ATSC110 video capture/tv tuner card to convert some VHS tapes to computer avi files. The kids don't treat VHS/DVD's very well. This way it's not a big deal when the originals get destroyed. Also we have a computer in just about every room but we only have one VCR and one DVD player.
Dumping the video:
mencoder tv:// -tv driver=v4l2:width=640:height=480:outfmt=yuy2:input=0:amode=1:audiorate=32000:device=/dev/video0:norm=NTSC:chanlist=us-cable:channel=3:adevice=/dev/dsp -oac copy -ovc copy -endpos 00:00:00 -o filename.avi
The -endpos takes the length of the video in hours:minutes:seconds
After the video has been dumped I usually convert to xvid or x264. Convert to xvid with:
mencoder filename.avi -oac mp3lame -lameopts fast:preset=standard -af volume=10:0 -ovc xvid -xvidencopts autoaspect:bitrate=1500 -vf yadif -o newfile.avi
The bitrate can be adjusted depending and amount of dropped or duplicated frames.
These are video tapes we purchased and own and we only use them ourselves. We do not sell or distribute the backups.
- Set up an 8 port etherchannel between two CISCO switches. I made a PXE server which serves full Linux installs via NFS and wanted to maximize the bandwidth available for clients. The server is connected to the switch with a gigabit fiber link. There is one 24 port and one 48 port switch. Each switch also has two module ports (one of the module ports has a fiber module which is used to connect to the PXE server). The etherchannel allows for 800 megabits to flow between the switches simultaneously (100 mb per connection). This configuration also allows me to utilize all four module ports for servers(using gigabit modules). Instead of having two gigabit ports I have four and an 800 mb connection between the switches.
- Upgraded terminal server from Windows Server 2000 to Windows Server 2003 and transferred the CALS (bought with software assurance) to the new licensing server. The application being used utilized an old MS Access runtime for it database and I had to manually edit the default user hive to add some entries for it to function properly.
- Migrated Symantec Endpoint Protection Manager to new server. Consisted of installing same version on new machine, enabling replication. After all settings replicated to the new server the old server was deactivated and turned off. For some reason the default Java registry settings were insufficient and I had to edit the registry to increase the amount of RAM alotted to the Java virtual machine.
- Migrated a Windows Server 2003 domain to Windows Server 2008 and raised the domain and forest function levels to 2008.
- Working with Hyper-V alot lately and got a hold of a quad port Intel Pro Gigabit card. Took advantage of the opportunity to play around with NIC teaming for virtualization. Landed on using a 4 port virtual network team. This way I use one virtual network (the team) and when adding the network to virtual machines their traffic is automatically distributed and load balanced among the NIC cards in the team. Very cool.
- Using spice with qemu-kvm. Been waiting awhile for kvm to get good video, sound and clipboard support. Finally RedHat is coming through with it's enteprise virtualization platform. Spice supports a virtual serial channel that provides clipboard sharing between the host and guest OS's, a video driver (qxl) with 64 M video memory that supports high resolution, and a vnc like interface that can be closed and reopened without disturbing the guest (in addition to supporting audio on the host). Until recently I have been using SDL (unfortunately incompatible with virt-manager) to get decent video and sound support. RedHat has provided a Windows package that supports version through Windows 7 (hopefully Windows 8 support will come soon). I have several machines using the Spice suite and am very happy with the results, I now have good video, sound and clipboard sharing working in the libvirt virt-manager. Along with a bridged network and the virtio storage and network drivers, awsome!!! You can read about spice and download the software on its web page, http://spice-space.org. On a side note the spice server can be used as a replacement for VNC.
- IPSEC VPN. Configured an IPSEC/IKE VPN between a SonicWall security appliance and a DLink VPN router. This way if I need access to the remote network I just plug into the router, which has about 8 switchports, and I'm good to go. Of course this is a routed solution and broadcasts do not go through either way. The internet goes through my regular ISP connection but traffic to the remote network goes through the VPN.
- PCI passthrough with KVM. I had originally planned to do this with XEN but the spice has grown on me and I did not want to give it up for this project. Anyway I got a Radeon HD 6850 graphics card and successfully passed it through to a Windows 8 guest. The Windows 8 virtual mahine plays Halo, Fear, Fear 3, Oblivion, Skyrim, Assassins Creed II, Gears of War and a few others. I have not had any issues with this aside from the guest not wanting to reboot. When I need to reboot the guest I have to shut it down, reboot the host machine and then boot the guest again. I has to pass through a usb controller and attach a usb keyboard and mouse because the emulated ones could not keep up with the games. Success required adding the file kvm_iommu_map_guest.conf with the option "options kvm allow_unsafe_assigned_interrupts=1" in it. I also had to blacklist the radeon hd driver in the host system. The host is Fedora 17 KDE and I use virt-manager, I also use a bridged network environment for my virtuals. A screenshot of the virtual machine can be viewed here.
- Replacing bad capacitors on motherboards. Succuessfully learned to remove the old ones, clear the pads and resolder replacements. Replaced bad capacitors on a bunch of computer motherboards, a few video card boards and one consumer router. All systems either became functional or remained functional afterwards.
- Ipad, Iphone compatibility. Installed airprint service in Windows to allow Iphone's and Ipad's to print in a Windows network. Configured webdav in IIS. Used self signed certificate for basic auth in SSL. Created one user specifically for webdav usage and made it the only user with share permissions for the webdav directory. It has a complex password. AirPrint for Windows
- Revisited OpenVPN. This time I tried both bridged and routed VPN's. After successfully configuring both methods with CentOS 6 I flashed a couple of consumer routers with the OpenVPN version of DDWRT. The router interface was quite a bit more difficult to work with and the documentation was lacking to say the least but I did manage to get a routed VPN running between two sites. I used TLS authentication in addition to the standard server and client keys. I looked into multi site configurations (more than two) with the DDWRT routers but stopped when I realized I would have to implement jffs? or samba shares for start up files in order to implement the per client ccd configs as they get wiped out when the router reboots. Neither of the following sites are really up to date or complete but they give a good of what you are up against when trying to make this work.
DDWRT VPN Easy Way
DDWRT OpenVPN
- Nagios - Configured Nagios with PNP4Nagios and MRTG for graphing bandwidth usage and other statistics in medium sized network. Network consists of approx 12 subnets, 3 routers, 3 firewalls, 6 switches, several Linux servers (using NRPE+ssl), several Windows servers (using NRPE+ssl), several printers and several phone systems all being monitored by Nagios under fairly restrictive environment (non default snmp strings, acl's only allow monitoring from Nagios server IP).