Skip to content

Programming by Design

If you're not prepared to be wrong, you'll never come up with anything original. – Sir Ken Robinson

  • About
  • Java-PbD
  • C-PbD
  • ASM-PbD
  • Algorithms
  • Other

CISS-150 Project 2 – Hardware

Posted on December 27, 2020October 6, 2024 By William Jojo
CISS-150-Project

CISS-150 Project 2 (10 points)

(Updated October 6, 2024)

Overview

For this project, you will gather hardware information on all three virtual machines provided by your instructor. These include Windows 10, Windows Server 2019, and Ubuntu 24.04.


Learning Outcomes

  • System hardware.
  • Exposure to Linux commands and pseudo filesystems.
  • Exposure to Windows command shell and PowerShell commands.
  • Identify buses and addresses related to hardware.

VMware Details

At this point, the only real knowledge you have about the virtual hardware is what VMware says should be present in the VM. You can view this several ways:

  1. Select a VM in your resource pool.
  2. Select the Summary tab.
  3. Expand the VM Hardware section.
  4. Expand each category of hardware to reveal additional details.

Alternatively, you can:

  1. Right-click on a VM in your resource pool.
  2. Select Edit Settings.
  3. Expand each category of hardware to reveal additional details.

At this point begin to make notes and take some screen shots of the basic hardware: CPU, Memory, Disk, SCSI Controller and Network.

Note
While there are certainly other virtual hardware components, only the ones noted above are required to complete the lab successfully.

Linux

Linux provides both commands and pseudo-filesystems to give details of a running system, including the hardware.

You may want to become the root user with:

sudo -i

Becoming the superuser.

By doing so, you can run all the commands as the privileged user.

Commands

We will begin with a few commands to reveal some hardware details:

Command Purpose
top Displays a running table of system details: CPU & memory utilization, swap space, running processes. This is good for monitoring a system.
lsblk Returns the list of block devices within the system. This can be, but is not limited to, disks and their partitions.
lspci Returns the details of the PCI buses in the running system. This can help determine the bus ID for adapters.
lscpu Returns the details of the CPUs installed in the running system. This is particularly useful when determining how many cores/sockets and the number of sockets.
lsmem Returns the details of the system-installed memory.
free Returns the details of the amount of total and free memory in the system. The top command provides this information in real-time, while free provides a peek at memory use at that moment.
vgs Returns the details of configured volume groups. This is part of the LVM2 subsystem.
pvs Returns the details of configured physical volumes for use in volume groups.
ip addr show Returns the IP address and other details of all installed network cards.

Table 1: Linux commands to gather hardware data.

The commands are pretty straightforward to use. Run them with the -h option for more help, but you will find they provide more than enough detail without additional options.

/proc and /dev Filesystems

The /proc filesystem is a pseudo-filesystem. The idea behind pseudo-filesystems is these are hierarchical directory structures that are built at system startup, maintained while the system is running, and destroyed at shutdown. They are constructs that are held in memory. This has the keen benefit of not restricting a system from booting should the pseudo-filesystem somehow become corrupted.

The /dev filesystem is a hierarchy of installed devices that are made available to application software. With the correct permissions and authority, your application software can manage devices through this entry point.

Another pseudo-filesystem is /sys. This along with /proc and /dev are defined as part of the FHS (Filesystem Hierarchy Standard).

We will delve into just a few files to help get you started in finding hardware details.

Pathname Purpose
/proc This is the root of the /proc tree. Beneath this location is a treasure trove of details about running processes and some system hardware.
/proc/cpuinfo
/proc/meminfo
Returns the respective details of the CPUs and Memory installed in the running system. Compare this to lscpu and lsmem.
/sys This is the root of the /sys tree. Below this location is significantly more detailed information regarding system hardware.
/sys/block Returns the details of the system block devices.
/dev This is the root of the /dev device tree. This is NOT a pseudo-filesystem.
/dev/disk/by-path Contains the details of configured disks and partitions. This shows how they are connected to their respective buses. This is similar to /sys/block with less detail.
/dev/sda* All of the disk and partition details of the first installed disk.

Table 2: Linux pathnames that reveal additional hardware information.

The way to use these files varies between displaying their contents (cat) and showing a file listing (ls -l or ll). Some examples are shown below.

cat /proc/cpuinfo
cat /proc/meminfo

ll /sys/block
ll /dev/disk/by-path
ll /dev/sd*

Windows 10 and Server 2019

Windows offers a variety of commands that can be run at the command prompt and in PowerShell.

Helpful Hint
Windows PowerShell commands need to be run within the PowerShell interface. To launch this, you can select the Start menu, then start typing powershell. In Windows 2019, it’s usually one of the tiles. Windows 10 does not generally have this as a default.

You do not need to launch the full ISE even though Windows will show it as the best match.

Command Prompt Purpose
systeminfo Provides an overview of the base system hardware and OS version. (This can also be used in the PowerShell command line interface.)
set Returns the current system-wide defines set of environment variables that describe

Table 3: Windows commands for use in the command shell.

PowerShell Purpose
Get-Volume Returns the details of the PCI buses in the running system. This can be helpful in determining the bus ID for adapters.
Get-Disk Returns the brief details of the installed disks.
Get-PhysicalDisk Returns the larger details of the installed physical disks.
Get-CimInstance Returns the details of object(s) in the Common Information Model (CIM).
Get-NetAdapter Returns the details of installed network adapters.
Get-NetIPConfiguration Returns the details of the IP settings for installed adapters.

Table 4: Windows PowerShell commands for revealing hardware details.

Below are a few examples of their use. Pipelines are often used to help with addition formatting as in the use of fl which is an alias of Format-List. Also note the use of select which is an alias for Select-Object which is used to trim down what is reported.

Get-CimInstance -ClassName Win32_Processor | select dev*,name,num* | fl
Get-CimInstance -Classname Win32_SCSIController | fl
Get-Volume | fl
Get-Disk | fl
Get-PhysicalDisk | fl
Get-NetAdapter
Get-NetIPConfiguration

What to submit?

You will build a Word document (or PDF) consisting of screenshots and written details of what they represent. Compare the VMware screenshots with those you get from the VM consoles.

The idea is to find the (in)consistencies between what VMware says it delivers to the guest OS and what the guest actually sees.

Important!
Do not simply drop a bunch of screenshots into a Word document and submit it. Provide details of how each operating systems confirms the presence of the VMware hardware and if any details do not exactly fit.

Use your imagination: describe in your own words, make itemized lists, draw arrows/lines connecting bits between VMware and the guest OS.

Submit the completed research to the Learning Management System.

Post navigation

❮ Previous Post: CISS-150 Project 8 – Multifactor Authentication (MFA)
Next Post: CISS-150 Project 6 – Swap/Paging Space ❯

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Copyright © 2018 – 2025 Programming by Design.